Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Conflicts: shell/view/home/HomeBox.py
This commit is contained in:
		
						commit
						f85142bdc4
					
				| @ -1,136 +0,0 @@ | |||||||
| # Copyright (C) 2007, One Laptop Per Child |  | ||||||
| # |  | ||||||
| # This program is free software; you can redistribute it and/or modify |  | ||||||
| # it under the terms of the GNU General Public License as published by |  | ||||||
| # the Free Software Foundation; either version 2 of the License, or |  | ||||||
| # (at your option) any later version. |  | ||||||
| # |  | ||||||
| # This program 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 General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with this program; if not, write to the Free Software |  | ||||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #TODO: has to be merged with all the existing bubbles in a generic progress bar widget |  | ||||||
| 
 |  | ||||||
| import math |  | ||||||
| 
 |  | ||||||
| import gobject |  | ||||||
| import gtk |  | ||||||
| import hippo |  | ||||||
| 
 |  | ||||||
| from sugar.graphics import units |  | ||||||
| 
 |  | ||||||
| class ClipboardBubble(hippo.CanvasBox, hippo.CanvasItem): |  | ||||||
|     __gtype_name__ = 'ClipboardBubble' |  | ||||||
| 
 |  | ||||||
|     __gproperties__ = { |  | ||||||
|         'fill-color': (object, None, None, |  | ||||||
|                       gobject.PARAM_READWRITE), |  | ||||||
|         'stroke-color': (object, None, None, |  | ||||||
|                       gobject.PARAM_READWRITE), |  | ||||||
|         'progress-color': (object, None, None, |  | ||||||
|                       gobject.PARAM_READWRITE), |  | ||||||
|         'percent'   : (object, None, None, |  | ||||||
|                       gobject.PARAM_READWRITE), |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     def __init__(self, **kwargs): |  | ||||||
|         self._stroke_color = 0xFFFFFFFF |  | ||||||
|         self._fill_color = 0xFFFFFFFF |  | ||||||
|         self._progress_color = 0x000000FF |  | ||||||
|         self._percent = 0 |  | ||||||
|         self._radius = units.points_to_pixels(3) |  | ||||||
| 
 |  | ||||||
|         hippo.CanvasBox.__init__(self, **kwargs) |  | ||||||
| 
 |  | ||||||
|     def do_set_property(self, pspec, value): |  | ||||||
|         if pspec.name == 'fill-color': |  | ||||||
|             self._fill_color = value |  | ||||||
|             self.emit_paint_needed(0, 0, -1, -1) |  | ||||||
|         elif pspec.name == 'stroke-color': |  | ||||||
|             self._stroke_color = value |  | ||||||
|             self.emit_paint_needed(0, 0, -1, -1) |  | ||||||
|         elif pspec.name == 'progress-color': |  | ||||||
|             self._progress_color = value |  | ||||||
|             self.emit_paint_needed(0, 0, -1, -1) |  | ||||||
|         elif pspec.name == 'percent': |  | ||||||
|             self._percent = value |  | ||||||
|             self.emit_paint_needed(0, 0, -1, -1) |  | ||||||
| 
 |  | ||||||
|     def do_get_property(self, pspec): |  | ||||||
|         if pspec.name == 'fill-color': |  | ||||||
|             return self._fill_color |  | ||||||
|         elif pspec.name == 'stroke-color': |  | ||||||
|             return self._stroke_color |  | ||||||
|         elif pspec.name == 'progress-color': |  | ||||||
|             return self._progress_color |  | ||||||
|         elif pspec.name == 'percent': |  | ||||||
|             return self._percent |  | ||||||
| 
 |  | ||||||
|     def _int_to_rgb(self, int_color): |  | ||||||
|         red = (int_color >> 24) & 0x000000FF |  | ||||||
|         green = (int_color >> 16) & 0x000000FF |  | ||||||
|         blue = (int_color >> 8) & 0x000000FF |  | ||||||
|         alpha = int_color & 0x000000FF |  | ||||||
|         return (red / 255.0, green / 255.0, blue / 255.0) |  | ||||||
| 
 |  | ||||||
|     def do_paint_below_children(self, cr, damaged_box): |  | ||||||
|         [width, height] = self.get_allocation() |  | ||||||
| 
 |  | ||||||
|         line_width = 3.0 |  | ||||||
|         x = line_width |  | ||||||
|         y = line_width |  | ||||||
|         width -= line_width * 2 |  | ||||||
|         height -= line_width * 2 |  | ||||||
| 
 |  | ||||||
|         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); |  | ||||||
| 
 |  | ||||||
