mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +00:00
Add an "r" shortcut in grid editors to read value from file.
This commit is contained in:
parent
3787f8befb
commit
82893ffae2
@ -13,7 +13,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import copy, re
|
||||
import copy, re, os
|
||||
import urwid
|
||||
import common
|
||||
from .. import utils, filt
|
||||
@ -27,6 +27,7 @@ def _mkhelp():
|
||||
("d", "delete row"),
|
||||
("e", "spawn external editor on current field"),
|
||||
("q", "return to flow view"),
|
||||
("r", "read value from file"),
|
||||
("esc", "return to flow view/exit field edit mode"),
|
||||
("tab", "next field"),
|
||||
("enter", "edit field"),
|
||||
@ -113,6 +114,8 @@ class GridRow(common.WWrap):
|
||||
vals.append(v)
|
||||
if self.editor.is_error(i, v):
|
||||
errors.add(i)
|
||||
elif self.editor.encode(v) is None:
|
||||
errors.add(i)
|
||||
return [vals, errors]
|
||||
|
||||
def keypress(self, s, k):
|
||||
@ -286,6 +289,20 @@ class GridEditor(common.WWrap):
|
||||
)
|
||||
)
|
||||
|
||||
def encode(self, s):
|
||||
if not self.encoding:
|
||||
return s
|
||||
try:
|
||||
return s.encode(self.encoding)
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
def read_file(self, p):
|
||||
p = os.path.expanduser(p)
|
||||
d = file(p, "r").read()
|
||||
self.walker.set_current_value(d)
|
||||
self.walker._modified()
|
||||
|
||||
def keypress(self, size, key):
|
||||
if self.walker.editing:
|
||||
if key in ["esc"]:
|
||||
@ -303,10 +320,10 @@ class GridEditor(common.WWrap):
|
||||
if key in ["q", "esc"]:
|
||||
res = []
|
||||
for i in self.walker.lst:
|
||||
if any([x.strip() for x in i[0]]):
|
||||
if not i[1] and any([x.strip() for x in i[0]]):
|
||||
v = i[0]
|
||||
if self.encoding:
|
||||
v = [x.encode(self.encoding) for x in v]
|
||||
v = [self.encode(x) for x in v]
|
||||
res.append(v)
|
||||
self.callback(res, *self.cb_args, **self.cb_kwargs)
|
||||
self.master.pop_view()
|
||||
@ -322,6 +339,8 @@ class GridEditor(common.WWrap):
|
||||
self.walker.insert()
|
||||
elif key == "d":
|
||||
self.walker.delete_focus()
|
||||
elif key == "r":
|
||||
self.master.path_prompt("Read file: ", "", self.read_file)
|
||||
elif key == "e":
|
||||
o = self.walker.get_current_value()
|
||||
if o is not None:
|
||||
|
@ -253,7 +253,7 @@ def clean_hanging_newline(t):
|
||||
problem at the risk of removing a hanging newline in the rare cases
|
||||
where the user actually intends it.
|
||||
"""
|
||||
if t[-1] == "\n":
|
||||
if t and t[-1] == "\n":
|
||||
return t[:-1]
|
||||
return t
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user