From 209caf37458dd26f612c93ff306359e040e1046c Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Mon, 5 Oct 2009 22:16:28 +0100 Subject: [PATCH] start some basic splitting in Window() and try to be slightly smarter about handling the terminal's signals --- terminatorlib/window.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/terminatorlib/window.py b/terminatorlib/window.py index fd654f14..6bf6bf69 100755 --- a/terminatorlib/window.py +++ b/terminatorlib/window.py @@ -12,6 +12,7 @@ from util import dbg, err from version import APP_NAME from container import Container from newterminator import Terminator +from terminal import Terminal try: import deskbar.core.keybinder as bindkey @@ -29,10 +30,12 @@ class Window(Container, gtk.Window): ismaximised = None hidebound = None hidefunc = None + cnxids = None def __init__(self): """Class initialiser""" self.terminator = Terminator() + self.cnxids = [] Container.__init__(self) gtk.Window.__init__(self) @@ -160,14 +163,40 @@ class Window(Container, gtk.Window): def add(self, widget): """Add a widget to the window by way of gtk.Window.add()""" - widget.connect('close-term', self.closeterm) - widget.connect('title-change', self.title.set_title) + if isinstance(widget, Terminal): + self.cnxids.append(widget.connect('close-term', self.closeterm)) + self.cnxids.append(widget.connect('title-change', + self.title.set_title)) + self.cnxids.append(widget.connect('split-horiz', self.split_horiz)) + self.cnxids.append(widget.connect('split-vert', self.split_vert)) gtk.Window.add(self, widget) def remove(self, widget): """Remove our child widget by way of gtk.Window.remove()""" gtk.Window.remove(self, widget) - self.destroy() + for cnxid in self.cnxids: + widget.disconnect(cnxid) + self.cnxids = [] + + def split_axis(self, widget, vertical=True): + """Split the window""" + # FIXME: this .remove isn't good enough, what about signal handlers? + self.remove(widget) + + # FIXME: we should be creating proper containers, not these gtk widgets + if vertical: + container = gtk.VPaned() + else: + container = gtk.HPaned() + + sibling = Terminal() + self.terminator.register_terminal(sibling) + + container.pack1(widget, True, True) + container.pack2(sibling, True, True) + container.show() + + self.add(container) class WindowTitle(object): """Class to handle the setting of the window title"""