conduit r1388 - in trunk: . conduit/modules/FspotModule
- From: thomasvm svn gnome org
- To: svn-commits-list gnome org
- Subject: conduit r1388 - in trunk: . conduit/modules/FspotModule
- Date: Sat, 22 Mar 2008 21:02:36 +0000 (GMT)
Author: thomasvm
Date: Sat Mar 22 21:02:35 2008
New Revision: 1388
URL: http://svn.gnome.org/viewvc/conduit?rev=1388&view=rev
Log:
2008-03-22 Thomas Van Machelen <thomas vanmachelen gmail com>:
* conduit/modules/FspotModule/config.glade:
* conduit/modules/FspotModule/FspotModule.py: Add possibility to
configuration dialog to create tags in F-Spot. Fixes #517536
Modified:
trunk/ChangeLog
trunk/conduit/modules/FspotModule/FspotModule.py
trunk/conduit/modules/FspotModule/config.glade
Modified: trunk/conduit/modules/FspotModule/FspotModule.py
==============================================================================
--- trunk/conduit/modules/FspotModule/FspotModule.py (original)
+++ trunk/conduit/modules/FspotModule/FspotModule.py Sat Mar 22 21:02:35 2008
@@ -50,6 +50,8 @@
self.photo_remote = None
self.tag_remote = None
+ self.list_store = None
+
self._connect_to_fspot()
self._hookup_signal_handlers()
@@ -139,10 +141,7 @@
# add tags from upload info
for tag in uploadInfo.tags:
- try:
- self.tag_remote.GetTagByName (tag)
- except:
- self.tag_remote.CreateTag (tag)
+ self._create_tag (tag)
tags.append (tag)
# import the photo
@@ -181,12 +180,32 @@
self.photo_remote.FinishRoll ()
self.has_roll = False
+ def _create_tag (self, tag):
+ # Check if remote is read only
+ if self.tag_remote.IsReadOnly ():
+ return
+
+ # Now see if we can create the tag
+ try:
+ self.tag_remote.GetTagByName (tag)
+ except:
+ self.tag_remote.CreateTag (tag)
+
def handle_photoremote_down(self):
self.photo_remote = None
self.tag_remote = None
def configure(self, window):
import gtk
+ def create_tags_clicked_cb(button):
+ text = self.tags_entry.get_text()
+ if not text:
+ return
+ tags = text.split(',')
+ for tag in tags:
+ self._create_tag (tag.strip ())
+ refresh_list_store()
+
def col1_toggled_cb(cell, path, model ):
#not because we get this cb before change state
checked = not cell.get_active()
@@ -202,6 +221,20 @@
log.debug("Toggle '%s'(%s) to: %s" % (model[path][NAME_IDX], val, checked))
return
+ def refresh_list_store ():
+ #Build a list of all the tags
+ if not self.list_store:
+ self.list_store = gtk.ListStore(gobject.TYPE_STRING, #NAME_IDX
+ gobject.TYPE_BOOLEAN, #active
+ )
+ else:
+ self.list_store.clear ()
+ #Fill the list store
+ i = 0
+ for tag in self._get_all_tags():
+ self.list_store.append((tag,tag in self.enabledTags))
+ i += 1
+
#Fspot must be running
if not self._connect_to_fspot():
return
@@ -212,17 +245,9 @@
"FspotConfigDialog"
)
tagtreeview = tree.get_widget("tagtreeview")
- #Build a list of all the tags
- list_store = gtk.ListStore(gobject.TYPE_STRING, #NAME_IDX
- gobject.TYPE_BOOLEAN, #active
- )
- #Fill the list store
- i = 0
- for tag in self._get_all_tags():
- list_store.append((tag,tag in self.enabledTags))
- i += 1
- #Set up the treeview
- tagtreeview.set_model(list_store)
+ refresh_list_store()
+ tagtreeview.set_model(self.list_store)
+
#column 1 is the tag name
tagtreeview.append_column( gtk.TreeViewColumn(_("Tag Name"),
gtk.CellRendererText(),
@@ -231,16 +256,21 @@
#column 2 is a checkbox for selecting the tag to sync
renderer1 = gtk.CellRendererToggle()
renderer1.set_property('activatable', True)
- renderer1.connect( 'toggled', col1_toggled_cb, list_store )
+ renderer1.connect( 'toggled', col1_toggled_cb, self.list_store )
tagtreeview.append_column( gtk.TreeViewColumn(_("Enabled"),
renderer1,
active=1)
)
+
+ # Area for creating additional tags
+ create_button = tree.get_widget ('create_button')
+ self.tags_entry = tree.get_widget ('tags_entry')
+ create_button.connect('clicked', create_tags_clicked_cb)
dlg = tree.get_widget("FspotConfigDialog")
dlg.set_transient_for(window)
- response = dlg.run()
+ response = Utils.run_dialog (dlg, window)
dlg.destroy()
def set_configuration(self, config):
Modified: trunk/conduit/modules/FspotModule/config.glade
==============================================================================
--- trunk/conduit/modules/FspotModule/config.glade (original)
+++ trunk/conduit/modules/FspotModule/config.glade Sat Mar 22 21:02:35 2008
@@ -129,6 +129,89 @@
<property name="fill">True</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="tag_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Create Tags: </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="tags_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="create_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-apply</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]