2007-02-04 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
* src/GrampsLocale: set svn:ignore propery * src/BasicUtils: set svn:ignore propery * src/GrampsDbUtils: set svn:ignore propery * src/RelLib/_Researcher.py: add missing get/set methods * src/GrampsDbUtils/_WriteGedcom.py: db owner handling, warn for missing * src/GrampsCfg.py: db owner handling, new warning pref * src/Config/_GrampsConfigKeys.py: db owner handling, new warning pref * data/gramps.schemas.in: db owner handling, new warning pref * src/plugins/OwnerEditor.py: db owner handling, plugin tool * src/plugins/ownereditor.glade: db owner handling, plugin tool svn: r8051
This commit is contained in:
		
							
								
								
									
										12
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,3 +1,15 @@ | ||||
| 2007-02-04  Zsolt Foldvari  <zfoldvar@users.sourceforge.net> | ||||
| 	* src/GrampsLocale: set svn:ignore propery | ||||
| 	* src/BasicUtils: set svn:ignore propery | ||||
| 	* src/GrampsDbUtils: set svn:ignore propery | ||||
| 	* src/RelLib/_Researcher.py: add missing get/set methods | ||||
| 	* src/GrampsDbUtils/_WriteGedcom.py: db owner handling, warn for missing | ||||
| 	* src/GrampsCfg.py: db owner handling, new warning pref | ||||
| 	* src/Config/_GrampsConfigKeys.py: db owner handling, new warning pref | ||||
| 	* data/gramps.schemas.in: db owner handling, new warning pref | ||||
| 	* src/plugins/OwnerEditor.py: db owner handling, plugin tool | ||||
| 	* src/plugins/ownereditor.glade: db owner handling, plugin tool | ||||
|  | ||||
| 2007-02-04 Richard Taylor  <rjt-gramps@thegrindstone.me.uk> | ||||
|         * src/GrampsDb/_GrampsGEDDB.py: fix reader/writer import | ||||
| 	* ChangeLog: fix the commit of a conflit (Brian ?) | ||||
|   | ||||
| @@ -1153,5 +1153,18 @@ | ||||
|         </locale> | ||||
|       </schema> | ||||
|  | ||||
|       <schema> | ||||
|         <key>/schemas/apps/gramps/behavior/owner-warn</key> | ||||
|         <applyto>/apps/gramps/behavior/owner-warn</applyto> | ||||
|         <owner>gramps</owner> | ||||
|         <type>bool</type> | ||||
|         <default>0</default> | ||||
|         <locale name="C"> | ||||
|           <short>Hide warning on missing database owner.</short> | ||||
|           <long>If set to 1, the warning about missing database owner will not | ||||
|           be displayed when GEDCOM export is done.</long> | ||||
|         </locale> | ||||
|       </schema> | ||||
|  | ||||
|     </schemalist> | ||||
| </gconfschemafile> | ||||
|   | ||||
| @@ -114,6 +114,7 @@ WEBSITE_DIRECTORY    = ('paths','website-directory', 2) | ||||
| PORT_WARN            = ('preferences','port-warn', 0) | ||||
| TRANSACTIONS         = ('behavior','transactions', 0) | ||||
| RELEDITBTN           = ('interface','editbutton', 1) | ||||
| OWNER_WARN           = ('preferences','owner-warn', 0) | ||||
|  | ||||
|  | ||||
| default_value = { | ||||
| @@ -211,4 +212,5 @@ default_value = { | ||||
|     WEBSITE_DIRECTORY    : './', | ||||
|     PORT_WARN            : False, | ||||
|     TRANSACTIONS         : True, | ||||
|     OWNER_WARN           : False, | ||||
| } | ||||
|   | ||||
| @@ -163,7 +163,7 @@ class GrampsPreferences(ManagedWindow.ManagedWindow): | ||||
|         return table | ||||
|  | ||||
|     def add_advanced_panel(self): | ||||
|         table = gtk.Table(3,8) | ||||
|         table = gtk.Table(4,8) | ||||
|         table.set_border_width(12) | ||||
|         table.set_col_spacings(6) | ||||
|         table.set_row_spacings(6) | ||||
| @@ -175,9 +175,14 @@ class GrampsPreferences(ManagedWindow.ManagedWindow): | ||||
|             table, _('Suppress warning when cancelling with changed data'), | ||||
|             1, Config.DONT_ASK) | ||||
|          | ||||
|         self.add_checkbox( | ||||
|             table, _('Suppress warning about missing researcher when' | ||||
|                      ' exporting to GEDCOM'), | ||||
|             2, Config.OWNER_WARN) | ||||
|  | ||||
|         self.add_checkbox( | ||||
|             table, _('Show plugin status dialog on plugin load error'), | ||||
|             2, Config.POP_PLUGIN_STATUS) | ||||
|             3, Config.POP_PLUGIN_STATUS) | ||||
|          | ||||
|         return table | ||||
|  | ||||
|   | ||||
| @@ -60,12 +60,10 @@ from BasicUtils import UpdateCallback | ||||
|  | ||||
| try: | ||||
|     import Config | ||||
|     STARTUP = Config.STARTUP | ||||
|     STARTUP_VAL = Config.get(Config.STARTUP) | ||||
|     HAVE_CONFIG = True | ||||
| except: | ||||
|     log.warn("No Config module available using defaults.") | ||||
|     STARTUP = ('behavior','startup', 1) | ||||
|     STARTUP_VAL = 0 | ||||
|     HAVE_CONFIG = False | ||||
|  | ||||
| #------------------------------------------------------------------------ | ||||
| # | ||||
| @@ -78,12 +76,6 @@ def keep_utf8(s): | ||||
| def iso8859(s): | ||||
|     return s.encode('iso-8859-1','replace') | ||||
|  | ||||
| def researcher_info_missing(): | ||||
|     val = STARTUP_VAL | ||||
|     if val < const.startup: | ||||
|         return True | ||||
|     return False | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # GEDCOM tags representing attributes that may take a parameter, value or | ||||
| @@ -471,14 +463,18 @@ class GedcomWriter(UpdateCallback): | ||||
|         self.cnvtxt = self.option_box.cnvtxt | ||||
|         self.nl = self.option_box.nl | ||||
|  | ||||
|         if researcher_info_missing(): | ||||
|             MessageHideDialog( | ||||
|                 _('Researcher information'), | ||||
|                 _('A valid GEDCOM file is required to contain researcher ' | ||||
|                   'information. You need to fill these data in the ' | ||||
|                   'Preferences dialog.\n\n' | ||||
|                   'However, most programs do not require it. ' | ||||
|                   'You may leave this empty if you want.'),STARTUP) | ||||
|         if HAVE_CONFIG: | ||||
|             show_owner_missing_warning = not Config.get(Config.OWNER_WARN) | ||||
|             owner_name_empty = self.db.get_researcher().get_name() == '' | ||||
|  | ||||
|             if show_owner_missing_warning and owner_name_empty: | ||||
|                 MessageHideDialog( | ||||
|                     _('Researcher information'), | ||||
|                     _('A valid GEDCOM file is required to contain researcher ' | ||||
|                       'information. You need to fill these data in the ' | ||||
|                       'Preferences dialog.\n\n' | ||||
|                       'However, most programs do not require it. You may ' | ||||
|                       'leave this empty if you want.'),Config.OWNER_WARN) | ||||
|  | ||||
|         if self.option_box.cfilter == None: | ||||
|             self.plist = set(self.db.get_person_handles(sort_handles=False)) | ||||
|   | ||||
| @@ -49,14 +49,26 @@ class Researcher(LocationBase): | ||||
|         self.addr = "" | ||||
|         self.email = "" | ||||
|  | ||||
|     def set_name(self, data): | ||||
|         """sets the database owner's name""" | ||||
|         self.name = data | ||||
|          | ||||
|     def get_name(self): | ||||
|         """returns the database owner's name""" | ||||
|         return self.name | ||||
|  | ||||
|     def set_address(self, data): | ||||
|         """sets the database owner's address""" | ||||
|         self.addr = data | ||||
|          | ||||
|     def get_address(self): | ||||
|         """returns the database owner's address""" | ||||
|         return self.addr | ||||
|  | ||||
|     def set_email(self, data): | ||||
|         """ sets the database owner's email""" | ||||
|         self.email = data | ||||
|          | ||||
|     def get_email(self): | ||||
|         """returns the database owner's email""" | ||||
|         return self.email | ||||
| @@ -80,3 +92,13 @@ class Researcher(LocationBase): | ||||
|         if email: | ||||
|             self.email = email.strip() | ||||
|  | ||||
|     def get(self): | ||||
|         """gets the information about the database owner""" | ||||
|         return (self.name, | ||||
|                 self.addr, | ||||
|                 self.city, | ||||
|                 self.state, | ||||
|                 self.country, | ||||
|                 self.postal, | ||||
|                 self.phone, | ||||
|                 self.email) | ||||
|   | ||||
							
								
								
									
										192
									
								
								src/plugins/OwnerEditor.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								src/plugins/OwnerEditor.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | ||||
| # | ||||
| # Gramps - a GTK+/GNOME based genealogy program | ||||
| # | ||||
| # Copyright (C) 2000-2007  Donald N. Allingham | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; either version 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program; if not, write to the Free Software | ||||
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
| # | ||||
|  | ||||
| # $Id: | ||||
|  | ||||
| "Database Processing/Edit database owner information" | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| import os | ||||
| from gettext import gettext as _ | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # gnome/gtk | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| import gtk | ||||
| import gtk.glade | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # gramps modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| import Config | ||||
| import GrampsCfg | ||||
| import GrampsDisplay | ||||
| from GrampsWidgets import MonitoredEntry | ||||
| import ManagedWindow | ||||
| from PluginUtils import Tool, register_tool | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # constants | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| config_keys = ( | ||||
|     Config.RESEARCHER_NAME, | ||||
|     Config.RESEARCHER_ADDR, | ||||
|     Config.RESEARCHER_CITY, | ||||
|     Config.RESEARCHER_STATE, | ||||
|     Config.RESEARCHER_COUNTRY, | ||||
|     Config.RESEARCHER_POSTAL, | ||||
|     Config.RESEARCHER_PHONE, | ||||
|     Config.RESEARCHER_EMAIL, | ||||
| ) | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # OwnerEditor | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class OwnerEditor(Tool.Tool, ManagedWindow.ManagedWindow): | ||||
|     """ | ||||
|     Allow editing database owner information. | ||||
|  | ||||
|     Provides a possibility to direcly verify and edit the owner data of the | ||||
|     current database. It also allows copying data from/to the preferences. | ||||
|     """ | ||||
|     def __init__(self, dbstate, uistate, options_class, name, callback=None): | ||||
|         ManagedWindow.ManagedWindow.__init__(self, uistate, [], self.__class__) | ||||
|         Tool.Tool.__init__(self, dbstate, options_class, name) | ||||
|         | ||||
|         self.display() | ||||
|  | ||||
|     def display(self): | ||||
|         base = os.path.dirname(__file__) | ||||
|         glade_file = os.path.join(base, "ownereditor.glade") | ||||
|  | ||||
|         # get the main window from glade | ||||
|         top_xml = gtk.glade.XML(glade_file, "top", "gramps") | ||||
|  | ||||
|         # set gramps style title for the window | ||||
|         window = top_xml.get_widget("top") | ||||
|         self.set_window(window, | ||||
|                         top_xml.get_widget("title"), | ||||
|                         _("Database owner editor")) | ||||
|  | ||||
|         # move help button to the left side | ||||
|         action_area = top_xml.get_widget("action_area") | ||||
|         help_button = top_xml.get_widget("help_button") | ||||
|         action_area.set_child_secondary(help_button, True) | ||||
|          | ||||
|         # connect signals | ||||
|         top_xml.signal_autoconnect({ | ||||
|             "on_ok_button_clicked": self.on_ok_button_clicked, | ||||
|             "on_cancel_button_clicked": self.close, | ||||
|             "on_help_button_clicked": self.on_help_button_clicked, | ||||
|             "on_eventbox_button_press_event": self.on_button_press_event, | ||||
|         }) | ||||
|  | ||||
|         # fetch the popup menu | ||||
|         popup_xml = gtk.glade.XML(glade_file, "popup-menu", "gramps") | ||||
|         self.menu = popup_xml.get_widget("popup-menu") | ||||
|         popup_xml.signal_connect("on_menu_activate", self.on_menu_activate) | ||||
|  | ||||
|         # get current db owner and attach it to the entries of the window | ||||
|         self.owner = self.db.get_researcher() | ||||
|          | ||||
|         self.entries = [] | ||||
|         entry = [ | ||||
|             ("entry1", self.owner.set_name, self.owner.get_name), | ||||
|             ("entry2", self.owner.set_address, self.owner.get_address), | ||||
|             ("entry3", self.owner.set_city, self.owner.get_city), | ||||
|             ("entry4", self.owner.set_state, self.owner.get_state), | ||||
|             ("entry5", self.owner.set_country, self.owner.get_country), | ||||
|             ("entry6", self.owner.set_postal_code, self.owner.get_postal_code), | ||||
|             ("entry7", self.owner.set_phone, self.owner.get_phone), | ||||
|             ("entry8", self.owner.set_email, self.owner.get_email), | ||||
|         ] | ||||
|  | ||||
|         for (name,set_fn,get_fn) in entry: | ||||
|             self.entries.append(MonitoredEntry(top_xml.get_widget(name), | ||||
|                                                set_fn, | ||||
|                                                get_fn, | ||||
|                                                self.db.readonly)) | ||||
|         # ok, let's see what we've done | ||||
|         self.show() | ||||
|  | ||||
|     def on_ok_button_clicked(self, obj): | ||||
|         """Update the current db's owner information from editor""" | ||||
|         self.db.set_researcher(self.owner) | ||||
|         self.close() | ||||
|  | ||||
|     def on_help_button_clicked(self, obj): | ||||
|         """Display the relevant portion of GRAMPS manual""" | ||||
|         GrampsDisplay.help('tools-db') | ||||
|  | ||||
|     def on_button_press_event(self, obj, event): | ||||
|         """Shows popup-menu for db <-> preferences copying""" | ||||
|         if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS: | ||||
|             self.menu.popup(None,None,None,0,0) | ||||
|  | ||||
|     def on_menu_activate(self, menuitem): | ||||
|         """Copies the owner information from/to the preferences""" | ||||
|         if menuitem.name == 'copy_from_preferences_to_db': | ||||
|             self.owner.set(*GrampsCfg.get_researcher().get()) | ||||
|             for entry in self.entries: | ||||
|                 entry.update() | ||||
|                  | ||||
|         elif menuitem.name == 'copy_from_db_to_preferences': | ||||
|             for i in range(len(config_keys)): | ||||
|                 Config.set(config_keys[i], self.owner.get()[i]) | ||||
|          | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # OwnerEditorOptions (None at the moment) | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class OwnerEditorOptions(Tool.ToolOptions): | ||||
|     """Defines options and provides handling interface.""" | ||||
|     def __init__(self,name,person_id=None): | ||||
|         Tool.ToolOptions.__init__(self,name,person_id) | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # Register the plugin tool to plugin manager | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| register_tool( | ||||
|     name = 'editowner', | ||||
|     category = Tool.TOOL_DBPROC, | ||||
|     tool_class = OwnerEditor, | ||||
|     options_class = OwnerEditorOptions, | ||||
|     modes = Tool.MODE_GUI, | ||||
|     translated_name = _("Edit database owner information"), | ||||
|     status = _("Beta"), | ||||
|     author_name = "Zsolt Foldvari", | ||||
|     author_email = "zfoldvar@users.sourceforge.net", | ||||
|     description = _("Allow editing database owner information.") | ||||
| ) | ||||
							
								
								
									
										586
									
								
								src/plugins/ownereditor.glade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										586
									
								
								src/plugins/ownereditor.glade
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,586 @@ | ||||
| <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> | ||||
| <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> | ||||
|  | ||||
| <glade-interface> | ||||
|  | ||||
| <widget class="GtkWindow" id="top"> | ||||
|   <property name="title" translatable="yes"></property> | ||||
|   <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||||
|   <property name="window_position">GTK_WIN_POS_CENTER</property> | ||||
|   <property name="modal">False</property> | ||||
|   <property name="default_width">500</property> | ||||
|   <property name="resizable">True</property> | ||||
|   <property name="destroy_with_parent">False</property> | ||||
|   <property name="decorated">True</property> | ||||
|   <property name="skip_taskbar_hint">False</property> | ||||
|   <property name="skip_pager_hint">False</property> | ||||
|   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> | ||||
|   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||||
|   <property name="focus_on_map">True</property> | ||||
|   <property name="urgency_hint">False</property> | ||||
|   <signal name="delete_event" handler="on_delete_event" last_modification_time="Mon, 10 May 2004 00:32:54 GMT"/> | ||||
|  | ||||
|   <child> | ||||
|     <widget class="GtkEventBox" id="eventbox"> | ||||
|       <property name="visible">True</property> | ||||
|       <property name="visible_window">True</property> | ||||
|       <property name="above_child">False</property> | ||||
|       <signal name="button_press_event" handler="on_eventbox_button_press_event" last_modification_time="Tue, 30 Jan 2007 21:18:53 GMT"/> | ||||
|  | ||||
|       <child> | ||||
| 	<widget class="GtkVBox" id="vbox2"> | ||||
| 	  <property name="border_width">6</property> | ||||
| 	  <property name="visible">True</property> | ||||
| 	  <property name="homogeneous">False</property> | ||||
| 	  <property name="spacing">0</property> | ||||
|  | ||||
| 	  <child> | ||||
| 	    <widget class="GtkHButtonBox" id="action_area"> | ||||
| 	      <property name="visible">True</property> | ||||
| 	      <property name="layout_style">GTK_BUTTONBOX_END</property> | ||||
| 	      <property name="spacing">0</property> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkButton" id="cancel_button"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="can_default">True</property> | ||||
| 		  <property name="can_focus">True</property> | ||||
| 		  <property name="label">gtk-cancel</property> | ||||
| 		  <property name="use_stock">True</property> | ||||
| 		  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 		  <property name="focus_on_click">True</property> | ||||
| 		  <signal name="clicked" handler="on_cancel_button_clicked" last_modification_time="Tue, 30 Jan 2007 17:27:10 GMT"/> | ||||
| 		</widget> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkButton" id="ok_button"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="can_default">True</property> | ||||
| 		  <property name="can_focus">True</property> | ||||
| 		  <property name="label">gtk-ok</property> | ||||
| 		  <property name="use_stock">True</property> | ||||
| 		  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 		  <property name="focus_on_click">True</property> | ||||
| 		  <signal name="clicked" handler="on_ok_button_clicked" last_modification_time="Tue, 30 Jan 2007 17:27:02 GMT"/> | ||||
| 		</widget> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkButton" id="help_button"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="can_default">True</property> | ||||
| 		  <property name="can_focus">True</property> | ||||
| 		  <property name="label">gtk-help</property> | ||||
| 		  <property name="use_stock">True</property> | ||||
| 		  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||
| 		  <property name="focus_on_click">True</property> | ||||
| 		  <signal name="clicked" handler="on_help_button_clicked" last_modification_time="Tue, 30 Jan 2007 17:26:52 GMT"/> | ||||
| 		</widget> | ||||
| 	      </child> | ||||
| 	    </widget> | ||||
| 	    <packing> | ||||
| 	      <property name="padding">0</property> | ||||
| 	      <property name="expand">False</property> | ||||
| 	      <property name="fill">True</property> | ||||
| 	      <property name="pack_type">GTK_PACK_END</property> | ||||
| 	    </packing> | ||||
| 	  </child> | ||||
|  | ||||
| 	  <child> | ||||
| 	    <widget class="GtkHSeparator" id="hseparator1"> | ||||
| 	      <property name="visible">True</property> | ||||
| 	    </widget> | ||||
| 	    <packing> | ||||
| 	      <property name="padding">3</property> | ||||
| 	      <property name="expand">False</property> | ||||
| 	      <property name="fill">True</property> | ||||
| 	      <property name="pack_type">GTK_PACK_END</property> | ||||
| 	    </packing> | ||||
| 	  </child> | ||||
|  | ||||
| 	  <child> | ||||
| 	    <widget class="GtkLabel" id="title"> | ||||
| 	      <property name="visible">True</property> | ||||
| 	      <property name="label" translatable="yes"></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">6</property> | ||||
| 	      <property name="expand">False</property> | ||||
| 	      <property name="fill">False</property> | ||||
| 	    </packing> | ||||
| 	  </child> | ||||
|  | ||||
| 	  <child> | ||||
| 	    <widget class="GtkTable" id="table1"> | ||||
| 	      <property name="border_width">6</property> | ||||
| 	      <property name="visible">True</property> | ||||
| 	      <property name="n_rows">8</property> | ||||
| 	      <property name="n_columns">2</property> | ||||
| 	      <property name="homogeneous">False</property> | ||||
| 	      <property name="row_spacing">6</property> | ||||
| 	      <property name="column_spacing">6</property> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label1"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Name:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">0</property> | ||||
| 		  <property name="bottom_attach">1</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label2"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Address:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">1</property> | ||||
| 		  <property name="bottom_attach">2</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label3"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">City:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">2</property> | ||||
| 		  <property name="bottom_attach">3</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label4"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">State/Province:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">3</property> | ||||
| 		  <property name="bottom_attach">4</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label5"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Country:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">4</property> | ||||
| 		  <property name="bottom_attach">5</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label6"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">ZIP/Postal Code:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">5</property> | ||||
| 		  <property name="bottom_attach">6</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label7"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Phone:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">6</property> | ||||
| 		  <property name="bottom_attach">7</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkLabel" id="label8"> | ||||
| 		  <property name="visible">True</property> | ||||
| 		  <property name="label" translatable="yes">Email:</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</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="left_attach">0</property> | ||||
| 		  <property name="right_attach">1</property> | ||||
| 		  <property name="top_attach">7</property> | ||||
| 		  <property name="bottom_attach">8</property> | ||||
| 		  <property name="x_options">fill</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry1"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">0</property> | ||||
| 		  <property name="bottom_attach">1</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry2"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">1</property> | ||||
| 		  <property name="bottom_attach">2</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry3"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">2</property> | ||||
| 		  <property name="bottom_attach">3</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry4"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">3</property> | ||||
| 		  <property name="bottom_attach">4</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry5"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">4</property> | ||||
| 		  <property name="bottom_attach">5</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry6"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">5</property> | ||||
| 		  <property name="bottom_attach">6</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry7"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">6</property> | ||||
| 		  <property name="bottom_attach">7</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
|  | ||||
| 	      <child> | ||||
| 		<widget class="GtkEntry" id="entry8"> | ||||
| 		  <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="left_attach">1</property> | ||||
| 		  <property name="right_attach">2</property> | ||||
| 		  <property name="top_attach">7</property> | ||||
| 		  <property name="bottom_attach">8</property> | ||||
| 		  <property name="y_options"></property> | ||||
| 		</packing> | ||||
| 	      </child> | ||||
| 	    </widget> | ||||
| 	    <packing> | ||||
| 	      <property name="padding">0</property> | ||||
| 	      <property name="expand">False</property> | ||||
| 	      <property name="fill">True</property> | ||||
| 	    </packing> | ||||
| 	  </child> | ||||
| 	</widget> | ||||
|       </child> | ||||
|     </widget> | ||||
|   </child> | ||||
| </widget> | ||||
|  | ||||
| <widget class="GtkMenu" id="popup-menu"> | ||||
|  | ||||
|   <child> | ||||
|     <widget class="GtkImageMenuItem" id="copy_from_db_to_preferences"> | ||||
|       <property name="visible">True</property> | ||||
|       <property name="label" translatable="yes">Copy from DB to Preferences</property> | ||||
|       <property name="use_underline">True</property> | ||||
|       <signal name="activate" handler="on_menu_activate" last_modification_time="Tue, 30 Jan 2007 21:31:57 GMT"/> | ||||
|  | ||||
|       <child internal-child="image"> | ||||
| 	<widget class="GtkImage" id="image4"> | ||||
| 	  <property name="visible">True</property> | ||||
| 	  <property name="stock">gtk-go-back</property> | ||||
| 	  <property name="icon_size">1</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> | ||||
|   </child> | ||||
|  | ||||
|   <child> | ||||
|     <widget class="GtkImageMenuItem" id="copy_from_preferences_to_db"> | ||||
|       <property name="visible">True</property> | ||||
|       <property name="label" translatable="yes">Copy from Preferences to DB</property> | ||||
|       <property name="use_underline">True</property> | ||||
|       <signal name="activate" handler="on_menu_activate" last_modification_time="Tue, 30 Jan 2007 21:32:09 GMT"/> | ||||
|  | ||||
|       <child internal-child="image"> | ||||
| 	<widget class="GtkImage" id="image5"> | ||||
| 	  <property name="visible">True</property> | ||||
| 	  <property name="stock">gtk-go-forward</property> | ||||
| 	  <property name="icon_size">1</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> | ||||
|   </child> | ||||
| </widget> | ||||
|  | ||||
| </glade-interface> | ||||
		Reference in New Issue
	
	Block a user