Run pygi-convert.sh for automatic conversion from GTK2 to GTK3 + pygi.

This is only on a best-effort basis; the code will be in a broken state after
this patch and need to be fixed manually.

The purpose of committing the intermediate, non-working output is to make it
reproducible. It's impractical to manually review the changes.

The exact version used was 4f637212f13b197a95c824967a58496b9e3b877c from the
main pygobject repository [1] plus a custom patch [2] that hasn't been sent
upstream yet.

[1] git://git.gnome.org/pygobject
[2] https://sascha.silbe.org/patches/pygobject-convert-sugar-20111122.patch

Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
master
Sascha Silbe 13 years ago committed by Simon Schampijer
parent aed295ec4e
commit 820efa56b9

@ -1,4 +1,4 @@
import gtk from gi.repository import Gtk
from sugar3.graphics.radiopalette import RadioPalette, RadioMenuButton, \ from sugar3.graphics.radiopalette import RadioPalette, RadioMenuButton, \
RadioToolsButton RadioToolsButton
@ -6,16 +6,16 @@ from sugar3.graphics.radiotoolbutton import RadioToolButton
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics import style from sugar3.graphics import style
window = gtk.Window() window = Gtk.Window()
box = gtk.VBox() box = Gtk.VBox()
window.add(box) window.add(box)
toolbar = gtk.Toolbar() toolbar = Gtk.Toolbar()
box.pack_start(toolbar, False) box.pack_start(toolbar, False)
text_view = gtk.TextView() text_view = Gtk.TextView()
box.pack_start(text_view) box.pack_start(text_view, True, True, 0)
def echo(button, label): def echo(button, label):
@ -72,4 +72,4 @@ button = RadioToolsButton(palette=palette)
toolbar.insert(button, -1) toolbar.insert(button, -1)
window.show_all() window.show_all()
gtk.main() Gtk.main()

