X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=vis%2Fvisual.py;h=3d93bcbe01f536d4d9c0c2877821af9718f158bf;hb=e3f519bd2a6e48fc959006fba76996fa88db2530;hp=72fb7109c07e0d3602ca035c5401f61af2b0c1fd;hpb=5277ee21e352354a19478bad29496fc05d2f747b;p=~andy%2Fcsm213a-hw diff --git a/vis/visual.py b/vis/visual.py index 72fb710..3d93bcb 100644 --- a/vis/visual.py +++ b/vis/visual.py @@ -1,18 +1,18 @@ #!/usr/bin/env python -import pygtk -import gtk +from gi.repository import Gtk +from gi.repository import GLib class Visual: def __init__(self, config, device, logger): def get_objects(names): - return map(lambda x: - self.builder.get_object(x), names) + return list(map(lambda x: + self.builder.get_object(x), names)) self.config = config self.device = device self.logger = logger - self.builder = gtk.Builder() + self.builder = Gtk.Builder() self.builder.add_from_file('visual.ui') self.builder.connect_signals(self) @@ -48,20 +48,33 @@ class Visual: self.status(self.logger.disconnect()) return True + def on_flush(self, act): + self.logger.flush() + def on_enable(self, _): - print "Unimplemented: on_enable" + print("Unimplemented: on_enable") return True def on_rate(self, _): - print "Unimplemented: on_rate" + print("Unimplemented: on_rate") return True + def on_config(self, obj): + name = Gtk.Buildable.get_name(obj) + if isinstance(obj, Gtk.SpinButton): + value = obj.get_value() + else: + value = obj.get_text() + if getattr(self.config, name) != value: + setattr(self.config, name, value) + self.config.save() + def on_key(self, win, ev): if ev.string == 'q': - gtk.main_quit(); + Gtk.main_quit(); def on_destroy(self, win): - gtk.main_quit() + Gtk.main_quit() # Methods def load_config(self): @@ -78,14 +91,12 @@ class Visual: stopb.set_value(self.config.stopbits) # Xively settings - user = self.builder.get_object("username") - pwd = self.builder.get_object("password") + feed = self.builder.get_object("feedid") api = self.builder.get_object("apikey") - user.set_text(self.config.username) - pwd.set_text(self.config.password) + rate = self.builder.get_object("maxrate") + feed.set_text(self.config.feedid) api.set_text(self.config.apikey) - - # TODO - send changes back to config + rate.set_value(self.config.maxrate) def update(self, state): def setxyz(objs, vals): @@ -103,35 +114,36 @@ class Visual: setabs(self.a2ds, state.a2d) def debug(self, state): - print 'update: ' + str(state) - print '\tacc - ' + str(state.acc) - print '\tmag - ' + str(state.mag) - print '\tlgt - ' + str(state.light) - print '\ttch - ' + str(state.touch) - print '\ta2d - ' + str(state.a2d) - + print('update: ' + str(state)) + print('\tacc - ' + str(state.acc)) + print('\tmag - ' + str(state.mag)) + print('\tlgt - ' + str(state.light)) + print('\ttch - ' + str(state.touch)) + print('\ta2d - ' + str(state.a2d)) + def timer(self): - serial = self.builder.get_object("serial_btn") - status = self.builder.get_object("conn") + def check(state, name): + btn = self.builder.get_object(name + '_btn') + con = self.builder.get_object(name + '_con') + img = Gtk.STOCK_YES if state else Gtk.STOCK_NO + btn.set_active(state) + con.set_from_stock(img, Gtk.IconSize.BUTTON) - if self.device.running(): - serial.set_active(True) - status.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_BUTTON) - else: - serial.set_active(False) - status.set_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_BUTTON) - if self.device.running(): - for item in self.device.process(): - self.update(item) - #self.debug(item) + check(self.device.running(), "serial") + check(self.logger.running(), "xively") + + for item in self.device.process(): + self.update(item) + self.logger.append(item) + #self.debug(item) return True def run(self): self.load_config() self.window.show() - gtk.timeout_add(1000/60, self.timer) - gtk.main() + GLib.timeout_add(1000/60, self.timer) + Gtk.main() # Private methods def status(self, msg): @@ -139,4 +151,3 @@ class Visual: return status = self.builder.get_object("status") status.push(text=('Error: ' + msg), context_id=0) -