1 """
2 This is a template plugin
3 This is in line with the blog series on developing a plugin for GNUmed
4 Read all posts to follow along a step by step guide
5 The first thirteen parts are a chronical on a plugin I developed
6
7 Part 1: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-1.html
8 Part 2: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-2.html
9 Part 3: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-3.html
10 Part 4: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-4.html
11 Part 5: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-5.html
12 Part 6: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-6.html
13 Part 7: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-7.html
14 Part 8: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-8.html
15 Part 9: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-9.html
16 Part 10: http://gnumed.blogspot.com/2009/04/gnumed-plugin-development-part-10.html
17 Part 11: http://gnumed.blogspot.com/2009/05/gnumed-plugin-development-part-11.html
18 Part 12: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-12.html
19 Part 13: http://gnumed.blogspot.com/2009/07/gnumed-plugin-development-part-13.html
20
21 The second series is more general and coves second plugin as a starting point
22 Part 1: http://gnumed.blogspot.com/2010/04/gnumed-plugin-developement-part-1.html
23
24 The third series covers an hands on introduction on how to share your code
25 and how to test your plugin
26 Part 1: http://gnumed.blogspot.com/2010/04/gnumed-plugin-development-how-to-share.html
27 Part 2: http://gnumed.blogspot.com/2010/07/gnumed-plugin-development-easy-testing.html
28
29 For development information such as database schema, function and classes documentation
30 and more see http://wiki.gnumed.de
31 """
32
33 """
34 This file is used together with
35 ../../wxg/wxgExamplePluginPnl.wxg - this is the UI layout as done with wxglade
36 ../../wxGladeWidgets/wxgExamplePluginPnl.py - this is the generated python code of the above
37 ../gmExamplePluginWidgets.py - holds the widgets of the user interface, it
38 imports and manipulates the above generated code
39 """
40
41 __version__ = "$Revision: 0.2 $"
42 __author__ = "Sebastian Hilbert <Sebastian.Hilbert@gmx.net>"
43 __license__ = "GPL"
44
45
46 import os.path, sys, logging
47 import wx
48
49 if __name__ == '__main__':
50
51 import sys
52 sys.path.insert(0, '../../../')
53
54 from Gnumed.pycommon import gmI18N
55 gmI18N.activate_locale()
56 gmI18N.install_domain()
57
58 """ import the widgets from the file referencing the widgets
59 for that particualr plugin (e.g. ExamplePlugin.
60 If you code your own plugin replace Example by something reflecting
61 what your plugin does.
62 """
63
64 from Gnumed.wxpython import gmPlugin, gmExamplePluginWidgets
65
66 _log = logging.getLogger('gm.ui')
67 _log.info(__version__)
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 gmPerson
111 from Gnumed.wxpython import gmPatSearchWidgets
112
113 _log.info("starting template plugin...")
114
115 try:
116
117 patient = gmPerson.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 StandardError:
137 _log.exception("unhandled exception caught !")
138
139 raise
140
141 _log.info("closing example plugin...")
142