Remove Canvas* widgets and other hippo-canvas using parts
hippo-canvas isn't available in the GTK3 world, so we need to remove anything that depends on it. Activities that still use it will need replace hippo-canvas based widgets with native GTK ones before they can be ported to GTK3. [replaced description] Signed-off-by: Sascha Silbe <silbe@activitycentral.com>
This commit is contained in:
parent
1edc6ca1b1
commit
9cb18cdcf3
@ -2,10 +2,8 @@ sugardir = $(pythondir)/sugar3/graphics
|
|||||||
sugar_PYTHON = \
|
sugar_PYTHON = \
|
||||||
alert.py \
|
alert.py \
|
||||||
animator.py \
|
animator.py \
|
||||||
canvastextview.py \
|
|
||||||
colorbutton.py \
|
colorbutton.py \
|
||||||
combobox.py \
|
combobox.py \
|
||||||
entry.py \
|
|
||||||
iconentry.py \
|
iconentry.py \
|
||||||
icon.py \
|
icon.py \
|
||||||
__init__.py \
|
__init__.py \
|
||||||
@ -18,7 +16,6 @@ sugar_PYTHON = \
|
|||||||
panel.py \
|
panel.py \
|
||||||
radiopalette.py \
|
radiopalette.py \
|
||||||
radiotoolbutton.py \
|
radiotoolbutton.py \
|
||||||
roundbox.py \
|
|
||||||
style.py \
|
style.py \
|
||||||
toggletoolbutton.py \
|
toggletoolbutton.py \
|
||||||
toolbarbox.py \
|
toolbarbox.py \
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
# Copyright (C) 2008 One Laptop Per Child
|
|
||||||
#
|
|
||||||
# This library is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
|
||||||
# License as published by the Free Software Foundation; either
|
|
||||||
# version 2 of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This library is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the
|
|
||||||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
import gtk
|
|
||||||
import hippo
|
|
||||||
|
|
||||||
from sugar3.graphics import style
|
|
||||||
|
|
||||||
|
|
||||||
class CanvasTextView(hippo.CanvasWidget):
|
|
||||||
|
|
||||||
def __init__(self, text, **kwargs):
|
|
||||||
hippo.CanvasWidget.__init__(self, **kwargs)
|
|
||||||
self.text_view_widget = gtk.TextView()
|
|
||||||
self.text_view_widget.props.buffer.props.text = text
|
|
||||||
self.text_view_widget.props.left_margin = style.DEFAULT_SPACING
|
|
||||||
self.text_view_widget.props.right_margin = style.DEFAULT_SPACING
|
|
||||||
self.text_view_widget.props.wrap_mode = gtk.WRAP_WORD
|
|
||||||
self.text_view_widget.show()
|
|
||||||
|
|
||||||
# TODO: These fields should expand vertically instead of scrolling
|
|
||||||
scrolled_window = gtk.ScrolledWindow()
|
|
||||||
scrolled_window.set_shadow_type(gtk.SHADOW_OUT)
|
|
||||||
scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
|
|
||||||
scrolled_window.add(self.text_view_widget)
|
|
||||||
|
|
||||||
self.props.widget = scrolled_window
|
|
@ -1,41 +0,0 @@
|
|||||||
# Copyright (C) 2007, Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This library is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
|
||||||
# License as published by the Free Software Foundation; either
|
|
||||||
# version 2 of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This library is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the
|
|
||||||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
"""
|
|
||||||
STABLE.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import gtk
|
|
||||||
import hippo
|
|
||||||
|
|
||||||
|
|
||||||
class CanvasEntry(hippo.CanvasEntry):
|
|
||||||
|
|
||||||
def set_background(self, color_spec):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
color_spec :
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
color = gtk.gdk.color_parse(color_spec)
|
|
||||||
self.props.widget.modify_bg(gtk.STATE_INSENSITIVE, color)
|
|
||||||
self.props.widget.modify_base(gtk.STATE_INSENSITIVE, color)
|
|
@ -27,7 +27,6 @@ import logging
|
|||||||
|
|
||||||
import gobject
|
import gobject
|
||||||
import gtk
|
import gtk
|
||||||
import hippo
|
|
||||||
import cairo
|
import cairo
|
||||||
|
|
||||||
from sugar3.graphics.xocolor import XoColor
|
from sugar3.graphics.xocolor import XoColor
|
||||||
@ -550,438 +549,6 @@ class Icon(gtk.Image):
|
|||||||
type=float, setter=set_scale)
|
type=float, setter=set_scale)
|
||||||
|
|
||||||
|
|
||||||
class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
|
|
||||||
|
|
||||||
__gtype_name__ = 'CanvasIcon'
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
from sugar3.graphics.palette import CanvasInvoker
|
|
||||||
|
|
||||||
self._buffer = _IconBuffer()
|
|
||||||
self._palette_invoker = CanvasInvoker()
|
|
||||||
self._alpha = 1.0
|
|
||||||
|
|
||||||
hippo.CanvasBox.__init__(self, **kwargs)
|
|
||||||
|
|
||||||
self._palette_invoker.attach(self)
|
|
||||||
|
|
||||||
self.connect('destroy', self.__destroy_cb)
|
|
||||||
|
|
||||||
def _emit_paint_needed_icon_area(self):
|
|
||||||
surface = self._buffer.get_surface()
|
|
||||||
if surface:
|
|
||||||
width, height = self.get_allocation()
|
|
||||||
s_width = surface.get_width()
|
|
||||||
s_height = surface.get_height()
|
|
||||||
|
|
||||||
x = (width - s_width) / 2
|
|
||||||
y = (height - s_height) / 2
|
|
||||||
|
|
||||||
self.emit_paint_needed(x, y, s_width, s_height)
|
|
||||||
|
|
||||||
def __destroy_cb(self, icon):
|
|
||||||
if self._palette_invoker is not None:
|
|
||||||
self._palette_invoker.detach()
|
|
||||||
|
|
||||||
def set_file_name(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
\"\"\"
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.file_name != value:
|
|
||||||
self._buffer.file_name = value
|
|
||||||
self.emit_paint_needed(0, 0, -1, -1)
|
|
||||||
|
|
||||||
def get_file_name(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
file name :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.file_name
|
|
||||||
|
|
||||||
file_name = gobject.property(
|
|
||||||
type=object, getter=get_file_name, setter=set_file_name)
|
|
||||||
|
|
||||||
def set_icon_name(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.icon_name != value:
|
|
||||||
self._buffer.icon_name = value
|
|
||||||
self.emit_paint_needed(0, 0, -1, -1)
|
|
||||||
|
|
||||||
def get_icon_name(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
icon name :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.icon_name
|
|
||||||
|
|
||||||
icon_name = gobject.property(
|
|
||||||
type=object, getter=get_icon_name, setter=set_icon_name)
|
|
||||||
|
|
||||||
def set_xo_color(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.xo_color != value:
|
|
||||||
self._buffer.xo_color = value
|
|
||||||
self._emit_paint_needed_icon_area()
|
|
||||||
|
|
||||||
xo_color = gobject.property(
|
|
||||||
type=object, getter=None, setter=set_xo_color)
|
|
||||||
|
|
||||||
def set_fill_color(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.fill_color != value:
|
|
||||||
self._buffer.fill_color = value
|
|
||||||
self._emit_paint_needed_icon_area()
|
|
||||||
|
|
||||||
def get_fill_color(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
fill color :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.fill_color
|
|
||||||
|
|
||||||
fill_color = gobject.property(
|
|
||||||
type=object, getter=get_fill_color, setter=set_fill_color)
|
|
||||||
|
|
||||||
def set_stroke_color(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.stroke_color != value:
|
|
||||||
self._buffer.stroke_color = value
|
|
||||||
self._emit_paint_needed_icon_area()
|
|
||||||
|
|
||||||
def get_stroke_color(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
stroke color :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.stroke_color
|
|
||||||
|
|
||||||
stroke_color = gobject.property(
|
|
||||||
type=object, getter=get_stroke_color, setter=set_stroke_color)
|
|
||||||
|
|
||||||
def set_background_color(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.background_color != value:
|
|
||||||
self._buffer.background_color = value
|
|
||||||
self.emit_paint_needed(0, 0, -1, -1)
|
|
||||||
|
|
||||||
def get_background_color(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
fill color :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.background_color
|
|
||||||
|
|
||||||
background_color = gobject.property(
|
|
||||||
type=object, getter=get_background_color, setter=set_background_color)
|
|
||||||
|
|
||||||
def set_size(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.width != value:
|
|
||||||
self._buffer.width = value
|
|
||||||
self._buffer.height = value
|
|
||||||
self.emit_request_changed()
|
|
||||||
|
|
||||||
def get_size(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
size :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.width
|
|
||||||
|
|
||||||
size = gobject.property(
|
|
||||||
type=object, getter=get_size, setter=set_size)
|
|
||||||
|
|
||||||
def set_scale(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value:
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.scale != value:
|
|
||||||
self._buffer.scale = value
|
|
||||||
self.emit_request_changed()
|
|
||||||
|
|
||||||
def get_scale(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
scale :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.scale
|
|
||||||
|
|
||||||
scale = gobject.property(
|
|
||||||
type=float, getter=get_scale, setter=set_scale)
|
|
||||||
|
|
||||||
def set_alpha(self, alpha):
|
|
||||||
if self._alpha != alpha:
|
|
||||||
self._alpha = alpha
|
|
||||||
self.emit_paint_needed(0, 0, -1, -1)
|
|
||||||
|
|
||||||
alpha = gobject.property(
|
|
||||||
type=float, setter=set_alpha)
|
|
||||||
|
|
||||||
def set_cache(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
cache
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
self._buffer.cache = value
|
|
||||||
|
|
||||||
def get_cache(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
cache :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.cache
|
|
||||||
|
|
||||||
cache = gobject.property(
|
|
||||||
type=bool, default=False, getter=get_cache, setter=set_cache)
|
|
||||||
|
|
||||||
def set_badge_name(self, value):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
value :
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
if self._buffer.badge_name != value:
|
|
||||||
self._buffer.badge_name = value
|
|
||||||
self.emit_paint_needed(0, 0, -1, -1)
|
|
||||||
|
|
||||||
def get_badge_name(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
badge name :
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self._buffer.badge_name
|
|
||||||
|
|
||||||
badge_name = gobject.property(
|
|
||||||
type=object, getter=get_badge_name, setter=set_badge_name)
|
|
||||||
|
|
||||||
def do_paint_below_children(self, cr, damaged_box):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
cr :
|
|
||||||
|
|
||||||
damaged_box :
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
None
|
|
||||||
|
|
||||||
"""
|
|
||||||
surface = self._buffer.get_surface()
|
|
||||||
if surface:
|
|
||||||
width, height = self.get_allocation()
|
|
||||||
|
|
||||||
x = (width - surface.get_width()) / 2
|
|
||||||
y = (height - surface.get_height()) / 2
|
|
||||||
|
|
||||||
cr.set_source_surface(surface, x, y)
|
|
||||||
if self._alpha == 1.0:
|
|
||||||
cr.paint()
|
|
||||||
else:
|
|
||||||
cr.paint_with_alpha(self._alpha)
|
|
||||||
|
|
||||||
def do_get_content_width_request(self):
|
|
||||||
"""
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
None
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
width :
|
|
||||||
|
|
||||||
"""
|
|
||||||
surface = self._buffer.get_surface()
|
|
||||||
if surface:
|
|
||||||
size = surface.get_width()
|
|
||||||
elif self._buffer.width:
|
|
||||||
size = self._buffer.width
|
|
||||||
else:
|
|
||||||
size = 0
|
|
||||||
|
|
||||||
return size, size
|
|
||||||
|
|
||||||
def do_get_content_height_request(self, for_width):
|
|
||||||
surface = self._buffer.get_surface()
|
|
||||||
if surface:
|
|
||||||
size = surface.get_height()
|
|
||||||
elif self._buffer.height:
|
|
||||||
size = self._buffer.height
|
|
||||||
else:
|
|
||||||
size = 0
|
|
||||||
|
|
||||||
return size, size
|
|
||||||
|
|
||||||
def do_button_press_event(self, event):
|
|
||||||
if event.button == 1:
|
|
||||||
self.emit_activated()
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def create_palette(self):
|
|
||||||
return None
|
|
||||||
|
|
||||||
def get_palette(self):
|
|
||||||
return self._palette_invoker.palette
|
|
||||||
|
|
||||||
def set_palette(self, palette):
|
|
||||||
self._palette_invoker.palette = palette
|
|
||||||
|
|
||||||
palette = gobject.property(
|
|
||||||
type=object, setter=set_palette, getter=get_palette)
|
|
||||||
|
|
||||||
def get_palette_invoker(self):
|
|
||||||
return self._palette_invoker
|
|
||||||
|
|
||||||
def set_palette_invoker(self, palette_invoker):
|
|
||||||
self._palette_invoker.detach()
|
|
||||||
self._palette_invoker = palette_invoker
|
|
||||||
|
|
||||||
palette_invoker = gobject.property(
|
|
||||||
type=object, setter=set_palette_invoker, getter=get_palette_invoker)
|
|
||||||
|
|
||||||
def set_tooltip(self, text):
|
|
||||||
from sugar3.graphics.palette import Palette
|
|
||||||
|
|
||||||
self.set_palette(Palette(text))
|
|
||||||
|
|
||||||
|
|
||||||
class CellRendererIcon(gtk.GenericCellRenderer):
|
class CellRendererIcon(gtk.GenericCellRenderer):
|
||||||
|
|
||||||
__gtype_name__ = 'SugarCellRendererIcon'
|
__gtype_name__ = 'SugarCellRendererIcon'
|
||||||
|
@ -25,7 +25,6 @@ import logging
|
|||||||
|
|
||||||
import gtk
|
import gtk
|
||||||
import gobject
|
import gobject
|
||||||
import hippo
|
|
||||||
|
|
||||||
from sugar3.graphics import palettegroup
|
from sugar3.graphics import palettegroup
|
||||||
from sugar3.graphics import animator
|
from sugar3.graphics import animator
|
||||||
@ -787,64 +786,6 @@ class WidgetInvoker(Invoker):
|
|||||||
widget = gobject.property(type=object, getter=_get_widget, setter=None)
|
widget = gobject.property(type=object, getter=_get_widget, setter=None)
|
||||||
|
|
||||||
|
|
||||||
class CanvasInvoker(Invoker):
|
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
Invoker.__init__(self)
|
|
||||||
|
|
||||||
self._position_hint = self.AT_CURSOR
|
|
||||||
self._motion_hid = None
|
|
||||||
self._release_hid = None
|
|
||||||
self._item = None
|
|
||||||
|
|
||||||
if parent:
|
|
||||||
self.attach(parent)
|
|
||||||
|
|
||||||
def attach(self, parent):
|
|
||||||
Invoker.attach(self, parent)
|
|
||||||
|
|
||||||
self._item = parent
|
|
||||||
self._motion_hid = self._item.connect('motion-notify-event',
|
|
||||||
self.__motion_notify_event_cb)
|
|
||||||
self._release_hid = self._item.connect('button-release-event',
|
|
||||||
self.__button_release_event_cb)
|
|
||||||
|
|
||||||
def detach(self):
|
|
||||||
Invoker.detach(self)
|
|
||||||
self._item.disconnect(self._motion_hid)
|
|
||||||
self._item.disconnect(self._release_hid)
|
|
||||||
|
|
||||||
def get_default_position(self):
|
|
||||||
return self.AT_CURSOR
|
|
||||||
|
|
||||||
def get_rect(self):
|
|
||||||
context = self._item.get_context()
|
|
||||||
if context:
|
|
||||||
x, y = context.translate_to_screen(self._item)
|
|
||||||
width, height = self._item.get_allocation()
|
|
||||||
return gtk.gdk.Rectangle(x, y, width, height)
|
|
||||||
else:
|
|
||||||
return gtk.gdk.Rectangle()
|
|
||||||
|
|
||||||
def __motion_notify_event_cb(self, button, event):
|
|
||||||
if event.detail == hippo.MOTION_DETAIL_ENTER:
|
|
||||||
self.notify_mouse_enter()
|
|
||||||
elif event.detail == hippo.MOTION_DETAIL_LEAVE:
|
|
||||||
self.notify_mouse_leave()
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __button_release_event_cb(self, button, event):
|
|
||||||
if event.button == 3:
|
|
||||||
self.notify_right_click()
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def get_toplevel(self):
|
|
||||||
return hippo.get_canvas_for_item(self._item).get_toplevel()
|
|
||||||
|
|
||||||
|
|
||||||
class ToolInvoker(WidgetInvoker):
|
class ToolInvoker(WidgetInvoker):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
# Copyright (C) 2006-2007 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This library is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
|
||||||
# License as published by the Free Software Foundation; either
|
|
||||||
# version 2 of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This library is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the
|
|
||||||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
"""
|
|
||||||
STABLE.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import math
|
|
||||||
|
|
||||||
import hippo
|
|
||||||
|
|
||||||
from sugar3.graphics import style
|
|
||||||
|
|
||||||
|
|
||||||
class CanvasRoundBox(hippo.CanvasBox, hippo.CanvasItem):
|
|
||||||
__gtype_name__ = 'SugarRoundBox'
|
|
||||||
|
|
||||||
_BORDER_DEFAULT = style.LINE_WIDTH
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
hippo.CanvasBox.__init__(self, **kwargs)
|
|
||||||
|
|
||||||
# TODO: we should calculate radius depending on the height of the box.
|
|
||||||
self._radius = style.zoom(10)
|
|
||||||
|
|
||||||
self.props.orientation = hippo.ORIENTATION_HORIZONTAL
|
|
||||||
self.props.border = self._BORDER_DEFAULT
|
|
||||||
self.props.border_left = self._radius
|
|
||||||
self.props.border_right = self._radius
|
|
||||||
self.props.border_color = style.COLOR_BLACK.get_int()
|
|
||||||
|
|
||||||
def do_paint_background(self, cr, damaged_box):
|
|
||||||
[width, height] = self.get_allocation()
|
|
||||||
|
|
||||||
x = self._BORDER_DEFAULT / 2
|
|
||||||
y = self._BORDER_DEFAULT / 2
|
|
||||||
width -= self._BORDER_DEFAULT
|
|
||||||
height -= self._BORDER_DEFAULT
|
|
||||||
|
|
||||||
cr.move_to(x + self._radius, y)
|
|
||||||
cr.arc(x + width - self._radius, y + self._radius,
|
|
||||||
self._radius, math.pi * 1.5, math.pi * 2)
|
|
||||||
cr.arc(x + width - self._radius, x + height - self._radius,
|
|
||||||
self._radius, 0, math.pi * 0.5)
|
|
||||||
cr.arc(x + self._radius, y + height - self._radius,
|
|
||||||
self._radius, math.pi * 0.5, math.pi)
|
|
||||||
cr.arc(x + self._radius, y + self._radius, self._radius,
|
|
||||||
math.pi, math.pi * 1.5)
|
|
||||||
|
|
||||||
hippo.cairo_set_source_rgba32(cr, self.props.background_color)
|
|
||||||
cr.fill_preserve()
|
|
||||||
|
|
||||||
# TODO: we should be more consistent here with the border properties.
|
|
||||||
if self.props.border_color:
|
|
||||||
hippo.cairo_set_source_rgba32(cr, self.props.border_color)
|
|
||||||
cr.set_line_width(self.props.border_top)
|
|
||||||
cr.stroke()
|
|
@ -1,51 +0,0 @@
|
|||||||
import hippo
|
|
||||||
import gtk
|
|
||||||
import gobject
|
|
||||||
|
|
||||||
from sugar3.graphics.icon import CanvasIcon
|
|
||||||
from sugar3.graphics.roundbox import CanvasRoundBox
|
|
||||||
|
|
||||||
import common
|
|
||||||
|
|
||||||
test = common.Test()
|
|
||||||
|
|
||||||
canvas = hippo.Canvas()
|
|
||||||
test.pack_start(canvas)
|
|
||||||
canvas.show()
|
|
||||||
|
|
||||||
scrollbars = hippo.CanvasScrollbars()
|
|
||||||
canvas.set_root(scrollbars)
|
|
||||||
|
|
||||||
box = hippo.CanvasBox(padding=10, spacing=10)
|
|
||||||
scrollbars.set_root(box)
|
|
||||||
|
|
||||||
|
|
||||||
def idle_cb():
|
|
||||||
global countdown
|
|
||||||
|
|
||||||
for i in range(0, 100):
|
|
||||||
entry = hippo.CanvasBox(border=2, border_color=0x000000ff,
|
|
||||||
orientation=hippo.ORIENTATION_HORIZONTAL,
|
|
||||||
padding=10, spacing=10)
|
|
||||||
|
|
||||||
for j in range(0, 3):
|
|
||||||
icon = CanvasIcon(icon_name='go-left')
|
|
||||||
entry.append(icon)
|
|
||||||
|
|
||||||
for j in range(0, 2):
|
|
||||||
text = hippo.CanvasText(text='Text %s %s' % (countdown, j))
|
|
||||||
entry.append(text)
|
|
||||||
|
|
||||||
box.append(entry)
|
|
||||||
|
|
||||||
countdown -= 1
|
|
||||||
|
|
||||||
return countdown > 0
|
|
||||||
|
|
||||||
countdown = 1000
|
|
||||||
gobject.idle_add(idle_cb)
|
|
||||||
|
|
||||||
test.show()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
common.main(test)
|
|
Loading…
Reference in New Issue
Block a user