diff options
author | Rafael Ortiz <rafael@activitycentral.com> | 2011-07-08 15:55:33 (GMT) |
---|---|---|
committer | Rafael Ortiz <rafael@activitycentral.com> | 2011-07-08 15:55:33 (GMT) |
commit | 98f232e558dc4051f27f1ff29d75db82cd3f9b2d (patch) | |
tree | 10724aee9659460c6d48a32483bdd05b0c481d85 | |
parent | 52dbb055ec9f9e42da9c312b27b766481e178ba7 (diff) |
matching mianline
-rwxr-xr-x | terminal.py | 85 |
1 files changed, 70 insertions, 15 deletions
diff --git a/terminal.py b/terminal.py index 63605b3..b0aef58 100755 --- a/terminal.py +++ b/terminal.py @@ -30,6 +30,8 @@ import pango from sugar.graphics.toolbutton import ToolButton from sugar.graphics.toolbarbox import ToolbarBox from sugar.graphics.toolbarbox import ToolbarButton +from sugar.graphics.notebook import Notebook + from sugar.activity.widgets import ActivityToolbarButton from sugar.activity.widgets import StopButton from sugar.activity import activity @@ -43,6 +45,8 @@ log = logging.getLogger('Terminal') log.setLevel(logging.DEBUG) logging.basicConfig() +ZOOM_STEP = 2000 + class TerminalActivity(activity.Activity): @@ -86,17 +90,17 @@ class TerminalActivity(activity.Activity): tab_toolbar_button.show() # Add a button that will be used to become root easily. - #root_button = ToolButton('activity-become-root') - #root_button.set_tooltip(_('Become root')) - #root_button.connect('clicked', self.__become_root_cb) - #toolbar_box.toolbar.insert(root_button, -1) - #root_button.show() - - #separator = gtk.SeparatorToolItem() - #separator.props.draw = False - #separator.set_expand(True) - #toolbar_box.toolbar.insert(separator, -1) - #separator.show() + root_button = ToolButton('activity-become-root') + root_button.set_tooltip(_('Become root')) + root_button.connect('clicked', self.__become_root_cb) + toolbar_box.toolbar.insert(root_button, -1) + root_button.show() + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + toolbar_box.toolbar.insert(separator, -1) + separator.show() stop_button = StopButton(self) stop_button.props.accelerator = '<Ctrl><Shift>Q' @@ -105,8 +109,9 @@ class TerminalActivity(activity.Activity): self.set_toolbar_box(toolbar_box) toolbar_box.show() + self._update_accelerators(toolbar_box) - self._notebook = gtk.Notebook() + self._notebook = Notebook() self._notebook.set_property("tab-pos", gtk.POS_TOP) self._notebook.set_scrollable(True) self._notebook.show() @@ -115,6 +120,28 @@ class TerminalActivity(activity.Activity): self._create_tab(None) + def _update_accelerators(self, container): + for child in container.get_children(): + if isinstance(child, ToolButton): + if child.props.accelerator is not None: + # This code is copied from toolbutton.py + # to solve workaround bug described in OLPC #10930 + accel_group = self.get_data('sugar-accel-group') + keyval, mask = gtk.accelerator_parse( + child.props.accelerator) + # the accelerator needs to be set at the child, + # so the gtk.AccelLabel + # in the palette can pick it up. + child.child.add_accelerator('clicked', accel_group, + keyval, mask, + gtk.ACCEL_LOCKED | gtk.ACCEL_VISIBLE) + + if isinstance(child, ToolbarButton): + if child.get_page() is not None: + self._update_accelerators(child.get_page()) + if hasattr(child, 'get_children'): + self._update_accelerators(child) + def _create_edit_toolbar(self): edit_toolbar = activity.EditToolbar() edit_toolbar.undo.props.visible = False @@ -137,6 +164,21 @@ class TerminalActivity(activity.Activity): def _create_view_toolbar(self): view_toolbar = gtk.Toolbar() + + zoom_out_button = ToolButton('zoom-out') + zoom_out_button.set_tooltip(_('Zoom out')) + zoom_out_button.props.accelerator = '<Ctrl>-' + zoom_out_button.connect('clicked', self.__zoom_out_cb) + view_toolbar.insert(zoom_out_button, -1) + zoom_out_button.show() + + zoom_in_button = ToolButton('zoom-in') + zoom_in_button.set_tooltip(_('Zoom in')) + zoom_in_button.props.accelerator = '<Ctrl>+' + zoom_in_button.connect('clicked', self.__zoom_in_cb) + view_toolbar.insert(zoom_in_button, -1) + zoom_in_button.show() + fullscreen_button = ToolButton('view-fullscreen') fullscreen_button.set_tooltip(_("Fullscreen")) fullscreen_button.props.accelerator = '<Alt>Return' @@ -145,6 +187,19 @@ class TerminalActivity(activity.Activity): fullscreen_button.show() return view_toolbar + def _zoom(self, step): + current_page = self._notebook.get_current_page() + vt = self._notebook.get_nth_page(current_page).vt + font_desc = vt.get_font() + font_desc.set_size(font_desc.get_size() + step) + vt.set_font(font_desc) + + def __zoom_out_cb(self, button): + self._zoom(ZOOM_STEP * -1) + + def __zoom_in_cb(self, button): + self._zoom(ZOOM_STEP) + def __fullscreen_cb(self, button): self.fullscreen() @@ -245,9 +300,9 @@ class TerminalActivity(activity.Activity): # FIXME have to resend motion events to parent, see #1402 vt.connect('motion-notify-event', self.__motion_notify_cb) - vt.drag_dest_set(gtk.DEST_DEFAULT_MOTION|gtk.DEST_DEFAULT_DROP, + vt.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_DROP, [('text/plain', 0, 0), ('STRING', 0, 1)], - gtk.gdk.ACTION_DEFAULT| + gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY) vt.connect('drag_data_received', self.__drag_data_received_cb) @@ -295,7 +350,7 @@ class TerminalActivity(activity.Activity): # Restore the working directory. if 'cwd' in tab_state and os.path.exists(tab_state['cwd']): - try: + try: os.chdir(tab_state['cwd']) except: # ACLs may deny access |