diff options
author | Chris Ball <cjb@laptop.org> | 2007-08-18 19:42:09 (GMT) |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2007-08-18 19:42:09 (GMT) |
commit | 491e50ae030088b197b8c0fdb3a200c4cf3d4069 (patch) | |
tree | a4e2bb6f028091902d65cc727c280c17b539ffbe /activity.py | |
parent | 5682a76cbbe3a59f8cb984b70c0c17368baafc04 (diff) |
Add sidebar, populate it with files in data/<dir>/*.
Diffstat (limited to 'activity.py')
-rw-r--r-- | activity.py | 69 |
1 files changed, 53 insertions, 16 deletions
diff --git a/activity.py b/activity.py index 9a9d0ed..731e9e6 100644 --- a/activity.py +++ b/activity.py @@ -25,12 +25,14 @@ import hippo import pango import vte import sys +import os +import gobject from dbus import Interface from dbus.service import method, signal from dbus.gobject_service import ExportedGObject -from sugar.activity.activity import Activity, ActivityToolbox +from sugar.activity.activity import Activity, ActivityToolbox, get_bundle_path from sugar.presence import presenceservice # will eventually be imported from sugar @@ -54,19 +56,45 @@ class PippyActivity(Activity): toolbox.show() # Hippo Canvas: - # FIXME: Need a sidebar to show different files. + win = gtk.Window() + + hbox = hippo.CanvasBox(spacing=4, + orientation=hippo.ORIENTATION_HORIZONTAL) + vbox = hippo.CanvasBox(spacing=4, orientation=hippo.ORIENTATION_VERTICAL) - #self.main_panel = hippo.CanvasBox(spacing=4, - # orientation=hippo.ORIENTATION_VERTICAL) - #self.entry = gtk.Entry() - #self.main_panel.append(hippo.CanvasWidget(widget=self.entry)) - #hbox.append(self.main_panel, hippo.PACK_EXPAND) - - win = gtk.Window() + # The sidebar. + self.model = gtk.TreeStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING) + treeview = gtk.TreeView(self.model) + cellrenderer = gtk.CellRendererText() + treecolumn = gtk.TreeViewColumn("Examples", cellrenderer, text=1) + treeview.get_selection().connect("changed", self.selection_cb) + treeview.append_column(treecolumn) + treeview.set_size_request(200, 900) + treeview.show() + + # Create scrollbars around the view. + scrolled = gtk.ScrolledWindow() + scrolled.add(treeview) + scrolled.show() + hbox.append(hippo.CanvasWidget(widget=scrolled), hippo.PACK_EXPAND) + + for root, dirs, files in os.walk(get_bundle_path() + '/data/', topdown=True): + for i in dirs: + self._logger.debug("dir %s" % i) + + listdir = os.listdir(root + i) + listdir.sort() + for file in listdir: + self._logger.debug("file %s" % file) + entry = { "name": file, "path": root + i + "/" + file } + iter = self.model.insert_before(None, None) + self.model.set_value(iter, 0, entry) + self.model.set_value(iter, 1, entry["name"]) + + # Source buffer self.text_buffer = gtksourceview2.Buffer() - lang_manager = gtksourceview2.language_manager_get_default() langs = lang_manager.list_languages() for lang in langs: @@ -76,8 +104,9 @@ class PippyActivity(Activity): self.text_buffer.set_highlight(True) + # The GTK source view window self.text_view = gtksourceview2.View(self.text_buffer) - self.text_view.set_size_request(1200, 300) + self.text_view.set_size_request(900, 300) self.text_view.set_editable(True) self.text_view.set_cursor_visible(True) self.text_view.set_show_line_numbers(True) @@ -88,7 +117,6 @@ class PippyActivity(Activity): #style_scheme = mgr.get_scheme('kate') #self.text_buffer.set_style_scheme(style_scheme) - # The GTK source view window codesw = gtk.ScrolledWindow() codesw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) @@ -98,9 +126,8 @@ class PippyActivity(Activity): # The "go" button gobutton = gtk.Button(label="Run!") - gobutton.add(self.text_view) gobutton.connect('clicked', self.gobutton_cb) - gobutton.set_size_request(1200, 50) + gobutton.set_size_request(1000, 50) vbox.append(hippo.CanvasWidget(widget=gobutton)) # The vte python window @@ -121,12 +148,14 @@ class PippyActivity(Activity): []) vbox.append(hippo.CanvasWidget(widget=self._vte), hippo.PACK_EXPAND) - + + hbox.append(vbox) canvas = hippo.Canvas() - canvas.set_root(vbox) + canvas.set_root(hbox) self.set_canvas(canvas) self.show_all() + self.hellotube = None # get the Presence Service @@ -154,6 +183,14 @@ class PippyActivity(Activity): # we've already joined self._joined_cb() + def selection_cb(self, column): + model, iter = column.get_selected() + value = model.get_value(iter,0) + self._logger.debug("clicked! %s" % value['path']) + file = open(value['path'], 'r') + lines = file.readlines() + self.text_buffer.set_text("".join(lines)) + def gobutton_cb(self, button): #self._vte.reset(True, True) self._vte.feed("\x1B[H\x1B[J") |