diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2014-02-07 20:01:55 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2014-02-07 20:01:55 (GMT) |
commit | b327e97c6ea57f9c80f2ae9988241ccb785488af (patch) | |
tree | e14474832a4895b2acc313a0ac2d2e1230f49222 | |
parent | 3c07857331ecfc54efec9f32f7d796713b2cab8f (diff) |
Initial port to gtk3. Starts, but can't open a activity
-rw-r--r-- | develop-activity/activity_model.py | 13 | ||||
-rw-r--r-- | develop-activity/develop_app.py | 152 | ||||
-rw-r--r-- | develop-activity/logviewer.py | 61 | ||||
-rw-r--r-- | develop-activity/new_activity.py | 2 | ||||
-rwxr-xr-x | develop-activity/setup.py | 2 | ||||
-rw-r--r-- | develop-activity/sourceview_editor.py | 49 | ||||
-rw-r--r-- | develop-activity/symbols_tree.py | 27 | ||||
-rw-r--r-- | develop-activity/widgets.py | 22 |
8 files changed, 172 insertions, 156 deletions
diff --git a/develop-activity/activity_model.py b/develop-activity/activity_model.py index d20690a..3681898 100644 --- a/develop-activity/activity_model.py +++ b/develop-activity/activity_model.py @@ -14,8 +14,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gtk -import gobject +from gi.repository import Gtk +from gi.repository import GObject import os import os.path import logging @@ -58,7 +58,7 @@ def inmanifestfn(bundle): os.path.walk(activity_path, walk_callback, allfiles) - #logging.error('allfiles %s', allfiles) + logging.error('allfiles %s', allfiles) #allfiles = bundle.get_files() def nodefilterfn(node): @@ -86,16 +86,16 @@ def get_selected_file_path(treeview): return value['path'] -class DirectoryAndExtraModel(gtk.GenericTreeModel): +class DirectoryAndExtraModel(Gtk.ListStore): - columns = (gobject.TYPE_PYOBJECT, gobject.TYPE_STRING) + columns = (GObject.TYPE_PYOBJECT, GObject.TYPE_STRING) def __init__(self, root, extra_paths=None, nodefilter=_nodefilter): self.root = root self.extra_paths = extra_paths self.nodefilter = nodefilter self.refresh() - gtk.GenericTreeModel.__init__(self) + Gtk.ListStore.__init__(self) def refresh(self): self.files = list( @@ -108,6 +108,7 @@ class DirectoryAndExtraModel(gtk.GenericTreeModel): self.files.extend(ActivityNode( filename, self, None, self.nodefilter) for filename in self.extra_paths) + logging.error('DirectoryAndExtraModel refresh() %s', self.files) def get_iter_from_filepath(self, filepath): if filepath.startswith(self.root): diff --git a/develop-activity/develop_app.py b/develop-activity/develop_app.py index 4d0d430..a5bdc24 100644 --- a/develop-activity/develop_app.py +++ b/develop-activity/develop_app.py @@ -13,32 +13,34 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Develop Activity: A programming activity.""" -import gtk import logging import os import os.path -import gobject import simplejson - from gettext import gettext as _ -from sugar import profile -from sugar.graphics.toolbarbox import ToolbarBox -from sugar.activity.widgets import ActivityToolbarButton -from sugar.graphics.toolbarbox import ToolbarButton -from sugar.graphics.radiotoolbutton import RadioToolButton -from sugar.activity.widgets import StopButton -from sugar.activity.bundlebuilder import XOPackager, Config, Builder -from sugar.activity import activity -from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.combobox import ComboBox -from sugar.graphics.alert import ConfirmationAlert -from sugar.graphics.alert import Alert -from sugar.graphics import iconentry, notebook -from sugar.graphics.icon import Icon -from sugar.graphics import style -from sugar.datastore import datastore -from sugar.bundle.activitybundle import ActivityBundle +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GObject + +from sugar3 import profile +from sugar3.graphics.toolbarbox import ToolbarBox +from sugar3.graphics.toolbarbox import ToolbarButton +from sugar3.graphics.radiotoolbutton import RadioToolButton +from sugar3.activity.widgets import ActivityToolbarButton +from sugar3.activity.widgets import EditToolbar +from sugar3.activity.widgets import StopButton +from sugar3.activity.bundlebuilder import XOPackager, Config, Builder +from sugar3.activity import activity +from sugar3.graphics.toolbutton import ToolButton +from sugar3.graphics.combobox import ComboBox +from sugar3.graphics.alert import ConfirmationAlert +from sugar3.graphics.alert import Alert +from sugar3.graphics import iconentry, notebook +from sugar3.graphics.icon import Icon +from sugar3.graphics import style +from sugar3.datastore import datastore +from sugar3.bundle.activitybundle import ActivityBundle import logviewer import sourceview_editor @@ -117,7 +119,7 @@ class DevelopActivity(activity.Activity): search_btn.props.label = _('Search') toolbarbox.toolbar.insert(search_btn, -1) - toolbarbox.toolbar.insert(gtk.SeparatorToolItem(), -1) + toolbarbox.toolbar.insert(Gtk.SeparatorToolItem(), -1) show_files_btn = RadioToolButton() show_files_btn.props.icon_name = 'sources' @@ -143,7 +145,7 @@ class DevelopActivity(activity.Activity): toolbarbox.toolbar.insert(show_log_btn, -1) show_log_btn.connect('clicked', self._change_treenotebook_page, 2) - toolbarbox.toolbar.insert(gtk.SeparatorToolItem(), -1) + toolbarbox.toolbar.insert(Gtk.SeparatorToolItem(), -1) create_file_btn = ToolButton('text-x-generic') create_file_btn.set_tooltip(_('Create empty file')) @@ -157,7 +159,7 @@ class DevelopActivity(activity.Activity): erase_btn.show() erase_btn.connect('clicked', self.__remove_file_cb) - separator = gtk.SeparatorToolItem() + separator = Gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) toolbarbox.toolbar.insert(separator, -1) @@ -174,8 +176,8 @@ class DevelopActivity(activity.Activity): toolbarbox.show_all() # Main layout. - hbox = gtk.HPaned() - vbox = gtk.VBox() + hbox = Gtk.HPaned() + vbox = Gtk.VBox() #The treeview and selected pane reflect each other. self.numb = False @@ -185,39 +187,39 @@ class DevelopActivity(activity.Activity): self.save_unchanged = False # The sidebar - sidebar = gtk.VBox() + sidebar = Gtk.VBox() self.treenotebook = notebook.Notebook(can_close_tabs=False) self.treenotebook.set_show_tabs(False) - sidebar.pack_start(self.treenotebook) + sidebar.pack_start(self.treenotebook, True, True, 0) - self.model = gtk.TreeStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING) - self.treeview = gtk.TreeView(self.model) - cellrenderer = gtk.CellRendererText() - self.treecolumn = gtk.TreeViewColumn(_("Activities"), cellrenderer, + self.model = Gtk.TreeStore(GObject.TYPE_PYOBJECT, GObject.TYPE_STRING) + self.treeview = Gtk.TreeView(self.model) + cellrenderer = Gtk.CellRendererText() + self.treecolumn = Gtk.TreeViewColumn(_("Activities"), cellrenderer, text=1) self.treeview.append_column(self.treecolumn) - self.treeview.set_size_request(gtk.gdk.screen_width() / 4, -1) + self.treeview.set_size_request(Gdk.Screen.width() / 4, -1) # Create scrollbars around the tree view. - scrolled = gtk.ScrolledWindow() + scrolled = Gtk.ScrolledWindow() scrolled.add(self.treeview) - scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.treenotebook.add_page(_("Activity"), scrolled) # Symbols tree self._symbolstree = SymbolsTree() self._symbolstree.connect('symbol-selected', self.editor.symbol_selected_cb) - scrolled = gtk.ScrolledWindow() + scrolled = Gtk.ScrolledWindow() scrolled.add(self._symbolstree) - scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.treenotebook.add_page(_('Symbols Tree'), scrolled) hbox.pack1(sidebar, resize=True, shrink=True) sidebar.show() logging.info('finished check') - vbox.pack_start(self.editor) + vbox.pack_start(self.editor, True, True, 0) self.editor.show() hbox.pack2(vbox, resize=True, shrink=True) vbox.show() @@ -228,7 +230,7 @@ class DevelopActivity(activity.Activity): self.show() if not handle.object_id or not self.metadata.get('source'): - gobject.timeout_add(10, self._show_welcome) + GObject.timeout_add(10, self._show_welcome) def _change_treenotebook_page(self, button, page): self.treenotebook.set_current_page(page) @@ -266,9 +268,9 @@ class DevelopActivity(activity.Activity): def _show_welcome(self): """_show_welcome: when opened without a bundle, ask open/new/cancel """ - vbox = gtk.VBox() + vbox = Gtk.VBox() - edit_label = gtk.Label( + edit_label = Gtk.Label( _('<span weight="bold" size="larger">' 'Edit a installed activity</span>\n\n' 'You can modify a activity, and if there are errors the ' @@ -278,23 +280,23 @@ class DevelopActivity(activity.Activity): edit_label.set_line_wrap(True) vbox.pack_start(edit_label, expand=False, fill=True, padding=10) - hbox_edit = gtk.HBox() - hbox_edit.pack_start(gtk.Label('Select the activity'), expand=False, - fill=False, padding=10) + hbox_edit = Gtk.HBox() + hbox_edit.pack_start(Gtk.Label(_('Select the activity')), True, + True, 10) activity_name_combo = ComboBox() self._load_activities_installed_combo(activity_name_combo) hbox_edit.pack_start(activity_name_combo, expand=False, fill=False, padding=10) - edit_btn = gtk.Button(_('Start')) + edit_btn = Gtk.Button(_('Start')) edit_btn.connect('clicked', self._pick_existing_activity, activity_name_combo) hbox_edit.pack_start(edit_btn, expand=False, fill=False, padding=10) - align = gtk.Alignment(xalign=0.5, yalign=0.5) + align = Gtk.Alignment.new(0.5, 0.5, 0, 0) align.add(hbox_edit) vbox.pack_start(align, expand=False, fill=False, padding=10) - new_project_label = gtk.Label( + new_project_label = Gtk.Label( _('<span weight="bold" size="larger">' 'Create a new activity</span>\n\n' 'You can create something new, ' @@ -303,34 +305,34 @@ class DevelopActivity(activity.Activity): new_project_label.set_line_wrap(True) vbox.pack_start(new_project_label, expand=False, fill=True, padding=10) - hbox_create = gtk.HBox() - hbox_create.pack_start(gtk.Label('Select the type'), + hbox_create = Gtk.HBox() + hbox_create.pack_start(Gtk.Label(_('Select the type')), expand=False, fill=False, padding=10) project_type_combo = ComboBox() self._load_skeletons_combo(project_type_combo) hbox_create.pack_start(project_type_combo, expand=False, fill=False, padding=10) - align = gtk.Alignment(xalign=0.5, yalign=0.5) + align = Gtk.Alignment.new(0.5, 0.5, 0, 0) align.add(hbox_create) vbox.pack_start(align, expand=False, fill=False, padding=10) - hbox_name = gtk.HBox() - hbox_name.pack_start(gtk.Label(_('Name the activity'))) - activity_name_entry = gtk.Entry() + hbox_name = Gtk.HBox() + hbox_name.pack_start(Gtk.Label(_('Name the activity')), True, True, 0) + activity_name_entry = Gtk.Entry() hbox_name.pack_start(activity_name_entry, expand=True, fill=True, padding=10) - create_btn = gtk.Button(_('Start')) + create_btn = Gtk.Button(_('Start')) create_btn.connect('clicked', self._create_new_activity, activity_name_entry, project_type_combo) hbox_name.pack_start(create_btn, expand=True, fill=True, padding=10) - align = gtk.Alignment(xalign=0.5, yalign=0.5) + align = Gtk.Alignment.new(0.5, 0.5, 0, 0) align.add(hbox_name) vbox.pack_start(align, expand=False, fill=False, padding=10) vbox.show_all() - self.editor.append_page(vbox, gtk.Label(_('Start'))) + self.editor.append_page(vbox, Gtk.Label(label=_('Start'))) return False def _load_activities_installed_combo(self, activities_combo): @@ -392,7 +394,7 @@ class DevelopActivity(activity.Activity): title = _('Atention') alert.props.title = title alert.props.msg = message - alert.add_button(gtk.RESPONSE_OK, _('Ok')) + alert.add_button(Gtk.ResponseType.OK, _('Ok')) self.add_alert(alert) alert.connect('response', self._alert_response_cb) @@ -611,19 +613,19 @@ class DevelopActivity(activity.Activity): #HACK alert._hbox.remove(alert._buttons_box) - alert.entry = gtk.Entry() - alert._hbox.pack_start(alert.entry) + alert.entry = Gtk.Entry() + alert._hbox.pack_start(alert.entry, True, True, 0) - alert._buttons_box = gtk.HButtonBox() - alert._buttons_box.set_layout(gtk.BUTTONBOX_END) + alert._buttons_box = Gtk.HButtonBox() + alert._buttons_box.set_layout(Gtk.ButtonBoxStyle.END) alert._buttons_box.set_spacing(style.DEFAULT_SPACING) - alert._hbox.pack_start(alert._buttons_box) + alert._hbox.pack_start(alert._buttons_box, True, True, 0) icon = Icon(icon_name='dialog-cancel') - alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon) + alert.add_button(Gtk.ResponseType.CANCEL, _('Cancel'), icon) icon = Icon(icon_name='dialog-ok') - alert.add_button(gtk.RESPONSE_OK, _('Ok'), icon) + alert.add_button(Gtk.ResponseType.OK, _('Ok'), icon) alert.show_all() # @@ -655,7 +657,7 @@ class DevelopActivity(activity.Activity): alert.connect('response', self.__remove_file_alert_cb, file_path) def __remove_file_alert_cb(self, alert, response_id, file_path): - if response_id is gtk.RESPONSE_OK: + if response_id is Gtk.ResponseType.OK: if os.path.isfile(file_path): os.unlink(file_path) self.refresh_files() @@ -663,10 +665,10 @@ class DevelopActivity(activity.Activity): self.remove_alert(alert) -class DevelopEditToolbar(activity.EditToolbar): +class DevelopEditToolbar(EditToolbar): def __init__(self, _activity): - activity.EditToolbar.__init__(self) + EditToolbar.__init__(self) self._activity = _activity self._activity.editor.connect('changed', self._changed_cb) @@ -679,7 +681,7 @@ class DevelopEditToolbar(activity.EditToolbar): # make expanded non-drawn visible separator to make #the search stuff right-align - separator = gtk.SeparatorToolItem() + separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.insert(separator, -1) @@ -706,7 +708,7 @@ class DevelopEditToolbar(activity.EditToolbar): # bad paul! this function was copied from sugar's activity.py via Write def _add_widget(self, widget, expand=False): - tool_item = gtk.ToolItem() + tool_item = Gtk.ToolItem() tool_item.set_expand(expand) tool_item.add(widget) @@ -716,10 +718,10 @@ class DevelopEditToolbar(activity.EditToolbar): tool_item.show() -class DevelopSearchToolbar(gtk.Toolbar): +class DevelopSearchToolbar(Gtk.Toolbar): def __init__(self, _activity): - gtk.Toolbar.__init__(self) + GObject.GObject.__init__(self) self._activity = _activity @@ -790,7 +792,7 @@ class DevelopSearchToolbar(gtk.Toolbar): (_('Advanced search'), ssho, True, "regex"), ): if not name: - menuitem = gtk.SeparatorMenuItem() + menuitem = Gtk.SeparatorMenuItem() else: menuitem = MenuItem(name, icon) menuitem.connect('activate', function, options) @@ -799,7 +801,7 @@ class DevelopSearchToolbar(gtk.Toolbar): # make expanded non-drawn visible separator to make the replace #stuff right-align - separator = gtk.SeparatorToolItem() + separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.insert(separator, -1) @@ -829,7 +831,7 @@ class DevelopSearchToolbar(gtk.Toolbar): (_('Replace all'), ssro, True, "multi-replace"), ): if not name: - menuitem = gtk.SeparatorMenuItem() + menuitem = Gtk.SeparatorMenuItem() else: menuitem = MenuItem(name, icon) menuitem.connect('activate', function, options) @@ -842,7 +844,7 @@ class DevelopSearchToolbar(gtk.Toolbar): self._activity.connect('key_press_event', self._on_key_press_event) def _on_key_press_event(self, widget, event): - keyname = gtk.gdk.keyval_name(event.keyval) + keyname = Gdk.keyval_name(event.keyval) if "F5" <= keyname and keyname <= "F8": if keyname == "F5": self._go_to_search_entry_cb() @@ -969,7 +971,7 @@ class DevelopSearchToolbar(gtk.Toolbar): # bad paul! this function was copied from sugar's activity.py via Write def _add_widget(self, widget, expand=False): - tool_item = gtk.ToolItem() + tool_item = Gtk.ToolItem() tool_item.set_expand(expand) tool_item.add(widget) diff --git a/develop-activity/logviewer.py b/develop-activity/logviewer.py index 73d3007..e63d686 100644 --- a/develop-activity/logviewer.py +++ b/develop-activity/logviewer.py @@ -22,8 +22,8 @@ import os.path import logging from gettext import gettext as _ -import gtk -import gio +from gi.repository import Gtk +from gi.repository import Gio import activity_model from sourceview_editor import TabLabel @@ -37,7 +37,7 @@ def _get_filename_from_path(path): return os.path.split(path)[-1] -class LogMinder(gtk.VBox): +class LogMinder(Gtk.VBox): def __init__(self, activity, namefilter, path=None, extra_files=None): self.activity = activity self._openlogs = [] @@ -61,18 +61,18 @@ class LogMinder(gtk.VBox): self._namefilter = namefilter # Creating Main treeview with Actitivities list - self._tv_menu = gtk.TreeView() + self._tv_menu = Gtk.TreeView() self._tv_menu.connect('cursor-changed', self._load_log) self._tv_menu.set_rules_hint(True) - cellrenderer = gtk.CellRendererText() - self.treecolumn = gtk.TreeViewColumn(_("Sugar logs"), cellrenderer, + cellrenderer = Gtk.CellRendererText() + self.treecolumn = Gtk.TreeViewColumn(_("Sugar logs"), cellrenderer, text=1) self._tv_menu.append_column(self.treecolumn) self._tv_menu.set_size_request(220, 900) # Create scrollbars around the tree view. - scrolled = gtk.ScrolledWindow() - scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrolled = Gtk.ScrolledWindow() + scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) scrolled.add(self._tv_menu) # the internals of the treeview @@ -91,14 +91,18 @@ class LogMinder(gtk.VBox): def _configure_watcher(self): logging.error('Monitor directory %s', self._logs_path) - dir_monitor = gio.File(self._logs_path).monitor_directory() + directory = Gio.File.new_for_path(self._logs_path) + dir_monitor = directory.monitor_directory( + flags=Gio.FileMonitorFlags.NONE, cancellable=None) dir_monitor.set_rate_limit(2000) dir_monitor.connect('changed', self._log_file_changed_cb) self._monitors.append(dir_monitor) for f in self._extra_files: logging.error('Monitor file %s', f) - file_monitor = gio.File(f).monitor_file() + gio_file = Gio.File.new_for_path(f) + file_monitor = gio_file.monitor_file( + Gio.FileMonitorFlags.NONE, None) file_monitor.set_rate_limit(2000) file_monitor.connect('changed', self._log_file_changed_cb) self._monitors.append(file_monitor) @@ -106,19 +110,22 @@ class LogMinder(gtk.VBox): def _log_file_changed_cb(self, monitor, path1, path2, event): _directory, logfile = os.path.split(str(path1)) - if event == gio.FILE_MONITOR_EVENT_CHANGED: + if event == Gio.FileMonitorEvent.CHANGED: for log in self._openlogs: if logfile in log.full_path: log.update() - elif (event == gio.FILE_MONITOR_EVENT_DELETED - or event == gio.FILE_MONITOR_EVENT_CREATED): + elif (event == Gio.FileMonitorEvent.DELETED + or event == Gio.FileMonitorEvent.CREATED): self._model.refresh() #If the log is open, just leave it that way # Load the log information in View (text_view) def _load_log(self, treeview): node = activity_model.get_selected_file(self._tv_menu) - print node + logging.error('_load_log node:%s', node) + if node is None: + return + path = node["path"] if os.path.isdir(path): @@ -135,9 +142,9 @@ class LogMinder(gtk.VBox): return newlogview = LogView(path, self) - scrollwnd = gtk.ScrolledWindow() - scrollwnd.set_policy(gtk.POLICY_AUTOMATIC, - gtk.POLICY_AUTOMATIC) + scrollwnd = Gtk.ScrolledWindow() + scrollwnd.set_policy(Gtk.PolicyType.AUTOMATIC, + Gtk.PolicyType.AUTOMATIC) scrollwnd.add(newlogview) scrollwnd.page = newlogview tablabel = TabLabel(newlogview, label=node["name"]) @@ -168,9 +175,9 @@ class LogMinder(gtk.VBox): logging.debug("_remove_logview failed") -class LogBuffer(gtk.TextBuffer): +class LogBuffer(Gtk.TextBuffer): def __init__(self, logfile, tagtable): - gtk.TextBuffer.__init__(self, table=tagtable) + GObject.GObject.__init__(self, table=tagtable) self._logfile = logfile self._pos = 0 @@ -193,23 +200,23 @@ class LogBuffer(gtk.TextBuffer): self._written = 0 -class LogView(gtk.TextView): +class LogView(Gtk.TextView): def __init__(self, full_path, logminder): - gtk.TextView.__init__(self) + GObject.GObject.__init__(self) self.logminder = logminder self.full_path = full_path self.logminder._openlogs.append(self) - self.set_wrap_mode(gtk.WRAP_WORD) + self.set_wrap_mode(Gtk.WrapMode.WORD) # Tags for search - tagtable = gtk.TextTagTable() - hilite_tag = gtk.TextTag('search-hilite') + tagtable = Gtk.TextTagTable() + hilite_tag = Gtk.TextTag('search-hilite') hilite_tag.props.background = '#FFFFB0' tagtable.add(hilite_tag) - select_tag = gtk.TextTag('search-select') + select_tag = Gtk.TextTag('search-select') select_tag.props.background = '#B0B0FF' tagtable.add(select_tag) @@ -219,8 +226,8 @@ class LogView(gtk.TextView): self.text_buffer = newbuffer # Set background color - bgcolor = gtk.gdk.color_parse("#EEEEEE") - self.modify_base(gtk.STATE_NORMAL, bgcolor) + bgcolor = Gdk.color_parse("#EEEEEE") + self.modify_base(Gtk.StateType.NORMAL, bgcolor) self.set_editable(False) diff --git a/develop-activity/new_activity.py b/develop-activity/new_activity.py index e939005..24f8a29 100644 --- a/develop-activity/new_activity.py +++ b/develop-activity/new_activity.py @@ -17,7 +17,7 @@ import os import shutil import logging -from sugar.activity import activity +from sugar3.activity import activity def class_template(name): diff --git a/develop-activity/setup.py b/develop-activity/setup.py index 530f97c..c60f4d0 100755 --- a/develop-activity/setup.py +++ b/develop-activity/setup.py @@ -16,6 +16,6 @@ # 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() diff --git a/develop-activity/sourceview_editor.py b/develop-activity/sourceview_editor.py index e29caed..5cbe828 100644 --- a/develop-activity/sourceview_editor.py +++ b/develop-activity/sourceview_editor.py @@ -15,10 +15,11 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging -import gtk -import gobject -import pango -import gtksourceview2 +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GObject +from gi.repository import Pango +from gi.repository import GtkSource import os.path import re import mimetypes @@ -31,20 +32,24 @@ class S_WHERE: selection, file, multifile = range(3) # an enum -class GtkSourceview2Editor(gtk.Notebook): +class GtkSourceview2Editor(Gtk.Notebook): __gsignals__ = { - 'changed': (gobject.SIGNAL_RUN_FIRST, None, []) + 'changed': (GObject.SignalFlags.RUN_FIRST, None, []) } def __init__(self, activity): - gtk.Notebook.__init__(self) + GObject.GObject.__init__(self) self.activity = activity - self.set_size_request(gtk.gdk.screen_width(), -1) + self.set_size_request(Gdk.Screen.width(), -1) self.connect('page-removed', self._page_removed_cb) self.connect('switch-page', self._switch_page_cb) def _page_removed_cb(self, __notebook, page, n): - page.page.remove() + try: + page.page.remove() + except: + pass + # the welcome page do not have a page property def _switch_page_cb(self, __notebook, page_gptr, page_num): self.activity.update_sidebar_to_page(self._get_page(page_num)) @@ -61,9 +66,9 @@ class GtkSourceview2Editor(gtk.Notebook): def load_object(self, full_path, filename): if self.set_to_page_like(full_path): return - scrollwnd = gtk.ScrolledWindow() - scrollwnd.set_policy(gtk.POLICY_AUTOMATIC, - gtk.POLICY_AUTOMATIC) + scrollwnd = Gtk.ScrolledWindow() + scrollwnd.set_policy(Gtk.PolicyType.AUTOMATIC, + Gtk.PolicyType.AUTOMATIC) page = GtkSourceview2Page(full_path) scrollwnd.add(page) @@ -120,13 +125,13 @@ class GtkSourceview2Editor(gtk.Notebook): def copy(self): page = self._get_page() if page: - clip = gtk.Clipboard() + clip = Gtk.Clipboard() page.get_buffer().copy_clipboard(clip) def paste(self): page = self._get_page() if page: - clip = gtk.Clipboard() + clip = Gtk.Clipboard() text = clip.wait_for_text() page.get_buffer().insert_at_cursor(text) @@ -216,13 +221,13 @@ class GtkSourceview2Editor(gtk.Notebook): page.scroll_to_iter(_iter, 0.0) -class GtkSourceview2Page(gtksourceview2.View): +class GtkSourceview2Page(GtkSource.View): def __init__(self, full_path): ''' Do any initialization here. ''' - gtksourceview2.View.__init__(self) + GtkSource.View.__init__(self) self.full_path = full_path @@ -233,21 +238,21 @@ class GtkSourceview2Page(gtksourceview2.View): self.set_insert_spaces_instead_of_tabs(True) # Tags for search - tagtable = gtk.TextTagTable() - hilite_tag = gtk.TextTag('search-hilite') + tagtable = Gtk.TextTagTable() + hilite_tag = Gtk.TextTag('search-hilite') hilite_tag.props.background = '#FFFFB0' tagtable.add(hilite_tag) - select_tag = gtk.TextTag('search-select') + select_tag = Gtk.TextTag('search-select') select_tag.props.background = '#B0B0FF' tagtable.add(select_tag) - self.text_buffer = gtksourceview2.Buffer(tag_table=tagtable) + self.text_buffer = GtkSource.Buffer(tag_table=tagtable) self.set_buffer(self.text_buffer) self.set_tab_width(4) self.set_auto_indent(True) - self.modify_font(pango.FontDescription('Monospace 10')) + self.modify_font(Pango.FontDescription('Monospace 10')) self.load_text() self.show() @@ -266,7 +271,7 @@ class GtkSourceview2Page(gtksourceview2.View): self.text_buffer.set_highlight_syntax(False) mime_type = mimetypes.guess_type(self.full_path)[0] if mime_type: - lang_manager = gtksourceview2.language_manager_get_default() + lang_manager = GtkSource.LanguageManager.get_default() lang_ids = lang_manager.get_language_ids() langs = [lang_manager.get_language(i) for i in lang_ids] for lang in langs: diff --git a/develop-activity/symbols_tree.py b/develop-activity/symbols_tree.py index 939debf..28ba503 100644 --- a/develop-activity/symbols_tree.py +++ b/develop-activity/symbols_tree.py @@ -14,30 +14,31 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gtk -import gobject +from gi.repository import Gtk +from gi.repository import GdkPixbuf +from gi.repository import GObject -class SymbolsTree(gtk.TreeView): +class SymbolsTree(Gtk.TreeView): - __gsignals__ = {'symbol-selected': (gobject.SIGNAL_RUN_FIRST, None, [int])} + __gsignals__ = {'symbol-selected': (GObject.SignalFlags.RUN_FIRST, None, [int])} def __init__(self): - gtk.TreeView.__init__(self) + GObject.GObject.__init__(self) - self._model = gtk.TreeStore(gtk.gdk.Pixbuf, str, str) + self._model = Gtk.TreeStore(GdkPixbuf.Pixbuf, str, str) self.set_model(self._model) - column = gtk.TreeViewColumn('Symbols') - icon_cell = gtk.CellRendererPixbuf() + column = Gtk.TreeViewColumn('Symbols') + icon_cell = Gtk.CellRendererPixbuf() column.pack_start(icon_cell, False) column.add_attribute(icon_cell, 'pixbuf', 0) - name_cell = gtk.CellRendererText() + name_cell = Gtk.CellRendererText() column.pack_start(name_cell, True) column.add_attribute(name_cell, 'text', 1) - line_cell = gtk.CellRendererText() + line_cell = Gtk.CellRendererText() line_cell.props.visible = False column.pack_start(line_cell, False) column.add_attribute(line_cell, 'text', 2) @@ -46,18 +47,18 @@ class SymbolsTree(gtk.TreeView): self.connect('cursor-changed', self._symbol_selected_cb) def _add_class(self, name, line): - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size('icons/class.png', 24, + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size('icons/class.png', 24, 24) parent = self._model.append(None, (pixbuf, name, line)) return parent def _add_method(self, name, line, parent=None): - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size('icons/function.png', + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size('icons/function.png', 24, 24) self._model.append(parent, (pixbuf, name, line)) def _add_attribute(self, name, line, parent=None): - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size('icons/attribute.png', + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size('icons/attribute.png', 24, 24) self._model.append(parent, (pixbuf, name, line)) diff --git a/develop-activity/widgets.py b/develop-activity/widgets.py index 4e7da2e..f7556c8 100644 --- a/develop-activity/widgets.py +++ b/develop-activity/widgets.py @@ -17,37 +17,37 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gtk -import gobject +from gi.repository import Gtk +from gi.repository import GObject -from sugar.graphics.icon import Icon +from sugar3.graphics.icon import Icon -class TabLabel(gtk.HBox): +class TabLabel(Gtk.HBox): __gtype_name__ = 'BrowseTabLabel' __gsignals__ = { - 'tab-close': (gobject.SIGNAL_RUN_FIRST, + 'tab-close': (GObject.SignalFlags.RUN_FIRST, None, ([object])), } def __init__(self, child, label=""): - gtk.HBox.__init__(self) + GObject.GObject.__init__(self) self._child = child - self._label = gtk.Label(label) + self._label = Gtk.Label(label=label) self._label.set_alignment(0, 0.5) self.pack_start(self._label, True, True, 0) self._label.show() - self.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0, 0, 1)) + self.modify_base(Gtk.StateType.NORMAL, Gdk.Color(0, 0, 0, 1)) close_tab_icon = Icon(icon_name='close-tab') - button = gtk.Button() - button.props.relief = gtk.RELIEF_NONE + button = Gtk.Button() + button.props.relief = Gtk.ReliefStyle.NONE button.props.focus_on_click = False - icon_box = gtk.HBox() + icon_box = Gtk.HBox() icon_box.pack_start(close_tab_icon, True, False, 0) button.add(icon_box) button.connect('clicked', self.__button_clicked_cb) |