|         color = self._int_to_rgb(self._fill_color) |  | ||||||
|         cr.set_source_rgb(*color) |  | ||||||
|         cr.fill_preserve(); |  | ||||||
| 
 |  | ||||||
|         color = self._int_to_rgb(self._stroke_color) |  | ||||||
|         cr.set_source_rgb(*color) |  | ||||||
|         cr.set_line_width(line_width) |  | ||||||
|         cr.stroke(); |  | ||||||
| 
 |  | ||||||
|         if self._percent > 0: |  | ||||||
|             self._paint_progress_bar(cr, x, y, width, height, line_width) |  | ||||||
| 
 |  | ||||||
|     def _paint_progress_bar(self, cr, x, y, width, height, line_width): |  | ||||||
|         prog_x = x + line_width |  | ||||||
|         prog_y = y + line_width |  | ||||||
|         prog_width = (width - (line_width * 2)) * (self._percent / 100.0) |  | ||||||
|         prog_height = (height - (line_width * 2)) |  | ||||||
| 
 |  | ||||||
|         x = prog_x |  | ||||||
|         y = prog_y |  | ||||||
|         width = prog_width |  | ||||||
|         height = prog_height |  | ||||||
| 
 |  | ||||||
|         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); |  | ||||||
| 
 |  | ||||||
|         color = self._int_to_rgb(self._progress_color) |  | ||||||
|         cr.set_source_rgb(*color) |  | ||||||
|         cr.fill_preserve(); |  | ||||||
| @ -6,7 +6,6 @@ sugar_PYTHON =				\ | |||||||
| 	ActivityHost.py			\
 | 	ActivityHost.py			\
 | ||||||
| 	BuddyIcon.py			\
 | 	BuddyIcon.py			\
 | ||||||
| 	BuddyMenu.py			\
 | 	BuddyMenu.py			\
 | ||||||
| 	ClipboardBubble.py		\
 |  | ||||||
| 	clipboardicon.py		\
 | 	clipboardicon.py		\
 | ||||||
| 	clipboardmenu.py		\
 | 	clipboardmenu.py		\
 | ||||||
| 	keyhandler.py			\
 | 	keyhandler.py			\
 | ||||||
|  | |||||||
| @ -15,6 +15,7 @@ | |||||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
| from gettext import gettext as _ | from gettext import gettext as _ | ||||||
| 
 | 
 | ||||||
|  | import gtk | ||||||
| import hippo | import hippo | ||||||
| 
 | 
 | ||||||
| from sugar.graphics.menu import Menu, MenuItem | from sugar.graphics.menu import Menu, MenuItem | ||||||
| @ -22,27 +23,6 @@ from sugar.graphics.canvasicon import CanvasIcon | |||||||
| from sugar.graphics import color | from sugar.graphics import color | ||||||
| from sugar.graphics import font | from sugar.graphics import font | ||||||
| 
 | 
 | ||||||
| from view.ClipboardBubble import ClipboardBubble |  | ||||||
| 
 |  | ||||||
| class ClipboardProgressBar(ClipboardBubble): |  | ||||||
| 
 |  | ||||||
|     def __init__(self, percent = 0): |  | ||||||
|         self._text_item = None |  | ||||||
|         ClipboardBubble.__init__(self, percent=percent) |  | ||||||
| 
 |  | ||||||
|         self._text_item = hippo.CanvasText(text=str(percent) + ' %') |  | ||||||
|         self._text_item.props.color = color.LABEL_TEXT.get_int() |  | ||||||
|         self._text_item.props.font_desc = font.DEFAULT.get_pango_desc() |  | ||||||
| 
 |  | ||||||
