Skip to content

Commit 9e0fc8d

Browse files
authored
Get rid of triggerEvent and set_trigger boilerplate (#147)
1 parent d8ab50d commit 9e0fc8d

13 files changed

Lines changed: 48 additions & 141 deletions

src/instamatic/gui/autocred_frame.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
import datetime
4-
import os
54
import pickle
65
import threading
76
from pathlib import Path
@@ -14,10 +13,10 @@
1413
from instamatic.calibrate import CalibBeamShift
1514
from instamatic.calibrate.filenames import *
1615

17-
from .base_module import BaseModule
16+
from .base_module import BaseModule, HasQMixin
1817

1918

20-
class ExperimentalautocRED(LabelFrame):
19+
class ExperimentalautocRED(LabelFrame, HasQMixin):
2120
"""Data collection protocol for SerialRED data collection on a high-speed
2221
Timepix camera using automated screening and crystal tracking.
2322
@@ -211,10 +210,6 @@ def init_vars(self):
211210
self.var_backlash = DoubleVar(value=1.0)
212211
self.var_rotspeed = DoubleVar(value=0.86)
213212

214-
def set_trigger(self, trigger=None, q=None):
215-
self.triggerEvent = trigger
216-
self.q = q
217-
218213
def start_collection(self):
219214
self.CollectionStopButton.config(state=NORMAL)
220215
self.CollectionButton.config(state=DISABLED)
@@ -226,8 +221,6 @@ def start_collection(self):
226221
params = self.get_params()
227222
self.q.put(('autocred', params))
228223

229-
self.triggerEvent.set()
230-
231224
def stop_collection(self, event=None):
232225
self.stopEvent_experiment.set()
233226

@@ -314,7 +307,6 @@ def toggle_diff_defocus(self):
314307
difffocus = self.var_diff_defocus.get()
315308

316309
self.q.put(('toggle_difffocus', {'value': difffocus, 'toggle': toggle}))
317-
self.triggerEvent.set()
318310

319311
def show_calib_beamshift(self):
320312
# TODO: use mpl_frame.ShowMatplotlibFig

src/instamatic/gui/base_module.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
from queue import Queue
4+
35

46
class BaseModule:
57
"""BaseModule for the gui composition.
@@ -31,3 +33,9 @@ def initialize(self, parent):
3133
frame = self.tk_frame(parent, **self.kwargs)
3234
self.frame = frame
3335
return frame
36+
37+
38+
class HasQMixin:
39+
"""Asserts module.q remains reserved for DataCollectionController.q."""
40+
41+
q: Queue

src/instamatic/gui/cred_fei_frame.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
from instamatic.utils.spinbox import Spinbox
77

8-
from .base_module import BaseModule
8+
from .base_module import BaseModule, HasQMixin
99

1010

11-
class ExperimentalcRED_FEI(LabelFrame):
11+
class ExperimentalcRED_FEI(LabelFrame, HasQMixin):
1212
"""Simple panel to assist cRED data collection (mainly rotation control) on
1313
a FEI microscope."""
1414

@@ -94,10 +94,6 @@ def init_vars(self):
9494
self.var_save_tiff = BooleanVar(value=True)
9595
self.var_save_red = BooleanVar(value=True)
9696

97-
def set_trigger(self, trigger=None, q=None):
98-
self.triggerEvent = trigger
99-
self.q = q
100-
10197
def start_collection(self):
10298
self.StartButton.config(state=DISABLED)
10399
self.FinalizeButton.config(state=NORMAL)
@@ -114,7 +110,6 @@ def start_collection(self):
114110
},
115111
)
116112
)
117-
self.triggerEvent.set()
118113

119114
def stop_collection(self):
120115
self.StartButton.config(state=NORMAL)
@@ -123,7 +118,6 @@ def stop_collection(self):
123118
self.e_rotspeed.config(state=NORMAL)
124119
params = self.get_params(task='None')
125120
self.q.put(('credfei', params))
126-
self.triggerEvent.set()
127121

128122
def get_params(self, task=None):
129123
params = {

src/instamatic/gui/cred_frame.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
from instamatic.utils.spinbox import Spinbox
88

9-
from .base_module import BaseModule
9+
from .base_module import BaseModule, HasQMixin
1010

1111
ENABLE_FOOTFREE_OPTION = False
1212

1313

14-
class ExperimentalcRED(LabelFrame):
14+
class ExperimentalcRED(LabelFrame, HasQMixin):
1515
"""GUI panel for doing cRED experiments on a Timepix camera."""
1616

1717
def __init__(self, parent):
@@ -183,10 +183,6 @@ def init_vars(self):
183183
self.var_save_dials = BooleanVar(value=True)
184184
self.var_save_red = BooleanVar(value=True)
185185

186-
def set_trigger(self, trigger=None, q=None):
187-
self.triggerEvent = trigger
188-
self.q = q
189-
190186
def start_collection(self):
191187
# TODO: make a pop up window with the STOP button?
192188
if self.var_toggle_diff_defocus.get():
@@ -209,8 +205,6 @@ def start_collection(self):
209205
params = self.get_params()
210206
self.q.put(('cred', params))
211207

212-
self.triggerEvent.set()
213-
214208
def stop_collection(self, event=None):
215209
self.stopEvent.set()
216210

@@ -258,7 +252,6 @@ def relax_beam(self):
258252
difffocus = self.var_diff_defocus.get()
259253

260254
self.q.put(('relax_beam', {'value': difffocus}))
261-
self.triggerEvent.set()
262255

263256
def toggle_footfree(self):
264257
enable = self.var_toggle_footfree.get()
@@ -274,7 +267,6 @@ def toggle_diff_defocus(self):
274267
difffocus = self.var_diff_defocus.get()
275268

276269
self.q.put(('toggle_difffocus', {'value': difffocus, 'toggle': toggle}))
277-
self.triggerEvent.set()
278270

279271

280272
def acquire_data_cRED(controller, **kwargs):
@@ -301,7 +293,6 @@ def acquire_data_cRED(controller, **kwargs):
301293

302294
if controller.use_indexing_server:
303295
controller.q.put(('autoindex', {'task': 'run', 'path': cexp.smv_path}))
304-
controller.triggerEvent.set()
305296

306297

307298
module = BaseModule(

src/instamatic/gui/cred_tvips_frame.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
from instamatic import config
1010
from instamatic.utils.spinbox import Spinbox
1111

12-
from .base_module import BaseModule
12+
from .base_module import BaseModule, HasQMixin
1313

1414
barrier = threading.Barrier(2, timeout=60)
1515

1616

17-
class ExperimentalTVIPS(LabelFrame):
17+
class ExperimentalTVIPS(LabelFrame, HasQMixin):
1818
"""GUI panel for doing cRED / SerialRED experiments on a TVIPS camera."""
1919

2020
def __init__(self, parent):
@@ -217,10 +217,6 @@ def init_vars(self):
217217

218218
self.var_goniotool_tx = IntVar(value=1)
219219

220-
def set_trigger(self, trigger=None, q=None):
221-
self.triggerEvent = trigger
222-
self.q = q
223-
224220
def invert_angle(self):
225221
angle = self.var_target_angle.get()
226222
self.var_target_angle.set(-angle)
@@ -257,7 +253,6 @@ def prime_collection(self):
257253
# self.e_target_angle.config(state=DISABLED)
258254
params = self.get_params(task='get_ready')
259255
self.q.put(('cred_tvips', params))
260-
self.triggerEvent.set()
261256

262257
def worker(button=None, state=None):
263258
barrier.wait() # wait for experiment to be primed
@@ -272,19 +267,16 @@ def start_collection(self):
272267
self.AcquireButton.config(state=DISABLED)
273268
params = self.get_params(task='acquire')
274269
self.q.put(('cred_tvips', params))
275-
self.triggerEvent.set()
276270

277271
def stop_collection(self):
278272
self.enable_ui()
279273
params = self.get_params(task='stop')
280274
self.q.put(('cred_tvips', params))
281-
self.triggerEvent.set()
282275

283276
def serial_collection(self):
284277
self.disable_ui()
285278
params = self.get_params(task='serial')
286279
self.q.put(('cred_tvips', params))
287-
self.triggerEvent.set()
288280

289281
def browse_instructions(self):
290282
fn = filedialog.askopenfilename(
@@ -342,11 +334,9 @@ def toggle_screen(self):
342334

343335
def start_liveview(self):
344336
self.q.put(('ctrl', {'task': 'cam.start_liveview'}))
345-
self.triggerEvent.set()
346337

347338
def stop_liveview(self):
348339
self.q.put(('ctrl', {'task': 'cam.stop_liveview'}))
349-
self.triggerEvent.set()
350340

351341
def toggle_diff_defocus(self):
352342
toggle = self.var_toggle_diff_defocus.get()

src/instamatic/gui/ctrl_frame.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
from instamatic import config
88
from instamatic.utils.spinbox import Spinbox
99

10-
from .base_module import BaseModule
10+
from .base_module import BaseModule, HasQMixin
1111

1212

13-
class ExperimentalCtrl(LabelFrame):
13+
class ExperimentalCtrl(LabelFrame, HasQMixin):
1414
"""This panel holds some frequently used functions to control the electron
1515
microscope."""
1616

@@ -210,17 +210,12 @@ def init_vars(self):
210210

211211
self.var_stage_wait = BooleanVar(value=True)
212212

213-
def set_trigger(self, trigger=None, q=None):
214-
self.triggerEvent = trigger
215-
self.q = q
216-
217213
def set_mode(self, event=None):
218214
self.ctrl.mode.set(self.var_mode.get())
219215

220216
def set_brightness(self, event=None):
221217
self.var_brightness.set(self.var_brightness.get())
222218
self.q.put(('ctrl', {'task': 'brightness.set', 'value': self.var_brightness.get()}))
223-
self.triggerEvent.set()
224219

225220
def get_brightness(self, event=None):
226221
self.var_brightness.set(self.ctrl.brightness.get())
@@ -239,15 +234,13 @@ def reset_stage(self):
239234
def set_difffocus(self, event=None):
240235
self.var_difffocus.set(self.var_difffocus.get())
241236
self.q.put(('ctrl', {'task': 'difffocus.set', 'value': self.var_difffocus.get()}))
242-
self.triggerEvent.set()
243237

244238
def get_difffocus(self, event=None):
245239
self.var_difffocus.set(self.ctrl.difffocus.get())
246240

247241
def _set_angle(self, var: Variable) -> None:
248242
kwargs = {'task': 'stage.set', 'a': var.get(), 'wait': self.var_stage_wait.get()}
249243
self.q.put(('ctrl', kwargs))
250-
self.triggerEvent.set()
251244

252245
def set_negative_angle(self):
253246
return self._set_angle(self.var_negative_angle)
@@ -280,7 +273,6 @@ def set_stage(self):
280273
},
281274
)
282275
)
283-
self.triggerEvent.set()
284276

285277
def get_stage(self, event=None):
286278
x, y, z, _, _ = self.ctrl.stage.get()
@@ -301,17 +293,14 @@ def toggle_alpha_wobbler(self):
301293
},
302294
)
303295
)
304-
self.triggerEvent.set()
305296
else: # wobbler off
306297
self.wobble_stop_event.set()
307298

308299
def stage_stop(self):
309300
self.q.put(('ctrl', {'task': 'stage.stop'}))
310-
self.triggerEvent.set()
311301

312302
def find_eucentric_height(self):
313303
self.q.put(('ctrl', {'task': 'find_eucentric_height'}))
314-
self.triggerEvent.set()
315304

316305
def toggle_diff_defocus(self):
317306
if self.var_diff_defocus_on.get():

0 commit comments

Comments
 (0)