diff options
author | flavio <fdanesse@gmail.com> | 2012-11-19 23:42:04 (GMT) |
---|---|---|
committer | flavio <fdanesse@gmail.com> | 2012-11-19 23:42:04 (GMT) |
commit | 229786ba9aeeba958a878406a935d3f31bd9895b (patch) | |
tree | db0a701010456a5cfdd3cd250c06d26c21569d45 | |
parent | 08f7b8b2929946da8793aaa54227e1fce6e94498 (diff) |
Port Gtk 3 Base
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | activity/activity.info | 1 | ||||
-rw-r--r-- | edit_app.py | 40 | ||||
-rw-r--r-- | groupthink/gtk_tools.py | 24 | ||||
-rw-r--r-- | groupthink/sugar_tools.py | 58 | ||||
-rwxr-xr-x | setup.py | 3 |
6 files changed, 66 insertions, 64 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6089118 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.pyc +*.pyo +*.??~ +*.bak diff --git a/activity/activity.info b/activity/activity.info index a83a621..dafda9c 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,7 +1,6 @@ [Activity] name = Edit bundle_id = org.laptop.Edit -class = edit_app.EditActivity exec = sugar-activity edit_app.EditActivity icon = activity-icon activity_version = 8 diff --git a/edit_app.py b/edit_app.py index 5a05f0d..7f08b09 100644 --- a/edit_app.py +++ b/edit_app.py @@ -7,25 +7,25 @@ from groupthink import sugar_tools, gtk_tools from gettext import gettext as _ -import gtk -import pango +from gi.repository import Gtk +from gi.repository import Pango import time -import gtksourceview2 as gtksourceview +from gi.repository import GtkSource -from sugar.activity import activity +from sugar3.activity import activity try: # Can use 'New' toolbar design? - from sugar.graphics.toolbarbox import ToolbarBox + from sugar3.graphics.toolbarbox import ToolbarBox _HAVE_TOOLBOX = True except ImportError: _HAVE_TOOLBOX = False if _HAVE_TOOLBOX: - from sugar.activity.widgets import ActivityToolbarButton, StopButton - from sugar.graphics.toolbarbox import ToolbarButton + from sugar3.activity.widgets import ActivityToolbarButton, StopButton + from sugar3.graphics.toolbarbox import ToolbarButton -from sugar.graphics import style -from sugar.activity.activity import EditToolbar +from sugar3.graphics import style +from sugar3.activity.activity import EditToolbar import mdnames @@ -54,11 +54,11 @@ class EditActivity(sugar_tools.GroupActivity): sure there's early_setup, but that's not early enough ''' - self.buffer = gtksourceview.Buffer() + self.buffer = GtkSource.Buffer() self.refresh_buffer = False - self.text_view = gtksourceview.View(self.buffer) - self.scrollwindow = gtk.ScrolledWindow() + self.text_view = GtkSource.View(self.buffer) + self.scrollwindow = Gtk.ScrolledWindow() self.scrollwindow.add(self.text_view) @@ -108,7 +108,7 @@ class EditActivity(sugar_tools.GroupActivity): self.edit_toolbar.paste.connect('clicked', self.pastebutton_cb) if _HAVE_TOOLBOX: - separator = gtk.SeparatorToolItem() + separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.insert(separator, -1) @@ -128,7 +128,7 @@ class EditActivity(sugar_tools.GroupActivity): self.setup_toolbar() #Some graphics code borrowed from Pippy - lang_manager = gtksourceview.language_manager_get_default() + lang_manager = GtkSource.LanguageManager.get_default() if hasattr(lang_manager, 'list_languages'): langs = lang_manager.list_languages() else: @@ -146,8 +146,8 @@ class EditActivity(sugar_tools.GroupActivity): if self.metadata[mdnames.mimetype_md] == "text/plain": self.text_view.set_show_line_numbers(False) - self.text_view.set_wrap_mode(gtk.WRAP_WORD) - font = pango.FontDescription("Bitstream Vera Sans " + + self.text_view.set_wrap_mode(Gtk.WrapMode.WORD) + font = Pango.FontDescription("Bitstream Vera Sans " + str(style.FONT_SIZE)) else: if hasattr(self.buffer, 'set_highlight'): @@ -157,11 +157,11 @@ class EditActivity(sugar_tools.GroupActivity): self.text_view.set_show_line_numbers(True) - self.text_view.set_wrap_mode(gtk.WRAP_CHAR) + self.text_view.set_wrap_mode(Gtk.WrapMode.CHAR) self.text_view.set_insert_spaces_instead_of_tabs(True) self.text_view.set_tab_width(2) self.text_view.set_auto_indent(True) - font = pango.FontDescription("Monospace " + + font = Pango.FontDescription("Monospace " + str(style.FONT_SIZE)) self.text_view.modify_font(font) @@ -237,7 +237,7 @@ class EditActivity(sugar_tools.GroupActivity): self.buffer.redo() def copybutton_cb(self, button): - self.buffer.copy_clipboard(gtk.Clipboard()) + self.buffer.copy_clipboard(Gtk.Clipboard()) def pastebutton_cb(self, button): - self.buffer.paste_clipboard(gtk.Clipboard(), None, True) + self.buffer.paste_clipboard(Gtk.Clipboard(), None, True) diff --git a/groupthink/gtk_tools.py b/groupthink/gtk_tools.py index 0cd4029..c88d27e 100644 --- a/groupthink/gtk_tools.py +++ b/groupthink/gtk_tools.py @@ -1,15 +1,15 @@ -import gtk +from gi.repository import Gtk import groupthink_base as groupthink import logging import stringtree -class RecentEntry(groupthink.UnorderedHandlerAcceptor, gtk.Entry): +class RecentEntry(groupthink.UnorderedHandlerAcceptor, Gtk.Entry): """RecentEntry is an extension of gtk.Entry that, when attached to a group, creates a unified Entry field for all participants""" def __init__(self, *args, **kargs): - gtk.Entry.__init__(self, *args, **kargs) + Gtk.Entry.__init__(self, *args, **kargs) self.logger = logging.getLogger('RecentEntry') - self.add_events(gtk.gdk.PROPERTY_CHANGE_MASK) + self.add_events(Gdk.EventMask.PROPERTY_CHANGE_MASK) self._text_changed_handler = self.connect('changed', self._local_change_cb) self._recent = groupthink.Recentest(self.get_text(), groupthink.string_translator) self._recent.register_listener(self._remote_change_cb) @@ -32,7 +32,7 @@ class RecentEntry(groupthink.UnorderedHandlerAcceptor, gtk.Entry): self.set_text(text) self.handler_unblock(self._text_changed_handler) -class SharedTreeStore(groupthink.CausalHandlerAcceptor, gtk.GenericTreeModel): +class SharedTreeStore(groupthink.CausalHandlerAcceptor, Gtk.TreeModel): def __init__(self, columntypes=(), translators=()): self._columntypes = columntypes self._causaltree = groupthink.CausalTree() @@ -63,7 +63,7 @@ class SharedTreeStore(groupthink.CausalHandlerAcceptor, gtk.GenericTreeModel): ### Methods necessary to implement gtk.GenericTreeModel ### def on_get_flags(self): - return gtk.TREE_MODEL_ITERS_PERSIST + return Gtk.TREE_MODEL_ITERS_PERSIST def on_get_n_columns(self): return len(self._columntypes) @@ -186,9 +186,9 @@ class SharedTreeStore(groupthink.CausalHandlerAcceptor, gtk.GenericTreeModel): for cmd in reverse: clean = True if cmd[0] == self._causaltree.SET_PARENT: - if (clean and - cmd[2] in self._causaltree and - (cmd[1] not in self._causaltree or + if (clean and + cmd[2] in self._causaltree and + (cmd[1] not in self._causaltree or cmd[2] != self._causaltree.get_parent(cmd[1]))): clean = False @@ -324,14 +324,14 @@ class TextBufferUnorderedStringLinker: class TextBufferSharePoint(groupthink.UnorderedHandlerAcceptor): def __init__(self, buff): self._us = groupthink.UnorderedString(buff.get_text(buff.get_start_iter(), buff.get_end_iter())) - self._linker = TextBufferUnorderedStringLinker(buff, self._us) + self._linker = TextBufferUnorderedStringLinker(buff, self._us) def set_handler(self, handler): self._us.set_handler(handler) -class SharedTextView(groupthink.UnorderedHandlerAcceptor, gtk.TextView): +class SharedTextView(groupthink.UnorderedHandlerAcceptor, Gtk.TextView): def __init__(self, *args, **kargs): - gtk.TextView.__init__(self, *args, **kargs) + Gtk.TextView.__init__(self, *args, **kargs) self._link = TextBufferSharePoint(self.get_buffer()) def set_handler(self, handler): diff --git a/groupthink/sugar_tools.py b/groupthink/sugar_tools.py index d68b616..14a8cee 100644 --- a/groupthink/sugar_tools.py +++ b/groupthink/sugar_tools.py @@ -17,22 +17,22 @@ import logging import telepathy -from sugar.activity.activity import Activity -from sugar.graphics.toolbarbox import ToolbarBox +from sugar3.activity.activity import Activity +from sugar3.graphics.toolbarbox import ToolbarBox -from sugar.presence import presenceservice +from sugar3.presence import presenceservice -from sugar.presence.tubeconn import TubeConnection -from sugar.graphics.window import Window +from sugar3.presence.tubeconn import TubeConnection +from sugar3.graphics.window import Window -import gtk -import gobject +from gi.repository import Gtk +from gi.repository import GObject import groupthink_base as groupthink def exhaust_event_loop(): - while gtk.events_pending(): - gtk.main_iteration() + while Gtk.events_pending(): + Gtk.main_iteration() class GroupActivity(Activity): @@ -44,7 +44,7 @@ class GroupActivity(Activity): def __init__(self, handle): # self.initiating indicates whether this instance has initiated sharing # it always starts false, but will be set to true if this activity - # initiates sharing. In particular, if Activity.__init__ calls + # initiates sharing. In particular, if Activity.__init__ calls # self.share(), self.initiating will be set to True. self.initiating = False # self._processed_share indicates whether when_shared() has been called @@ -61,9 +61,9 @@ class GroupActivity(Activity): self._handle = handle ##gobject.threads_init() - self._sharing_completed = not self._shared_activity + self._sharing_completed = not self.shared_activity self._readfile_completed = not handle.object_id - if self._shared_activity: + if self.shared_activity: self.message = self.message_joining elif handle.object_id: self.message = self.message_loading @@ -75,9 +75,9 @@ class GroupActivity(Activity): self.set_toolbox(toolbox) toolbox.show() - v = gtk.VBox() - self.startup_label = gtk.Label(self.message) - v.pack_start(self.startup_label) + v = Gtk.VBox() + self.startup_label = Gtk.Label(self.message) + v.pack_start(self.startup_label, False, False, 0) Window.set_canvas(self,v) self.show_all() @@ -114,15 +114,15 @@ class GroupActivity(Activity): else: self._joined_cb(self) - self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) + self.add_events(Gdk.EventMask.VISIBILITY_NOTIFY_MASK) self.connect("visibility-notify-event", self._visible_cb) 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) + elif not self.shared_activity: + GObject.idle_add(self._initialize_cleanstart) def _initialize_cleanstart(self): self.initialize_cleanstart() @@ -144,7 +144,7 @@ class GroupActivity(Activity): main_widget = self.initialize_display() Window.set_canvas(self, main_widget) self.initialized = True - if self._shared_activity and not self._processed_share: + if self.shared_activity and not self._processed_share: # We are joining a shared activity, but when_shared has not yet # been called self.when_shared() @@ -182,13 +182,13 @@ class GroupActivity(Activity): self.dbus_name, {}) def _sharing_setup(self): - if self._shared_activity is None: + if self.shared_activity is None: self.logger.error('Failed to share or join activity') return - self.conn = self._shared_activity.telepathy_conn - self.tubes_chan = self._shared_activity.telepathy_tubes_chan - self.text_chan = self._shared_activity.telepathy_text_chan + self.conn = self.shared_activity.telepathy_conn + self.tubes_chan = self.shared_activity.telepathy_tubes_chan + self.text_chan = self.shared_activity.telepathy_text_chan self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].connect_to_signal('NewTube', self._new_tube_cb) @@ -202,7 +202,7 @@ class GroupActivity(Activity): self.logger.error('ListTubes() failed: %s', e) def _joined_cb(self, activity): - if not self._shared_activity: + if not self.shared_activity: return self.logger.debug('Joined an existing shared activity') @@ -241,7 +241,7 @@ class GroupActivity(Activity): """This implementation of load_from_journal simply returns the contents of the file. Any inheritor overriding this method must return the string provided to save_to_journal as cloudstring.""" - if file_path: + if file_path: f = file(file_path,'rb') s = f.read() f.close() @@ -255,12 +255,12 @@ class GroupActivity(Activity): # read) before writing. if not self._readfile_completed: self.read_file(self._jobject.file_path) - self.save_to_journal(file_path, self.cloud.dumps()) + self.save_to_journal(file_path, self.cloud.dumps()) def save_to_journal(self, file_path, cloudstring): - """This implementation of save_to_journal simply dumps the output of + """This implementation of save_to_journal simply dumps the output of self.cloud.dumps() to disk. Any inheritor who wishes to control file - output should override this method, and must + output should override this method, and must be sure to include cloudstring in its write_file.""" f = file(file_path, 'wb') f.write(cloudstring) @@ -275,7 +275,7 @@ class GroupActivity(Activity): def _visible_cb(self, widget, event): self.logger.debug("_visible_cb") - if event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED: + if event.get_state() == Gdk.VisibilityState.FULLY_OBSCURED: self.pause() else: self.resume() @@ -16,6 +16,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -from sugar.activity import bundlebuilder - +from sugar3.activity import bundlebuilder bundlebuilder.start() |