From a510a833f89d054dbc1cf57dc0ba7d3b1d7dc17f Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Sat, 19 Jun 2010 22:42:24 +0000 Subject: cleaned up toolbar code; fixed accerlator key problem --- (limited to 'TurtleArtActivity.py') diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index d155491..6fab701 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -61,6 +61,27 @@ SERVICE = 'org.laptop.TurtleArtActivity' IFACE = SERVICE PATH = '/org/laptop/TurtleArtActivity' +def _add_separator(toolbar, expand=False): + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_expand(expand) + toolbar.insert(separator, -1) + separator.show() + +def _add_button(name, tooltip, callback, toolbar, accelerator=None): + """ add a button to a toolbar """ + button = ToolButton(name) + button.set_tooltip(tooltip) + button.connect('clicked', callback) + if accelerator is not None: + button.props.accelerator = accelerator + button.show() + try: + toolbar.props.page.insert(button, -1) + except AttributeError: + toolbar.insert(button, -1) + return button + class TurtleArtActivity(activity.Activity): def __init__(self, handle): @@ -406,7 +427,15 @@ class TurtleArtActivity(activity.Activity): self.fullscreen() self.recenter() - def do_resize_blocks_cb(self, button, scale_factor): + def do_grow_blocks_cb(self, button): + """ Grow the blocks. """ + self.do_resize_blocks(1.5) + + def do_shrink_blocks_cb(self, button): + """ Shrink the blocks. """ + self.do_resize_blocks(0.67) + + def do_resize_blocks(self, scale_factor): """ Scale the blocks. """ self.tw.block_scale *= scale_factor self.tw.resize_blocks() @@ -694,104 +723,67 @@ class TurtleArtActivity(activity.Activity): if self.new_sugar_system: # Use 0.86 toolbar design toolbar_box = ToolbarBox() - # toolbar_box = ActivityToolbox(self) # Buttons added to the Activity toolbar - activity_button = ActivityToolbarButton(self) - + activity_toolbar_button = ActivityToolbarButton(self) # Save snapshot is like Keep, but it creates a new activity id - self.keep_button = ToolButton('filesave') - self.keep_button.set_tooltip(_("Save snapshot")) - self.keep_button.connect('clicked', self.do_keep_cb) - self.keep_button.show() - activity_button.props.page.insert(self.keep_button, -1) - - # Save as HTML - self.save_as_html = ToolButton('htmloff') - self.save_as_html.set_tooltip(_("Save as HTML")) - self.save_as_html.connect('clicked', self.do_save_as_html_cb) - self.save_as_html.show() - activity_button.props.page.insert(self.save_as_html, -1) - - # Save as Logo - self.save_as_logo = ToolButton('logo-saveoff') - self.save_as_logo.set_tooltip(_("Save as Logo")) - self.save_as_logo.connect('clicked', self.do_save_as_logo_cb) - self.save_as_logo.show() - activity_button.props.page.insert(self.save_as_logo, -1) - - # Save as image - self.save_as_image = ToolButton('image-saveoff') - self.save_as_image.set_tooltip(_("Save as image")) - self.save_as_image.connect('clicked', self.do_save_as_image_cb) - self.save_as_image.show() - activity_button.props.page.insert(self.save_as_image, -1) - - # Load Python code into programmable brick - self.load_python = ToolButton('pippy-openoff') - self.load_python.set_tooltip(_("Load my block")) - self.load_python.connect('clicked', self.do_load_python_cb) - self.load_python.show() - activity_button.props.page.insert(self.load_python, -1) - - # Open project from the Journal - self.load_ta_project = ToolButton('load-from-journal') - self.load_ta_project.set_tooltip(\ - _("Import project from the Journal")) - self.load_ta_project.connect('clicked', self.do_load_ta_project_cb) - self.load_ta_project.show() - activity_button.props.page.insert(self.load_ta_project, -1) - - toolbar_box.toolbar.insert(activity_button, 0) - activity_button.show() + self.keep_button = _add_button('filesave',_("Save snapshot"), + self.do_keep_cb, + activity_toolbar_button) + self.save_as_html = _add_button('htmloff',_("Save as HTML"), + self.do_save_as_html_cb, + activity_toolbar_button) + self.save_as_logo = _add_button('logo-saveoff',_("Save as Logo"), + self.do_save_as_logo_cb, + activity_toolbar_button) + self.save_as_image = _add_button('image-saveoff',_("Save as image"), + self.do_save_as_image_cb, + activity_toolbar_button) + self.load_python = _add_button('pippy-openoff', + _("Load my block"), + self.do_load_python_cb, + activity_toolbar_button) + self.load_ta_project = _add_button('load-from-journal', + _("Import project from the Journal"), + self.do_load_ta_project_cb, + activity_toolbar_button) + activity_toolbar_button.show() + toolbar_box.toolbar.insert(activity_toolbar_button, -1) # The edit toolbar -- copy and paste - edit_toolbar = EditToolbar() - - edit_toolbar_button = ToolbarButton( - page=edit_toolbar, - icon_name='toolbar-edit') + edit_toolbar = gtk.Toolbar() + edit_toolbar_button = ToolbarButton(label=_('Edit'), + page=edit_toolbar, + icon_name='toolbar-edit') + self.copy = _add_button('edit-copy', _('Copy'), + self._copy_cb, + edit_toolbar_button, 'c') + self.paste = _add_button('edit-paste', _('Paste'), + self._paste_cb, + edit_toolbar_button, 'v') toolbar_box.toolbar.insert(edit_toolbar_button, -1) edit_toolbar_button.show() - - _logger.debug("======================") - edit_toolbar.copy.connect('clicked', self._copy_cb) - edit_toolbar.copy.props.accelerator = 'c' - edit_toolbar.paste.connect('clicked', self._paste_cb) - edit_toolbar.copy.props.accelerator = 'v' - edit_toolbar.undo.props.visible = False - edit_toolbar.redo.props.visible = False - edit_toolbar.separator.props.visible = False - _logger.debug("======================") - edit_toolbar.show() - # toolbar_box.toolbar.add_toolbar(_('Edit'), edit_toolbar) - + # The view toolbar view_toolbar = gtk.Toolbar() - - fullscreen_button = ToolButton('view-fullscreen') - fullscreen_button.set_tooltip(_("Fullscreen")) - fullscreen_button.props.accelerator = 'Enter' - fullscreen_button.connect('clicked', self.do_fullscreen_cb) - view_toolbar.insert(fullscreen_button, -1) - fullscreen_button.show() - - cartesian_button = ToolButton('view-Cartesian') - cartesian_button.set_tooltip(_("Cartesian coordinates")) - cartesian_button.connect('clicked', self.do_cartesian_cb) - view_toolbar.insert(cartesian_button, -1) - cartesian_button.show() - - polar_button = ToolButton('view-polar') - polar_button.set_tooltip(_("Polar coordinates")) - polar_button.connect('clicked', self.do_polar_cb) - view_toolbar.insert(polar_button, -1) - polar_button.show() - - separator = gtk.SeparatorToolItem() - separator.props.draw = True - view_toolbar.insert(separator, -1) - separator.show() + view_toolbar_button = ToolbarButton(label=_('View'), + page=view_toolbar, + icon_name='toolbar-view') + fullscreen_button = _add_button('view-fullscreen', + _("Fullscreen"), + self.do_fullscreen_cb, + view_toolbar_button, + 'Enter') + cartesian_button = _add_button('view-Cartesian', + _("Cartesian coordinates"), + self.do_cartesian_cb, + view_toolbar_button) + polar_button = _add_button('view-polar', + _("Polar coordinates"), + self.do_polar_cb, + view_toolbar_button) + + _add_separator(view_toolbar) self.coordinates_label = \ gtk.Label(_("xcor") + " = 0 " + _("ycor") + " = 0 " + \ @@ -803,41 +795,29 @@ class TurtleArtActivity(activity.Activity): view_toolbar.insert(self.coordinates_toolitem, -1) self.coordinates_toolitem.show() - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - view_toolbar.insert(separator, -1) - separator.show() - - self.rescale_button = ToolButton('expand-coordinates') - self.rescale_button.set_tooltip(_("Rescale coordinates up")) - self.rescale_button.connect('clicked', self.do_rescale_cb) - view_toolbar.insert(self.rescale_button, -1) - self.rescale_button.show() - - self.resize_up_button = ToolButton('resize+') - self.resize_up_button.set_tooltip(_("Grow blocks")) - self.resize_up_button.connect('clicked', - self.do_resize_blocks_cb, 1.5) - view_toolbar.insert(self.resize_up_button, -1) - self.resize_up_button.show() - - self.resize_down_button = ToolButton('resize-') - self.resize_down_button.set_tooltip(_("Shrink blocks")) - self.resize_down_button.connect('clicked', - self.do_resize_blocks_cb, 0.667) - view_toolbar.insert(self.resize_down_button, -1) - self.resize_down_button.show() - - view_toolbar_button = ToolbarButton( - page=view_toolbar, - icon_name='toolbar-view') + _add_separator(view_toolbar, True) + + self.rescale_button = _add_button('expand-coordinates', + _("Rescale coordinates up"), + self.do_rescale_cb, + view_toolbar_button) + self.resize_up_button = _add_button('resize+', + _("Grow blocks"), + self.do_grow_blocks_cb, + view_toolbar_button) + self.resize_down_button = _add_button('resize-', + _("Shrink blocks"), + self.do_shrink_blocks_cb, + view_toolbar_button) + view_toolbar_button.show() view_toolbar.show() toolbar_box.toolbar.insert(view_toolbar_button, -1) - view_toolbar_button.show() # palette toolbar palette_toolbar = gtk.Toolbar() + palette_toolbar_button = ToolbarButton( + page=palette_toolbar, + icon_name='palette') self.palette_buttons = [] for i, name in enumerate(PALETTE_NAMES): if i > 0: @@ -851,103 +831,56 @@ class TurtleArtActivity(activity.Activity): palette_toolbar.insert(self.palette_buttons[i], -1) self.palette_buttons[i].show() - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - palette_toolbar.insert(separator, -1) - separator.show() - - self.palette_button = ToolButton( "paletteoff" ) - self.palette_button.set_tooltip(_('Hide palette')) - self.palette_button.props.sensitive = True - self.palette_button.connect('clicked', self.do_palette_cb) - self.palette_button.props.accelerator = _('p') - palette_toolbar.insert(self.palette_button, -1) - self.palette_button.show() - - self.blocks_button = ToolButton( "hideshowoff" ) - self.blocks_button.set_tooltip(_('Hide blocks')) - self.blocks_button.props.sensitive = True - self.blocks_button.connect('clicked', self.do_hideshow_cb) - self.blocks_button.props.accelerator = _('b') - palette_toolbar.insert(self.blocks_button, -1) - self.blocks_button.show() + _add_separator(palette_toolbar, True) + self.palette_button = _add_button("paletteoff", _('Hide palette'), + self.do_palette_cb, + palette_toolbar_button, + _('p')) + self.blocks_button = _add_button("hideshowoff", _('Hide blocks'), + self.do_hideshow_cb, + palette_toolbar_button, + _('b')) - palette_toolbar_button = ToolbarButton( - page=palette_toolbar, - icon_name='palette') palette_toolbar.show() toolbar_box.toolbar.insert(palette_toolbar_button, -1) palette_toolbar_button.set_expanded(True) palette_toolbar_button.show() - separator = gtk.SeparatorToolItem() - separator.set_draw(True) - toolbar_box.toolbar.insert(separator, -1) - separator.show() - - # eraser button - self.eraser_button = ToolButton( "eraseron" ) - self.eraser_button.set_tooltip(_('Clean')) - self.eraser_button.props.sensitive = True - self.eraser_button.connect('clicked', self.do_eraser_cb) - self.eraser_button.props.accelerator = _('e') - toolbar_box.toolbar.insert(self.eraser_button, -1) - self.eraser_button.show() - - # run button - self.run_button = ToolButton( "run-fastoff" ) - self.run_button.set_tooltip(_('Run')) - self.run_button.props.sensitive = True - self.run_button.connect('clicked', self.do_run_cb) - self.run_button.props.accelerator = _('r') - toolbar_box.toolbar.insert(self.run_button, -1) - self.run_button.show() - - # step button - self.step_button = ToolButton( "run-slowoff" ) - self.step_button.set_tooltip(_('Step')) - self.step_button.props.sensitive = True - self.step_button.connect('clicked', self.do_step_cb) - self.step_button.props.accelerator = _('w') - toolbar_box.toolbar.insert(self.step_button, -1) - self.step_button.show() - - # debug button - self.debug_button = ToolButton( "debugoff" ) - self.debug_button.set_tooltip(_('Debug')) - self.debug_button.props.sensitive = True - self.debug_button.connect('clicked', self.do_debug_cb) - self.debug_button.props.accelerator = _('d') - toolbar_box.toolbar.insert(self.debug_button, -1) - self.debug_button.show() - - # stop button - self.stop_button = ToolButton( "stopitoff" ) - self.stop_button.set_tooltip(_('Stop turtle')) - self.stop_button.props.sensitive = True - self.stop_button.connect('clicked', self.do_stop_cb) - self.stop_button.props.accelerator = _('s') - toolbar_box.toolbar.insert(self.stop_button, -1) - self.stop_button.show() - - separator = gtk.SeparatorToolItem() - separator.set_draw(True) - toolbar_box.toolbar.insert(separator, -1) - separator.show() + _add_separator(toolbar_box.toolbar) + + self.eraser_button = _add_button("eraseron", _('Clean'), + self.do_eraser_cb, + toolbar_box.toolbar, + _('e')) + self.run_button = _add_button("run-fastoff", _('Run'), + self.do_run_cb, + toolbar_box.toolbar, + _('r')) + self.step_button = _add_button("run-slowoff", _('Step'), + self.do_step_cb, + toolbar_box.toolbar, + _('w')) + self.debug_button = _add_button("debugoff", _('Debug'), + self.do_debug_cb, + toolbar_box.toolbar, + _('d')) + self.stop_button = _add_button("stopitoff", + _('Stop turtle'), + self.do_stop_cb, + toolbar_box.toolbar, + _('s')) + _add_separator(toolbar_box.toolbar) # The Help toolbar -- sample code and hover help help_toolbar = gtk.Toolbar() - samples_button = ToolButton( "stock-open" ) - samples_button.set_tooltip(_('Samples')) - samples_button.connect('clicked', self.do_samples_cb) - samples_button.show() - help_toolbar.insert(samples_button, -1) - - separator = gtk.SeparatorToolItem() - separator.props.draw = True - help_toolbar.insert(separator, -1) - separator.show() + help_toolbar_button = ToolbarButton( + label=_("Help"), + page=help_toolbar, + icon_name='help-toolbar') + self.samples_button = _add_button("stock-open", _('Samples'), + self.do_samples_cb, + help_toolbar_button) + _add_separator(toolbar_box.toolbar) self.hover_help_label = \ gtk.Label(_("Move the cursor over the orange palette for help.")) @@ -957,20 +890,11 @@ class TurtleArtActivity(activity.Activity): self.hover_toolitem.add(self.hover_help_label) help_toolbar.insert(self.hover_toolitem, -1) self.hover_toolitem.show() - - help_toolbar_button = ToolbarButton( - label=_("Help"), - page=help_toolbar, - icon_name='help-toolbar') help_toolbar.show() toolbar_box.toolbar.insert(help_toolbar_button, -1) help_toolbar_button.show() - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - toolbar_box.toolbar.insert(separator, -1) - separator.show() + _add_separator(toolbar_box.toolbar, True) # The ever-present Stop Button stop_button = StopButton(self) @@ -1132,13 +1056,10 @@ class TurtleArtActivity(activity.Activity): # run the activity if run_it: - try: - # Use 0.86 toolbar design + if self.new_sugar_system: self.stop_button.set_icon("stopiton") - except: - # Use pre-0.86 toolbar design + else: self.projectToolbar.stop.set_icon("stopiton") - self.tw.run_button(0) else: _logger.debug("Deferring reading file %s" % file_path) @@ -1271,14 +1192,14 @@ class ViewToolbar(gtk.Toolbar): self.activity.resize_up_button = ToolButton('resize+') self.activity.resize_up_button.set_tooltip(_("Grow blocks")) self.activity.resize_up_button.connect('clicked', - self.activity.do_resize_blocks_cb, 1.5) + self.activity.do_grow_blocks_cb) self.insert(self.activity.resize_up_button, -1) self.activity.resize_up_button.show() self.activity.resize_down_button = ToolButton('resize-') self.activity.resize_down_button.set_tooltip(_("Shrink blocks")) self.activity.resize_down_button.connect('clicked', - self.activity.do_resize_blocks_cb, 0.667) + self.activity.do_shrink_blocks_cb) self.insert(self.activity.resize_down_button, -1) self.activity.resize_down_button.show() -- cgit v0.9.1