| Home | Trees | Indices | Help |
|
|---|
|
|
1 """Widgets dealing with address/contact information."""
2 #============================================================
3 __author__ = "R.Terry, SJ Tan, I Haywood, Carlos Moro <cfmoro1976@yahoo.es>"
4 __license__ = 'GPL v2 or later (details at http://www.gnu.org)'
5
6 # standard library
7 import sys, logging
8
9
10 import wx
11
12
13 # GNUmed specific
14 if __name__ == '__main__':
15 sys.path.insert(0, '../../')
16 from Gnumed.pycommon import gmTools
17 from Gnumed.wxpython import gmGuiHelpers
18 from Gnumed.wxpython import gmListWidgets
19 from Gnumed.wxpython import gmEditArea
20 from Gnumed.wxpython import gmAddressWidgets
21
22
23 # constant defs
24 _log = logging.getLogger('gm.ui')
25
26
27 try:
28 _('dummy-no-need-to-translate-but-make-epydoc-happy')
29 except NameError:
30 _ = lambda x:x
31
32 #============================================================
38 #--------------------------
39 addresses = person.get_addresses()
40 if len(addresses) == 0:
41 return None
42
43 msg = _(
44 'There is no [%s] address registered with this patient.\n\n'
45 'Please select the address you would like to use instead:'
46 ) % missing
47 choices = [
48 [
49 a['l10n_address_type'],
50 u'%s %s%s, %s %s, %s' % (
51 a['street'],
52 a['number'],
53 gmTools.coalesce(a['subunit'], u'', u'/%s'),
54 a['postcode'],
55 a['urb'],
56 a['l10n_country']
57 )
58 ]
59 for a in addresses ]
60
61 return gmListWidgets.get_choices_from_list (
62 msg = msg,
63 caption = _('Selecting address by type'),
64 columns = [_('Type'), _('Address')],
65 choices = choices,
66 data = addresses,
67 single_selection = True,
68 list_tooltip_callback = calculate_tooltip
69 )
70 #============================================================
72 """A list for managing a person's addresses.
73
74 Does NOT act on/listen to the current patient.
75 """
77
78 try:
79 self.__identity = kwargs['identity']
80 del kwargs['identity']
81 except KeyError:
82 self.__identity = None
83
84 gmListWidgets.cGenericListManagerPnl.__init__(self, *args, **kwargs)
85
86 self.new_callback = self._add_address
87 self.edit_callback = self._edit_address
88 self.delete_callback = self._del_address
89 self.refresh_callback = self.refresh
90
91 self.__init_ui()
92 self.refresh()
93 #--------------------------------------------------------
94 # external API
95 #--------------------------------------------------------
97 if self.__identity is None:
98 self._LCTRL_items.set_string_items()
99 return
100
101 adrs = self.__identity.get_addresses()
102 self._LCTRL_items.set_string_items (
103 items = [ [
104 a['l10n_address_type'],
105 a['street'],
106 gmTools.coalesce(a['notes_street'], u''),
107 a['number'],
108 gmTools.coalesce(a['subunit'], u''),
109 a['postcode'],
110 a['urb'],
111 gmTools.coalesce(a['suburb'], u''),
112 a['l10n_state'],
113 a['l10n_country'],
114 gmTools.coalesce(a['notes_subunit'], u'')
115 ] for a in adrs
116 ]
117 )
118 self._LCTRL_items.set_column_widths()
119 self._LCTRL_items.set_data(data = adrs)
120 #--------------------------------------------------------
121 # internal helpers
122 #--------------------------------------------------------
124 self.__static_tooltip_part = _('List of addresses related to this person.')
125 self._LCTRL_items.item_tooltip_callback = self._calculate_tooltip
126 self._LCTRL_items.set_columns(columns = [
127 _('Type'),
128 _('Street'),
129 _('Street info'),
130 _('Number'),
131 _('Subunit'),
132 _('Postal code'),
133 _('Community'),
134 _('Suburb'),
135 _('Region'),
136 _('Country'),
137 _('Comment')
138 ])
139 #--------------------------------------------------------
141 ea = gmAddressWidgets.cAddressEAPnl(self, -1)
142 ea.address_holder = self.__identity
143 dlg = gmEditArea.cGenericEditAreaDlg2(self, -1, edit_area = ea)
144 dlg.SetTitle(_('Adding new address'))
145 if dlg.ShowModal() == wx.ID_OK:
146 return True
147 return False
148 #--------------------------------------------------------
150 ea = gmAddressWidgets.cAddressEAPnl(self, -1, address = address)
151 ea.address_holder = self.__identity
152 dlg = gmEditArea.cGenericEditAreaDlg2(self, -1, edit_area = ea)
153 dlg.SetTitle(_('Editing address'))
154 if dlg.ShowModal() == wx.ID_OK:
155 # did we add an entirely new address ?
156 # if so then unlink the old one as implied by "edit"
157 if ea.address['pk_address'] != address['pk_address']:
158 self.__identity.unlink_address(address = address)
159 return True
160 return False
161 #--------------------------------------------------------
163 go_ahead = gmGuiHelpers.gm_show_question (
164 _( 'Are you sure you want to remove this\n'
165 "address from the patient's addresses ?\n"
166 '\n'
167 'The address itself will not be deleted\n'
168 'but it will no longer be associated with\n'
169 'this patient.'
170 ),
171 _('Removing address')
172 )
173 if not go_ahead:
174 return False
175 self.__identity.unlink_address(address = address)
176 return True
177 #--------------------------------------------------------
179 tt = u'\n'.join(address.format())
180 tt += u'\n'
181 tt += u'%s\n' % (gmTools.u_box_horiz_single * 40)
182 tt += self.__static_tooltip_part
183 return tt
184 #--------------------------------------------------------
185 # properties
186 #--------------------------------------------------------
189
193
194 identity = property(_get_identity, _set_identity)
195
196 #------------------------------------------------------------
197 from Gnumed.wxGladeWidgets import wxgPersonContactsManagerPnl
198
200 """A panel for editing contact data for a person.
201
202 - provides access to:
203 - addresses
204 - communication paths
205
206 Does NOT act on/listen to the current patient.
207 """
209
210 wxgPersonContactsManagerPnl.wxgPersonContactsManagerPnl.__init__(self, *args, **kwargs)
211
212 self.__identity = None
213 self.refresh()
214 #--------------------------------------------------------
215 # external API
216 #--------------------------------------------------------
218 self._PNL_addresses.identity = self.__identity
219 self._PNL_comms.channel_owner = self.__identity
220 #--------------------------------------------------------
221 # properties
222 #--------------------------------------------------------
225
229
230 identity = property(_get_identity, _set_identity)
231
232 #============================================================
233 if __name__ == "__main__":
234
235 if len(sys.argv) < 2:
236 sys.exit()
237
238 if sys.argv[1] != 'test':
239 sys.exit()
240
241 from Gnumed.pycommon import gmI18N, gmPG2
242
243 gmI18N.activate_locale()
244 gmI18N.install_domain(domain='gnumed')
245 gmPG2.get_connection()
246
247 #--------------------------------------------------------
249 app = wx.PyWidgetTester(size = (600, 400))
250 widget = cPersonAddressesManagerPnl(app.frame, -1)
251 widget.identity = activate_patient()
252 app.frame.Show(True)
253 app.MainLoop()
254 #--------------------------------------------------------
256 app = wx.PyWidgetTester(size = (600, 400))
257 widget = cPersonContactsManagerPnl(app.frame, -1)
258 widget.identity = activate_patient()
259 app.frame.Show(True)
260 app.MainLoop()
261 #--------------------------------------------------------
262 #test_pat_contacts_pnl()
263 #test_person_adrs_pnl()
264
265 #============================================================
266
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Sat Oct 5 03:56:59 2013 | http://epydoc.sourceforge.net |