diff options
author | Chris Lahey <clahey@src.gnome.org> | 2000-01-21 08:35:45 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2000-01-21 08:35:45 +0800 |
commit | 07af9adcd6731f65e158d8807e85a19dab7bb736 (patch) | |
tree | d06237f56820a6c4bd8200be622559b101fa6a2f /addressbook/contact-editor | |
parent | 73107b49d42b02754e6facd890c3ed16eebe0a47 (diff) | |
download | gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar.gz gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar.bz2 gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar.lz gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar.xz gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.tar.zst gsoc2013-evolution-07af9adcd6731f65e158d8807e85a19dab7bb736.zip |
Changed some line spacing.
* widgets/e-text-event-processor-types.h: Changed some line
spacing.
* widgets/test-reflow.c: Connected to the resize signal of the
reflow.
* widgets/e-minicard.c: Made width argument set function only
update if width is different.
* widgets/e-reflow.h, widgets/e-reflow.c: Added draggable column dividers.
* addressbook/contact-editor/test-editor.c: Open two dialogs for
more interesting testing.
* addressbook/contact-editor/e-contact-editor.h,
addressbook/contact-editor/e-contact-editor.c: Modified to use
glade. Added menus to change which phone/address/email entries to
view. Added images to the dialog.
* addressbook/contact-editor/e-contact-editor-strings.h,
addressbook/contact-editor/contact-editor.glade: Glade files for
the contact editor dialog.
* addressbook/contact-editor/Makefile.am: Added images and added
glade stuff.
* addressbook/contact-editor/arrow.png,
addressbook/contact-editor/briefcase.png,
addressbook/contact-editor/netfreebusy.png,
addressbook/contact-editor/netmeeting.png: Image files for the
contact editor dialog.
svn path=/trunk/; revision=1599
Diffstat (limited to 'addressbook/contact-editor')
-rw-r--r-- | addressbook/contact-editor/Makefile.am | 17 | ||||
-rw-r--r-- | addressbook/contact-editor/arrow.png | bin | 0 -> 122 bytes | |||
-rw-r--r-- | addressbook/contact-editor/briefcase.png | bin | 0 -> 390 bytes | |||
-rw-r--r-- | addressbook/contact-editor/contact-editor.glade | 2198 | ||||
-rw-r--r-- | addressbook/contact-editor/e-contact-editor-strings.h | 48 | ||||
-rw-r--r-- | addressbook/contact-editor/e-contact-editor.c | 676 | ||||
-rw-r--r-- | addressbook/contact-editor/e-contact-editor.h | 16 | ||||
-rw-r--r-- | addressbook/contact-editor/netfreebusy.png | bin | 0 -> 755 bytes | |||
-rw-r--r-- | addressbook/contact-editor/netmeeting.png | bin | 0 -> 803 bytes | |||
-rw-r--r-- | addressbook/contact-editor/test-editor.c | 22 |
10 files changed, 2697 insertions, 280 deletions
diff --git a/addressbook/contact-editor/Makefile.am b/addressbook/contact-editor/Makefile.am index 0286af7c49..4892d51bbb 100644 --- a/addressbook/contact-editor/Makefile.am +++ b/addressbook/contact-editor/Makefile.am @@ -1,4 +1,13 @@ +images = email.png head.png phone.png snailmail.png web.png arrow.png briefcase.png netmeeting.png netfreebusy.png + +EXTRA_DIST = $(images) +pkgdata_DATA = $(images) + +CPPFLAGS = \ + -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ + -DDATADIR=\""$(datadir)"\" + INCLUDES = \ $(GNOME_INCLUDEDIR) @@ -17,4 +26,10 @@ contact_editor_test_SOURCES = \ contact_editor_test_LDADD = \ $(EXTRA_GNOME_LIBS) \ - libecontacteditor.a + libecontacteditor.a + +gladedir = $(datadir)/evolution/glade + +glade_DATA = \ + contact-editor.glade + diff --git a/addressbook/contact-editor/arrow.png b/addressbook/contact-editor/arrow.png Binary files differnew file mode 100644 index 0000000000..b7f782c1e5 --- /dev/null +++ b/addressbook/contact-editor/arrow.png diff --git a/addressbook/contact-editor/briefcase.png b/addressbook/contact-editor/briefcase.png Binary files differnew file mode 100644 index 0000000000..dd59b8fd39 --- /dev/null +++ b/addressbook/contact-editor/briefcase.png diff --git a/addressbook/contact-editor/contact-editor.glade b/addressbook/contact-editor/contact-editor.glade new file mode 100644 index 0000000000..87251a6f6f --- /dev/null +++ b/addressbook/contact-editor/contact-editor.glade @@ -0,0 +1,2198 @@ +<?xml version="1.0"?> +<GTK-Interface> + +<project> + <name>Contact-editor</name> + <program_name>contact-editor</program_name> + <directory></directory> + <source_directory>src</source_directory> + <pixmaps_directory>pixmaps</pixmaps_directory> + <language>C</language> + <gnome_support>True</gnome_support> + <gettext_support>True</gettext_support> + <use_widget_names>True</use_widget_names> + <output_main_file>False</output_main_file> + <output_support_files>False</output_support_files> + <output_build_files>False</output_build_files> + <backup_source_files>False</backup_source_files> + <main_source_file>interface.c</main_source_file> + <main_header_file>interface.h</main_header_file> + <handler_source_file>callbacks.c</handler_source_file> + <handler_header_file>callbacks.h</handler_header_file> + <support_source_file>support.c</support_source_file> + <support_header_file>support.h</support_header_file> + <output_translatable_strings>True</output_translatable_strings> + <translatable_strings_file>e-contact-editor-strings.h</translatable_strings_file> +</project> + +<widget> + <class>GtkWindow</class> + <name>contact editor</name> + <visible>False</visible> + <title>Contact Editor</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkNotebook</class> + <name>notebook-contact-editor</name> + <can_focus>True</can_focus> + <show_tabs>True</show_tabs> + <show_border>True</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <num_pages>5</num_pages> + + <widget> + <class>GtkTable</class> + <name>table-contact-editor-general</name> + <border_width>7</border_width> + <rows>12</rows> + <columns>8</columns> + <homogeneous>False</homogeneous> + <row_spacing>4</row_spacing> + <column_spacing>4</column_spacing> + + <widget> + <class>GtkEntry</class> + <name>entry-phone1</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-phone2</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-phone3</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-phone4</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-fullname</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-web</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>8</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-phone3</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Business Fax</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-phone2</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Home</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-phone1</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Business</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-phone4</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Mobile</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkText</class> + <name>text-address</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>5</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <width>1</width> + <height>1</height> + <can_focus>True</can_focus> + <editable>True</editable> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-email1</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Email</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkButton</class> + <name>button-fullname</name> + <child> + <left_attach>1</left_attach> + <right_attach>3</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <can_focus>True</can_focus> + <label> Full Name...</label> + </widget> + + <widget> + <class>GtkAccelLabel</class> + <name>accellabel-jobtitle</name> + <child> + <left_attach>1</left_attach> + <right_attach>3</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Job Title:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkAccelLabel</class> + <name>accellabel-company</name> + <child> + <left_attach>1</left_attach> + <right_attach>3</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Company:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkAccelLabel</class> + <name>accellabel-fileas</name> + <child> + <left_attach>1</left_attach> + <right_attach>3</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>File As:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkAccelLabel</class> + <name>accellabel-web</name> + <child> + <left_attach>1</left_attach> + <right_attach>3</right_attach> + <top_attach>8</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Web page address:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox5</name> + <child> + <left_attach>0</left_attach> + <right_attach>8</right_attach> + <top_attach>10</top_attach> + <bottom_attach>11</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkText</class> + <name>text-comments</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text></text> + </widget> + + <widget> + <class>GtkVScrollbar</class> + <name>vscrollbar-comments</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <policy>GTK_UPDATE_CONTINUOUS</policy> + <vvalue>0</vvalue> + <vlower>0</vlower> + <vupper>0</vupper> + <vstep>0</vstep> + <vpage>0</vpage> + <vpage_size>0</vpage_size> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox3</name> + <child> + <left_attach>0</left_attach> + <right_attach>8</right_attach> + <top_attach>11</top_attach> + <bottom_attach>12</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>6</spacing> + + <widget> + <class>GtkButton</class> + <name>button-contacts</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <can_focus>True</can_focus> + <label>Contacts...</label> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-contacts</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkButton</class> + <name>button-categories</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <can_focus>True</can_focus> + <label>Categories...</label> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-categories</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment2</name> + <child> + <left_attach>7</left_attach> + <right_attach>8</right_attach> + <top_attach>9</top_attach> + <bottom_attach>10</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>0</xalign> + <yalign>0</yalign> + <xscale>0</xscale> + <yscale>0</yscale> + + <widget> + <class>GtkCheckButton</class> + <name>checkbutton-mailingaddress</name> + <can_focus>True</can_focus> + <label>This is the mailing address</label> + <active>False</active> + <draw_indicator>True</draw_indicator> + </widget> + </widget> + + <widget> + <class>GtkButton</class> + <name>button-address</name> + <child> + <left_attach>5</left_attach> + <right_attach>7</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <can_focus>True</can_focus> + <label>A_ddress...</label> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-jobtitle</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry-company</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkCombo</class> + <name>combo-fileas</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <case_sensitive>True</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items></items> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox4</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>4</spacing> + + <widget> + <class>GtkEntry</class> + <name>entry-email1</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkButton</class> + <name>button23</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment3</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + + <widget> + <class>GtkButton</class> + <name>button-email1</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment4</name> + <child> + <left_attach>6</left_attach> + <right_attach>7</right_attach> + <top_attach>6</top_attach> + <bottom_attach>7</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + + <widget> + <class>GtkButton</class> + <name>button-address1</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment5</name> + <child> + <left_attach>6</left_attach> + <right_attach>7</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>0</yscale> + + <widget> + <class>GtkButton</class> + <name>button-phone4</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment7</name> + <child> + <left_attach>6</left_attach> + <right_attach>7</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>0</yscale> + + <widget> + <class>GtkButton</class> + <name>button-phone2</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment8</name> + <child> + <left_attach>6</left_attach> + <right_attach>7</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>0</yscale> + + <widget> + <class>GtkButton</class> + <name>button-phone1</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label-address1</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>6</top_attach> + <bottom_attach>7</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Business</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator6</name> + <child> + <left_attach>0</left_attach> + <right_attach>4</right_attach> + <top_attach>7</top_attach> + <bottom_attach>8</bottom_attach> + <xpad>0</xpad> + <ypad>2</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator4</name> + <child> + <left_attach>4</left_attach> + <right_attach>8</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>2</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator5</name> + <child> + <left_attach>0</left_attach> + <right_attach>4</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>2</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment6</name> + <child> + <left_attach>6</left_attach> + <right_attach>7</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>0</yscale> + + <widget> + <class>GtkButton</class> + <name>button-phone3</name> + <can_focus>True</can_focus> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label15</name> + <label>General</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkTable</class> + <name>table-contact-editor-details</name> + <border_width>7</border_width> + <rows>12</rows> + <columns>6</columns> + <homogeneous>False</homogeneous> + <row_spacing>4</row_spacing> + <column_spacing>4</column_spacing> + + <widget> + <class>GtkLabel</class> + <name>label21</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Department:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label22</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Office:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label23</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Profession:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label24</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Nickname:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label25</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Spouse's name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label26</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>7</top_attach> + <bottom_attach>8</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Directory Server:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label27</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>8</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Email alias:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label28</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>10</top_attach> + <bottom_attach>11</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Address:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label31</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Birthday:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label30</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Assistant's name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label29</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Manager's name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label32</name> + <child> + <left_attach>3</left_attach> + <right_attach>4</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <label>Anniversary:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry4</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry5</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry6</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry7</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry8</name> + <child> + <left_attach>2</left_attach> + <right_attach>3</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry9</name> + <child> + <left_attach>2</left_attach> + <right_attach>6</right_attach> + <top_attach>7</top_attach> + <bottom_attach>8</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry10</name> + <child> + <left_attach>2</left_attach> + <right_attach>5</right_attach> + <top_attach>8</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry11</name> + <child> + <left_attach>2</left_attach> + <right_attach>6</right_attach> + <top_attach>10</top_attach> + <bottom_attach>11</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GnomeDateEdit</class> + <name>dateedit2</name> + <child> + <left_attach>4</left_attach> + <right_attach>6</right_attach> + <top_attach>5</top_attach> + <bottom_attach>6</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <show_time>False</show_time> + <use_24_format>False</use_24_format> + <week_start_monday>False</week_start_monday> + <lower_hour>7</lower_hour> + <upper_hour>19</upper_hour> + </widget> + + <widget> + <class>GnomeDateEdit</class> + <name>dateedit1</name> + <child> + <left_attach>4</left_attach> + <right_attach>6</right_attach> + <top_attach>4</top_attach> + <bottom_attach>5</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <show_time>False</show_time> + <use_24_format>False</use_24_format> + <week_start_monday>False</week_start_monday> + <lower_hour>7</lower_hour> + <upper_hour>19</upper_hour> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry13</name> + <child> + <left_attach>4</left_attach> + <right_attach>6</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry12</name> + <child> + <left_attach>4</left_attach> + <right_attach>6</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkButton</class> + <name>button-callnow</name> + <child> + <left_attach>5</left_attach> + <right_attach>6</right_attach> + <top_attach>8</top_attach> + <bottom_attach>9</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <can_focus>True</can_focus> + <label>Call Now</label> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox7</name> + <child> + <left_attach>0</left_attach> + <right_attach>6</right_attach> + <top_attach>9</top_attach> + <bottom_attach>10</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>6</spacing> + + <widget> + <class>GtkLabel</class> + <name>label33</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <label>Internet Free-Busy</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>2</ypad> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator8</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox8</name> + <child> + <left_attach>0</left_attach> + <right_attach>6</right_attach> + <top_attach>6</top_attach> + <bottom_attach>7</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>6</spacing> + + <widget> + <class>GtkLabel</class> + <name>label34</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <label>Online NetMeeting settings</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>2</ypad> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator9</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator7</name> + <child> + <left_attach>0</left_attach> + <right_attach>6</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>2</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label16</name> + <label>Details</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkText</class> + <name>text3</name> + <can_focus>True</can_focus> + <editable>False</editable> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label17</name> + <label>Activities</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkText</class> + <name>text2</name> + <can_focus>True</can_focus> + <editable>False</editable> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label18</name> + <label>Certificates</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkText</class> + <name>text4</name> + <can_focus>True</can_focus> + <editable>False</editable> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label19</name> + <label>All Fields</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> +</widget> + +<widget> + <class>GnomeDialog</class> + <name>dialog2</name> + <visible>False</visible> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + <allow_shrink>False</allow_shrink> + <allow_grow>False</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>dialog-vbox2</name> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + + <widget> + <class>GtkTable</class> + <name>table2</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>0</row_spacing> + <column_spacing>0</column_spacing> + + <widget> + <class>GtkEntry</class> + <name>entry2</name> + <child> + <left_attach>0</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox1</name> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkButton</class> + <name>button31</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <can_focus>True</can_focus> + <label>Add</label> + </widget> + + <widget> + <class>GtkButton</class> + <name>button32</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + <can_focus>True</can_focus> + <label>Delete</label> + </widget> + </widget> + + <widget> + <class>GtkScrolledWindow</class> + <name>scrolledwindow1</name> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + <height>200</height> + <hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy> + <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy> + <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> + <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + + <widget> + <class>GtkCList</class> + <name>clist1</name> + <can_focus>True</can_focus> + <columns>1</columns> + <column_widths>80</column_widths> + <selection_mode>GTK_SELECTION_SINGLE</selection_mode> + <show_titles>True</show_titles> + <shadow_type>GTK_SHADOW_NONE</shadow_type> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label20</name> + <label>Phone Types</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>dialog-action_area2</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + + <widget> + <class>GtkButton</class> + <name>button28</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button29</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button30</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GnomeDialog</class> + <name>dialog-add-phone</name> + <visible>False</visible> + <title>New phone type</title> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + <allow_shrink>False</allow_shrink> + <allow_grow>False</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>vbox2</name> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + + <widget> + <class>GtkFrame</class> + <name>frame-add-phone</name> + <border_width>4</border_width> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + <label>New phone type</label> + <label_xalign>0</label_xalign> + <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> + + <widget> + <class>GtkAlignment</class> + <name>alignment9</name> + <border_width>9</border_width> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xscale>1</xscale> + <yscale>1</yscale> + + <widget> + <class>GtkEntry</class> + <name>entry-add-phone</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>hbuttonbox1</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + + <widget> + <class>GtkButton</class> + <name>button43</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>Add</label> + <stock_pixmap>GNOME_STOCK_PIXMAP_ADD</stock_pixmap> + </widget> + + <widget> + <class>GtkButton</class> + <name>button44</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + </widget> +</widget> + +</GTK-Interface> diff --git a/addressbook/contact-editor/e-contact-editor-strings.h b/addressbook/contact-editor/e-contact-editor-strings.h new file mode 100644 index 0000000000..131dd6fdf4 --- /dev/null +++ b/addressbook/contact-editor/e-contact-editor-strings.h @@ -0,0 +1,48 @@ +/* + * Translatable strings file generated by Glade. + * Add this file to your project's POTFILES.in. + * DO NOT compile it as part of your application. + */ + +gchar *s = N_("Contact Editor"); +gchar *s = N_("Business Fax"); +gchar *s = N_("Home"); +gchar *s = N_("Business"); +gchar *s = N_("Mobile"); +gchar *s = N_("Email"); +gchar *s = N_("\tFull Name..."); +gchar *s = N_("Job Title:"); +gchar *s = N_("Company:"); +gchar *s = N_("File As:"); +gchar *s = N_("Web page address:"); +gchar *s = N_("Contacts..."); +gchar *s = N_("Categories..."); +gchar *s = N_("This is the mailing address"); +gchar *s = N_("A_ddress..."); +gchar *s = N_("Business"); +gchar *s = N_("General"); +gchar *s = N_("Department:"); +gchar *s = N_("Office:"); +gchar *s = N_("Profession:"); +gchar *s = N_("Nickname:"); +gchar *s = N_("Spouse's name:"); +gchar *s = N_("Directory Server:"); +gchar *s = N_("Email alias:"); +gchar *s = N_("Address:"); +gchar *s = N_("Birthday:"); +gchar *s = N_("Assistant's name:"); +gchar *s = N_("Manager's name:"); +gchar *s = N_("Anniversary:"); +gchar *s = N_("Call Now"); +gchar *s = N_("Internet Free-Busy"); +gchar *s = N_("Online NetMeeting settings"); +gchar *s = N_("Details"); +gchar *s = N_("Activities"); +gchar *s = N_("Certificates"); +gchar *s = N_("All Fields"); +gchar *s = N_("Add"); +gchar *s = N_("Delete"); +gchar *s = N_("Phone Types"); +gchar *s = N_("New phone type"); +gchar *s = N_("New phone type"); +gchar *s = N_("Add"); diff --git a/addressbook/contact-editor/e-contact-editor.c b/addressbook/contact-editor/e-contact-editor.c index 73b48a7eb8..6a6c6d982e 100644 --- a/addressbook/contact-editor/e-contact-editor.c +++ b/addressbook/contact-editor/e-contact-editor.c @@ -26,8 +26,14 @@ static void e_contact_editor_init (EContactEditor *card); static void e_contact_editor_class_init (EContactEditorClass *klass); static void e_contact_editor_set_arg (GtkObject *o, GtkArg *arg, guint arg_id); static void e_contact_editor_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); +static void e_contact_editor_destroy (GtkObject *object); -static GtkNotebookClass *parent_class = NULL; +static GtkWidget *e_contact_editor_build_dialog(EContactEditor *editor, gchar *entry_id, gchar *label_id, gchar *title, GList **list, GnomeUIInfo **info); +static void _email_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor); +static void _phone_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor); +static void _address_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor); + +static GtkVBoxClass *parent_class = NULL; #if 0 enum { @@ -44,6 +50,12 @@ enum { ARG_CARD }; +enum { + DYNAMIC_LIST_EMAIL, + DYNAMIC_LIST_PHONE, + DYNAMIC_LIST_ADDRESS +}; + GtkType e_contact_editor_get_type (void) { @@ -63,7 +75,7 @@ e_contact_editor_get_type (void) (GtkClassInitFunc) NULL, }; - contact_editor_type = gtk_type_unique (gtk_notebook_get_type (), &contact_editor_info); + contact_editor_type = gtk_type_unique (gtk_vbox_get_type (), &contact_editor_info); } return contact_editor_type; @@ -73,12 +85,12 @@ static void e_contact_editor_class_init (EContactEditorClass *klass) { GtkObjectClass *object_class; - GtkNotebookClass *notebook_class; + GtkVBoxClass *vbox_class; object_class = (GtkObjectClass*) klass; - notebook_class = (GtkNotebookClass *) klass; + vbox_class = (GtkVBoxClass *) klass; - parent_class = gtk_type_class (gtk_notebook_get_type ()); + parent_class = gtk_type_class (gtk_vbox_get_type ()); #if 0 e_contact_editor_signals[E_CONTACT_EDITOR_RESIZE] = @@ -98,300 +110,140 @@ e_contact_editor_class_init (EContactEditorClass *klass) object_class->set_arg = e_contact_editor_set_arg; object_class->get_arg = e_contact_editor_get_arg; + object_class->destroy = e_contact_editor_destroy; } -static GtkWidget * -_create_page_general_name(EContactEditor *e_contact_editor) -{ - GtkWidget *table; - GtkWidget *alignment; - table = gtk_table_new(3, 4, FALSE); - alignment = gtk_alignment_new(0, 0, 0, 0); - gtk_container_add(GTK_CONTAINER(alignment), - gnome_pixmap_new_from_file("head.png")); - gtk_table_attach(GTK_TABLE(table), - alignment, - 0, 1, 0, 4, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Full Name:")), - 1, 2, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Job Title:")), - 1, 2, 1, 2, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Company:")), - 1, 2, 2, 3, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("File as:")), - 1, 2, 3, 4, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 1, 2, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 2, 3, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_combo_new(), - 2, 3, 3, 4, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - return table; -} - -static GtkWidget * -_create_page_general_phone(EContactEditor *e_contact_editor) -{ - GtkWidget *table; - GtkWidget *alignment; - table = gtk_table_new(3, 4, FALSE); - alignment = gtk_alignment_new(0,0,0,0); - gtk_container_add(GTK_CONTAINER(alignment), - gnome_pixmap_new_from_file("phone.png")); - - gtk_table_attach(GTK_TABLE(table), - alignment, - 0, 1, 0, 4, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Home:")), - 1, 2, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Car:")), - 1, 2, 1, 2, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Mobile:")), - 1, 2, 2, 3, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Business Fax:")), - 1, 2, 3, 4, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 1, 2, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 2, 3, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 3, 4, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - return table; -} - -static GtkWidget * -_create_page_general_email(EContactEditor *e_contact_editor) -{ - GtkWidget *table; - GtkWidget *alignment; - table = gtk_table_new(3, 1, FALSE); - alignment = gtk_alignment_new(0,0,0,0); - gtk_container_add(GTK_CONTAINER(alignment), - gnome_pixmap_new_from_file("email.png")); - - gtk_table_attach(GTK_TABLE(table), - alignment, - 0, 1, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Email:")), - 1, 2, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - return table; -} - -static GtkWidget * -_create_page_general_web(EContactEditor *e_contact_editor) +static void +_add_image(GtkTable *table, gchar *image, int left, int right, int top, int bottom) { - GtkWidget *table; - GtkWidget *alignment; - table = gtk_table_new(3, 1, FALSE); - alignment = gtk_alignment_new(0,0,0,0); - gtk_container_add(GTK_CONTAINER(alignment), - gnome_pixmap_new_from_file("web.png")); - - gtk_table_attach(GTK_TABLE(table), - alignment, - 0, 1, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Web page address:")), - 1, 2, 0, 1, - 0, 0, + gtk_table_attach(table, + gtk_widget_new(gtk_alignment_get_type(), + "child", gnome_pixmap_new_from_file(image), + "xalign", (double) 0, + "yalign", (double) 0, + "xscale", (double) 0, + "yscale", (double) 0, + NULL), + left, right, top, bottom, + GTK_FILL, GTK_FILL, 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_entry_new(), - 2, 3, 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - return table; } -static GtkWidget * -_create_page_general_snailmail(EContactEditor *e_contact_editor) +static void +_add_images(GtkTable *table) { - GtkWidget *table; - GtkWidget *alignment; - GtkWidget *text; - table = gtk_table_new(3, 3, FALSE); - alignment = gtk_alignment_new(0,0,0,0); - gtk_container_add(GTK_CONTAINER(alignment), - gnome_pixmap_new_from_file("snailmail.png")); - - gtk_table_attach(GTK_TABLE(table), - alignment, - 0, 1, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Address:")), - 1, 2, 0, 1, - 0, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_label_new(_("Business:")), - 1, 2, 1, 2, - 0, 0, - 0, 0); - text = gtk_text_new(NULL, NULL); - gtk_object_set(GTK_OBJECT(text), - "editable", TRUE, - NULL); - gtk_table_attach(GTK_TABLE(table), - text, - 2, 3, 0, 2, - GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - gtk_check_button_new_with_label(_("This is the mailing address")), - 2, 3, 2, 3, - 0, 0, - 0, 0); - return table; + _add_image(table, DATADIR "/evolution/head.png", 0, 1, 0, 4); + _add_image(table, DATADIR "/evolution/phone.png", 4, 5, 0, 4); + _add_image(table, DATADIR "/evolution/email.png", 0, 1, 5, 7); + _add_image(table, DATADIR "/evolution/web.png", 0, 1, 8, 10); + _add_image(table, DATADIR "/evolution/snailmail.png", 4, 5, 5, 10); } -static GtkWidget * -_create_page_general_comments(EContactEditor *e_contact_editor) +static void +_add_details_images(GtkTable *table) { - GtkWidget *text; - text = gtk_text_new(NULL, NULL); - gtk_object_set (GTK_OBJECT(text), - "editable", TRUE, - NULL); - return text; + _add_image(table, DATADIR "/evolution/briefcase.png", 0, 1, 0, 2); + _add_image(table, DATADIR "/evolution/head.png", 0, 1, 4, 6); + _add_image(table, DATADIR "/evolution/netmeeting.png", 0, 1, 7, 9); + _add_image(table, DATADIR "/evolution/netfreebusy.png", 0, 1, 10, 12); } -static GtkWidget * -_create_page_general_extras(EContactEditor *e_contact_editor) +static void +_replace_button(EContactEditor *editor, gchar *button_xml, gchar *image, GtkSignalFunc func) { - return gtk_entry_new(); + GladeXML *gui = editor->gui; + GtkWidget *button = glade_xml_get_widget(gui, button_xml); + gchar *image_temp; + image_temp = g_strdup_printf("%s%s", DATADIR "/evolution/", image); + gtk_container_add(GTK_CONTAINER(button), + gnome_pixmap_new_from_file(image_temp)); + g_free(image_temp); + gtk_signal_connect(GTK_OBJECT(button), "button_press_event", func, editor); + } -static GtkWidget * -_create_page_general( EContactEditor *e_contact_editor ) +static void +_replace_buttons(EContactEditor *editor) { - GtkWidget *table; - table = gtk_table_new(2, 5, FALSE); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_name(e_contact_editor), - 0, 1, - 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_phone(e_contact_editor), - 1, 2, - 0, 1, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_email(e_contact_editor), - 0, 1, - 1, 2, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_web(e_contact_editor), - 0, 1, - 2, 3, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_snailmail(e_contact_editor), - 1, 2, - 1, 3, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_comments(e_contact_editor), - 0, 2, - 3, 4, - GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, - 0, 0); - gtk_table_attach(GTK_TABLE(table), - _create_page_general_extras(e_contact_editor), - 0, 2, - 4, 5, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - return table; + _replace_button(editor, "button-phone1", "arrow.png", _phone_arrow_pressed); + _replace_button(editor, "button-phone2", "arrow.png", _phone_arrow_pressed); + _replace_button(editor, "button-phone3", "arrow.png", _phone_arrow_pressed); + _replace_button(editor, "button-phone4", "arrow.png", _phone_arrow_pressed); + _replace_button(editor, "button-address1", "arrow.png", _address_arrow_pressed); + _replace_button(editor, "button-email1", "arrow.png", _email_arrow_pressed); } static void e_contact_editor_init (EContactEditor *e_contact_editor) { - GtkNotebook *notebook = GTK_NOTEBOOK (e_contact_editor); + GladeXML *gui; + GtkAdjustment *adjustment; /* e_contact_editor->card = NULL;*/ - e_contact_editor->fields = NULL; + gui = glade_xml_new (EVOLUTION_GLADEDIR "/contact-editor.glade", NULL); + e_contact_editor->gui = gui; + gtk_widget_reparent(glade_xml_get_widget(gui, "notebook-contact-editor"), + GTK_WIDGET(e_contact_editor)); + + _add_images(GTK_TABLE(glade_xml_get_widget(gui, "table-contact-editor-general"))); + _add_details_images(GTK_TABLE(glade_xml_get_widget(gui, "table-contact-editor-details"))); + _replace_buttons(e_contact_editor); + + gtk_object_get(GTK_OBJECT(glade_xml_get_widget(gui, "text-comments")), + "vadjustment", &adjustment, + NULL); + gtk_range_set_adjustment(GTK_RANGE(glade_xml_get_widget(gui, "vscrollbar-comments")), + adjustment); + + e_contact_editor->email_info = NULL; + e_contact_editor->phone_info = NULL; + e_contact_editor->address_info = NULL; + e_contact_editor->email_popup = NULL; + e_contact_editor->phone_popup = NULL; + e_contact_editor->address_popup = NULL; + e_contact_editor->email_list = NULL; + e_contact_editor->phone_list = NULL; + e_contact_editor->address_list = NULL; +} + +void +e_contact_editor_destroy (GtkObject *object) { + EContactEditor *e_contact_editor = E_CONTACT_EDITOR(object); + + if (e_contact_editor->email_list) { + g_list_foreach(e_contact_editor->email_list, (GFunc) g_free, NULL); + g_list_free(e_contact_editor->email_list); + } + if (e_contact_editor->email_info) { + g_free(e_contact_editor->email_info); + } + if (e_contact_editor->email_popup) { + gtk_widget_unref(e_contact_editor->email_popup); + } + + if (e_contact_editor->phone_list) { + g_list_foreach(e_contact_editor->phone_list, (GFunc) g_free, NULL); + g_list_free(e_contact_editor->phone_list); + } + if (e_contact_editor->phone_info) { + g_free(e_contact_editor->phone_info); + } + if (e_contact_editor->phone_popup) { + gtk_widget_unref(e_contact_editor->phone_popup); + } + + if (e_contact_editor->address_list) { + g_list_foreach(e_contact_editor->address_list, (GFunc) g_free, NULL); + g_list_free(e_contact_editor->address_list); + } + if (e_contact_editor->address_info) { + g_free(e_contact_editor->address_info); + } + if (e_contact_editor->address_popup) { + gtk_widget_unref(e_contact_editor->address_popup); + } - gtk_notebook_append_page (notebook, - _create_page_general(e_contact_editor), - gtk_label_new(_("General"))); + gtk_object_unref(GTK_OBJECT(e_contact_editor->gui)); } GtkWidget* @@ -436,3 +288,277 @@ e_contact_editor_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) break; } } + +static void +_popup_position(GtkMenu *menu, + gint *x, + gint *y, + gpointer data) +{ + GtkWidget *button = GTK_WIDGET(data); + int mh, mw; + gdk_window_get_origin (button->window, x, y); + *x += button->allocation.width; + *y += button->allocation.height; + + mh = GTK_WIDGET(menu)->allocation.height; + mw = GTK_WIDGET(menu)->allocation.width; + + *x -= mw; + if (*x < 0) + *x = 0; + + if (*y < 0) + *y = 0; + + if ((*x + mw) > gdk_screen_width ()) + *x = gdk_screen_width () - mw; + + if ((*y + mh) > gdk_screen_height ()) + *y = gdk_screen_height () - mh; +} + +static void +_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor, GtkWidget *popup, GList **list, GnomeUIInfo **info, gchar *label, gchar *entry, gchar *dialog_title) +{ + gint menu_item; + gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "button_press_event"); + gtk_widget_realize(popup); + menu_item = gnome_popup_menu_do_popup_modal(popup, _popup_position, widget, button, editor); + if ( menu_item != -1 ) { + if (menu_item == g_list_length (*list)) { + e_contact_editor_build_dialog(editor, entry, label, dialog_title, list, info); + } else { + gtk_object_set(GTK_OBJECT(glade_xml_get_widget(editor->gui, label)), + "label", g_list_nth_data(*list, menu_item), + NULL); + } + } +} + +static void +e_contact_editor_build_ui_info(GList *list, GnomeUIInfo **infop) +{ + GnomeUIInfo *info; + GnomeUIInfo singleton = { GNOME_APP_UI_ITEM, NULL, NULL, NULL, NULL, NULL, GNOME_APP_PIXMAP_NONE, 0, 0, 0, NULL }; + GnomeUIInfo end = GNOMEUIINFO_END; + int length; + int i; + + info = *infop; + + if ( info ) + g_free(info); + length = g_list_length( list ); + info = g_new(GnomeUIInfo, length + 2); + for (i = 0; i < length; i++) { + info[i] = singleton; + info[i].label = _(list->data); + list = list->next; + } + info[i] = singleton; + info[i].label = N_("Other..."); + i++; + info[i] = end; + + *infop = info; +} + +static void +_dialog_clicked(GtkWidget *dialog, gint button, EContactEditor *editor) +{ + GtkWidget *label = gtk_object_get_data(GTK_OBJECT(dialog), + "e_contact_editor_label"); + GtkWidget *entry = gtk_object_get_data(GTK_OBJECT(dialog), + "e_contact_editor_entry"); + GtkWidget *dialog_entry = gtk_object_get_data(GTK_OBJECT(dialog), + "e_contact_editor_dialog_entry"); + GList **list = gtk_object_get_data(GTK_OBJECT(dialog), + "e_contact_editor_list"); + GList **info = gtk_object_get_data(GTK_OBJECT(dialog), + "e_contact_editor_info"); + switch (button) { + case 0: + gtk_object_set(GTK_OBJECT(label), + "label", gtk_entry_get_text(GTK_ENTRY(dialog_entry)), + NULL); + *list = g_list_append(*list, g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog_entry)))); + g_free(*info); + *info = NULL; + break; + } + gnome_dialog_close(GNOME_DIALOG(dialog)); +} + +static void +_dialog_destroy(EContactEditor *editor, GtkWidget *dialog) +{ + gnome_dialog_close(GNOME_DIALOG(dialog)); +} + +static GtkWidget * +e_contact_editor_build_dialog(EContactEditor *editor, gchar *entry_id, gchar *label_id, gchar *title, GList **list, GnomeUIInfo **info) +{ + GtkWidget *dialog_entry = gtk_entry_new(); + GtkWidget *entry = glade_xml_get_widget(editor->gui, entry_id); + GtkWidget *label = glade_xml_get_widget(editor->gui, label_id); + + GtkWidget *dialog = gnome_dialog_new(title, + NULL); + + gtk_container_add(GTK_CONTAINER(GNOME_DIALOG(dialog)->vbox), + gtk_widget_new (gtk_frame_get_type(), + "border_width", 4, + "label", title, + "child", gtk_widget_new(gtk_alignment_get_type(), + "child", dialog_entry, + "xalign", .5, + "yalign", .5, + "xscale", 1.0, + "yscale", 1.0, + "border_width", 9, + NULL), + NULL)); + + gnome_dialog_append_button_with_pixmap(GNOME_DIALOG(dialog), + "Add", + GNOME_STOCK_PIXMAP_ADD); + gnome_dialog_append_button(GNOME_DIALOG(dialog), GNOME_STOCK_BUTTON_CANCEL); + gnome_dialog_set_default(GNOME_DIALOG(dialog), 0); + + gtk_signal_connect(GTK_OBJECT(dialog), "clicked", + _dialog_clicked, editor); + gtk_signal_connect_while_alive(GTK_OBJECT(editor), "destroy", + _dialog_destroy, GTK_OBJECT(dialog), GTK_OBJECT(dialog)); + + gtk_object_set_data(GTK_OBJECT(dialog), + "e_contact_editor_entry", entry); + gtk_object_set_data(GTK_OBJECT(dialog), + "e_contact_editor_label", label); + gtk_object_set_data(GTK_OBJECT(dialog), + "e_contact_editor_dialog_entry", dialog_entry); + gtk_object_set_data(GTK_OBJECT(dialog), + "e_contact_editor_list", list); + gtk_object_set_data(GTK_OBJECT(dialog), + "e_contact_editor_info", info); + + gtk_widget_show_all(dialog); + return dialog; +} + +static void +_phone_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor) +{ + int which; + int i; + gchar *label; + gchar *entry; + if ( widget == glade_xml_get_widget(editor->gui, "button-phone1") ) { + which = 1; + } else if ( widget == glade_xml_get_widget(editor->gui, "button-phone2") ) { + which = 2; + } else if ( widget == glade_xml_get_widget(editor->gui, "button-phone3") ) { + which = 3; + } else if ( widget == glade_xml_get_widget(editor->gui, "button-phone4") ) { + which = 4; + } else + return; + + label = g_strdup_printf("label-phone%d", which); + entry = g_strdup_printf("entry-phone%d", which); + + if (editor->phone_list == NULL) { + static char *info[] = { + N_("Assistant"), + N_("Business"), + N_("Business 2"), + N_("Business Fax"), + N_("Callback"), + N_("Car"), + N_("Company"), + N_("Home"), + N_("Home 2"), + N_("Home Fax"), + N_("ISDN"), + N_("Mobile"), + N_("Other"), + N_("Other Fax"), + N_("Pager"), + N_("Primary"), + N_("Radio"), + N_("Telex"), + N_("TTY/TDD") + }; + + for (i = 0; i < sizeof(info) / sizeof(info[0]); i++) { + editor->phone_list = g_list_append(editor->phone_list, g_strdup(info[i])); + } + } + if (editor->phone_info == NULL) { + e_contact_editor_build_ui_info(editor->phone_list, &editor->phone_info); + + if ( editor->phone_popup ) + gtk_widget_unref(editor->phone_popup); + + editor->phone_popup = gnome_popup_menu_new(editor->phone_info); + } + + _arrow_pressed (widget, button, editor, editor->phone_popup, &editor->phone_list, &editor->phone_info, label, entry, "Add new phone number type"); + + g_free(label); + g_free(entry); +} + +static void +_email_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor) +{ + int i; + if (editor->email_list == NULL) { + static char *info[] = { + N_("Email"), + N_("Email 2"), + N_("Email 3") + }; + + for (i = 0; i < sizeof(info) / sizeof(info[0]); i++) { + editor->email_list = g_list_append(editor->email_list, g_strdup(info[i])); + } + } + if (editor->email_info == NULL) { + e_contact_editor_build_ui_info(editor->email_list, &editor->email_info); + + if ( editor->email_popup ) + gtk_widget_unref(editor->email_popup); + + editor->email_popup = gnome_popup_menu_new(editor->email_info); + } + + _arrow_pressed (widget, button, editor, editor->email_popup, &editor->email_list, &editor->email_info, "label-email1", "entry-email1", "Add new Email type"); +} + +static void +_address_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor) +{ + int i; + if (editor->address_list == NULL) { + static char *info[] = { + N_("Business"), + N_("Home"), + N_("Other") + }; + + for (i = 0; i < sizeof(info) / sizeof(info[0]); i++) { + editor->address_list = g_list_append(editor->address_list, g_strdup(info[i])); + } + } + if (editor->address_info == NULL) { + e_contact_editor_build_ui_info(editor->address_list, &editor->address_info); + + if ( editor->address_popup ) + gtk_widget_unref(editor->address_popup); + + editor->address_popup = gnome_popup_menu_new(editor->address_info); + } + + _arrow_pressed (widget, button, editor, editor->address_popup, &editor->address_list, &editor->address_info, "label-address1", "entry-address1", "Add new Address type"); +} diff --git a/addressbook/contact-editor/e-contact-editor.h b/addressbook/contact-editor/e-contact-editor.h index 45f3ae5597..7b914967ee 100644 --- a/addressbook/contact-editor/e-contact-editor.h +++ b/addressbook/contact-editor/e-contact-editor.h @@ -22,6 +22,7 @@ #define __E_CONTACT_EDITOR_H__ #include <gnome.h> +#include <glade/glade.h> #ifdef __cplusplus extern "C" { @@ -49,17 +50,26 @@ typedef struct _EContactEditorClass EContactEditorClass; struct _EContactEditor { - GtkNotebook parent; + GtkVBox parent; /* item specific fields */ /* ECard *card; */ - GList *fields; /* Of type GnomeCanvasItem. */ + GladeXML *gui; + GnomeUIInfo *email_info; + GnomeUIInfo *phone_info; + GnomeUIInfo *address_info; + GtkWidget *email_popup; + GtkWidget *phone_popup; + GtkWidget *address_popup; + GList *email_list; + GList *phone_list; + GList *address_list; }; struct _EContactEditorClass { - GtkNotebookClass parent_class; + GtkVBoxClass parent_class; }; diff --git a/addressbook/contact-editor/netfreebusy.png b/addressbook/contact-editor/netfreebusy.png Binary files differnew file mode 100644 index 0000000000..09ec8a2a5c --- /dev/null +++ b/addressbook/contact-editor/netfreebusy.png diff --git a/addressbook/contact-editor/netmeeting.png b/addressbook/contact-editor/netmeeting.png Binary files differnew file mode 100644 index 0000000000..4cb90c121e --- /dev/null +++ b/addressbook/contact-editor/netmeeting.png diff --git a/addressbook/contact-editor/test-editor.c b/addressbook/contact-editor/test-editor.c index 737c3028c4..49ed7e48bf 100644 --- a/addressbook/contact-editor/test-editor.c +++ b/addressbook/contact-editor/test-editor.c @@ -23,6 +23,7 @@ #include "config.h" #include <gnome.h> +#include <glade/glade.h> #include "e-contact-editor.h" /* This is a horrible thing to do, but it is just a test. */ @@ -30,7 +31,10 @@ GtkWidget *editor; static void destroy_callback(GtkWidget *app, gpointer data) { - exit(0); + static int count = 2; + count --; + if ( count <= 0 ) + exit(0); } static void about_callback( GtkWidget *widget, gpointer data ) @@ -59,6 +63,22 @@ int main( int argc, char *argv[] ) textdomain (PACKAGE);*/ gnome_init( "Contact Editor Test", VERSION, argc, argv); + + glade_gnome_init (); + + app = gnome_app_new("Contact Editor Test", NULL); + + editor = e_contact_editor_new(NULL); + + gnome_app_set_contents( GNOME_APP( app ), editor ); + + /* Connect the signals */ + gtk_signal_connect( GTK_OBJECT( app ), "destroy", + GTK_SIGNAL_FUNC( destroy_callback ), + ( gpointer ) app ); + + gtk_widget_show_all( app ); + app = gnome_app_new("Contact Editor Test", NULL); editor = e_contact_editor_new(NULL); |