commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue-contrib] r275 - in address: forms schema


From: reinhard
Subject: [gnue-contrib] r275 - in address: forms schema
Date: Tue, 15 May 2007 13:51:16 -0500 (CDT)

Author: reinhard
Date: 2007-05-15 13:51:16 -0500 (Tue, 15 May 2007)
New Revision: 275

Modified:
   address/forms/address.gfd
   address/schema/schema.gsd
Log:
Added search by phone number, immediately close window on return key if only
one record is in the search result.


Modified: address/forms/address.gfd
===================================================================
--- address/forms/address.gfd   2007-05-01 10:30:34 UTC (rev 274)
+++ address/forms/address.gfd   2007-05-15 18:51:16 UTC (rev 275)
@@ -54,7 +54,15 @@
       <field name="eZIP"         field="zip"        datatype="text"   
length="12"/>
       <field name="eVAT"         field="vatid"      datatype="text"   
length="16"/>
       <field name="eCRG"         field="compreg"    datatype="text"   
length="32"/>
-      <field name="ePhone"       field="phone"      datatype="text"   
length="64"/>
+      <field name="ePhone"       field="phone"      datatype="text"   
length="64">
+        <trigger type="POST-CHANGE">
+          if blk_company.ePhone.value is not None:
+              blk_company.ePhonex.value = ''.join([c for c in 
blk_company.ePhone.value if c in '0123456789'])
+          else:
+              blk_company.ePhonex.value = None
+        </trigger>
+      </field>
+      <field name="ePhonex"      field="phonex"     datatype="text"   
length="32"/>
       <field name="eFax"         field="fax"        datatype="text"   
length="32"/>
       <field name="eWeb"         field="web"        datatype="text"   
length="64"/>
       <field name="eMail"        field="email"      datatype="text"   
length="64"/>
@@ -80,8 +88,24 @@
       <field name="eSurname"    field="surname"    datatype="text" 
length="32"/>
       <field name="eDepartment" field="department" datatype="text" 
length="32"/>
       <field name="eDuty"       field="duty"       datatype="text" 
length="40"/>
-      <field name="ePhone1"     field="phone1"     datatype="text" 
length="40"/>
-      <field name="ePhone2"     field="phone2"     datatype="text" 
length="40"/>
+      <field name="ePhone1"     field="phone1"     datatype="text" length="40">
+        <trigger type="POST-CHANGE">
+          if blk_contact.ePhone1.value is not None:
+              blk_contact.ePhone1x.value = ''.join([c for c in 
blk_contact.ePhone1.value if c in '0123456789'])
+          else:
+              blk_contact.ePhone1x.value = None
+        </trigger>
+      </field>
+      <field name="ePhone2"     field="phone2"     datatype="text" length="40">
+        <trigger type="POST-CHANGE">
+          if blk_contact.ePhone2.value is not None:
+              blk_contact.ePhone2x.value = ''.join([c for c in 
blk_contact.ePhone2.value if c in '0123456789'])
+          else:
+              blk_contact.ePhone2x.value = None
+        </trigger>
+      </field>
+      <field name="ePhone1x"    field="phone1x"    datatype="text" 
length="32"/>
+      <field name="ePhone2x"    field="phone2x"    datatype="text" 
length="32"/>
       <field name="eFax"        field="fax"        datatype="text" 
length="40"/>
       <field name="eMail"       field="email"      datatype="text" 
length="64"/>
       <field name="eMemo"       field="memo"       datatype="text"/>
@@ -172,10 +196,12 @@
             </vbox>
           </hbox>
         </vbox>
-        <!-- separate hbox so the outer hbox doesn't leave space for label -->
-        <hbox>
-          <entry block="blk" field="company" label="Schnellaufruf:" 
style="listbox"/>
-        </hbox>
+        <vbox>
+          <hbox>
+            <entry block="blk" field="company" label="Schnellaufruf:" 
style="listbox"/>
+          </hbox>
+          <button action="act_search_phone" label="Telefonnummernsuche"/>
+        </vbox>
       </hbox>
     </page>
   </layout>
@@ -197,6 +223,14 @@
         blk_contact.search_record(id=params['prm_contact'])
   </action>
 
+  <action name="act_search_phone">
+    params = {}
+    activateDialog('dlg_search_phone', params, True)
+    if params.has_key('prm_company') and params['prm_company'] is not None:
+        blk_company.search_record(id=params['prm_company'])
+        blk_contact.search_record(id=params['prm_contact'])
+  </action>
+
   <action name="act_memo_company">
     params = {'prm_memo': blk_company.eMemo.value}
     activateDialog('dlg_memo', params, True)
@@ -293,7 +327,7 @@
         </field>
       </block>
 
-      <block name="blk_company" datasource="dts_company" startup="empty">
+      <block name="blk_company" datasource="dts_company" startup="empty" 
editable="N" deletable="N">
         <field name="id"        field="id"         datatype="number" 
length="8"/>
         <field name="matchcode" field="matchcode"  datatype="text"   
length="20"/>
         <field name="name1"     field="name1"      datatype="text"   
length="64"/>
@@ -312,12 +346,14 @@
 
           <grid block="blk_company" rows="20">
             <gridline>
-              <button label="Auswählen" action="act_select"/>
-              <entry  field="matchcode" label="Match"/>
-              <entry  field="name1"     label="Firma-1"/>
-              <entry  field="name2"     label="Firma-2"/>
-              <entry  field="street"    label="Straße"/>
-              <entry  field="city"      label="Ort"/>
+              <button label="Auswählen" action="act_select">
+                <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+              </button>
+              <entry  field="matchcode" label="Match"   navigable="N"/>
+              <entry  field="name1"     label="Firma-1" navigable="N"/>
+              <entry  field="name2"     label="Firma-2" navigable="N"/>
+              <entry  field="street"    label="Straße"  navigable="N"/>
+              <entry  field="city"      label="Ort"     navigable="N"/>
             </gridline>
           </grid>
         </vbox>
@@ -328,6 +364,7 @@
 
     <action name="act_initialize">
       blk.search.value = None
+      blk_company.clear()
       setFocus(blk.search)
     </action>
 
@@ -371,8 +408,18 @@
         blk_company.clear()
     </action>
 
+    <action name="act_button_focus">
+      # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+      # if blk_company.get_record_count() == 1 and 
blk_company.get_record_status() == 'clean':
+      if blk_company.getResultSet().getRecordCount() == 1 and 
blk_company.get_record_status() == 'clean':
+          act_select.run()
+    </action>
+
     <action name="act_select">
       prm_result.value = blk_company.id.value
+      # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+      # work for modal dialogs. So we reset the focus here before closing.
+      setFocus(blk.search)
       form.close()
     </action>
   </dialog>
@@ -404,7 +451,7 @@
         </field>
       </block>
 
-      <block name="blk_contact" datasource="dts_contact" startup="empty">
+      <block name="blk_contact" datasource="dts_contact" startup="empty" 
editable="N" deletable="N">
         <field name="id"        field="contact.id" datatype="number" 
length="8"/>
         <field name="company"   field="company"    datatype="number" 
length="8"/>
         <field name="surname"   field="surname"    datatype="text"   
length="32"/>
@@ -424,12 +471,14 @@
 
           <grid block="blk_contact" rows="20">
             <gridline>
-              <button label="Auswählen" action="act_select"/>
-              <entry  field="surname"   label="Nachname"/>
-              <entry  field="firstname" label="Vorname"/>
-              <entry  field="name1"     label="Firma-1"/>
-              <entry  field="name2"     label="Firma-2"/>
-              <entry  field="city"      label="Ort"/>
+              <button label="Auswählen" action="act_select">
+                <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+              </button>
+              <entry  field="surname"   label="Nachname" navigable="N"/>
+              <entry  field="firstname" label="Vorname"  navigable="N"/>
+              <entry  field="name1"     label="Firma-1"  navigable="N"/>
+              <entry  field="name2"     label="Firma-2"  navigable="N"/>
+              <entry  field="city"      label="Ort"      navigable="N"/>
             </gridline>
           </grid>
         </vbox>
@@ -440,6 +489,7 @@
 
     <action name="act_initialize">
       blk.search.value = None
+      blk_contact.clear()
       setFocus(blk.search)
     </action>
 
@@ -480,10 +530,121 @@
         blk_contact.clear()
     </action>
 
+    <action name="act_button_focus">
+      # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+      # if blk_contact.get_record_count() == 1 and 
blk_contact.get_record_status() == 'clean':
+      if blk_contact.getResultSet().getRecordCount() == 1 and 
blk_company.get_record_status() == 'clean':
+          act_select.run()
+    </action>
+
     <action name="act_select">
       prm_company.value = blk_contact.company.value
       prm_contact.value = blk_contact.id.value
+      # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+      # work for modal dialogs. So we reset the focus here before closing.
+      setFocus(blk.search)
       form.close()
     </action>
   </dialog>