@ -1,41 +1,41 @@
import gtk from gi.repository import Gtk
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics.toolbarbox import ToolbarBox, ToolbarButton from sugar3.graphics.toolbarbox import ToolbarBox, ToolbarButton
from sugar3.graphics import style from sugar3.graphics import style
window = gtk.Window() window = Gtk.Window()
box = gtk.VBox() box = Gtk.VBox()
window.add(box) window.add(box)
toolbar = ToolbarBox() toolbar = ToolbarBox()
box.pack_start(toolbar, False) box.pack_start(toolbar, False)
tollbarbutton_1 = ToolbarButton( tollbarbutton_1 = ToolbarButton(
page=gtk.Button('sub-widget #1'), page=Gtk.Button('sub-widget #1'),
icon_name='computer-xo') icon_name='computer-xo')
toolbar.toolbar.insert(tollbarbutton_1, -1) toolbar.toolbar.insert(tollbarbutton_1, -1)
tollbarbutton_2 = ToolbarButton( tollbarbutton_2 = ToolbarButton(
page=gtk.Button('sub-widget #2'), page=Gtk.Button('sub-widget #2'),
icon_name='button_cancel', icon_name='button_cancel',
tooltip='with custom palette instead of sub-widget') tooltip='with custom palette instead of sub-widget')
toolbar.toolbar.insert(tollbarbutton_2, -1) toolbar.toolbar.insert(tollbarbutton_2, -1)
toolbar.toolbar.insert(gtk.SeparatorToolItem(), -1) toolbar.toolbar.insert(Gtk.SeparatorToolItem(), -1)
def del_cb(widget): def del_cb(widget):
toolbar.toolbar.remove(tollbarbutton_3) toolbar.toolbar.remove(tollbarbutton_3)
del_b = gtk.Button('delete sub-widget #3') del_b = Gtk.Button('delete sub-widget #3')
del_b.connect('clicked', del_cb) del_b.connect('clicked', del_cb)
tollbarbutton_3 = ToolbarButton( tollbarbutton_3 = ToolbarButton(
page=del_b, page=del_b,
icon_name='activity-journal') icon_name='activity-journal')
toolbar.toolbar.insert(tollbarbutton_3, -1) toolbar.toolbar.insert(tollbarbutton_3, -1)
subbar = gtk.Toolbar() subbar = Gtk.Toolbar()
subbutton = ToolButton( subbutton = ToolButton(
icon_name='document-send', icon_name='document-send',
tooltip='document-send') tooltip='document-send')
@ -48,4 +48,4 @@ tollbarbutton_4 = ToolbarButton(
toolbar.toolbar.insert(tollbarbutton_4, -1) toolbar.toolbar.insert(tollbarbutton_4, -1)
window.show_all() window.show_all()
gtk.main() Gtk.main()

@ -55,9 +55,9 @@ import time
from hashlib import sha1 from hashlib import sha1
from functools import partial from functools import partial
import gconf from gi.repository import GConf
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
import dbus import dbus
import dbus.service import dbus.service
from dbus import PROPERTIES_IFACE from dbus import PROPERTIES_IFACE
@ -100,15 +100,15 @@ J_DBUS_INTERFACE = 'org.laptop.Journal'
CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties' CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
class _ActivitySession(gobject.GObject): class _ActivitySession(GObject.GObject):
__gsignals__ = { __gsignals__ = {
'quit-requested': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'quit-requested': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'quit': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'quit': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._xsmp_client = XSMPClient() self._xsmp_client = XSMPClient()
self._xsmp_client.connect('quit-requested', self._xsmp_client.connect('quit-requested',
@ -127,7 +127,7 @@ class _ActivitySession(gobject.GObject):
if len(self._activities) == 0: if len(self._activities) == 0:
logging.debug('Quitting the activity process.') logging.debug('Quitting the activity process.')
gtk.main_quit() Gtk.main_quit()
def will_quit(self, activity, will_quit): def will_quit(self, activity, will_quit):
if will_quit: if will_quit:
@ -150,7 +150,7 @@ class _ActivitySession(gobject.GObject):
self.emit('quit') self.emit('quit')
class Activity(Window, gtk.Container): class Activity(Window, Gtk.Container):
"""This is the base Activity class that all other Activities derive from. """This is the base Activity class that all other Activities derive from.
This is where your activity starts. This is where your activity starts.
@ -204,8 +204,8 @@ class Activity(Window, gtk.Container):
Finaly, your Activity will very likely need some activity specific Finaly, your Activity will very likely need some activity specific
buttons and options you can create your own toolbars by deriving a buttons and options you can create your own toolbars by deriving a
class from gtk.Toolbar: class from Gtk.Toolbar:
class MySpecialToolbar(gtk.Toolbar): class MySpecialToolbar(Gtk.Toolbar):
... ...
4. Use your creativity. Make your Activity something special and share 4. Use your creativity. Make your Activity something special and share
@ -221,11 +221,11 @@ class Activity(Window, gtk.Container):
__gtype_name__ = 'SugarActivity' __gtype_name__ = 'SugarActivity'
__gsignals__ = { __gsignals__ = {
'shared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'shared': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'joined': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'joined': (GObject.SignalFlags.RUN_FIRST, None, ([])),
# For internal use only, use can_close() if you want to perform extra # For internal use only, use can_close() if you want to perform extra
# checks before actually closing # checks before actually closing
'_closing': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), '_closing': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self, handle, create_jobject=True): def __init__(self, handle, create_jobject=True):
@ -248,7 +248,7 @@ class Activity(Window, gtk.Container):
Connects our "destroy" message to our _destroy_cb Connects our "destroy" message to our _destroy_cb
method. method.
Creates a base gtk.Window within this window. Creates a base Gtk.Window within this window.
Creates an ActivityService (self._bus) servicing Creates an ActivityService (self._bus) servicing
this application. this application.
@ -265,7 +265,7 @@ class Activity(Window, gtk.Container):
# screen. Would be better if it was the shell to do this, but we # screen. Would be better if it was the shell to do this, but we
# haven't found yet a good way to do it there. See #1263. # haven't found yet a good way to do it there. See #1263.
self.connect('window-state-event', self.__window_state_event_cb) self.connect('window-state-event', self.__window_state_event_cb)
screen = gtk.gdk.screen_get_default() screen = Gdk.Screen.get_default()
screen.connect('size-changed', self.__screen_size_changed_cb) screen.connect('size-changed', self.__screen_size_changed_cb)
self._adapt_window_to_screen() self._adapt_window_to_screen()
@ -298,7 +298,7 @@ class Activity(Window, gtk.Container):
self.__session_quit_requested_cb) self.__session_quit_requested_cb)
self._session.connect('quit', self.__session_quit_cb) self._session.connect('quit', self.__session_quit_cb)
accel_group = gtk.AccelGroup() accel_group = Gtk.AccelGroup()
self.set_data('sugar-accel-group', accel_group) self.set_data('sugar-accel-group', accel_group)
self.add_accel_group(accel_group) self.add_accel_group(accel_group)
@ -321,7 +321,7 @@ class Activity(Window, gtk.Container):
self._jobject = self._initialize_journal_object() self._jobject = self._initialize_journal_object()
if handle.invited: if handle.invited:
wait_loop = gobject.MainLoop() wait_loop = GObject.MainLoop()
self._client_handler = _ClientHandler( self._client_handler = _ClientHandler(
self.get_bundle_id(), self.get_bundle_id(),
partial(self.__got_channel_cb, wait_loop)) partial(self.__got_channel_cb, wait_loop))
@ -350,7 +350,7 @@ class Activity(Window, gtk.Container):
def _initialize_journal_object(self): def _initialize_journal_object(self):
title = _('%s Activity') % get_bundle_name() title = _('%s Activity') % get_bundle_name()
client = gconf.client_get_default() client = GConf.Client.get_default()
icon_color = client.get_string('/desktop/sugar/user/color') icon_color = client.get_string('/desktop/sugar/user/color')
jobject = datastore.create() jobject = datastore.create()
@ -433,7 +433,7 @@ class Activity(Window, gtk.Container):
if not self._active and self._jobject: if not self._active and self._jobject:
self.save() self.save()
active = gobject.property( active = GObject.property(
type=bool, default=False, getter=get_active, setter=set_active) type=bool, default=False, getter=get_active, setter=set_active)
def get_max_participants(self): def get_max_participants(self):
@ -442,7 +442,7 @@ class Activity(Window, gtk.Container):
def set_max_participants(self, participants): def set_max_participants(self, participants):
self._max_participants = participants self._max_participants = participants
max_participants = gobject.property( max_participants = GObject.property(
type=int, default=0, getter=get_max_participants, type=int, default=0, getter=get_max_participants,
setter=set_max_participants) setter=set_max_participants)
@ -468,7 +468,7 @@ class Activity(Window, gtk.Container):
"""Sets the 'work area' of your activity with the canvas of your """Sets the 'work area' of your activity with the canvas of your
choice. choice.
One commonly used canvas is gtk.ScrolledWindow One commonly used canvas is Gtk.ScrolledWindow
""" """
Window.set_canvas(self, canvas) Window.set_canvas(self, canvas)
if not self._read_file_called: if not self._read_file_called:
@ -483,7 +483,7 @@ class Activity(Window, gtk.Container):
self.move(0, 0) self.move(0, 0)
def _adapt_window_to_screen(self): def _adapt_window_to_screen(self):
screen = gtk.gdk.screen_get_default() screen = Gdk.Screen.get_default()
self.set_geometry_hints(None, self.set_geometry_hints(None,
screen.get_width(), screen.get_height(), screen.get_width(), screen.get_height(),
screen.get_width(), screen.get_height(), screen.get_width(), screen.get_height(),
@ -615,11 +615,11 @@ class Activity(Window, gtk.Container):
pixmap = self.canvas.get_snapshot((-1, -1, 0, 0)) pixmap = self.canvas.get_snapshot((-1, -1, 0, 0))
width, height = pixmap.get_size() width, height = pixmap.get_size()
pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 0, 8, width, height) pixbuf = GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB, 0, 8, width, height)
pixbuf = pixbuf.get_from_drawable(pixmap, pixmap.get_colormap(), pixbuf = pixbuf.get_from_drawable(pixmap, pixmap.get_colormap(),
0, 0, 0, 0, width, height) 0, 0, 0, 0, width, height)
pixbuf = pixbuf.scale_simple(style.zoom(300), style.zoom(225), pixbuf = pixbuf.scale_simple(style.zoom(300), style.zoom(225),
gtk.gdk.INTERP_BILINEAR) GdkPixbuf.InterpType.BILINEAR)
preview_data = [] preview_data = []
@ -814,10 +814,10 @@ class Activity(Window, gtk.Container):
alert.props.msg = _('Keep error: all changes will be lost') alert.props.msg = _('Keep error: all changes will be lost')
cancel_icon = Icon(icon_name='dialog-cancel') cancel_icon = Icon(icon_name='dialog-cancel')
alert.add_button(gtk.RESPONSE_CANCEL, _('Don\'t stop'), cancel_icon) alert.add_button(Gtk.ResponseType.CANCEL, _('Don\'t stop'), cancel_icon)
stop_icon = Icon(icon_name='dialog-ok') stop_icon = Icon(icon_name='dialog-ok')
alert.add_button(gtk.RESPONSE_OK, _('Stop anyway'), stop_icon) alert.add_button(Gtk.ResponseType.OK, _('Stop anyway'), stop_icon)
self.add_alert(alert) self.add_alert(alert)
alert.connect('response', self._keep_failed_dialog_response_cb) alert.connect('response', self._keep_failed_dialog_response_cb)
@ -826,7 +826,7 @@ class Activity(Window, gtk.Container):
def _keep_failed_dialog_response_cb(self, alert, response_id): def _keep_failed_dialog_response_cb(self, alert, response_id):
self.remove_alert(alert) self.remove_alert(alert)
if response_id == gtk.RESPONSE_OK: if response_id == Gtk.ResponseType.OK:
self.close(skip_save=True) self.close(skip_save=True)
if self._quit_requested: if self._quit_requested:
self._session.will_quit(self, True) self._session.will_quit(self, True)

@ -26,7 +26,7 @@ import logging
import uuid import uuid
import dbus import dbus
import gobject from gi.repository import GObject
from sugar3.activity.activityhandle import ActivityHandle from sugar3.activity.activityhandle import ActivityHandle
from sugar3 import util from sugar3 import util
@ -148,7 +148,7 @@ def open_log_file(activity):
raise e raise e
class ActivityCreationHandler(gobject.GObject): class ActivityCreationHandler(GObject.GObject):
"""Sugar-side activity creation interface """Sugar-side activity creation interface
This object uses a dbus method on the ActivityFactory This object uses a dbus method on the ActivityFactory
@ -182,7 +182,7 @@ class ActivityCreationHandler(gobject.GObject):
If the file '/etc/olpc-security' exists, then activity launching If the file '/etc/olpc-security' exists, then activity launching
will be delegated to the prototype 'Rainbow' security service. will be delegated to the prototype 'Rainbow' security service.
""" """
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._bundle = bundle self._bundle = bundle
self._service_name = bundle.get_bundle_id() self._service_name = bundle.get_bundle_id()
@ -258,7 +258,7 @@ class ActivityCreationHandler(gobject.GObject):
stdout=log_file.fileno(), stdout=log_file.fileno(),
stderr=log_file.fileno()) stderr=log_file.fileno())
gobject.child_watch_add(child.pid, GObject.child_watch_add(child.pid,
_child_watch_cb, _child_watch_cb,
(environment_dir, log_file, (environment_dir, log_file,
self._handle.activity_id)) self._handle.activity_id))

@ -17,7 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gconf from gi.repository import GConf
from gettext import gettext from gettext import gettext
import locale import locale
@ -135,7 +135,7 @@ def get_locale_path(bundle_id):
if 'SUGAR_LOCALEDIR' in os.environ: if 'SUGAR_LOCALEDIR' in os.environ:
candidate_dirs[os.environ['SUGAR_LOCALEDIR']] = 2 candidate_dirs[os.environ['SUGAR_LOCALEDIR']] = 2
gconf_client = gconf.client_get_default() gconf_client = GConf.Client.get_default()
package_dir = gconf_client.get_string('/desktop/sugar/i18n/langpackdir') package_dir = gconf_client.get_string('/desktop/sugar/i18n/langpackdir')
if package_dir is not None and package_dir is not '': if package_dir is not None and package_dir is not '':
candidate_dirs[package_dir] = 1 candidate_dirs[package_dir] = 1

@ -18,10 +18,10 @@
import gettext import gettext
import os import os
import gio from gi.repository import Gio
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
import gconf from gi.repository import GConf
from sugar3.graphics import style from sugar3.graphics import style
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
@ -40,7 +40,7 @@ def _get_icon_name(metadata):
mime_type = metadata.get('mime_type', '') mime_type = metadata.get('mime_type', '')
if not file_name and mime_type: if not file_name and mime_type:
icons = gio.content_type_get_icon(mime_type) icons = Gio.content_type_get_icon(mime_type)
for icon_name in icons.props.names: for icon_name in icons.props.names:
file_name = get_icon_file_name(icon_name) file_name = get_icon_file_name(icon_name)
if file_name is not None: if file_name is not None:
@ -52,30 +52,30 @@ def _get_icon_name(metadata):
return file_name return file_name
class NamingToolbar(gtk.Toolbar): class NamingToolbar(Gtk.Toolbar):
""" Toolbar of the naming alert """ Toolbar of the naming alert
""" """
__gtype_name__ = 'SugarNamingToolbar' __gtype_name__ = 'SugarNamingToolbar'
__gsignals__ = { __gsignals__ = {
'keep-clicked': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'keep-clicked': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self): def __init__(self):
gtk.Toolbar.__init__(self) Gtk.Toolbar.__init__(self)
client = gconf.client_get_default() client = GConf.Client.get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color')) color = XoColor(client.get_string('/desktop/sugar/user/color'))
icon = Icon() icon = Icon()
icon.set_from_icon_name('activity-journal', icon.set_from_icon_name('activity-journal',
gtk.ICON_SIZE_LARGE_TOOLBAR) Gtk.IconSize.LARGE_TOOLBAR)
icon.props.xo_color = color icon.props.xo_color = color
self._add_widget(icon) self._add_widget(icon)
self._add_separator() self._add_separator()
self._title = gtk.Label(_('Name this entry')) self._title = Gtk.Label(label=_('Name this entry'))
self._add_widget(self._title) self._add_widget(self._title)
self._add_separator(True) self._add_separator(True)
@ -87,7 +87,7 @@ class NamingToolbar(gtk.Toolbar):
self._keep_button.show() self._keep_button.show()
def _add_separator(self, expand=False): def _add_separator(self, expand=False):
separator = gtk.SeparatorToolItem() separator = Gtk.SeparatorToolItem()
separator.props.draw = False separator.props.draw = False
if expand: if expand:
separator.set_expand(True) separator.set_expand(True)
@ -97,7 +97,7 @@ class NamingToolbar(gtk.Toolbar):
separator.show() separator.show()
def _add_widget(self, widget, expand=False): def _add_widget(self, widget, expand=False):
tool_item = gtk.ToolItem() tool_item = Gtk.ToolItem()
tool_item.set_expand(expand) tool_item.set_expand(expand)
tool_item.add(widget) tool_item.add(widget)
@ -110,11 +110,11 @@ class NamingToolbar(gtk.Toolbar):
self.emit('keep-clicked') self.emit('keep-clicked')
class FavoriteIcon(gtk.ToggleButton): class FavoriteIcon(Gtk.ToggleButton):
def __init__(self): def __init__(self):
gtk.ToggleButton.__init__(self) GObject.GObject.__init__(self)
self.set_relief(gtk.RELIEF_NONE) self.set_relief(Gtk.ReliefStyle.NONE)
self.set_focus_on_click(False) self.set_focus_on_click(False)
self._icon = Icon(icon_name='emblem-favorite', self._icon = Icon(icon_name='emblem-favorite',
@ -127,7 +127,7 @@ class FavoriteIcon(gtk.ToggleButton):
def __toggled_cb(self, widget): def __toggled_cb(self, widget):
if self.get_active(): if self.get_active():
client = gconf.client_get_default() client = GConf.Client.get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color')) color = XoColor(client.get_string('/desktop/sugar/user/color'))
self._icon.props.xo_color = color self._icon.props.xo_color = color
else: else:
@ -143,12 +143,12 @@ class FavoriteIcon(gtk.ToggleButton):
self._icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg() self._icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
class NamingAlert(gtk.Window): class NamingAlert(Gtk.Window):
__gtype_name__ = 'SugarNamingAlert' __gtype_name__ = 'SugarNamingAlert'
def __init__(self, activity, bundle_path): def __init__(self, activity, bundle_path):
gtk.Window.__init__(self) GObject.GObject.__init__(self)
self._bundle_path = bundle_path self._bundle_path = bundle_path
self._favorite_icon = None self._favorite_icon = None
@ -156,16 +156,16 @@ class NamingAlert(gtk.Window):
self._description = None self._description = None
self._tags = None self._tags = None
accel_group = gtk.AccelGroup() accel_group = Gtk.AccelGroup()
self.set_data('sugar-accel-group', accel_group) self.set_data('sugar-accel-group', accel_group)
self.add_accel_group(accel_group) self.add_accel_group(accel_group)
self.set_border_width(style.LINE_WIDTH) self.set_border_width(style.LINE_WIDTH)
offset = style.GRID_CELL_SIZE offset = style.GRID_CELL_SIZE
width = gtk.gdk.screen_width() - offset * 2 width = Gdk.Screen.width() - offset * 2
height = gtk.gdk.screen_height() - offset * 2 height = Gdk.Screen.height() - offset * 2
self.set_size_request(width, height) self.set_size_request(width, height)
self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
self.set_decorated(False) self.set_decorated(False)
self.set_resizable(False) self.set_resizable(False)
self.set_modal(True) self.set_modal(True)
@ -173,7 +173,7 @@ class NamingAlert(gtk.Window):
self._activity = activity self._activity = activity
vbox = gtk.VBox() vbox = Gtk.VBox()
self.add(vbox) self.add(vbox)
vbox.show() vbox.show()
@ -189,23 +189,23 @@ class NamingAlert(gtk.Window):
self._title.grab_focus() self._title.grab_focus()
def _create_body(self): def _create_body(self):
body = gtk.VBox(spacing=style.DEFAULT_SPACING) body = Gtk.VBox(spacing=style.DEFAULT_SPACING)
body.set_border_width(style.DEFAULT_SPACING * 3) body.set_border_width(style.DEFAULT_SPACING * 3)
header = self._create_header() header = self._create_header()
body.pack_start(header, False, False, style.DEFAULT_PADDING) body.pack_start(header, False, False, style.DEFAULT_PADDING)
body.pack_start(self._create_separator(style.DEFAULT_SPACING), False, False, 0) body.pack_start(self._create_separator(style.DEFAULT_SPACING, True, True, 0), False, False, 0)
body.pack_start(self._create_label(_('Description:')), False, False, 0) body.pack_start(self._create_label(_('Description:', True, True, 0)), False, False, 0)
description = self._activity.metadata.get('description', '') description = self._activity.metadata.get('description', '')
description_box, self._description = self._create_text_view(description) description_box, self._description = self._create_text_view(description)
body.pack_start(description_box, True, True, 0) body.pack_start(description_box, True, True, 0)
body.pack_start(self._create_separator(style.DEFAULT_PADDING), False, False, 0) body.pack_start(self._create_separator(style.DEFAULT_PADDING, True, True, 0), False, False, 0)
body.pack_start(self._create_label(_('Tags:')), False, False, 0) body.pack_start(self._create_label(_('Tags:', True, True, 0)), False, False, 0)
tags = self._activity.metadata.get('tags', '') tags = self._activity.metadata.get('tags', '')
tags_box, self._tags = self._create_text_view(tags) tags_box, self._tags = self._create_text_view(tags)
@ -215,29 +215,29 @@ class NamingAlert(gtk.Window):
return body return body
def _create_label(self, text): def _create_label(self, text):
text = gtk.Label(text) text = Gtk.Label(label=text)
text.set_alignment(0, 0.5) text.set_alignment(0, 0.5)
text.modify_fg(gtk.STATE_NORMAL, text.modify_fg(Gtk.StateType.NORMAL,
style.COLOR_BUTTON_GREY.get_gdk_color()) style.COLOR_BUTTON_GREY.get_gdk_color())
return text return text
def _create_separator(self, height): def _create_separator(self, height):
separator = gtk.HSeparator() separator = Gtk.HSeparator()
separator.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) separator.modify_bg(Gtk.StateType.NORMAL, style.COLOR_WHITE.get_gdk_color())
separator.set_size_request(-1, height) separator.set_size_request(-1, height)
return separator return separator
def _create_header(self): def _create_header(self):
header = gtk.HBox(spacing=style.DEFAULT_SPACING) header = Gtk.HBox(spacing=style.DEFAULT_SPACING)
self._favorite_icon = FavoriteIcon() self._favorite_icon = FavoriteIcon()
header.pack_start(self._favorite_icon, expand=False) header.pack_start(self._favorite_icon, False, True, 0)
entry_icon = self._create_entry_icon() entry_icon = self._create_entry_icon()
header.pack_start(entry_icon, expand=False) header.pack_start(entry_icon, False, True, 0)
self._title = self._create_title() self._title = self._create_title()
header.pack_start(self._title, expand=True) header.pack_start(self._title, True, True, 0)
return header return header
@ -251,26 +251,26 @@ class NamingAlert(gtk.Window):
else: else:
activity_bundle = ActivityBundle(self._bundle_path) activity_bundle = ActivityBundle(self._bundle_path)
file_name = activity_bundle.get_icon() file_name = activity_bundle.get_icon()
entry_icon = Icon(file=file_name, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) entry_icon = Icon(file=file_name, icon_size=Gtk.IconSize.LARGE_TOOLBAR)
if self._activity.metadata.get('icon-color'): if self._activity.metadata.get('icon-color'):
entry_icon.props.xo_color = XoColor( \ entry_icon.props.xo_color = XoColor( \
self._activity.metadata['icon-color']) self._activity.metadata['icon-color'])
return entry_icon return entry_icon
def _create_title(self): def _create_title(self):
title = gtk.Entry() title = Gtk.Entry()
title.set_text(self._activity.metadata.get('title', _('Untitled'))) title.set_text(self._activity.metadata.get('title', _('Untitled')))
return title return title
def _create_text_view(self, text): def _create_text_view(self, text):
scrolled_window = gtk.ScrolledWindow() scrolled_window = Gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scrolled_window.set_border_width(style.LINE_WIDTH) scrolled_window.set_border_width(style.LINE_WIDTH)
scrolled_window.set_shadow_type(gtk.SHADOW_IN) scrolled_window.set_shadow_type(Gtk.ShadowType.IN)
text_view = gtk.TextView() text_view = Gtk.TextView()
text_view.set_left_margin(style.DEFAULT_PADDING) text_view.set_left_margin(style.DEFAULT_PADDING)
text_view.set_wrap_mode(gtk.WRAP_WORD_CHAR) text_view.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
text_view.set_accepts_tab(False) text_view.set_accepts_tab(False)
text_view.get_buffer().set_text(text) text_view.get_buffer().set_text(text)
scrolled_window.add(text_view) scrolled_window.add(text_view)
@ -278,7 +278,7 @@ class NamingAlert(gtk.Window):
return scrolled_window, text_view return scrolled_window, text_view
def __realize_cb(self, widget): def __realize_cb(self, widget):
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
self.window.set_accept_focus(True) self.window.set_accept_focus(True)
def __keep_cb(self, widget): def __keep_cb(self, widget):

@ -15,10 +15,10 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
from gtk import gdk from gi.repository import Gdk
import gtk from gi.repository import Gtk
import gettext import gettext
import gconf from gi.repository import GConf
import logging import logging
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
@ -38,7 +38,7 @@ def _create_activity_icon(metadata):
if metadata is not None and metadata.get('icon-color'): if metadata is not None and metadata.get('icon-color'):
color = XoColor(metadata['icon-color']) color = XoColor(metadata['icon-color'])
else: else:
client = gconf.client_get_default() client = GConf.Client.get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color')) color = XoColor(client.get_string('/desktop/sugar/user/color'))
from sugar3.activity.activity import get_bundle_path from sugar3.activity.activity import get_bundle_path
@ -173,7 +173,7 @@ class KeepButton(ToolButton):
self.props.tooltip = _('Keep') self.props.tooltip = _('Keep')
self.props.accelerator = '<Ctrl>S' self.props.accelerator = '<Ctrl>S'
client = gconf.client_get_default() client = GConf.Client.get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color')) color = XoColor(client.get_string('/desktop/sugar/user/color'))
keep_icon = Icon(icon_name='document-save', xo_color=color) keep_icon = Icon(icon_name='document-save', xo_color=color)
keep_icon.show() keep_icon.show()
@ -185,14 +185,14 @@ class KeepButton(ToolButton):
activity.copy() activity.copy()
class TitleEntry(gtk.ToolItem): class TitleEntry(Gtk.ToolItem):
def __init__(self, activity, **kwargs): def __init__(self, activity, **kwargs):
gtk.ToolItem.__init__(self) Gtk.ToolItem.__init__(self)
self.set_expand(False) self.set_expand(False)
self.entry = gtk.Entry(**kwargs) self.entry = Gtk.Entry(**kwargs)
self.entry.set_size_request(int(gtk.gdk.screen_width() / 3), -1) self.entry.set_size_request(int(Gdk.Screen.width() / 3), -1)
self.entry.set_text(activity.metadata['title']) self.entry.set_text(activity.metadata['title'])
self.entry.connect('focus-out-event', self.__title_changed_cb, activity) self.entry.connect('focus-out-event', self.__title_changed_cb, activity)
self.entry.show() self.entry.show()
@ -202,11 +202,11 @@ class TitleEntry(gtk.ToolItem):
activity.connect('_closing', self.__closing_cb) activity.connect('_closing', self.__closing_cb)
def modify_bg(self, state, color): def modify_bg(self, state, color):
gtk.ToolItem.modify_bg(self, state, color) Gtk.ToolItem.modify_bg(self, state, color)
self.entry.modify_bg(state, color) self.entry.modify_bg(state, color)
def __jobject_updated_cb(self, jobject): def __jobject_updated_cb(self, jobject):
if self.entry.flags() & gtk.HAS_FOCUS: if self.entry.has_focus():
return return
if self.entry.get_text() == jobject['title']: if self.entry.get_text() == jobject['title']:
return return
@ -236,7 +236,7 @@ class TitleEntry(gtk.ToolItem):
shared_activity.props.name = title shared_activity.props.name = title
class ActivityToolbar(gtk.Toolbar): class ActivityToolbar(Gtk.Toolbar):
"""The Activity toolbar with the Journal entry title, sharing """The Activity toolbar with the Journal entry title, sharing
and Stop buttons and Stop buttons
@ -245,7 +245,7 @@ class ActivityToolbar(gtk.Toolbar):
""" """
def __init__(self, activity, orientation_left=False): def __init__(self, activity, orientation_left=False):
gtk.Toolbar.__init__(self) Gtk.Toolbar.__init__(self)
self._activity = activity self._activity = activity
@ -256,7 +256,7 @@ class ActivityToolbar(gtk.Toolbar):
self.title = title_button.entry self.title = title_button.entry
if orientation_left == False: if orientation_left == False:
separator = gtk.SeparatorToolItem() separator = Gtk.SeparatorToolItem()
separator.props.draw = False separator.props.draw = False
separator.set_expand(True) separator.set_expand(True)
self.insert(separator, -1) self.insert(separator, -1)
@ -274,7 +274,7 @@ class ActivityToolbar(gtk.Toolbar):
self.stop.show() self.stop.show()
class EditToolbar(gtk.Toolbar): class EditToolbar(Gtk.Toolbar):
"""Provides the standard edit toolbar for Activities. """Provides the standard edit toolbar for Activities.
Members: Members:
@ -309,7 +309,7 @@ class EditToolbar(gtk.Toolbar):
""" """
def __init__(self): def __init__(self):
gtk.Toolbar.__init__(self) Gtk.Toolbar.__init__(self)
self.undo = UndoButton() self.undo = UndoButton()
self.insert(self.undo, -1) self.insert(self.undo, -1)
@ -319,7 +319,7 @@ class EditToolbar(gtk.Toolbar):
self.insert(self.redo, -1) self.insert(self.redo, -1)
self.redo.show() self.redo.show()
self.separator = gtk.SeparatorToolItem() self.separator = Gtk.SeparatorToolItem()
self.separator.set_draw(True) self.separator.set_draw(True)
self.insert(self.separator, -1) self.insert(self.separator, -1)
self.separator.show() self.separator.show()

@ -25,9 +25,9 @@ import time
from datetime import datetime from datetime import datetime
import os import os
import tempfile import tempfile
import gobject from gi.repository import GObject
import gconf from gi.repository import GConf
import gio from gi.repository import Gio
import dbus import dbus
import dbus.glib import dbus.glib
@ -77,14 +77,14 @@ updated = dispatch.Signal()
_get_data_store() _get_data_store()
class DSMetadata(gobject.GObject): class DSMetadata(GObject.GObject):
"""A representation of the metadata associated with a DS entry.""" """A representation of the metadata associated with a DS entry."""
__gsignals__ = { __gsignals__ = {
'updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'updated': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self, properties=None): def __init__(self, properties=None):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
if not properties: if not properties:
self._properties = {} self._properties = {}
else: else:
@ -226,12 +226,12 @@ class RawObject(object):
def __init__(self, file_path): def __init__(self, file_path):
stat = os.stat(file_path) stat = os.stat(file_path)
client = gconf.client_get_default() client = GConf.Client.get_default()
metadata = { metadata = {
'uid': file_path, 'uid': file_path,
'title': os.path.basename(file_path), 'title': os.path.basename(file_path),
'timestamp': stat.st_mtime, 'timestamp': stat.st_mtime,
'mime_type': gio.content_type_guess(filename=file_path), 'mime_type': Gio.content_type_guess(filename=file_path),
'activity': '', 'activity': '',
'activity_id': '', 'activity_id': '',
'icon-color': client.get_string('/desktop/sugar/user/color'), 'icon-color': client.get_string('/desktop/sugar/user/color'),

@ -47,9 +47,9 @@ STABLE.
import gettext import gettext
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
import pango from gi.repository import Pango
import math import math
from sugar3.graphics import style from sugar3.graphics import style
@ -59,7 +59,7 @@ from sugar3.graphics.icon import Icon
_ = lambda msg: gettext.dgettext('sugar-toolkit', msg) _ = lambda msg: gettext.dgettext('sugar-toolkit', msg)
class Alert(gtk.EventBox): class Alert(Gtk.EventBox):
""" """
UI interface for Alerts UI interface for Alerts
@ -81,13 +81,13 @@ class Alert(gtk.EventBox):
__gtype_name__ = 'SugarAlert' __gtype_name__ = 'SugarAlert'
__gsignals__ = { __gsignals__ = {
'response': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([object])), 'response': (GObject.SignalFlags.RUN_FIRST, None, ([object])),
} }
__gproperties__ = { __gproperties__ = {
'title': (str, None, None, None, gobject.PARAM_READWRITE), 'title': (str, None, None, None, GObject.PARAM_READWRITE),
'msg': (str, None, None, None, gobject.PARAM_READWRITE), 'msg': (str, None, None, None, GObject.PARAM_READWRITE),
'icon': (object, None, None, gobject.PARAM_WRITABLE), 'icon': (object, None, None, GObject.PARAM_WRITABLE),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
@ -97,26 +97,26 @@ class Alert(gtk.EventBox):
self._icon = None self._icon = None
self._buttons = {} self._buttons = {}
self._hbox = gtk.HBox() self._hbox = Gtk.HBox()
self._hbox.set_border_width(style.DEFAULT_SPACING) self._hbox.set_border_width(style.DEFAULT_SPACING)
self._hbox.set_spacing(style.DEFAULT_SPACING) self._hbox.set_spacing(style.DEFAULT_SPACING)
self._msg_box = gtk.VBox() self._msg_box = Gtk.VBox()
self._title_label = gtk.Label() self._title_label = Gtk.Label()
self._title_label.set_alignment(0, 0.5) self._title_label.set_alignment(0, 0.5)
self._msg_box.pack_start(self._title_label, False, False, 0) self._msg_box.pack_start(self._title_label, False, False, 0)
self._msg_label = gtk.Label() self._msg_label = Gtk.Label()
self._msg_label.set_alignment(0, 0.5) self._msg_label.set_alignment(0, 0.5)
self._msg_box.pack_start(self._msg_label, False, False, 0) self._msg_box.pack_start(self._msg_label, False, False, 0)
self._hbox.pack_start(self._msg_box, False, False, 0) self._hbox.pack_start(self._msg_box, False, False, 0)
self._buttons_box = gtk.HButtonBox() self._buttons_box = Gtk.HButtonBox()
self._buttons_box.set_layout(gtk.BUTTONBOX_END) self._buttons_box.set_layout(Gtk.ButtonBoxStyle.END)
self._buttons_box.set_spacing(style.DEFAULT_SPACING) self._buttons_box.set_spacing(style.DEFAULT_SPACING)
self._hbox.pack_start(self._buttons_box) self._hbox.pack_start(self._buttons_box, True, True, 0)
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
self.set_visible_window(True) self.set_visible_window(True)
self.add(self._hbox) self.add(self._hbox)
@ -189,22 +189,22 @@ class Alert(gtk.EventBox):
that will occure right to the buttom that will occure right to the buttom
icon : icon :
this can be a SugarIcon or a gtk.Image this can be a SugarIcon or a Gtk.Image
postion : postion :
the position of the button in the box (optional) the position of the button in the box (optional)
Returns Returns
------- -------
button :gtk.Button button :Gtk.Button
""" """
button = gtk.Button() button = Gtk.Button()
self._buttons[response_id] = button self._buttons[response_id] = button
if icon is not None: if icon is not None:
button.set_image(icon) button.set_image(icon)
button.set_label(label) button.set_label(label)
self._buttons_box.pack_start(button) self._buttons_box.pack_start(button, True, True, 0)
button.show() button.show()
button.connect('clicked', self.__button_clicked_cb, response_id) button.connect('clicked', self.__button_clicked_cb, response_id)
if position != -1: if position != -1:
@ -245,8 +245,8 @@ class ConfirmationAlert(Alert):
A confirmation alert is a nice shortcut from a standard Alert because it A confirmation alert is a nice shortcut from a standard Alert because it
comes with 'OK' and 'Cancel' buttons already built-in. When clicked, the comes with 'OK' and 'Cancel' buttons already built-in. When clicked, the
'OK' button will emit a response with a response_id of gtk.RESPONSE_OK, 'OK' button will emit a response with a response_id of Gtk.ResponseType.OK,
while the 'Cancel' button will emit gtk.RESPONSE_CANCEL. while the 'Cancel' button will emit Gtk.ResponseType.CANCEL.
Examples Examples
-------- --------
@ -273,9 +273,9 @@ class ConfirmationAlert(Alert):
self.remove_alert(alert) self.remove_alert(alert)
#Do any work that is specific to the type of button clicked. #Do any work that is specific to the type of button clicked.
if response_id is gtk.RESPONSE_OK: if response_id is Gtk.ResponseType.OK:
print 'Ok Button was clicked. Do any work upon ok here ...' print 'Ok Button was clicked. Do any work upon ok here ...'
elif response_id is gtk.RESPONSE_CANCEL: elif response_id is Gtk.ResponseType.CANCEL:
print 'Cancel Button was clicked.' print 'Cancel Button was clicked.'
""" """
@ -284,11 +284,11 @@ class ConfirmationAlert(Alert):
Alert.__init__(self, **kwargs) Alert.__init__(self, **kwargs)
icon = Icon(icon_name='dialog-cancel') icon = Icon(icon_name='dialog-cancel')
self.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon) self.add_button(Gtk.ResponseType.CANCEL, _('Cancel'), icon)
icon.show() icon.show()
icon = Icon(icon_name='dialog-ok') icon = Icon(icon_name='dialog-ok')
self.add_button(gtk.RESPONSE_OK, _('Ok'), icon) self.add_button(Gtk.ResponseType.OK, _('Ok'), icon)
icon.show() icon.show()
@ -298,7 +298,7 @@ class ErrorAlert(Alert):
An error alert is a nice shortcut from a standard Alert because it An error alert is a nice shortcut from a standard Alert because it
comes with the 'OK' button already built-in. When clicked, the comes with the 'OK' button already built-in. When clicked, the
'OK' button will emit a response with a response_id of gtk.RESPONSE_OK. 'OK' button will emit a response with a response_id of Gtk.ResponseType.OK.
Examples Examples
-------- --------
@ -325,7 +325,7 @@ class ErrorAlert(Alert):
self.remove_alert(alert) self.remove_alert(alert)
#Do any work that is specific to the response_id. #Do any work that is specific to the response_id.
if response_id is gtk.RESPONSE_OK: if response_id is Gtk.ResponseType.OK:
print 'Ok Button was clicked. Do any work upon ok here ...' print 'Ok Button was clicked. Do any work upon ok here ...'
""" """
@ -334,33 +334,33 @@ class ErrorAlert(Alert):
Alert.__init__(self, **kwargs) Alert.__init__(self, **kwargs)
icon = Icon(icon_name='dialog-ok') icon = Icon(icon_name='dialog-ok')
self.add_button(gtk.RESPONSE_OK, _('Ok'), icon) self.add_button(Gtk.ResponseType.OK, _('Ok'), icon)
icon.show() icon.show()
class _TimeoutIcon(gtk.Alignment): class _TimeoutIcon(Gtk.Alignment):
__gtype_name__ = 'SugarTimeoutIcon' __gtype_name__ = 'SugarTimeoutIcon'
def __init__(self): def __init__(self):
gtk.Alignment.__init__(self, 0, 0, 1, 1) GObject.GObject.__init__(self, 0, 0, 1, 1)
self.set_app_paintable(True) self.set_app_paintable(True)
self._text = gtk.Label() self._text = Gtk.Label()
self._text.set_alignment(0.5, 0.5) self._text.set_alignment(0.5, 0.5)
attrlist = pango.AttrList() attrlist = Pango.AttrList()
attrlist.insert(pango.AttrWeight(pango.WEIGHT_BOLD)) attrlist.insert(Pango.AttrWeight(Pango.Weight.BOLD))
self._text.set_attributes(attrlist) self._text.set_attributes(attrlist)
self.add(self._text) self.add(self._text)
self._text.show() self._text.show()
self.connect("expose_event", self.__expose_cb) self.connect("expose_event", self.__expose_cb)
def __expose_cb(self, widget, event): def __expose_cb(self, widget, event):
context = widget.window.cairo_create() context = widget.get_window().cairo_create()
self._draw(context) self._draw(context)
return False return False
def do_size_request(self, requisition): def do_size_request(self, requisition):
requisition.height, requisition.width = \ requisition.height, requisition.width = \
gtk.icon_size_lookup(gtk.ICON_SIZE_BUTTON) Gtk.icon_size_lookup(Gtk.IconSize.BUTTON)
self._text.size_request() self._text.size_request()
def _draw(self, context): def _draw(self, context):
@ -410,9 +410,9 @@ class TimeoutAlert(Alert):
self.remove_alert(alert) self.remove_alert(alert)
#Do any work that is specific to the type of button clicked. #Do any work that is specific to the type of button clicked.
if response_id is gtk.RESPONSE_OK: if response_id is Gtk.ResponseType.OK:
print 'Ok Button was clicked. Do any work upon ok here ...' print 'Ok Button was clicked. Do any work upon ok here ...'
elif response_id is gtk.RESPONSE_CANCEL: elif response_id is Gtk.ResponseType.CANCEL:
print 'Cancel Button was clicked.' print 'Cancel Button was clicked.'
elif response_id == -1: elif response_id == -1:
print 'Timout occurred' print 'Timout occurred'
@ -425,21 +425,21 @@ class TimeoutAlert(Alert):
self._timeout = timeout self._timeout = timeout
icon = Icon(icon_name='dialog-cancel') icon = Icon(icon_name='dialog-cancel')
self.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon) self.add_button(Gtk.ResponseType.CANCEL, _('Cancel'), icon)
icon.show() icon.show()
self._timeout_text = _TimeoutIcon() self._timeout_text = _TimeoutIcon()
self._timeout_text.set_text(self._timeout) self._timeout_text.set_text(self._timeout)
self.add_button(gtk.RESPONSE_OK, _('Continue'), self._timeout_text) self.add_button(Gtk.ResponseType.OK, _('Continue'), self._timeout_text)
self._timeout_text.show() self._timeout_text.show()
gobject.timeout_add_seconds(1, self.__timeout) GObject.timeout_add_seconds(1, self.__timeout)
def __timeout(self): def __timeout(self):
self._timeout -= 1 self._timeout -= 1
self._timeout_text.set_text(self._timeout) self._timeout_text.set_text(self._timeout)
if self._timeout == 0: if self._timeout == 0:
self._response(gtk.RESPONSE_OK) self._response(Gtk.ResponseType.OK)
return False return False
return True return True
@ -475,15 +475,15 @@ class NotifyAlert(Alert):
self._timeout_text = _TimeoutIcon() self._timeout_text = _TimeoutIcon()
self._timeout_text.set_text(self._timeout) self._timeout_text.set_text(self._timeout)
self.add_button(gtk.RESPONSE_OK, _('Ok'), self._timeout_text) self.add_button(Gtk.ResponseType.OK, _('Ok'), self._timeout_text)
self._timeout_text.show() self._timeout_text.show()
gobject.timeout_add(1000, self.__timeout) GObject.timeout_add(1000, self.__timeout)
def __timeout(self): def __timeout(self):
self._timeout -= 1 self._timeout -= 1
self._timeout_text.set_text(self._timeout) self._timeout_text.set_text(self._timeout)
if self._timeout == 0: if self._timeout == 0:
self._response(gtk.RESPONSE_OK) self._response(Gtk.ResponseType.OK)
return False return False
return True return True

@ -21,20 +21,20 @@ STABLE.
import time import time
import gobject from gi.repository import GObject
EASE_OUT_EXPO = 0 EASE_OUT_EXPO = 0
EASE_IN_EXPO = 1 EASE_IN_EXPO = 1
class Animator(gobject.GObject): class Animator(GObject.GObject):
__gsignals__ = { __gsignals__ = {
'completed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'completed': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self, duration, fps=20, easing=EASE_OUT_EXPO): def __init__(self, duration, fps=20, easing=EASE_OUT_EXPO):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._animations = [] self._animations = []
self._duration = duration self._duration = duration
self._interval = 1.0 / fps self._interval = 1.0 / fps
@ -80,7 +80,7 @@ class Animator(gobject.GObject):
self.stop() self.stop()
self._start_time = time.time() self._start_time = time.time()
self._timeout_sid = gobject.timeout_add( self._timeout_sid = GObject.timeout_add(
int(self._interval * 1000), self._next_frame_cb) int(self._interval * 1000), self._next_frame_cb)
def stop(self): def stop(self):
@ -95,7 +95,7 @@ class Animator(gobject.GObject):
""" """
if self._timeout_sid: if self._timeout_sid:
gobject.source_remove(self._timeout_sid) GObject.source_remove(self._timeout_sid)
self._timeout_sid = 0 self._timeout_sid = 0
self.emit('completed') self.emit('completed')

@ -17,8 +17,8 @@
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gettext import gettext
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
import struct import struct
import logging import logging
@ -35,8 +35,8 @@ def get_svg_color_string(color):
color.blue / 257) color.blue / 257)
class _ColorButton(gtk.Button): class _ColorButton(Gtk.Button):
"""This is a ColorButton for Sugar. It is similar to the gtk.ColorButton, """This is a ColorButton for Sugar. It is similar to the Gtk.ColorButton,
but does not have any alpha support. but does not have any alpha support.
Instead of a color selector dialog it will pop up a Sugar palette. Instead of a color selector dialog it will pop up a Sugar palette.
@ -45,37 +45,37 @@ class _ColorButton(gtk.Button):
""" """
__gtype_name__ = 'SugarColorButton' __gtype_name__ = 'SugarColorButton'
__gsignals__ = {'color-set': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._title = _('Choose a color') self._title = _('Choose a color')
self._color = gtk.gdk.Color(0, 0, 0) self._color = Gdk.Color(0, 0, 0)
self._has_palette = True self._has_palette = True
self._has_invoker = True self._has_invoker = True
self._palette = None self._palette = None
self._accept_drag = True self._accept_drag = True
self._preview = Icon(icon_name='color-preview', self._preview = Icon(icon_name='color-preview',
icon_size=gtk.ICON_SIZE_BUTTON) icon_size=Gtk.IconSize.BUTTON)
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
if self._accept_drag: if self._accept_drag:
self.drag_dest_set(gtk.DEST_DEFAULT_MOTION | Gtk.drag_dest_set(self, Gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT | Gtk.DEST_DEFAULT_HIGHLIGHT |
gtk.DEST_DEFAULT_DROP, Gtk.DEST_DEFAULT_DROP,
[('application/x-color', 0, 0)], [('application/x-color', 0, 0)],
gtk.gdk.ACTION_COPY) Gdk.DragAction.COPY)
self.drag_source_set(gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, self.drag_source_set(Gdk.EventMask.BUTTON1_MASK | Gdk.EventMask.BUTTON3_MASK,
[('application/x-color', 0, 0)], [('application/x-color', 0, 0)],
gtk.gdk.ACTION_COPY) Gdk.DragAction.COPY)
self.connect('drag_data_received', self.__drag_data_received_cb) self.connect('drag_data_received', self.__drag_data_received_cb)
self.connect('drag_data_get', self.__drag_data_get_cb) self.connect('drag_data_get', self.__drag_data_get_cb)
self._preview.fill_color = get_svg_color_string(self._color) self._preview.fill_color = get_svg_color_string(self._color)
self._preview.stroke_color = \ self._preview.stroke_color = \
get_svg_color_string(self.style.fg[gtk.STATE_NORMAL]) get_svg_color_string(self.style.fg[Gtk.StateType.NORMAL])
self.set_image(self._preview) self.set_image(self._preview)
if self._has_palette and self._has_invoker: if self._has_palette and self._has_invoker:
@ -102,7 +102,7 @@ class _ColorButton(gtk.Button):
def do_style_set(self, previous_style): def do_style_set(self, previous_style):
self._preview.stroke_color = \ self._preview.stroke_color = \
get_svg_color_string(self.style.fg[gtk.STATE_NORMAL]) get_svg_color_string(self.style.fg[Gtk.StateType.NORMAL])
def do_clicked(self): def do_clicked(self):
if self._palette: if self._palette:
@ -114,14 +114,14 @@ class _ColorButton(gtk.Button):
return True return True
def set_color(self, color): def set_color(self, color):
assert isinstance(color, gtk.gdk.Color) assert isinstance(color, Gdk.Color)
if self._color.red == color.red and \ if self._color.red == color.red and \
self._color.green == color.green and \ self._color.green == color.green and \
self._color.blue == color.blue: self._color.blue == color.blue:
return return
self._color = gtk.gdk.Color(color.red, color.green, color.blue) self._color = Gdk.Color(color.red, color.green, color.blue)
self._preview.fill_color = get_svg_color_string(self._color) self._preview.fill_color = get_svg_color_string(self._color)
if self._palette: if self._palette:
self._palette.props.color = self._color self._palette.props.color = self._color
@ -130,7 +130,7 @@ class _ColorButton(gtk.Button):
def get_color(self): def get_color(self):
return self._color return self._color
color = gobject.property(type=object, getter=get_color, setter=set_color) color = GObject.property(type=object, getter=get_color, setter=set_color)
def set_icon_name(self, icon_name): def set_icon_name(self, icon_name):
self._preview.props.icon_name = icon_name self._preview.props.icon_name = icon_name
@ -138,7 +138,7 @@ class _ColorButton(gtk.Button):
def get_icon_name(self): def get_icon_name(self):
return self._preview.props.icon_name return self._preview.props.icon_name
icon_name = gobject.property(type=str, icon_name = GObject.property(type=str,
getter=get_icon_name, setter=set_icon_name) getter=get_icon_name, setter=set_icon_name)
def set_icon_size(self, icon_size): def set_icon_size(self, icon_size):
@ -147,7 +147,7 @@ class _ColorButton(gtk.Button):
def get_icon_size(self): def get_icon_size(self):
return self._preview.props.icon_size return self._preview.props.icon_size
icon_size = gobject.property(type=int, icon_size = GObject.property(type=int,
getter=get_icon_size, setter=set_icon_size) getter=get_icon_size, setter=set_icon_size)
def set_title(self, title): def set_title(self, title):
@ -158,7 +158,7 @@ class _ColorButton(gtk.Button):
def get_title(self): def get_title(self):
return self._title return self._title
title = gobject.property(type=str, getter=get_title, setter=set_title) title = GObject.property(type=str, getter=get_title, setter=set_title)
def _set_has_invoker(self, has_invoker): def _set_has_invoker(self, has_invoker):
self._has_invoker = has_invoker self._has_invoker = has_invoker
@ -166,9 +166,9 @@ class _ColorButton(gtk.Button):
def _get_has_invoker(self): def _get_has_invoker(self):
return self._has_invoker return self._has_invoker
has_invoker = gobject.property(type=bool, default=True, has_invoker = GObject.property(type=bool, default=True,
flags=gobject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
gobject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_has_invoker, getter=_get_has_invoker,
setter=_set_has_invoker) setter=_set_has_invoker)
@ -178,9 +178,9 @@ class _ColorButton(gtk.Button):
def _get_has_palette(self): def _get_has_palette(self):
return self._has_palette return self._has_palette
has_palette = gobject.property(type=bool, default=True, has_palette = GObject.property(type=bool, default=True,
flags=gobject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
gobject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_has_palette, getter=_get_has_palette,
setter=_set_has_palette) setter=_set_has_palette)
@ -190,15 +190,15 @@ class _ColorButton(gtk.Button):
def _get_accept_drag(self): def _get_accept_drag(self):
return self._accept_drag return self._accept_drag
accept_drag = gobject.property(type=bool, default=True, accept_drag = GObject.property(type=bool, default=True,
flags=gobject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
gobject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_accept_drag, getter=_get_accept_drag,
setter=_set_accept_drag) setter=_set_accept_drag)
def __drag_begin_cb(self, widget, context): def __drag_begin_cb(self, widget, context):
# Drag and Drop # Drag and Drop
pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, pixbuf = GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB, True, 8,
style.SMALL_ICON_SIZE, style.SMALL_ICON_SIZE,
style.SMALL_ICON_SIZE) style.SMALL_ICON_SIZE)
@ -226,7 +226,7 @@ class _ColorButton(gtk.Button):
blue = struct.unpack_from('=H', dropped, 4)[0] blue = struct.unpack_from('=H', dropped, 4)[0]
# dropped[6] and dropped[7] is alpha, but we ignore the alpha channel # dropped[6] and dropped[7] is alpha, but we ignore the alpha channel
color = gtk.gdk.Color(red, green, blue) color = Gdk.Color(red, green, blue)
self.set_color(color) self.set_color(color)
@ -242,11 +242,11 @@ class _ColorPalette(Palette):
# The color-set signal is emitted when the user is finished selecting # The color-set signal is emitted when the user is finished selecting
# a color. # a color.
__gsignals__ = {'color-set': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._color = gtk.gdk.Color(0, 0, 0) self._color = Gdk.Color(0, 0, 0)
self._previous_color = self._color.copy() self._previous_color = self._color.copy()
self._scales = None self._scales = None
@ -255,16 +255,16 @@ class _ColorPalette(Palette):
self.connect('popup', self.__popup_cb) self.connect('popup', self.__popup_cb)
self.connect('popdown', self.__popdown_cb) self.connect('popdown', self.__popdown_cb)
self._picker_hbox = gtk.HBox() self._picker_hbox = Gtk.HBox()
self.set_content(self._picker_hbox) self.set_content(self._picker_hbox)
self._swatch_tray = gtk.Table() self._swatch_tray = Gtk.Table()
self._picker_hbox.pack_start(self._swatch_tray) self._picker_hbox.pack_start(self._swatch_tray, True, True, 0)
self._picker_hbox.pack_start(gtk.VSeparator(), self._picker_hbox.pack_start(Gtk.VSeparator(, True, True, 0),
padding=style.DEFAULT_SPACING) padding=style.DEFAULT_SPACING)
self._chooser_table = gtk.Table(3, 2) self._chooser_table = Gtk.Table(3, 2)
self._chooser_table.set_col_spacing(0, style.DEFAULT_PADDING) self._chooser_table.set_col_spacing(0, style.DEFAULT_PADDING)
self._scales = [] self._scales = []
@ -282,9 +282,9 @@ class _ColorPalette(Palette):
self._build_swatches() self._build_swatches()
def _create_color_scale(self, text, color, row): def _create_color_scale(self, text, color, row):
label = gtk.Label(text) label = Gtk.Label(label=text)
label.props.xalign = 1.0 label.props.xalign = 1.0
scale = gtk.HScale() scale = Gtk.HScale()
scale.set_size_request(style.zoom(250), -1) scale.set_size_request(style.zoom(250), -1)
scale.set_draw_value(False) scale.set_draw_value(False)
scale.set_range(0, 1.0) scale.set_range(0, 1.0)
@ -322,10 +322,10 @@ class _ColorPalette(Palette):
self._swatch_tray.props.n_columns = (len(colors) + rows - 1) / rows self._swatch_tray.props.n_columns = (len(colors) + rows - 1) / rows
for color in colors: for color in colors:
button = _ColorButton(has_palette=False, button = _ColorButton(has_palette=False,
color=gtk.gdk.color_parse(color), color=Gdk.color_parse(color),
accept_drag=False, accept_drag=False,
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon_size=Gtk.IconSize.LARGE_TOOLBAR)
button.set_relief(gtk.RELIEF_NONE) button.set_relief(Gtk.ReliefStyle.NONE)
self._swatch_tray.attach(button, self._swatch_tray.attach(button,
i % rows, i % rows + 1, i % rows, i % rows + 1,
i / rows, i / rows + 1, i / rows, i / rows + 1,
@ -352,11 +352,11 @@ class _ColorPalette(Palette):
self.color = new_color self.color = new_color
def do_key_press_event(self, event): def do_key_press_event(self, event):
if event.keyval == gtk.keysyms.Escape: if event.keyval == Gdk.KEY_Escape:
self.props.color = self._previous_color self.props.color = self._previous_color
self.popdown(immediate=True) self.popdown(immediate=True)
return True return True
elif event.keyval == gtk.keysyms.Return: elif event.keyval == Gdk.KEY_Return:
self.popdown(immediate=True) self.popdown(immediate=True)
return True return True
return False return False
@ -365,7 +365,7 @@ class _ColorPalette(Palette):
self.props.color = button.get_color() self.props.color = button.get_color()
def set_color(self, color): def set_color(self, color):
assert isinstance(color, gtk.gdk.Color) assert isinstance(color, Gdk.Color)
if self._color.red == color.red and \ if self._color.red == color.red and \
self._color.green == color.green and \ self._color.green == color.green and \
@ -384,26 +384,26 @@ class _ColorPalette(Palette):
def get_color(self): def get_color(self):
return self._color return self._color
color = gobject.property(type=object, getter=get_color, setter=set_color) color = GObject.property(type=object, getter=get_color, setter=set_color)
def _add_accelerator(tool_button): def _add_accelerator(tool_button):
if not tool_button.props.accelerator or not tool_button.get_toplevel() or \ if not tool_button.props.accelerator or not tool_button.get_toplevel() or \
not tool_button.child: not tool_button.get_child():
return return
# TODO: should we remove the accelerator from the prev top level? # TODO: should we remove the accelerator from the prev top level?
accel_group = tool_button.get_toplevel().get_data('sugar-accel-group') accel_group = tool_button.get_toplevel().get_data('sugar-accel-group')
if not accel_group: if not accel_group:
logging.warning('No gtk.AccelGroup in the top level window.') logging.warning('No Gtk.AccelGroup in the top level window.')
return return
keyval, mask = gtk.accelerator_parse(tool_button.props.accelerator) keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator)
# the accelerator needs to be set at the child, so the gtk.AccelLabel # the accelerator needs to be set at the child, so the Gtk.AccelLabel
# in the palette can pick it up. # in the palette can pick it up.
tool_button.child.add_accelerator('clicked', accel_group, keyval, mask, tool_button.get_child().add_accelerator('clicked', accel_group, keyval, mask,
gtk.ACCEL_LOCKED | gtk.ACCEL_VISIBLE) Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE)
def _hierarchy_changed_cb(tool_button, previous_toplevel): def _hierarchy_changed_cb(tool_button, previous_toplevel):
@ -415,13 +415,13 @@ def setup_accelerator(tool_button):
tool_button.connect('hierarchy-changed', _hierarchy_changed_cb) tool_button.connect('hierarchy-changed', _hierarchy_changed_cb)
class ColorToolButton(gtk.ToolItem): class ColorToolButton(Gtk.ToolItem):
# This not ideal. It would be better to subclass gtk.ToolButton, however # This not ideal. It would be better to subclass Gtk.ToolButton, however
# the python bindings do not seem to be powerfull enough for that. # the python bindings do not seem to be powerfull enough for that.
# (As we need to change a variable in the class structure.) # (As we need to change a variable in the class structure.)
__gtype_name__ = 'SugarColorToolButton' __gtype_name__ = 'SugarColorToolButton'
__gsignals__ = {'color-set': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, icon_name='color-preview', **kwargs): def __init__(self, icon_name='color-preview', **kwargs):
@ -430,16 +430,16 @@ class ColorToolButton(gtk.ToolItem):
self._palette_invoker = ToolInvoker() self._palette_invoker = ToolInvoker()
self._palette = None self._palette = None
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
# The gtk.ToolButton has already added a normal button. # The Gtk.ToolButton has already added a normal button.
# Replace it with a ColorButton # Replace it with a ColorButton
color_button = _ColorButton(icon_name=icon_name, has_invoker=False) color_button = _ColorButton(icon_name=icon_name, has_invoker=False)
self.add(color_button) self.add(color_button)
# The following is so that the behaviour on the toolbar is correct. # The following is so that the behaviour on the toolbar is correct.
color_button.set_relief(gtk.RELIEF_NONE) color_button.set_relief(Gtk.ReliefStyle.NONE)
color_button.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR color_button.icon_size = Gtk.IconSize.LARGE_TOOLBAR
self._palette_invoker.attach_tool(self) self._palette_invoker.attach_tool(self)
@ -463,7 +463,7 @@ class ColorToolButton(gtk.ToolItem):
def get_accelerator(self): def get_accelerator(self):
return self._accelerator return self._accelerator
accelerator = gobject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def create_palette(self): def create_palette(self):
@ -477,7 +477,7 @@ class ColorToolButton(gtk.ToolItem):
self._palette_invoker.detach() self._palette_invoker.detach()
self._palette_invoker = palette_invoker self._palette_invoker = palette_invoker
palette_invoker = gobject.property( palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker) type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def set_color(self, color): def set_color(self, color):
@ -486,7 +486,7 @@ class ColorToolButton(gtk.ToolItem):
def get_color(self): def get_color(self):
return self.get_child().props.color return self.get_child().props.color
color = gobject.property(type=object, getter=get_color, setter=set_color) color = GObject.property(type=object, getter=get_color, setter=set_color)
def set_icon_name(self, icon_name): def set_icon_name(self, icon_name):
self.get_child().props.icon_name = icon_name self.get_child().props.icon_name = icon_name
@ -494,7 +494,7 @@ class ColorToolButton(gtk.ToolItem):
def get_icon_name(self): def get_icon_name(self):
return self.get_child().props.icon_name return self.get_child().props.icon_name
icon_name = gobject.property(type=str, icon_name = GObject.property(type=str,
getter=get_icon_name, setter=set_icon_name) getter=get_icon_name, setter=set_icon_name)
def set_icon_size(self, icon_size): def set_icon_size(self, icon_size):
@ -503,7 +503,7 @@ class ColorToolButton(gtk.ToolItem):
def get_icon_size(self): def get_icon_size(self):
return self.get_child().props.icon_size return self.get_child().props.icon_size
icon_size = gobject.property(type=int, icon_size = GObject.property(type=int,
getter=get_icon_size, setter=set_icon_size) getter=get_icon_size, setter=set_icon_size)
def set_title(self, title): def set_title(self, title):
@ -512,7 +512,7 @@ class ColorToolButton(gtk.ToolItem):
def get_title(self): def get_title(self):
return self.get_child().props.title return self.get_child().props.title
title = gobject.property(type=str, getter=get_title, setter=set_title) title = GObject.property(type=str, getter=get_title, setter=set_title)
def do_expose_event(self, event): def do_expose_event(self, event):
child = self.get_child() child = self.get_child()
@ -520,14 +520,14 @@ class ColorToolButton(gtk.ToolItem):
if self._palette and self._palette.is_up(): if self._palette and self._palette.is_up():
invoker = self._palette.props.invoker invoker = self._palette.props.invoker
invoker.draw_rectangle(event, self._palette) invoker.draw_rectangle(event, self._palette)
elif child.state == gtk.STATE_PRELIGHT: elif child.state == Gtk.StateType.PRELIGHT:
child.style.paint_box(event.window, gtk.STATE_PRELIGHT, child.style.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_NONE, event.area, Gtk.ShadowType.NONE, event.area,
child, 'toolbutton-prelight', child, 'toolbutton-prelight',
allocation.x, allocation.y, allocation.x, allocation.y,
allocation.width, allocation.height) allocation.width, allocation.height)
gtk.ToolButton.do_expose_event(self, event) Gtk.ToolButton.do_expose_event(self, event)
def __notify_change(self, widget, pspec): def __notify_change(self, widget, pspec):
self.notify(pspec.name) self.notify(pspec.name)

@ -19,24 +19,24 @@
STABLE. STABLE.
""" """
import gobject from gi.repository import GObject
import gtk from gi.repository import Gtk
class ComboBox(gtk.ComboBox): class ComboBox(Gtk.ComboBox):
__gtype_name__ = 'SugarComboBox' __gtype_name__ = 'SugarComboBox'
def __init__(self): def __init__(self):
gtk.ComboBox.__init__(self) GObject.GObject.__init__(self)
self._text_renderer = None self._text_renderer = None
self._icon_renderer = None self._icon_renderer = None
self._model = gtk.ListStore(gobject.TYPE_PYOBJECT, self._model = Gtk.ListStore(GObject.TYPE_PYOBJECT,
gobject.TYPE_STRING, GObject.TYPE_STRING,
gtk.gdk.Pixbuf, GdkPixbuf.Pixbuf,
gobject.TYPE_BOOLEAN) GObject.TYPE_BOOLEAN)
self.set_model(self._model) self.set_model(self._model)
self.set_row_separator_func(self._is_separator, None) self.set_row_separator_func(self._is_separator, None)
@ -57,12 +57,12 @@ class ComboBox(gtk.ComboBox):
return None return None
return row[0] return row[0]
value = gobject.property( value = GObject.property(
type=object, getter=get_value, setter=None) type=object, getter=get_value, setter=None)
def _get_real_name_from_theme(self, name, size): def _get_real_name_from_theme(self, name, size):
icon_theme = gtk.icon_theme_get_default() icon_theme = Gtk.IconTheme.get_default()
width, height = gtk.icon_size_lookup(size) width, height = Gtk.icon_size_lookup(size)
info = icon_theme.lookup_icon(name, max(width, height), 0) info = icon_theme.lookup_icon(name, max(width, height), 0)
if not info: if not info:
raise ValueError('Icon %r not found.' % name) raise ValueError('Icon %r not found.' % name)
@ -88,32 +88,32 @@ class ComboBox(gtk.ComboBox):
""" """
if not self._icon_renderer and (icon_name or file_name): if not self._icon_renderer and (icon_name or file_name):
self._icon_renderer = gtk.CellRendererPixbuf() self._icon_renderer = Gtk.CellRendererPixbuf()
settings = self.get_settings() settings = self.get_settings()
w, h = gtk.icon_size_lookup_for_settings( w, h = Gtk.icon_size_lookup_for_settings(
settings, gtk.ICON_SIZE_MENU) settings, Gtk.IconSize.MENU)
self._icon_renderer.props.stock_size = max(w, h) self._icon_renderer.props.stock_size = max(w, h)
self.pack_start(self._icon_renderer, False) self.pack_start(self._icon_renderer, False)
self.add_attribute(self._icon_renderer, 'pixbuf', 2) self.add_attribute(self._icon_renderer, 'pixbuf', 2)
if not self._text_renderer and text: if not self._text_renderer and text:
self._text_renderer = gtk.CellRendererText() self._text_renderer = Gtk.CellRendererText()
self.pack_end(self._text_renderer, True) self.pack_end(self._text_renderer, True)
self.add_attribute(self._text_renderer, 'text', 1) self.add_attribute(self._text_renderer, 'text', 1)
if icon_name or file_name: if icon_name or file_name:
if text: if text:
size = gtk.ICON_SIZE_MENU size = Gtk.IconSize.MENU
else: else:
size = gtk.ICON_SIZE_LARGE_TOOLBAR size = Gtk.IconSize.LARGE_TOOLBAR
width, height = gtk.icon_size_lookup(size) width, height = Gtk.icon_size_lookup(size)
if icon_name: if icon_name:
file_name = self._get_real_name_from_theme(icon_name, size) file_name = self._get_real_name_from_theme(icon_name, size)
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
file_name, width, height) file_name, width, height)
else: else:
pixbuf = None pixbuf = None

@ -25,8 +25,8 @@ import re
import math import math
import logging import logging
import gobject from gi.repository import GObject
import gtk from gi.repository import Gtk
import cairo import cairo
from sugar3.graphics.xocolor import XoColor from sugar3.graphics.xocolor import XoColor
@ -120,11 +120,11 @@ class _IconBuffer(object):
return self._loader.load(file_name, entities, self.cache) return self._loader.load(file_name, entities, self.cache)
def _get_attach_points(self, info, size_request): def _get_attach_points(self, info, size_request):
attach_points = info.get_attach_points() return 0,0;has_attach_points_, attach_points = info.get_attach_points()
if attach_points: if attach_points:
attach_x = float(attach_points[0][0]) / size_request attach_x = float(attach_points[0].x) / size_request
attach_y = float(attach_points[0][1]) / size_request attach_y = float(attach_points[0].y) / size_request
else: else:
attach_x = attach_y = 0 attach_x = attach_y = 0
@ -136,7 +136,7 @@ class _IconBuffer(object):
if self.file_name: if self.file_name:
icon_info.file_name = self.file_name icon_info.file_name = self.file_name
elif self.icon_name: elif self.icon_name:
theme = gtk.icon_theme_get_default() theme = Gtk.IconTheme.get_default()
size = 50 size = 50
if self.width != None: if self.width != None:
@ -158,7 +158,7 @@ class _IconBuffer(object):
return icon_info return icon_info
def _draw_badge(self, context, size, sensitive, widget): def _draw_badge(self, context, size, sensitive, widget):
theme = gtk.icon_theme_get_default() theme = Gtk.IconTheme.get_default()
badge_info = theme.lookup_icon(self.badge_name, int(size), 0) badge_info = theme.lookup_icon(self.badge_name, int(size), 0)
if badge_info: if badge_info:
badge_file_name = badge_info.get_filename() badge_file_name = badge_info.get_filename()
@ -171,7 +171,7 @@ class _IconBuffer(object):
pixbuf = handle.get_pixbuf() pixbuf = handle.get_pixbuf()
else: else:
pixbuf = gtk.gdk.pixbuf_new_from_file(badge_file_name) pixbuf = GdkPixbuf.Pixbuf.new_from_file(badge_file_name)
icon_width = pixbuf.get_width() icon_width = pixbuf.get_width()
icon_height = pixbuf.get_height() icon_height = pixbuf.get_height()
@ -231,16 +231,16 @@ class _IconBuffer(object):
if not (widget and widget.style): if not (widget and widget.style):
return pixbuf return pixbuf
icon_source = gtk.IconSource() icon_source = Gtk.IconSource()
# Special size meaning "don't touch" # Special size meaning "don't touch"
icon_source.set_size(-1) icon_source.set_size(-1)
icon_source.set_pixbuf(pixbuf) icon_source.set_pixbuf(pixbuf)
icon_source.set_state(gtk.STATE_INSENSITIVE) icon_source.set_state(Gtk.StateType.INSENSITIVE)
icon_source.set_direction_wildcarded(False) icon_source.set_direction_wildcarded(False)
icon_source.set_size_wildcarded(False) icon_source.set_size_wildcarded(False)
pixbuf = widget.style.render_icon(icon_source, widget.get_direction(), pixbuf = widget.style.render_icon(icon_source, widget.get_direction(),
gtk.STATE_INSENSITIVE, -1, widget, Gtk.StateType.INSENSITIVE, -1, widget,
'sugar-icon') 'sugar-icon')
return pixbuf return pixbuf
@ -262,7 +262,7 @@ class _IconBuffer(object):
icon_width = int(dimensions[0]) icon_width = int(dimensions[0])
icon_height = int(dimensions[1]) icon_height = int(dimensions[1])
else: else:
pixbuf = gtk.gdk.pixbuf_new_from_file(icon_info.file_name) pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon_info.file_name)
icon_width = pixbuf.get_width() icon_width = pixbuf.get_width()
icon_height = pixbuf.get_height() icon_height = pixbuf.get_height()
@ -278,7 +278,7 @@ class _IconBuffer(object):
surface = cairo.ImageSurface(cairo.FORMAT_RGB24, int(width), surface = cairo.ImageSurface(cairo.FORMAT_RGB24, int(width),
int(height)) int(height))
context = cairo.Context(surface) context = cairo.Context(surface)
context = gtk.gdk.CairoContext(context) context = Gdk.CairoContext(context)
context.set_source_color(self.background_color) context.set_source_color(self.background_color)
context.paint() context.paint()
@ -314,7 +314,7 @@ class _IconBuffer(object):
xo_color = property(_get_xo_color, _set_xo_color) xo_color = property(_get_xo_color, _set_xo_color)
class Icon(gtk.Image): class Icon(Gtk.Image):
__gtype_name__ = 'SugarIcon' __gtype_name__ = 'SugarIcon'
@ -327,7 +327,7 @@ class Icon(gtk.Image):
self._alpha = 1.0 self._alpha = 1.0
self._scale = 1.0 self._scale = 1.0
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
def get_file(self): def get_file(self):
return self._file return self._file
@ -336,7 +336,7 @@ class Icon(gtk.Image):
self._file = file_name self._file = file_name
self._buffer.file_name = file_name self._buffer.file_name = file_name
file = gobject.property(type=object, setter=set_file, getter=get_file) file = GObject.property(type=object, setter=set_file, getter=get_file)
def _sync_image_properties(self): def _sync_image_properties(self):
if self._buffer.icon_name != self.props.icon_name: if self._buffer.icon_name != self.props.icon_name:
@ -346,7 +346,7 @@ class Icon(gtk.Image):
self._buffer.file_name = self.props.file self._buffer.file_name = self.props.file
if self.props.pixel_size == -1: if self.props.pixel_size == -1:
width, height = gtk.icon_size_lookup(self.props.icon_size) width, height = Gtk.icon_size_lookup(self.props.icon_size)
else: else:
width = height = self.props.pixel_size width = height = self.props.pixel_size
if self._buffer.width != width or self._buffer.height != height: if self._buffer.width != width or self._buffer.height != height:
@ -396,7 +396,7 @@ class Icon(gtk.Image):
""" """
self._sync_image_properties() self._sync_image_properties()
sensitive = (self.state != gtk.STATE_INSENSITIVE) sensitive = (self.is_sensitive())
surface = self._buffer.get_surface(sensitive, self) surface = self._buffer.get_surface(sensitive, self)
if surface is None: if surface is None:
return return
@ -404,7 +404,7 @@ class Icon(gtk.Image):
xpad, ypad = self.get_padding() xpad, ypad = self.get_padding()
xalign, yalign = self.get_alignment() xalign, yalign = self.get_alignment()
requisition = self.get_child_requisition() requisition = self.get_child_requisition()
if self.get_direction() != gtk.TEXT_DIR_LTR: if self.get_direction() != Gtk.TextDirection.LTR:
xalign = 1.0 - xalign xalign = 1.0 - xalign
allocation = self.get_allocation() allocation = self.get_allocation()
@ -413,7 +413,7 @@ class Icon(gtk.Image):
y = math.floor(allocation.y + ypad + y = math.floor(allocation.y + ypad +
(allocation.height - requisition[1]) * yalign) (allocation.height - requisition[1]) * yalign)
cr = self.window.cairo_create() cr = self.get_window().cairo_create()
if self._scale != 1.0: if self._scale != 1.0:
cr.scale(self._scale, self._scale) cr.scale(self._scale, self._scale)
@ -446,7 +446,7 @@ class Icon(gtk.Image):
self._buffer.xo_color = value self._buffer.xo_color = value
self.queue_draw() self.queue_draw()
xo_color = gobject.property( xo_color = GObject.property(
type=object, getter=None, setter=set_xo_color) type=object, getter=None, setter=set_xo_color)
def set_fill_color(self, value): def set_fill_color(self, value):
@ -477,7 +477,7 @@ class Icon(gtk.Image):
""" """
return self._buffer.fill_color return self._buffer.fill_color
fill_color = gobject.property( fill_color = GObject.property(
type=object, getter=get_fill_color, setter=set_fill_color) type=object, getter=get_fill_color, setter=set_fill_color)
def set_stroke_color(self, value): def set_stroke_color(self, value):
@ -508,7 +508,7 @@ class Icon(gtk.Image):
""" """
return self._buffer.stroke_color return self._buffer.stroke_color
stroke_color = gobject.property( stroke_color = GObject.property(
type=object, getter=get_stroke_color, setter=set_stroke_color) type=object, getter=get_stroke_color, setter=set_stroke_color)
def set_badge_name(self, value): def set_badge_name(self, value):
@ -529,7 +529,7 @@ class Icon(gtk.Image):
def get_badge_name(self): def get_badge_name(self):
return self._buffer.badge_name return self._buffer.badge_name
badge_name = gobject.property( badge_name = GObject.property(
type=str, getter=get_badge_name, setter=set_badge_name) type=str, getter=get_badge_name, setter=set_badge_name)
def set_alpha(self, value): def set_alpha(self, value):
@ -537,7 +537,7 @@ class Icon(gtk.Image):
self._alpha = value self._alpha = value
self.queue_draw() self.queue_draw()
alpha = gobject.property( alpha = GObject.property(
type=float, setter=set_alpha) type=float, setter=set_alpha)
def set_scale(self, value): def set_scale(self, value):
@ -545,16 +545,16 @@ class Icon(gtk.Image):
self._scale = value self._scale = value
self.queue_draw() self.queue_draw()
scale = gobject.property( scale = GObject.property(
type=float, setter=set_scale) type=float, setter=set_scale)
class CellRendererIcon(gtk.GenericCellRenderer): class CellRendererIcon(Gtk.CellRenderer):
__gtype_name__ = 'SugarCellRendererIcon' __gtype_name__ = 'SugarCellRendererIcon'
__gsignals__ = { __gsignals__ = {
'clicked': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [object]), 'clicked': (GObject.SignalFlags.RUN_FIRST, None, [object]),
} }
def __init__(self, tree_view): def __init__(self, tree_view):
@ -569,7 +569,7 @@ class CellRendererIcon(gtk.GenericCellRenderer):
self._prelit_stroke_color = None self._prelit_stroke_color = None
self._palette_invoker = CellRendererInvoker() self._palette_invoker = CellRendererInvoker()
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._palette_invoker.attach_cell_renderer(tree_view, self) self._palette_invoker.attach_cell_renderer(tree_view, self)
@ -584,19 +584,19 @@ class CellRendererIcon(gtk.GenericCellRenderer):
def get_palette_invoker(self): def get_palette_invoker(self):
return self._palette_invoker return self._palette_invoker
palette_invoker = gobject.property(type=object, getter=get_palette_invoker) palette_invoker = GObject.property(type=object, getter=get_palette_invoker)
def set_file_name(self, value): def set_file_name(self, value):
if self._buffer.file_name != value: if self._buffer.file_name != value:
self._buffer.file_name = value self._buffer.file_name = value
file_name = gobject.property(type=str, setter=set_file_name) file_name = GObject.property(type=str, setter=set_file_name)
def set_icon_name(self, value): def set_icon_name(self, value):
if self._buffer.icon_name != value: if self._buffer.icon_name != value:
self._buffer.icon_name = value self._buffer.icon_name = value
icon_name = gobject.property(type=str, setter=set_icon_name) icon_name = GObject.property(type=str, setter=set_icon_name)
def get_xo_color(self): def get_xo_color(self):
return self._xo_color return self._xo_color
@ -604,40 +604,40 @@ class CellRendererIcon(gtk.GenericCellRenderer):
def set_xo_color(self, value): def set_xo_color(self, value):
self._xo_color = value self._xo_color = value
xo_color = gobject.property(type=object, xo_color = GObject.property(type=object,
getter=get_xo_color, setter=set_xo_color) getter=get_xo_color, setter=set_xo_color)
def set_fill_color(self, value): def set_fill_color(self, value):
if self._fill_color != value: if self._fill_color != value:
self._fill_color = value self._fill_color = value
fill_color = gobject.property(type=object, setter=set_fill_color) fill_color = GObject.property(type=object, setter=set_fill_color)
def set_stroke_color(self, value): def set_stroke_color(self, value):
if self._stroke_color != value: if self._stroke_color != value:
self._stroke_color = value self._stroke_color = value
stroke_color = gobject.property(type=object, setter=set_stroke_color) stroke_color = GObject.property(type=object, setter=set_stroke_color)
def set_prelit_fill_color(self, value): def set_prelit_fill_color(self, value):
if self._prelit_fill_color != value: if self._prelit_fill_color != value:
self._prelit_fill_color = value self._prelit_fill_color = value
prelit_fill_color = gobject.property(type=object, prelit_fill_color = GObject.property(type=object,
setter=set_prelit_fill_color) setter=set_prelit_fill_color)
def set_prelit_stroke_color(self, value): def set_prelit_stroke_color(self, value):
if self._prelit_stroke_color != value: if self._prelit_stroke_color != value:
self._prelit_stroke_color = value self._prelit_stroke_color = value
prelit_stroke_color = gobject.property(type=object, prelit_stroke_color = GObject.property(type=object,
setter=set_prelit_stroke_color) setter=set_prelit_stroke_color)
def set_background_color(self, value): def set_background_color(self, value):
if self._buffer.background_color != value: if self._buffer.background_color != value:
self._buffer.background_color = value self._buffer.background_color = value
background_color = gobject.property(type=object, background_color = GObject.property(type=object,
setter=set_background_color) setter=set_background_color)
def set_size(self, value): def set_size(self, value):
@ -645,7 +645,7 @@ class CellRendererIcon(gtk.GenericCellRenderer):
self._buffer.width = value self._buffer.width = value
self._buffer.height = value self._buffer.height = value
size = gobject.property(type=object, setter=set_size) size = GObject.property(type=object, setter=set_size)
def on_get_size(self, widget, cell_area): def on_get_size(self, widget, cell_area):
width = self._buffer.width + self.props.xpad * 2 width = self._buffer.width + self.props.xpad * 2
@ -655,7 +655,7 @@ class CellRendererIcon(gtk.GenericCellRenderer):
if width > 0 and height > 0 and cell_area is not None: if width > 0 and height > 0 and cell_area is not None:
if widget.get_direction() == gtk.TEXT_DIR_RTL: if widget.get_direction() == Gtk.TextDirection.RTL:
xoffset = 1.0 - self.props.xalign xoffset = 1.0 - self.props.xalign
else: else:
xoffset = self.props.xalign xoffset = self.props.xalign
@ -707,7 +707,7 @@ class CellRendererIcon(gtk.GenericCellRenderer):
has_prelit_colors = None not in [prelit_fill_color, has_prelit_colors = None not in [prelit_fill_color,
prelit_stroke_color] prelit_stroke_color]
if flags & gtk.CELL_RENDERER_PRELIT and has_prelit_colors and \ if flags & Gtk.CELL_RENDERER_PRELIT and has_prelit_colors and \
self._is_prelit(widget): self._is_prelit(widget):
self._buffer.fill_color = prelit_fill_color self._buffer.fill_color = prelit_fill_color
@ -733,7 +733,7 @@ class CellRendererIcon(gtk.GenericCellRenderer):
def get_icon_state(base_name, perc, step=5): def get_icon_state(base_name, perc, step=5):
strength = round(perc / step) * step strength = round(perc / step) * step
icon_theme = gtk.icon_theme_get_default() icon_theme = Gtk.IconTheme.get_default()
while strength <= 100 and strength >= 0: while strength <= 100 and strength >= 0:
icon_name = '%s-%03d' % (base_name, strength) icon_name = '%s-%03d' % (base_name, strength)
@ -744,8 +744,8 @@ def get_icon_state(base_name, perc, step=5):
def get_icon_file_name(icon_name): def get_icon_file_name(icon_name):
icon_theme = gtk.icon_theme_get_default() icon_theme = Gtk.IconTheme.get_default()
info = icon_theme.lookup_icon(icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR, 0) info = icon_theme.lookup_icon(icon_name, Gtk.IconSize.LARGE_TOOLBAR, 0)
if not info: if not info:
return None return None
filename = info.get_filename() filename = info.get_filename()

@ -15,19 +15,19 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk from gi.repository import Gtk
from sugar3.graphics import style from sugar3.graphics import style
from sugar3.graphics.icon import _SVGLoader from sugar3.graphics.icon import _SVGLoader
ICON_ENTRY_PRIMARY = gtk.ENTRY_ICON_PRIMARY ICON_ENTRY_PRIMARY = Gtk.EntryIconPosition.PRIMARY
ICON_ENTRY_SECONDARY = gtk.ENTRY_ICON_SECONDARY ICON_ENTRY_SECONDARY = Gtk.EntryIconPosition.SECONDARY
class IconEntry(gtk.Entry): class IconEntry(Gtk.Entry):
def __init__(self): def __init__(self):
gtk.Entry.__init__(self) GObject.GObject.__init__(self)
self._clear_icon = None self._clear_icon = None
self._clear_shown = False self._clear_shown = False
@ -35,9 +35,9 @@ class IconEntry(gtk.Entry):
self.connect('key_press_event', self._keypress_event_cb) self.connect('key_press_event', self._keypress_event_cb)
def set_icon_from_name(self, position, name): def set_icon_from_name(self, position, name):
icon_theme = gtk.icon_theme_get_default() icon_theme = Gtk.IconTheme.get_default()
icon_info = icon_theme.lookup_icon(name, icon_info = icon_theme.lookup_icon(name,
gtk.ICON_SIZE_SMALL_TOOLBAR, Gtk.IconSize.SMALL_TOOLBAR,
0) 0)
if icon_info.get_filename().endswith('.svg'): if icon_info.get_filename().endswith('.svg'):
@ -47,12 +47,12 @@ class IconEntry(gtk.Entry):
handle = loader.load(icon_info.get_filename(), entities, None) handle = loader.load(icon_info.get_filename(), entities, None)
pixbuf = handle.get_pixbuf() pixbuf = handle.get_pixbuf()
else: else:
pixbuf = gtk.gdk.pixbuf_new_from_file(icon_info.get_filename()) pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon_info.get_filename())
del icon_info del icon_info
self.set_icon(position, pixbuf) self.set_icon(position, pixbuf)
def set_icon(self, position, pixbuf): def set_icon(self, position, pixbuf):
if type(pixbuf) is not gtk.gdk.Pixbuf: if type(pixbuf) is not GdkPixbuf.Pixbuf:
raise ValueError('Argument must be a pixbuf, not %r.' % pixbuf) raise ValueError('Argument must be a pixbuf, not %r.' % pixbuf)
self.set_icon_from_pixbuf(position, pixbuf) self.set_icon_from_pixbuf(position, pixbuf)
@ -80,7 +80,7 @@ class IconEntry(gtk.Entry):
self._clear_shown = False self._clear_shown = False
def _keypress_event_cb(self, widget, event): def _keypress_event_cb(self, widget, event):
keyval = gtk.gdk.keyval_name(event.keyval) keyval = Gdk.keyval_name(event.keyval)
if keyval == 'Escape': if keyval == 'Escape':
self.props.text = '' self.props.text = ''
return True return True

@ -21,39 +21,39 @@ STABLE.
import logging import logging
import gobject from gi.repository import GObject
import pango from gi.repository import Pango
import gtk from gi.repository import Gtk
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
class MenuItem(gtk.ImageMenuItem): class MenuItem(Gtk.ImageMenuItem):
def __init__(self, text_label=None, icon_name=None, text_maxlen=60, def __init__(self, text_label=None, icon_name=None, text_maxlen=60,
xo_color=None, file_name=None): xo_color=None, file_name=None):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._accelerator = None self._accelerator = None
label = gtk.AccelLabel(text_label) label = Gtk.AccelLabel(label=text_label)
label.set_alignment(0.0, 0.5) label.set_alignment(0.0, 0.5)
label.set_accel_widget(self) label.set_accel_widget(self)
if text_maxlen > 0: if text_maxlen > 0:
label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) label.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
label.set_max_width_chars(text_maxlen) label.set_max_width_chars(text_maxlen)
self.add(label) self.add(label)
label.show() label.show()
if icon_name is not None: if icon_name is not None:
icon = Icon(icon_name=icon_name, icon = Icon(icon_name=icon_name,
icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) icon_size=Gtk.IconSize.SMALL_TOOLBAR)
if xo_color is not None: if xo_color is not None:
icon.props.xo_color = xo_color icon.props.xo_color = xo_color
self.set_image(icon) self.set_image(icon)
icon.show() icon.show()
elif file_name is not None: elif file_name is not None:
icon = Icon(file=file_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) icon = Icon(file=file_name, icon_size=Gtk.IconSize.SMALL_TOOLBAR)
if xo_color is not None: if xo_color is not None:
icon.props.xo_color = xo_color icon.props.xo_color = xo_color
self.set_image(icon) self.set_image(icon)
@ -77,12 +77,12 @@ class MenuItem(gtk.ImageMenuItem):
accel_group = self.get_toplevel().get_data('sugar-accel-group') accel_group = self.get_toplevel().get_data('sugar-accel-group')
if not accel_group: if not accel_group:
logging.warning('No gtk.AccelGroup in the top level window.') logging.warning('No Gtk.AccelGroup in the top level window.')
return return
keyval, mask = gtk.accelerator_parse(self._accelerator) keyval, mask = Gtk.accelerator_parse(self._accelerator)
self.add_accelerator('activate', accel_group, keyval, mask, self.add_accelerator('activate', accel_group, keyval, mask,
gtk.ACCEL_LOCKED | gtk.ACCEL_VISIBLE) Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE)
def set_accelerator(self, accelerator): def set_accelerator(self, accelerator):
self._accelerator = accelerator self._accelerator = accelerator
@ -91,5 +91,5 @@ class MenuItem(gtk.ImageMenuItem):
def get_accelerator(self): def get_accelerator(self):
return self._accelerator return self._accelerator
accelerator = gobject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)

@ -17,24 +17,24 @@
"""Notebook class """Notebook class
This class create a gtk.Notebook() widget supporting This class create a Gtk.Notebook() widget supporting
a close button in every tab when the 'can-close-tabs' gproperty a close button in every tab when the 'can-close-tabs' gproperty
is enabled (True) is enabled (True)
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
class Notebook(gtk.Notebook): class Notebook(Gtk.Notebook):
__gtype_name__ = 'SugarNotebook' __gtype_name__ = 'SugarNotebook'
__gproperties__ = { __gproperties__ = {
'can-close-tabs': (bool, None, None, False, 'can-close-tabs': (bool, None, None, False,
gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
@ -74,26 +74,26 @@ class Notebook(gtk.Notebook):
raise AssertionError raise AssertionError
def _add_icon_to_button(self, button): def _add_icon_to_button(self, button):
icon_box = gtk.HBox() icon_box = Gtk.HBox()
image = gtk.Image() image = Gtk.Image()
image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU) image.set_from_stock(Gtk.STOCK_CLOSE, Gtk.IconSize.MENU)
gtk.Button.set_relief(button, gtk.RELIEF_NONE) Gtk.Button.set_relief(button, Gtk.ReliefStyle.NONE)
settings = gtk.Widget.get_settings(button) settings = Gtk.Widget.get_settings(button)
w, h = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_MENU) w, h = Gtk.icon_size_lookup_for_settings(settings, Gtk.IconSize.MENU)
gtk.Widget.set_size_request(button, w + 4, h + 4) Gtk.Widget.set_size_request(button, w + 4, h + 4)
image.show() image.show()
icon_box.pack_start(image, True, False, 0) icon_box.pack_start(image, True, False, 0)
button.add(icon_box) button.add(icon_box)
icon_box.show() icon_box.show()
def _create_custom_tab(self, text, child): def _create_custom_tab(self, text, child):
event_box = gtk.EventBox() event_box = Gtk.EventBox()
tab_box = gtk.HBox(False, 2) tab_box = Gtk.HBox(False, 2)
tab_label = gtk.Label(text) tab_label = Gtk.Label(label=text)
tab_button = gtk.Button() tab_button = Gtk.Button()
tab_button.connect('clicked', self._close_page, child) tab_button.connect('clicked', self._close_page, child)
# Add a picture on a button # Add a picture on a button
@ -132,7 +132,7 @@ class Notebook(gtk.Notebook):
eventbox = self._create_custom_tab(text_label, widget) eventbox = self._create_custom_tab(text_label, widget)
self.append_page(widget, eventbox) self.append_page(widget, eventbox)
else: else:
self.append_page(widget, gtk.Label(text_label)) self.append_page(widget, Gtk.Label(label=text_label))
pages = self.get_n_pages() pages = self.get_n_pages()

@ -21,8 +21,8 @@ STABLE.
import logging import logging
import gobject from gi.repository import GObject
import gtk from gi.repository import Gtk
import dbus import dbus
from sugar3.datastore import datastore from sugar3.datastore import datastore
@ -39,7 +39,7 @@ class ObjectChooser(object):
what_filter=None): what_filter=None):
# For backwards compatibility: # For backwards compatibility:
# - We ignore title, flags and buttons. # - We ignore title, flags and buttons.
# - 'parent' can be a xid or a gtk.Window # - 'parent' can be a xid or a Gtk.Window
if title is not None or flags is not None or buttons is not None: if title is not None or flags is not None or buttons is not None:
logging.warning('Invocation of ObjectChooser() has deprecated ' logging.warning('Invocation of ObjectChooser() has deprecated '
@ -57,13 +57,13 @@ class ObjectChooser(object):
self._object_id = None self._object_id = None
self._bus = None self._bus = None
self._chooser_id = None self._chooser_id = None
self._response_code = gtk.RESPONSE_NONE self._response_code = Gtk.ResponseType.NONE
self._what_filter = what_filter self._what_filter = what_filter
def run(self): def run(self):
self._object_id = None self._object_id = None
self._main_loop = gobject.MainLoop() self._main_loop = GObject.MainLoop()
self._bus = dbus.SessionBus(mainloop=self._main_loop) self._bus = dbus.SessionBus(mainloop=self._main_loop)
self._bus.add_signal_receiver( self._bus.add_signal_receiver(
@ -86,11 +86,11 @@ class ObjectChooser(object):
self._chooser_id = journal.ChooseObject(self._parent_xid, what_filter) self._chooser_id = journal.ChooseObject(self._parent_xid, what_filter)
gtk.gdk.threads_leave() Gdk.threads_leave()
try: try:
self._main_loop.run() self._main_loop.run()
finally: finally:
gtk.gdk.threads_enter() Gdk.threads_enter()
self._main_loop = None self._main_loop = None
return self._response_code return self._response_code
@ -114,7 +114,7 @@ class ObjectChooser(object):
if chooser_id != self._chooser_id: if chooser_id != self._chooser_id:
return return
logging.debug('ObjectChooser.__chooser_response_cb: %r', object_id) logging.debug('ObjectChooser.__chooser_response_cb: %r', object_id)
self._response_code = gtk.RESPONSE_ACCEPT self._response_code = Gtk.ResponseType.ACCEPT
self._object_id = object_id self._object_id = object_id
self._cleanup() self._cleanup()
@ -122,11 +122,11 @@ class ObjectChooser(object):
if chooser_id != self._chooser_id: if chooser_id != self._chooser_id:
return return
logging.debug('ObjectChooser.__chooser_cancelled_cb: %r', chooser_id) logging.debug('ObjectChooser.__chooser_cancelled_cb: %r', chooser_id)
self._response_code = gtk.RESPONSE_CANCEL self._response_code = Gtk.ResponseType.CANCEL
self._cleanup() self._cleanup()
def __name_owner_changed_cb(self, name, old, new): def __name_owner_changed_cb(self, name, old, new):
logging.debug('ObjectChooser.__name_owner_changed_cb') logging.debug('ObjectChooser.__name_owner_changed_cb')
# Journal service disappeared from the bus # Journal service disappeared from the bus
self._response_code = gtk.RESPONSE_CANCEL self._response_code = Gtk.ResponseType.CANCEL
self._cleanup() self._cleanup()

@ -21,16 +21,16 @@
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
import pango from gi.repository import Pango
from sugar3.graphics import palettegroup from sugar3.graphics import palettegroup
from sugar3.graphics import animator from sugar3.graphics import animator
from sugar3.graphics import style from sugar3.graphics import style
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.palettewindow import PaletteWindow from sugar3.graphics.palettewindow import PaletteWindow
from sugar import _sugarext from gi.repository import SugarExt
# DEPRECATED # DEPRECATED
# Import these for backwards compatibility # Import these for backwards compatibility
@ -56,50 +56,50 @@ class Palette(PaletteWindow):
self._icon_visible = True self._icon_visible = True
self._palette_state = self.PRIMARY self._palette_state = self.PRIMARY
palette_box = gtk.VBox() palette_box = Gtk.VBox()
primary_box = gtk.HBox() primary_box = Gtk.HBox()
palette_box.pack_start(primary_box, expand=False) palette_box.pack_start(primary_box, False, True, 0)
primary_box.show() primary_box.show()
self._icon_box = gtk.HBox() self._icon_box = Gtk.HBox()
self._icon_box.set_size_request(style.GRID_CELL_SIZE, -1) self._icon_box.set_size_request(style.GRID_CELL_SIZE, -1)
primary_box.pack_start(self._icon_box, expand=False) primary_box.pack_start(self._icon_box, False, True, 0)
labels_box = gtk.VBox() labels_box = Gtk.VBox()
self._label_alignment = gtk.Alignment(xalign=0, yalign=0.5, self._label_alignment = Gtk.Alignment.new(xalign=0, yalign=0.5,
xscale=1, yscale=0.33) xscale=1, yscale=0.33)
self._label_alignment.set_padding(0, 0, style.DEFAULT_SPACING, self._label_alignment.set_padding(0, 0, style.DEFAULT_SPACING,
style.DEFAULT_SPACING) style.DEFAULT_SPACING)
self._label_alignment.add(labels_box) self._label_alignment.add(labels_box)
self._label_alignment.show() self._label_alignment.show()
primary_box.pack_start(self._label_alignment, expand=True) primary_box.pack_start(self._label_alignment, True, True, 0)
labels_box.show() labels_box.show()
self._label = gtk.AccelLabel('') self._label = Gtk.AccelLabel(label='')
self._label.set_alignment(0, 0.5) self._label.set_alignment(0, 0.5)
if text_maxlen > 0: if text_maxlen > 0:
self._label.set_max_width_chars(text_maxlen) self._label.set_max_width_chars(text_maxlen)
self._label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._label.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
labels_box.pack_start(self._label, expand=True) labels_box.pack_start(self._label, True, True, 0)
self._secondary_label = gtk.Label() self._secondary_label = Gtk.Label()
self._secondary_label.set_alignment(0, 0.5) self._secondary_label.set_alignment(0, 0.5)
if text_maxlen > 0: if text_maxlen > 0:
self._secondary_label.set_max_width_chars(text_maxlen) self._secondary_label.set_max_width_chars(text_maxlen)
self._secondary_label.set_ellipsize(pango.ELLIPSIZE_END) self._secondary_label.set_ellipsize(Pango.EllipsizeMode.END)
labels_box.pack_start(self._secondary_label, expand=True) labels_box.pack_start(self._secondary_label, True, True, 0)
self._secondary_box = gtk.VBox() self._secondary_box = Gtk.VBox()
palette_box.pack_start(self._secondary_box) palette_box.pack_start(self._secondary_box, True, True, 0)
self._separator = gtk.HSeparator() self._separator = Gtk.HSeparator()
self._secondary_box.pack_start(self._separator) self._secondary_box.pack_start(self._separator, True, True, 0)
self._menu_content_separator = gtk.HSeparator() self._menu_content_separator = Gtk.HSeparator()
self._secondary_anim = animator.Animator(2.0, 10) self._secondary_anim = animator.Animator(2.0, 10)
self._secondary_anim.add(_SecondaryAnimation(self)) self._secondary_anim.add(_SecondaryAnimation(self))
@ -119,11 +119,11 @@ class Palette(PaletteWindow):
self.props.primary_text = label self.props.primary_text = label
self._add_menu() self._add_menu()
self._secondary_box.pack_start(self._menu_content_separator) self._secondary_box.pack_start(self._menu_content_separator, True, True, 0)
self._add_content() self._add_content()
self.action_bar = PaletteActionBar() self.action_bar = PaletteActionBar()
self._secondary_box.pack_start(self.action_bar) self._secondary_box.pack_start(self.action_bar, True, True, 0)
self.action_bar.show() self.action_bar.show()
self.add(palette_box) self.add(palette_box)
@ -145,7 +145,7 @@ class Palette(PaletteWindow):
def do_style_set(self, previous_style): def do_style_set(self, previous_style):
# Prevent a warning from pygtk # Prevent a warning from pygtk
if previous_style is not None: if previous_style is not None:
gtk.Window.do_style_set(self, previous_style) Gtk.Window.do_style_set(self, previous_style)
self.set_border_width(self.get_style().xthickness) self.set_border_width(self.get_style().xthickness)
def __menu_item_inserted_cb(self, menu): def __menu_item_inserted_cb(self, menu):
@ -155,7 +155,7 @@ class Palette(PaletteWindow):
self._secondary_anim.stop() self._secondary_anim.stop()
self.popdown(immediate=True) self.popdown(immediate=True)
# Break the reference cycle. It looks like the gc is not able to free # Break the reference cycle. It looks like the gc is not able to free
# it, possibly because gtk.Menu memory handling is very special. # it, possibly because Gtk.Menu memory handling is very special.
self.menu.disconnect_by_func(self.__menu_item_inserted_cb) self.menu.disconnect_by_func(self.__menu_item_inserted_cb)
self.menu = None self.menu = None
@ -216,15 +216,15 @@ class Palette(PaletteWindow):
self._secondary_anim.start() self._secondary_anim.start()
def _add_menu(self): def _add_menu(self):
self._menu_box = gtk.VBox() self._menu_box = Gtk.VBox()
self._secondary_box.pack_start(self._menu_box) self._secondary_box.pack_start(self._menu_box, True, True, 0)
self._menu_box.show() self._menu_box.show()
def _add_content(self): def _add_content(self):
# The content is not shown until a widget is added # The content is not shown until a widget is added
self._content = gtk.VBox() self._content = Gtk.VBox()
self._content.set_border_width(style.DEFAULT_SPACING) self._content.set_border_width(style.DEFAULT_SPACING)
self._secondary_box.pack_start(self._content) self._secondary_box.pack_start(self._content, True, True, 0)
def _update_accel_widget(self): def _update_accel_widget(self):
assert self.props.invoker is not None assert self.props.invoker is not None
@ -240,7 +240,7 @@ class Palette(PaletteWindow):
def get_primary_text(self): def get_primary_text(self):
return self._primary_text return self._primary_text
primary_text = gobject.property(type=str, primary_text = GObject.property(type=str,
getter=get_primary_text, getter=get_primary_text,
setter=set_primary_text) setter=set_primary_text)
@ -258,7 +258,7 @@ class Palette(PaletteWindow):
def get_secondary_text(self): def get_secondary_text(self):
return self._secondary_text return self._secondary_text
secondary_text = gobject.property(type=str, getter=get_secondary_text, secondary_text = GObject.property(type=str, getter=get_secondary_text,
setter=set_secondary_text) setter=set_secondary_text)
def _show_icon(self): def _show_icon(self):
@ -278,14 +278,14 @@ class Palette(PaletteWindow):
if self._icon: if self._icon:
self._icon_box.remove(self._icon_box.get_children()[0]) self._icon_box.remove(self._icon_box.get_children()[0])
event_box = gtk.EventBox() event_box = Gtk.EventBox()
event_box.connect('button-release-event', event_box.connect('button-release-event',
self.__icon_button_release_event_cb) self.__icon_button_release_event_cb)
self._icon_box.pack_start(event_box) self._icon_box.pack_start(event_box, True, True, 0)
event_box.show() event_box.show()
self._icon = icon self._icon = icon
self._icon.props.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR self._icon.props.icon_size = Gtk.IconSize.LARGE_TOOLBAR
event_box.add(self._icon) event_box.add(self._icon)
self._icon.show() self._icon.show()
self._show_icon() self._show_icon()
@ -293,7 +293,7 @@ class Palette(PaletteWindow):
def get_icon(self): def get_icon(self):
return self._icon return self._icon
icon = gobject.property(type=object, getter=get_icon, setter=set_icon) icon = GObject.property(type=object, getter=get_icon, setter=set_icon)
def __icon_button_release_event_cb(self, icon, event): def __icon_button_release_event_cb(self, icon, event):
self.emit('activate') self.emit('activate')
@ -309,13 +309,13 @@ class Palette(PaletteWindow):
def get_icon_visible(self): def get_icon_visible(self):
return self._icon_visilbe return self._icon_visilbe
icon_visible = gobject.property(type=bool, icon_visible = GObject.property(type=bool,
default=True, default=True,
getter=get_icon_visible, getter=get_icon_visible,
setter=set_icon_visible) setter=set_icon_visible)
def set_content(self, widget): def set_content(self, widget):
if len(self._content.get_children()) > 0: if self._content.get_children():
self._content.remove(self._content.get_children()[0]) self._content.remove(self._content.get_children()[0])
if widget is not None: if widget is not None:
@ -330,7 +330,7 @@ class Palette(PaletteWindow):
def do_size_request(self, requisition): def do_size_request(self, requisition):
PaletteWindow.do_size_request(self, requisition) PaletteWindow.do_size_request(self, requisition)
# gtk.AccelLabel request doesn't include the accelerator. # Gtk.AccelLabel request doesn't include the accelerator.
label_width = self._label_alignment.size_request()[0] + \ label_width = self._label_alignment.size_request()[0] + \
self._label.get_accel_width() + \ self._label.get_accel_width() + \
2 * self.get_border_width() 2 * self.get_border_width()
@ -340,12 +340,12 @@ class Palette(PaletteWindow):
self._full_request[0]) self._full_request[0])
def _update_separators(self): def _update_separators(self):
visible = len(self.menu.get_children()) > 0 or \ visible = self.menu.get_children() or \
len(self._content.get_children()) > 0 self._content.get_children()
self._separator.props.visible = visible self._separator.props.visible = visible
visible = len(self.menu.get_children()) > 0 and \ visible = self.menu.get_children() and \
len(self._content.get_children()) > 0 self._content.get_children()
self._menu_content_separator.props.visible = visible self._menu_content_separator.props.visible = visible
def _update_accept_focus(self): def _update_accept_focus(self):
@ -382,40 +382,40 @@ class Palette(PaletteWindow):
self._palette_state = state self._palette_state = state
class PaletteActionBar(gtk.HButtonBox): class PaletteActionBar(Gtk.HButtonBox):
def add_action(self, label, icon_name=None): def add_action(self, label, icon_name=None):
button = gtk.Button(label) button = Gtk.Button(label)
if icon_name: if icon_name:
icon = Icon(icon_name) icon = Icon(icon_name)
button.set_image(icon) button.set_image(icon)
icon.show() icon.show()
self.pack_start(button) self.pack_start(button, True, True, 0)
button.show() button.show()
class _Menu(_sugarext.Menu): class _Menu(SugarExt.Menu):
__gtype_name__ = 'SugarPaletteMenu' __gtype_name__ = 'SugarPaletteMenu'
__gsignals__ = { __gsignals__ = {
'item-inserted': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'item-inserted': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self, palette): def __init__(self, palette):
_sugarext.Menu.__init__(self) SugarExt.Menu.__init__(self)
self._palette = palette self._palette = palette
def do_insert(self, item, position): def do_insert(self, item, position):
_sugarext.Menu.do_insert(self, item, position) SugarExt.Menu.do_insert(self, item, position)
self.emit('item-inserted') self.emit('item-inserted')
self.show() self.show()
def attach(self, child, left_attach, right_attach, def attach(self, child, left_attach, right_attach,
top_attach, bottom_attach): top_attach, bottom_attach):
_sugarext.Menu.attach(self, child, left_attach, right_attach, SugarExt.Menu.attach(self, child, left_attach, right_attach,
top_attach, bottom_attach) top_attach, bottom_attach)
self.emit('item-inserted') self.emit('item-inserted')
self.show() self.show()
@ -424,7 +424,7 @@ class _Menu(_sugarext.Menu):
# Ignore the Menu expose, just do the MenuShell expose to prevent any # Ignore the Menu expose, just do the MenuShell expose to prevent any
# border from being drawn here. A border is drawn by the palette object # border from being drawn here. A border is drawn by the palette object
# around everything. # around everything.
gtk.MenuShell.do_expose_event(self, event) Gtk.MenuShell.do_expose_event(self, event)
def do_grab_notify(self, was_grabbed): def do_grab_notify(self, was_grabbed):
# Ignore grab_notify as the menu would close otherwise # Ignore grab_notify as the menu would close otherwise

@ -19,7 +19,7 @@
STABLE. STABLE.
""" """
import gobject from gi.repository import GObject
_groups = {} _groups = {}
@ -40,15 +40,15 @@ def popdown_all():
group.popdown() group.popdown()
class Group(gobject.GObject): class Group(GObject.GObject):
__gsignals__ = { __gsignals__ = {
'popup': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'popup': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'popdown': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'popdown': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._up = False self._up = False
self._palettes = [] self._palettes = []
self._sig_ids = {} self._sig_ids = {}

@ -23,9 +23,9 @@ STABLE.
import logging import logging
from gtk import gdk from gi.repository import Gdk
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics import palettegroup from sugar3.graphics import palettegroup
from sugar3.graphics import animator from sugar3.graphics import animator
@ -39,22 +39,22 @@ def _calculate_gap(a, b):
gap = True gap = True
if a.y + a.height == b.y: if a.y + a.height == b.y:
gap_side = gtk.POS_BOTTOM gap_side = Gtk.PositionType.BOTTOM
elif a.x + a.width == b.x: elif a.x + a.width == b.x:
gap_side = gtk.POS_RIGHT gap_side = Gtk.PositionType.RIGHT
elif a.x == b.x + b.width: elif a.x == b.x + b.width:
gap_side = gtk.POS_LEFT gap_side = Gtk.PositionType.LEFT
elif a.y == b.y + b.height: elif a.y == b.y + b.height:
gap_side = gtk.POS_TOP gap_side = Gtk.PositionType.TOP
else: else:
gap = False gap = False
if gap: if gap:
if gap_side == gtk.POS_BOTTOM or gap_side == gtk.POS_TOP: if gap_side == Gtk.PositionType.BOTTOM or gap_side == Gtk.PositionType.TOP:
gap_start = min(a.width, max(0, b.x - a.x)) gap_start = min(a.width, max(0, b.x - a.x))
gap_size = max(0, min(a.width, gap_size = max(0, min(a.width,
(b.x + b.width) - a.x) - gap_start) (b.x + b.width) - a.x) - gap_start)
elif gap_side == gtk.POS_RIGHT or gap_side == gtk.POS_LEFT: elif gap_side == Gtk.PositionType.RIGHT or gap_side == Gtk.PositionType.LEFT:
gap_start = min(a.height, max(0, b.y - a.y)) gap_start = min(a.height, max(0, b.y - a.y))
gap_size = max(0, min(a.height, gap_size = max(0, min(a.height,
(b.y + b.height) - a.y) - gap_start) (b.y + b.height) - a.y) - gap_start)
@ -65,11 +65,11 @@ def _calculate_gap(a, b):
return False return False
class MouseSpeedDetector(gobject.GObject): class MouseSpeedDetector(GObject.GObject):
__gsignals__ = { __gsignals__ = {
'motion-slow': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'motion-slow': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'motion-fast': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'motion-fast': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
_MOTION_SLOW = 1 _MOTION_SLOW = 1
@ -80,7 +80,7 @@ class MouseSpeedDetector(gobject.GObject):
delay in msec delay in msec
threshold in pixels (per tick of 'delay' msec)""" threshold in pixels (per tick of 'delay' msec)"""
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._threshold = thresh self._threshold = thresh
self._parent = parent self._parent = parent
@ -93,15 +93,15 @@ class MouseSpeedDetector(gobject.GObject):
self.stop() self.stop()
self._mouse_pos = self._get_mouse_position() self._mouse_pos = self._get_mouse_position()
self._timeout_hid = gobject.timeout_add(self._delay, self._timer_cb) self._timeout_hid = GObject.timeout_add(self._delay, self._timer_cb)
def stop(self): def stop(self):
if self._timeout_hid is not None: if self._timeout_hid is not None:
gobject.source_remove(self._timeout_hid) GObject.source_remove(self._timeout_hid)
self._state = None self._state = None
def _get_mouse_position(self): def _get_mouse_position(self):
display = gtk.gdk.display_get_default() display = Gdk.Display.get_default()
screen_, x, y, mask_ = display.get_pointer() screen_, x, y, mask_ = display.get_pointer()
return (x, y) return (x, y)
@ -128,14 +128,14 @@ class MouseSpeedDetector(gobject.GObject):
return True return True
class PaletteWindow(gtk.Window): class PaletteWindow(Gtk.Window):
__gtype_name__ = 'SugarPaletteWindow' __gtype_name__ = 'SugarPaletteWindow'
__gsignals__ = { __gsignals__ = {
'popup': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'popup': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'popdown': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'popdown': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'activate': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'activate': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
@ -155,14 +155,14 @@ class PaletteWindow(gtk.Window):
self._popdown_anim = animator.Animator(0.6, 10) self._popdown_anim = animator.Animator(0.6, 10)
self._popdown_anim.add(_PopdownAnimation(self)) self._popdown_anim.add(_PopdownAnimation(self))
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
self.set_decorated(False) self.set_decorated(False)
self.set_resizable(False) self.set_resizable(False)
# Just assume xthickness and ythickness are the same # Just assume xthickness and ythickness are the same
self.set_border_width(self.get_style().xthickness) self.set_border_width(self.get_style().xthickness)
accel_group = gtk.AccelGroup() accel_group = Gtk.AccelGroup()
self.set_data('sugar-accel-group', accel_group) self.set_data('sugar-accel-group', accel_group)
self.add_accel_group(accel_group) self.add_accel_group(accel_group)
@ -199,12 +199,12 @@ class PaletteWindow(gtk.Window):
def get_invoker(self): def get_invoker(self):
return self._invoker return self._invoker
invoker = gobject.property(type=object, invoker = GObject.property(type=object,
getter=get_invoker, getter=get_invoker,
setter=set_invoker) setter=set_invoker)
def __realize_cb(self, widget): def __realize_cb(self, widget):
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
def _mouse_slow_cb(self, widget): def _mouse_slow_cb(self, widget):
self._mouse_detector.stop() self._mouse_detector.stop()
@ -240,16 +240,16 @@ class PaletteWindow(gtk.Window):
def get_group_id(self): def get_group_id(self):
return self._group_id return self._group_id
group_id = gobject.property(type=str, group_id = GObject.property(type=str,
getter=get_group_id, getter=get_group_id,
setter=set_group_id) setter=set_group_id)
def do_size_request(self, requisition): def do_size_request(self, requisition):
gtk.Window.do_size_request(self, requisition) Gtk.Window.do_size_request(self, requisition)
requisition.width = max(requisition.width, style.GRID_CELL_SIZE * 2) requisition.width = max(requisition.width, style.GRID_CELL_SIZE * 2)
def do_size_allocate(self, allocation): def do_size_allocate(self, allocation):
gtk.Window.do_size_allocate(self, allocation) Gtk.Window.do_size_allocate(self, allocation)
if self._old_alloc is None or \ if self._old_alloc is None or \
self._old_alloc.x != allocation.x or \ self._old_alloc.x != allocation.x or \
@ -260,7 +260,7 @@ class PaletteWindow(gtk.Window):
# We need to store old allocation because when size_allocate # We need to store old allocation because when size_allocate
# is called widget.allocation is already updated. # is called widget.allocation is already updated.
# gtk.Window resizing is different from normal containers: # Gtk.Window resizing is different from normal containers:
# the X window is resized, widget.allocation is updated from # the X window is resized, widget.allocation is updated from
# the configure request handler and finally size_allocate is called. # the configure request handler and finally size_allocate is called.
self._old_alloc = allocation self._old_alloc = allocation
@ -279,18 +279,18 @@ class PaletteWindow(gtk.Window):
wstyle = self.get_style() wstyle = self.get_style()
if gap: if gap:
wstyle.paint_box_gap(event.window, gtk.STATE_PRELIGHT, wstyle.paint_box_gap(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_IN, event.area, self, 'palette', Gtk.ShadowType.IN, event.area, self, 'palette',
0, 0, allocation.width, allocation.height, 0, 0, allocation.width, allocation.height,
gap[0], gap[1], gap[2]) gap[0], gap[1], gap[2])
else: else:
wstyle.paint_box(event.window, gtk.STATE_PRELIGHT, wstyle.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_IN, event.area, self, 'palette', Gtk.ShadowType.IN, event.area, self, 'palette',
0, 0, allocation.width, allocation.height) 0, 0, allocation.width, allocation.height)
# Fall trough to the container expose handler. # Fall trough to the container expose handler.
# (Leaving out the window expose handler which redraws everything) # (Leaving out the window expose handler which redraws everything)
gtk.Bin.do_expose_event(self, event) Gtk.Bin.do_expose_event(self, event)
def update_position(self): def update_position(self):
invoker = self._invoker invoker = self._invoker
@ -362,13 +362,13 @@ class PaletteWindow(gtk.Window):
self.popup(immediate=True) self.popup(immediate=True)
def __enter_notify_event_cb(self, widget, event): def __enter_notify_event_cb(self, widget, event):
if event.detail != gtk.gdk.NOTIFY_INFERIOR and \ if event.detail != Gdk.NOTIFY_INFERIOR and \
event.mode == gtk.gdk.CROSSING_NORMAL: event.mode == Gdk.CROSSING_NORMAL:
self.on_enter(event) self.on_enter(event)
def __leave_notify_event_cb(self, widget, event): def __leave_notify_event_cb(self, widget, event):
if event.detail != gtk.gdk.NOTIFY_INFERIOR and \ if event.detail != Gdk.NOTIFY_INFERIOR and \
event.mode == gtk.gdk.CROSSING_NORMAL: event.mode == Gdk.CROSSING_NORMAL:
self.on_leave(event) self.on_leave(event)
def __show_cb(self, widget): def __show_cb(self, widget):
@ -393,7 +393,7 @@ class PaletteWindow(gtk.Window):
y = win_y + rectangle.y y = win_y + rectangle.y
width, height = self.size_request() width, height = self.size_request()
return gtk.gdk.Rectangle(x, y, width, height) return (x, y, width, height)
def get_palette_state(self): def get_palette_state(self):
return self._palette_state return self._palette_state
@ -429,15 +429,15 @@ class _PopdownAnimation(animator.Animation):
self._palette.popdown(immediate=True) self._palette.popdown(immediate=True)
class Invoker(gobject.GObject): class Invoker(GObject.GObject):
__gtype_name__ = 'SugarPaletteInvoker' __gtype_name__ = 'SugarPaletteInvoker'
__gsignals__ = { __gsignals__ = {
'mouse-enter': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'mouse-enter': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'mouse-leave': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'mouse-leave': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'right-click': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'right-click': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'focus-out': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), 'focus-out': (GObject.SignalFlags.RUN_FIRST, None, ([])),
} }
ANCHORED = 0 ANCHORED = 0
@ -449,12 +449,12 @@ class Invoker(gobject.GObject):
LEFT = [(-1.0, 0.0, 0.0, 0.0), (-1.0, -1.0, 0.0, 1.0)] LEFT = [(-1.0, 0.0, 0.0, 0.0), (-1.0, -1.0, 0.0, 1.0)]
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self.parent = None self.parent = None
self._screen_area = gtk.gdk.Rectangle(0, 0, gtk.gdk.screen_width(), self._screen_area = (0, 0, Gdk.Screen.width(),
gtk.gdk.screen_height()) Gdk.Screen.height())
self._position_hint = self.ANCHORED self._position_hint = self.ANCHORED
self._cursor_x = -1 self._cursor_x = -1
self._cursor_y = -1 self._cursor_y = -1
@ -477,7 +477,7 @@ class Invoker(gobject.GObject):
invoker_valign = alignment[3] invoker_valign = alignment[3]
if self._cursor_x == -1 or self._cursor_y == -1: if self._cursor_x == -1 or self._cursor_y == -1:
display = gtk.gdk.display_get_default() display = Gdk.Display.get_default()
screen_, x, y, mask_ = display.get_pointer() screen_, x, y, mask_ = display.get_pointer()
self._cursor_x = x self._cursor_x = x
self._cursor_y = y self._cursor_y = y
@ -486,7 +486,7 @@ class Invoker(gobject.GObject):
rect = self.get_rect() rect = self.get_rect()
else: else:
dist = style.PALETTE_CURSOR_DISTANCE dist = style.PALETTE_CURSOR_DISTANCE
rect = gtk.gdk.Rectangle(self._cursor_x - dist, rect = (self._cursor_x - dist,
self._cursor_y - dist, self._cursor_y - dist,
dist * 2, dist * 2) dist * 2, dist * 2)
@ -498,7 +498,7 @@ class Invoker(gobject.GObject):
y = rect.y + rect.height * invoker_valign + \ y = rect.y + rect.height * invoker_valign + \
palette_height * palette_valign palette_height * palette_valign
return gtk.gdk.Rectangle(int(x), int(y), return (int(x), int(y),
palette_width, palette_height) palette_width, palette_height)
def _in_screen(self, rect): def _in_screen(self, rect):
@ -647,9 +647,9 @@ class Invoker(gobject.GObject):
# menu item. We need to postpone destruction of the palette until # menu item. We need to postpone destruction of the palette until
# after all signals have propagated from the menu item to the # after all signals have propagated from the menu item to the
# palette owner. # palette owner.
gobject.idle_add(lambda old_palette=self._palette: GObject.idle_add(lambda old_palette=self._palette:
old_palette.destroy(), old_palette.destroy(),
priority=gobject.PRIORITY_LOW) priority=GObject.PRIORITY_LOW)
self._palette = palette self._palette = palette
@ -657,7 +657,7 @@ class Invoker(gobject.GObject):
self._palette.props.invoker = self self._palette.props.invoker = self
self._palette.connect('popdown', self.__palette_popdown_cb) self._palette.connect('popdown', self.__palette_popdown_cb)
palette = gobject.property( palette = GObject.property(
type=object, setter=set_palette, getter=get_palette) type=object, setter=set_palette, getter=get_palette)
def get_cache_palette(self): def get_cache_palette(self):
@ -666,7 +666,7 @@ class Invoker(gobject.GObject):
def set_cache_palette(self, cache_palette): def set_cache_palette(self, cache_palette):
self._cache_palette = cache_palette self._cache_palette = cache_palette
cache_palette = gobject.property(type=object, setter=set_cache_palette, cache_palette = GObject.property(type=object, setter=set_cache_palette,
getter=get_cache_palette) getter=get_cache_palette)
"""Whether the invoker will cache the palette after its creation. Defaults """Whether the invoker will cache the palette after its creation. Defaults
to True. to True.
@ -723,20 +723,20 @@ class WidgetInvoker(Invoker):
x = 0 x = 0
y = 0 y = 0
if self._widget.flags() & gtk.NO_WINDOW: if self._widget.flags() & Gtk.NO_WINDOW:
x += allocation.x x += allocation.x
y += allocation.y y += allocation.y
width = allocation.width width = allocation.width
height = allocation.height height = allocation.height
return gtk.gdk.Rectangle(x, y, width, height) return (x, y, width, height)
def has_rectangle_gap(self): def has_rectangle_gap(self):
return True return True
def draw_rectangle(self, event, palette): def draw_rectangle(self, event, palette):
if self._widget.flags() & gtk.NO_WINDOW: if self._widget.flags() & Gtk.NO_WINDOW:
x, y = self._widget.allocation.x, self._widget.allocation.y x, y = self._widget.allocation.x, self._widget.allocation.y
else: else:
x = y = 0 x = y = 0
@ -745,15 +745,15 @@ class WidgetInvoker(Invoker):
gap = _calculate_gap(self.get_rect(), palette.get_rect()) gap = _calculate_gap(self.get_rect(), palette.get_rect())
if gap: if gap:
wstyle.paint_box_gap(event.window, gtk.STATE_PRELIGHT, wstyle.paint_box_gap(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_IN, event.area, self._widget, Gtk.ShadowType.IN, event.area, self._widget,
'palette-invoker', x, y, 'palette-invoker', x, y,
self._widget.allocation.width, self._widget.allocation.width,
self._widget.allocation.height, self._widget.allocation.height,
gap[0], gap[1], gap[2]) gap[0], gap[1], gap[2])
else: else:
wstyle.paint_box(event.window, gtk.STATE_PRELIGHT, wstyle.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_IN, event.area, self._widget, Gtk.ShadowType.IN, event.area, self._widget,
'palette-invoker', x, y, 'palette-invoker', x, y,
self._widget.allocation.width, self._widget.allocation.width,
self._widget.allocation.height) self._widget.allocation.height)
@ -784,7 +784,7 @@ class WidgetInvoker(Invoker):
def _get_widget(self): def _get_widget(self):
return self._widget return self._widget
widget = gobject.property(type=object, getter=_get_widget, setter=None) widget = GObject.property(type=object, getter=_get_widget, setter=None)
class ToolInvoker(WidgetInvoker): class ToolInvoker(WidgetInvoker):
@ -796,14 +796,14 @@ class ToolInvoker(WidgetInvoker):
self.attach_tool(parent) self.attach_tool(parent)
def attach_tool(self, widget): def attach_tool(self, widget):
self.attach_widget(widget, widget.child) self.attach_widget(widget, widget.get_child())
def _get_alignments(self): def _get_alignments(self):
parent = self._widget.get_parent() parent = self._widget.get_parent()
if parent is None: if parent is None:
return WidgetInvoker._get_alignments(self) return WidgetInvoker._get_alignments(self)
if parent.get_orientation() is gtk.ORIENTATION_HORIZONTAL: if parent.get_orientation() is Gtk.Orientation.HORIZONTAL:
return self.BOTTOM + self.TOP return self.BOTTOM + self.TOP
else: else:
return self.LEFT + self.RIGHT return self.LEFT + self.RIGHT
@ -851,14 +851,14 @@ class CellRendererInvoker(Invoker):
x = 0 x = 0
y = 0 y = 0
if self._tree_view.flags() & gtk.NO_WINDOW: if self._tree_view.flags() & Gtk.NO_WINDOW:
x += allocation.x x += allocation.x
y += allocation.y y += allocation.y
width = allocation.width width = allocation.width
height = allocation.height height = allocation.height
return gtk.gdk.Rectangle(x, y, width, height) return (x, y, width, height)
def __motion_notify_event_cb(self, widget, event): def __motion_notify_event_cb(self, widget, event):
if event.window != widget.get_bin_window(): if event.window != widget.get_bin_window():

@ -19,12 +19,12 @@
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
class Panel(gtk.VBox): class Panel(Gtk.VBox):
__gtype_name__ = 'SugarPanel' __gtype_name__ = 'SugarPanel'
def __init__(self): def __init__(self):
gtk.VBox.__init__(self) GObject.GObject.__init__(self)

@ -15,7 +15,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk from gi.repository import Gtk
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics.palette import Palette from sugar3.graphics.palette import Palette
@ -63,7 +63,7 @@ class RadioPalette(Palette):
def __init__(self, **kwargs): def __init__(self, **kwargs):
Palette.__init__(self, **kwargs) Palette.__init__(self, **kwargs)
self.button_box = gtk.HBox() self.button_box = Gtk.HBox()
self.button_box.show() self.button_box.show()
self.set_content(self.button_box) self.set_content(self.button_box)
@ -75,7 +75,7 @@ class RadioPalette(Palette):
button.show() button.show()
button.connect('clicked', self.__clicked_cb) button.connect('clicked', self.__clicked_cb)
self.button_box.pack_start(button, fill=False) self.button_box.pack_start(button, True, False, 0)
button.palette_label = label button.palette_label = label
if not children: if not children:

@ -20,15 +20,15 @@
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.palette import Palette, ToolInvoker from sugar3.graphics.palette import Palette, ToolInvoker
from sugar3.graphics import toolbutton from sugar3.graphics import toolbutton
class RadioToolButton(gtk.RadioToolButton): class RadioToolButton(Gtk.RadioToolButton):
""" """
An implementation of a "push" button. An implementation of a "push" button.
@ -42,7 +42,7 @@ class RadioToolButton(gtk.RadioToolButton):
self._xo_color = None self._xo_color = None
self._palette_invoker = ToolInvoker() self._palette_invoker = ToolInvoker()
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
self._palette_invoker.attach_tool(self) self._palette_invoker.attach_tool(self)
@ -73,12 +73,12 @@ class RadioToolButton(gtk.RadioToolButton):
self._tooltip = tooltip self._tooltip = tooltip
# Set label, shows up when toolbar overflows # Set label, shows up when toolbar overflows
gtk.RadioToolButton.set_label(self, tooltip) Gtk.RadioToolButton.set_label(self, tooltip)
def get_tooltip(self): def get_tooltip(self):
return self._tooltip return self._tooltip
tooltip = gobject.property(type=str, setter=set_tooltip, tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip) getter=get_tooltip)
def set_accelerator(self, accelerator): def set_accelerator(self, accelerator):
@ -112,13 +112,13 @@ class RadioToolButton(gtk.RadioToolButton):
""" """
return self._accelerator return self._accelerator
accelerator = gobject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def set_named_icon(self, named_icon): def set_named_icon(self, named_icon):
icon = Icon(icon_name=named_icon, icon = Icon(icon_name=named_icon,
xo_color=self._xo_color, xo_color=self._xo_color,
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon_size=Gtk.IconSize.LARGE_TOOLBAR)
self.set_icon_widget(icon) self.set_icon_widget(icon)
icon.show() icon.show()
@ -128,7 +128,7 @@ class RadioToolButton(gtk.RadioToolButton):
else: else:
return None return None
named_icon = gobject.property(type=str, setter=set_named_icon, named_icon = GObject.property(type=str, setter=set_named_icon,
getter=get_named_icon) getter=get_named_icon)
def set_xo_color(self, xo_color): def set_xo_color(self, xo_color):
@ -140,7 +140,7 @@ class RadioToolButton(gtk.RadioToolButton):
def get_xo_color(self): def get_xo_color(self):
return self._xo_color return self._xo_color
xo_color = gobject.property(type=object, setter=set_xo_color, xo_color = GObject.property(type=object, setter=set_xo_color,
getter=get_xo_color) getter=get_xo_color)
def create_palette(self): def create_palette(self):
@ -152,7 +152,7 @@ class RadioToolButton(gtk.RadioToolButton):
def set_palette(self, palette): def set_palette(self, palette):
self._palette_invoker.palette = palette self._palette_invoker.palette = palette
palette = gobject.property( palette = GObject.property(
type=object, setter=set_palette, getter=get_palette) type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self): def get_palette_invoker(self):
@ -162,7 +162,7 @@ class RadioToolButton(gtk.RadioToolButton):
self._palette_invoker.detach() self._palette_invoker.detach()
self._palette_invoker = palette_invoker self._palette_invoker = palette_invoker
palette_invoker = gobject.property( palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker) type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def do_expose_event(self, event): def do_expose_event(self, event):
@ -172,11 +172,11 @@ class RadioToolButton(gtk.RadioToolButton):
if self.palette and self.palette.is_up(): if self.palette and self.palette.is_up():
invoker = self.palette.props.invoker invoker = self.palette.props.invoker
invoker.draw_rectangle(event, self.palette) invoker.draw_rectangle(event, self.palette)
elif child.state == gtk.STATE_PRELIGHT: elif child.state == Gtk.StateType.PRELIGHT:
child.style.paint_box(event.window, gtk.STATE_PRELIGHT, child.style.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_NONE, event.area, Gtk.ShadowType.NONE, event.area,
child, 'toolbutton-prelight', child, 'toolbutton-prelight',
allocation.x, allocation.y, allocation.x, allocation.y,
allocation.width, allocation.height) allocation.width, allocation.height)
gtk.RadioToolButton.do_expose_event(self, event) Gtk.RadioToolButton.do_expose_event(self, event)

@ -25,10 +25,10 @@ STABLE.
import os import os
import logging import logging
from gtk import gdk from gi.repository import Gdk
import gtk from gi.repository import Gtk
import pango from gi.repository import Pango
import gconf from gi.repository import GConf
FOCUS_LINE_WIDTH = 2 FOCUS_LINE_WIDTH = 2
@ -54,7 +54,7 @@ class Font(object):
return self._desc return self._desc
def get_pango_desc(self): def get_pango_desc(self):
return pango.FontDescription(self._desc) return Pango.FontDescription(self._desc)
class Color(object): class Color(object):
@ -71,7 +71,7 @@ class Color(object):
(int(self._g * 255) << 16) + (int(self._r * 255) << 24) (int(self._g * 255) << 16) + (int(self._r * 255) << 24)
def get_gdk_color(self): def get_gdk_color(self):
return gtk.gdk.Color(int(self._r * 65535), int(self._g * 65535), return Gdk.Color(int(self._r * 65535), int(self._g * 65535),
int(self._b * 65535)) int(self._b * 65535))
def get_html(self): def get_html(self):
@ -116,7 +116,7 @@ MEDIUM_ICON_SIZE = zoom(55 * 1.5)
LARGE_ICON_SIZE = zoom(55 * 2.0) LARGE_ICON_SIZE = zoom(55 * 2.0)
XLARGE_ICON_SIZE = zoom(55 * 2.75) XLARGE_ICON_SIZE = zoom(55 * 2.75)
client = gconf.client_get_default() client = GConf.Client.get_default()
FONT_SIZE = client.get_float('/desktop/sugar/font/default_size') FONT_SIZE = client.get_float('/desktop/sugar/font/default_size')
FONT_FACE = client.get_string('/desktop/sugar/font/default_face') FONT_FACE = client.get_string('/desktop/sugar/font/default_face')

@ -19,19 +19,19 @@
STABLE. STABLE.
""" """
import gobject from gi.repository import GObject
import gtk from gi.repository import Gtk
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.palette import Palette, ToolInvoker from sugar3.graphics.palette import Palette, ToolInvoker
class ToggleToolButton(gtk.ToggleToolButton): class ToggleToolButton(Gtk.ToggleToolButton):
__gtype_name__ = 'SugarToggleToolButton' __gtype_name__ = 'SugarToggleToolButton'
def __init__(self, named_icon=None): def __init__(self, named_icon=None):
gtk.ToggleToolButton.__init__(self) GObject.GObject.__init__(self)
self._palette_invoker = ToolInvoker(self) self._palette_invoker = ToolInvoker(self)
self.set_named_icon(named_icon) self.set_named_icon(named_icon)
@ -56,7 +56,7 @@ class ToggleToolButton(gtk.ToggleToolButton):
def set_palette(self, palette): def set_palette(self, palette):
self._palette_invoker.palette = palette self._palette_invoker.palette = palette
palette = gobject.property( palette = GObject.property(
type=object, setter=set_palette, getter=get_palette) type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self): def get_palette_invoker(self):
@ -66,7 +66,7 @@ class ToggleToolButton(gtk.ToggleToolButton):
self._palette_invoker.detach() self._palette_invoker.detach()
self._palette_invoker = palette_invoker self._palette_invoker = palette_invoker
palette_invoker = gobject.property( palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker) type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def set_tooltip(self, text): def set_tooltip(self, text):
@ -79,13 +79,13 @@ class ToggleToolButton(gtk.ToggleToolButton):
if self.palette and self.palette.is_up(): if self.palette and self.palette.is_up():
invoker = self.palette.props.invoker invoker = self.palette.props.invoker
invoker.draw_rectangle(event, self.palette) invoker.draw_rectangle(event, self.palette)
elif child.state == gtk.STATE_PRELIGHT: elif child.state == Gtk.StateType.PRELIGHT:
child.style.paint_box(event.window, gtk.STATE_PRELIGHT, child.style.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_NONE, event.area, Gtk.ShadowType.NONE, event.area,
child, 'toolbutton-prelight', child, 'toolbutton-prelight',
allocation.x, allocation.y, allocation.x, allocation.y,
allocation.width, allocation.height) allocation.width, allocation.height)
gtk.ToggleToolButton.do_expose_event(self, event) Gtk.ToggleToolButton.do_expose_event(self, event)
palette = property(get_palette, set_palette) palette = property(get_palette, set_palette)

@ -15,8 +15,8 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics import style from sugar3.graphics import style
from sugar3.graphics.palette import PaletteWindow, ToolInvoker from sugar3.graphics.palette import PaletteWindow, ToolInvoker
@ -42,7 +42,7 @@ class ToolbarButton(ToolButton):
if hasattr(self.parent, 'owner'): if hasattr(self.parent, 'owner'):
if self.page_widget and previous_toplevel is None: if self.page_widget and previous_toplevel is None:
self._unparent() self._unparent()
self.parent.owner.pack_start(self.page_widget) self.parent.owner.pack_start(self.page_widget, True, True, 0)
self.set_expanded(False) self.set_expanded(False)
def get_toolbar_box(self): def get_toolbar_box(self):
@ -68,7 +68,7 @@ class ToolbarButton(ToolButton):
self.props.palette = _ToolbarPalette(invoker=ToolInvoker(self)) self.props.palette = _ToolbarPalette(invoker=ToolInvoker(self))
self._move_page_to_palette() self._move_page_to_palette()
page = gobject.property(type=object, getter=get_page, setter=set_page) page = GObject.property(type=object, getter=get_page, setter=set_page)
def is_in_palette(self): def is_in_palette(self):
return self.page is not None and \ return self.page is not None and \
@ -103,9 +103,9 @@ class ToolbarButton(ToolButton):
self._unparent() self._unparent()
self.modify_bg(gtk.STATE_NORMAL, box.background) self.modify_bg(Gtk.StateType.NORMAL, box.background)
_setup_page(self.page_widget, box.background, box.props.padding) _setup_page(self.page_widget, box.background, box.props.padding)
box.pack_start(self.page_widget) box.pack_start(self.page_widget, True, True, 0)
def _move_page_to_palette(self): def _move_page_to_palette(self):
if self.is_in_palette(): if self.is_in_palette():
@ -125,43 +125,43 @@ class ToolbarButton(ToolButton):
if not self.is_expanded() or self.props.palette is not None and \ if not self.is_expanded() or self.props.palette is not None and \
self.props.palette.is_up(): self.props.palette.is_up():
ToolButton.do_expose_event(self, event) ToolButton.do_expose_event(self, event)
_paint_arrow(self, event, gtk.ARROW_DOWN) _paint_arrow(self, event, Gtk.ArrowType.DOWN)
return return
alloc = self.allocation alloc = self.allocation
self.get_style().paint_box(event.window, self.get_style().paint_box(event.window,
gtk.STATE_NORMAL, gtk.SHADOW_IN, event.area, self, Gtk.StateType.NORMAL, Gtk.ShadowType.IN, event.area, self,
'palette-invoker', alloc.x, 0, 'palette-invoker', alloc.x, 0,
alloc.width, alloc.height + style.FOCUS_LINE_WIDTH) alloc.width, alloc.height + style.FOCUS_LINE_WIDTH)
if self.child.state != gtk.STATE_PRELIGHT: if self.get_child().state != Gtk.StateType.PRELIGHT:
self.get_style().paint_box(event.window, self.get_style().paint_box(event.window,
gtk.STATE_NORMAL, gtk.SHADOW_NONE, event.area, self, None, Gtk.StateType.NORMAL, Gtk.ShadowType.NONE, event.area, self, None,
alloc.x + style.FOCUS_LINE_WIDTH, style.FOCUS_LINE_WIDTH, alloc.x + style.FOCUS_LINE_WIDTH, style.FOCUS_LINE_WIDTH,
alloc.width - style.FOCUS_LINE_WIDTH * 2, alloc.height) alloc.width - style.FOCUS_LINE_WIDTH * 2, alloc.height)
gtk.ToolButton.do_expose_event(self, event) Gtk.ToolButton.do_expose_event(self, event)
_paint_arrow(self, event, gtk.ARROW_UP) _paint_arrow(self, event, Gtk.ArrowType.UP)
class ToolbarBox(gtk.VBox): class ToolbarBox(Gtk.VBox):
def __init__(self, padding=style.TOOLBOX_HORIZONTAL_PADDING): def __init__(self, padding=style.TOOLBOX_HORIZONTAL_PADDING):
gtk.VBox.__init__(self) GObject.GObject.__init__(self)
self._expanded_button_index = -1 self._expanded_button_index = -1
self.background = None self.background = None
self._toolbar = gtk.Toolbar() self._toolbar = Gtk.Toolbar()
self._toolbar.owner = self self._toolbar.owner = self
self._toolbar.connect('remove', self.__remove_cb) self._toolbar.connect('remove', self.__remove_cb)
self._toolbar_widget, self._toolbar_alignment = \ self._toolbar_widget, self._toolbar_alignment = \
_embed_page(gtk.EventBox, self._toolbar) _embed_page(Gtk.EventBox, self._toolbar)
self.pack_start(self._toolbar_widget) self.pack_start(self._toolbar_widget, True, True, 0)
self.props.padding = padding self.props.padding = padding
self.modify_bg(gtk.STATE_NORMAL, self.modify_bg(Gtk.StateType.NORMAL,
style.COLOR_TOOLBAR_GREY.get_gdk_color()) style.COLOR_TOOLBAR_GREY.get_gdk_color())
def get_toolbar(self): def get_toolbar(self):
@ -188,11 +188,11 @@ class ToolbarBox(gtk.VBox):
def set_padding(self, pad): def set_padding(self, pad):
self._toolbar_alignment.set_padding(0, 0, pad, pad) self._toolbar_alignment.set_padding(0, 0, pad, pad)
padding = gobject.property(type=object, padding = GObject.property(type=object,
getter=get_padding, setter=set_padding) getter=get_padding, setter=set_padding)
def modify_bg(self, state, color): def modify_bg(self, state, color):
if state == gtk.STATE_NORMAL: if state == Gtk.StateType.NORMAL:
self.background = color self.background = color
self._toolbar_widget.modify_bg(state, color) self._toolbar_widget.modify_bg(state, color)
self.toolbar.modify_bg(state, color) self.toolbar.modify_bg(state, color)
@ -246,9 +246,9 @@ class _ToolbarPalette(PaletteWindow):
self.popdown() self.popdown()
def do_size_request(self, requisition): def do_size_request(self, requisition):
gtk.Window.do_size_request(self, requisition) Gtk.Window.do_size_request(self, requisition)
requisition.width = max(requisition.width, requisition.width = max(requisition.width,
gtk.gdk.screen_width()) Gdk.Screen.width())
def popup(self, immediate=False): def popup(self, immediate=False):
button = self.expanded_button button = self.expanded_button
@ -264,10 +264,10 @@ class _ToolbarPalette(PaletteWindow):
self.popdown(immediate=True) self.popdown(immediate=True)
class _Box(gtk.EventBox): class _Box(Gtk.EventBox):
def __init__(self): def __init__(self):
gtk.EventBox.__init__(self) GObject.GObject.__init__(self)
self.connect('expose-event', self.do_expose_event) self.connect('expose-event', self.do_expose_event)
self.set_app_paintable(True) self.set_app_paintable(True)
@ -276,12 +276,12 @@ class _Box(gtk.EventBox):
return return
alloc = self.parent.expanded_button.allocation alloc = self.parent.expanded_button.allocation
self.get_style().paint_box(event.window, self.get_style().paint_box(event.window,
gtk.STATE_NORMAL, gtk.SHADOW_IN, event.area, self, Gtk.StateType.NORMAL, Gtk.ShadowType.IN, event.area, self,
'palette-invoker', -style.FOCUS_LINE_WIDTH, 0, 'palette-invoker', -style.FOCUS_LINE_WIDTH, 0,
self.allocation.width + style.FOCUS_LINE_WIDTH * 2, self.allocation.width + style.FOCUS_LINE_WIDTH * 2,
self.allocation.height + style.FOCUS_LINE_WIDTH) self.allocation.height + style.FOCUS_LINE_WIDTH)
self.get_style().paint_box(event.window, self.get_style().paint_box(event.window,
gtk.STATE_NORMAL, gtk.SHADOW_NONE, event.area, self, None, Gtk.StateType.NORMAL, Gtk.ShadowType.NONE, event.area, self, None,
alloc.x + style.FOCUS_LINE_WIDTH, 0, alloc.x + style.FOCUS_LINE_WIDTH, 0,
alloc.width - style.FOCUS_LINE_WIDTH * 2, alloc.width - style.FOCUS_LINE_WIDTH * 2,
style.FOCUS_LINE_WIDTH) style.FOCUS_LINE_WIDTH)
@ -289,27 +289,27 @@ class _Box(gtk.EventBox):
def _setup_page(page_widget, color, hpad): def _setup_page(page_widget, color, hpad):
vpad = style.FOCUS_LINE_WIDTH vpad = style.FOCUS_LINE_WIDTH
page_widget.child.set_padding(vpad, vpad, hpad, hpad) page_widget.get_child().set_padding(vpad, vpad, hpad, hpad)
page = _get_embedded_page(page_widget) page = _get_embedded_page(page_widget)
page.modify_bg(gtk.STATE_NORMAL, color) page.modify_bg(Gtk.StateType.NORMAL, color)
if isinstance(page, gtk.Container): if isinstance(page, Gtk.Container):
for i in page.get_children(): for i in page.get_children():
i.modify_bg(gtk.STATE_INSENSITIVE, color) i.modify_bg(Gtk.StateType.INSENSITIVE, color)
page_widget.modify_bg(gtk.STATE_NORMAL, color) page_widget.modify_bg(Gtk.StateType.NORMAL, color)
page_widget.modify_bg(gtk.STATE_PRELIGHT, color) page_widget.modify_bg(Gtk.StateType.PRELIGHT, color)
def _embed_page(box_class, page): def _embed_page(box_class, page):
page.show() page.show()
alignment = gtk.Alignment(0.0, 0.0, 1.0, 1.0) alignment = Gtk.Alignment.new(0.0, 0.0, 1.0, 1.0)
alignment.add(page) alignment.add(page)
alignment.show() alignment.show()
page_widget = box_class() page_widget = box_class()
page_widget.modify_bg(gtk.STATE_ACTIVE, page_widget.modify_bg(Gtk.StateType.ACTIVE,
style.COLOR_BUTTON_GREY.get_gdk_color()) style.COLOR_BUTTON_GREY.get_gdk_color())
page_widget.add(alignment) page_widget.add(alignment)
page_widget.show() page_widget.show()
@ -318,7 +318,7 @@ def _embed_page(box_class, page):
def _get_embedded_page(page_widget): def _get_embedded_page(page_widget):
return page_widget.child.child return page_widget.get_child().child
def _paint_arrow(widget, event, arrow_type): def _paint_arrow(widget, event, arrow_type):
@ -327,6 +327,6 @@ def _paint_arrow(widget, event, arrow_type):
y = alloc.y + alloc.height - int(style.TOOLBAR_ARROW_SIZE * .85) y = alloc.y + alloc.height - int(style.TOOLBAR_ARROW_SIZE * .85)
widget.get_style().paint_arrow(event.window, widget.get_style().paint_arrow(event.window,
gtk.STATE_NORMAL, gtk.SHADOW_NONE, event.area, widget, Gtk.StateType.NORMAL, Gtk.ShadowType.NONE, event.area, widget,
None, arrow_type, True, None, arrow_type, True,
x, y, style.TOOLBAR_ARROW_SIZE, style.TOOLBAR_ARROW_SIZE) x, y, style.TOOLBAR_ARROW_SIZE, style.TOOLBAR_ARROW_SIZE)

@ -19,35 +19,35 @@
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics import style from sugar3.graphics import style
class Toolbox(gtk.VBox): class Toolbox(Gtk.VBox):
__gtype_name__ = 'SugarToolbox' __gtype_name__ = 'SugarToolbox'
__gsignals__ = { __gsignals__ = {
'current-toolbar-changed': (gobject.SIGNAL_RUN_FIRST, 'current-toolbar-changed': (GObject.SignalFlags.RUN_FIRST,
gobject.TYPE_NONE, ([int])), None, ([int])),
} }
def __init__(self): def __init__(self):
gtk.VBox.__init__(self) GObject.GObject.__init__(self)
self._notebook = gtk.Notebook() self._notebook = Gtk.Notebook()
self._notebook.set_tab_pos(gtk.POS_BOTTOM) self._notebook.set_tab_pos(Gtk.PositionType.BOTTOM)
self._notebook.set_show_border(False) self._notebook.set_show_border(False)
self._notebook.set_show_tabs(False) self._notebook.set_show_tabs(False)
self._notebook.props.tab_vborder = style.TOOLBOX_TAB_VBORDER self._notebook.props.tab_vborder = style.TOOLBOX_TAB_VBORDER
self._notebook.props.tab_hborder = style.TOOLBOX_TAB_HBORDER self._notebook.props.tab_hborder = style.TOOLBOX_TAB_HBORDER
self.pack_start(self._notebook) self.pack_start(self._notebook, True, True, 0)
self._notebook.show() self._notebook.show()
self._separator = gtk.HSeparator() self._separator = Gtk.HSeparator()
self._separator.modify_bg(gtk.STATE_NORMAL, self._separator.modify_bg(Gtk.StateType.NORMAL,
style.COLOR_PANEL_GREY.get_gdk_color()) style.COLOR_PANEL_GREY.get_gdk_color())
self._separator.set_size_request(1, style.TOOLBOX_SEPARATOR_HEIGHT) self._separator.set_size_request(1, style.TOOLBOX_SEPARATOR_HEIGHT)
self.pack_start(self._separator, False) self.pack_start(self._separator, False)
@ -58,14 +58,14 @@ class Toolbox(gtk.VBox):
self.emit('current-toolbar-changed', notebook.props.page) self.emit('current-toolbar-changed', notebook.props.page)
def add_toolbar(self, name, toolbar): def add_toolbar(self, name, toolbar):
label = gtk.Label(name) label = Gtk.Label(label=name)
width, height_ = label.size_request() width, height_ = label.size_request()
label.set_size_request(max(width, style.TOOLBOX_TAB_LABEL_WIDTH), -1) label.set_size_request(max(width, style.TOOLBOX_TAB_LABEL_WIDTH), -1)
label.set_alignment(0.0, 0.5) label.set_alignment(0.0, 0.5)
event_box = gtk.EventBox() event_box = Gtk.EventBox()
alignment = gtk.Alignment(0.0, 0.0, 1.0, 1.0) alignment = Gtk.Alignment.new(0.0, 0.0, 1.0, 1.0)
alignment.set_padding(0, 0, style.TOOLBOX_HORIZONTAL_PADDING, alignment.set_padding(0, 0, style.TOOLBOX_HORIZONTAL_PADDING,
style.TOOLBOX_HORIZONTAL_PADDING) style.TOOLBOX_HORIZONTAL_PADDING)

@ -22,8 +22,8 @@ STABLE.
import logging import logging
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.palette import Palette, ToolInvoker from sugar3.graphics.palette import Palette, ToolInvoker
@ -31,21 +31,21 @@ from sugar3.graphics.palette import Palette, ToolInvoker
def _add_accelerator(tool_button): def _add_accelerator(tool_button):
if not tool_button.props.accelerator or not tool_button.get_toplevel() or \ if not tool_button.props.accelerator or not tool_button.get_toplevel() or \
not tool_button.child: not tool_button.get_child():
return return
# TODO: should we remove the accelerator from the prev top level? # TODO: should we remove the accelerator from the prev top level?
accel_group = tool_button.get_toplevel().get_data('sugar-accel-group') accel_group = tool_button.get_toplevel().get_data('sugar-accel-group')
if not accel_group: if not accel_group:
logging.warning('No gtk.AccelGroup in the top level window.') logging.warning('No Gtk.AccelGroup in the top level window.')
return return
keyval, mask = gtk.accelerator_parse(tool_button.props.accelerator) keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator)
# the accelerator needs to be set at the child, so the gtk.AccelLabel # the accelerator needs to be set at the child, so the Gtk.AccelLabel
# in the palette can pick it up. # in the palette can pick it up.
tool_button.child.add_accelerator('clicked', accel_group, keyval, mask, tool_button.get_child().add_accelerator('clicked', accel_group, keyval, mask,
gtk.ACCEL_LOCKED | gtk.ACCEL_VISIBLE) Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE)
def _hierarchy_changed_cb(tool_button, previous_toplevel): def _hierarchy_changed_cb(tool_button, previous_toplevel):
@ -57,7 +57,7 @@ def setup_accelerator(tool_button):
tool_button.connect('hierarchy-changed', _hierarchy_changed_cb) tool_button.connect('hierarchy-changed', _hierarchy_changed_cb)
class ToolButton(gtk.ToolButton): class ToolButton(Gtk.ToolButton):
__gtype_name__ = 'SugarToolButton' __gtype_name__ = 'SugarToolButton'
@ -66,7 +66,7 @@ class ToolButton(gtk.ToolButton):
self._tooltip = None self._tooltip = None
self._palette_invoker = ToolInvoker() self._palette_invoker = ToolInvoker()
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
self._palette_invoker.attach_tool(self) self._palette_invoker.attach_tool(self)
@ -97,12 +97,12 @@ class ToolButton(gtk.ToolButton):
self._tooltip = tooltip self._tooltip = tooltip
# Set label, shows up when toolbar overflows # Set label, shows up when toolbar overflows
gtk.ToolButton.set_label(self, tooltip) Gtk.ToolButton.set_label(self, tooltip)
def get_tooltip(self): def get_tooltip(self):
return self._tooltip return self._tooltip
tooltip = gobject.property(type=str, setter=set_tooltip, tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip) getter=get_tooltip)
def set_accelerator(self, accelerator): def set_accelerator(self, accelerator):
@ -112,7 +112,7 @@ class ToolButton(gtk.ToolButton):
def get_accelerator(self): def get_accelerator(self):
return self._accelerator return self._accelerator
accelerator = gobject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def set_icon(self, icon_name): def set_icon(self, icon_name):
@ -129,7 +129,7 @@ class ToolButton(gtk.ToolButton):
def set_palette(self, palette): def set_palette(self, palette):
self._palette_invoker.palette = palette self._palette_invoker.palette = palette
palette = gobject.property( palette = GObject.property(
type=object, setter=set_palette, getter=get_palette) type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self): def get_palette_invoker(self):
@ -139,7 +139,7 @@ class ToolButton(gtk.ToolButton):
self._palette_invoker.detach() self._palette_invoker.detach()
self._palette_invoker = palette_invoker self._palette_invoker = palette_invoker
palette_invoker = gobject.property( palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker) type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def do_expose_event(self, event): def do_expose_event(self, event):
@ -148,14 +148,14 @@ class ToolButton(gtk.ToolButton):
if self.palette and self.palette.is_up(): if self.palette and self.palette.is_up():
invoker = self.palette.props.invoker invoker = self.palette.props.invoker
invoker.draw_rectangle(event, self.palette) invoker.draw_rectangle(event, self.palette)
elif child.state == gtk.STATE_PRELIGHT: elif child.state == Gtk.StateType.PRELIGHT:
child.style.paint_box(event.window, gtk.STATE_PRELIGHT, child.style.paint_box(event.window, Gtk.StateType.PRELIGHT,
gtk.SHADOW_NONE, event.area, Gtk.ShadowType.NONE, event.area,
child, 'toolbutton-prelight', child, 'toolbutton-prelight',
allocation.x, allocation.y, allocation.x, allocation.y,
allocation.width, allocation.height) allocation.width, allocation.height)
gtk.ToolButton.do_expose_event(self, event) Gtk.ToolButton.do_expose_event(self, event)
def do_clicked(self): def do_clicked(self):
if self.palette: if self.palette:

@ -19,30 +19,30 @@
STABLE. STABLE.
""" """
import gtk from gi.repository import Gtk
import gobject from gi.repository import GObject
from sugar3.graphics.combobox import ComboBox from sugar3.graphics.combobox import ComboBox
from sugar3.graphics import style from sugar3.graphics import style
class ToolComboBox(gtk.ToolItem): class ToolComboBox(Gtk.ToolItem):
__gproperties__ = { __gproperties__ = {
'label-text': (str, None, None, None, gobject.PARAM_WRITABLE), 'label-text': (str, None, None, None, GObject.PARAM_WRITABLE),
} }
def __init__(self, combo=None, **kwargs): def __init__(self, combo=None, **kwargs):
self.label = None self.label = None
self._label_text = '' self._label_text = ''
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
self.set_border_width(style.DEFAULT_PADDING) self.set_border_width(style.DEFAULT_PADDING)
hbox = gtk.HBox(False, style.DEFAULT_SPACING) hbox = Gtk.HBox(False, style.DEFAULT_SPACING)
self.label = gtk.Label(self._label_text) self.label = Gtk.Label(label=self._label_text)
hbox.pack_start(self.label, False, False, 0) hbox.pack_start(self.label, False, False, 0)
self.label.show() self.label.show()
@ -51,7 +51,7 @@ class ToolComboBox(gtk.ToolItem):
else: else:
self.combo = ComboBox() self.combo = ComboBox()
hbox.pack_start(self.combo) hbox.pack_start(self.combo, True, True, 0)
self.combo.show() self.combo.show()
self.add(hbox) self.add(hbox)

@ -19,8 +19,8 @@
STABLE. STABLE.
""" """
import gobject from gi.repository import GObject
import gtk from gi.repository import Gtk
from sugar3.graphics import style from sugar3.graphics import style
from sugar3.graphics.palette import ToolInvoker from sugar3.graphics.palette import ToolInvoker
@ -32,12 +32,12 @@ _PREVIOUS_PAGE = 0
_NEXT_PAGE = 1 _NEXT_PAGE = 1
class _TrayViewport(gtk.Viewport): class _TrayViewport(Gtk.Viewport):
__gproperties__ = { __gproperties__ = {
'scrollable': (bool, None, None, False, gobject.PARAM_READABLE), 'scrollable': (bool, None, None, False, GObject.PARAM_READABLE),
'can-scroll-prev': (bool, None, None, False, gobject.PARAM_READABLE), 'can-scroll-prev': (bool, None, None, False, GObject.PARAM_READABLE),
'can-scroll-next': (bool, None, None, False, gobject.PARAM_READABLE), 'can-scroll-next': (bool, None, None, False, GObject.PARAM_READABLE),
} }
def __init__(self, orientation): def __init__(self, orientation):
@ -46,11 +46,11 @@ class _TrayViewport(gtk.Viewport):
self._can_scroll_next = False self._can_scroll_next = False
self._can_scroll_prev = False self._can_scroll_prev = False
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self.set_shadow_type(gtk.SHADOW_NONE) self.set_shadow_type(Gtk.ShadowType.NONE)
self.traybar = gtk.Toolbar() self.traybar = Gtk.Toolbar()
self.traybar.set_orientation(orientation) self.traybar.set_orientation(orientation)
self.traybar.set_show_arrow(False) self.traybar.set_show_arrow(False)
self.add(self.traybar) self.add(self.traybar)
@ -58,7 +58,7 @@ class _TrayViewport(gtk.Viewport):
self.connect('size_allocate', self._size_allocate_cb) self.connect('size_allocate', self._size_allocate_cb)
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
adj = self.get_hadjustment() adj = self.get_hadjustment()
else: else:
adj = self.get_vadjustment() adj = self.get_vadjustment()
@ -76,7 +76,7 @@ class _TrayViewport(gtk.Viewport):
assert item in self.traybar.get_children() assert item in self.traybar.get_children()
# Get the allocation, and make sure that it is visible # Get the allocation, and make sure that it is visible
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
adj = self.get_hadjustment() adj = self.get_hadjustment()
start = item.allocation.x start = item.allocation.x
stop = item.allocation.x + item.allocation.width stop = item.allocation.x + item.allocation.width
@ -92,7 +92,7 @@ class _TrayViewport(gtk.Viewport):
def _scroll_next(self): def _scroll_next(self):
allocation = self.get_allocation() allocation = self.get_allocation()
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
adj = self.get_hadjustment() adj = self.get_hadjustment()
new_value = adj.value + allocation.width new_value = adj.value + allocation.width
adj.value = min(new_value, adj.upper - allocation.width) adj.value = min(new_value, adj.upper - allocation.width)
@ -103,7 +103,7 @@ class _TrayViewport(gtk.Viewport):
def _scroll_previous(self): def _scroll_previous(self):
allocation = self.get_allocation() allocation = self.get_allocation()
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
adj = self.get_hadjustment() adj = self.get_hadjustment()
new_value = adj.value - allocation.width new_value = adj.value - allocation.width
adj.value = max(adj.lower, new_value) adj.value = max(adj.lower, new_value)
@ -114,7 +114,7 @@ class _TrayViewport(gtk.Viewport):
def do_size_request(self, requisition): def do_size_request(self, requisition):
child_requisition = self.get_child().size_request() child_requisition = self.get_child().size_request()
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
requisition[0] = 0 requisition[0] = 0
requisition[1] = child_requisition[1] requisition[1] = child_requisition[1]
else: else:
@ -131,7 +131,7 @@ class _TrayViewport(gtk.Viewport):
def _size_allocate_cb(self, viewport, allocation): def _size_allocate_cb(self, viewport, allocation):
bar_requisition = self.traybar.get_child_requisition() bar_requisition = self.traybar.get_child_requisition()
if self.orientation == gtk.ORIENTATION_HORIZONTAL: if self.orientation == Gtk.Orientation.HORIZONTAL:
scrollable = bar_requisition[0] > allocation.width scrollable = bar_requisition[0] > allocation.width
else: else:
scrollable = bar_requisition[1] > allocation.height scrollable = bar_requisition[1] > allocation.height
@ -171,10 +171,10 @@ class _TrayScrollButton(ToolButton):
self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE) self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE)
self.icon = Icon(icon_name=icon_name, self.icon = Icon(icon_name=icon_name,
icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) icon_size=Gtk.IconSize.SMALL_TOOLBAR)
# The alignment is a hack to work around gtk.ToolButton code # The alignment is a hack to work around Gtk.ToolButton code
# that sets the icon_size when the icon_widget is a gtk.Image # that sets the icon_size when the icon_widget is a Gtk.Image
alignment = gtk.Alignment(0.5, 0.5) alignment = Gtk.Alignment.new(0.5, 0.5)
alignment.add(self.icon) alignment.add(self.icon)
self.set_icon_widget(alignment) self.set_icon_widget(alignment)
alignment.show_all() alignment.show_all()
@ -216,27 +216,27 @@ ALIGN_TO_START = 0
ALIGN_TO_END = 1 ALIGN_TO_END = 1
class HTray(gtk.HBox): class HTray(Gtk.HBox):
__gtype_name__ = 'SugarHTray' __gtype_name__ = 'SugarHTray'
__gproperties__ = { __gproperties__ = {
'align': (int, None, None, 0, 1, ALIGN_TO_START, 'align': (int, None, None, 0, 1, ALIGN_TO_START,
gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY),
'drag-active': (bool, None, None, False, gobject.PARAM_READWRITE), 'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._drag_active = False self._drag_active = False
self.align = ALIGN_TO_START self.align = ALIGN_TO_START
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
scroll_left = _TrayScrollButton('go-left', _PREVIOUS_PAGE) scroll_left = _TrayScrollButton('go-left', _PREVIOUS_PAGE)
self.pack_start(scroll_left, False, False, 0) self.pack_start(scroll_left, False, False, 0)
self._viewport = _TrayViewport(gtk.ORIENTATION_HORIZONTAL) self._viewport = _TrayViewport(Gtk.Orientation.HORIZONTAL)
self.pack_start(self._viewport) self.pack_start(self._viewport, True, True, 0)
self._viewport.show() self._viewport.show()
scroll_right = _TrayScrollButton('go-right', _NEXT_PAGE) scroll_right = _TrayScrollButton('go-right', _NEXT_PAGE)
@ -246,7 +246,7 @@ class HTray(gtk.HBox):
scroll_right.viewport = self._viewport scroll_right.viewport = self._viewport
if self.align == ALIGN_TO_END: if self.align == ALIGN_TO_END:
spacer = gtk.SeparatorToolItem() spacer = Gtk.SeparatorToolItem()
spacer.set_size_request(0, 0) spacer.set_size_request(0, 0)
spacer.props.draw = False spacer.props.draw = False
spacer.set_expand(True) spacer.set_expand(True)
@ -273,10 +273,10 @@ class HTray(gtk.HBox):
if self._drag_active != active: if self._drag_active != active:
self._drag_active = active self._drag_active = active
if self._drag_active: if self._drag_active:
self._viewport.traybar.modify_bg(gtk.STATE_NORMAL, self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL,
style.COLOR_BLACK.get_gdk_color()) style.COLOR_BLACK.get_gdk_color())
else: else:
self._viewport.traybar.modify_bg(gtk.STATE_NORMAL, None) self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None)
def get_children(self): def get_children(self):
children = self._viewport.traybar.get_children()[:] children = self._viewport.traybar.get_children()[:]
@ -302,27 +302,27 @@ class HTray(gtk.HBox):
self._viewport.scroll_to_item(item) self._viewport.scroll_to_item(item)
class VTray(gtk.VBox): class VTray(Gtk.VBox):
__gtype_name__ = 'SugarVTray' __gtype_name__ = 'SugarVTray'
__gproperties__ = { __gproperties__ = {
'align': (int, None, None, 0, 1, ALIGN_TO_START, 'align': (int, None, None, 0, 1, ALIGN_TO_START,
gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY),
'drag-active': (bool, None, None, False, gobject.PARAM_READWRITE), 'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._drag_active = False self._drag_active = False
self.align = ALIGN_TO_START self.align = ALIGN_TO_START
gobject.GObject.__init__(self, **kwargs) GObject.GObject.__init__(self, **kwargs)
scroll_up = _TrayScrollButton('go-up', _PREVIOUS_PAGE) scroll_up = _TrayScrollButton('go-up', _PREVIOUS_PAGE)
self.pack_start(scroll_up, False, False, 0) self.pack_start(scroll_up, False, False, 0)
self._viewport = _TrayViewport(gtk.ORIENTATION_VERTICAL) self._viewport = _TrayViewport(Gtk.Orientation.VERTICAL)
self.pack_start(self._viewport) self.pack_start(self._viewport, True, True, 0)
self._viewport.show() self._viewport.show()
scroll_down = _TrayScrollButton('go-down', _NEXT_PAGE) scroll_down = _TrayScrollButton('go-down', _NEXT_PAGE)
@ -332,7 +332,7 @@ class VTray(gtk.VBox):
scroll_down.viewport = self._viewport scroll_down.viewport = self._viewport
if self.align == ALIGN_TO_END: if self.align == ALIGN_TO_END:
spacer = gtk.SeparatorToolItem() spacer = Gtk.SeparatorToolItem()
spacer.set_size_request(0, 0) spacer.set_size_request(0, 0)
spacer.props.draw = False spacer.props.draw = False
spacer.set_expand(True) spacer.set_expand(True)
@ -359,10 +359,10 @@ class VTray(gtk.VBox):
if self._drag_active != active: if self._drag_active != active:
self._drag_active = active self._drag_active = active
if self._drag_active: if self._drag_active:
self._viewport.traybar.modify_bg(gtk.STATE_NORMAL, self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL,
style.COLOR_BLACK.get_gdk_color()) style.COLOR_BLACK.get_gdk_color())
else: else:
self._viewport.traybar.modify_bg(gtk.STATE_NORMAL, None) self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None)
def get_children(self): def get_children(self):
children = self._viewport.traybar.get_children()[:] children = self._viewport.traybar.get_children()[:]
@ -394,17 +394,17 @@ class TrayButton(ToolButton):
ToolButton.__init__(self, **kwargs) ToolButton.__init__(self, **kwargs)
class _IconWidget(gtk.EventBox): class _IconWidget(Gtk.EventBox):
__gtype_name__ = 'SugarTrayIconWidget' __gtype_name__ = 'SugarTrayIconWidget'
def __init__(self, icon_name=None, xo_color=None): def __init__(self, icon_name=None, xo_color=None):
gtk.EventBox.__init__(self) GObject.GObject.__init__(self)
self.set_app_paintable(True) self.set_app_paintable(True)
self._icon = Icon(icon_name=icon_name, xo_color=xo_color, self._icon = Icon(icon_name=icon_name, xo_color=xo_color,
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon_size=Gtk.IconSize.LARGE_TOOLBAR)
self.add(self._icon) self.add(self._icon)
self._icon.show() self._icon.show()
@ -414,18 +414,18 @@ class _IconWidget(gtk.EventBox):
invoker = palette.props.invoker invoker = palette.props.invoker
invoker.draw_rectangle(event, palette) invoker.draw_rectangle(event, palette)
gtk.EventBox.do_expose_event(self, event) Gtk.EventBox.do_expose_event(self, event)
def get_icon(self): def get_icon(self):
return self._icon return self._icon
class TrayIcon(gtk.ToolItem): class TrayIcon(Gtk.ToolItem):
__gtype_name__ = 'SugarTrayIcon' __gtype_name__ = 'SugarTrayIcon'
def __init__(self, icon_name=None, xo_color=None): def __init__(self, icon_name=None, xo_color=None):
gtk.ToolItem.__init__(self) Gtk.ToolItem.__init__(self)
self._icon_widget = _IconWidget(icon_name, xo_color) self._icon_widget = _IconWidget(icon_name, xo_color)
self.add(self._icon_widget) self.add(self._icon_widget)
@ -450,7 +450,7 @@ class TrayIcon(gtk.ToolItem):
def set_palette(self, palette): def set_palette(self, palette):
self._palette_invoker.palette = palette self._palette_invoker.palette = palette
palette = gobject.property( palette = GObject.property(
type=object, setter=set_palette, getter=get_palette) type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self): def get_palette_invoker(self):
@ -460,7 +460,7 @@ class TrayIcon(gtk.ToolItem):
self._palette_invoker.detach() self._palette_invoker.detach()
self._palette_invoker = palette_invoker self._palette_invoker = palette_invoker
palette_invoker = gobject.property( palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker) type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def get_icon(self): def get_icon(self):

@ -20,9 +20,9 @@
STABLE. STABLE.
""" """
import gobject from gi.repository import GObject
from gtk import gdk from gi.repository import Gdk
import gtk from gi.repository import Gtk
import warnings import warnings
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
@ -32,21 +32,21 @@ from sugar3.graphics import palettegroup
_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT = 2 _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT = 2
class UnfullscreenButton(gtk.Window): class UnfullscreenButton(Gtk.Window):
def __init__(self): def __init__(self):
gtk.Window.__init__(self) GObject.GObject.__init__(self)
self.set_decorated(False) self.set_decorated(False)
self.set_resizable(False) self.set_resizable(False)
self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
self.set_border_width(0) self.set_border_width(0)
self.props.accept_focus = False self.props.accept_focus = False
#Setup estimate of width, height #Setup estimate of width, height
w, h = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR) w, h = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)
self._width = w self._width = w
self._height = h self._height = h
@ -55,11 +55,11 @@ class UnfullscreenButton(gtk.Window):
screen = self.get_screen() screen = self.get_screen()
screen.connect('size-changed', self._screen_size_changed_cb) screen.connect('size-changed', self._screen_size_changed_cb)
self._button = gtk.Button() self._button = Gtk.Button()
self._button.set_relief(gtk.RELIEF_NONE) self._button.set_relief(Gtk.ReliefStyle.NONE)
self._icon = Icon(icon_name='view-return', self._icon = Icon(icon_name='view-return',
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon_size=Gtk.IconSize.LARGE_TOOLBAR)
self._icon.show() self._icon.show()
self._button.add(self._icon) self._button.add(self._icon)
@ -70,7 +70,7 @@ class UnfullscreenButton(gtk.Window):
self._button.connect('button-press-event', cb) self._button.connect('button-press-event', cb)
def _reposition(self): def _reposition(self):
x = gtk.gdk.screen_width() - self._width x = Gdk.Screen.width() - self._width
self.move(x, 0) self.move(x, 0)
def _size_request_cb(self, widget, req): def _size_request_cb(self, widget, req):
@ -82,12 +82,12 @@ class UnfullscreenButton(gtk.Window):
self._reposition() self._reposition()
class Window(gtk.Window): class Window(Gtk.Window):
def __init__(self, **args): def __init__(self, **args):
self._enable_fullscreen_mode = True self._enable_fullscreen_mode = True
gtk.Window.__init__(self, **args) GObject.GObject.__init__(self, **args)
self.set_decorated(False) self.set_decorated(False)
self.maximize() self.maximize()
@ -99,13 +99,13 @@ class Window(gtk.Window):
self._canvas = None self._canvas = None
self.tray = None self.tray = None
self.__vbox = gtk.VBox() self.__vbox = Gtk.VBox()
self.__hbox = gtk.HBox() self.__hbox = Gtk.HBox()
self.__vbox.pack_start(self.__hbox) self.__vbox.pack_start(self.__hbox, True, True, 0)
self.__hbox.show() self.__hbox.show()
self.add_events(gtk.gdk.POINTER_MOTION_HINT_MASK self.add_events(Gdk.EventMask.POINTER_MOTION_HINT_MASK
| gtk.gdk.POINTER_MOTION_MASK) | Gdk.EventMask.POINTER_MOTION_MASK)
self.connect('motion-notify-event', self.__motion_notify_cb) self.connect('motion-notify-event', self.__motion_notify_cb)
self.add(self.__vbox) self.add(self.__vbox)
@ -128,9 +128,9 @@ class Window(gtk.Window):
if self.window is None: if self.window is None:
self.show() self.show()
return return
timestamp = gtk.get_current_event_time() timestamp = Gtk.get_current_event_time()
if not timestamp: if not timestamp:
timestamp = gtk.gdk.x11_get_server_time(self.window) timestamp = GdkX11.get_server_time(self.window)
self.window.focus(timestamp) self.window.focus(timestamp)
def fullscreen(self): def fullscreen(self):
@ -146,11 +146,11 @@ class Window(gtk.Window):
self._unfullscreen_button.show() self._unfullscreen_button.show()
if self._unfullscreen_button_timeout_id is not None: if self._unfullscreen_button_timeout_id is not None:
gobject.source_remove(self._unfullscreen_button_timeout_id) GObject.source_remove(self._unfullscreen_button_timeout_id)
self._unfullscreen_button_timeout_id = None self._unfullscreen_button_timeout_id = None
self._unfullscreen_button_timeout_id = \ self._unfullscreen_button_timeout_id = \
gobject.timeout_add_seconds( \ GObject.timeout_add_seconds( \
_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \ _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \
self.__unfullscreen_button_timeout_cb) self.__unfullscreen_button_timeout_cb)
@ -166,7 +166,7 @@ class Window(gtk.Window):
self._unfullscreen_button.hide() self._unfullscreen_button.hide()
if self._unfullscreen_button_timeout_id: if self._unfullscreen_button_timeout_id:
gobject.source_remove(self._unfullscreen_button_timeout_id) GObject.source_remove(self._unfullscreen_button_timeout_id)
self._unfullscreen_button_timeout_id = None self._unfullscreen_button_timeout_id = None
def set_canvas(self, canvas): def set_canvas(self, canvas):
@ -174,7 +174,7 @@ class Window(gtk.Window):
self.__hbox.remove(self._canvas) self.__hbox.remove(self._canvas)
if canvas: if canvas:
self.__hbox.pack_start(canvas) self.__hbox.pack_start(canvas, True, True, 0)
self._canvas = canvas self._canvas = canvas
self.__vbox.set_focus_child(self._canvas) self.__vbox.set_focus_child(self._canvas)
@ -204,11 +204,11 @@ class Window(gtk.Window):
box = self.tray.get_parent() box = self.tray.get_parent()
box.remove(self.tray) box.remove(self.tray)
if position == gtk.POS_LEFT: if position == Gtk.PositionType.LEFT:
self.__hbox.pack_start(tray, False) self.__hbox.pack_start(tray, False)
elif position == gtk.POS_RIGHT: elif position == Gtk.PositionType.RIGHT:
self.__hbox.pack_end(tray, False) self.__hbox.pack_end(tray, False)
elif position == gtk.POS_BOTTOM: elif position == Gtk.PositionType.BOTTOM:
self.__vbox.pack_end(tray, False) self.__vbox.pack_end(tray, False)
self.tray = tray self.tray = tray
@ -236,13 +236,13 @@ class Window(gtk.Window):
self.__vbox.reorder_child(self._alert[0], 0) self.__vbox.reorder_child(self._alert[0], 0)
def __window_realize_cb(self, window): def __window_realize_cb(self, window):
group = gtk.Window() group = Gtk.Window()
group.realize() group.realize()
window.window.set_group(group.window) window.window.set_group(group.window)
def __key_press_cb(self, widget, event): def __key_press_cb(self, widget, event):
key = gtk.gdk.keyval_name(event.keyval) key = Gdk.keyval_name(event.keyval)
if event.state & gtk.gdk.MOD1_MASK: if event.get_state() & Gdk.ModifierType.MOD1_MASK:
if self.tray is not None and key == 'space': if self.tray is not None and key == 'space':
self.tray.props.visible = not self.tray.props.visible self.tray.props.visible = not self.tray.props.visible
return True return True
@ -262,11 +262,11 @@ class Window(gtk.Window):
else: else:
# Reset the timer # Reset the timer
if self._unfullscreen_button_timeout_id is not None: if self._unfullscreen_button_timeout_id is not None:
gobject.source_remove(self._unfullscreen_button_timeout_id) GObject.source_remove(self._unfullscreen_button_timeout_id)
self._unfullscreen_button_timeout_id = None self._unfullscreen_button_timeout_id = None
self._unfullscreen_button_timeout_id = \ self._unfullscreen_button_timeout_id = \
gobject.timeout_add_seconds( \ GObject.timeout_add_seconds( \
_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \ _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \
self.__unfullscreen_button_timeout_cb) self.__unfullscreen_button_timeout_cb)
return False return False
@ -282,7 +282,7 @@ class Window(gtk.Window):
def get_enable_fullscreen_mode(self): def get_enable_fullscreen_mode(self):
return self._enable_fullscreen_mode return self._enable_fullscreen_mode
enable_fullscreen_mode = gobject.property(type=object, enable_fullscreen_mode = GObject.property(type=object,
setter=set_enable_fullscreen_mode, getter=get_enable_fullscreen_mode) setter=set_enable_fullscreen_mode, getter=get_enable_fullscreen_mode)
# DEPRECATED # DEPRECATED

@ -22,7 +22,7 @@ STABLE.
import random import random
import logging import logging
import gconf from gi.repository import GConf
colors = [ colors = [
['#B20008', '#FF2B34'], \ ['#B20008', '#FF2B34'], \
@ -237,7 +237,7 @@ class XoColor:
elif not is_valid(color_string): elif not is_valid(color_string):
logging.debug('Color string is not valid: %s, ' logging.debug('Color string is not valid: %s, '
'fallback to default', color_string) 'fallback to default', color_string)
client = gconf.client_get_default() client = GConf.Client.get_default()
color_string = client.get_string('/desktop/sugar/user/color') color_string = client.get_string('/desktop/sugar/user/color')
randomize = False randomize = False
else: else:

@ -25,7 +25,7 @@ import urllib
import fcntl import fcntl
import tempfile import tempfile
import gobject from gi.repository import GObject
import SimpleHTTPServer import SimpleHTTPServer
import SocketServer import SocketServer
@ -60,12 +60,12 @@ class GlibTCPServer(SocketServer.TCPServer):
self.socket.setblocking(0) # Set nonblocking self.socket.setblocking(0) # Set nonblocking
# Watch the listener socket for data # Watch the listener socket for data
gobject.io_add_watch(self.socket, gobject.IO_IN, self._handle_accept) GObject.io_add_watch(self.socket, GObject.IO_IN, self._handle_accept)
def _handle_accept(self, source, condition): def _handle_accept(self, source, condition):
"""Process incoming data on the server's socket by doing an accept() """Process incoming data on the server's socket by doing an accept()
via handle_request().""" via handle_request()."""
if not (condition & gobject.IO_IN): if not (condition & GObject.IO_IN):
return True return True
self.handle_request() self.handle_request()
return True return True
@ -103,17 +103,17 @@ class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
"""Serve a GET request.""" """Serve a GET request."""
self._file = self.send_head() self._file = self.send_head()
if self._file: if self._file:
self._srcid = gobject.io_add_watch(self.wfile, gobject.IO_OUT | self._srcid = GObject.io_add_watch(self.wfile, GObject.IO_OUT |
gobject.IO_ERR, GObject.IO_ERR,
self._send_next_chunk) self._send_next_chunk)
else: else:
self._cleanup() self._cleanup()
def _send_next_chunk(self, source, condition): def _send_next_chunk(self, source, condition):
if condition & gobject.IO_ERR: if condition & GObject.IO_ERR:
self._cleanup() self._cleanup()
return False return False
if not (condition & gobject.IO_OUT): if not (condition & GObject.IO_OUT):
self._cleanup() self._cleanup()
return False return False
data = self._file.read(self.CHUNK_SIZE) data = self._file.read(self.CHUNK_SIZE)
@ -128,7 +128,7 @@ class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
self._file.close() self._file.close()
self._file = None self._file = None
if self._srcid > 0: if self._srcid > 0:
gobject.source_remove(self._srcid) GObject.source_remove(self._srcid)
self._srcid = 0 self._srcid = 0
if not self.wfile.closed: if not self.wfile.closed:
self.wfile.flush() self.wfile.flush()
@ -183,16 +183,16 @@ class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
return f return f
class GlibURLDownloader(gobject.GObject): class GlibURLDownloader(GObject.GObject):
"""Grabs a URL in chunks, returning to the mainloop after each chunk""" """Grabs a URL in chunks, returning to the mainloop after each chunk"""
__gsignals__ = { __gsignals__ = {
'finished': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'finished': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT])),
'error': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'error': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'progress': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'progress': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
} }
CHUNK_SIZE = 4096 CHUNK_SIZE = 4096
@ -208,7 +208,7 @@ class GlibURLDownloader(gobject.GObject):
self._suggested_fname = None self._suggested_fname = None
self._info = None self._info = None
self._written = 0 self._written = 0
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
def start(self, destfile=None, destfd=None): def start(self, destfile=None, destfd=None):
self._info = urllib.urlopen(self._url) self._info = urllib.urlopen(self._url)
@ -238,8 +238,8 @@ class GlibURLDownloader(gobject.GObject):
dir=self._destdir) dir=self._destdir)
fcntl.fcntl(self._info.fp.fileno(), fcntl.F_SETFD, os.O_NDELAY) fcntl.fcntl(self._info.fp.fileno(), fcntl.F_SETFD, os.O_NDELAY)
self._srcid = gobject.io_add_watch(self._info.fp.fileno(), self._srcid = GObject.io_add_watch(self._info.fp.fileno(),
gobject.IO_IN | gobject.IO_ERR, GObject.IO_IN | GObject.IO_ERR,
self._read_next_chunk) self._read_next_chunk)
def cancel(self): def cancel(self):
@ -264,11 +264,11 @@ class GlibURLDownloader(gobject.GObject):
return fname return fname
def _read_next_chunk(self, source, condition): def _read_next_chunk(self, source, condition):
if condition & gobject.IO_ERR: if condition & GObject.IO_ERR:
self.cleanup(remove=True) self.cleanup(remove=True)
self.emit('error', 'Error downloading file.') self.emit('error', 'Error downloading file.')
return False return False
elif not (condition & gobject.IO_IN): elif not (condition & GObject.IO_IN):
# shouldn't get here, but... # shouldn't get here, but...
return True return True
@ -298,7 +298,7 @@ class GlibURLDownloader(gobject.GObject):
def cleanup(self, remove=False): def cleanup(self, remove=False):
if self._srcid > 0: if self._srcid > 0:
gobject.source_remove(self._srcid) GObject.source_remove(self._srcid)
self._srcid = 0 self._srcid = 0
del self._info del self._info
self._info = None self._info = None

