Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/canvas.py
diff options
context:
space:
mode:
authorIgnacio Rodríguez <ignacio@sugarlabs.org>2013-02-14 21:27:36 (GMT)
committer Ignacio Rodríguez <ignacio@sugarlabs.org>2013-02-14 21:27:36 (GMT)
commit08b46add08fce190e7bce3507b65c82bfc0080fd (patch)
tree3330a2eaf7ed2d3ba0a6d7bd42524fd92f8a4aeb /canvas.py
parent1b10951d6afea9fa7a89fe530cb4e2d1009c0458 (diff)
TreeView en vez de VBox
Diffstat (limited to 'canvas.py')
-rw-r--r--canvas.py170
1 files changed, 65 insertions, 105 deletions
diff --git a/canvas.py b/canvas.py
index 5cc6d6b..2032fd0 100644
--- a/canvas.py
+++ b/canvas.py
@@ -27,11 +27,34 @@ import utils
from gettext import gettext as _
BTN_COLOR = gtk.gdk.color_parse("blue")
+ITERS = []
# Logging
_logger = utils.get_logger()
+def _gen_activity(_id, parent):
+ _id = _id
+ _activity_props = parent._list[_id]
+ text1 = "<b>%s</b>" % _activity_props[1]
+ text2 = "<b>Description: %s</b>" % _activity_props[2]
+ text3 = "<b>Version: %s</b>" % _activity_props[3]
+ text4 = "<b>Works with: %s</b>" % (_activity_props[4] + ' - ' + _activity_props[5])
+ text5 = "<b>Updated: %s</b>" % _activity_props[6]
+ text6 = "<b>Downloads: %s</b>" % _activity_props[7]
+ text7 = "<b>Homepage: %s</b>" % _activity_props[8]
+ text = text1 + "\n" + text2 + "\n" + text3 + "\n" + text4 + "\n" + text5 + "\n" + text6 + "\n" + text7
+ """
+ try:
+ pixbuf_icon = utils.get_icon(self._id)
+ self.icon.set_from_pixbuf(pixbuf_icon)
+ except:
+ pass
+ """
+ texto = [text1, text1, text]
+ return texto
+
+
class Canvas(gtk.Notebook):
def __init__(self, parent):
@@ -72,11 +95,38 @@ class Canvas(gtk.Notebook):
self.set_page(1)
-class List(gtk.VBox):
+class List(gtk.TreeView):
def __init__(self, parent):
- gtk.VBox.__init__(self)
+ gtk.TreeView.__init__(self)
+
+ self._model = gtk.ListStore(str, str, str)
+ self.set_model(self._model)
+
+ self.icon = gtk.CellRendererPixbuf()
+ self._name = gtk.CellRendererText()
+ self.description = gtk.CellRendererText()
+ self.description.props.wrap_mode = True
+
+ self.icon_column = gtk.TreeViewColumn(_("Icon"))
+ self._name_column = gtk.TreeViewColumn(_("Activity"))
+ self.description_column = gtk.TreeViewColumn(_("Description"))
+
+ self.icon_column.pack_start(self.icon, False)
+ self._name_column.pack_start(self._name, True)
+ self.description_column.pack_start(self.description, True)
+
+ self._name_column.add_attribute(self._name, "markup", 1)
+ self.description_column.add_attribute(self.description, "markup", 2)
+ self.icon_column.add_attribute(self.icon, "icon_name", 0)
+
+ self.current = 0
+
+ self.append_column(self.icon_column)
+ self.append_column(self._name_column)
+ self.append_column(self.description_column)
+
self.download_list = DownloadList()
self._parent = parent
@@ -88,16 +138,19 @@ class List(gtk.VBox):
self.show_all()
+ def up(self):
+ self.current += 1
+
+ def down(self):
+ self.current -= 1
+
def stop_search(self, *args):
self.stopped = True
- def _add_activity(self, widget):
- self.pack_start(widget, False, False, 7)
- separator = gtk.HSeparator()
- self.pack_start(separator, False, False, 2)
-
- widget.show()
- separator.show()
+ def _add_activity(self, info):
+ iter = self._model.insert(self.current, info)
+ ITERS.append(iter)
+ self.up()
def clear(self):
for child in self.get_children():
@@ -119,6 +172,8 @@ class List(gtk.VBox):
def _search(self):
w = str(self.w)
_id = -1
+ for x in ITERS:
+ self._model.remove(x)
for activity in self._list:
if self.stopped:
break
@@ -126,106 +181,11 @@ class List(gtk.VBox):
name = activity[1].lower()
description = activity[2].lower()
if (w in name) or (w in description):
- activity_widget = ActivityWidget(_id, self)
+ activity_widget = _gen_activity(_id, self)
self._add_activity(activity_widget)
self.can_search = True
-class ActivityWidget(gtk.HBox):
-
- def __init__(self, _id, parent):
- gtk.HBox.__init__(self, False, 0)
-
- self._id = _id
- self._download_list = parent.download_list
- self._downloads_icon = parent._parent.downloads_icon
-
- self.name_label = self._label()
- self.icon = gtk.Image()
- self.install_button = gtk.Button(_("INSTALL"))
- self.install_button.connect("clicked", self._btn_clicked)
- self.install_button.modify_bg(gtk.STATE_NORMAL, BTN_COLOR)
- self.install_button.modify_bg(gtk.STATE_PRELIGHT, BTN_COLOR)
- self.install_button.modify_bg(gtk.STATE_ACTIVE, BTN_COLOR)
- self.install_button.set_size_request(gtk.gdk.screen_width() / 10, -1)
-
- self._activity_props = parent._list[_id]
-
- self._left_box = gtk.VBox()
- self._right_box = gtk.VBox()
- self._icon_and_label = gtk.HBox()
-
- self._icon_and_label.pack_start(self.icon, False, True, 0)
- self._icon_and_label.pack_end(self.name_label, True, True, 6)
- self._left_box.pack_start(self._icon_and_label, False, True, 0)
- self._left_box.pack_end(self.install_button, False, True, 0)
-
- self.desc_label = self._label()
- self.vers_label = self._label()
- self.suga_label = self._label()
- self.upda_label = self._label()
- self.down_label = self._label()
- self.home_label = self._label()
-
- self._right_box.pack_start(self.desc_label, False, True, 0)
- self._right_box.pack_start(self.vers_label, False, True, 0)
- self._right_box.pack_start(self.suga_label, False, True, 0)
- self._right_box.pack_start(self.upda_label, False, True, 0)
- self._right_box.pack_start(self.down_label, False, True, 0)
- self._right_box.pack_start(self.home_label, False, True, 0)
-
- self.pack_start(self._left_box, False, True, 10)
- self.pack_end(self._right_box, False, True, 50)
-
- self.connect("expose-event", self._expose_event_cb)
-
- self._setup()
-
- self.show_all()
-
- def _expose_event_cb(self, widget, event):
- self.install_button.set_size_request(gtk.gdk.screen_width() / 10, -1)
-
- def _label(self):
- label = gtk.Label()
- label.set_justify(gtk.JUSTIFY_LEFT)
- label.set_line_wrap(True)
-
- return label
-
- def _setup(self):
- self.name_label.set_markup("<b>%s</b>" % self._activity_props[1])
-
- self.desc_label.set_markup(self._activity_props[2])
- self.vers_label.set_markup('<b>Version:</b> ' + self._activity_props[3])
- self.suga_label.set_markup('<b>Works with:</b> ' +\
- self._activity_props[4] + ' - ' + self._activity_props[5])
- self.upda_label.set_markup('<b>Updated:</b> ' + self._activity_props[6])
- self.down_label.set_markup('<b>Downloads:</b> ' +\
- self._activity_props[7])
- self.home_label.set_markup('<b>Homepage:</b> ' +\
- self._activity_props[8])
-
- try:
- pixbuf_icon = utils.get_icon(self._id)
- self.icon.set_from_pixbuf(pixbuf_icon)
- except:
- pass
-
- def _btn_clicked(self, widget):
- _logger.info("Install button clicked (%s)")
- self._downloads_icon.animate()
-
- threading.Thread(target=utils.download_activity, args=(self._id,
- self._progress_changed)).start()
-
- self._download_id = self._download_list.add_download(
- self._activity_props[1])
-
- def _progress_changed(self, progress):
- self._download_list.set_download_progress(self._download_id, progress)
-
-
class DownloadList(gtk.TreeView):
def __init__(self):