Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/resources.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2012-03-18 04:20:50 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2012-03-18 04:20:50 (GMT)
commit95880ba1eb3de2058d223963d8a0105aef08e667 (patch)
tree7dfa5f8767106a54863d9d423417621e3888652d /resources.py
parent476cffc9b69e1139fabb02a4513fb5884cf82c90 (diff)
Add the posibility of show a resource as a icon. Editor modified.
This feature is used to display as a book, microscope or computer, a particular resource. Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Diffstat (limited to 'resources.py')
-rw-r--r--resources.py78
1 files changed, 75 insertions, 3 deletions
diff --git a/resources.py b/resources.py
index c86f2c3..6019d07 100644
--- a/resources.py
+++ b/resources.py
@@ -30,7 +30,9 @@ class CollectResourcesWin(gtk.HBox):
| +------------------------------+
| | +--------------+ Size |
| | | ImageView | Load from |
- | | +--------------+ Journal |
+ | | | | Journal |
+ | | | | Show as |
+ | | +--------------+ |IconView | |
| | +--------------------------+ |
| | | Text | |
| | +--------------------------+ |
@@ -75,17 +77,38 @@ class CollectResourcesWin(gtk.HBox):
scrollwin.add_with_viewport(self.image)
hbox_image.pack_start(scrollwin, True, padding=5)
vbox_image = gtk.VBox()
- self.load_image_button = gtk.Button('Load Image')
+ self.load_image_button = gtk.Button(_('Load Image'))
self.load_image_button.connect('clicked', self.__load_image_cb)
vbox_image.pack_start(self.load_image_button, False, padding=5)
- size_label = gtk.Label('Image size:')
+ size_label = gtk.Label(_('Image size:'))
vbox_image.pack_start(size_label, False, padding=5)
self.size_label_value = gtk.Label('')
vbox_image.pack_start(self.size_label_value, False, padding=5)
hbox_image.pack_start(vbox_image, False, padding=5)
vbox.pack_start(hbox_image, True, padding=5)
+ # show as icon
+ self.show_as_icon_check = gtk.CheckButton()
+ self._set_show_as_icon_label()
+ self.show_as_icon_check.connect('toggled', self.__show_as_toggled_cb)
+ vbox_image.pack_start(self.show_as_icon_check, False, padding=5)
+
+ self._icons_store = gtk.ListStore(str, gtk.gdk.Pixbuf, str)
+ self._icons_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
+ self._iconview = gtk.IconView(self._icons_store)
+ self._iconview.set_text_column(0)
+ self._iconview.set_pixbuf_column(1)
+ self._iconview.set_sensitive(False)
+ self._iconview.set_selection_mode(gtk.SELECTION_SINGLE)
+ self.load_icons()
+ self._iconview.connect('item-activated', self.__iconview_activated_cb)
+ scrolled = gtk.ScrolledWindow()
+ scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ scrolled.add_with_viewport(self._iconview)
+
+ vbox_image.pack_start(scrolled, True, padding=5)
+
#hbox_editor = gtk.HBox()
self.editor = webkit.WebView()
self.title_entry.connect('changed',
@@ -103,6 +126,39 @@ class CollectResourcesWin(gtk.HBox):
self._image_resource_path = None
+ def __show_as_toggled_cb(self, button):
+ self._iconview.set_sensitive(button.get_active())
+ if not button.get_active():
+ self._set_show_as_icon_label()
+ self._modified_data = True
+
+ def __iconview_activated_cb(self, widget, item):
+ model = widget.get_model()
+ image_file_name = model[item][2]
+ self._set_show_as_icon_label(self._get_image_name(image_file_name))
+
+ def _get_image_name(self, image_file_name):
+ image_name = image_file_name[image_file_name.rfind('/') + 1:]
+ return image_name[:image_name.find('.')]
+
+ def _set_show_as_icon_label(self, text=None):
+ if text is None:
+ self.show_as_icon_check.set_label(_('Show as Icon:'))
+ else:
+ self.show_as_icon_check.set_label(_('Show as %s') % text)
+
+ def load_icons(self):
+ images_path = os.path.join(activity.get_bundle_path(),
+ 'images/resource_icons')
+ logging.error('Loading resource icons from %s', images_path)
+ for file_name in os.listdir(images_path):
+ if not file_name.endswith('.txt'):
+ image_file_name = os.path.join(images_path, file_name)
+ logging.error('Adding %s', image_file_name)
+ pxb = gtk.gdk.pixbuf_new_from_file_at_size(image_file_name,
+ 100, 100)
+ self._icons_store.append(['', pxb, image_file_name])
+
def __load_image_cb(self, button):
try:
chooser = ObjectChooser(_('Choose image'),
@@ -166,13 +222,22 @@ class CollectResourcesWin(gtk.HBox):
with open(self._image_resource_path + '.html', 'w') as html_file:
html_file.write(self._get_html())
+ # show_as
+ show_as = None
+ if self.show_as_icon_check.get_active():
+ item = self._iconview.get_selected_items()[0][0]
+ show_as = self._icons_store[item][2]
+
resource = {'title': self.title_entry.get_text(),
'file_image': self._image_resource_path,
'file_text': self._image_resource_path + '.html',
+ 'show_as': show_as,
'id_resource': key}
+
if new_entry:
self.model.data['resources'].append(resource)
self.treemodel.append([self.title_entry.get_text(), key])
+
self._modified_data = False
def _get_html(self):
@@ -200,6 +265,12 @@ class CollectResourcesWin(gtk.HBox):
else:
self.image.clear()
self._image_resource_path = None
+
+ # show as
+ self.show_as_icon_check.set_active(resource['show_as'] is not None)
+ self._iconview.set_sensitive(self.show_as_icon_check.get_active())
+ self._set_show_as_icon_label(self._get_image_name(resource['show_as']))
+
self._modified_data = False
def del_resource(self):
@@ -225,6 +296,7 @@ class CollectResourcesWin(gtk.HBox):
resource = {'title': '',
'file_image': '',
'file_text': '',
+ 'show_as': None,
'id_resource': self._selected_key}
self._display_resource(resource)
self.emit('resource_updated')