]> Pileus Git - ~andy/csm213a-hw/commitdiff
Save control options
authorAndy Spencer <andy753421@gmail.com>
Tue, 4 Feb 2014 00:35:05 +0000 (00:35 +0000)
committerAndy Spencer <andy753421@gmail.com>
Tue, 4 Feb 2014 00:36:56 +0000 (00:36 +0000)
vis/config.py
vis/device.py
vis/visual.py
vis/visual.ui

index 928ae7da85ce7030f1f0f0eb503a96be2eaa9a07..08cc4eaa61ad981050bc3b7b9389a71d568a9c42 100644 (file)
@@ -16,14 +16,32 @@ class Config:
                        'feedid':   '<feedid>',
                        'apikey':   '<apikey>',
                        'maxrate':  '10',
                        'feedid':   '<feedid>',
                        'apikey':   '<apikey>',
                        'maxrate':  '10',
-               }
+               },
+               'enable': {
+                       'acc':      True,
+                       'mag':      True,
+                       'touch':    True,
+                       'light':    True,
+                       'a2d':      True,
+               },
+               'rate': {
+                       'acc':      1,
+                       'mag':      1,
+                       'touch':    1,
+                       'light':    1,
+                       'a2d':      1,
+               },
        }
 
        # Constructor
        def __init__(self):
        }
 
        # Constructor
        def __init__(self):
+               self.enable = {}
+               self.rate   = {}
                self.parser = ConfigParser()
                self.parser.add_section('serial')
                self.parser.add_section('xively')
                self.parser = ConfigParser()
                self.parser.add_section('serial')
                self.parser.add_section('xively')
+               self.parser.add_section('enable')
+               self.parser.add_section('rate')
                self.load()
 
        # Methods
                self.load()
 
        # Methods
@@ -33,6 +51,8 @@ class Config:
                                return self.parser.get(sect, name)
                        else:
                                return self.defaults[sect][name]
                                return self.parser.get(sect, name)
                        else:
                                return self.defaults[sect][name]
+               def bin(val):
+                       return val == True or val == 'True'
 
                self.parser.read(self.filename)
 
 
                self.parser.read(self.filename)
 
@@ -46,6 +66,10 @@ class Config:
                self.apikey   =     get('xively', 'apikey')
                self.maxrate  = int(get('xively', 'maxrate'))
 
                self.apikey   =     get('xively', 'apikey')
                self.maxrate  = int(get('xively', 'maxrate'))
 
+               for key in list(self.defaults['enable'].keys()):
+                       self.enable[key] = bin(get('enable', key))
+                       self.rate[key]   = int(get('rate',   key))
+
        def save(self):
                self.parser.set('serial', 'device',           self.device)
                self.parser.set('serial', 'baudrate', str(int(self.baudrate)))
        def save(self):
                self.parser.set('serial', 'device',           self.device)
                self.parser.set('serial', 'baudrate', str(int(self.baudrate)))
@@ -57,5 +81,9 @@ class Config:
                self.parser.set('xively', 'apikey',           self.apikey)
                self.parser.set('xively', 'maxrate',  str(int(self.maxrate)))
 
                self.parser.set('xively', 'apikey',           self.apikey)
                self.parser.set('xively', 'maxrate',  str(int(self.maxrate)))
 
+               for key in self.defaults['enable'].keys():
+                       self.parser.set('enable', key, str(bool(self.enable[key])))
+                       self.parser.set('rate',   key, str( int(self.rate[key])))
+
                with open(self.filename, 'w') as fd:
                        self.parser.write(fd)
                with open(self.filename, 'w') as fd:
                        self.parser.write(fd)
index f3464fb322a8afa280ee8a5b143d92e2c45a9ef1..24860bac33c430cd2aef444208d9bdd2dad08700 100644 (file)
@@ -47,6 +47,9 @@ class Device:
                        return False
                return True
 
                        return False
                return True
 
+       def control(self):
+               pass
+
        def process(self):
                items = []
                count = 0
        def process(self):
                items = []
                count = 0
