From 96aa1ce7a9d1fde80908e5eed15fbcf62a006da6 Mon Sep 17 00:00:00 2001 From: Nathaniel Theis Date: Thu, 25 Nov 2010 06:24:19 +0000 Subject: Added copy-paste toolbars, changed to new-style toolbars --- diff --git a/activity/activity.info b/activity/activity.info index ea353b1..a83a621 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -4,7 +4,7 @@ bundle_id = org.laptop.Edit class = edit_app.EditActivity exec = sugar-activity edit_app.EditActivity icon = activity-icon -activity_version = 7 +activity_version = 8 mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml;application/x-turtle-art show_launcher = yes host_version = 1 diff --git a/edit_app.py b/edit_app.py index c0a119b..76f932d 100644 --- a/edit_app.py +++ b/edit_app.py @@ -8,13 +8,52 @@ from groupthink import sugar_tools, gtk_tools from gettext import gettext as _ import gtk, pango -import time, logging +import time import gtksourceview2 as gtksourceview from sugar.graphics import style +from sugar.activity.activity import EditToolbar +from sugar.activity.widgets import ActivityToolbar +from sugar.graphics.toolbarbox import ToolbarBox +from sugar.graphics.toolbarbox import ToolbarButton +from sugar.activity.widgets import StopButton import mdnames +from sugar.graphics.xocolor import XoColor +from sugar.graphics.icon import Icon +from sugar.bundle.activitybundle import ActivityBundle + +def _create_activity_icon(metadata): + '''Get the icon given an activity''' + if metadata.get('icon-color', ''): + color = XoColor(metadata['icon-color']) + else: + client = gconf.client_get_default() + color = XoColor(client.get_string( + '/desktop/sugar/user/color')) + + from sugar.activity.activity import get_bundle_path + bundle = ActivityBundle(get_bundle_path()) + icon = Icon(file=bundle.get_icon(), xo_color=color) + + return icon + +class ActivityToolbarButton(ToolbarButton): + #thanks, sugar activity guide + def __init__(self, activity, **kwargs): + toolbar = ActivityToolbar(activity, + orientation_left=True) + toolbar.stop.hide() + toolbar.keep.hide() + + ToolbarButton.__init__(self, page=toolbar, + **kwargs) + + icon = _create_activity_icon(activity.metadata) + self.set_icon_widget(icon) + icon.show() + class EditActivity(sugar_tools.GroupActivity): '''A text editor for Sugar pylint says I need a docstring. Here you go. @@ -48,7 +87,7 @@ class EditActivity(sugar_tools.GroupActivity): self.scrollwindow.add(self.text_view) - sugar_tools.GroupActivity.__init__(self, handl) + sugar_tools.GroupActivity.__init__(self, handle) def fix_mimetype(self): '''We must have a mimetype. Sometimes, we don't (when we get launched @@ -56,14 +95,48 @@ class EditActivity(sugar_tools.GroupActivity): if self.metadata[mdnames.mimetype_md] == '': self.metadata[mdnames.mimetype_md] = "text/plain" #we MUST have a mimetype + + def setup_toolbar(self): + '''Setup the top toolbar. Groupthink needs some work here.''' + toolbar_box = ToolbarBox() + + activity_button = ActivityToolbarButton(self) + toolbar_box.toolbar.insert(activity_button, 0) + activity_button.show() + + self.edit_toolbar = EditToolbar() + edit_toolbar_button = ToolbarButton( + page=self.edit_toolbar, + icon_name='toolbar-edit') + self.edit_toolbar.show() + toolbar_box.toolbar.insert(edit_toolbar_button, -1) + edit_toolbar_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 = 'Q' + toolbar_box.toolbar.insert(stop_button, -1) + stop_button.show() + self.set_toolbar_box(toolbar_box) + toolbar_box.show() + def initialize_display(self): '''Set up GTK and friends''' self.fix_mimetype() self.cloud.shared_buffer = gtk_tools.TextBufferSharePoint(self.buffer) - #Borrowed from Pippy + self.setup_toolbar() + #Some graphics code borrowed from Pippy + + lang_manager = gtksourceview.language_manager_get_default() if hasattr(lang_manager, 'list_languages'): langs = lang_manager.list_languages() @@ -74,8 +147,7 @@ class EditActivity(sugar_tools.GroupActivity): for mtype in lang.get_mime_types(): if mtype == self.metadata[mdnames.mimetype_md]: self.buffer.set_language(lang) - - + break self.text_view.set_editable(True) diff --git a/fix_indent.sh b/fix_indent.sh deleted file mode 100644 index 7734540..0000000 --- a/fix_indent.sh +++ /dev/null @@ -1,3 +0,0 @@ -sed edit_app.py -e "s/ / /g" > /tmp/fixing_indentation -mv /tmp/fixing_indentation edit_app.py - diff --git a/groupthink/sugar_tools.py b/groupthink/sugar_tools.py index 0292a0b..d68b616 100644 --- a/groupthink/sugar_tools.py +++ b/groupthink/sugar_tools.py @@ -17,7 +17,9 @@ import logging import telepathy -from sugar.activity.activity import Activity, ActivityToolbox +from sugar.activity.activity import Activity +from sugar.graphics.toolbarbox import ToolbarBox + from sugar.presence import presenceservice from sugar.presence.tubeconn import TubeConnection @@ -59,7 +61,6 @@ class GroupActivity(Activity): self._handle = handle ##gobject.threads_init() - self._sharing_completed = not self._shared_activity self._readfile_completed = not handle.object_id if self._shared_activity: @@ -70,7 +71,7 @@ class GroupActivity(Activity): self.message = self.message_preparing # top toolbar with share and close buttons: - toolbox = ActivityToolbox(self) + toolbox = ToolbarBox(self) self.set_toolbox(toolbox) toolbox.show() @@ -96,7 +97,8 @@ class GroupActivity(Activity): # that contains all state in the system. Everything else is stateless. # self.cloud has to be defined before the call to self.set_canvas, because # set_canvas can trigger almost anything, including pending calls to read_file, - # which relies on self.cloud. + # which relies on self.cloud. self._initialize_display() + # get the Presence Service self.pservice = presenceservice.get_instance() @@ -117,6 +119,7 @@ class GroupActivity(Activity): self.connect("notify::active", self._active_cb) if not self._readfile_completed: + self._initialize_display() self.read_file(self._jobject.file_path) elif not self._shared_activity: gobject.idle_add(self._initialize_cleanstart) -- cgit v0.9.1