1
2 """ This is a template plugin.
3
4 This is in line with the blog series on developing a plugin
5 for GNUmed Read all posts to follow along a step by step
6 guide The first thirteen parts are a chronical on a plugin I
7 developed:
8
9 Part 1: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-1.html
10 Part 2: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-2.html
11 Part 3: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-3.html
12 Part 4: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-4.html
13 Part 5: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-5.html
14 Part 6: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-6.html
15 Part 7: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-7.html
16 Part 8: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-8.html
17 Part 9: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-9.html
18 Part 10: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-10.html
19 Part 11: http://gnumed.blogspot.com/2009/05/gnumed-plugin-development-part-11.html
20 Part 12: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-12.html
21 Part 13: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-13.html
22
23 The second series is more general and coves second plugin as a starting point
24 Part 1: http://gnumed.blogspot.com/2010/04/gnumed-plugin-developement-part-1.html
25
26 The third series covers an hands on introduction on how to share your code
27 and how to test your plugin
28 Part 1: http://gnumed.blogspot.com/2010/04/gnumed-plugin-development-how-to-share.html
29 Part 2: http://gnumed.blogspot.com/2010/07/gnumed-plugin-development-easy-testing.html
30
31 For development information such as database schema, function and classes documentation
32 and more see http://wiki.gnumed.de
33 """
34
35 """
36 This file is used together with
37 ../../wxg/wxgExamplePluginPnl.wxg - this is the UI layout as done with wxglade
38 ../../wxGladeWidgets/wxgExamplePluginPnl.py - this is the generated python code of the above
39 ../gmExamplePluginWidgets.py - holds the widgets of the user interface, it
40 imports and manipulates the above generated code
41 """
42
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
69
71
72 tab_name = _("Template Plugin")
73
76
81
83
84 return ('emr', _('Show &ExamplePlugin'))
85
87
88 """ uncomment the next two lines if a patient
89 needs to be active before the plugin """
90
91
92 return 1
93
95 if not gmPlugin.cNotebookPlugin._on_raise_by_signal(self, **kwds):
96 return False
97 try:
98
99
100 pass
101 except KeyError:
102 pass
103 return True
104
105
106
107 if __name__ == '__main__':
108
109
110 from Gnumed.business import gmPersonSearch
111 from Gnumed.wxpython import gmPatSearchWidgets
112
113 _log.info("starting template plugin...")
114
115 try:
116
117 patient = gmPersonSearch.ask_for_patient()
118 if patient is None:
119 print "None patient. Exiting gracefully..."
120 sys.exit(0)
121 gmPatSearchWidgets.set_active_patient(patient=patient)
122
123
124 application = wx.wx.PyWidgetTester(size = (800,600))
125 widgets = gmExamplePluginWidgets.cExamplePluginPnl(application.frame, -1)
126
127 application.frame.Show(True)
128 application.MainLoop()
129
130
131 if patient is not None:
132 try:
133 patient.cleanup()
134 except:
135 print "error cleaning up patient"
136 except Exception:
137 _log.exception("unhandled exception caught !")
138
139 raise
140
141 _log.info("closing example plugin...")
142