index 3d93bcbe01f536d4d9c0c2877821af9718f158bf..978eb977a7d7fde4173f96f61c7854ef66c7c64a 100644 (file)
@@ -51,13 +51,23 @@ class Visual:
        def on_flush(self, act):
                self.logger.flush()
 
        def on_flush(self, act):
                self.logger.flush()
 
-       def on_enable(self, _):
-               print("Unimplemented: on_enable")
-               return True
+       def on_enable(self, obj):
+               name  = Gtk.Buildable.get_name(obj)
+               name  = name.replace('_btn', '')
+               state = obj.get_active()
+               if self.config.enable[name] != state:
+                       self.config.enable[name] = state
+                       self.device.control()
+                       self.config.save()
 
 
-       def on_rate(self, _):
-               print("Unimplemented: on_rate")
-               return True
+       def on_rate(self, obj):
+               name  = Gtk.Buildable.get_name(obj)
+               name  = name.replace('_spin', '')
+               value = obj.get_value()
+               if self.config.rate[name] != value:
+                       self.config.rate[name] = value
+                       self.device.control()
+                       self.config.save()
 
        def on_config(self, obj):
                name = Gtk.Buildable.get_name(obj)
 
        def on_config(self, obj):
                name = Gtk.Buildable.get_name(obj)
@@ -78,25 +88,30 @@ class Visual:
 
         # Methods
        def load_config(self):
 
         # Methods
        def load_config(self):
+               def set_val(name, val):
+                       self.builder.get_object(name).set_value(val)
+               def set_txt(name, val):
+                       self.builder.get_object(name).set_text(val)
+               def set_act(name, val):
+                       self.builder.get_object(name).set_active(val)
+
                # Serial settings
                # Serial settings
-               device = self.builder.get_object("device")
-               baud   = self.builder.get_object("baudrate")
-               parity = self.builder.get_object("parity")
-               datab  = self.builder.get_object("databits")
-               stopb  = self.builder.get_object("stopbits")
-               device.set_text(self.config.device)
-               baud.set_value(self.config.baudrate)
-               parity.set_text(self.config.parity)
-               datab.set_value(self.config.databits)
-               stopb.set_value(self.config.stopbits)
+               set_txt('device',   self.config.device)
+               set_val('baudrate', self.config.baudrate)
+               set_txt('parity',   self.config.parity)
+               set_val('databits', self.config.databits)
+               set_val('stopbits', self.config.stopbits)
 
                # Xively settings
 
                # Xively settings
-               feed  = self.builder.get_object("feedid")
-               api   = self.builder.get_object("apikey")
-               rate  = self.builder.get_object("maxrate")
-               feed.set_text(self.config.feedid)
-               api.set_text(self.config.apikey)
-               rate.set_value(self.config.maxrate)
+               set_txt('feedid',   self.config.feedid)
+               set_txt('apikey',   self.config.apikey)
+               set_val('maxrate',  self.config.maxrate)
+
+               # Sensor settings
+               for key in list(self.config.enable.keys()):
+                       set_act(key+'_btn',  self.config.enable[key])
+                       set_val(key+'_spin', self.config.rate[key])
+
 
        def update(self, state):
                def setxyz(objs, vals):
 
        def update(self, state):
                def setxyz(objs, vals):
index 32e83c41229b0928d3d764998bbb827466d61359..e614321ae812164467744816df21d6f3bcea921f 100644 (file)
@@ -8,7 +8,7 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkAdjustment" id="accel_adj">
+  <object class="GtkAdjustment" id="acc_adj">
     <property name="upper">100</property>
     <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="upper">100</property>
     <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkAdjustment" id="mag_adj">