@ -26,7 +26,7 @@ from functools import partial
import dbus import dbus
from dbus import PROPERTIES_IFACE from dbus import PROPERTIES_IFACE
import gobject from gi.repository import GObject
from telepathy.client import Channel from telepathy.client import Channel
from telepathy.interfaces import CHANNEL, \ from telepathy.interfaces import CHANNEL, \
CHANNEL_INTERFACE_GROUP, \ CHANNEL_INTERFACE_GROUP, \
@ -47,7 +47,7 @@ CONN_INTERFACE_BUDDY_INFO = 'org.laptop.Telepathy.BuddyInfo'
_logger = logging.getLogger('sugar3.presence.activity') _logger = logging.getLogger('sugar3.presence.activity')
class Activity(gobject.GObject): class Activity(GObject.GObject):
"""UI interface for an Activity in the presence service """UI interface for an Activity in the presence service
Activities in the presence service represent your and other user's Activities in the presence service represent your and other user's
@ -61,24 +61,24 @@ class Activity(gobject.GObject):
joined joined
""" """
__gsignals__ = { __gsignals__ = {
'buddy-joined': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'buddy-joined': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'buddy-left': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'buddy-left': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'new-channel': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'new-channel': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'joined': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'joined': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT])),
} }
__gproperties__ = { __gproperties__ = {
'id': (str, None, None, None, gobject.PARAM_READABLE), 'id': (str, None, None, None, GObject.PARAM_READABLE),
'name': (str, None, None, None, gobject.PARAM_READWRITE), 'name': (str, None, None, None, GObject.PARAM_READWRITE),
'tags': (str, None, None, None, gobject.PARAM_READWRITE), 'tags': (str, None, None, None, GObject.PARAM_READWRITE),
'color': (str, None, None, None, gobject.PARAM_READWRITE), 'color': (str, None, None, None, GObject.PARAM_READWRITE),
'type': (str, None, None, None, gobject.PARAM_READABLE), 'type': (str, None, None, None, GObject.PARAM_READABLE),
'private': (bool, None, None, True, gobject.PARAM_READWRITE), 'private': (bool, None, None, True, GObject.PARAM_READWRITE),
'joined': (bool, None, None, False, gobject.PARAM_READABLE), 'joined': (bool, None, None, False, GObject.PARAM_READABLE),
} }
def __init__(self, account_path, connection, room_handle=None, def __init__(self, account_path, connection, room_handle=None,
@ -89,7 +89,7 @@ class Activity(gobject.GObject):
if properties is None: if properties is None:
properties = {} properties = {}
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._account_path = account_path self._account_path = account_path
self.telepathy_conn = connection self.telepathy_conn = connection
@ -469,14 +469,14 @@ class Activity(gobject.GObject):
self.telepathy_text_chan.Close() self.telepathy_text_chan.Close()
class _BaseCommand(gobject.GObject): class _BaseCommand(GObject.GObject):
__gsignals__ = { __gsignals__ = {
'finished': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'finished': (GObject.SignalFlags.RUN_FIRST, None,
([object])), ([object])),
} }
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self.text_channel = None self.text_channel = None
self.text_channel_group_flags = None self.text_channel_group_flags = None

@ -23,9 +23,9 @@ STABLE.
import logging import logging
import gobject from gi.repository import GObject
import dbus import dbus
import gconf from gi.repository import GConf
from telepathy.interfaces import CONNECTION, \ from telepathy.interfaces import CONNECTION, \
CONNECTION_INTERFACE_ALIASING, \ CONNECTION_INTERFACE_ALIASING, \
CONNECTION_INTERFACE_CONTACTS CONNECTION_INTERFACE_CONTACTS
@ -39,7 +39,7 @@ CONN_INTERFACE_BUDDY_INFO = 'org.laptop.Telepathy.BuddyInfo'
_logger = logging.getLogger('sugar3.presence.buddy') _logger = logging.getLogger('sugar3.presence.buddy')
class BaseBuddy(gobject.GObject): class BaseBuddy(GObject.GObject):
"""UI interface for a Buddy in the presence service """UI interface for a Buddy in the presence service
Each buddy interface tracks a set of activities and properties Each buddy interface tracks a set of activities and properties
@ -57,16 +57,16 @@ class BaseBuddy(gobject.GObject):
__gtype_name__ = 'PresenceBaseBuddy' __gtype_name__ = 'PresenceBaseBuddy'
__gsignals__ = { __gsignals__ = {
'joined-activity': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'joined-activity': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'left-activity': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'left-activity': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
'property-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'property-changed': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT])), ([GObject.TYPE_PYOBJECT])),
} }
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._key = None self._key = None
self._nick = None self._nick = None
@ -82,7 +82,7 @@ class BaseBuddy(gobject.GObject):
def set_key(self, key): def set_key(self, key):
self._key = key self._key = key
key = gobject.property(type=str, getter=get_key, setter=set_key) key = GObject.property(type=str, getter=get_key, setter=set_key)
def get_nick(self): def get_nick(self):
return self._nick return self._nick
@ -90,7 +90,7 @@ class BaseBuddy(gobject.GObject):
def set_nick(self, nick): def set_nick(self, nick):
self._nick = nick self._nick = nick
nick = gobject.property(type=str, getter=get_nick, setter=set_nick) nick = GObject.property(type=str, getter=get_nick, setter=set_nick)
def get_color(self): def get_color(self):
return self._color return self._color
@ -98,7 +98,7 @@ class BaseBuddy(gobject.GObject):
def set_color(self, color): def set_color(self, color):
self._color = color self._color = color
color = gobject.property(type=str, getter=get_color, setter=set_color) color = GObject.property(type=str, getter=get_color, setter=set_color)
def get_current_activity(self): def get_current_activity(self):
if self._current_activity is None: if self._current_activity is None:
@ -108,7 +108,7 @@ class BaseBuddy(gobject.GObject):
return activity return activity
return None return None
current_activity = gobject.property(type=object, current_activity = GObject.property(type=object,
getter=get_current_activity) getter=get_current_activity)
def get_owner(self): def get_owner(self):
@ -117,7 +117,7 @@ class BaseBuddy(gobject.GObject):
def set_owner(self, owner): def set_owner(self, owner):
self._owner = owner self._owner = owner
owner = gobject.property(type=bool, getter=get_owner, setter=set_owner, owner = GObject.property(type=bool, getter=get_owner, setter=set_owner,
default=False) default=False)
def get_ip4_address(self): def get_ip4_address(self):
@ -126,7 +126,7 @@ class BaseBuddy(gobject.GObject):
def set_ip4_address(self, ip4_address): def set_ip4_address(self, ip4_address):
self._ip4_address = ip4_address self._ip4_address = ip4_address
ip4_address = gobject.property(type=str, getter=get_ip4_address, ip4_address = GObject.property(type=str, getter=get_ip4_address,
setter=set_ip4_address) setter=set_ip4_address)
def get_tags(self): def get_tags(self):
@ -135,7 +135,7 @@ class BaseBuddy(gobject.GObject):
def set_tags(self, tags): def set_tags(self, tags):
self._tags = tags self._tags = tags
tags = gobject.property(type=str, getter=get_tags, setter=set_tags) tags = GObject.property(type=str, getter=get_tags, setter=set_tags)
def object_path(self): def object_path(self):
"""Retrieve our dbus object path""" """Retrieve our dbus object path"""
@ -243,6 +243,6 @@ class Owner(BaseBuddy):
def __init__(self): def __init__(self):
BaseBuddy.__init__(self) BaseBuddy.__init__(self)
client = gconf.client_get_default() client = GConf.Client.get_default()
self.props.nick = client.get_string('/desktop/sugar/user/nick') self.props.nick = client.get_string('/desktop/sugar/user/nick')
self.props.color = client.get_string('/desktop/sugar/user/color') self.props.color = client.get_string('/desktop/sugar/user/color')

@ -22,7 +22,7 @@ STABLE.
import logging import logging
import gobject from gi.repository import GObject
import dbus import dbus
import dbus.exceptions import dbus.exceptions
import dbus.glib import dbus.glib
@ -46,18 +46,18 @@ ACCOUNT_MANAGER_PATH = '/org/freedesktop/Telepathy/AccountManager'
CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties' CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
class PresenceService(gobject.GObject): class PresenceService(GObject.GObject):
"""Provides simplified access to the Telepathy framework to activities""" """Provides simplified access to the Telepathy framework to activities"""
__gsignals__ = { __gsignals__ = {
'activity-shared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, 'activity-shared': (GObject.SignalFlags.RUN_FIRST, None,
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, ([GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT])), GObject.TYPE_PYOBJECT])),
} }
def __init__(self): def __init__(self):
"""Initialise the service and attempt to connect to events """Initialise the service and attempt to connect to events
""" """
gobject.GObject.__init__(self) GObject.GObject.__init__(self)
self._activity_cache = None self._activity_cache = None
self._buddy_cache = {} self._buddy_cache = {}

