[bug 613] - Shortcut for autosplit h/v depending on active terminal size #613
-added auto split feature -new signal split-auto was added -currently this uses widget dimensions for the split as rows, cols were having different space and was not consistent, this can be changed if needed -short cut was also added -icon for the menu item needs to be added
This commit is contained in:
parent
1aa437d6e3
commit
6bdb0c648c
|
@ -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',
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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())
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue