80 Tk.report_callback_exception = QView._trap_error
83 main_menu = Menu(root, tearoff=0)
84 root.config(menu=main_menu)
87 m = Menu(main_menu, tearoff=0)
88 m.add_command(label=
"Save QSPY Dictionaries",
89 command=QView._onSaveDict)
90 m.add_command(label=
"Toggle QSPY Text Output",
91 command=QView._onSaveText)
92 m.add_command(label=
"Toggle QSPY Binary Output",
93 command=QView._onSaveBin)
94 m.add_command(label=
"Toggle Matlab Output",
95 command=QView._onSaveMatlab)
96 m.add_command(label=
"Toggle Sequence Output",
97 command=QView._onSaveSequence)
99 m.add_command(label=
"Exit", command=QView._quit)
100 main_menu.add_cascade(label=
"File", menu=m)
103 m = Menu(main_menu, tearoff=0)
104 QView._view_canvas = IntVar()
105 QView._view_frame = IntVar()
106 m.add_checkbutton(label=
"Canvas", variable=QView._view_canvas,
107 command=QView._onCanvasView)
108 m.add_checkbutton(label=
"Frame", variable=QView._view_frame,
109 command=QView._onFrameView)
110 main_menu.add_cascade(label=
"View", menu=m)
113 m = Menu(main_menu, tearoff=0)
114 m.add_command(label=
"SM Group...", accelerator=
"[NONE]",
115 command=QView._onGlbFilter_SM)
116 m.add_command(label=
"AO Group...", accelerator=
"[NONE]",
117 command=QView._onGlbFilter_AO)
118 m.add_command(label=
"QF Group...", accelerator=
"[NONE]",
119 command=QView._onGlbFilter_QF)
120 m.add_command(label=
"TE Group...", accelerator=
"[NONE]",
121 command=QView._onGlbFilter_TE)
122 m.add_command(label=
"MP Group...", accelerator=
"[NONE]",
123 command=QView._onGlbFilter_MP)
124 m.add_command(label=
"EQ Group...", accelerator=
"[NONE]",
125 command=QView._onGlbFilter_EQ)
126 m.add_command(label=
"SC Group...", accelerator=
"[NONE]",
127 command=QView._onGlbFilter_SC)
128 m.add_command(label=
"SEM Group...", accelerator=
"[NONE]",
129 command=QView._onGlbFilter_SEM)
130 m.add_command(label=
"MTX Group...", accelerator=
"[NONE]",
131 command=QView._onGlbFilter_MTX)
133 m.add_command(label=
"U0 Group...", accelerator=
"[NONE]",
134 command=QView._onGlbFilter_U0)
135 m.add_command(label=
"U1 Group...", accelerator=
"[NONE]",
136 command=QView._onGlbFilter_U1)
137 m.add_command(label=
"U2 Group...", accelerator=
"[NONE]",
138 command=QView._onGlbFilter_U2)
139 m.add_command(label=
"U3 Group...", accelerator=
"[NONE]",
140 command=QView._onGlbFilter_U3)
141 m.add_command(label=
"U4 Group...", accelerator=
"[NONE]",
142 command=QView._onGlbFilter_U4)
143 main_menu.add_cascade(label=
"Global-Filters", menu=m)
144 QView._menu_glb_filter = m
147 m = Menu(main_menu, tearoff=0)
148 m.add_command(label=
"AO IDs...", accelerator=
"[NONE]",
149 command=QView._onLocFilter_AO)
150 m.add_command(label=
"EP IDs...", accelerator=
"[NONE]",
151 command=QView._onLocFilter_EP)
152 m.add_command(label=
"EQ IDs...", accelerator=
"[NONE]",
153 command=QView._onLocFilter_EQ)
154 m.add_command(label=
"AP IDs...", accelerator=
"[NONE]",
155 command=QView._onLocFilter_AP)
157 m.add_command(label=
"AO-OBJ...", command=QView._onLocFilter_AO_OBJ)
158 main_menu.add_cascade(label=
"Local-Filters", menu=m)
159 QView._menu_loc_filter = m
162 m = Menu(main_menu, tearoff=0)
163 m.add_command(label=
"SM_OBJ", command=QView._onCurrObj_SM)
164 m.add_command(label=
"AO_OBJ", command=QView._onCurrObj_AO)
165 m.add_command(label=
"MP_OBJ", command=QView._onCurrObj_MP)
166 m.add_command(label=
"EQ_OBJ", command=QView._onCurrObj_EQ)
167 m.add_command(label=
"TE_OBJ", command=QView._onCurrObj_TE)
168 m.add_command(label=
"AP_OBJ", command=QView._onCurrObj_AP)
170 m1 = Menu(m, tearoff=0)
171 m1.add_command(label=
"SM_OBJ", command=QView._onQueryCurr_SM)
172 m1.add_command(label=
"AO_OBJ", command=QView._onQueryCurr_AO)
173 m1.add_command(label=
"MP_OBJ", command=QView._onQueryCurr_MP)
174 m1.add_command(label=
"EQ_OBJ", command=QView._onQueryCurr_EQ)
175 m1.add_command(label=
"TE_OBJ", command=QView._onQueryCurr_TE)
176 m1.add_command(label=
"AP_OBJ", command=QView._onQueryCurr_AP)
177 m.add_cascade(label=
"Query Current", menu=m1)
178 main_menu.add_cascade(label=
"Current-Obj", menu=m)
179 QView._menu_curr_obj = m
182 m = Menu(main_menu, tearoff=0)
183 m.add_command(label=
"Reset Target", command=reset_target)
184 m.add_command(label=
"Query Target Info", command=QView._onTargetInfo)
185 m.add_command(label=
"Tick[0]", command=QView._onTick0)
186 m.add_command(label=
"Tick[1]", command=QView._onTick1)
189 m.add_command(label=
"Clear QSPY Screen", command=QView._onClearQspy)
193 main_menu.add_cascade(label=
"Commands", menu=m)
194 QView._menu_commands = m
197 m = Menu(main_menu, tearoff=0)
198 m.add_command(label=
"Publish...", command=QView._onEvt_PUBLISH)
199 m.add_command(label=
"Post...", command=QView._onEvt_POST)
200 m.add_command(label=
"Init SM", command=QView._onEvt_INIT)
201 m.add_command(label=
"Dispatch...", command=QView._onEvt_DISPATCH)
202 main_menu.add_cascade(label=
"Events", menu=m)
203 QView._menu_events = m
206 m = Menu(main_menu, tearoff=0)
208 main_menu.add_cascade(label=
"Custom", menu=m)
209 QView.custom_menu = m
212 m = Menu(main_menu, tearoff=0)
213 m.add_command(label=
"Online Help", command=QView._onHelp)
215 m.add_command(label=
"About...", command=QView._onAbout)
216 main_menu.add_cascade(label=
"Help", menu=m)
219 QView._scroll_text = IntVar()
220 QView._scroll_text.set(1)
221 QView._echo_text = IntVar()
222 QView._echo_text.set(0)
223 frame = Frame(root, borderwidth=1, relief=
"raised")
224 QView._target = Label(frame, height=2,
225 text=
"Target: " + QSpy._fmt_target)
226 QView._target.pack(side=
"left")
227 c = Checkbutton(frame, text=
"Scroll", variable=QView._scroll_text)
229 c = Checkbutton(frame, text=
"Echo", variable=QView._echo_text,
230 command=QSpy._reattach)
232 QView._tx = Label(frame, width=6, anchor=E,
233 borderwidth=1, relief=
"sunken")
234 QView._tx.pack(side=
"right")
235 Label(frame, text=
"Tx ").pack(side=
"right")
236 QView._rx = Label(frame, width=8, anchor=E,
237 borderwidth=1, relief=
"sunken")
238 QView._rx.pack(side=
"right")
239 Label(frame, text=
"Rx ").pack(side=
"right")
240 frame.pack(side=
"bottom", fill=
"x", pady=0)
243 frame = Frame(root, borderwidth=1, relief=
"sunken")
244 scrollbar = Scrollbar(frame)
245 QView._text = Text(frame, width=100, height=30,
246 wrap=
"word", yscrollcommand=scrollbar.set)
247 QView._text.bind(
"<Key>",
lambda e:
"break")
248 scrollbar.config(command=QView._text.yview)
249 scrollbar.pack(side=
"right", fill=
"y")
250 QView._text.pack(side=
"left", fill=
"both", expand=
True)
251 frame.pack(side=
"left", fill=
"both", expand=
True)
254 QView._canvas_toplevel = Toplevel()
255 QView._canvas_toplevel.withdraw()
256 QView._canvas_toplevel.protocol(
"WM_DELETE_WINDOW",
257 QView._onCanvasClose)
258 QView._canvas_toplevel.title(
"QView -- Canvas")
259 QView.canvas = Canvas(QView._canvas_toplevel)
263 QView._frame_toplevel = Toplevel()
264 QView._frame_toplevel.withdraw()
265 QView._frame_toplevel.protocol(
"WM_DELETE_WINDOW",
267 QView._frame_toplevel.title(
"QView -- Frame")
268 QView.frame = Frame(QView._frame_toplevel)
272 QView._locAO_OBJ = StringVar()
273 QView._currObj = (StringVar(), StringVar(), StringVar(),
274 StringVar(), StringVar(), StringVar())
275 QView._command = StringVar()
276 QView._command_p1 = StringVar()
277 QView._command_p2 = StringVar()
278 QView._command_p3 = StringVar()
279 QView._note = StringVar()
280 QView._note_kind = StringVar(value=0)
281 QView._peek_offs = StringVar()
282 QView._peek_dtype = StringVar(value=QView._dtypes[2])
283 QView._peek_len = StringVar()
284 QView._poke_offs = StringVar()
285 QView._poke_dtype = StringVar(value=QView._dtypes[2])
286 QView._poke_data = StringVar()
287 QView._evt_act = StringVar()
288 QView._evt_sig = StringVar()
289 QView._evt_par = (StringVar(), StringVar(), StringVar(),
290 StringVar(), StringVar(), StringVar(),
291 StringVar(), StringVar(), StringVar())
292 QView._evt_dtype = (StringVar(), StringVar(), StringVar(),
293 StringVar(), StringVar(), StringVar(),
294 StringVar(), StringVar(), StringVar())
295 for i
in range(len(QView._evt_par)):
296 QView._evt_dtype[i].set(QView._dtypes[2])
353 def _update_glb_filter_menu(label, mask):
354 x = (QView._glb_filter & mask)
361 QView._menu_glb_filter.entryconfig(label,
365 def _update_loc_filter_menu(label, mask):
366 x = (QView._loc_filter & mask)
373 QView._menu_loc_filter.entryconfig(label,
376 for i
in range(len(QView._currObj)):
377 QView._menu_curr_obj.entryconfig(i,
378 accelerator=QView._currObj[i].get())
379 QView._menu_events.entryconfig(0,
380 accelerator=QView._currObj[OBJ_AO].get())
381 QView._menu_events.entryconfig(1,
382 accelerator=QView._currObj[OBJ_AO].get())
383 QView._menu_events.entryconfig(2,
384 accelerator=QView._currObj[OBJ_SM].get())
385 QView._menu_events.entryconfig(3,
386 accelerator=QView._currObj[OBJ_SM].get())
387 QView._menu_commands.entryconfig(8,
388 accelerator=QView._currObj[OBJ_AP].get())
389 QView._menu_commands.entryconfig(9,
390 accelerator=QView._currObj[OBJ_AP].get())
394 if QView._currObj[OBJ_SM].get() ==
"":
395 state_SM =
"disabled"
396 if QView._currObj[OBJ_AO].get() ==
"":
397 state_AO =
"disabled"
398 if QView._currObj[OBJ_AP].get() ==
"":
400 QView._menu_events.entryconfig(0, state=state_AO)
401 QView._menu_events.entryconfig(1, state=state_AO)
402 QView._menu_events.entryconfig(2, state=state_SM)
403 QView._menu_events.entryconfig(3, state=state_SM)
404 QView._menu_commands.entryconfig(8, state=state_AP)
405 QView._menu_commands.entryconfig(9, state=state_AP)
407 _update_glb_filter_menu(
"SM Group...", QSpy._GLB_FLT_MASK_SM)
408 _update_glb_filter_menu(
"AO Group...", QSpy._GLB_FLT_MASK_AO)
409 _update_glb_filter_menu(
"QF Group...", QSpy._GLB_FLT_MASK_QF)
410 _update_glb_filter_menu(
"TE Group...", QSpy._GLB_FLT_MASK_TE)
411 _update_glb_filter_menu(
"MP Group...", QSpy._GLB_FLT_MASK_MP)
412 _update_glb_filter_menu(
"EQ Group...", QSpy._GLB_FLT_MASK_EQ)
413 _update_glb_filter_menu(
"SC Group...", QSpy._GLB_FLT_MASK_SC)
414 _update_glb_filter_menu(
"SEM Group...", QSpy._GLB_FLT_MASK_SEM)
415 _update_glb_filter_menu(
"MTX Group...", QSpy._GLB_FLT_MASK_MTX)
416 _update_glb_filter_menu(
"U0 Group...", QSpy._GLB_FLT_MASK_U0)
417 _update_glb_filter_menu(
"U1 Group...", QSpy._GLB_FLT_MASK_U1)
418 _update_glb_filter_menu(
"U2 Group...", QSpy._GLB_FLT_MASK_U2)
419 _update_glb_filter_menu(
"U3 Group...", QSpy._GLB_FLT_MASK_U3)
420 _update_glb_filter_menu(
"U4 Group...", QSpy._GLB_FLT_MASK_U4)
422 _update_loc_filter_menu(
"AO IDs...", QSpy._LOC_FLT_MASK_AO)
423 _update_loc_filter_menu(
"EP IDs...", QSpy._LOC_FLT_MASK_EP)
424 _update_loc_filter_menu(
"EQ IDs...", QSpy._LOC_FLT_MASK_EQ)
425 _update_loc_filter_menu(
"AP IDs...", QSpy._LOC_FLT_MASK_AP)
426 QView._menu_loc_filter.entryconfig(
"AO-OBJ...",
427 accelerator=QView._locAO_OBJ.get())