Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2014-02-07 20:01:55 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-02-07 20:01:55 (GMT)
commitb327e97c6ea57f9c80f2ae9988241ccb785488af (patch)
treee14474832a4895b2acc313a0ac2d2e1230f49222
parent3c07857331ecfc54efec9f32f7d796713b2cab8f (diff)
Initial port to gtk3. Starts, but can't open a activity
-rw-r--r--develop-activity/activity_model.py13
-rw-r--r--develop-activity/develop_app.py152
-rw-r--r--develop-activity/logviewer.py61
-rw-r--r--develop-activity/new_activity.py2
-rwxr-xr-xdevelop-activity/setup.py2
-rw-r--r--develop-activity/sourceview_editor.py49
-rw-r--r--develop-activity/symbols_tree.py27
-rw-r--r--develop-activity/widgets.py22
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)