From 6963aafc04dede116505cd4f236b6b97642a68ce Mon Sep 17 00:00:00 2001 From: Agustin Zubiaga Date: Fri, 28 Dec 2012 04:33:25 +0000 Subject: Utilizando iconview en lugar de treeview --- diff --git a/activity.py b/activity.py index eb53983..21510da 100644 --- a/activity.py +++ b/activity.py @@ -21,18 +21,21 @@ import os import subprocess from gi.repository import Gtk +from gi.repository import GdkPixbuf from gi.repository import WebKit from sugar3.activity import activity from sugar3.activity.widgets import StopButton from sugar3.activity.widgets import ActivityToolbarButton from sugar3.graphics.toolbarbox import ToolbarBox +from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.combobox import ComboBox +from sugar3.graphics import style RUNSERVER = os.path.join(os.environ['SUGAR_BUNDLE_PATH'], 'runserver.sh') SERVERDIR = os.path.join(os.environ['SUGAR_BUNDLE_PATH'], 'hnd_webapp') +IMAGESDIR = os.path.join(SERVERDIR, 'images') subprocess.Popen([RUNSERVER, SERVERDIR]) - ACTIVITIES_URL = 'http://0.0.0.0:8000/lesson.html?name=' grades = [('Tercer grado', @@ -81,6 +84,9 @@ class HNDViewer(activity.Activity): activity_button = ActivityToolbarButton(self) toolbarbox.toolbar.insert(activity_button, 0) + separator = Gtk.SeparatorToolItem() + toolbarbox.toolbar.insert(separator, -1) + self.combobox = ComboBox() self.combobox.connect('changed', self._combo_changed) self.combobox.show() @@ -90,6 +96,17 @@ class HNDViewer(activity.Activity): toolbarbox.toolbar.insert(item, -1) separator = Gtk.SeparatorToolItem() + separator.props.draw = False + toolbarbox.toolbar.insert(separator, -1) + + self._show_activities_btn = ToolButton() + self._show_activities_btn.set_tooltip('Ver lista de Unidades') + self._show_activities_btn.props.icon_name = 'activities-list' + self._show_activities_btn.connect('clicked', + self._show_activities_list) + toolbarbox.toolbar.insert(self._show_activities_btn, -1) + + separator = Gtk.SeparatorToolItem() separator.set_expand(True) separator.set_draw(False) toolbarbox.toolbar.insert(separator, -1) @@ -100,48 +117,44 @@ class HNDViewer(activity.Activity): self.set_toolbar_box(toolbarbox) # Canvas - paned = Gtk.Paned() - paned.set_orientation(Gtk.Orientation.HORIZONTAL) - - self._treeview = Gtk.TreeView() - column = Gtk.TreeViewColumn('Unidades') - cellrenderer = Gtk.CellRendererText() - column.pack_start(cellrenderer, True) - self._treeview.append_column(column) - column.add_attribute(cellrenderer, 'text', 1) + self._notebook = Gtk.Notebook() + self._notebook.set_show_tabs(False) + + self._iconview = Gtk.IconView() self.load_buffers() self.combobox.set_active(0) - self._treeview.set_model(self.buffers['Tercer grado']) - self._treeview.show() - paned.pack1(self._treeview) + scrollwnd = Gtk.ScrolledWindow() + scrollwnd.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) - # When selecting a Unit - self._selection = self._treeview.get_selection() - self._selection.set_select_function(self._select_fn, None) + self._iconview.set_model(self.buffers['Tercer grado']) + self._iconview.set_markup_column(0) + self._iconview.set_pixbuf_column(1) + self._iconview.connect('selection-changed', self._select_fn) + scrollwnd.add(self._iconview) + self._notebook.append_page(scrollwnd, Gtk.Label()) self._browser = WebKit.WebView() self._browser.set_full_content_zoom(True) - self._browser.set_zoom_level( + self._browser.set_zoom_level( self._browser.get_zoom_level() + 0.3) - paned.pack2(self._browser) + self._notebook.append_page(self._browser, Gtk.Label()) - paned.show() - self.set_canvas(paned) - - # TODO: Create a IconView - # iconview = Gtk.IconView() - # self._notebook.append_page(iconview) - -# self._browser.open('http://www.google.com.uy/') + self.set_canvas(self._notebook) self.show_all() + self._show_activities_list() + + def _show_activities_list(self, *args): + self._notebook.set_current_page(0) + self._show_activities_btn.set_sensitive(False) + self.combobox.set_sensitive(True) def _combo_changed(self, widget): active = widget.get_active_item() logger.warning(active[0]) - self._treeview.set_model(self.buffers[active[0]]) + self._iconview.set_model(self.buffers[active[0]]) def read_file(self, file_path): return @@ -151,13 +164,31 @@ class HNDViewer(activity.Activity): def load_buffers(self): for i in grades: - grade_buffer = Gtk.ListStore(str, str) + grade_buffer = Gtk.ListStore(str, GdkPixbuf.Pixbuf, str) for lesson in i[1]: - grade_buffer.append(lesson) + imagepath = os.path.join(IMAGESDIR, lesson[0], 'portada.gif') + if os.path.exists(imagepath): + image = GdkPixbuf.Pixbuf.new_from_file_at_size( + imagepath, + style.XLARGE_ICON_SIZE * 2, + style.XLARGE_ICON_SIZE * 2) + else: + # We don't found the image + image = GdkPixbuf.Pixbuf.new_from_file_at_size( + '/home/aguz/hey.png', + style.XLARGE_ICON_SIZE * 2, + style.XLARGE_ICON_SIZE * 2) + + grade_buffer.append(['%s' % lesson[1], image, lesson[0]]) self.buffers[i[0]] = grade_buffer self.combobox.append_item(i[0], i[0]) - def _select_fn(self, selection, model, path, currently_selected, data): - unit = model.get_value(model.get_iter(path), 0) + def _select_fn(self, widget): + self._notebook.set_current_page(1) + self.combobox.set_sensitive(False) + self._show_activities_btn.set_sensitive(True) + iter_ = widget.get_model().get_iter(widget.get_selected_items()[0]) + unit = widget.get_model().get(iter_, 2)[0] self._browser.open(ACTIVITIES_URL + unit) return True + diff --git a/icons/activities-list.svg b/icons/activities-list.svg new file mode 100644 index 0000000..48c53bd --- /dev/null +++ b/icons/activities-list.svg @@ -0,0 +1,101 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v0.9.1