diff --git a/opi/ds345.bob b/opi/ds345.bob
index 14e85705558028c3fd88aa64969379269754ef6d..783b85167f3732f409a9e94174b8705b8049719d 100644
--- a/opi/ds345.bob
+++ b/opi/ds345.bob
@@ -21,7 +21,7 @@
</widget>
<widget type="label" version="2.0.0">
<name>Label_1</name>
- <text>Some Value:</text>
+ <text>Offset</text>
<y>50</y>
</widget>
<widget type="textupdate" version="2.0.0">
diff --git a/opi/test.bob b/opi/test.bob
index c49243a3ab3194d6440c6705ea3b213891f4ca69..c6a2db270d760cd1b89127a764140ecac3d49e6b 100644
--- a/opi/test.bob
+++ b/opi/test.bob
@@ -1,87 +1,658 @@
<?xml version="1.0" encoding="UTF-8"?>
<display version="2.0.0">
- <name>Helmholtz Coils</name>
+ <name>Heater Demo</name>
+ <macros>
+ <P>$(USER)</P>
+ <tooltip>Hello!</tooltip>
+ </macros>
+ <width>700</width>
+ <height>700</height>
+ <actions>
+ </actions>
<widget type="label" version="2.0.0">
- <name>Label</name>
- <class>TITLE</class>
- <text>Helmholtz Coils</text>
- <x use_class="true">0</x>
- <y use_class="true">0</y>
- <width>550</width>
- <height>31</height>
- <font use_class="true">
+ <name>Label_1</name>
+ <text>Room</text>
+ <x>12</x>
+ <y>50</y>
+ <width>40</width>
+ <height>16</height>
+ <font>
+ <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="scaledslider" version="2.0.0">
+ <name>Scaled Slider</name>
+ <pv_name>$(P):heat_V</pv_name>
+ <x>442</x>
+ <y>70</y>
+ <width>52</width>
+ <height>142</height>
+ <horizontal>false</horizontal>
+ <background_color>
+ <color red="240" green="240" blue="240">
+ </color>
+ </background_color>
+ <major_tick_step_hint>50</major_tick_step_hint>
+ <show_hihi>false</show_hihi>
+ <show_high>false</show_high>
+ <show_low>false</show_low>
+ <show_lolo>false</show_lolo>
+ <actions>
+ </actions>
+ <maximum>110.0</maximum>
+ <limits_from_pv>false</limits_from_pv>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_3</name>
+ <text>Isolation Factor:</text>
+ <x>132</x>
+ <y>282</y>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_4</name>
+ <text>Heat Capacity:</text>
+ <x>132</x>
+ <y>322</y>
+ <width>92</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_5</name>
+ <text>Sensor:</text>
+ <x>132</x>
+ <y>362</y>
+ <width>49</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="combo" version="2.0.0">
+ <name>Menu Button</name>
+ <pv_name>$(P):sensor</pv_name>
+ <x>132</x>
+ <y>380</y>
+ <width>101</width>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_3</name>
+ <pv_name>$(P):tank</pv_name>
+ <x>132</x>
+ <y>260</y>
+ <horizontal_alignment>1</horizontal_alignment>
+ <vertical_alignment>1</vertical_alignment>
+ <wrap_words>false</wrap_words>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_4</name>
+ <pv_name>$(P):heat_V</pv_name>
+ <x>442</x>
+ <y>230</y>
+ <width>61</width>
+ <horizontal_alignment>1</horizontal_alignment>
+ <vertical_alignment>1</vertical_alignment>
+ <wrap_words>false</wrap_words>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_5</name>
+ <pv_name>$(P):heat_Pwr</pv_name>
+ <x>442</x>
+ <y>270</y>
+ <width>61</width>
+ <horizontal_alignment>1</horizontal_alignment>
+ <vertical_alignment>1</vertical_alignment>
+ <wrap_words>false</wrap_words>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input</name>
+ <pv_name>$(P):room</pv_name>
+ <x>12</x>
+ <y>260</y>
+ <width>61</width>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_1</name>
+ <pv_name>$(P):tank_clc.D</pv_name>
+ <x>132</x>
+ <y>300</y>
+ <format>1</format>
+ <show_units>false</show_units>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_2</name>
+ <pv_name>$(P):tank_clc.E</pv_name>
+ <x>132</x>
+ <y>340</y>
+ <format>1</format>
+ <show_units>false</show_units>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_5</name>
+ <text>Water Tank</text>
+ <x>132</x>
+ <y>50</y>
+ <width>76</width>
+ <height>16</height>
+ <font>
+ <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_6</name>
+ <text>Setpoint</text>
+ <x>302</x>
+ <y>50</y>
+ <width>58</width>
+ <height>15</height>
+ <visible>false</visible>
+ <font>
+ <font family="Arial" style="BOLD" size="11.881188118811881">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_6</name>
+ <text>Fishtank Heater Demo for user $(USER)</text>
+ <x>12</x>
+ <y>3</y>
+ <width>364</width>
+ <height>25</height>
+ <font>
<font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0">
</font>
</font>
- <foreground_color use_class="true">
- <color name="Text" red="0" green="0" blue="0">
+ <foreground_color>
+ <color red="20" green="67" blue="227">
</color>
</foreground_color>
- <transparent use_class="true">true</transparent>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ <tooltip>$(pv_name)
+$(pv_value)</tooltip>
</widget>
<widget type="label" version="2.0.0">
- <name>Label_1</name>
- <text>Magnetic Field</text>
+ <name>Label_8</name>
+ <text>Temperature:</text>
+ <x>132</x>
+ <y>242</y>
+ <width>85</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_14</name>
+ <text>Controller</text>
+ <x>302</x>
+ <y>300</y>
+ <width>67</width>
+ <height>16</height>
+ <font>
+ <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_15</name>
+ <text>Temperature:</text>
+ <x>14</x>
+ <y>242</y>
+ <width>85</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_16</name>
+ <text>Voltage:</text>
+ <x>442</x>
+ <y>212</y>
+ <width>52</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_17</name>
+ <text>Power:</text>
+ <x>442</x>
+ <y>254</y>
+ <width>44</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="picture" version="2.0.0">
+ <name>Image</name>
+ <file>fish.gif</file>
+ <x>340</x>
+ <y>116</y>
+ <width>80</width>
+ <height>70</height>
+ <actions>
+ </actions>
+ <rules>
+ <rule name="Hide" prop_id="visible" out_exp="false">
+ <exp bool_exp="abs(pv0)>3">
+ <value>false</value>
+ </exp>
+ <pv_name>$(P):error</pv_name>
+ </rule>
+ </rules>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_19</name>
+ <text>Heater</text>
+ <x>442</x>
<y>50</y>
+ <width>44</width>
+ <height>16</height>
+ <font>
+ <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_9</name>
+ <text>Prop. Gain</text>
+ <x>442</x>
+ <y>314</y>
+ <width>67</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_11</name>
+ <text>Error</text>
+ <x>446</x>
+ <y>362</y>
+ <width>32</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_4</name>
+ <pv_name>$(P):PID.C</pv_name>
+ <x>518</x>
+ <y>330</y>
+ <width>51</width>
+ <height>21</height>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Status</name>
+ <text>Status</text>
+ <x>442</x>
+ <y>420</y>
+ <width>201</width>
+ <height>21</height>
+ <transparent>false</transparent>
+ <vertical_alignment>1</vertical_alignment>
+ <actions>
+ </actions>
+ <scripts>
+ <script file="scripts/Analyze.py">
+ <pv_name>$(P):PID</pv_name>
+ <pv_name>sim://sine(-10,10,10,0.1)</pv_name>
+ </script>
+ </scripts>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_20</name>
+ <text>Status:</text>
+ <x>440</x>
+ <y>404</y>
+ <width>44</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_12</name>
+ <text>Err. Integral</text>
+ <x>518</x>
+ <y>362</y>
+ <width>74</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
</widget>
<widget type="textupdate" version="2.0.0">
- <name>Field in Gauss</name>
- <pv_name>F71hallprobe:p1:Gauss</pv_name>
- <x>30</x>
- <y>70</y>
- <width>160</width>
- <precision>5</precision>
+ <name>Text Update_4</name>
+ <pv_name>$(P):error</pv_name>
+ <x>446</x>
+ <y>378</y>
+ <width>61</width>
+ <horizontal_alignment>1</horizontal_alignment>
+ <vertical_alignment>1</vertical_alignment>
+ <wrap_words>false</wrap_words>
+ <actions>
+ </actions>
</widget>
<widget type="label" version="2.0.0">
- <name>Label_2</name>
- <class>COMMENT</class>
- <text>Some comment.</text>
- <x>270</x>
- <y>80</y>
- <width>140</width>
- <font use_class="true">
- <font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
+ <name>Label_7</name>
+ <text>Output:</text>
+ <x>302</x>
+ <y>320</y>
+ <width>46</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_13</name>
+ <text>Integral Limit</text>
+ <x>610</x>
+ <y>362</y>
+ <width>81</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_3</name>
+ <pv_name>$(P):integral</pv_name>
+ <x>518</x>
+ <y>380</y>
+ <width>61</width>
+ <horizontal_alignment>1</horizontal_alignment>
+ <vertical_alignment>1</vertical_alignment>
+ <wrap_words>false</wrap_words>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_5</name>
+ <pv_name>$(P):integral.C</pv_name>
+ <x>610</x>
+ <y>380</y>
+ <width>61</width>
+ <height>21</height>
+ <background_color>
+ <color name="Read_Background" red="240" green="240" blue="240">
+ </color>
+ </background_color>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_3</name>
+ <pv_name>$(P):PID.A</pv_name>
+ <x>442</x>
+ <y>330</y>
+ <width>51</width>
+ <height>21</height>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_10</name>
+ <text>Integral Gain</text>
+ <x>518</x>
+ <y>314</y>
+ <width>81</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_21</name>
+ <text>Heater
+is
+on</text>
+ <x>518</x>
+ <y>66</y>
+ <width>46</width>
+ <height>44</height>
+ <font>
+ <font family="Arial" style="BOLD" size="11.881188118811881">
</font>
</font>
- <foreground_color use_class="true">
- <color name="Text" red="0" green="0" blue="0">
+ <foreground_color>
+ <color red="255" green="0" blue="0">
</color>
</foreground_color>
- <transparent use_class="true">true</transparent>
- <wrap_words use_class="true">true</wrap_words>
+ <horizontal_alignment>1</horizontal_alignment>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ <rules>
+ <rule name="show" prop_id="visible" out_exp="false">
+ <exp bool_exp="pv0 < 50">
+ <value>false</value>
+ </exp>
+ <pv_name>$(USER):heat_V</pv_name>
+ </rule>
+ </rules>
+ </widget>
+ <widget type="databrowser" version="2.0.0">
+ <name>Data Browser</name>
+ <file>strip.plt</file>
+ <macros>
+ <user>$(USER)</user>
+ </macros>
+ <y>438</y>
+ <width>697</width>
+ <height>259</height>
+ <show_toolbar>false</show_toolbar>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_18</name>
+ <text>Setpoint</text>
+ <x>282</x>
+ <y>50</y>
+ <width>56</width>
+ <height>16</height>
+ <font>
+ <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+ </font>
+ </font>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="scaledslider" version="2.0.0">
+ <name>Scaled Slider_1</name>
+ <pv_name>$(P):setpoint</pv_name>
+ <x>282</x>
+ <y>66</y>
+ <width>58</width>
+ <height>200</height>
+ <horizontal>false</horizontal>
+ <show_hihi>false</show_hihi>
+ <show_high>false</show_high>
+ <show_low>false</show_low>
+ <show_lolo>false</show_lolo>
+ </widget>
+ <widget type="bool_button" version="2.0.0">
+ <name>Boolean Button</name>
+ <x>672</x>
+ <y>250</y>
+ <width>1</width>
+ <height>1</height>
+ </widget>
+ <widget type="radio" version="2.0.0">
+ <name>Menu Button_1</name>
+ <pv_name>$(USER):heat_V.OMSL</pv_name>
+ <x>518</x>
+ <y>130</y>
+ <width>154</width>
+ <height>50</height>
+ <tooltip>$(USER):heat_V.OMSL
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ <items>
+ <item>'item' = 'Item 0'</item>
+ </items>
+ </widget>
+ <widget type="progressbar" version="2.0.0">
+ <name>Gauge</name>
+ <pv_name>$(USER):PID</pv_name>
+ <x>302</x>
+ <y>336</y>
+ <width>118</width>
+ <height>30</height>
+ <actions>
+ </actions>
+ <tooltip>$(USER):PID
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Gauge_1</name>
+ <pv_name>$(USER):PID</pv_name>
+ <x>302</x>
+ <y>380</y>
+ <width>118</width>
+ <height>30</height>
+ <actions>
+ </actions>
+ <tooltip>$(USER):PID
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
</widget>
- <widget type="tank" version="2.0.0">
+ <widget type="thermometer" version="2.0.0">
<name>Tank</name>
- <pv_name>ksN5700A:Meas:Power</pv_name>
- <x>650</x>
- <y>100</y>
- <width>100</width>
- <height>190</height>
- <empty_color>
- <color red="192" green="192" blue="192" alpha="143">
+ <pv_name>$(P):tank</pv_name>
+ <x>134</x>
+ <y>70</y>
+ <width>98</width>
+ <height>171</height>
+ <fill_color>
+ <color red="0" green="0" blue="255">
</color>
- </empty_color>
- <limits_from_pv>false</limits_from_pv>
+ </fill_color>
+ <actions>
+ </actions>
+ <rules>
+ <rule name="Color" prop_id="fill_color" out_exp="false">
+ <exp bool_exp="pv0>50">
+ <value>
+ <color name="MAJOR" red="255" green="0" blue="0">
+ </color>
+ </value>
+ </exp>
+ <exp bool_exp="pv0>40">
+ <value>
+ <color red="255" green="179" blue="102">
+ </color>
+ </value>
+ </exp>
+ <exp bool_exp="pv0>20">
+ <value>
+ <color red="0" green="179" blue="102">
+ </color>
+ </value>
+ </exp>
+ <pv_name>$(P):tank</pv_name>
+ </rule>
+ </rules>
</widget>
- <widget type="databrowser" version="2.0.0">
- <name>Data Browser</name>
- <file>helmholtz_stripchart.plt</file>
- <y>460</y>
- <width>780</width>
- <height>120</height>
- </widget>
- <widget type="action_button" version="3.0.0">
- <name>Action Button</name>
- <actions>
- <action type="write_pv">
- <pv_name>SRSDS345test:Trigger</pv_name>
- <value>1</value>
- <description>do ramp</description>
- </action>
- </actions>
- <x>320</x>
- <y>190</y>
- <width>80</width>
- <height>60</height>
+ <widget type="thermometer" version="2.0.0">
+ <name>Tank_1</name>
+ <pv_name>$(P):room</pv_name>
+ <x>12</x>
+ <y>70</y>
+ <width>98</width>
+ <height>171</height>
+ <fill_color>
+ <color red="0" green="0" blue="255">
+ </color>
+ </fill_color>
+ <actions>
+ </actions>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label</name>
+ <text>Requires fishtank IOC</text>
+ <x>12</x>
+ <y>28</y>
+ <width>685</width>
+ <font>
+ <font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
+ </font>
+ </font>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Input_6</name>
+ <pv_name>$(P):PID.E</pv_name>
+ <x>610</x>
+ <y>330</y>
+ <width>51</width>
+ <height>21</height>
+ <actions>
+ </actions>
+ <border_alarm_sensitive>false</border_alarm_sensitive>
+ </widget>
+ <widget type="label" version="2.0.0">
+ <name>Label_22</name>
+ <text>Diff. Gain</text>
+ <x>610</x>
+ <y>314</y>
+ <width>59</width>
+ <height>16</height>
+ <auto_size>true</auto_size>
+ <actions>
+ </actions>
</widget>
</display>
diff --git a/setup.sh b/setup.sh
index 7a0963085196cb156e6b86973a6cc199a1f8f981..03f323c0b7c0b70eab7c536a81f6472f79346a45 100644
--- a/setup.sh
+++ b/setup.sh
@@ -34,11 +34,10 @@ export PATH=$EPICSEXTENSIONS/bin/$EPICS_HOST_ARCH:$PATH
export LD_LIBRARY_PATH=$EPICSEXTENSIONS/lib/$EPICS_HOST_ARCH:$LD_LIBRARY_PATH
-
# Epics Display Manager stuff
-#export QT_PLUGIN_PATH=/mnt/old_home/whit/projects/epics/extensions/lib/linux-x86_64
-#export CAQTDM_DISPLAY_PATH=$EPICS_BASE/dm
+export QT_PLUGIN_PATH=/opt/epics/extensions/lib/linux-x86_64
+export CAQTDM_DISPLAY_PATH=/opt/epics/dm
export EDMFILES=$EPICS_EXTENSIONS/ext_pref/edm
export EDMOBJECTS=$EPICS_EXTENSIONS/ext_pref/edm