add XEP-202 in vcard window. Fixes #4007
This commit is contained in:
		
							parent
							
								
									bec8b7ff15
								
							
						
					
					
						commit
						7c96178126
					
				
					 7 changed files with 1671 additions and 1757 deletions
				
			
		| 
						 | 
				
			
			@ -1,33 +1,17 @@
 | 
			
		|||
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
 | 
			
		||||
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
 | 
			
		||||
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
 | 
			
		||||
<!--*- mode: xml -*-->
 | 
			
		||||
<glade-interface>
 | 
			
		||||
 | 
			
		||||
<widget class="GtkWindow" id="data_form_window">
 | 
			
		||||
  <widget class="GtkWindow" id="data_form_window">
 | 
			
		||||
    <property name="border_width">6</property>
 | 
			
		||||
    <property name="title" translatable="yes">Room Configuration</property>
 | 
			
		||||
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
 | 
			
		||||
  <property name="window_position">GTK_WIN_POS_NONE</property>
 | 
			
		||||
  <property name="modal">False</property>
 | 
			
		||||
    <property name="default_width">650</property>
 | 
			
		||||
    <property name="default_height">450</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="destroy" handler="on_data_form_window_destroy" last_modification_time="Thu, 19 Jan 2006 12:55:13 GMT"/>
 | 
			
		||||
 | 
			
		||||
    <signal name="destroy" handler="on_data_form_window_destroy"/>
 | 
			
		||||
    <child>
 | 
			
		||||
      <widget class="GtkVBox" id="vbox68">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
      <property name="homogeneous">False</property>
 | 
			
		||||
        <property name="spacing">6</property>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkScrolledWindow" id="scrolledwindow35">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,99 +19,65 @@
 | 
			
		|||
            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
            <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
 | 
			
		||||
	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkViewport" id="viewport1">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
	      <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkVBox" id="vbox110">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
		  <property name="homogeneous">False</property>
 | 
			
		||||
		  <property name="spacing">0</property>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkVBox" id="config_vbox">
 | 
			
		||||
		      <property name="border_width">5</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
		      <property name="homogeneous">False</property>
 | 
			
		||||
                        <property name="border_width">5</property>
 | 
			
		||||
                        <property name="spacing">5</property>
 | 
			
		||||
 | 
			
		||||
                        <child>
 | 
			
		||||
                          <widget class="GtkLabel" id="instructions_label">
 | 
			
		||||
                            <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">True</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>
 | 
			
		||||
                            <property name="wrap">True</property>
 | 
			
		||||
                          </widget>
 | 
			
		||||
                          <packing>
 | 
			
		||||
			  <property name="padding">5</property>
 | 
			
		||||
                            <property name="expand">False</property>
 | 
			
		||||
                            <property name="fill">False</property>
 | 
			
		||||
                            <property name="padding">5</property>
 | 
			
		||||
                          </packing>
 | 
			
		||||
                        </child>
 | 
			
		||||
 | 
			
		||||
                        <child>
 | 
			
		||||
                          <widget class="GtkHSeparator" id="hseparator15">
 | 
			
		||||
                            <property name="visible">True</property>
 | 
			
		||||
                          </widget>
 | 
			
		||||
                          <packing>
 | 
			
		||||
			  <property name="padding">5</property>
 | 
			
		||||
                            <property name="expand">False</property>
 | 
			
		||||
			  <property name="fill">True</property>
 | 
			
		||||
                            <property name="padding">5</property>
 | 
			
		||||
                            <property name="position">1</property>
 | 
			
		||||
                          </packing>
 | 
			
		||||
                        </child>
 | 
			
		||||
 | 
			
		||||
                        <child>
 | 
			
		||||
                          <placeholder/>
 | 
			
		||||
                        </child>
 | 
			
		||||
                      </widget>
 | 
			
		||||
		    <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
		      <property name="expand">True</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
		    </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkHSeparator" id="hseparator14">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">5</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
                        <property name="padding">5</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkVBox" id="add_on_vbox">
 | 
			
		||||
		      <property name="border_width">5</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
		      <property name="homogeneous">False</property>
 | 
			
		||||
                        <property name="border_width">5</property>
 | 
			
		||||
                        <property name="spacing">5</property>
 | 
			
		||||
 | 
			
		||||
                        <child>
 | 
			
		||||
                          <placeholder/>
 | 
			
		||||
                        </child>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
		      <property name="expand">True</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </widget>
 | 
			
		||||
