make zooming and unzooming work
This commit is contained in:
parent
e93a95162d
commit
6e0718c829
|
@ -33,6 +33,7 @@ class Window(Container, gtk.Window):
|
||||||
hidefunc = None
|
hidefunc = None
|
||||||
cnxids = None
|
cnxids = None
|
||||||
|
|
||||||
|
zoom_data = None
|
||||||
term_zoomed = gobject.property(type=bool, default=False)
|
term_zoomed = gobject.property(type=bool, default=False)
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -173,6 +174,7 @@ class Window(Container, gtk.Window):
|
||||||
self.title.set_title))
|
self.title.set_title))
|
||||||
self.cnxids.append(widget.connect('split-horiz', self.split_horiz))
|
self.cnxids.append(widget.connect('split-horiz', self.split_horiz))
|
||||||
self.cnxids.append(widget.connect('split-vert', self.split_vert))
|
self.cnxids.append(widget.connect('split-vert', self.split_vert))
|
||||||
|
self.cnxids.append(widget.connect('unzoom', self.terminal_unzoom))
|
||||||
gtk.Window.add(self, widget)
|
gtk.Window.add(self, widget)
|
||||||
|
|
||||||
def remove(self, widget):
|
def remove(self, widget):
|
||||||
|
@ -194,14 +196,59 @@ class Window(Container, gtk.Window):
|
||||||
|
|
||||||
sibling = Terminal()
|
sibling = Terminal()
|
||||||
self.terminator.register_terminal(sibling)
|
self.terminator.register_terminal(sibling)
|
||||||
|
self.add(container)
|
||||||
|
container.show_all()
|
||||||
|
|
||||||
for term in [widget, sibling]:
|
for term in [widget, sibling]:
|
||||||
container.add(term)
|
container.add(term)
|
||||||
container.show_all()
|
container.show_all()
|
||||||
|
|
||||||
self.add(container)
|
|
||||||
sibling.spawn_child()
|
sibling.spawn_child()
|
||||||
|
|
||||||
|
def terminal_zoom(self, widget, font_scale=True):
|
||||||
|
"""Zoom a terminal widget"""
|
||||||
|
print font_scale
|
||||||
|
children = self.get_children()
|
||||||
|
|
||||||
|
if widget in children:
|
||||||
|
# This widget is a direct child of ours and we're a Window
|
||||||
|
# so zooming is a no-op
|
||||||
|
return
|
||||||
|
|
||||||
|
self.zoom_data = widget.get_zoom_data()
|
||||||
|
self.zoom_data['widget'] = widget
|
||||||
|
self.zoom_data['old_child'] = children[0]
|
||||||
|
self.zoom_data['font_scale'] = font_scale
|
||||||
|
|
||||||
|
self.remove(self.zoom_data['old_child'])
|
||||||
|
self.zoom_data['old_parent'].remove(widget)
|
||||||
|
self.add(widget)
|
||||||
|
self.set_property('term_zoomed', True)
|
||||||
|
|
||||||
|
if font_scale:
|
||||||
|
widget.zoomcnxid = widget.connect('size-allocate',
|
||||||
|
widget.zoom_scale, self.zoom_data)
|
||||||
|
|
||||||
|
widget.grab_focus()
|
||||||
|
|
||||||
|
def terminal_unzoom(self, widget):
|
||||||
|
"""Restore normal terminal layout"""
|
||||||
|
if not self.get_property('term_zoomed'):
|
||||||
|
# We're not zoomed anyway
|
||||||
|
dbg('Window::terminal_unzoom: not zoomed, no-op')
|
||||||
|
return
|
||||||
|
|
||||||
|
widget = self.zoom_data['widget']
|
||||||
|
if self.zoom_data['font_scale']:
|
||||||
|
widget.vte.set_font(self.zoom_data['old_font'])
|
||||||
|
|
||||||
|
self.remove(widget)
|
||||||
|
self.add(self.zoom_data['old_child'])
|
||||||
|
self.zoom_data['old_parent'].add(widget)
|
||||||
|
widget.grab_focus()
|
||||||
|
self.zoom_data = None
|
||||||
|
self.set_property('term_zoomed', False)
|
||||||
|
|
||||||
class WindowTitle(object):
|
class WindowTitle(object):
|
||||||
"""Class to handle the setting of the window title"""
|
"""Class to handle the setting of the window title"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue