From 5413c106f2bba0548f31e9dec02692dc8f204462 Mon Sep 17 00:00:00 2001
From: Michael Dryden <mdryden@chem.utoronto.ca>
Date: Mon, 21 Apr 2014 19:04:28 -0400
Subject: [PATCH] Implemented LSV and global dstat/ADC settings. Separated
 interfaces into different files. Experiment outputs appropriate instrument
 commands.

---
 dstatInterface/dstatInterface.glade           | 409 -----------------
 .../dstatInterface.xcodeproj/project.pbxproj  |   8 +-
 .../UserInterfaceState.xcuserstate            | Bin 17648 -> 22959 bytes
 dstatInterface/dstat_comm.py                  |  19 +
 dstatInterface/interface/__init__.py          |   0
 dstatInterface/interface/adc_pot.glade        | 389 ++++++++++++++++
 dstatInterface/interface/adc_pot.py           |  28 ++
 dstatInterface/interface/chronoamp.glade      | 170 +++++++
 dstatInterface/interface/chronoamp.py         |  10 +
 dstatInterface/interface/cv.glade             | 434 ++++++++++++++++++
 dstatInterface/interface/cv.py                |   9 +
 dstatInterface/interface/lsv.glade            | 362 +++++++++++++++
 dstatInterface/interface/lsv.py               |  13 +
 dstatInterface/interface_test.py              | 164 +++++++
 14 files changed, 1604 insertions(+), 411 deletions(-)
 delete mode 100644 dstatInterface/dstatInterface.glade
 create mode 100644 dstatInterface/dstat_comm.py
 create mode 100644 dstatInterface/interface/__init__.py
 create mode 100644 dstatInterface/interface/adc_pot.glade
 create mode 100644 dstatInterface/interface/adc_pot.py
 create mode 100644 dstatInterface/interface/chronoamp.glade
 create mode 100644 dstatInterface/interface/chronoamp.py
 create mode 100644 dstatInterface/interface/cv.glade
 create mode 100644 dstatInterface/interface/cv.py
 create mode 100644 dstatInterface/interface/lsv.glade
 create mode 100644 dstatInterface/interface/lsv.py
 create mode 100644 dstatInterface/interface_test.py

