Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-25 10:49:53 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-25 10:49:53 (GMT)
commit0baac89a6109fdbda904d37edfef0305fb36fe33 (patch)
tree1e57914e119b09b3cb3c000c13b6ccaded422ebc
parent811a7d8411f8bea383497cd24ed3836645a55c48 (diff)
Use gtk progress bar.
-rw-r--r--shell/view/ClipboardBubble.py136
-rw-r--r--shell/view/Makefile.am1
-rw-r--r--shell/view/clipboardmenu.py37
3 files changed, 13 insertions, 161 deletions
diff --git a/shell/view/ClipboardBubble.py b/shell/view/ClipboardBubble.py
deleted file mode 100644
index 62b16a9..0000000
--- a/shell/view/ClipboardBubble.py
+++ /dev/null
@@ -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();
diff --git a/shell/view/Makefile.am b/shell/view/Makefile.am
index bd4cf7a..abbb230 100644
--- a/shell/view/Makefile.am
+++ b/shell/view/Makefile.am
@@ -6,7 +6,6 @@ sugar_PYTHON = \
ActivityHost.py \
BuddyIcon.py \
BuddyMenu.py \
- ClipboardBubble.py \
clipboardicon.py \
clipboardmenu.py \
keyhandler.py \
diff --git a/shell/view/clipboardmenu.py b/shell/view/clipboardmenu.py
index 2106c76..e5e9bc8 100644
--- a/shell/view/clipboardmenu.py
+++ b/shell/view/clipboardmenu.py
@@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from gettext import gettext as _
+import gtk
import hippo
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 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):
ACTION_DELETE = 0
@@ -55,8 +35,12 @@ class ClipboardMenu(Menu):
self.props.border = 0
if percent < 100:
- self._progress_bar = ClipboardProgressBar(percent)
- self.append(self._progress_bar)
+ self._progress_bar = gtk.ProgressBar()
+ self._update_progress_bar(percent)
+
+ canvas_widget = hippo.CanvasWidget()
+ canvas_widget.props.widget = self._progress_bar
+ self.append(canvas_widget)
else:
self._progress_bar = None
@@ -91,10 +75,15 @@ class ClipboardMenu(Menu):
self._add_stop_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):
self.set_title(name)
if self._progress_bar:
- self._progress_bar.set_property('percent', percent)
+ self._update_progress_bar(percent)
self._update_icons(percent, activity, installable)
def _add_remove_item(self):