|         self.append(self._text_item) |  | ||||||
|          |  | ||||||
|     def do_set_property(self, pspec, value): |  | ||||||
|         if pspec.name == 'percent': |  | ||||||
|             if self._text_item: |  | ||||||
|                 self._text_item.set_property('text', str(value) + ' %') |  | ||||||
| 
 |  | ||||||
|         ClipboardBubble.do_set_property(self, pspec, value) |  | ||||||
|          |  | ||||||
| class ClipboardMenu(Menu): | class ClipboardMenu(Menu): | ||||||
| 
 | 
 | ||||||
|     ACTION_DELETE = 0 |     ACTION_DELETE = 0 | ||||||
| @ -55,8 +35,12 @@ class ClipboardMenu(Menu): | |||||||
|         self.props.border = 0 |         self.props.border = 0 | ||||||
| 
 | 
 | ||||||
|         if percent < 100:         |         if percent < 100:         | ||||||
|             self._progress_bar = ClipboardProgressBar(percent) |             self._progress_bar = gtk.ProgressBar() | ||||||
|             self.append(self._progress_bar) |             self._update_progress_bar(percent) | ||||||
|  |              | ||||||
|  |             canvas_widget = hippo.CanvasWidget() | ||||||
|  |             canvas_widget.props.widget = self._progress_bar | ||||||
|  |             self.append(canvas_widget) | ||||||
|         else: |         else: | ||||||
|             self._progress_bar = None |             self._progress_bar = None | ||||||
|          |          | ||||||
| @ -91,10 +75,15 @@ class ClipboardMenu(Menu): | |||||||
|             self._add_stop_item() |             self._add_stop_item() | ||||||
|             self._remove_journal_item() |             self._remove_journal_item() | ||||||
| 
 | 
 | ||||||
|  |     def _update_progress_bar(self, percent): | ||||||
|  |         if self._progress_bar: | ||||||
|  |             self._progress_bar.props.fraction = percent / 100.0 | ||||||
|  |             self._progress_bar.props.text = '%.2f %%' % (percent / 100.0) | ||||||
|  | 
 | ||||||
|     def set_state(self, name, percent, preview, activity, installable): |     def set_state(self, name, percent, preview, activity, installable): | ||||||
|         self.set_title(name) |         self.set_title(name) | ||||||
|         if self._progress_bar: |         if self._progress_bar: | ||||||
|             self._progress_bar.set_property('percent', percent) |             self._update_progress_bar(percent) | ||||||
|             self._update_icons(percent, activity, installable) |             self._update_icons(percent, activity, installable) | ||||||
| 
 | 
 | ||||||
|     def _add_remove_item(self): |     def _add_remove_item(self): | ||||||
|  | |||||||
| @ -14,18 +14,22 @@ | |||||||
| # along with this program; if not, write to the Free Software | # along with this program; if not, write to the Free Software | ||||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
| 
 | 
 | ||||||
|  | import os | ||||||
|  | import signal | ||||||
| import math | import math | ||||||
| from gettext import gettext as _ | from gettext import gettext as _ | ||||||
| 
 | 
 | ||||||
| import gobject | import gobject | ||||||
| import gtk | import gtk | ||||||
| import hippo | import hippo | ||||||
|  | import dbus | ||||||
| 
 | 
 | ||||||
| from sugar.graphics import units | from sugar.graphics import units | ||||||
| from sugar.graphics import color | from sugar.graphics import color | ||||||
| from sugar.graphics.xocolor import XoColor | from sugar.graphics.xocolor import XoColor | ||||||
| from sugar.graphics.palette import Palette, CanvasInvoker | from sugar.graphics.palette import Palette, CanvasInvoker | ||||||
| from sugar import profile | from sugar import profile | ||||||
|  | from sugar import env | ||||||
| 
 | 
 | ||||||
| from view.home.activitiesdonut import ActivitiesDonut | from view.home.activitiesdonut import ActivitiesDonut | ||||||
| from view.devices import deviceview | from view.devices import deviceview | ||||||
| @ -43,7 +47,7 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): | |||||||
|                                       box_height=units.grid_to_pixels(6)) |                                       box_height=units.grid_to_pixels(6)) | ||||||
|         self.append(self._donut) |         self.append(self._donut) | ||||||
| 
 | 
 | ||||||
