diff --git a/terminatorlib/config.py b/terminatorlib/config.py index 3e069e21..ec7a2a2e 100644 --- a/terminatorlib/config.py +++ b/terminatorlib/config.py @@ -111,6 +111,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'], @@ -159,6 +160,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 52e70b9e..38917faf 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 f13b2cbd..cb0e4a1c 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 @@ -325,16 +325,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) @@ -344,10 +347,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) @@ -355,7 +361,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 136eb440..5e455f5a 100755 --- a/terminatorlib/prefseditor.py +++ b/terminatorlib/prefseditor.py @@ -134,6 +134,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 42de222a..d25fbc9b 100644 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -87,7 +87,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, @@ -1820,16 +1820,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')