@ -20,7 +20,7 @@
DEPRECATED. We are using GConf now to store preferences. DEPRECATED. We are using GConf now to store preferences.
""" """
import gconf from gi.repository import GConf
import os import os
import logging import logging
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
@ -68,7 +68,7 @@ class Profile(object):
privkey_hash = property(fget=_get_privkey_hash) privkey_hash = property(fget=_get_privkey_hash)
def is_valid(self): def is_valid(self):
client = gconf.client_get_default() client = GConf.Client.get_default()
nick = client.get_string('/desktop/sugar/user/nick') nick = client.get_string('/desktop/sugar/user/nick')
color = client.get_string('/desktop/sugar/user/color') color = client.get_string('/desktop/sugar/user/color')
@ -140,7 +140,7 @@ class Profile(object):
path = os.path.join(env.get_profile_path(), 'config') path = os.path.join(env.get_profile_path(), 'config')
cp.read([path]) cp.read([path])
client = gconf.client_get_default() client = GConf.Client.get_default()
if cp.has_option('Buddy', 'NickName'): if cp.has_option('Buddy', 'NickName'):
name = cp.get('Buddy', 'NickName') name = cp.get('Buddy', 'NickName')
@ -224,12 +224,12 @@ def get_profile():
def get_nick_name(): def get_nick_name():
client = gconf.client_get_default() client = GConf.Client.get_default()
return client.get_string('/desktop/sugar/user/nick') return client.get_string('/desktop/sugar/user/nick')
def get_color(): def get_color():
client = gconf.client_get_default() client = GConf.Client.get_default()
color = client.get_string('/desktop/sugar/user/color') color = client.get_string('/desktop/sugar/user/color')
return XoColor(color) return XoColor(color)

@ -21,23 +21,23 @@ UNSTABLE. Used only internally by jarabe.
import os import os
from sugar import _sugarext from gi.repository import SugarExt
class XSMPClient(_sugarext.SMClientXSMP): class XSMPClient(SugarExt.Client):
def __init__(self): def __init__(self):
_sugarext.SMClientXSMP.__init__(self) SugarExt.Client.__init__(self)
class SessionManager(object): class SessionManager(object):
def __init__(self): def __init__(self):
address = _sugarext.xsmp_init() address = SugarExt.xsmp_init()
os.environ['SESSION_MANAGER'] = address os.environ['SESSION_MANAGER'] = address
_sugarext.xsmp_run() SugarExt.xsmp_run()
self.session = _sugarext.session_create_global() self.session = SugarExt.Session.create_global()
def start(self): def start(self):
self.session.start() self.session.start()
@ -48,7 +48,7 @@ class SessionManager(object):
self.session.initiate_shutdown() self.session.initiate_shutdown()
def shutdown_completed(self): def shutdown_completed(self):
_sugarext.xsmp_shutdown() SugarExt.xsmp_shutdown()
def __shutdown_completed_cb(self, session): def __shutdown_completed_cb(self, session):
self.shutdown_completed() self.shutdown_completed()

@ -19,18 +19,18 @@
UNSTABLE. Used only internally by Activity and jarabe. UNSTABLE. Used only internally by Activity and jarabe.
""" """
import gtk from gi.repository import Gtk
from gtk import gdk from gi.repository import Gdk
import logging import logging
def _property_get_trapped(window, prop, prop_type): def _property_get_trapped(window, prop, prop_type):
gtk.gdk.error_trap_push() Gdk.error_trap_push()
prop_info = window.property_get(prop, prop_type) prop_info = window.property_get(prop, prop_type)
# We just log a message # We just log a message
error = gtk.gdk.error_trap_pop() error = Gdk.error_trap_pop()
if error: if error:
logging.debug('Received X Error (%i) while getting ' logging.debug('Received X Error (%i) while getting '
'a property on a window', error) 'a property on a window', error)
@ -40,11 +40,11 @@ def _property_get_trapped(window, prop, prop_type):
def _property_change_trapped(window, prop, prop_type, format, mode, data): def _property_change_trapped(window, prop, prop_type, format, mode, data):
# pylint: disable=W0622 # pylint: disable=W0622
gtk.gdk.error_trap_push() Gdk.error_trap_push()
window.property_change(prop, prop_type, format, mode, data) window.property_change(prop, prop_type, format, mode, data)
error = gtk.gdk.error_trap_pop() error = Gdk.error_trap_pop()
if error: if error:
logging.debug('Received X Error (%i) while setting ' logging.debug('Received X Error (%i) while setting '
'a property on a window', error) 'a property on a window', error)
@ -53,7 +53,7 @@ def _property_change_trapped(window, prop, prop_type, format, mode, data):
def get_activity_id(wnck_window): def get_activity_id(wnck_window):
window = gtk.gdk.window_foreign_new(wnck_window.get_xid()) window = Gdk.window_foreign_new(wnck_window.get_xid())
prop_info = _property_get_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING') prop_info = _property_get_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING')
if prop_info is None: if prop_info is None:
return None return None
@ -62,7 +62,7 @@ def get_activity_id(wnck_window):
def get_bundle_id(wnck_window): def get_bundle_id(wnck_window):
window = gtk.gdk.window_foreign_new(wnck_window.get_xid()) window = Gdk.window_foreign_new(wnck_window.get_xid())
prop_info = _property_get_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING') prop_info = _property_get_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING')
if prop_info is None: if prop_info is None:
return None return None
@ -71,7 +71,7 @@ def get_bundle_id(wnck_window):
def get_sugar_window_type(wnck_window): def get_sugar_window_type(wnck_window):
window = gtk.gdk.window_foreign_new(wnck_window.get_xid()) window = Gdk.window_foreign_new(wnck_window.get_xid())
prop_info = _property_get_trapped(window, '_SUGAR_WINDOW_TYPE', 'STRING') prop_info = _property_get_trapped(window, '_SUGAR_WINDOW_TYPE', 'STRING')
if prop_info is None: if prop_info is None:
return None return None
@ -81,9 +81,9 @@ def get_sugar_window_type(wnck_window):
def set_activity_id(window, activity_id): def set_activity_id(window, activity_id):
_property_change_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING', 8, _property_change_trapped(window, '_SUGAR_ACTIVITY_ID', 'STRING', 8,
gtk.gdk.PROP_MODE_REPLACE, activity_id) Gdk.PROP_MODE_REPLACE, activity_id)
def set_bundle_id(window, bundle_id): def set_bundle_id(window, bundle_id):
_property_change_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING', 8, _property_change_trapped(window, '_SUGAR_BUNDLE_ID', 'STRING', 8,
gtk.gdk.PROP_MODE_REPLACE, bundle_id) Gdk.PROP_MODE_REPLACE, bundle_id)