|         self._my_icon = HomeMyIcon(units.XLARGE_ICON_SCALE) |         self._my_icon = HomeMyIcon(shell, units.XLARGE_ICON_SCALE) | ||||||
|         self.append(self._my_icon, hippo.PACK_FIXED) |         self.append(self._my_icon, hippo.PACK_FIXED) | ||||||
| 
 | 
 | ||||||
|         shell_model = shell.get_model() |         shell_model = shell.get_model() | ||||||
| @ -82,11 +86,11 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): | |||||||
|             if self._donut: |             if self._donut: | ||||||
|                 self.remove(self._donut) |                 self.remove(self._donut) | ||||||
|                 self._donut = None |                 self._donut = None | ||||||
|                 self._my_icon.props.stroke_color = color.BUTTON_INACTIVE |                 self._my_icon.props.stroke_color = color.ICON_STROKE_INACTIVE | ||||||
|                 self._my_icon.props.fill_color = \ |                 self._my_icon.props.fill_color = \ | ||||||
|                         color.BUTTON_INACTIVE_BACKGROUND |                         color.ICON_FILL_INACTIVE | ||||||
|                 self._my_icon.props.background_color = \ |                 self._my_icon.props.background_color = \ | ||||||
|                         color.BUTTON_INACTIVE_BACKGROUND |                         color.ICON_FILL_INACTIVE.get_int() | ||||||
| 
 | 
 | ||||||
|     def do_allocate(self, width, height, origin_changed): |     def do_allocate(self, width, height, origin_changed): | ||||||
|         hippo.CanvasBox.do_allocate(self, width, height, origin_changed) |         hippo.CanvasBox.do_allocate(self, width, height, origin_changed) | ||||||
| @ -124,9 +128,10 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): | |||||||
| class HomeMyIcon(MyIcon): | class HomeMyIcon(MyIcon): | ||||||
|     _POPUP_PALETTE_DELAY = 100 |     _POPUP_PALETTE_DELAY = 100 | ||||||
| 
 | 
 | ||||||
|     def __init__(self, scale): |     def __init__(self, shell, scale): | ||||||
|         MyIcon.__init__(self, scale) |         MyIcon.__init__(self, scale) | ||||||
| 
 | 
 | ||||||
|  |         self._shell = shell | ||||||
|         self._palette = Palette() |         self._palette = Palette() | ||||||
|         self._palette.set_primary_state(profile.get_nick_name()) |         self._palette.set_primary_state(profile.get_nick_name()) | ||||||
|         self._palette.props.invoker = CanvasInvoker(self) |         self._palette.props.invoker = CanvasInvoker(self) | ||||||
| @ -137,4 +142,16 @@ class HomeMyIcon(MyIcon): | |||||||
|         shutdown_menu_item.show() |         shutdown_menu_item.show() | ||||||
| 
 | 
 | ||||||
|     def _shutdown_activate_cb(self, menuitem): |     def _shutdown_activate_cb(self, menuitem): | ||||||
|         pass |         model = self._shell.get_model() | ||||||
|  |         model.props.state = ShellModel.STATE_SHUTDOWN | ||||||
|  | 
 | ||||||
|  |         if env.is_emulator(): | ||||||
|  |             if os.environ.has_key('SUGAR_EMULATOR_PID'): | ||||||
|  |                 pid = int(os.environ['SUGAR_EMULATOR_PID']) | ||||||
|  |                 os.kill(pid, signal.SIGTERM) | ||||||
|  |         else: | ||||||
|  |             bus = dbus.SystemBus() | ||||||
|  |             proxy = bus.get_object('org.freedesktop.Hal', | ||||||
|  |                                    '/org/freedesktop/Hal/devices/computer') | ||||||
|  |             mgr = dbus.Interface(proxy, 'org.freedesktop.Hal.Device.SystemPowerManagement') | ||||||
|  |             mgr.Shutdown() | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user