Added toolbar and button controls.

This commit is contained in:
Tomeu Vizoso 2007-02-07 18:26:39 +01:00
parent 5d57b261ee
commit 7e324af179
6 changed files with 90 additions and 4 deletions

View File

@ -21,6 +21,7 @@ import hippo
from sugar.graphics.canvasicon import CanvasIcon from sugar.graphics.canvasicon import CanvasIcon
from sugar.graphics.menuicon import MenuIcon from sugar.graphics.menuicon import MenuIcon
from sugar.graphics.menu import Menu from sugar.graphics.menu import Menu
from sugar.graphics.iconcolor import IconColor
from sugar.graphics import style from sugar.graphics import style
import sugar import sugar
@ -37,11 +38,13 @@ class ActivityMenu(Menu):
self._add_close_action() self._add_close_action()
def _add_mesh_action(self): def _add_mesh_action(self):
icon = CanvasIcon(icon_name='theme:stock-share-mesh') icon = CanvasIcon(icon_name='theme:stock-share-mesh',
color=IconColor('#ffffff,#000000'))
self.add_action(icon, ActivityMenu.ACTION_SHARE) self.add_action(icon, ActivityMenu.ACTION_SHARE)
def _add_close_action(self): def _add_close_action(self):
icon = CanvasIcon(icon_name='theme:stock-close') icon = CanvasIcon(icon_name='theme:stock-close',
color=IconColor('#ffffff,#000000'))
self.add_action(icon, ActivityMenu.ACTION_CLOSE) self.add_action(icon, ActivityMenu.ACTION_CLOSE)
class ActivityIcon(MenuIcon): class ActivityIcon(MenuIcon):

View File

@ -33,7 +33,7 @@ class ActivityView(SnowflakeBox):
self._icons = {} self._icons = {}
icon = CanvasIcon(icon_name=model.get_icon_name(), icon = CanvasIcon(icon_name=model.get_icon_name(),
color=model.get_color(), size=80) color=model.get_color(), box_width=80)
icon.connect('activated', self._clicked_cb) icon.connect('activated', self._clicked_cb)
self.append(icon, hippo.PACK_FIXED) self.append(icon, hippo.PACK_FIXED)
self.set_root(icon) self.set_root(icon)

View File

@ -2,6 +2,7 @@ sugardir = $(pythondir)/sugar/graphics
sugar_PYTHON = \ sugar_PYTHON = \
__init__.py \ __init__.py \
bubble.py \ bubble.py \
button.py \
canvasicon.py \ canvasicon.py \
ClipboardBubble.py \ ClipboardBubble.py \
grid.py \ grid.py \
@ -13,4 +14,5 @@ sugar_PYTHON = \
spreadbox.py \ spreadbox.py \
style.py \ style.py \
stylesheet.py \ stylesheet.py \
timeline.py timeline.py \
toolbar.py

69
sugar/graphics/button.py Normal file
View File

@ -0,0 +1,69 @@
import gobject
import hippo
from canvasicon import CanvasIcon
from iconcolor import IconColor
from grid import Grid
from sugar import profile
class Button(hippo.CanvasBox):
__gtype_name__ = 'Button'
__gproperties__ = {
'icon-name': (str, None, None, None,
gobject.PARAM_READWRITE),
'active': (bool, None, None, True,
gobject.PARAM_READWRITE)
}
def __init__(self, icon_name):
hippo.CanvasBox.__init__(self)
self._active = True
self._normal_color = IconColor('white')
self._prelight_color = profile.get_color()
self._inactive_color = IconColor('#808080,#424242')
grid = Grid()
self.props.box_width = grid.dimension(1)
self.props.box_height = grid.dimension(1)
self._icon = CanvasIcon(icon_name=icon_name, cache=True,
color=self._normal_color)
self.append(self._icon, hippo.PACK_EXPAND)
self._connect_signals(self._icon)
def do_set_property(self, pspec, value):
if pspec.name == 'icon-name':
self._icon.props.icon_name = value
elif pspec.name == 'active':
self._active = value
if self._active:
self._icon.props.color = self._normal_color
else:
self._icon.props.color = self._inactive_color
else:
hippo.CanvasBox.do_set_property(self, pspec, value)
def do_get_property(self, pspec):
if pspec.name == 'icon-name':
return self._icon.get_property('icon-name')
elif pspec.name == 'active':
return self._active
else:
return hippo.CanvasBox.get_property(self, pspec)
def _connect_signals(self, item):
item.connect('button-release-event', self._button_release_event_cb)
# TODO: Prelighting is disabled by now. Need to figure how we want it to behave.
#item.connect('motion-notify-event', self._motion_notify_event_cb)
def _button_release_event_cb(self, widget, event):
if self._active:
self.emit_activated()
def _motion_notify_event_cb(self, widget, event):
if self._active and event.detail == hippo.MOTION_DETAIL_ENTER:
self._icon.props.color = self._prelight_color
elif self._active and event.detail == hippo.MOTION_DETAIL_LEAVE:
self._icon.props.color = self._normal_color

View File

@ -14,6 +14,7 @@
# License along with this library; if not, write to the # License along with this library; if not, write to the
# 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 logging
import gtk import gtk
@ -45,6 +46,8 @@ def apply_stylesheet(item, stylesheet_name):
style_sheet = _styles[stylesheet_name] style_sheet = _styles[stylesheet_name]
for name in style_sheet.keys(): for name in style_sheet.keys():
item.set_property(name, style_sheet[name]) item.set_property(name, style_sheet[name])
else:
logging.debug('Stylesheet %s not found.' % stylesheet_name)
def get_font_description(style, relative_size): def get_font_description(style, relative_size):
base_size = 18 * _screen_factor base_size = 18 * _screen_factor

View File

@ -0,0 +1,9 @@
import gobject
import hippo
class Toolbar(hippo.CanvasBox):
__gtype_name__ = 'Toolbar'
def __init__(self, orientation=hippo.ORIENTATION_HORIZONTAL):
hippo.CanvasBox.__init__(self, orientation=orientation,
background_color=0x414141ff)