@ -15,21 +15,21 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk from gi.repository import Gtk
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
class Test(gtk.VBox): class Test(Gtk.VBox):
def __init__(self): def __init__(self):
gtk.VBox.__init__(self) GObject.GObject.__init__(self)
class TestPalette(Test): class TestPalette(Test):
def __init__(self): def __init__(self):
Test.__init__(self) Test.__init__(self)
toolbar = gtk.Toolbar() toolbar = Gtk.Toolbar()
self._invoker = ToolButton('go-previous') self._invoker = ToolButton('go-previous')
toolbar.insert(self._invoker, -1) toolbar.insert(self._invoker, -1)
@ -44,8 +44,8 @@ class TestPalette(Test):
class TestRunner(object): class TestRunner(object):
def run(self, test): def run(self, test):
window = gtk.Window() window = Gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit()) window.connect('destroy', lambda w: Gtk.main_quit())
window.add(test) window.add(test)
test.show() test.show()
@ -56,4 +56,4 @@ def main(test):
runner = TestRunner() runner = TestRunner()
runner.run(test) runner.run(test)
gtk.main() Gtk.main()

@ -19,7 +19,7 @@
Test the sugar3.graphics.icon.* cache. Test the sugar3.graphics.icon.* cache.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.xocolor import XoColor from sugar3.graphics.xocolor import XoColor
@ -54,13 +54,13 @@ def _button_activated_cb(button):
for d in data: for d in data:
icon = Icon(icon_name=d[0], icon = Icon(icon_name=d[0],
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, icon_size=Gtk.IconSize.LARGE_TOOLBAR,
xo_color=XoColor(d[1])) xo_color=XoColor(d[1]))
test.pack_start(icon) test.pack_start(icon, True, True, 0)
icon.show() icon.show()
button = gtk.Button('mec mac') button = Gtk.Button('mec mac')
test.pack_start(button) test.pack_start(button, True, True, 0)
button.connect('activate', _button_activated_cb) button.connect('activate', _button_activated_cb)
button.show() button.show()

