Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py93
1 files changed, 62 insertions, 31 deletions
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(['<b>%s</b>' % 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
+