1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 """The main relax menu bar."""
26
27
28 from re import search
29 from string import split
30 import wx
31
32
33 from graphics import fetch_icon
34 from prompt.gpl import gpl
35 from status import Status; status = Status()
36 from user_functions.data import Uf_info; uf_info = Uf_info()
37
38
39 from gui import paths
40 from gui.components.menu import build_menu_item
41 from gui.uf_objects import build_uf_menus, Uf_storage; uf_store = Uf_storage()
42
43
45 """The menu bar GUI class."""
46
47
48 MENU_FILE_NEW = wx.NewId()
49 MENU_FILE_CLOSE = wx.NewId()
50 MENU_FILE_CLOSE_ALL = wx.NewId()
51 MENU_FILE_OPEN = wx.NewId()
52 MENU_FILE_SAVE = wx.NewId()
53 MENU_FILE_SAVE_AS = wx.NewId()
54 MENU_FILE_EXPORT_BMRB = wx.NewId()
55 MENU_FILE_EXIT = wx.NewId()
56 MENU_VIEW_CONTROLLER = wx.NewId()
57 MENU_VIEW_SPIN_VIEW = wx.NewId()
58 MENU_VIEW_RESULTS = wx.NewId()
59 MENU_VIEW_PIPE_EDIT = wx.NewId()
60 MENU_VIEW_PROMPT = wx.NewId()
61 MENU_TOOLS_FORMAT = wx.NewId()
62 MENU_TOOLS_TEST_SUITE = wx.NewId()
63 MENU_TOOLS_TEST_SUITE_ALL = wx.NewId()
64 MENU_TOOLS_TEST_SUITE_SYS = wx.NewId()
65 MENU_TOOLS_TEST_SUITE_UNIT = wx.NewId()
66 MENU_TOOLS_TEST_SUITE_GUI = wx.NewId()
67 MENU_TOOLS_SYS_INFO = wx.NewId()
68 MENU_HELP_MANUAL = wx.NewId()
69 MENU_HELP_MAIL = wx.NewId()
70 MENU_HELP_REFS = wx.NewId()
71 MENU_HELP_GPL = wx.NewId()
72 MENU_HELP_ABOUT = wx.NewId()
73
75 """Build the menu bar."""
76
77
78 self.gui = gui
79
80
81 self.menubar = wx.MenuBar()
82
83
84 menu = wx.Menu()
85 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_NEW, text="&New analysis\tCtrl+N", icon=paths.icon_16x16.new))
86 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_CLOSE, text="&Close analysis", icon=paths.icon_16x16.document_close))
87 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_CLOSE_ALL, text="&Close all analyses", icon=paths.icon_16x16.dialog_close))
88 menu.AppendSeparator()
89 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_OPEN, text="&Open relax state\tCtrl+O", icon=paths.icon_16x16.document_open))
90 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_SAVE, text="S&ave relax state\tCtrl+S", icon=paths.icon_16x16.document_save))
91 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_SAVE_AS, text="Save as...\tCtrl+Shift+S", icon=paths.icon_16x16.document_save_as))
92 menu.AppendSeparator()
93 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_EXPORT_BMRB, text="Export for BMRB deposition", icon=fetch_icon('relax.bmrb')))
94 menu.AppendSeparator()
95 menu.AppendItem(build_menu_item(menu, id=self.MENU_FILE_EXIT, text="E&xit\tCtrl+Q", icon=paths.icon_16x16.exit))
96 self.menubar.Append(menu, "&File")
97
98
99 self.gui.Bind(wx.EVT_MENU, self.gui.analysis.menu_new, id=self.MENU_FILE_NEW)
100 self.gui.Bind(wx.EVT_MENU, self.gui.analysis.menu_close, id=self.MENU_FILE_CLOSE)
101 self.gui.Bind(wx.EVT_MENU, self.gui.analysis.menu_close_all, id=self.MENU_FILE_CLOSE_ALL)
102 self.gui.Bind(wx.EVT_MENU, self.gui.state_load, id=self.MENU_FILE_OPEN)
103 self.gui.Bind(wx.EVT_MENU, self.gui.action_state_save, id=self.MENU_FILE_SAVE)
104 self.gui.Bind(wx.EVT_MENU, self.gui.action_state_save_as, id=self.MENU_FILE_SAVE_AS)
105 self.gui.Bind(wx.EVT_MENU, self.gui.action_export_bmrb, id=self.MENU_FILE_EXPORT_BMRB)
106 self.gui.Bind(wx.EVT_MENU, self.gui.exit_gui, id=self.MENU_FILE_EXIT)
107
108
109 menu = wx.Menu()
110 menu.AppendItem(build_menu_item(menu, id=self.MENU_VIEW_CONTROLLER, text="&Controller\tCtrl+Z", icon=paths.icon_16x16.preferences_system_performance))
111 menu.AppendItem(build_menu_item(menu, id=self.MENU_VIEW_SPIN_VIEW, text="&Spin view\tCtrl+T", icon=paths.icon_16x16.spin))
112 menu.AppendItem(build_menu_item(menu, id=self.MENU_VIEW_RESULTS, text="&Results viewer\tCtrl+R", icon=paths.icon_16x16.view_statistics))
113 menu.AppendItem(build_menu_item(menu, id=self.MENU_VIEW_PIPE_EDIT, text="&Data pipe editor\tCtrl+D", icon=paths.icon_16x16.pipe))
114 menu.AppendItem(build_menu_item(menu, id=self.MENU_VIEW_PROMPT, text="relax &prompt\tCtrl+P", icon=paths.icon_16x16.relax_prompt))
115 self.menubar.Append(menu, "&View")
116
117
118 self.gui.Bind(wx.EVT_MENU, self.gui.show_controller, id=self.MENU_VIEW_CONTROLLER)
119 self.gui.Bind(wx.EVT_MENU, self.gui.show_prompt, id=self.MENU_VIEW_PROMPT)
120 self.gui.Bind(wx.EVT_MENU, self.gui.show_tree, id=self.MENU_VIEW_SPIN_VIEW)
121 self.gui.Bind(wx.EVT_MENU, self.gui.show_results_viewer, id=self.MENU_VIEW_RESULTS)
122 self.gui.Bind(wx.EVT_MENU, self.gui.show_pipe_editor, id=self.MENU_VIEW_PIPE_EDIT)
123
124
125 self.menu_uf_ids = build_uf_menus(parent=self.gui, menubar=self.menubar)
126
127
128 menu = wx.Menu()
129 menu.AppendItem(build_menu_item(menu, id=self.MENU_TOOLS_FORMAT, text="&Free file format settings", icon=paths.icon_16x16.document_properties))
130 menu.AppendItem(build_menu_item(menu, id=self.MENU_TOOLS_SYS_INFO, text="System &information", icon=paths.icon_16x16.help_about))
131
132
133 test_suite_item = build_menu_item(menu, id=self.MENU_TOOLS_TEST_SUITE, text="&Test suite", icon=paths.icon_16x16.uf_script)
134 sub_menu = wx.Menu()
135 test_suite_item.SetSubMenu(sub_menu)
136 sub_menu.AppendItem(build_menu_item(sub_menu, id=self.MENU_TOOLS_TEST_SUITE_ALL, text="&Full test suite", icon=paths.icon_16x16.uf_script))
137 sub_menu.AppendSeparator()
138 sub_menu.AppendItem(build_menu_item(sub_menu, id=self.MENU_TOOLS_TEST_SUITE_SYS, text="&System tests", icon=paths.icon_16x16.uf_script))
139 sub_menu.AppendItem(build_menu_item(sub_menu, id=self.MENU_TOOLS_TEST_SUITE_UNIT, text="&Unit tests", icon=paths.icon_16x16.uf_script))
140 sub_menu.AppendItem(build_menu_item(sub_menu, id=self.MENU_TOOLS_TEST_SUITE_GUI, text="&GUI tests", icon=paths.icon_16x16.uf_script))
141 menu.AppendItem(test_suite_item)
142 self.menubar.Append(menu, "&Tools")
143
144
145 self.gui.Bind(wx.EVT_MENU, self.gui.free_file_format_settings, id=self.MENU_TOOLS_FORMAT)
146 self.gui.Bind(wx.EVT_MENU, self._sys_info, id=self.MENU_TOOLS_SYS_INFO)
147 self.gui.Bind(wx.EVT_MENU, self.gui.run_test_suite, id=self.MENU_TOOLS_TEST_SUITE_ALL)
148 self.gui.Bind(wx.EVT_MENU, self.gui.run_test_suite_sys, id=self.MENU_TOOLS_TEST_SUITE_SYS)
149 self.gui.Bind(wx.EVT_MENU, self.gui.run_test_suite_unit, id=self.MENU_TOOLS_TEST_SUITE_UNIT)
150 self.gui.Bind(wx.EVT_MENU, self.gui.run_test_suite_gui, id=self.MENU_TOOLS_TEST_SUITE_GUI)
151
152
153 menu = wx.Menu()
154 menu.AppendItem(build_menu_item(menu, id=self.MENU_HELP_MANUAL, text="relax user &manual\tF1", icon=paths.icon_16x16.manual))
155 menu.AppendSeparator()
156 menu.AppendItem(build_menu_item(menu, id=self.MENU_HELP_MAIL, text="Mailing list &contact (relax-users@gna.org)", icon=paths.icon_16x16.contact))
157 menu.AppendItem(build_menu_item(menu, id=self.MENU_HELP_REFS, text="&References", icon=paths.icon_16x16.ref))
158 menu.AppendSeparator()
159 menu.AppendItem(build_menu_item(menu, id=self.MENU_HELP_GPL, text="&Licence", icon=paths.icon_16x16.gnu_head))
160 menu.AppendSeparator()
161 menu.AppendItem(build_menu_item(menu, id=self.MENU_HELP_ABOUT, text="About rela&x", icon=fetch_icon("relax.relax")))
162 self.menubar.Append(menu, "&Help")
163
164
165 self.gui.Bind(wx.EVT_MENU, self.gui.relax_manual, id=self.MENU_HELP_MANUAL)
166 self.gui.Bind(wx.EVT_MENU, self.gui.contact_relax, id=self.MENU_HELP_MAIL)
167 self.gui.Bind(wx.EVT_MENU, self.gui.references, id=self.MENU_HELP_REFS)
168 self.gui.Bind(wx.EVT_MENU, self._licence, id=self.MENU_HELP_GPL)
169 self.gui.Bind(wx.EVT_MENU, self.gui.about_relax, id=self.MENU_HELP_ABOUT)
170
171
172 if status.show_gui:
173 self.gui.SetMenuBar(self.menubar)
174
175
176 self.gui.Bind(wx.EVT_MENU_OPEN, self.update_menus)
177
178
180 """Build the menu."""
181
182
183 for item in entries:
184
185 menu_item = build_menu_item(menu, id=item[0], text=item[1], icon=item[2])
186
187
188 if len(item[4]):
189
190 sub_menu = wx.Menu()
191
192
193 for sub_item in item[4]:
194
195 sub_menu_item = build_menu_item(sub_menu, id=sub_item[0], text=sub_item[1], icon=sub_item[2])
196 sub_menu.AppendItem(sub_menu_item)
197
198
199 self.gui.Bind(wx.EVT_MENU, sub_item[3], id=sub_item[0])
200
201
202 menu_item.SetSubMenu(sub_menu)
203
204
205 else:
206
207 self.gui.Bind(wx.EVT_MENU, item[3], id=item[0])
208
209
210 menu.AppendItem(menu_item)
211
212
214 """Show the GPL licence.
215
216 @param event: The wx event.
217 @type event: wx event
218 """
219
220
221 print(gpl.__doc__)
222
223
224 self.gui.show_controller(event)
225
226
228 """Show the full system information using the sys_info user function.
229
230 @param event: The wx event.
231 @type event: wx event
232 """
233
234
235 uf_store['sys_info']()
236
237
277