Home | Trees | Indices | Help |
|
---|
|
1 """GNUmed form/letter handling widgets.""" 2 3 #================================================================ 4 __author__ = "Karsten Hilbert <Karsten.Hilbert@gmx.net>" 5 __license__ = "GPL v2 or later" 6 7 8 import os.path 9 import sys 10 import logging 11 import shutil 12 13 14 import wx 15 16 17 if __name__ == '__main__': 18 sys.path.insert(0, '../../') 19 from Gnumed.pycommon import gmI18N 20 from Gnumed.pycommon import gmTools 21 from Gnumed.pycommon import gmDispatcher 22 from Gnumed.pycommon import gmPrinting 23 from Gnumed.pycommon import gmDateTime 24 from Gnumed.pycommon import gmShellAPI 25 from Gnumed.pycommon import gmMimeLib 26 27 from Gnumed.business import gmForms 28 from Gnumed.business import gmPerson 29 30 from Gnumed.wxpython import gmGuiHelpers 31 from Gnumed.wxpython import gmListWidgets 32 from Gnumed.wxpython import gmMacro 33 from Gnumed.wxpython.gmDocumentWidgets import save_files_as_new_document 34 35 36 _log = logging.getLogger('gm.ui') 37 38 _ID_FORM_DISPOSAL_PRINT_NOW, \ 39 _ID_FORM_DISPOSAL_MAIL_NOW, \ 40 _ID_FORM_DISPOSAL_FAX_NOW, \ 41 _ID_FORM_DISPOSAL_TRAY_NOW, \ 42 _ID_FORM_DISPOSAL_ARCHIVE_NOW, \ 43 _ID_FORM_DISPOSAL_SAVE_NOW = range(6) 44 45 #============================================================ 46 # convenience functions 47 #============================================================49 50 form = generate_form_from_template ( 51 parent = parent, 52 excluded_template_types = [ 53 u'gnuplot script', 54 u'visual progress note', 55 u'invoice' 56 ], 57 edit = True 58 ) 59 if form is None: 60 return False 61 62 if form.template['engine'] == u'O': 63 return True 64 65 return act_on_generated_forms ( 66 parent = parent, 67 forms = [form], 68 jobtype = jobtype, 69 episode_name = u'administration', 70 review_copy_as_normal = True 71 )72 73 #------------------------------------------------------------ 74 # eventually this should become superfluous when there's a 75 # standard engine wrapper around OOo77 78 # export template to file 79 filename = template.export_to_file() 80 if filename is None: 81 gmGuiHelpers.gm_show_error ( 82 _( 'Error exporting form template\n' 83 '\n' 84 ' "%s" (%s)' 85 ) % (template['name_long'], template['external_version']), 86 _('Letter template export') 87 ) 88 return False 89 90 try: 91 doc = gmForms.cOOoLetter(template_file = filename, instance_type = template['instance_type']) 92 except ImportError: 93 gmGuiHelpers.gm_show_error ( 94 _('Cannot connect to OpenOffice.\n\n' 95 'The UNO bridge module for Python\n' 96 'is not installed.' 97 ), 98 _('Letter writer') 99 ) 100 return False 101 102 if not doc.open_in_ooo(): 103 gmGuiHelpers.gm_show_error ( 104 _('Cannot connect to OpenOffice.\n' 105 '\n' 106 'You may want to increase the option\n' 107 '\n' 108 ' <%s>' 109 ) % _('OOo startup time'), 110 _('Letter writer') 111 ) 112 try: os.remove(filename) 113 except: pass 114 return False 115 116 doc.show(False) 117 ph_handler = gmMacro.gmPlaceholderHandler() 118 doc.replace_placeholders(handler = ph_handler) 119 120 filename = filename.replace('.ott', '.odt').replace('-FormTemplate-', '-FormInstance-') 121 doc.save_in_ooo(filename = filename) 122 123 doc.show(True) 124 125 return True126 #------------------------------------------------------------127 -def manage_form_templates(parent=None, template_types=None, active_only=False, excluded_types=None, msg=None):128 129 if parent is None: 130 parent = wx.GetApp().GetTopWindow() 131 132 #------------------------- 133 def edit(template=None): 134 dlg = cFormTemplateEditAreaDlg(parent, -1, template=template) 135 return (dlg.ShowModal() == wx.ID_OK)136 #------------------------- 137 def delete(template): 138 delete = gmGuiHelpers.gm_show_question ( 139 aTitle = _('Deleting form template.'), 140 aMessage = _( 141 'Are you sure you want to delete\n' 142 'the following form template ?\n\n' 143 ' "%s (%s)"\n\n' 144 'You can only delete templates which\n' 145 'have not yet been used to generate\n' 146 'any forms from.' 147 ) % (template['name_long'], template['external_version']) 148 ) 149 if delete: 150 # FIXME: make this a priviledged operation ? 151 gmForms.delete_form_template(template = template) 152 return True 153 return False 154 #------------------------- 155 def refresh(lctrl): 156 templates = gmForms.get_form_templates(active_only = active_only, template_types = template_types, excluded_types = excluded_types) 157 lctrl.set_string_items(items = [ [t['name_long'], t['external_version'], gmForms.form_engine_names[t['engine']]] for t in templates ]) 158 lctrl.set_data(data = templates) 159 #------------------------- 160 template = gmListWidgets.get_choices_from_list ( 161 parent = parent, 162 msg = msg, 163 caption = _('Select letter or form template.'), 164 columns = [_('Template'), _('Version'), _('Type')], 165 edit_callback = edit, 166 new_callback = edit, 167 delete_callback = delete, 168 refresh_callback = refresh, 169 single_selection = True 170 ) 171 172 return template 173 174 #------------------------------------------------------------175 -def generate_form_from_template(parent=None, template_types=None, edit=None, template=None, excluded_template_types=None):176 """If <edit> is None it will honor the template setting.""" 177 178 if parent is None: 179 parent = wx.GetApp().GetTopWindow() 180 181 # 1) get template to use 182 if template is None: 183 template = manage_form_templates ( 184 parent = parent, 185 active_only = True, 186 template_types = template_types, 187 excluded_types = excluded_template_types 188 ) 189 if template is None: 190 gmDispatcher.send(signal = 'statustext', msg = _('No document template selected.'), beep = False) 191 return None 192 193 if template['engine'] == u'O': 194 return print_doc_from_ooo_template(template = template) 195 196 wx.BeginBusyCursor() 197 198 # 2) process template 199 try: 200 form = template.instantiate() 201 except KeyError: 202 _log.exception('cannot instantiate document template [%s]', template) 203 gmGuiHelpers.gm_show_error ( 204 aMessage = _('Invalid document template [%s - %s (%s)]') % (name, ver, template['engine']), 205 aTitle = _('Generating document from template') 206 ) 207 wx.EndBusyCursor() 208 return None 209 ph = gmMacro.gmPlaceholderHandler() 210 #ph.debug = True 211 form.substitute_placeholders(data_source = ph) 212 if edit is None: 213 if form.template['edit_after_substitution']: 214 edit = True 215 else: 216 edit = False 217 if edit: 218 wx.EndBusyCursor() 219 form.edit() 220 wx.BeginBusyCursor() 221 222 # 3) generate output 223 pdf_name = form.generate_output() 224 wx.EndBusyCursor() 225 if pdf_name is not None: 226 return form 227 228 gmGuiHelpers.gm_show_error ( 229 aMessage = _('Error generating document printout.'), 230 aTitle = _('Generating document printout') 231 ) 232 return None233 234 #------------------------------------------------------------235 -def act_on_generated_forms(parent=None, forms=None, jobtype=None, episode_name=None, progress_note=None, review_copy_as_normal=False):236 """This function assumes that .generate_output() has already been called on each form.""" 237 238 if len(forms) == 0: 239 return True 240 241 no_of_printables = 0 242 for form in forms: 243 no_of_printables += len(form.final_output_filenames) 244 245 if no_of_printables == 0: 246 return True 247 248 soap_lines = [] 249 250 #----------------------------- 251 def save_soap(soap=None): 252 if soap.strip() == u'': 253 return 254 pat = gmPerson.gmCurrentPatient() 255 emr = pat.get_emr() 256 epi = emr.add_episode(episode_name = episode_name, is_open = False) 257 emr.add_clin_narrative ( 258 soap_cat = None, 259 note = soap, 260 episode = epi 261 )262 #----------------------------- 263 def archive_forms(episode_name=None): 264 if episode_name is None: 265 epi = None # will ask for episode further down 266 else: 267 pat = gmPerson.gmCurrentPatient() 268 emr = pat.get_emr() 269 epi = emr.add_episode(episode_name = episode_name, is_open = False) 270 271 for form in forms: 272 files2import = [] 273 files2import.extend(form.final_output_filenames) 274 files2import.extend(form.re_editable_filenames) 275 if len(files2import) == 0: 276 continue 277 save_files_as_new_document ( 278 parent = parent, 279 filenames = files2import, 280 document_type = form.template['instance_type'], 281 unlock_patient = False, 282 episode = epi, 283 review_as_normal = review_copy_as_normal, 284 reference = None 285 ) 286 287 return True 288 #----------------------------- 289 def save_forms(): 290 # anything to do ? 291 files2save = [] 292 form_names = [] 293 for form in forms: 294 files2save.extend(form.final_output_filenames) 295 form_names.append(u'%s (%s)' % (form.template['name_long'], form.template['external_version'])) 296 if len(files2save) == 0: 297 return True 298 # get path 299 path = os.path.expanduser(os.path.join('~', 'gnumed')) 300 dlg = wx.DirDialog ( 301 parent = parent, 302 message = _('Select directory in which to create patient directory ...'), 303 defaultPath = path, 304 style = wx.DD_DEFAULT_STYLE 305 ) 306 result = dlg.ShowModal() 307 path = dlg.GetPath() 308 dlg.Destroy() 309 if result != wx.ID_OK: 310 return 311 # save forms 312 pat = gmPerson.gmCurrentPatient() 313 path = os.path.join(path, pat.dirname) 314 gmTools.mkdir(path) 315 _log.debug('form saving path: %s', path) 316 for form in forms: 317 for filename in form.final_output_filenames: 318 shutil.copy2(filename, path) 319 soap_lines.append(_('Saved to disk: %s') % u', '.join(form_names)) 320 return True 321 #----------------------------- 322 def print_forms(): 323 # anything to do ? 324 files2print = [] 325 form_names = [] 326 for form in forms: 327 files2print.extend(form.final_output_filenames) 328 form_names.append(u'%s (%s)' % (form.template['name_long'], form.template['external_version'])) 329 if len(files2print) == 0: 330 return True 331 # print 332 printed = gmPrinting.print_files(filenames = files2print, jobtype = jobtype) 333 if not printed: 334 gmGuiHelpers.gm_show_error ( 335 aMessage = _('Error printing documents.'), 336 aTitle = _('Printing [%s]') % jobtype 337 ) 338 return False 339 soap_lines.append(_('Printed: %s') % u', '.join(form_names)) 340 return True 341 #----------------------------- 342 def mail_forms(): 343 # anything to do ? 344 files2mail = [] 345 form_names = [] 346 for form in forms: 347 files2mail.extend(form.final_output_filenames) 348 form_names.append(u'%s (%s)' % (form.template['name_long'], form.template['external_version'])) 349 if len(files2mail) == 0: 350 return True 351 found, external_cmd = gmShellAPI.detect_external_binary('gm-mail_doc') 352 if not found: 353 return False 354 # send mail 355 cmd = u'%s %s' % (external_cmd, u' '.join(files2mail)) 356 if os.name == 'nt': 357 blocking = True 358 else: 359 blocking = False 360 success = gmShellAPI.run_command_in_shell ( 361 command = cmd, 362 blocking = blocking 363 ) 364 if not success: 365 gmGuiHelpers.gm_show_error ( 366 aMessage = _('Error mailing documents.'), 367 aTitle = _('Mailing documents') 368 ) 369 return False 370 soap_lines.append(_('Mailed: %s') % u', '.join(form_names)) 371 return True 372 #----------------------------- 373 def fax_forms(fax_number=None): 374 # anything to do ? 375 files2fax = [] 376 form_names = [] 377 for form in forms: 378 files2fax.extend(form.final_output_filenames) 379 form_names.append(u'%s (%s)' % (form.template['name_long'], form.template['external_version'])) 380 if len(files2fax) == 0: 381 return True 382 found, external_cmd = gmShellAPI.detect_external_binary('gm-fax_doc') 383 if not found: 384 return False 385 # send fax 386 cmd = u'%s "%s" %s' % (external_cmd, fax_number, u' '.join(files2fax)) 387 if os.name == 'nt': 388 blocking = True 389 else: 390 blocking = False 391 success = gmShellAPI.run_command_in_shell ( 392 command = cmd, 393 blocking = blocking 394 ) 395 if not success: 396 gmGuiHelpers.gm_show_error ( 397 aMessage = _('Error faxing documents to\n\n %s') % fax_number, 398 aTitle = _('Faxing documents') 399 ) 400 return False 401 soap_lines.append(_('Faxed to %s: %s') % (fax_number, u', '.join(form_names))) 402 return True 403 #----------------------------- 404 405 if parent is None: 406 parent = wx.GetApp().GetTopWindow() 407 408 if jobtype is None: 409 jobtype = 'generic_document' 410 411 dlg = cFormDisposalDlg(parent, -1) 412 dlg.forms = forms 413 dlg.progress_note = progress_note 414 dlg.episode_name = episode_name 415 action_code = dlg.ShowModal() 416 417 if action_code == wx.ID_CANCEL: 418 dlg.Destroy() 419 return True 420 421 forms = dlg._LCTRL_forms.get_item_data() 422 if len(forms) == 0: 423 dlg.Destroy() 424 return True 425 426 progress_note = dlg.progress_note 427 episode_name = dlg._PRW_episode.GetValue().strip() 428 do_save = dlg._CHBOX_save.GetValue() 429 do_print = dlg._CHBOX_print.GetValue() 430 do_mail = dlg._CHBOX_mail.GetValue() 431 fax_number = dlg._PRW_fax.GetValue().strip() 432 dlg.Destroy() 433 434 if action_code == wx.ID_OK: 435 if episode_name != u'': 436 result = archive_forms(episode_name = episode_name) 437 if do_save: 438 result = save_forms() 439 if do_print: 440 result = print_forms() 441 if do_mail: 442 result = mail_forms() 443 if fax_number != u'': 444 result = fax_forms(fax_number = fax_number) 445 if progress_note != u'': 446 soap_lines.insert(0, progress_note) 447 if len(soap_lines) > 0: 448 save_soap(soap = u'\n'.join(soap_lines)) 449 return result 450 451 success = False 452 keep_a_copy = False 453 if action_code == _ID_FORM_DISPOSAL_PRINT_NOW: 454 if episode_name != u'': 455 keep_a_copy = True 456 success = print_forms() 457 458 elif action_code == _ID_FORM_DISPOSAL_ARCHIVE_NOW: 459 if episode_name == u'': 460 episode_name = None 461 keep_a_copy = True 462 success = True 463 464 elif action_code == _ID_FORM_DISPOSAL_SAVE_NOW: 465 if episode_name != u'': 466 keep_a_copy = True 467 success = save_forms() 468 469 elif action_code == _ID_FORM_DISPOSAL_MAIL_NOW: 470 if episode_name != u'': 471 keep_a_copy = True 472 success = mail_forms() 473 474 elif action_code == _ID_FORM_DISPOSAL_FAX_NOW: 475 if episode_name != u'': 476 keep_a_copy = True 477 success = fax_forms(fax_number = fax_number) 478 479 elif action_code == _ID_FORM_DISPOSAL_TRAY_NOW: 480 # not implemented 481 success = False 482 483 if not success: 484 return False 485 486 if progress_note != u'': 487 soap_lines.insert(0, progress_note) 488 if len(soap_lines) > 0: 489 save_soap(soap = u'\n'.join(soap_lines)) 490 491 if keep_a_copy: 492 archive_forms(episode_name = episode_name) 493 494 return True 495 496 #============================================================ 497 from Gnumed.wxGladeWidgets import wxgFormDisposalDlg 498500615 #============================================================ 616 from Gnumed.wxGladeWidgets import wxgFormTemplateEditAreaPnl 617502 503 wxgFormDisposalDlg.wxgFormDisposalDlg.__init__(self, *args, **kwargs) 504 505 self.__init_ui()506 507 #-------------------------------------------------------- 508 # properties 509 #-------------------------------------------------------- 513 514 message = property(lambda x:x, _set_msg) 515 516 #--------------------------------------------------------518 items = [ f.template['name_long'] for f in forms ] 519 self._LCTRL_forms.set_string_items(items) 520 self._LCTRL_forms.set_data(forms)521 522 forms = property(lambda x:x, _set_forms) 523 524 #--------------------------------------------------------526 return self._TCTRL_soap.GetValue().strip()527 532 533 progress_note = property(_get_note, _set_note) 534 535 #--------------------------------------------------------537 return self._PRW_episode.GetValue().strip()538 543 544 episode_name = property(_get_episode_name, _set_episode_name) 545 546 #-------------------------------------------------------- 547 # internal helpers 548 #--------------------------------------------------------550 self._LCTRL_forms.set_columns([_('Form')]) 551 552 self.__mail_script_exists, path = gmShellAPI.detect_external_binary(binary = r'gm-mail_doc') 553 if not self.__mail_script_exists: 554 self._LBL_mail.Disable() 555 self._CHBOX_mail.SetLabel(_('<gm-mail_doc(.bat) not found>')) 556 self._CHBOX_mail.SetValue(False) 557 self._CHBOX_mail.Disable() 558 self._BTN_mail.Disable() 559 560 self.__fax_script_exists, path = gmShellAPI.detect_external_binary(binary = r'gm-fax_doc') 561 if not self.__fax_script_exists: 562 self._LBL_fax.Disable() 563 self._PRW_fax.SetText(_('<gm-fax_doc(.bat) not found>'), data = None) 564 self._PRW_fax.display_as_disabled(True) 565 self._PRW_fax.Disable() 566 self._BTN_fax.Disable() 567 568 self._LBL_tray.Disable() 569 self._CHBOX_tray.SetValue(False) 570 self._CHBOX_tray.Disable() 571 self._BTN_tray.Disable()572 573 #-------------------------------------------------------- 574 # event handlers 575 #-------------------------------------------------------- 578 #-------------------------------------------------------- 584 #-------------------------------------------------------- 590 #-------------------------------------------------------- 593 #-------------------------------------------------------- 596 #-------------------------------------------------------- 599 #-------------------------------------------------------- 608 #-------------------------------------------------------- 612 #--------------------------------------------------------619815 #============================================================ 816 from Gnumed.wxGladeWidgets import wxgFormTemplateEditAreaDlg 817621 try: 622 self.__template = kwargs['template'] 623 del kwargs['template'] 624 except KeyError: 625 self.__template = None 626 627 wxgFormTemplateEditAreaPnl.wxgFormTemplateEditAreaPnl.__init__(self, *args, **kwargs) 628 629 self._PRW_name_long.matcher = gmForms.cFormTemplateNameLong_MatchProvider() 630 self._PRW_name_short.matcher = gmForms.cFormTemplateNameShort_MatchProvider() 631 self._PRW_template_type.matcher = gmForms.cFormTemplateType_MatchProvider() 632 633 self.refresh() 634 635 self.full_filename = None636 #--------------------------------------------------------638 if template is not None: 639 self.__template = template 640 641 if self.__template is None: 642 self._PRW_name_long.SetText(u'') 643 self._PRW_name_short.SetText(u'') 644 self._TCTRL_external_version.SetValue(u'') 645 self._PRW_template_type.SetText(u'') 646 self._PRW_instance_type.SetText(u'') 647 self._TCTRL_filename.SetValue(u'') 648 self._CH_engine.SetSelection(0) 649 self._CHBOX_active.SetValue(True) 650 self._CHBOX_editable.SetValue(True) 651 652 self._TCTRL_date_modified.SetValue(u'') 653 self._TCTRL_modified_by.SetValue(u'') 654 655 self._BTN_export.Enable(False) 656 else: 657 self._PRW_name_long.SetText(self.__template['name_long']) 658 self._PRW_name_short.SetText(self.__template['name_short']) 659 self._TCTRL_external_version.SetValue(self.__template['external_version']) 660 self._PRW_template_type.SetText(self.__template['l10n_template_type'], data = self.__template['pk_template_type']) 661 self._PRW_instance_type.SetText(self.__template['l10n_instance_type'], data = self.__template['instance_type']) 662 self._TCTRL_filename.SetValue(self.__template['filename']) 663 self._CH_engine.SetSelection(gmForms.form_engine_abbrevs.index(self.__template['engine'])) 664 self._CHBOX_active.SetValue(self.__template['in_use']) 665 self._CHBOX_editable.SetValue(self.__template['edit_after_substitution']) 666 667 self._TCTRL_date_modified.SetValue(gmDateTime.pydt_strftime(self.__template['last_modified'], '%Y %b %d')) 668 self._TCTRL_modified_by.SetValue(self.__template['modified_by']) 669 670 self._TCTRL_filename.Enable(True) 671 #self._BTN_load.Enable(not self.__template['has_instances']) 672 self._BTN_load.Enable(True) 673 674 self._BTN_export.Enable(True) 675 676 self._PRW_name_long.SetFocus()677 #--------------------------------------------------------679 error = False 680 681 if gmTools.coalesce(self._PRW_name_long.GetValue(), u'').strip() == u'': 682 error = True 683 self._PRW_name_long.SetBackgroundColour('pink') 684 else: 685 self._PRW_name_long.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) 686 687 if gmTools.coalesce(self._PRW_name_short.GetValue(), u'').strip() == u'': 688 error = True 689 self._PRW_name_short.SetBackgroundColour('pink') 690 else: 691 self._PRW_name_short.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) 692 693 if gmTools.coalesce(self._TCTRL_external_version.GetValue(), u'').strip() == u'': 694 error = True 695 self._TCTRL_external_version.SetBackgroundColour('pink') 696 else: 697 self._TCTRL_external_version.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) 698 699 if gmTools.coalesce(self._PRW_template_type.GetValue(), u'').strip() == u'': 700 error = True 701 self._PRW_template_type.SetBackgroundColour('pink') 702 else: 703 self._PRW_template_type.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) 704 705 if gmTools.coalesce(self._PRW_instance_type.GetValue(), u'').strip() == u'': 706 error = True 707 self._PRW_instance_type.SetBackgroundColour('pink') 708 else: 709 self._PRW_instance_type.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) 710 711 if self.__template is None and self.full_filename is None: 712 error = True 713 gmDispatcher.send(signal = 'statustext', msg = _('You must select a template file before saving.'), beep = True) 714 715 return not error716 #--------------------------------------------------------718 if not self.__valid_for_save(): 719 return False 720 721 if self.__template is None: 722 self.__template = gmForms.create_form_template ( 723 template_type = self._PRW_template_type.GetData(), 724 name_short = self._PRW_name_short.GetValue().strip(), 725 name_long = self._PRW_name_long.GetValue().strip() 726 ) 727 else: 728 self.__template['pk_template_type'] = self._PRW_template_type.GetData() 729 self.__template['name_short'] = self._PRW_name_short.GetValue().strip() 730 self.__template['name_long'] = self._PRW_name_long.GetValue().strip() 731 732 # if not self.__template['has_instances']: 733 if self.full_filename is not None: 734 self.__template.update_template_from_file(filename = self.full_filename) 735 736 self.__template['external_version'] = self._TCTRL_external_version.GetValue() 737 tmp = self._PRW_instance_type.GetValue().strip() 738 if tmp not in [self.__template['instance_type'], self.__template['l10n_instance_type']]: 739 self.__template['instance_type'] = tmp 740 self.__template['filename'] = self._TCTRL_filename.GetValue() 741 self.__template['in_use'] = self._CHBOX_active.GetValue() 742 self.__template['edit_after_substitution'] = self._CHBOX_editable.GetValue() 743 self.__template['engine'] = gmForms.form_engine_abbrevs[self._CH_engine.GetSelection()] 744 745 self.__template.save() 746 return True747 #-------------------------------------------------------- 748 # event handlers 749 #-------------------------------------------------------- 781 #--------------------------------------------------------819837 #============================================================ 838 # main 839 #------------------------------------------------------------ 840 if __name__ == '__main__': 841 842 gmI18N.activate_locale() 843 gmI18N.install_domain(domain = 'gnumed') 844 845 #----------------------------------------821 try: 822 template = kwargs['template'] 823 del kwargs['template'] 824 except KeyError: 825 template = None 826 827 wxgFormTemplateEditAreaDlg.wxgFormTemplateEditAreaDlg.__init__(self, *args, **kwargs) 828 829 self._PNL_edit_area.refresh(template=template)830 #--------------------------------------------------------847 app = wx.PyWidgetTester(size = (400, 300)) 848 pnl = cFormTemplateEditAreaPnl(app.frame, -1, template = gmForms.cFormTemplate(aPK_obj=4)) 849 app.frame.Show(True) 850 app.MainLoop() 851 return852 #---------------------------------------- 853 if (len(sys.argv) > 1) and (sys.argv[1] == 'test'): 854 test_cFormTemplateEditAreaPnl() 855 856 #============================================================ 857
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sat Aug 3 03:56:56 2013 | http://epydoc.sourceforge.net |