| 
						 | 
				
			
			@ -135,77 +85,53 @@
 | 
			
		|||
              </widget>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
	<packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
	  <property name="expand">True</property>
 | 
			
		||||
	  <property name="fill">True</property>
 | 
			
		||||
	</packing>
 | 
			
		||||
        </child>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkHButtonBox" id="hbuttonbox32">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
	  <property name="layout_style">GTK_BUTTONBOX_END</property>
 | 
			
		||||
            <property name="spacing">6</property>
 | 
			
		||||
 | 
			
		||||
            <property name="layout_style">GTK_BUTTONBOX_END</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="can_default">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="Thu, 19 Jan 2006 12:47:07 GMT"/>
 | 
			
		||||
                <property name="response_id">0</property>
 | 
			
		||||
                <signal name="clicked" handler="on_cancel_button_clicked"/>
 | 
			
		||||
              </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="can_default">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="Thu, 19 Jan 2006 20:57:04 GMT"/>
 | 
			
		||||
                <property name="response_id">0</property>
 | 
			
		||||
                <signal name="clicked" handler="on_ok_button_clicked"/>
 | 
			
		||||
              </widget>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="position">1</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
          <packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
	  <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </widget>
 | 
			
		||||
    </child>
 | 
			
		||||
</widget>
 | 
			
		||||
 | 
			
		||||
<widget class="GtkWindow" id="data_form_old_fake_window">
 | 
			
		||||
  </widget>
 | 
			
		||||
  <widget class="GtkWindow" id="data_form_old_fake_window">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="title" translatable="yes">window1</property>
 | 
			
		||||
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
 | 
			
		||||
  <property name="window_position">GTK_WIN_POS_NONE</property>
 | 
			
		||||
  <property name="modal">False</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>
 | 
			
		||||
 | 
			
		||||
    <child>
 | 
			
		||||
      <widget class="GtkVBox" id="vbox111">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
      <property name="homogeneous">False</property>
 | 
			
		||||
        <property name="spacing">10</property>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkScrolledWindow" id="data_form_scrolledwindow">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
| 
						 | 
				
			
			@ -213,56 +139,36 @@
 | 
			
		|||
            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
            <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkViewport" id="viewport2">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
	      <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkVBox" id="container_vbox">
 | 
			
		||||
		  <property name="border_width">5</property>
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
		  <property name="homogeneous">False</property>
 | 
			
		||||
                    <property name="border_width">5</property>
 | 
			
		||||
                    <property name="spacing">5</property>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkLabel" id="form_instructions_label">
 | 
			
		||||
                        <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">True</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>
 | 
			
		||||
                        <property name="wrap">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">5</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="padding">5</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkHSeparator" id="form_instructions_hseparator">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">5</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
                        <property name="padding">5</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <placeholder/>
 | 
			
		||||
                    </child>
 | 
			
		||||
