Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathaniel Theis <natetheis@gmail.com>2010-11-25 06:24:19 (GMT)
committer Nathaniel Theis <natetheis@gmail.com>2010-11-25 06:24:19 (GMT)
commit96aa1ce7a9d1fde80908e5eed15fbcf62a006da6 (patch)
treec593a2c37b943c08b2023533522ba25b6061810d
parent202b4ffc5ecc0ffae0acf4374c917012fcfb5cd3 (diff)
Added copy-paste toolbars, changed to new-style toolbars
-rw-r--r--activity/activity.info2
-rw-r--r--edit_app.py82
-rw-r--r--fix_indent.sh3
-rw-r--r--groupthink/sugar_tools.py11
4 files changed, 85 insertions, 13 deletions
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 = '<Ctrl><Shift>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)