Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Ortiz <rafael@activitycentral.com>2011-07-08 15:55:33 (GMT)
committer Rafael Ortiz <rafael@activitycentral.com>2011-07-08 15:55:33 (GMT)
commit98f232e558dc4051f27f1ff29d75db82cd3f9b2d (patch)
tree10724aee9659460c6d48a32483bdd05b0c481d85
parent52dbb055ec9f9e42da9c312b27b766481e178ba7 (diff)
matching mianline
-rwxr-xr-xterminal.py85
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