diff --git a/dstatInterface/dstatInterface.glade b/dstatInterface/dstatInterface.glade
deleted file mode 100644
index 1f44d93..0000000
--- a/dstatInterface/dstatInterface.glade
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkListStore" id="ExpComboListStore">
-    <columns>
-      <!-- column-name index -->
-      <column type="guint"/>
-      <!-- column-name name -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">0</col>
-        <col id="1" translatable="yes">Chronoamperometry</col>
-      </row>
-      <row>
-        <col id="0">1</col>
-        <col id="1" translatable="yes">Linear Sweep Voltammetry</col>
-      </row>
-      <row>
-        <col id="0">2</col>
-        <col id="1" translatable="yes">Cyclic Voltammetry</col>
-      </row>
-      <row>
-        <col id="0">3</col>
-        <col id="1" translatable="yes">Square Wave Voltammetry</col>
-      </row>
-      <row>
-        <col id="0">4</col>
-        <col id="1" translatable="yes">AC Voltammetry</col>
-      </row>
-      <row>
-        <col id="0">5</col>
-        <col id="1" translatable="yes">Photodiode</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAboutDialog" id="aboutdialog1">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="type_hint">dialog</property>
-    <property name="program_name">Dstat Interface</property>
-    <property name="version">0.1</property>
-    <property name="copyright" translatable="yes">© Michael Dryden 2014</property>
-    <property name="license" translatable="yes">GNU</property>
-    <property name="authors">Michael Dryden</property>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkTextBuffer" id="databuffer1"/>
-  <object class="GtkImage" id="image1">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="yalign">0.47999998927116394</property>
-    <property name="stock">gtk-missing-image</property>
-  </object>
-  <object class="GtkWindow" id="window1">
-    <property name="can_focus">False</property>
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes">Main</property>
-    <property name="default_width">800</property>
-    <property name="default_height">500</property>
-    <signal name="destroy" handler="on_window1_destroy" swapped="no"/>
-    <child>
-      <object class="GtkVBox" id="vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <child>
-          <object class="GtkMenuBar" id="menubar1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="menuitem1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_File</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk_new">
-                        <property name="label">gtk-new</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_gtk_new_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk-open">
-                        <property name="label">gtk-open</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk-save">
-                        <property name="label">gtk-save</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk-save-as">
-                        <property name="label">gtk-save-as</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk_quit">
-                        <property name="label">gtk-quit</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_gtk_quit_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="menuitem2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Edit</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="imagemenuitem7">
-                        <property name="label">gtk-copy</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="imagemenuitem8">
-                        <property name="label">gtk-paste</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="gtk_view">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_View</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu5">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="push_status">
-                        <property name="label">Push Status</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_push_status_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="pop_status">
-                        <property name="label">Pop Status</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_pop_status_activate" swapped="no"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" id="clear_status">
-                        <property name="label">Clear Status</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_clear_status_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="menuitem4">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Help</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="gtk_about">
-                        <property name="label">gtk-about</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_gtk_about_activate" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHPaned" id="hpaned1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <child>
-              <object class="GtkVBox" id="vbox2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkVBox" id="vbox3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkLabel" id="label7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Experiment</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="padding">10</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" id="expcombobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="model">ExpComboListStore</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkScrolledWindow" id="scrolledwindow2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">never</property>
-                    <property name="vscrollbar_policy">automatic</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="resize">False</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkNotebook" id="notebook1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <child>
-                  <object class="GtkLabel" id="label4">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">label</property>
-                  </object>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">page 1</property>
-                  </object>
-                  <packing>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">automatic</property>
-                    <property name="vscrollbar_policy">automatic</property>
-                    <child>
-                      <object class="GtkTextView" id="datatextview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="editable">False</property>
-                        <property name="buffer">databuffer1</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">page 2</property>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child type="tab">
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkStatusbar" id="statusbar">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="spacing">2</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-</interface>
diff --git a/dstatInterface/dstatInterface.xcodeproj/project.pbxproj b/dstatInterface/dstatInterface.xcodeproj/project.pbxproj
index f497925..cba776c 100644
--- a/dstatInterface/dstatInterface.xcodeproj/project.pbxproj
+++ b/dstatInterface/dstatInterface.xcodeproj/project.pbxproj
@@ -7,8 +7,10 @@
 	objects = {
 
 /* Begin PBXFileReference section */
-		5FAED9CD1900FBDA00A9DDD4 /* dstatInterface.glade */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = dstatInterface.glade; sourceTree = "<group>"; };
 		5FAED9CE1900FE6B00A9DDD4 /* test2.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = test2.py; sourceTree = "<group>"; };
+		5FCB541B190591CD00CEB148 /* interface */ = {isa = PBXFileReference; lastKnownFileType = folder; path = interface; sourceTree = "<group>"; };
+		5FCB541D1905923800CEB148 /* interface_test.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = interface_test.py; sourceTree = "<group>"; };
+		5FCB54231905B6EE00CEB148 /* dstat_comm.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = dstat_comm.py; sourceTree = "<group>"; };
 		5FDC0DFD18FDAD79003F857A /* main.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = main.py; sourceTree = "<group>"; };
 		5FDC1E4218FF9572007AD04D /* glade1.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = glade1.py; sourceTree = "<group>"; };
 		5FDC1E4318FF9A95007AD04D /* test1.glade */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = test1.glade; sourceTree = "<group>"; };
