Package Gnumed :: Package wxpython :: Package gui :: Module gmExamplePlugin
[frames] | no frames]

Source Code for Module Gnumed.wxpython.gui.gmExamplePlugin

  1  """ This is a template plugin. 
  2   
  3  This is in line with the blog series on developing a plugin 
  4  for GNUmed Read all posts to follow along a step by step 
  5  guide The first thirteen parts are a chronical on a plugin I 
  6  developed: 
  7   
  8  Part 1:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-1.html 
  9  Part 2:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-2.html 
 10  Part 3:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-3.html 
 11  Part 4:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-4.html 
 12  Part 5:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-5.html 
 13  Part 6:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-6.html 
 14  Part 7:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-7.html 
 15  Part 8:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-8.html 
 16  Part 9:  http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-9.html 
 17  Part 10: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-10.html 
 18  Part 11: http://gnumed.blogspot.com/2009/05/gnumed-plugin-development-part-11.html 
 19  Part 12: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-12.html 
 20  Part 13: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-13.html 
 21   
 22  The second series is  more general and coves second plugin as a starting point 
 23  Part 1:  http://gnumed.blogspot.com/2010/04/gnumed-plugin-developement-part-1.html 
 24   
 25  The third series covers an hands on introduction on how to share your code 
 26  and how to test your plugin 
 27  Part 1:  http://gnumed.blogspot.com/2010/04/gnumed-plugin-development-how-to-share.html 
 28  Part 2:  http://gnumed.blogspot.com/2010/07/gnumed-plugin-development-easy-testing.html 
 29   
 30  For development information such as database schema, function and classes documentation 
 31  and more see http://wiki.gnumed.de 
 32  """ 
 33   
 34  """ 
 35  This file is used together with  
 36  ../../wxg/wxgExamplePluginPnl.wxg            - this is the UI layout as done with wxglade 
 37  ../../wxGladeWidgets/wxgExamplePluginPnl.py  - this is the generated python code of the above 
 38  ../gmExamplePluginWidgets.py                 - holds the widgets of the user interface, it  
 39                                                 imports and manipulates the above generated code  
 40  """ 
 41   
 42  __version__ = "$Revision: 0.2 $" 
 43  __author__ = "Sebastian Hilbert <Sebastian.Hilbert@gmx.net>" 
 44  __license__ = "GPL" 
 45   
 46  #================================================================ 
 47  import os.path, sys, logging 
 48  import wx 
 49   
 50  if __name__ == '__main__': 
 51          # stdlib 
 52          import sys 
 53          sys.path.insert(0, '../../../') 
 54   
 55          from Gnumed.pycommon import gmI18N 
 56          gmI18N.activate_locale() 
 57          gmI18N.install_domain() 
 58   
 59  """ import the widgets from the file referencing the widgets  
 60  for that particualr plugin (e.g. ExamplePlugin. 
 61  If you code your own plugin replace Example by something reflecting 
 62  what your plugin does.  
 63  """ 
 64   
 65  from Gnumed.wxpython import gmPlugin, gmExamplePluginWidgets 
 66   
 67  _log = logging.getLogger('gm.ui') 
 68  _log.info(__version__) 
 69  #================================================================ 
 70  #The name of the class must match the filename of the plugin 
71 -class gmExamplePlugin(gmPlugin.cNotebookPlugin):
72 #name of the plugin as it will appear as tab in GNUmed 73 tab_name = _("Template Plugin") 74
75 - def name (self):
77 #--------------------------------------------------------
78 - def GetWidget (self, parent):
79 #Sets up the GUI by instanciating the file containing the widget that make up the layout in the plugin 80 self._widget = gmExamplePluginWidgets.cExamplePluginPnl(parent, -1) 81 return self._widget
82 #--------------------------------------------------------
83 - def MenuInfo (self):
84 #This will set the name of the Plugin in the GNUmed menu 85 return ('emr', _('Show &ExamplePlugin'))
86 #--------------------------------------------------------
87 - def can_receive_focus(self):
88 # need patient 89 """ uncomment the next two lines if a patient 90 needs to be active before the plugin """ 91 #if not self._verify_patient_avail(): 92 # return None 93 return 1
94 #--------------------------------------------------------
95 - def _on_raise_by_signal(self, **kwds):
96 if not gmPlugin.cNotebookPlugin._on_raise_by_signal(self, **kwds): 97 return False 98 try: 99 # add here any code you for the plugin executed after 100 # raising the pugin 101 pass 102 except KeyError: 103 pass 104 return True
105 #================================================================ 106 # MAIN 107 #---------------------------------------------------------------- 108 if __name__ == '__main__': 109 110 # GNUmed 111 from Gnumed.business import gmPersonSearch 112 from Gnumed.wxpython import gmPatSearchWidgets 113 114 _log.info("starting template plugin...") 115 116 try: 117 # obtain patient 118 patient = gmPersonSearch.ask_for_patient() 119 if patient is None: 120 print "None patient. Exiting gracefully..." 121 sys.exit(0) 122 gmPatSearchWidgets.set_active_patient(patient=patient) 123 124 # display the plugin standalone 125 application = wx.wx.PyWidgetTester(size = (800,600)) 126 widgets = gmExamplePluginWidgets.cExamplePluginPnl(application.frame, -1) 127 128 application.frame.Show(True) 129 application.MainLoop() 130 131 # clean up 132 if patient is not None: 133 try: 134 patient.cleanup() 135 except: 136 print "error cleaning up patient" 137 except StandardError: 138 _log.exception("unhandled exception caught !") 139 # but re-raise them 140 raise 141 142 _log.info("closing example plugin...") 143