]> Pileus Git - ~andy/csm213a-hw/blobdiff - vis/visual.py
Save control options
[~andy/csm213a-hw] / vis / visual.py
index 3d93bcbe01f536d4d9c0c2877821af9718f158bf..978eb977a7d7fde4173f96f61c7854ef66c7c64a 100644 (file)
@@ -51,13 +51,23 @@ class Visual:
        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)
@@ -78,25 +88,30 @@ class Visual:
 
         # 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
-               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
-               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):