* src/EditSource.py: add in-place editing for key,value pairs
* src/ReadXML.py: add support for Source key,value pairs * src/WriteXML.py: add support for Source key,value pairs * src/RelLib.py: add support for Source key,value pairs * src/gramps.glade: add support for Source key,value pairs svn: r3746
This commit is contained in:
		| @@ -1,3 +1,10 @@ | ||||
| 2004-11-22  Don Allingham  <dallingham@users.sourceforge.net> | ||||
| 	* src/EditSource.py: add in-place editing for key,value pairs | ||||
| 	* src/ReadXML.py: add support for Source key,value pairs | ||||
| 	* src/WriteXML.py: add support for Source key,value pairs | ||||
| 	* src/RelLib.py: add support for Source key,value pairs | ||||
| 	* src/gramps.glade: add support for Source key,value pairs | ||||
|  | ||||
| 2004-11-20  Don Allingham  <dallingham@users.sourceforge.net> | ||||
| 	* src/plugins/ChangeNames.py: Add a plugin to change capitalization | ||||
| 	of family names | ||||
|   | ||||
| @@ -129,6 +129,27 @@ class EditSource: | ||||
|             self.top_window.get_widget("edit_photo").set_sensitive(0) | ||||
|             self.top_window.get_widget("delete_photo").set_sensitive(0) | ||||
|  | ||||
|         self.datalist = self.top_window.get_widget('datalist') | ||||
|         colno = 0 | ||||
|         for title in [ (_('Key'),0,175), (_('Value'),1,150)]: | ||||
|             renderer = gtk.CellRendererText() | ||||
|             renderer.set_property('editable',True) | ||||
|             renderer.connect('edited',self.edit_cb, colno) | ||||
|             column = gtk.TreeViewColumn(title[0], renderer, text=colno) | ||||
|             colno += 1 | ||||
|             column.set_clickable(True) | ||||
|             column.set_resizable(True) | ||||
|             column.set_min_width(title[2]) | ||||
|             column.set_sort_column_id(title[1]) | ||||
|             self.datalist.append_column(column) | ||||
|  | ||||
|         self.data_model = gtk.ListStore(str,str) | ||||
|         self.datalist.set_model(self.data_model) | ||||
|         dmap = self.source.get_data_map() | ||||
|         for item in dmap.keys(): | ||||
|             self.data_model.append(row=[item,dmap[item]]) | ||||
|         self.data_model.append(row=['','']) | ||||
|              | ||||
|         if parent_window: | ||||
|             self.top.set_transient_for(parent_window) | ||||
|  | ||||
| @@ -138,6 +159,12 @@ class EditSource: | ||||
|         self.add_itself_to_menu() | ||||
|         self.top.show() | ||||
|  | ||||
|     def edit_cb(self, cell, path, new_text, data): | ||||
|         iter = self.data_model.get_iter(path) | ||||
|         self.data_model.set_value(iter,data,new_text) | ||||
|         if int(path)+1 == len(self.data_model): | ||||
|             self.data_model.append(row=['','']) | ||||
|  | ||||
|     def on_delete_event(self,obj,b): | ||||
|         self.close_child_windows() | ||||
|         self.remove_itself_from_menu() | ||||
| @@ -329,6 +356,15 @@ class EditSource: | ||||
|         if format != self.source.get_note_format(): | ||||
|             self.source.set_note_format(format) | ||||
|  | ||||
|         new_map = {} | ||||
|         for val in range(0,len(self.data_model)-1): | ||||
|             node = self.data_model.get_iter(val) | ||||
|             key = self.data_model.get_value(node,0) | ||||
|             value = self.data_model.get_value(node,1)  | ||||
|             new_map[key] = value | ||||
|         if new_map != self.source.get_data_map(): | ||||
|             self.source.set_data_map(new_map) | ||||
|          | ||||
|         self.gallery_ok = 1 | ||||
|  | ||||
|         trans = self.db.transaction_begin() | ||||
|   | ||||
| @@ -369,6 +369,7 @@ class GrampsParser: | ||||
|             "cause"      : (None, self.stop_cause), | ||||
|             "description": (None, self.stop_description), | ||||
|             "event"      : (self.start_event, self.stop_event), | ||||
|             "data_item"  : (self.start_data_item, None), | ||||
|             "families"   : (None, self.stop_families), | ||||
|             "family"     : (self.start_family, self.stop_family), | ||||
|             "father"     : (self.start_father, None), | ||||
| @@ -578,6 +579,9 @@ class GrampsParser: | ||||
|     def start_temple(self,attrs): | ||||
|         self.ord.set_temple(attrs['val']) | ||||
|  | ||||
|     def start_data_item(self,attrs): | ||||
|         self.source.set_data_item(attrs['key'],attrs['value']) | ||||
|  | ||||
|     def start_status(self,attrs): | ||||
|         self.ord.set_status(int(attrs['val'])) | ||||
|  | ||||
|   | ||||
| @@ -1191,12 +1191,13 @@ class Source(PrimaryObject): | ||||
|         self.pubinfo = "" | ||||
|         self.note = Note() | ||||
|         self.media_list = [] | ||||
|         self.datamap = {} | ||||
|         self.abbrev = "" | ||||
|  | ||||
|     def serialize(self): | ||||
|         return (self.handle, self.gramps_id, self.title, self.author, | ||||
|                 self.pubinfo, self.note, self.media_list, self.abbrev, | ||||
|                 self.change) | ||||
|                 self.change,self.datamap) | ||||
|  | ||||
|     def unserialize(self,data): | ||||
|         """ | ||||
| @@ -1205,7 +1206,7 @@ class Source(PrimaryObject): | ||||
|         """ | ||||
|         (self.handle, self.gramps_id, self.title, self.author, | ||||
|          self.pubinfo, self.note, self.media_list, self.abbrev, | ||||
|          self.change) = data | ||||
|          self.change,self.datamap) = data | ||||
|          | ||||
|     def get_display_info(self): | ||||
|         return [self.title,self.gramps_id,self.author, | ||||
| @@ -1223,6 +1224,18 @@ class Source(PrimaryObject): | ||||
|         """Sets the list of MediaObject objects""" | ||||
|         self.media_list = list | ||||
|  | ||||
|     def get_data_map(self): | ||||
|         """Returns the data map of attributes for the source""" | ||||
|         return self.datamap | ||||
|  | ||||
|     def set_data_map(self,datamap): | ||||
|         """Sets the data map of attributes for the source""" | ||||
|         self.datamap = datamap | ||||
|  | ||||
|     def set_data_item(self,key,value): | ||||
|         """Sets the particular data item in the attribute data map""" | ||||
|         self.datamap[key] = value | ||||
|  | ||||
|     def set_title(self,title): | ||||
|         """sets the title of the Source""" | ||||
|         self.title = title | ||||
|   | ||||
| @@ -375,7 +375,8 @@ class XmlWriter: | ||||
|                     self.callback(float(count)/float(total)) | ||||
|                 count = count + 1 | ||||
|                 self.g.write("    <source id=\"%s\" handle=\"%s\" change=\"%d\">\n" % | ||||
|                              (source.get_gramps_id(), source.get_handle(), source.get_change_time())) | ||||
|                              (source.get_gramps_id(), source.get_handle(), | ||||
|                               source.get_change_time())) | ||||
|                 self.write_force_line("stitle",source.get_title(),3) | ||||
|                 self.write_line("sauthor",source.get_author(),3) | ||||
|                 self.write_line("spubinfo",source.get_publication_info(),3) | ||||
| @@ -383,6 +384,7 @@ class XmlWriter: | ||||
|                 if source.get_note() != "": | ||||
|                     self.write_note("note",source.get_note_object(),3) | ||||
|                 self.write_media_list(source.get_media_list()) | ||||
|                 self.write_data_map(source.get_data_map()) | ||||
|                 self.g.write("    </source>\n") | ||||
|             self.g.write("  </sources>\n") | ||||
|  | ||||
| @@ -770,6 +772,15 @@ class XmlWriter: | ||||
|                 self.write_note("note",photo.get_note_object(),indent+1) | ||||
|                 self.g.write('%s</objref>\n' % sp) | ||||
|  | ||||
|     def write_data_map(self,datamap,indent=3): | ||||
|         if len(datamap) == 0: | ||||
|             return | ||||
|          | ||||
|         sp = '  '*indent | ||||
|         for key in datamap.keys(): | ||||
|             self.g.write('%s<data_item key="%s" value="%s"/>' % | ||||
|                          (sp,key,datamap[key])) | ||||
|  | ||||
|     def write_url_list(self,list): | ||||
|         for url in list: | ||||
|             self.g.write('      <url priv="%d" href="%s"' % \ | ||||
|   | ||||
							
								
								
									
										105
									
								
								src/gramps.glade
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								src/gramps.glade
									
									
									
									
									
								
							| @@ -5851,6 +5851,51 @@ Other</property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
| 
 | ||||
| 	      <child> | ||||
| 		<widget class="GtkScrolledWindow" id="scrolledwindow83"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="can_focus">True</property> | ||||
| 		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||||
| 		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||||
| 		  <property name="shadow_type">GTK_SHADOW_NONE</property> | ||||
| 		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property> | ||||
| 
 | ||||
| 		  <child> | ||||
| 		    <widget class="GtkTreeView" id="datalist"> | ||||
| 		      <property name="visible">True</property> | ||||
| 		      <property name="can_focus">True</property> | ||||
| 		      <property name="headers_visible">True</property> | ||||
| 		      <property name="rules_hint">True</property> | ||||
| 		      <property name="reorderable">False</property> | ||||
| 		      <property name="enable_search">True</property> | ||||
| 		    </widget> | ||||
| 		  </child> | ||||
| 		</widget> | ||||
| 		<packing> | ||||
| 		  <property name="tab_expand">False</property> | ||||
| 		  <property name="tab_fill">True</property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
| 
 | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label432"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Data</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> | ||||
| 		</widget> | ||||
| 		<packing> | ||||
| 		  <property name="type">tab</property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
| 
 | ||||
| 	      <child> | ||||
| 		<widget class="GtkVBox" id="vbox64"> | ||||
| 		  <property name="visible">True</property> | ||||
| @@ -5901,15 +5946,25 @@ Other</property> | ||||
| 
 | ||||
| 			  <child> | ||||
| 			    <widget class="GtkButton" id="add_photo"> | ||||
| 			      <property name="width_request">36</property> | ||||
| 			      <property name="visible">True</property> | ||||
| 			      <property name="tooltip" translatable="yes">Add a new media object to the database and place it in this gallery</property> | ||||
| 			      <property name="can_default">True</property> | ||||
| 			      <property name="can_focus">True</property> | ||||
| 			      <property name="label" translatable="yes">_Add from file...</property> | ||||
| 			      <property name="use_underline">True</property> | ||||
| 			      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 			      <property name="focus_on_click">True</property> | ||||
| 			      <signal name="clicked" handler="on_addphoto_clicked" object="sourceEditor"/> | ||||
| 
 | ||||
| 			      <child> | ||||
| 				<widget class="GtkImage" id="image2288"> | ||||
| 				  <property name="visible">True</property> | ||||
| 				  <property name="stock">gtk-add</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> | ||||
| @@ -5922,13 +5977,22 @@ Other</property> | ||||
| 			    <widget class="GtkButton" id="button169"> | ||||
| 			      <property name="visible">True</property> | ||||
| 			      <property name="tooltip" translatable="yes">Select an existing media object from the database and place it in this gallery</property> | ||||
| 			      <property name="can_default">True</property> | ||||
| 			      <property name="can_focus">True</property> | ||||
| 			      <property name="label" translatable="yes">Add from _database...</property> | ||||
| 			      <property name="use_underline">True</property> | ||||
| 			      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 			      <property name="focus_on_click">True</property> | ||||
| 			      <signal name="clicked" handler="on_selectphoto_clicked" object="sourceEditor" last_modification_time="Fri, 12 Dec 2003 05:21:39 GMT"/> | ||||
| 
 | ||||
| 			      <child> | ||||
| 				<widget class="GtkImage" id="image2289"> | ||||
| 				  <property name="visible">True</property> | ||||
| 				  <property name="stock">gtk-index</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> | ||||
| @@ -5942,11 +6006,21 @@ Other</property> | ||||
| 			      <property name="visible">True</property> | ||||
| 			      <property name="tooltip" translatable="yes">Edit the properties of the selected object</property> | ||||
| 			      <property name="can_focus">True</property> | ||||
| 			      <property name="label" translatable="yes">_Edit...</property> | ||||
| 			      <property name="use_underline">True</property> | ||||
| 			      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 			      <property name="focus_on_click">True</property> | ||||
| 			      <signal name="clicked" handler="on_editphoto_clicked" object="sourceEditor" last_modification_time="Fri, 06 Feb 2004 20:06:09 GMT"/> | ||||
| 
 | ||||
| 			      <child> | ||||
| 				<widget class="GtkImage" id="image2290"> | ||||
| 				  <property name="width_request">36</property> | ||||
| 				  <property name="visible">True</property> | ||||
| 				  <property name="pixbuf">edit_sm.png</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> | ||||
| @@ -5959,13 +6033,22 @@ Other</property> | ||||
| 			    <widget class="GtkButton" id="delete_photo"> | ||||
| 			      <property name="visible">True</property> | ||||
| 			      <property name="tooltip" translatable="yes">Remove selected object from this gallery only</property> | ||||
| 			      <property name="can_default">True</property> | ||||
| 			      <property name="can_focus">True</property> | ||||
| 			      <property name="label" translatable="yes">_Remove</property> | ||||
| 			      <property name="use_underline">True</property> | ||||
| 			      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 			      <property name="focus_on_click">True</property> | ||||
| 			      <signal name="clicked" handler="on_deletephoto_clicked" object="sourceEditor"/> | ||||
| 
 | ||||
| 			      <child> | ||||
| 				<widget class="GtkImage" id="image2291"> | ||||
| 				  <property name="visible">True</property> | ||||
| 				  <property name="stock">gtk-remove</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> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user