@ -19,7 +19,7 @@
Test the sugar3.graphics.icon.Icon widget. Test the sugar3.graphics.icon.Icon widget.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
from sugar3.graphics.xocolor import XoColor from sugar3.graphics.xocolor import XoColor
@ -28,41 +28,41 @@ import common
test = common.Test() test = common.Test()
hbox = gtk.HBox() hbox = Gtk.HBox()
test.pack_start(hbox) test.pack_start(hbox, True, True, 0)
sensitive_box = gtk.VBox() sensitive_box = Gtk.VBox()
insensitive_box = gtk.VBox() insensitive_box = Gtk.VBox()
hbox.pack_start(sensitive_box) hbox.pack_start(sensitive_box, True, True, 0)
hbox.pack_start(insensitive_box) hbox.pack_start(insensitive_box, True, True, 0)
hbox.show_all() hbox.show_all()
def create_icon_widgets(box, sensitive=True): def create_icon_widgets(box, sensitive=True):
icon = Icon(icon_name='go-previous') icon = Icon(icon_name='go-previous')
icon.props.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR icon.props.icon_size = Gtk.IconSize.LARGE_TOOLBAR
box.pack_start(icon) box.pack_start(icon, True, True, 0)
icon.set_sensitive(sensitive) icon.set_sensitive(sensitive)
icon.show() icon.show()
icon = Icon(icon_name='computer-xo', icon = Icon(icon_name='computer-xo',
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, icon_size=Gtk.IconSize.LARGE_TOOLBAR,
xo_color=XoColor()) xo_color=XoColor())
box.pack_start(icon) box.pack_start(icon, True, True, 0)
icon.set_sensitive(sensitive) icon.set_sensitive(sensitive)
icon.show() icon.show()
icon = Icon(icon_name='battery-000', icon = Icon(icon_name='battery-000',
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, icon_size=Gtk.IconSize.LARGE_TOOLBAR,
badge_name='emblem-busy') badge_name='emblem-busy')
box.pack_start(icon) box.pack_start(icon, True, True, 0)
icon.set_sensitive(sensitive) icon.set_sensitive(sensitive)
icon.show() icon.show()
icon = Icon(icon_name='gtk-new', icon = Icon(icon_name='gtk-new',
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, icon_size=Gtk.IconSize.LARGE_TOOLBAR,
badge_name='gtk-cancel') badge_name='gtk-cancel')
box.pack_start(icon) box.pack_start(icon, True, True, 0)
icon.set_sensitive(sensitive) icon.set_sensitive(sensitive)
icon.show() icon.show()
@ -80,8 +80,8 @@ test.show()
# test.queue_draw() # test.queue_draw()
# return True # return True
# #
#import gobject #from gi.repository import GObject
#gobject.idle_add(idle_cb) #GObject.idle_add(idle_cb)
if __name__ == '__main__': if __name__ == '__main__':
common.main(test) common.main(test)

@ -21,7 +21,7 @@ contains only an icon and should be rendered similarly to the toolbar
controls. Ticket #2855. controls. Ticket #2855.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.palette import Palette from sugar3.graphics.palette import Palette
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
@ -33,19 +33,19 @@ test = common.TestPalette()
palette = Palette('Test radio and toggle') palette = Palette('Test radio and toggle')
test.set_palette(palette) test.set_palette(palette)
box = gtk.HBox() box = Gtk.HBox()
toggle = gtk.ToggleButton() toggle = Gtk.ToggleButton()
icon = Icon(icon_name='go-previous', icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon = Icon(icon_name='go-previous', icon_size=Gtk.IconSize.LARGE_TOOLBAR)
toggle.set_image(icon) toggle.set_image(icon)
box.pack_start(toggle, False) box.pack_start(toggle, False)
toggle.show() toggle.show()
radio = gtk.RadioButton() radio = Gtk.RadioButton()
icon = Icon(icon_name='go-next', icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) icon = Icon(icon_name='go-next', icon_size=Gtk.IconSize.LARGE_TOOLBAR)
radio.set_image(icon) radio.set_image(icon)
radio.set_mode(False) radio.set_mode(False)

@ -19,7 +19,7 @@
Spec in ticket #2999. Spec in ticket #2999.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.palette import Palette from sugar3.graphics.palette import Palette
from sugar3.graphics.icon import Icon from sugar3.graphics.icon import Icon
@ -29,9 +29,9 @@ import common
test = common.Test() test = common.Test()
test.set_border_width(60) test.set_border_width(60)
text_view = gtk.TextView() text_view = Gtk.TextView()
text_view.props.buffer.props.text = 'Blah blah blah, blah blah blah.' text_view.props.buffer.props.text = 'Blah blah blah, blah blah blah.'
test.pack_start(text_view) test.pack_start(text_view, True, True, 0)
text_view.show() text_view.show()
if __name__ == '__main__': if __name__ == '__main__':

@ -19,7 +19,7 @@
Spec in ticket #3000. Spec in ticket #3000.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
@ -27,7 +27,7 @@ import common
test = common.Test() test = common.Test()
toolbar = gtk.Toolbar() toolbar = Gtk.Toolbar()
test.pack_start(toolbar, False) test.pack_start(toolbar, False)
toolbar.show() toolbar.show()
@ -35,7 +35,7 @@ button = ToolButton('go-previous')
toolbar.insert(button, -1) toolbar.insert(button, -1)
button.show() button.show()
separator = gtk.SeparatorToolItem() separator = Gtk.SeparatorToolItem()
toolbar.add(separator) toolbar.add(separator)
separator.show() separator.show()

@ -19,7 +19,7 @@
Test palette positioning for toolbar and tray. Test palette positioning for toolbar and tray.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.tray import HTray, TrayButton from sugar3.graphics.tray import HTray, TrayButton
from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbutton import ToolButton
@ -28,11 +28,11 @@ import common
test = common.Test() test = common.Test()
vbox = gtk.VBox() vbox = Gtk.VBox()
theme_icons = gtk.icon_theme_get_default().list_icons() theme_icons = Gtk.IconTheme.get_default().list_icons()
toolbar = gtk.Toolbar() toolbar = Gtk.Toolbar()
vbox.pack_start(toolbar, False) vbox.pack_start(toolbar, False)
toolbar.show() toolbar.show()
@ -42,8 +42,8 @@ for i in range(0, 5):
toolbar.insert(button, -1) toolbar.insert(button, -1)
button.show() button.show()
content = gtk.Label() content = Gtk.Label()
vbox.pack_start(content) vbox.pack_start(content, True, True, 0)
content.show() content.show()
tray = HTray() tray = HTray()
@ -56,7 +56,7 @@ for i in range(0, 30):
tray.add_item(button) tray.add_item(button)
button.show() button.show()
test.pack_start(vbox) test.pack_start(vbox, True, True, 0)
vbox.show() vbox.show()
test.show() test.show()

@ -19,7 +19,7 @@
Test the sugar3.graphics.icon.Icon widget. Test the sugar3.graphics.icon.Icon widget.
""" """
import gtk from gi.repository import Gtk
from sugar3.graphics.tray import HTray, VTray from sugar3.graphics.tray import HTray, VTray
from sugar3.graphics.tray import TrayButton, TrayIcon from sugar3.graphics.tray import TrayButton, TrayIcon
@ -28,13 +28,13 @@ import common
test = common.Test() test = common.Test()
vbox = gtk.VBox() vbox = Gtk.VBox()
tray = HTray() tray = HTray()
vbox.pack_start(tray, False) vbox.pack_start(tray, False)
tray.show() tray.show()
theme_icons = gtk.icon_theme_get_default().list_icons() theme_icons = Gtk.IconTheme.get_default().list_icons()
for i in range(0, 100): for i in range(0, 100):
button = TrayButton(icon_name=theme_icons[i]) button = TrayButton(icon_name=theme_icons[i])
@ -50,7 +50,7 @@ for i in range(0, 10):
tray.add_item(icon) tray.add_item(icon)
icon.show() icon.show()
hbox = gtk.HBox() hbox = Gtk.HBox()
tray = VTray() tray = VTray()
hbox.pack_start(tray, False) hbox.pack_start(tray, False)
@ -70,10 +70,10 @@ for i in range(0, 4):
tray.add_item(button) tray.add_item(button)
button.show() button.show()
vbox.pack_start(hbox) vbox.pack_start(hbox, True, True, 0)
hbox.show() hbox.show()
test.pack_start(vbox) test.pack_start(vbox, True, True, 0)
vbox.show() vbox.show()
test.show() test.show()

Loading…
Cancel
Save