From 8552037fc87aaa684d5d6746a269c44d8e938774 Mon Sep 17 00:00:00 2001 From: waldner Date: Wed, 22 Apr 2020 10:14:16 +0200 Subject: [PATCH] fast resize keyboard shortcuts --- terminatorlib/config.py | 5 +++++ terminatorlib/container.py | 2 +- terminatorlib/notebook.py | 2 +- terminatorlib/paned.py | 24 +++++++++++++++--------- terminatorlib/prefseditor.py | 4 ++++ terminatorlib/terminal.py | 22 +++++++++++++++++----- 6 files changed, 43 insertions(+), 16 deletions(-) diff --git a/terminatorlib/config.py b/terminatorlib/config.py index fbfcb84e..a887352d 100644 --- a/terminatorlib/config.py +++ b/terminatorlib/config.py @@ -109,6 +109,7 @@ DEFAULTS = { 'title_inactive_fg_color' : '#000000', 'title_inactive_bg_color' : '#c0bebf', 'inactive_color_offset': 0.8, + 'fast_resize_step': 50, 'enabled_plugins' : ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler'], @@ -152,6 +153,10 @@ DEFAULTS = { 'resize_down' : 'Down', 'resize_left' : 'Left', 'resize_right' : 'Right', + 'resize_up_fast' : 'Up', + 'resize_down_fast' : 'Down', + 'resize_left_fast' : 'Left', + 'resize_right_fast': 'Right', 'move_tab_right' : 'Page_Down', 'move_tab_left' : 'Page_Up', 'toggle_zoom' : 'x', diff --git a/terminatorlib/container.py b/terminatorlib/container.py index 2afbe913..2b0fa33e 100644 --- a/terminatorlib/container.py +++ b/terminatorlib/container.py @@ -130,7 +130,7 @@ class Container(object): self.terminator.group_hoover() return(True) - def resizeterm(self, widget, keyname): + def resizeterm(self, widget, keyname, fast = False): """Handle a keyboard event requesting a terminal resize""" raise NotImplementedError('resizeterm') diff --git a/terminatorlib/notebook.py b/terminatorlib/notebook.py index 55266e28..a1e4fdd3 100644 --- a/terminatorlib/notebook.py +++ b/terminatorlib/notebook.py @@ -376,7 +376,7 @@ class Notebook(Container, Gtk.Notebook): err('Notebook::closetab: child is unknown type %s' % child) return - def resizeterm(self, widget, keyname): + def resizeterm(self, widget, keyname, fast = False): """Handle a keyboard event requesting a terminal resize""" raise NotImplementedError('resizeterm') diff --git a/terminatorlib/paned.py b/terminatorlib/paned.py index 373d9e53..ad620d37 100644 --- a/terminatorlib/paned.py +++ b/terminatorlib/paned.py @@ -30,7 +30,7 @@ class Paned(Container): self.signals.append({'name': 'resize-term', 'flags': GObject.SignalFlags.RUN_LAST, 'return_type': None, - 'param_types': (GObject.TYPE_STRING,)}) + 'param_types': (GObject.TYPE_STRING, GObject.TYPE_BOOLEAN)}) # pylint: disable-msg=W0613 @@ -322,16 +322,19 @@ class Paned(Container): parent.replace(self, child) del(self) - def resizeterm(self, widget, keyname): + def resizeterm(self, widget, keyname, fast = False): """Handle a keyboard event requesting a terminal resize""" if keyname in ['up', 'down'] and isinstance(self, Gtk.VPaned): # This is a key we can handle position = self.get_position() - if self.maker.isinstance(widget, 'Terminal'): - fontheight = widget.vte.get_char_height() + if not fast: + if self.maker.isinstance(widget, 'Terminal'): + fontheight = widget.vte.get_char_height() + else: + fontheight = 10 else: - fontheight = 10 + fontheight = self.config['fast_resize_step'] if keyname == 'up': self.set_position(position - fontheight) @@ -341,10 +344,13 @@ class Paned(Container): # This is a key we can handle position = self.get_position() - if self.maker.isinstance(widget, 'Terminal'): - fontwidth = widget.vte.get_char_width() + if not fast: + if self.maker.isinstance(widget, 'Terminal'): + fontwidth = widget.vte.get_char_width() + else: + fontwidth = 10 else: - fontwidth = 10 + fontwidth = self.config['fast_resize_step'] if keyname == 'left': self.set_position(position - fontwidth) @@ -352,7 +358,7 @@ class Paned(Container): self.set_position(position + fontwidth) else: # This is not a key we can handle - self.emit('resize-term', keyname) + self.emit('resize-term', keyname, fast) def create_layout(self, layout): """Apply layout configuration""" diff --git a/terminatorlib/prefseditor.py b/terminatorlib/prefseditor.py index 6b923905..1d4deab4 100755 --- a/terminatorlib/prefseditor.py +++ b/terminatorlib/prefseditor.py @@ -127,6 +127,10 @@ class PrefsEditor: 'resize_down' : _('Resize the terminal down'), 'resize_left' : _('Resize the terminal left'), 'resize_right' : _('Resize the terminal right'), + 'resize_up_fast' : _('Resize the terminal up (faster)'), + 'resize_down_fast' : _('Resize the terminal down (faster)'), + 'resize_left_fast' : _('Resize the terminal left (faster)'), + 'resize_right_fast': _('Resize the terminal right (faster)'), 'move_tab_right' : _('Move the tab right'), 'move_tab_left' : _('Move the tab left'), 'toggle_zoom' : _('Maximize terminal'), diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index 64a14bdd..127255b2 100644 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -67,7 +67,7 @@ class Terminal(Gtk.VBox): 'maximise': (GObject.SignalFlags.RUN_LAST, None, ()), 'unzoom': (GObject.SignalFlags.RUN_LAST, None, ()), 'resize-term': (GObject.SignalFlags.RUN_LAST, None, - (GObject.TYPE_STRING,)), + (GObject.TYPE_STRING, GObject.TYPE_BOOLEAN)), 'navigate': (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_STRING,)), 'tab-change': (GObject.SignalFlags.RUN_LAST, None, @@ -1768,16 +1768,28 @@ class Terminal(Gtk.VBox): self.close() def key_resize_up(self): - self.emit('resize-term', 'up') + self.emit('resize-term', 'up', False) def key_resize_down(self): - self.emit('resize-term', 'down') + self.emit('resize-term', 'down', False) def key_resize_left(self): - self.emit('resize-term', 'left') + self.emit('resize-term', 'left', False) def key_resize_right(self): - self.emit('resize-term', 'right') + self.emit('resize-term', 'right', False) + + def key_resize_up_fast(self): + self.emit('resize-term', 'up', True) + + def key_resize_down_fast(self): + self.emit('resize-term', 'down', True) + + def key_resize_left_fast(self): + self.emit('resize-term', 'left', True) + + def key_resize_right_fast(self): + self.emit('resize-term', 'right', True) def key_move_tab_right(self): self.emit('move-tab', 'right')