added #steps calc and box; several clean ups
This commit is contained in:
+37
-18
@@ -1,10 +1,11 @@
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
import wx
|
||||
|
||||
from .widgets import TwoButtons, LabeledEntry, make_filled_vbox
|
||||
from .widgets import TwoButtons, LabeledEntry, make_filled_vbox, make_filled_hbox
|
||||
|
||||
from slic.core.adjustable import Adjustable
|
||||
from slic.utils.registry import instances
|
||||
from slic.utils import nice_arange
|
||||
|
||||
|
||||
class ConfigPanel(wx.Panel):
|
||||
@@ -28,14 +29,15 @@ class ConfigPanel(wx.Panel):
|
||||
le_pgroup = LabeledEntry(self, label="pgroup", value=pgroup)
|
||||
|
||||
#TODO: disabled until working
|
||||
le_instrument.text.Disable()
|
||||
le_pgroup.text.Disable()
|
||||
le_instrument.Disable()
|
||||
le_pgroup.Disable()
|
||||
|
||||
btn_update = wx.Button(self, label="Update!")
|
||||
|
||||
# sizers:
|
||||
widgets = (st_acquisition, le_instrument, le_pgroup, btn_update)
|
||||
make_filled_vbox(self, widgets)
|
||||
vbox = make_filled_vbox(widgets)
|
||||
self.SetSizerAndFit(vbox)
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +64,8 @@ class StaticPanel(wx.Panel):
|
||||
|
||||
# sizers:
|
||||
widgets = (le_npulses, le_fname, btn_go)
|
||||
make_filled_vbox(self, widgets)
|
||||
vbox = make_filled_vbox(widgets)
|
||||
self.SetSizerAndFit(vbox)
|
||||
|
||||
|
||||
def on_go(self, event):
|
||||
@@ -122,28 +125,40 @@ class ScanPanel(wx.Panel):
|
||||
self.on_change_adj(None) # update static text with default selection
|
||||
cb_adjs.Bind(wx.EVT_COMBOBOX, self.on_change_adj)
|
||||
|
||||
self.le_start = le_start = LabeledEntry(self, label="Start", value="0")
|
||||
self.le_stop = le_stop = LabeledEntry(self, label="Stop", value="10")
|
||||
self.le_step = le_step = LabeledEntry(self, label="Step Size", value="0.1")
|
||||
self.le_start = le_start = LabeledEntry(self, label="Start", value="0")
|
||||
self.le_stop = le_stop = LabeledEntry(self, label="Stop", value="10")
|
||||
self.le_step = le_step = LabeledEntry(self, label="Step Size", value="0.1")
|
||||
self.le_nsteps = le_nsteps = LabeledEntry(self, label="#Steps")
|
||||
|
||||
le_nsteps.Disable()
|
||||
self.on_change_pos(None) # update #Steps
|
||||
|
||||
for le in (le_start, le_stop, le_step):
|
||||
le.Bind(wx.EVT_TEXT, self.on_change_pos)
|
||||
|
||||
self.cb_return = cb_return = wx.CheckBox(self, label="Return to initial value")
|
||||
cb_return.SetValue(True)
|
||||
|
||||
self.le_npulses = le_npulses = LabeledEntry(self, label="#Pulses", value="100")
|
||||
self.le_fname = le_fname = LabeledEntry(self, label="Filename", value="test")
|
||||
self.le_fname = le_fname = LabeledEntry(self, label="Filename", value="test")
|
||||
|
||||
self.btn_go = btn_go = TwoButtons(self)
|
||||
btn_go.Bind1(wx.EVT_BUTTON, self.on_go)
|
||||
btn_go.Bind2(wx.EVT_BUTTON, self.on_stop)
|
||||
|
||||
# sizers:
|
||||
hb_pos = wx.BoxSizer(wx.HORIZONTAL)
|
||||
hb_pos.Add(le_start)
|
||||
hb_pos.Add(le_stop)
|
||||
hb_pos.Add(le_step)
|
||||
widgets = (le_start, le_stop, le_step, le_nsteps)
|
||||
hb_pos = make_filled_hbox(widgets)
|
||||
|
||||
widgets = (cb_adjs, st_adj, hb_pos, cb_return, le_npulses, le_fname, btn_go)
|
||||
make_filled_vbox(self, widgets)
|
||||
vbox = make_filled_vbox(widgets, border=10)
|
||||
self.SetSizerAndFit(vbox)
|
||||
|
||||
|
||||
def on_change_pos(self, event):
|
||||
start_pos, end_pos, step_size = self._get_pos()
|
||||
nsteps = str(len(nice_arange(start_pos, end_pos, step_size)))
|
||||
self.le_nsteps.SetValue(nsteps)
|
||||
|
||||
|
||||
def on_change_adj(self, event):
|
||||
@@ -160,15 +175,13 @@ class ScanPanel(wx.Panel):
|
||||
|
||||
adjustable = self._get_adj()
|
||||
|
||||
start_pos = self.le_start.GetValue()
|
||||
end_pos = self.le_stop.GetValue()
|
||||
step_size = self.le_step.GetValue()
|
||||
start_pos, end_pos, step_size = self._get_pos()
|
||||
|
||||
n_pulses = self.le_npulses.GetValue()
|
||||
filename = self.le_fname.GetValue()
|
||||
return_to_initial_values = self.cb_return.GetValue()
|
||||
|
||||
self.scan = self.scanner.scan1D(adjustable, float(start_pos), float(end_pos), float(step_size), int(n_pulses), filename, return_to_initial_values=return_to_initial_values, start_immediately=False)
|
||||
self.scan = self.scanner.scan1D(adjustable, start_pos, end_pos, step_size, int(n_pulses), filename, return_to_initial_values=return_to_initial_values, start_immediately=False)
|
||||
|
||||
def wait():
|
||||
self.scan.run()
|
||||
@@ -193,6 +206,12 @@ class ScanPanel(wx.Panel):
|
||||
adjustable = self.adjs[adj_name]
|
||||
return adjustable
|
||||
|
||||
def _get_pos(self):
|
||||
start_pos = self.le_start.GetValue()
|
||||
end_pos = self.le_stop.GetValue()
|
||||
step_size = self.le_step.GetValue()
|
||||
return float(start_pos), float(end_pos), float(step_size)
|
||||
|
||||
|
||||
|
||||
def run(fn): # TODO
|
||||
|
||||
+17
-7
@@ -49,14 +49,17 @@ class LabeledEntry(wx.BoxSizer):
|
||||
super().__init__(wx.VERTICAL)
|
||||
|
||||
self.label = label = wx.StaticText(parent, label=label)
|
||||
self.text = text = wx.TextCtrl(parent, value=value)
|
||||
self.text = text = wx.TextCtrl(parent, value=value, style=wx.TE_RIGHT)
|
||||
|
||||
self.Add(label, flag=wx.EXPAND)
|
||||
self.Add(text, flag=wx.EXPAND)
|
||||
self.Add(text, flag=wx.EXPAND)
|
||||
|
||||
def GetValue(self):
|
||||
return self.text.GetValue()
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.text, name)
|
||||
|
||||
|
||||
|
||||
class NotebookPanel(wx.Panel): #TODO: This needs work
|
||||
@@ -79,14 +82,21 @@ class NotebookPanel(wx.Panel): #TODO: This needs work
|
||||
|
||||
|
||||
|
||||
def make_filled_vbox(parent, widgets):
|
||||
vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
def make_filled_vbox(widgets, flag=wx.ALL|wx.EXPAND, border=0):
|
||||
return make_filled_box(wx.VERTICAL, widgets, flag=flag, border=border)
|
||||
|
||||
vbox.AddStretchSpacer()
|
||||
def make_filled_hbox(widgets, flag=wx.ALL|wx.EXPAND, border=0):
|
||||
return make_filled_box(wx.HORIZONTAL, widgets, flag=flag, border=border)
|
||||
|
||||
|
||||
def make_filled_box(orient, widgets, flag, border):
|
||||
box = wx.BoxSizer(orient)
|
||||
|
||||
box.AddStretchSpacer()
|
||||
for i in widgets:
|
||||
vbox.Add(i, flag=wx.ALL|wx.EXPAND, border=10)
|
||||
box.Add(i, flag=flag, border=border)
|
||||
|
||||
parent.SetSizerAndFit(vbox)
|
||||
return box
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user