| 
						 | 
				
			
			@ -271,220 +177,142 @@
 | 
			
		|||
              </widget>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
	<packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
	  <property name="expand">True</property>
 | 
			
		||||
	  <property name="fill">True</property>
 | 
			
		||||
	</packing>
 | 
			
		||||
        </child>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkTable" id="item_list_table">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="n_rows">1</property>
 | 
			
		||||
            <property name="n_columns">2</property>
 | 
			
		||||
	  <property name="homogeneous">False</property>
 | 
			
		||||
	  <property name="row_spacing">0</property>
 | 
			
		||||
	  <property name="column_spacing">0</property>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkScrolledWindow" id="scrolledwindow36">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="can_focus">True</property>
 | 
			
		||||
	      <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
 | 
			
		||||
	      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
 | 
			
		||||
	      <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 | 
			
		||||
 | 
			
		||||
	      <child>
 | 
			
		||||
		<widget class="GtkTreeView" id="item_treeview">
 | 
			
		||||
		  <property name="visible">True</property>
 | 
			
		||||
		  <property name="can_focus">True</property>
 | 
			
		||||
		  <property name="headers_visible">False</property>
 | 
			
		||||
		  <property name="rules_hint">False</property>
 | 
			
		||||
		  <property name="reorderable">False</property>
 | 
			
		||||
		  <property name="enable_search">True</property>
 | 
			
		||||
		  <property name="fixed_height_mode">False</property>
 | 
			
		||||
		  <property name="hover_selection">False</property>
 | 
			
		||||
		  <property name="hover_expand">False</property>
 | 
			
		||||
		</widget>
 | 
			
		||||
	      </child>
 | 
			
		||||
	    </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>
 | 
			
		||||
	    </packing>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkVBox" id="vbox112">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
	      <property name="homogeneous">False</property>
 | 
			
		||||
	      <property name="spacing">0</property>
 | 
			
		||||
 | 
			
		||||
	      <child>
 | 
			
		||||
		<widget class="GtkButton" id="clear_button">
 | 
			
		||||
		  <property name="visible">True</property>
 | 
			
		||||
		  <property name="can_focus">True</property>
 | 
			
		||||
		  <property name="label">gtk-clear</property>
 | 
			
		||||
		  <property name="use_stock">True</property>
 | 
			
		||||
		  <property name="relief">GTK_RELIEF_NORMAL</property>
 | 
			
		||||
		  <property name="focus_on_click">True</property>
 | 
			
		||||
		</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="GtkButton" id="remove_button">
 | 
			
		||||
		  <property name="visible">True</property>
 | 
			
		||||
		  <property name="can_focus">True</property>
 | 
			
		||||
		  <property name="label">gtk-remove</property>
 | 
			
		||||
		  <property name="use_stock">True</property>
 | 
			
		||||
		  <property name="relief">GTK_RELIEF_NORMAL</property>
 | 
			
		||||
		  <property name="focus_on_click">True</property>
 | 
			
		||||
		</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="GtkButton" id="add_button">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can_focus">True</property>
 | 
			
		||||
                    <property name="label">gtk-add</property>
 | 
			
		||||
                    <property name="use_stock">True</property>
 | 
			
		||||
		  <property name="relief">GTK_RELIEF_NORMAL</property>
 | 
			
		||||
		  <property name="focus_on_click">True</property>
 | 
			
		||||
                    <property name="response_id">0</property>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                  <packing>
 | 
			
		||||
		  <property name="padding">0</property>
 | 
			
		||||
                    <property name="expand">False</property>
 | 
			
		||||
		  <property name="fill">True</property>
 | 
			
		||||
                    <property name="position">2</property>
 | 
			
		||||
                  </packing>
 | 
			
		||||
                </child>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkButton" id="edit_button">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can_focus">True</property>
 | 
			
		||||
                    <property name="label">gtk-edit</property>
 | 
			
		||||
                    <property name="use_stock">True</property>
 | 
			
		||||
		  <property name="relief">GTK_RELIEF_NORMAL</property>
 | 
			
		||||
		  <property name="focus_on_click">True</property>
 | 
			
		||||
                    <property name="response_id">0</property>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                  <packing>
 | 
			
		||||
		  <property name="padding">0</property>
 | 
			
		||||
                    <property name="expand">False</property>
 | 
			
		||||
                    <property name="fill">False</property>
 | 
			
		||||
                    <property name="position">3</property>
 | 
			
		||||
                  </packing>
 | 
			
		||||
                </child>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <placeholder/>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkButton" id="remove_button">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can_focus">True</property>
 | 
			
		||||
                    <property name="label">gtk-remove</property>
 | 
			
		||||
                    <property name="use_stock">True</property>
 | 
			
		||||
                    <property name="response_id">0</property>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                  <packing>
 | 
			
		||||
                    <property name="expand">False</property>
 | 
			
		||||
                    <property name="pack_type">GTK_PACK_END</property>
 | 
			
		||||
                    <property name="position">1</property>
 | 
			
		||||
                  </packing>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkButton" id="clear_button">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can_focus">True</property>
 | 
			
		||||
                    <property name="label">gtk-clear</property>
 | 
			
		||||
                    <property name="use_stock">True</property>
 | 
			
		||||
                    <property name="response_id">0</property>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                  <packing>
 | 
			
		||||
                    <property name="expand">False</property>
 | 
			
		||||
                    <property name="pack_type">GTK_PACK_END</property>
 | 
			
		||||
                  </packing>
 | 
			
		||||
                </child>
 | 
			
		||||
              </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="x_options">fill</property>
 | 
			
		||||
	      <property name="y_options">fill</property>
 | 
			
		||||
                <property name="x_options">GTK_FILL</property>
 | 
			
		||||
                <property name="y_options">GTK_FILL</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkScrolledWindow" id="scrolledwindow36">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can_focus">True</property>
 | 
			
		||||
                <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkTreeView" id="item_treeview">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can_focus">True</property>
 | 
			
		||||
                    <property name="headers_visible">False</property>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                </child>
 | 
			
		||||
              </widget>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
          <packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
	  <property name="expand">True</property>
 | 
			
		||||
	  <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </widget>
 | 
			
		||||
    </child>
 | 
			
		||||
</widget>
 | 
			
		||||
 | 
			
		||||