@@ -18,8 +20,10 @@
 		5FDC0DF218FDACDA003F857A = {
 			isa = PBXGroup;
 			children = (
+				5FCB541D1905923800CEB148 /* interface_test.py */,
+				5FCB54231905B6EE00CEB148 /* dstat_comm.py */,
+				5FCB541B190591CD00CEB148 /* interface */,
 				5FAED9CE1900FE6B00A9DDD4 /* test2.py */,
-				5FAED9CD1900FBDA00A9DDD4 /* dstatInterface.glade */,
 				5FDC1E4318FF9A95007AD04D /* test1.glade */,
 				5FDC0DFD18FDAD79003F857A /* main.py */,
 				5FDC1E4218FF9572007AD04D /* glade1.py */,
diff --git a/dstatInterface/dstatInterface.xcodeproj/project.xcworkspace/xcuserdata/mdryden.xcuserdatad/UserInterfaceState.xcuserstate b/dstatInterface/dstatInterface.xcodeproj/project.xcworkspace/xcuserdata/mdryden.xcuserdatad/UserInterfaceState.xcuserstate
index fe0af0358b47f2512401f9914dc1138dfb5ba042..084b68d140c72301f4199b5c640ca7a0d35e2c56 100644
GIT binary patch
literal 22959
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
O`pfV3Nmil38UF{ud8wNK

delta 10660
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
Q)WIL}vhuy^wdR@s2f8!E2mk;8

diff --git a/dstatInterface/dstat_comm.py b/dstatInterface/dstat_comm.py
new file mode 100644
index 0000000..e1163a3
--- /dev/null
+++ b/dstatInterface/dstat_comm.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+def lsv_exp(adc_buffer, adc_rate, adc_pga, gain, start, stop, slope):
+    s = "L "
+    s += (adc_buffer)
+    s += " "
+    s += (adc_rate)
+    s += " "
+    s += (adc_pga)
+    s += " "
+    s += (gain)
+    s += " "
+    s += str(start)
+    s += " "
+    s += str(stop)
+    s += " "
+    s += str(slope)
+    print s
+#    print ("L ", adc_buffer, adc_rate, adc_pga, gain, start, stop, slope)
\ No newline at end of file
diff --git a/dstatInterface/interface/__init__.py b/dstatInterface/interface/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/dstatInterface/interface/adc_pot.glade b/dstatInterface/interface/adc_pot.glade
new file mode 100644
index 0000000..18dbe2e
--- /dev/null
+++ b/dstatInterface/interface/adc_pot.glade
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkListStore" id="gain_liststore">
+    <columns>
+      <!-- column-name index -->
+      <column type="guint"/>
+      <!-- column-name label -->
+      <column type="gchararray"/>
+      <!-- column-name command -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">0</col>
+        <col id="1" translatable="yes">100 Ω (15 mA FS)</col>
+        <col id="2" translatable="yes">0</col>
+      </row>
+      <row>
+        <col id="0">1</col>
+        <col id="1" translatable="yes">300 Ω (5 mA FS)</col>
+        <col id="2" translatable="yes">1</col>
+      </row>
+      <row>
+        <col id="0">2</col>
+        <col id="1" translatable="yes">3 kΩ (500 µA FS)</col>
+        <col id="2" translatable="yes">2</col>
+      </row>
+      <row>
+        <col id="0">3</col>
+        <col id="1" translatable="yes">30 kΩ (50 µA FS)</col>
+        <col id="2" translatable="yes">3</col>
+      </row>
+      <row>
+        <col id="0">4</col>
+        <col id="1" translatable="yes">300 kΩ (5 µA FS)</col>
+        <col id="2" translatable="yes">4</col>
+      </row>
+      <row>
+        <col id="0">5</col>
+        <col id="1" translatable="yes">3 MΩ (500 nA FS)</col>
+        <col id="2" translatable="yes">5</col>
+      </row>
+      <row>
+        <col id="0">6</col>
+        <col id="1" translatable="yes">30 MΩ (50 nA FS)</col>
+        <col id="2" translatable="yes">6</col>
+      </row>
+      <row>
+        <col id="0">7</col>
+        <col id="1" translatable="yes">500 MΩ (3 nA FS)</col>
+        <col id="2" translatable="yes">7</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="pga_liststore">
+    <columns>
+      <!-- column-name index -->
+      <column type="guint"/>
+      <!-- column-name label -->
+      <column type="gchararray"/>
+      <!-- column-name command -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">0</col>
+        <col id="1" translatable="yes">1x</col>
+        <col id="2" translatable="yes">0x0</col>
+      </row>
+      <row>
+        <col id="0">1</col>
+        <col id="1" translatable="yes">2x</col>
+        <col id="2" translatable="yes">0x1</col>
+      </row>
+      <row>
+        <col id="0">2</col>
+        <col id="1" translatable="yes">4x</col>
+        <col id="2" translatable="yes">0x2</col>
+      </row>
+      <row>
+        <col id="0">3</col>
+        <col id="1" translatable="yes">8x</col>
+        <col id="2" translatable="yes">0x3</col>
+      </row>
+      <row>
+        <col id="0">4</col>
+        <col id="1" translatable="yes">16x</col>
+        <col id="2" translatable="yes">0x4</col>
+      </row>
+      <row>
+        <col id="0">5</col>
+        <col id="1" translatable="yes">32x</col>
+        <col id="2" translatable="yes">0x5</col>
+      </row>
+      <row>
+        <col id="0">6</col>
+        <col id="1" translatable="yes">64x</col>
+        <col id="2" translatable="yes">0x6</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="srate_liststore">
+    <columns>
+      <!-- column-name index -->
+      <column type="guint"/>
+      <!-- column-name label -->
+      <column type="gchararray"/>
+      <!-- column-name command -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">0</col>
+        <col id="1" translatable="yes">2.5 Hz</col>
+        <col id="2" translatable="yes">0x03</col>
+      </row>
+      <row>
+        <col id="0">1</col>
+        <col id="1" translatable="yes">5 Hz</col>
+        <col id="2" translatable="yes">0x13</col>
+      </row>
+      <row>
+        <col id="0">2</col>
+        <col id="1" translatable="yes">10 Hz</col>
+        <col id="2" translatable="yes">0x23</col>
+      </row>
+      <row>
+        <col id="0">3</col>
+        <col id="1" translatable="yes">15 Hz</col>
+        <col id="2" translatable="yes">0x33</col>
+      </row>
+      <row>
+        <col id="0">4</col>
+        <col id="1" translatable="yes">25 Hz</col>
+        <col id="2" translatable="yes">0x43</col>
+      </row>
+      <row>
+        <col id="0">5</col>
+        <col id="1" translatable="yes">30 Hz</col>
+        <col id="2" translatable="yes">0x53</col>
+      </row>
+      <row>
+        <col id="0">6</col>
+        <col id="1" translatable="yes">50 Hz</col>
+        <col id="2" translatable="yes">0x63</col>
+      </row>
+      <row>
+        <col id="0">7</col>
+        <col id="1" translatable="yes">60 Hz</col>
+        <col id="2" translatable="yes">0x72</col>
+      </row>
+      <row>
+        <col id="0">8</col>
+        <col id="1" translatable="yes">100 Hz</col>
+        <col id="2" translatable="yes">0x82</col>
+      </row>
+      <row>
+        <col id="0">9</col>
+        <col id="1" translatable="yes">500 Hz</col>
+        <col id="2" translatable="yes">0x92</col>
+      </row>
+      <row>
+        <col id="0">10</col>
+        <col id="1" translatable="yes">1 kHz</col>
+        <col id="2" translatable="yes">0xA1</col>
+      </row>
+      <row>
+        <col id="0">11</col>
+        <col id="1" translatable="yes">2 kHz</col>
+        <col id="2" translatable="yes">0xB0</col>
+      </row>
+      <row>
+        <col id="0">12</col>
+        <col id="1" translatable="yes">3.75 kHz</col>
+        <col id="2" translatable="yes">0xC0</col>
+      </row>
+      <row>
+        <col id="0">13</col>
+        <col id="1" translatable="yes">7.5 kHz</col>
+        <col id="2" translatable="yes">0xD0</col>
+      </row>
+      <row>
+        <col id="0">14</col>
+        <col id="1" translatable="yes">15 kHz</col>
+        <col id="2" translatable="yes">0xE0</col>
+      </row>
+      <row>
+        <col id="0">15</col>
+        <col id="1" translatable="yes">30 kHz</col>
+        <col id="2" translatable="yes">0xF0</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkVBox" id="vbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkFrame" id="adc_frame">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">out</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="bottom_padding">5</property>
+                    <property name="left_padding">5</property>
+                    <property name="right_padding">5</property>
+                    <child>
+                      <object class="GtkTable" id="table1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <property name="row_spacing">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">Gain of the ADC's programmable gain amplifier. Default is 2 - gives full scale input.</property>
+                            <property name="label" translatable="yes">PGA Setting</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Sample Rate</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="buffer_checkbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_EXPAND</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">The ADC's input buffer greatly increases input impedance. Should generally be enabled.</property>
+                            <property name="label" translatable="yes">Input Buffer</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="pga_combobox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="model">pga_liststore</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="srate_combobox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="model">srate_liststore</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">ADC Settings</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">2</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="pstat_frame">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">out</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="bottom_padding">5</property>
+                    <property name="left_padding">5</property>
+                    <property name="right_padding">5</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" id="label6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">Gain of the I-V converter. Increasing this improves S/N, unlike the ADC's PGA.</property>
+                            <property name="label" translatable="yes">Gain</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="gain_combobox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="model">gain_liststore</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Potentiostat Settings</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">2</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/dstatInterface/interface/adc_pot.py b/dstatInterface/interface/adc_pot.py
new file mode 100644
index 0000000..c534bad
--- /dev/null
+++ b/dstatInterface/interface/adc_pot.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+
+import gtk
+
+class adc_pot:
+    def __init__(self):
+        self.builder = gtk.Builder()
+        self.builder.add_from_file('interface/adc_pot.glade')
+        self.builder.connect_signals(self)
+        self.cell = gtk.CellRendererText()
+        
+        self.buffer_toggle = self.builder.get_object('buffer_checkbutton')
+
+        #initialize comboboxes
+        self.pga_combobox = self.builder.get_object('pga_combobox')
+        self.pga_combobox.pack_start(self.cell, True)
+        self.pga_combobox.add_attribute(self.cell, 'text', 1)
+        self.pga_combobox.set_active(1)
+
+        self.srate_combobox = self.builder.get_object('srate_combobox')
+        self.srate_combobox.pack_start(self.cell, True)
+        self.srate_combobox.add_attribute(self.cell, 'text', 1)
+        self.srate_combobox.set_active(7)
+        
+        self.gain_combobox = self.builder.get_object('gain_combobox')
+        self.gain_combobox.pack_start(self.cell, True)
+        self.gain_combobox.add_attribute(self.cell, 'text', 1)
+        self.gain_combobox.set_active(1)
\ No newline at end of file
diff --git a/dstatInterface/interface/chronoamp.glade b/dstatInterface/interface/chronoamp.glade
new file mode 100644
index 0000000..3458127
--- /dev/null
+++ b/dstatInterface/interface/chronoamp.glade
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkListStore" id="ca list">
+    <columns>
+      <!-- column-name index -->
+      <column type="guint"/>
+      <!-- column-name millivolts -->
+      <column type="gint"/>
+      <!-- column-name seconds -->
+      <column type="guint"/>
+    </columns>
+  </object>
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <property name="default_width">300</property>
+    <property name="default_height">500</property>
+    <child>
+      <object class="GtkScrolledWindow" id="scrolledwindow1">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="hscrollbar_policy">automatic</property>
+        <property name="vscrollbar_policy">automatic</property>
+        <child>
+          <object class="GtkViewport" id="viewport1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkTable" id="table1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Potential (mV)</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="potential_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="width_chars">5</property>
+                        <property name="text" translatable="yes">0</property>
+                        <property name="xalign">1</property>
+                        <property name="truncate_multiline">True</property>
+                        <property name="invisible_char_set">True</property>
+                        <property name="caps_lock_warning">False</property>
+                        <property name="primary_icon_activatable">False</property>
+                        <property name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="x_options"/>
+                        <property name="y_options">GTK_SHRINK</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Time (s)</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="time_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">●</property>
+                        <property name="width_chars">5</property>
+                        <property name="text" translatable="yes">0</property>
+                        <property name="xalign">1</property>
+                        <property name="truncate_multiline">True</property>
+                        <property name="invisible_char_set">True</property>
+                        <property name="caps_lock_warning">False</property>
+                        <property name="primary_icon_activatable">False</property>
+                        <property name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"/>
+                        <property name="y_options">GTK_SHRINK</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="add_button">
+                        <property name="label">gtk-add</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="remove_button">
+                        <property name="label">gtk-remove</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <child>
+                      <object class="GtkTreeView" id="treeview1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="model">ca list</property>
+                        <property name="search_column">0</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/dstatInterface/interface/chronoamp.py b/dstatInterface/interface/chronoamp.py
new file mode 100644
index 0000000..9bb398f
--- /dev/null
+++ b/dstatInterface/interface/chronoamp.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+import gtk
+
+class chronoamp:
+    def __init__(self):
+        self.builder = gtk.Builder()
+        self.builder.add_from_file('interface/chronoamp.glade')
+        self.builder.connect_signals(self)
+        self.cell = gtk.CellRendererText()
\ No newline at end of file
diff --git a/dstatInterface/interface/cv.glade b/dstatInterface/interface/cv.glade
new file mode 100644
index 0000000..ab547ac
--- /dev/null
+++ b/dstatInterface/interface/cv.glade
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkScrolledWindow" id="scrolledwindow1">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="hscrollbar_policy">automatic</property>
+        <property name="vscrollbar_policy">automatic</property>
+        <child>
+          <object class="GtkViewport" id="viewport1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">out</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="bottom_padding">5</property>
+                        <property name="left_padding">5</property>
+                        <property name="right_padding">5</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">3</property>
+                            <child>
+                              <object class="GtkLabel" id="label3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Potential (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label4">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Time (s)</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label5">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                              <packing>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Cleaning</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label7">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Deposition</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="clean_mV">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="dep_mV">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="dep_s">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="clean_s">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Preconditioning</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">2</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">out</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="bottom_padding">5</property>
+                        <property name="left_padding">5</property>
+                        <property name="right_padding">5</property>
+                        <child>
+                          <object class="GtkTable" id="table2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">5</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">10</property>
+                            <property name="homogeneous">True</property>
+                            <child>
+                              <object class="GtkLabel" id="label8">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Start (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label9">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Vertex 1 (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label10">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Vertex 2 (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="start_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="v1_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="v2_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label11">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Slope (mV/s)</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label12">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Scans</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="slope_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="scans_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Experiment</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">2</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/dstatInterface/interface/cv.py b/dstatInterface/interface/cv.py
new file mode 100644
index 0000000..102352d
--- /dev/null
+++ b/dstatInterface/interface/cv.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+
+import gtk
+
+class cv:
+    def __init__(self):
+        self.builder = gtk.Builder()
+        self.builder.add_from_file('interface/cv.glade')
+        self.builder.connect_signals(self)
diff --git a/dstatInterface/interface/lsv.glade b/dstatInterface/interface/lsv.glade
new file mode 100644
index 0000000..63c4468
--- /dev/null
+++ b/dstatInterface/interface/lsv.glade
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkScrolledWindow" id="scrolledwindow1">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="hscrollbar_policy">automatic</property>
+        <property name="vscrollbar_policy">automatic</property>
+        <child>
+          <object class="GtkViewport" id="viewport1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="frame1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">out</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="bottom_padding">5</property>
+                        <property name="left_padding">5</property>
+                        <property name="right_padding">5</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">3</property>
+                            <child>
+                              <object class="GtkLabel" id="label3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Potential (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label4">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Time (s)</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label5">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                              <packing>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Cleaning</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label7">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Deposition</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="clean_mV">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="dep_mV">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="dep_s">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="clean_s">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="right_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Preconditioning</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">2</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">out</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="bottom_padding">5</property>
+                        <property name="left_padding">5</property>
+                        <property name="right_padding">5</property>
+                        <child>
+                          <object class="GtkTable" id="table2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">10</property>
+                            <property name="homogeneous">True</property>
+                            <child>
+                              <object class="GtkLabel" id="label8">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Start (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label9">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Stop (mV)</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label10">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Slope (mV/s)</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="start_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="stop_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="slope_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">●</property>
+                                <property name="width_chars">8</property>
+                                <property name="text" translatable="yes">0</property>
+                                <property name="xalign">1</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                                <property name="y_padding">3</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Experiment</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">2</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/dstatInterface/interface/lsv.py b/dstatInterface/interface/lsv.py
new file mode 100644
index 0000000..e1941f3
--- /dev/null
+++ b/dstatInterface/interface/lsv.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import gtk
+
+class lsv:
+    def __init__(self):
+        self.builder = gtk.Builder()
+        self.builder.add_from_file('interface/lsv.glade')
+        self.builder.connect_signals(self)
+
+        self.start_entry = self.builder.get_object('start_entry')
+        self.stop_entry = self.builder.get_object('stop_entry')
+        self.slope_entry = self.builder.get_object('slope_entry')
\ No newline at end of file
diff --git a/dstatInterface/interface_test.py b/dstatInterface/interface_test.py
new file mode 100644
index 0000000..f7e13fa
--- /dev/null
+++ b/dstatInterface/interface_test.py
@@ -0,0 +1,164 @@
+#!/usr/bin/env python
+
+import sys
+try:
+    import pygtk
+    pygtk.require('2.0')
+except:
+    pass
+try:
+    import gtk
+except:
+    print('GTK 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 dstat_comm as comm
+
+class Error(Exception):
+    pass
+
+class InputError(Error):
+    """Exception raised for errors in the input.
+        
+        Attributes:
+        expr -- input expression in which the error occurred
+        msg  -- error message
+        """
+    
+    def __init__(self, expr, msg):
+        self.expr = expr
+        self.msg = msg
+
+
+class main:
+    def __init__(self):
+        self.builder = gtk.Builder()
+        self.builder.add_from_file('interface/dstatinterface.glade')
+        self.builder.connect_signals(self)
+        self.cell = gtk.CellRendererText()
+
+        #create instance of interface components
+        self.statusbar = self.builder.get_object('statusbar')
+        self.window = self.builder.get_object('window1')
+        self.aboutdialog = self.builder.get_object('aboutdialog1')
+        self.adc_pot = adc_pot.adc_pot()
+        self.chronoamp = chronoamp.chronoamp()
+        self.lsv = lsv.lsv()
+        self.cv = cv.cv()
+        
+        self.error_context_id = self.statusbar.get_context_id("error")
+        
+        #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.cv_container = self.cv.builder.get_object('scrolledwindow1')
+        self.cv_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')
+        self.adc_pot_container.reparent(self.adc_pot_box)
+        
+        #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.set_active(0)
+
+        self.mainwindow = self.builder.get_object('window1')
+        self.mainwindow.set_title("Dstat Interface 0.1")
+        self.mainwindow.show_all()
+#        self.chronoamp_container.hide()
+        self.lsv_container.hide()
+        self.cv_container.hide()
+
+    def exp_param_show(self, selection):
+        self.chronoamp_container.hide()
+        self.lsv_container.hide()
+        self.cv_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.cv_container.show()
+        else:
+            self.statusbar.push(self.error_context_id, "Experiment not yet implemented")
+
+    def on_window1_destroy(self, object, data=None):
+        print "quit with cancel"
+        gtk.main_quit()
+
+    # This is the same as above but for our menu item.
+    def on_gtk_quit_activate(self, menuitem, data=None):
+        print "quit from menu"
+        gtk.main_quit()
+
+    def on_gtk_about_activate(self, menuitem, data=None):
+        print "help about selected"
+        self.response = self.aboutdialog.run() #waits for user to click close - could test response with if
+        self.aboutdialog.hide()
+
+    def on_expcombobox_changed(self, data=None):
+        self.exp_param_show(self.expcombobox.get_active())
+    
+    def on_pot_start_clicked(self, data=None):
+        selection = self.expcombobox.get_active()
+        
+        if selection == 0: #CA
+            pass
+        elif selection == 1: #LSV
+            if self.adc_pot.buffer_toggle.get_active(): #True if box checked
+                adc_buffer = "0x2"
+            else:
+                adc_buffer = "0x0"
+            
+            self.srate_model = self.adc_pot.srate_combobox.get_model()
+            self.pga_model = self.adc_pot.pga_combobox.get_model()
+            self.gain_model = self.adc_pot.gain_combobox.get_model()
+            
+            adc_rate = self.srate_model.get_value(self.adc_pot.srate_combobox.get_active_iter(), 2) #third column
+            adc_pga = self.pga_model.get_value(self.adc_pot.pga_combobox.get_active_iter(), 2)
+            gain = self.gain_model.get_value(self.adc_pot.gain_combobox.get_active_iter(), 2)
+            
+            try:
+                self.statusbar.remove_all(self.error_context_id)
+                start = int(self.lsv.start_entry.get_text())
+                stop = int(self.lsv.stop_entry.get_text())
+                slope = int(self.lsv.slope_entry.get_text())
+                
+                #check parameters are within hardware limits
+                if (start > 1499 or start < -1500):
+                    raise InputError(start,"Start parameter exceeds hardware limits.")
+                if (stop > 1499 or stop < -1500):
+                    raise InputError(stop,"Stop parameter exceeds hardware limits.")
+                if (slope > 2000 or slope < 1):
+                    raise InputError(slope,"Slope parameter exceeds hardware limits.")
+                if start == stop:
+                    raise InputError(start,"Start cannot equal Stop.")
+                
+                comm.lsv_exp(adc_buffer, adc_rate, adc_pga, gain, start, stop, slope)
+                
+            except ValueError:
+                self.statusbar.push(self.error_context_id, "Experiment parameters must be integers.")
+            except InputError as e:
+                self.statusbar.push(self.error_context_id, e.msg)
+        
+        elif selection == 2: #CV
+            pass
+        else:
+            pass
+
+if __name__ == "__main__":
+    main = main()
+    gtk.main()
\ No newline at end of file
-- 
GitLab