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
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
72
73 tab_name = _("Template Plugin")
74
77
82
84
85 return ('emr', _('Show &ExamplePlugin'))
86
88
89 """ uncomment the next two lines if a patient
90 needs to be active before the plugin """
91
92
93 return 1
94
96 if not gmPlugin.cNotebookPlugin._on_raise_by_signal(self, **kwds):
97 return False
98 try:
99
100
101 pass
102 except KeyError:
103 pass
104 return True
105
106
107
108 if __name__ == '__main__':
109
110
111 from Gnumed.business import gmPersonSearch
112 from Gnumed.wxpython import gmPatSearchWidgets
113
114 _log.info("starting template plugin...")
115
116 try:
117
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
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
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
140 raise
141
142 _log.info("closing example plugin...")
143