+
+  <!-- ==================================================================== -->
+  <!-- Search by phone number                                               -->
+  <!-- ==================================================================== -->
+
+  <dialog name="dlg_search_phone" title="Suche nach Telefonnummer">
+    <parameter name="prm_company" datatype="number" length="8" scale="0"/>
+    <parameter name="prm_contact" datatype="number" length="8" scale="0"/>
+
+    <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+
+    <datasource name="dts_contact" connection="address"
+      table="contact left outer join company on contact.company = company.id"
+      primarykey="contact.id">
+      <sortorder>
+        <sortfield name="surname" descending="N" ignorecase="Y"/>
+      </sortorder>
+    </datasource>
+
+    <!-- ================================================================== -->
+
+    <logic>
+      <block name="blk">
+        <field name="search" datatype="text" length="64" case="upper">
+          <trigger type="POST-CHANGE">act_filter.run()</trigger>
+        </field>
+      </block>
+
+      <block name="blk_contact" datasource="dts_contact" startup="empty" 
editable="N" deletable="N">
+        <field name="id"        field="contact.id" datatype="number" 
length="8"/>
+        <field name="company"   field="company"    datatype="number" 
length="8"/>
+        <field name="surname"   field="surname"    datatype="text"   
length="16"/>
+        <field name="firstname" field="firstname"  datatype="text"   
length="16"/>
+        <field name="phone1"    field="phone1"     datatype="text"   
length="16"/>
+        <field name="phone2"    field="phone2"     datatype="text"   
length="16"/>
+        <field name="name1"     field="name1"      datatype="text"   
length="32"/>
+        <field name="phone"     field="phone"      datatype="text"   
length="16"/>
+      </block>
+    </logic>
+
+    <!-- ================================================================== -->
+
+    <layout>
+      <page name="pg">
+        <vbox>
+          <entry block="blk" field="search" label="Suchbegriff:"/>
+
+          <grid block="blk_contact" rows="20">
+            <gridline>
+              <button label="Auswählen" action="act_select">
+                <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+              </button>
+              <entry  field="surname"   label="Nachname"  navigable="N"/>
+              <entry  field="firstname" label="Vorname"   navigable="N"/>
+              <entry  field="phone1"    label="Telefon 1" navigable="N"/>
+              <entry  field="phone2"    label="Telefon 2" navigable="N"/>
+              <entry  field="name1"     label="Firma-1"   navigable="N"/>
+              <entry  field="phone"     label="Telefon"   navigable="N"/>
+            </gridline>
+          </grid>
+        </vbox>
+      </page>
+    </layout>
+
+    <!-- ================================================================== -->
+
+    <action name="act_initialize">
+      blk.search.value = None
+      blk_contact.clear()
+      setFocus(blk.search)
+    </action>
+
+    <action name="act_filter">
+      val = blk.search.value
+
+      if val is not None:
+          item = "%" + val + "%"
+          blk_contact.query(['or',
+                ['like', ['field', 'phone1x'], ['const', item]],
+                ['like', ['field', 'phone2x'], ['const', item]],
+                ['like', ['field', 'phonex'], ['const', item]]])
+      else:
+          blk_contact.clear()
+    </action>
+
+    <action name="act_button_focus">
+      # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+      # if blk_contact.get_record_count() == 1 and 
blk_contact.get_record_status() == 'clean':
+      if blk_contact.getResultSet().getRecordCount() == 1 and 
blk_contact.get_record_status() == 'clean':
+          act_select.run()
+    </action>
+
+    <action name="act_select">
+      prm_company.value = blk_contact.company.value
+      prm_contact.value = blk_contact.id.value
+      # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+      # work for modal dialogs. So we reset the focus here before closing.
+      setFocus(blk.search)
+      form.close()
+    </action>
+  </dialog>
 </form>

Modified: address/schema/schema.gsd
===================================================================
--- address/schema/schema.gsd   2007-05-01 10:30:34 UTC (rev 274)
+++ address/schema/schema.gsd   2007-05-15 18:51:16 UTC (rev 275)
@@ -15,6 +15,7 @@
         <field name="vatid"       type="string" length="16"/>
         <field name="compreg"     type="string" length="32"/>
         <field name="phone"       type="string" length="64"/>
+        <field name="phonex"      type="string" length="32"/>
         <field name="fax"         type="string" length="32"/>
         <field name="web"         type="string" length="64"/>
         <field name="email"       type="string" length="64"/>
@@ -50,6 +51,8 @@
         <field name="duty"       type="string" length="40"/>
         <field name="phone1"     type="string" length="40"/>
         <field name="phone2"     type="string" length="40"/>
+        <field name="phone1x"    type="string" length="32"/>
+        <field name="phone2x"    type="string" length="32"/>
         <field name="fax"        type="string" length="40"/>
         <field name="email"      type="string" length="64"/>
         <field name="memo"       type="string"/>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]