+    <property name="upper">100</property>
+    <property name="value">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkToggleAction" id="serial_act">
+    <property name="label" translatable="yes">Serial</property>
+    <property name="stock_id">gtk-connect</property>
+    <signal name="activate" handler="on_serial" swapped="no"/>
+  </object>
+  <object class="GtkAction" id="settings_act">
+    <property name="label" translatable="yes">Settings</property>
+    <property name="stock_id">gtk-preferences</property>
+    <signal name="activate" handler="on_show" swapped="no"/>
+  </object>
+  <object class="GtkToggleAction" id="xively_act">
+    <property name="label" translatable="yes">Xively</property>
+    <property name="stock_id">gtk-connect</property>
+    <signal name="activate" handler="on_xively" swapped="no"/>
+  </object>
   <object class="GtkAdjustment" id="datab_adj">
     <property name="lower">6</property>
     <property name="upper">8</property>
   <object class="GtkAdjustment" id="datab_adj">
     <property name="lower">6</property>
     <property name="upper">8</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkAdjustment" id="mag_adj">
-    <property name="upper">100</property>
-    <property name="value">1</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
   <object class="GtkAdjustment" id="rate_adj">
     <property name="upper">100</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="rate_adj">
     <property name="upper">100</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkToggleAction" id="serial_act">
-    <property name="label" translatable="yes">Serial</property>
-    <property name="stock_id">gtk-connect</property>
-    <signal name="activate" handler="on_serial" swapped="no"/>
-  </object>
   <object class="GtkTextBuffer" id="serial_buf"/>
   <object class="GtkTextBuffer" id="serial_buf"/>
-  <object class="GtkAction" id="settings_act">
-    <property name="label" translatable="yes">Settings</property>
-    <property name="stock_id">gtk-preferences</property>
-    <signal name="activate" handler="on_show" swapped="no"/>
-  </object>
-  <object class="GtkToggleAction" id="xively_act">
-    <property name="label" translatable="yes">Xively</property>
-    <property name="stock_id">gtk-connect</property>
-    <signal name="activate" handler="on_xively" swapped="no"/>
-  </object>
   <object class="GtkDialog" id="settings">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
   <object class="GtkDialog" id="settings">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
                 <property name="n_columns">2</property>
                 <property name="column_spacing">20</property>
                 <child>
                 <property name="n_columns">2</property>
                 <property name="column_spacing">20</property>
                 <child>
-                  <object class="GtkCheckButton" id="accel_btn">
+                  <object class="GtkCheckButton" id="acc_btn">
                     <property name="label" translatable="yes">Acceorometer</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="label" translatable="yes">Acceorometer</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">a2d_adj</property>
                     <property name="numeric">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">a2d_adj</property>
                     <property name="numeric">True</property>
-                    <signal name="change-value" handler="on_rate" swapped="no"/>
+                    <signal name="value-changed" handler="on_rate" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </packing>
                 </child>
                 <child>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkSpinButton" id="accel_spin">
+                  <object class="GtkSpinButton" id="acc_spin">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="invisible_char">●</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="invisible_char">●</property>
                     <property name="secondary_icon_activatable">False</property>
                     <property name="primary_icon_sensitive">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="secondary_icon_activatable">False</property>
                     <property name="primary_icon_sensitive">True</property>
                     <property name="secondary_icon_sensitive">True</property>
-                    <property name="adjustment">accel_adj</property>
+                    <property name="adjustment">acc_adj</property>
                     <property name="numeric">True</property>
                     <property name="numeric">True</property>
+                    <signal name="value-changed" handler="on_rate" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">mag_adj</property>
                     <property name="numeric">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">mag_adj</property>
                     <property name="numeric">True</property>
-                    <signal name="change-value" handler="on_rate" swapped="no"/>
+                    <signal name="value-changed" handler="on_rate" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">touch_adj</property>
                     <property name="numeric">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">touch_adj</property>
                     <property name="numeric">True</property>
-                    <signal name="change-value" handler="on_rate" swapped="no"/>
+                    <signal name="value-changed" handler="on_rate" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">light_adj</property>
                     <property name="numeric">True</property>
                     <property name="secondary_icon_sensitive">True</property>
                     <property name="adjustment">light_adj</property>
                     <property name="numeric">True</property>
-                    <signal name="change-value" handler="on_rate" swapped="no"/>
+                    <signal name="value-changed" handler="on_rate" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>