From 925a7238a8f844fed05b8c4074fed829e7b2a892 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Tue, 4 Feb 2014 00:35:05 +0000 Subject: [PATCH] Save control options --- vis/config.py | 30 +++++++++++++++++++++++++- vis/device.py | 3 +++ vis/visual.py | 59 ++++++++++++++++++++++++++++++++------------------- vis/visual.ui | 59 ++++++++++++++++++++++++++------------------------- 4 files changed, 99 insertions(+), 52 deletions(-) diff --git a/vis/config.py b/vis/config.py index 928ae7d..08cc4ea 100644 --- a/vis/config.py +++ b/vis/config.py @@ -16,14 +16,32 @@ class Config: 'feedid': '', '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): + self.enable = {} + self.rate = {} 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 @@ -33,6 +51,8 @@ class Config: 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) @@ -46,6 +66,10 @@ class Config: 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))) @@ -57,5 +81,9 @@ class Config: 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) diff --git a/vis/device.py b/vis/device.py index f3464fb..24860ba 100644 --- a/vis/device.py +++ b/vis/device.py @@ -47,6 +47,9 @@ class Device: return False return True + def control(self): + pass + def process(self): items = [] count = 0 diff --git a/vis/visual.py b/vis/visual.py index 3d93bcb..978eb97 100644 --- a/vis/visual.py +++ b/vis/visual.py @@ -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): diff --git a/vis/visual.ui b/vis/visual.ui index 32e83c4..e614321 100644 --- a/vis/visual.ui +++ b/vis/visual.ui @@ -8,7 +8,7 @@ 1 10 - + 100 1 1 @@ -19,6 +19,27 @@ 1 10 + + 100 + 1 + 1 + 10 + + + Serial + gtk-connect + + + + Settings + gtk-preferences + + + + Xively + gtk-connect + + 6 8 @@ -36,33 +57,12 @@ 1 10 - - 100 - 1 - 1 - 10 - 100 1 10 - - Serial - gtk-connect - - - - Settings - gtk-preferences - - - - Xively - gtk-connect - - False 5 @@ -565,7 +565,7 @@ 2 20 - + Acceorometer True True @@ -684,7 +684,7 @@ True a2d_adj True - + 1 @@ -695,7 +695,7 @@ - + True True ● @@ -703,8 +703,9 @@ False True True - accel_adj + acc_adj True + 1 @@ -725,7 +726,7 @@ True mag_adj True - + 1 @@ -746,7 +747,7 @@ True touch_adj True - + 1 @@ -767,7 +768,7 @@ True light_adj True - + 1 -- 2.43.2