From b6f09865f182f4a48773aca4e34732a3f132588c Mon Sep 17 00:00:00 2001 From: "Michael D. M. Dryden" <mdryden@chem.utoronto.ca> Date: Mon, 25 Aug 2014 19:43:39 -0400 Subject: [PATCH] Move experiment window stuff out of main class into separate module. --- .../interface/dstatinterface.glade | 25 ++++-- .../dstat-interface/interface/exp_window.py | 48 ++++++++++ .../dstat-interface/interface_test.py | 89 +++---------------- 3 files changed, 78 insertions(+), 84 deletions(-) create mode 100644 dstat-interface/dstat-interface/interface/exp_window.py diff --git a/dstat-interface/dstat-interface/interface/dstatinterface.glade b/dstat-interface/dstat-interface/interface/dstatinterface.glade index 6b1062a..511429a 100644 --- a/dstat-interface/dstat-interface/interface/dstatinterface.glade +++ b/dstat-interface/dstat-interface/interface/dstatinterface.glade @@ -6,37 +6,46 @@ <columns> <!-- column-name index --> <column type="guint"/> + <!-- column-name id --> + <column type="gchararray"/> <!-- column-name name --> <column type="gchararray"/> </columns> <data> <row> <col id="0">0</col> - <col id="1" translatable="yes">Chronoamperometry</col> + <col id="1" translatable="yes">cae</col> + <col id="2" translatable="yes">Chronoamperometry</col> </row> <row> <col id="0">1</col> - <col id="1" translatable="yes">Linear Sweep Voltammetry</col> + <col id="1" translatable="yes">lsv</col> + <col id="2" translatable="yes">Linear Sweep Voltammetry</col> </row> <row> <col id="0">2</col> - <col id="1" translatable="yes">Cyclic Voltammetry</col> + <col id="1" translatable="yes">cve</col> + <col id="2" translatable="yes">Cyclic Voltammetry</col> </row> <row> <col id="0">3</col> - <col id="1" translatable="yes">Square Wave Voltammetry</col> + <col id="1" translatable="yes">swv</col> + <col id="2" translatable="yes">Square Wave Voltammetry</col> </row> <row> <col id="0">4</col> - <col id="1" translatable="yes">Differential Pulse Voltammetry</col> + <col id="1" translatable="yes">dpv</col> + <col id="2" translatable="yes">Differential Pulse Voltammetry</col> </row> <row> <col id="0">5</col> - <col id="1" translatable="yes">AC Voltammetry</col> + <col id="1" translatable="yes">acv</col> + <col id="2" translatable="yes">AC Voltammetry</col> </row> <row> <col id="0">6</col> - <col id="1" translatable="yes">Photodiode</col> + <col id="1" translatable="yes">pde</col> + <col id="2" translatable="yes">Photodiode</col> </row> </data> </object> @@ -188,6 +197,7 @@ <property name="label">gtk-connect</property> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_menu_dropbot_connect_activate" swapped="no"/> </object> @@ -198,6 +208,7 @@ <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">False</property> + <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_menu_dropbot_disconnect_activate" swapped="no"/> </object> diff --git a/dstat-interface/dstat-interface/interface/exp_window.py b/dstat-interface/dstat-interface/interface/exp_window.py new file mode 100644 index 0000000..253a268 --- /dev/null +++ b/dstat-interface/dstat-interface/interface/exp_window.py @@ -0,0 +1,48 @@ +import chronoamp +import lsv +import cv +import swv +import dpv +import acv +import pd + +class Experiments: + def __init__(self, builder): + self.builder = builder + + self.chronoamp = chronoamp.chronoamp() + self.lsv = lsv.lsv() + self.cve = cv.cv() + self.swv = swv.swv() + self.dpv = dpv.dpv() + self.acv = acv.acv() + self.pde = pd.pd() + + #fill exp_section + self.exp_section = self.builder.get_object('exp_section_box') + self.containers = {'cae': self.chronoamp.builder.get_object( + 'scrolledwindow1')} + self.containers['lsv'] = self.lsv.builder.get_object('scrolledwindow1') + self.containers['cve'] = self.cve.builder.get_object('scrolledwindow1') + self.containers['swv'] = self.swv.builder.get_object('scrolledwindow1') + self.containers['dpv'] = self.dpv.builder.get_object('scrolledwindow1') + self.containers['acv'] = self.acv.builder.get_object('scrolledwindow1') + self.containers['pde'] = self.pde.builder.get_object('scrolledwindow1') + + for key in self.containers: + self.containers[key].reparent(self.exp_section) + self.containers[key].hide() + + def set_exp(self, selection): + """Changes parameter tab to selected experiment. Returns True if + successful, False if invalid selection received. + + Arguments: + selection -- id string of experiment type + """ + for key in self.containers: + self.containers[key].hide() + + self.containers[selection].show() + + return True \ No newline at end of file diff --git a/dstat-interface/dstat-interface/interface_test.py b/dstat-interface/dstat-interface/interface_test.py index b9c6f9c..b4a2e35 100644 --- a/dstat-interface/dstat-interface/interface_test.py +++ b/dstat-interface/dstat-interface/interface_test.py @@ -20,16 +20,10 @@ except ImportError: print('gobject not available') sys.exit(1) -import interface.adc_pot as adc_pot -import interface.chronoamp as chronoamp -import interface.lsv as lsv -import interface.cv as cv -import interface.swv as swv -import interface.dpv as dpv -import interface.acv as acv -import interface.pd as pd import interface.save as save import dstat_comm as comm +import interface.exp_window as exp_window +import interface.adc_pot as adc_pot import mpltest import microdrop @@ -70,19 +64,14 @@ class Main: self.stopbutton = self.builder.get_object('pot_stop') self.startbutton = self.builder.get_object('pot_start') self.adc_pot = adc_pot.adc_pot() - self.chronoamp = chronoamp.chronoamp() - self.lsv = lsv.lsv() - self.cve = cv.cv() - self.swv = swv.swv() - self.dpv = dpv.dpv() - self.acv = acv.acv() - self.pde = pd.pd() self.error_context_id = self.statusbar.get_context_id("error") self.message_context_id = self.statusbar.get_context_id("message") self.plotwindow = self.builder.get_object('plotbox') + self.exp_window = exp_window.Experiments(self.builder) + #setup autosave self.autosave_checkbox = self.builder.get_object('autosave_checkbutton') self.autosavedir_button = self.builder.get_object('autosavedir_button') @@ -90,24 +79,6 @@ class Main: self.plot = mpltest.plotbox(self.plotwindow) - #fill exp_section - self.exp_section = self.builder.get_object('exp_section_box') - self.chronoamp_container = self.chronoamp.builder.get_object( - 'scrolledwindow1') - self.chronoamp_container.reparent(self.exp_section) - self.lsv_container = self.lsv.builder.get_object('scrolledwindow1') - self.lsv_container.reparent(self.exp_section) - self.cve_container = self.cve.builder.get_object('scrolledwindow1') - self.cve_container.reparent(self.exp_section) - self.swv_container = self.swv.builder.get_object('scrolledwindow1') - self.swv_container.reparent(self.exp_section) - self.dpv_container = self.dpv.builder.get_object('scrolledwindow1') - self.dpv_container.reparent(self.exp_section) - self.acv_container = self.acv.builder.get_object('scrolledwindow1') - self.acv_container.reparent(self.exp_section) - self.pde_container = self.pde.builder.get_object('scrolledwindow1') - self.pde_container.reparent(self.exp_section) - #fill adc_pot_box self.adc_pot_box = self.builder.get_object('gain_adc_box') self.adc_pot_container = self.adc_pot.builder.get_object('vbox1') @@ -129,7 +100,7 @@ class Main: #initialize experiment selection combobox self.expcombobox = self.builder.get_object('expcombobox') self.expcombobox.pack_start(self.cell, True) - self.expcombobox.add_attribute(self.cell, 'text', 1) + self.expcombobox.add_attribute(self.cell, 'text', 2) self.expcombobox.set_active(0) self.spinner = self.builder.get_object('spinner') @@ -138,14 +109,7 @@ class Main: self.mainwindow.set_title("Dstat Interface 0.1") self.mainwindow.show_all() - # hide unused experiment controls - #self.chronoamp_container.hide() - self.lsv_container.hide() - self.cve_container.hide() - self.swv_container.hide() - self.dpv_container.hide() - self.acv_container.hide() - self.pde_container.hide() + self.on_expcombobox_changed() self.expnumber = 0 @@ -156,40 +120,6 @@ class Main: self.dropbot_enabled = False self.dropbot_triggered = False - def exp_param_show(self, selection): - """Changes parameter tab to selected experiment. - - Arguments: - selection -- integer index of experiment type - """ - self.chronoamp_container.hide() - self.lsv_container.hide() - self.cve_container.hide() - self.swv_container.hide() - self.dpv_container.hide() - self.acv_container.hide() - self.pde_container.hide() - - self.statusbar.remove_all(self.error_context_id) - - if selection == 0: - self.chronoamp_container.show() - elif selection == 1: - self.lsv_container.show() - elif selection == 2: - self.cve_container.show() - elif selection == 3: - self.swv_container.show() - elif selection == 4: - self.dpv_container.show() - elif selection == 5: - self.acv_container.show() - elif selection == 6: - self.pde_container.show() - else: - self.statusbar.push( - self.error_context_id, "Experiment not yet implemented") - def on_window1_destroy(self, object, data=None): """ Quit when main window closed.""" print "quit with cancel" @@ -208,7 +138,12 @@ class Main: def on_expcombobox_changed(self, data=None): """Change the experiment window when experiment box changed.""" - self.exp_param_show(self.expcombobox.get_active) + model = self.expcombobox.get_model() + _, id, _ = model[self.expcombobox.get_active()] # id is in 2nd col + self.statusbar.remove_all(self.error_context_id) + if not self.exp_window.set_exp(id): + self.statusbar.push( + self.error_context_id, "Experiment not yet implemented") def on_serial_refresh_clicked(self, data=None): """Refresh list of serial devices.""" -- GitLab