1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 __version__ = "$Revision: 1.21 $"
33
34 import wx
35
36 import keyword
37 import time
38 import images
39 import gmPlugin, gmShadow
40
41 import zlib, cPickle
42
43
44 scriptdata = {
45 1 : ("Adalat Oris", "30mg","1 mane","21/01/2002", "Hypertension","30 Rpt5","29/02/2000"),
46 2 : ("Nitrolingual Spray","", "1 spray when needed","24/08/2001", "Angina","1 Rpt2","01/06/2001"),
47 3 : ("Losec", "20mg","1 mane", "21/01/2002","Reflux Oesophagitis","30 Rpt5","16/11/2001"),
48 4 : ("Zoloft", "50mg","1 mane", "24/04/2002","Depression","30 Rpt0","24/04/2002"),
49 }
50
51
53 """ sets tooltips for notebook tab images """
54
55 tip_shown=0
57 wxNotebook.__init__(self,parent,id)
58
59
60 self.tip_area1=wxRect(2,2,30,30)
61 self.tip_area2=wxRect(32,2,31,30)
62 self.tip_area3=wxRect(63,2,31,30)
63 self.tip_area4=wxRect(94,2,31,30)
64 self.tip_area5=wxRect(125,2,31,30)
65 self.tip_area6=wxRect(156,2,31,30)
66
67 EVT_MOTION(self, self.OnMouseMotion)
68 EVT_LEFT_DOWN(self, self.OnLeftDown)
69
71 pt_local = self.GetPosition()
72
73 pt_global = self.ClientToScreen(pt_local)
74
75
76 x, y = evt.GetPosition()
77 if(self.tip_area1.Inside(wxPoint(x,y))):
78 if(self.tip_shown!=1):
79 tipwin1=wxTipWindow(self, _('Prescriptions'))
80 tipwin1.SetBoundingRect(wxRect(1+pt_global.x,1+pt_global.y,30,30))
81 pt=wxPoint((1+pt_global.x+4+5), (1+pt_global.y+32+4))
82 tipwin1.Move(pt)
83 self.tip_shown=1
84
85 elif(self.tip_area2.Inside(wxPoint(x,y))):
86 if(self.tip_shown!=2):
87 tipwin2=wxTipWindow(self, _('Requests'))
88 tipwin2.SetBoundingRect(wxRect(32+pt_global.x,1+pt_global.y,31,30))
89 pt=wxPoint((32+pt_global.x+4+5), (1+pt_global.y+32+4))
90 tipwin2.Move(pt)
91 self.tip_shown=2
92
93 elif(self.tip_area3.Inside(wxPoint(x,y))):
94 if(self.tip_shown!=3):
95 tipwin3=wxTipWindow(self, _('Measurements'))
96 tipwin3.SetBoundingRect(wxRect(63+pt_global.x,1+pt_global.y,31,30))
97 pt=wxPoint((63+pt_global.x+4+5), (1+pt_global.y+32+4))
98 tipwin3.Move(pt)
99 self.tip_shown=3
100
101 elif(self.tip_area4.Inside(wxPoint(x,y))):
102 if(self.tip_shown!=4):
103 tipwin4=wxTipWindow(self, _('Referrals'))
104 tipwin4.SetBoundingRect(wxRect(94+pt_global.x,1+pt_global.y,31,30))
105 pt=wxPoint((94+pt_global.x+4+5), (1+pt_global.y+32+4))
106 tipwin4.Move(pt)
107 self.tip_shown=4
108
109 elif(self.tip_area5.Inside(wxPoint(x,y))):
110 if(self.tip_shown!=5):
111 tipwin5=wxTipWindow(self, _('Recalls and Reviews'))
112 tipwin5.SetBoundingRect(wxRect(125+pt_global.x,1+pt_global.y,31,30))
113 pt=wxPoint((125+pt_global.x+4+5), (1+pt_global.y+32+4))
114 tipwin5.Move(pt)
115 self.tip_shown=5
116
117 elif(self.tip_area6.Inside(wxPoint(x,y))):
118 if(self.tip_shown!=6):
119 tipwin6=wxTipWindow(self, _('Inbox'))
120 tipwin6.SetBoundingRect(wxRect(156+pt_global.x,1+pt_global.y,31,30))
121 pt=wxPoint((156+pt_global.x+4+5), (1+pt_global.y+32+4))
122 tipwin6.Move(pt)
123 self.tip_shown=6
124 else:
125 self.tip_shown=0
126
128 pass
129
130
132 """ a panel to hold the tabbed list """
133 __icons_script = {"""icon_Rx_symbol""": 'x\xda\xd3\xc8)0\xe4\nV74S\x00"c\x05Cu\xae\xc4`u=\x85d\x05e\x03 p\xb3\x00\
134 \xf3#@|\x0b\x03\x10\x04\xf3\x15\x80|\xbf\xfc\xbcT(\x07\x15\xe0\x15\xd4\x83\
135 \x00t\xc1\x08 \x80\x8a"\t\xc2I\xb2\x04\xc1 "\x82R\x8b\x80\x08UP\x01b,\xdc\
136 \x9b\x10+\x14\xc0\xa6\xa2\xf9\x1d\xa8\x0eI;\x02DD\xe0\x0c%=\x00D|Hk'}
137
138 __icons_requests = {"""icon_blood_sample""": "x\xdau\x8f\xbd\n\xc3 \x10\x80\xf7<\xc5A\x94\x14\x04Qh\x89c0\xe0\x98\x1b\xb2\
139 \xb8\x96\xd2\xad\xf4\xfa\xfeS\x8d?\xe0\x05r\xdb\xf7\xdd\xff\xed\xf3\xb3\xc3>\
140 \xd9;\xd8\x07X\x03v\x1a\x9e\xfb$\xe1\x05cp&Ef<\xd8;\xbfz\x97y<xv\xf3Z\xf3K\
141 \xa9\x0f\x8d!\xf1F\xdfw\x06\xdd\x86\x85\xd2\x1cK\xb31sa\xd5\x9ak^\xb4|\x1dFm\
142 Y\xad\x07\x16'\xa5\xf5YE\x9d\x1cS\x84xR\x84JE\xa6R\r\x12\x1bO\xb8(b\x1b\x93\
143 \xc1\x91\x1dABJ\xc1\xee\xeaLU\xbd\xa9\xaa7M\tq\xf9\xe3\xb5\xd2\x7fZ\x8fVi"}
144
145 __icons_measurements = {"""icon_Set_Square""": 'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`\xf5|\x85d\x05\xa7\x9c\xc4\
146 \xe4l0O\x0f\xc8S6\xb70w60\x00\xf3#@|7\x0b7\x18_\x01\xc8\xf7\xcb\xcfK\x05s\
147 \xfca\x8a\xcd-\xa0\x92\n\nz\x11\x11z\nP\x80,\x98\x8fEP/\x9f\xb0\xca|4\x00qe\
148 \x04*\x84\n\xa2\x02\xdc\x82\xfe@\x90\xaf\xa7\x97\xef\x0f\x05\xd4p\'\xf5U\xea\
149 \x01\x00\xd2 _\x1b'}
150
151 __icons_referrals = {"""icon_writing_pen""": "x\xda\x8d\x901\x0b\xc3 \x10F\xf7\xfc\n\xa1\x83\x85\xc0\x87Y\xa2\xb3B\xc6:d\
152 \xb95\x84N\r\xb5\xff\x7f\xaa9-\xd4K\xa1\x11\x11\xde\xbb\xe7\xa0\xd7\xed5t\
153 \xb3\x1eF\x95w>t\xb7\xcc\x1ajU~[\xd6\x07S\x9f\xe9\xe2\x9d\x0f\xde1\xc7\x9d'7\
154 \x05c\x98U\xe6[z\xde\x19\xd2>\xb4\xce\x98:\xa4\xc26XW\xe3v\x9d\x93\x00\x0e\
155 \x92\x90\x12\xa4D\x04HHB\xa4\xc3u\xc4\x1e$d\t\x85,a+k\xd8\xca\x1aJ\xc9\xa1\
156 \x90\x80\xfa!\xbf\xde\x8e\xcf\xfa\xf3Kx\x03\x0b\xf8P\xa7"
157
158 , """icon_outgoing_letter""": "x\xda]\xcd;\x0e\x830\x10\x04\xd0\x9eSXJ\xe1T+\\$r\x9dH.\xe3\x82f[\x84R\x05e\
159 r\xff*\xbb\xb6\xf1\x87\x11B\xccc\x0c\xd7\xfd\xe7\xa6\xc5\xba\xbb\x91\xebf\
160 \x9c\x9d\xd6\xc5\xc2l\xe6\xb1\xaf\xdb'5\x92v\xf1\xb3&u#\xfd\x85\xef;\x15\xd6\
161 \x97\xc1\x87g\xf0\xa9G\xed\xf3\\\xbb\xc9!.\x0f\x1d\x12\x1d\xda\x90\xa8jE\xa2\
162 \xa6m\t!\x9c\x96`\xddaX\x82\x13f-(\x96Q\x94\x0b\x02\xb1`\x04*\xb2*\xabq\x87\
163 \x8c\x1c\x1e1-G\xcc6\x1eG\x8c\xf2Q\xb9\xf5?\xeas \x0fQ\xa4?:Rj{"}
164
165 __icons_recalls = {"""icon_talking_head""": 'x\xda\x8d\x8f1\x0b\xc3 \x10\x85\xf7\xfc\x8a\x83\x0e\x16\x041K\xe3\xac\xe0\
166 \xd8\x0cYn\r\xa1SC\xed\xff\x9fzw\x1a\x8b\xa6C\x1f"\xbc\xef\xde\xdd\xe9u\x7f\
167 \x8f\xc3\xa2\xc6\x1b\xd0\xa1K\r\xeb\xa2\x006\xf0\xfb\xba=\xc5%r\x17\xef|\xf0\
168 N\xbcf?\xb9)X+~foI1\xd7\r\xf9{z=\xc4 \x17\xa3\x8b\xa1\x14\xe1\x90\xc9ja\xc1=\
169 \x84\xbf b:Ad\xd8\xcd$\x86\xd0mg\x04-\xe4\x18\xcem;\x16\xfd\x86\t\xfa\xf6\
170 \xfc"\xad\xeb\xa2\xda\xad\xcfI\x8a\xd5$Oc\x81\x04\xbf\x8b\x8e\x8fS\x90\xa1\
171 \xf9\x00[x_\x8e'}
172
173 __icons_inbox = {"""icon_inbox""": "x\xda\x85\xd01\x0e\xc20\x0c\x05\xd0\xbd\xa7\x88\xc4\x10&+\x19\x80\xcc e\xac\
174 \x87.^\xab\x8a\x89\ns\xff\t\xc7Nh2\xf1UU\xfdOv#\xe5\xbc\x7f\xe2\xb4\xf8xu\
175 \xf2\\\\\xf4\xd3\xbaxv\x9b\xbb\xef\xeb\xf6\xd2\xe6\xa4\xcd\xfc~jA)\xa7\x10\
176 \xf2#'\xedTzN\xbf\x0e\xa5\xdfR\x90\xd4\xe5\x12\x00 \xfb\xfa\x83,\xc84\"S\x99\
177 4m\xc8\xa4hZQ\xe7\xa0\xcd\x1a\xca\x9c)\x11\x8aVd\xac\xeb\xc8\x07\x92\xaa\xce\
178 uHl\xa1\x11\xa9dD\xb3q\x9d\x11\xe5\xa7\xf2\xea\x0f\xea\xd3\x90\x86\xf4\xb7tD\
179 \x10\xbe\xb8\xbej\xdf"}
180
182 wxPanel.__init__(self, parent, id)
183 self.SetAutoLayout(True)
184 sizer = wxBoxSizer(wxHORIZONTAL)
185 self.SetBackgroundColour(wxColour(222,222,222))
186
187
188
189
190 self.ListsImageList= wxImageList(16,16)
191 self.small_arrow_up = self.ListsImageList.Add(images.getSmallUpArrowBitmap())
192 self.small_arrow_down = self.ListsImageList.Add(images.getSmallDnArrowBitmap())
193
194
195
196
197
198 self.notebook1 = Notebook(self, -1)
199
200
201
202 tabimage_Script = tabimage_Requests = tabimage_Requests = tabimage_Requests = tabimage_Requests = tabimage_Requests = -1
203 self.notebook1.il = wxImageList(16, 16)
204 tabimage_Script = self.notebook1.il.Add(self.getBitmap(self.__icons_script[_("""icon_Rx_symbol""")]))
205 tabimage_Requests = self.notebook1.il.Add( self.getBitmap(self.__icons_requests[_("""icon_blood_sample""")]))
206 tabimage_Measurements = self.notebook1.il.Add( self.getBitmap(self.__icons_measurements[_("""icon_Set_Square""")]))
207 tabimage_Referrals = self.notebook1.il.Add( self.getBitmap(self.__icons_referrals[_("""icon_writing_pen""")]))
208 tabimage_Recalls = self.notebook1.il.Add(self.getBitmap(self.__icons_recalls[_("""icon_talking_head""")]))
209 tabimage_Inbox = self.notebook1.il.Add(self.getBitmap(self.__icons_inbox[_("""icon_inbox""")]))
210 self.notebook1.SetImageList(self.notebook1.il)
211 szr_notebook = wxNotebookSizer(self.notebook1)
212
213
214
215 szr_script_page= wxBoxSizer(wxVERTICAL)
216 ListScript_ID = wxNewId()
217 self.List_Script = wxListCtrl(self.notebook1, ListScript_ID, wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxSUNKEN_BORDER)
218 szr_script_page.Add(self.List_Script,100,wxEXPAND)
219 self.List_Script.SetForegroundColour(wxColor(131,129,131))
220 self.List_Requests = wxListCtrl(self.notebook1, -1, wxDefaultPosition, wxDefaultSize,wxSUNKEN_BORDER)
221 self.List_Measurements = wxListCtrl(self.notebook1, -1, wxDefaultPosition, wxDefaultSize,wxSUNKEN_BORDER)
222 self.List_Referrals = wxListCtrl(self.notebook1, -1, wxDefaultPosition, wxDefaultSize,wxSUNKEN_BORDER)
223 self.List_Recalls = wxListCtrl(self.notebook1, -1, wxDefaultPosition, wxDefaultSize,wxSUNKEN_BORDER)
224 self.List_Inbox = wxListCtrl(self.notebook1, -1, wxDefaultPosition, wxDefaultSize,wxSUNKEN_BORDER)
225
226 self.notebook1.AddPage(self.List_Script, '', True, tabimage_Script)
227
228 self.notebook1.AddPage(self.List_Requests, '', True, tabimage_Requests)
229 self.notebook1.AddPage(self.List_Measurements, '', True, tabimage_Measurements)
230 self.notebook1.AddPage(self.List_Referrals, '', True, tabimage_Referrals)
231 self.notebook1.AddPage(self.List_Recalls, '', True, tabimage_Recalls)
232 self.notebook1.AddPage(self.List_Inbox, '', True, tabimage_Inbox)
233 self.notebook1.SetSelection(0)
234
235
236
237 self.List_Script.SetImageList(self.ListsImageList, wxIMAGE_LIST_SMALL)
238
239
240
241 info = wxListItem()
242 info.Mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE | wxLIST_MASK_FORMAT
243 info.Image = -1
244 info.Align = 0
245 info.Text = _("Drug")
246 self.List_Script.InsertColumnInfo(0, info)
247
248
249 info.Align = wxLIST_FORMAT_LEFT
250 info.Text = _("Dose")
251 self.List_Script.InsertColumnInfo(1, info)
252
253 info.Align = wxLIST_FORMAT_RIGHT
254 info.Text = _("Instructions")
255 self.List_Script.InsertColumnInfo(2, info)
256
257 info.Align = wxLIST_FORMAT_RIGHT
258 info.Text = _("Last Date")
259 self.List_Script.InsertColumnInfo(3, info)
260
261 info.Align = wxLIST_FORMAT_RIGHT
262 info.Text = _("Prescribed For")
263 self.List_Script.InsertColumnInfo(4, info)
264
265
266 info.Align = wxLIST_FORMAT_RIGHT
267 info.Text = _("Quantity")
268 self.List_Script.InsertColumnInfo(5, info)
269
270
271 info.Align = 0
272 info.Text = _("First Date")
273 self.List_Script.InsertColumnInfo(6, info)
274
275
276
277
278
279 items = scriptdata.items()
280 for x in range(len(items)):
281 key, data = items[x]
282
283 gmLog.gmDefLog.Log (gmLog.lData, items[x])
284
285
286 self.List_Script.InsertItem(x, data[0])
287 self.List_Script.SetItem(x, 1, data[1])
288 self.List_Script.SetItem(x, 2, data[2])
289 self.List_Script.SetItem(x, 3, data[3])
290 self.List_Script.SetItem(x, 4, data[4])
291 self.List_Script.SetItem(x, 5, data[5])
292 self.List_Script.SetItem(x, 6, data[6])
293 self.List_Script.SetItemData(x, key)
294
295
296
297
298 self.itemDataMap = scriptdata
299
300
301 self.List_Script.SetColumnWidth(0, wxLIST_AUTOSIZE)
302 self.List_Script.SetColumnWidth(1, wxLIST_AUTOSIZE)
303 self.List_Script.SetColumnWidth(2, wxLIST_AUTOSIZE)
304 self.List_Script.SetColumnWidth(3, wxLIST_AUTOSIZE)
305 self.List_Script.SetColumnWidth(4, wxLIST_AUTOSIZE)
306 self.List_Script.SetColumnWidth(5, wxLIST_AUTOSIZE)
307 self.List_Script.SetColumnWidth(6, 150)
308 sizer.AddSizer(szr_notebook,40,wxEXPAND)
309 self.SetSizer(sizer)
310 sizer.Fit(self)
311 self.SetAutoLayout(True)
312 self.Show(True)
313
315
316 return wxBitmapFromXPMData(cPickle.loads(zlib.decompress( __icon )))
317
318
320 """
321 Plugin to encapsulate the tabbed lists
322 """
324 return 'TabbedListsPlugin'
325
327 self.mwm = self.gb['clinical.manager']
328 self.mwm.RegisterRightSide ('tabbed_lists', TabbedLists
329 (self.mwm.righthalfpanel, -1), position=1)
330
332 self.mwm.Unregister ('tabbed_lists')
333
334 if __name__ == "__main__":
335 app = wxPyWidgetTester(size = (400, 300))
336 app.SetWidget(TabbedLists, -1)
337 app.MainLoop()
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393