<widget class="GtkWindow" id="data_form_fake_window">
 | 
			
		||||
  </widget>
 | 
			
		||||
  <widget class="GtkWindow" id="data_form_fake_window">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="title" translatable="yes">window1</property>
 | 
			
		||||
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
 | 
			
		||||
  <property name="window_position">GTK_WIN_POS_NONE</property>
 | 
			
		||||
  <property name="modal">False</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>
 | 
			
		||||
 | 
			
		||||
    <child>
 | 
			
		||||
      <widget class="GtkVBox" id="data_form_vbox">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="border_width">3</property>
 | 
			
		||||
      <property name="visible">True</property>
 | 
			
		||||
      <property name="homogeneous">False</property>
 | 
			
		||||
        <property name="spacing">3</property>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
	<widget class="GtkLabel" id="instructions_label">
 | 
			
		||||
          <widget class="GtkEventBox" id="eventbox1">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkLabel" id="instructions_label1">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="xalign">0</property>
 | 
			
		||||
                <property name="label" translatable="yes">Fill in the form.</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>
 | 
			
		||||
                <property name="wrap">True</property>
 | 
			
		||||
              </widget>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
          <packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">False</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkNotebook" id="data_form_types_notebook">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="show_tabs">False</property>
 | 
			
		||||
            <property name="show_border">False</property>
 | 
			
		||||
	  <property name="tab_pos">GTK_POS_TOP</property>
 | 
			
		||||
	  <property name="scrollable">False</property>
 | 
			
		||||
	  <property name="enable_popup">False</property>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkScrolledWindow" id="single_form_scrolledwindow">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can_focus">True</property>
 | 
			
		||||
                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
	      <property name="shadow_type">GTK_SHADOW_NONE</property>
 | 
			
		||||
	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkViewport" id="single_form_viewport">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="shadow_type">GTK_SHADOW_NONE</property>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <placeholder/>
 | 
			
		||||
                    </child>
 | 
			
		||||
| 
						 | 
				
			
			@ -493,66 +321,33 @@
 | 
			
		|||
              </widget>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="tab_expand">True</property>
 | 
			
		||||
	      <property name="tab_fill">True</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkLabel" id="label1">
 | 
			
		||||
                <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="type">tab</property>
 | 
			
		||||
                <property name="tab_fill">False</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkLabel" id="label2">
 | 
			
		||||
                <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="type">tab</property>
 | 
			
		||||
                <property name="position">1</property>
 | 
			
		||||
                <property name="tab_fill">False</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkHBox" id="multiple_form_hbox">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
	      <property name="homogeneous">False</property>
 | 
			
		||||
	      <property name="spacing">0</property>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkScrolledWindow" id="scrolledwindow38">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
| 
						 | 
				
			
			@ -560,241 +355,197 @@
 | 
			
		|||
                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
 | 
			
		||||
                    <property name="shadow_type">GTK_SHADOW_IN</property>
 | 
			
		||||
		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkTreeView" id="records_treeview">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
		      <property name="headers_visible">True</property>
 | 
			
		||||
		      <property name="rules_hint">False</property>
 | 
			
		||||
		      <property name="reorderable">False</property>
 | 
			
		||||
		      <property name="enable_search">True</property>
 | 
			
		||||
		      <property name="fixed_height_mode">False</property>
 | 
			
		||||
		      <property name="hover_selection">False</property>
 | 
			
		||||
		      <property name="hover_expand">False</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </widget>
 | 
			
		||||
		<packing>
 | 
			
		||||
		  <property name="padding">0</property>
 | 
			
		||||
		  <property name="expand">True</property>
 | 
			
		||||
		  <property name="fill">True</property>
 | 
			
		||||
		</packing>
 | 
			
		||||
                </child>
 | 
			
		||||
 | 
			
		||||
                <child>
 | 
			
		||||
                  <widget class="GtkVBox" id="buttons_vbox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
		  <property name="homogeneous">False</property>
 | 
			
		||||
		  <property name="spacing">0</property>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
		    <widget class="GtkButton" id="add_button">
 | 
			
		||||
                      <widget class="GtkButton" id="add_button1">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-add</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_add_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:32:45 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_add_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
		    <widget class="GtkButton" id="remove_button">
 | 
			
		||||
                      <widget class="GtkButton" id="remove_button1">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-remove</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_remove_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:32:50 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_remove_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkHSeparator" id="hseparator17">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">3</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="padding">3</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
		    <widget class="GtkButton" id="edit_button">
 | 
			
		||||
                      <widget class="GtkButton" id="edit_button1">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-edit</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_edit_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:32:54 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_edit_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkHSeparator" id="hseparator18">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">3</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
                        <property name="padding">3</property>
 | 
			
		||||
                        <property name="position">4</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkButton" id="up_button">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-go-up</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_up_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:32:59 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_up_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="position">5</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkButton" id="down_button">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-go-down</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_down_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:33:03 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_down_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="position">6</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <widget class="GtkHSeparator" id="hseparator19">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">3</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
		      <property name="fill">True</property>
 | 
			
		||||
                        <property name="padding">3</property>
 | 
			
		||||
                        <property name="position">7</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
 | 
			
		||||
                    <child>
 | 
			
		||||
		    <widget class="GtkButton" id="clear_button">
 | 
			
		||||
                      <widget class="GtkButton" id="clear_button1">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="label">gtk-clear</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_clear_button_clicked" last_modification_time="Mon, 21 Aug 2006 22:33:07 GMT"/>
 | 
			
		||||
                        <property name="response_id">0</property>
 | 
			
		||||
                        <signal name="clicked" handler="on_clear_button_clicked"/>
 | 
			
		||||
                      </widget>
 | 
			
		||||
                      <packing>
 | 
			
		||||
		      <property name="padding">0</property>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">False</property>
 | 
			
		||||
                        <property name="position">8</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </widget>
 | 
			
		||||
                  <packing>
 | 
			
		||||
		  <property name="padding">0</property>
 | 
			
		||||
                    <property name="expand">False</property>
 | 
			
		||||
		  <property name="fill">True</property>
 | 
			
		||||
                    <property name="position">1</property>
 | 
			
		||||
                  </packing>
 | 
			
		||||
                </child>
 | 
			
		||||
              </widget>
 | 
			
		||||
              <packing>
 | 
			
		||||
	      <property name="tab_expand">False</property>
 | 
			
		||||
	      <property name="tab_fill">True</property>
 | 
			
		||||
                <property name="position">2</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkLabel" id="label3">
 | 
			
		||||
                <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="type">tab</property>
 | 
			
		||||
                <property name="position">2</property>
 | 
			
		||||
                <property name="tab_fill">False</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkLabel" id="label4">
 | 
			
		||||
                <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="type">tab</property>
 | 
			
		||||
                <property name="position">3</property>
 | 
			
		||||
                <property name="tab_fill">False</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
          <packing>
 | 
			
		||||
	  <property name="padding">0</property>
 | 
			
		||||
	  <property name="expand">True</property>
 | 
			
		||||
	  <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <widget class="GtkScrolledWindow" id="scrolledwindow1">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">True</property>
 | 
			
		||||
            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
 | 
			
		||||
            <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <widget class="GtkTextView" id="instructions_label2">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can_focus">True</property>
 | 
			
		||||
                <property name="editable">False</property>
 | 
			
		||||
                <property name="wrap_mode">GTK_WRAP_WORD</property>
 | 
			
		||||
                <property name="cursor_visible">False</property>
 | 
			
		||||
              </widget>
 | 
			
		||||
            </child>
 | 
			
		||||
          </widget>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="position">2</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </widget>
 | 
			
		||||
    </child>
 | 
			
		||||
</widget>
 | 
			
		||||
 | 
			
		||||
  </widget>
 | 
			
		||||
</glade-interface>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -1481,7 +1481,7 @@ class Connection(ConnectionHandlers):
 | 
			
		|||
		to_whom_jid = jid
 | 
			
		||||
		if resource:
 | 
			
		||||
			to_whom_jid += '/' + resource
 | 
			
		||||
		iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\
 | 
			
		||||
		iq = common.xmpp.Iq(to=to_whom_jid, typ='get', queryNS=\
 | 
			
		||||
			common.xmpp.NS_VERSION)
 | 
			
		||||
		id_ = self.connection.getAnID()
 | 
			
		||||
		iq.setID(id_)
 | 
			
		||||
| 
						 | 
				
			
			@ -1490,6 +1490,27 @@ class Connection(ConnectionHandlers):
 | 
			
		|||
		self.version_ids.append(id_)
 | 
			
		||||
		self.connection.send(iq)
 | 
			
		||||
 | 
			
		||||
	def request_entity_time(self, jid, resource, groupchat_jid=None):
 | 
			
		||||
		'''groupchat_jid is used when we want to send a request to a real jid
 | 
			
		||||
		and act as if the answer comes from the groupchat_jid'''
 | 
			
		||||
		if not self.connection:
 | 
			
		||||
			return
 | 
			
		||||
		# If we are invisible, do not request
 | 
			
		||||
		if self.connected == gajim.SHOW_LIST.index('invisible'):
 | 
			
		||||
			self.dispatch('ENTITY_TIME', (jid, resource, _('Not fetched because of invisible status')))
 | 
			
		||||
			return
 | 
			
		||||
		to_whom_jid = jid
 | 
			
		||||
		if resource:
 | 
			
		||||
			to_whom_jid += '/' + resource
 | 
			
		||||
		iq = common.xmpp.Iq(to=to_whom_jid, typ='get', queryNS=\
 | 
			
		||||
			common.xmpp.NS_TIME_REVISED)
 | 
			
		||||
		id_ = self.connection.getAnID()
 | 
			
		||||
		iq.setID(id_)
 | 
			
		||||
		if groupchat_jid:
 | 
			
		||||
			self.groupchat_jids[id_] = groupchat_jid
 | 
			
		||||
		self.entity_time_ids.append(id_)
 | 
			
		||||
		self.connection.send(iq)
 | 
			
		||||
 | 
			
		||||
	def get_settings(self):
 | 
			
		||||
		''' Get Gajim settings as described in XEP 0049 '''
 | 
			
		||||
		if not self.connection:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@ import hashlib
 | 
			
		|||
from time import (altzone, daylight, gmtime, localtime, mktime, strftime,
 | 
			
		||||
	time as time_time, timezone, tzname)
 | 
			
		||||
from calendar import timegm
 | 
			
		||||
import datetime
 | 
			
		||||
 | 
			
		||||
import socks5
 | 
			
		||||
import common.xmpp
 | 
			
		||||
| 
						 | 
				
			
			@ -1426,6 +1427,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
		self.last_ids = []
 | 
			
		||||
		# IDs of jabber:iq:version requests
 | 
			
		||||
		self.version_ids = []
 | 
			
		||||
		# IDs of urn:xmpp:time requests
 | 
			
		||||
		self.entity_time_ids = []
 | 
			
		||||
		# ID of urn:xmpp:ping requests
 | 
			
		||||
		self.awaiting_xmpp_ping_id = None
 | 
			
		||||
		self.continue_connect_info = None
 | 
			
		||||
| 
						 | 
				
			
			@ -1475,6 +1478,10 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
			self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, -1, ''))
 | 
			
		||||
			self.last_ids.remove(id_)
 | 
			
		||||
			return
 | 
			
		||||
		if id_ in self.entity_time_ids:
 | 
			
		||||
			self.dispatch('ENTITY_TIME', (jid_stripped, resource, ''))
 | 
			
		||||
			self.entity_time_ids.remove(id_)
 | 
			
		||||
			return
 | 
			
		||||
		if id_ == self.awaiting_xmpp_ping_id:
 | 
			
		||||
			self.awaiting_xmpp_ping_id = None
 | 
			
		||||
		errmsg = iq_obj.getErrorMsg()
 | 
			
		||||
| 
						 | 
				
			
			@ -1639,6 +1646,47 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
		self.connection.send(iq_obj)
 | 
			
		||||
		raise common.xmpp.NodeProcessed
 | 
			
		||||
 | 
			
		||||
	def _TimeRevisedResultCB(self, con, iq_obj):
 | 
			
		||||
		log.debug('TimeRevisedResultCB')
 | 
			
		||||
		time_info = ''
 | 
			
		||||
		qp = iq_obj.getTag('time')
 | 
			
		||||
		tzo = qp.getTag('tzo').getData()
 | 
			
		||||
		if tzo == 'Z':
 | 
			
		||||
			tzo = '0:0'
 | 
			
		||||
		tzoh, tzom = tzo.split(':')
 | 
			
		||||
		utc_time = qp.getTag('utc').getData()
 | 
			
		||||
		ZERO = datetime.timedelta(0)
 | 
			
		||||
		class UTC(datetime.tzinfo):
 | 
			
		||||
			def utcoffset(self, dt):
 | 
			
		||||
				return ZERO
 | 
			
		||||
			def tzname(self, dt):
 | 
			
		||||
				return "UTC"
 | 
			
		||||
			def dst(self, dt):
 | 
			
		||||
				return ZERO
 | 
			
		||||
 | 
			
		||||
		class contact_tz(datetime.tzinfo):
 | 
			
		||||
			def utcoffset(self, dt):
 | 
			
		||||
				return datetime.timedelta(hours=int(tzoh), minutes=int(tzom))
 | 
			
		||||
			def tzname(self, dt):
 | 
			
		||||
				return "remote timezone"
 | 
			
		||||
			def dst(self, dt):
 | 
			
		||||
				return ZERO
 | 
			
		||||
 | 
			
		||||
		t = datetime.datetime.strptime(utc_time, '%Y-%m-%dT%H:%M:%SZ')
 | 
			
		||||
		t = t.replace(tzinfo=UTC())
 | 
			
		||||
 | 
			
		||||
		time_info = t.astimezone(contact_tz()).strftime('%c')
 | 
			
		||||
		id_ = iq_obj.getID()
 | 
			
		||||
		if id_ in self.groupchat_jids:
 | 
			
		||||
			who = self.groupchat_jids[id_]
 | 
			
		||||
			del self.groupchat_jids[id_]
 | 
			
		||||
		else:
 | 
			
		||||
			who = helpers.get_full_jid_from_iq(iq_obj)
 | 
			
		||||
		jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who)
 | 
			
		||||
		if id_ in self.entity_time_ids:
 | 
			
		||||
			self.entity_time_ids.remove(id_)
 | 
			
		||||
		self.dispatch('ENTITY_TIME', (jid_stripped, resource, time_info))
 | 
			
		||||
 | 
			
		||||
	def _gMailNewMailCB(self, con, gm):
 | 
			
		||||
		'''Called when we get notified of new mail messages in gmail account'''
 | 
			
		||||
		if not self.connection or self.connected < 2:
 | 
			
		||||
| 
						 | 
				
			
			@ -2543,6 +2591,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
			common.xmpp.NS_LAST)
 | 
			
		||||
		con.RegisterHandler('iq', self._VersionResultCB, 'result',
 | 
			
		||||
			common.xmpp.NS_VERSION)
 | 
			
		||||
		con.RegisterHandler('iq', self._TimeRevisedResultCB, 'result',
 | 
			
		||||
			common.xmpp.NS_TIME_REVISED)
 | 
			
		||||
		con.RegisterHandler('iq', self._MucOwnerCB, 'result',
 | 
			
		||||
			common.xmpp.NS_MUC_OWNER)
 | 
			
		||||
		con.RegisterHandler('iq', self._MucAdminCB, 'result',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								src/gajim.py
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								src/gajim.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1178,6 +1178,18 @@ class Interface:
 | 
			
		|||
		if self.remote_ctrl:
 | 
			
		||||
			self.remote_ctrl.raise_signal('OsInfo', (account, array))
 | 
			
		||||
 | 
			
		||||
	def handle_event_entity_time(self, account, array):
 | 
			
		||||
		#'ENTITY_TIME' (account, (jid, resource, time_info))
 | 
			
		||||
		win = None
 | 
			
		||||
		if array[0] in self.instances[account]['infos']:
 | 
			
		||||
			win = self.instances[account]['infos'][array[0]]
 | 
			
		||||
		elif array[0] + '/' + array[1] in self.instances[account]['infos']:
 | 
			
		||||
			win = self.instances[account]['infos'][array[0] + '/' + array[1]]
 | 
			
		||||
		if win:
 | 
			
		||||
			win.set_entity_time(array[1], array[2])
 | 
			
		||||
		if self.remote_ctrl:
 | 
			
		||||
			self.remote_ctrl.raise_signal('EntityTime', (account, array))
 | 
			
		||||
 | 
			
		||||
	def handle_event_gc_notify(self, account, array):
 | 
			
		||||
		#'GC_NOTIFY' (account, (room_jid, show, status, nick,
 | 
			
		||||
		# role, affiliation, jid, reason, actor, statusCode, newNick, avatar_sha))
 | 
			
		||||
| 
						 | 
				
			
			@ -2163,6 +2175,7 @@ class Interface:
 | 
			
		|||
			'VCARD': self.handle_event_vcard,
 | 
			
		||||
			'LAST_STATUS_TIME': self.handle_event_last_status_time,
 | 
			
		||||
			'OS_INFO': self.handle_event_os_info,
 | 
			
		||||
			'ENTITY_TIME': self.handle_event_entity_time,
 | 
			
		||||
			'GC_NOTIFY': self.handle_event_gc_notify,
 | 
			
		||||
			'GC_MSG': self.handle_event_gc_msg,
 | 
			
		||||
			'GC_SUBJECT': self.handle_event_gc_subject,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,6 +171,10 @@ class SignalObject(dbus.service.Object):
 | 
			
		|||
	def OsInfo(self, account_and_array):
 | 
			
		||||
		pass
 | 
			
		||||
 | 
			
		||||
	@dbus.service.signal(INTERFACE, signature='av')
 | 
			
		||||
	def EntityTime(self, account_and_array):
 | 
			
		||||
		pass
 | 
			
		||||
 | 
			
		||||
	@dbus.service.signal(INTERFACE, signature='av')
 | 
			
		||||
	def GCPresence(self, account_and_array):
 | 
			
		||||
		pass
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										44
									
								
								src/vcard.py
									
										
									
									
									
								
							
							
						
						
									
										44
									
								
								src/vcard.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -112,6 +112,7 @@ class VcardWindow:
 | 
			
		|||
		self.avatar_encoded = None
 | 
			
		||||
		self.vcard_arrived = False
 | 
			
		||||
		self.os_info_arrived = False
 | 
			
		||||
		self.entity_time_arrived = False
 | 
			
		||||
		self.update_progressbar_timeout_id = gobject.timeout_add(100,
 | 
			
		||||
			self.update_progressbar)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -215,7 +216,7 @@ class VcardWindow:
 | 
			
		|||
 | 
			
		||||
	def test_remove_progressbar(self):
 | 
			
		||||
		if self.update_progressbar_timeout_id is not None and \
 | 
			
		||||
		self.vcard_arrived and self.os_info_arrived:
 | 
			
		||||
		self.vcard_arrived and self.os_info_arrived and self.entity_time_arrived:
 | 
			
		||||
			gobject.source_remove(self.update_progressbar_timeout_id)
 | 
			
		||||
			self.progressbar.hide()
 | 
			
		||||
			self.update_progressbar_timeout_id = None
 | 
			
		||||
| 
						 | 
				
			
			@ -250,6 +251,26 @@ class VcardWindow:
 | 
			
		|||
		self.os_info_arrived = True
 | 
			
		||||
		self.test_remove_progressbar()
 | 
			
		||||
 | 
			
		||||
	def set_entity_time(self, resource, time_info):
 | 
			
		||||
		if self.xml.get_widget('information_notebook').get_n_pages() < 5:
 | 
			
		||||
			return
 | 
			
		||||
		i = 0
 | 
			
		||||
		time_s = ''
 | 
			
		||||
		while i in self.time_info:
 | 
			
		||||
			if not self.time_info[i]['resource'] or \
 | 
			
		||||
			self.time_info[i]['resource'] == resource:
 | 
			
		||||
				self.time_info[i]['time'] = time_info
 | 
			
		||||
			if i > 0:
 | 
			
		||||
				time_s += '\n'
 | 
			
		||||
			time_s += self.time_info[i]['time']
 | 
			
		||||
			i += 1
 | 
			
		||||
 | 
			
		||||
		if time_s == '':
 | 
			
		||||
			time_s = Q_('?Time:Unknown')
 | 
			
		||||
		self.xml.get_widget('time_label').set_text(time_s)
 | 
			
		||||
		self.entity_time_arrived = True
 | 
			
		||||
		self.test_remove_progressbar()
 | 
			
		||||
 | 
			
		||||
	def fill_status_label(self):
 | 
			
		||||
		if self.xml.get_widget('information_notebook').get_n_pages() < 5:
 | 
			
		||||
			return
 | 
			
		||||
| 
						 | 
				
			
			@ -364,8 +385,25 @@ class VcardWindow:
 | 
			
		|||
			else:
 | 
			
		||||
				gobject.idle_add(gajim.connections[self.account].request_os_info,
 | 
			
		||||
					self.contact.jid, self.contact.resource)
 | 
			
		||||
 | 
			
		||||
		# do not wait for entity_time if contact is not connected or has error
 | 
			
		||||
		# additional check for observer is needed, as show is offline for him
 | 
			
		||||
		if self.contact.show in ('offline', 'error')\
 | 
			
		||||
		and not self.contact.is_observer():
 | 
			
		||||
			self.entity_time_arrived = True
 | 
			
		||||
		else: # Request entity time if contact is connected
 | 
			
		||||
			if self.gc_contact:
 | 
			
		||||
				j, r = gajim.get_room_and_nick_from_fjid(self.real_jid)
 | 
			
		||||
				gobject.idle_add(gajim.connections[self.account].\
 | 
			
		||||
					request_entity_time, j, r, self.contact.jid)
 | 
			
		||||
			else:
 | 
			
		||||
				gobject.idle_add(gajim.connections[self.account].\
 | 
			
		||||
					request_entity_time, self.contact.jid, self.contact.resource)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		self.os_info = {0: {'resource': self.contact.resource, 'client': '',
 | 
			
		||||
			'os': ''}}
 | 
			
		||||
		self.time_info = {0: {'resource': self.contact.resource, 'time': ''}}
 | 
			
		||||
		i = 1
 | 
			
		||||
		contact_list = gajim.contacts.get_contacts(self.account, self.contact.jid)
 | 
			
		||||
		if contact_list:
 | 
			
		||||
| 
						 | 
				
			
			@ -379,11 +417,15 @@ class VcardWindow:
 | 
			
		|||
						gobject.idle_add(
 | 
			
		||||
							gajim.connections[self.account].request_os_info, c.jid,
 | 
			
		||||
							c.resource)
 | 
			
		||||
						gobject.idle_add(gajim.connections[self.account].\
 | 
			
		||||
							request_entity_time, c.jid, c.resource)
 | 
			
		||||
					gajim.connections[self.account].request_last_status_time(c.jid,
 | 
			
		||||
						c.resource)
 | 
			
		||||
					self.os_info[i] = {'resource': c.resource, 'client': '',
 | 
			
		||||
						'os': ''}
 | 
			
		||||
					self.time_info[i] = {'resource': c.resource, 'time': ''}
 | 
			
		||||
					i += 1
 | 
			
		||||
 | 
			
		||||
		self.xml.get_widget('resource_prio_label').set_text(resources)
 | 
			
		||||
		resource_prio_label_eventbox = self.xml.get_widget(
 | 
			
		||||
			'resource_prio_label_eventbox')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue