]> Pileus Git - ~andy/csm213a-hw/blobdiff - vis/visual.py
GTK+ 3 support
[~andy/csm213a-hw] / vis / visual.py
index c4a266f2bba9439dc2627a58fd660d955ff0bb31..6fab6306caf63626d76ae0636a863e178d8794d1 100644 (file)
@@ -32,18 +32,25 @@ class Visual:
 
                self.rate_due = 0
                self.rate_cnt = {'acc': 0,
-                                 'mag': 0,
-                                 'lgt': 0,
-                                 'tch': 0,
-                                 'a2d': 0}
+                                'mag': 0,
+                                'lgt': 0,
+                                'tch': 0,
+                                'a2d': 0}
 
                self.builder.add_from_file('visual.ui')
                self.builder.connect_signals(self)
+
                self.window   = self.builder.get_object("window")
                self.settings = self.builder.get_object("settings")
+               self.plotdraw = self.builder.get_object('plot')
                self.plotsns  = self.builder.get_object('sns')
                self.plotaxis = self.builder.get_object('axis')
 
+               if sys.version_info<(3,0,0):
+                       self.plotdraw.connect('expose-event', self.on_expose)
+               else:
+                       self.plotdraw.connect('draw', self.on_draw)
+
                self.accs     = get_objects(['accx', 'accy', 'accz'])
                self.mags     = get_objects(['magx', 'magy', 'magz'])
                self.lgts     = get_objects(['lgt'])
@@ -104,8 +111,7 @@ class Visual:
                        setattr(self.config, name, value)
                        self.config.save()
 
-       def on_expose(self, obj, _):
-               cairo   = obj.window.cairo_create()
+       def on_draw(self, obj, cairo):
                count   = len(self.history)
                extents = cairo.clip_extents()
                width   = extents[2] - extents[0]
@@ -121,6 +127,10 @@ class Visual:
                                cairo.line_to(x, y)
                cairo.stroke()
 
+       def on_expose(self, obj, event):
+               cairo = obj.window.cairo_create()
+               self.draw(obj, cairo)
+
        def on_key(self, win, ev):
                if ev.string == 'q':
                        Gtk.main_quit();
@@ -128,7 +138,7 @@ class Visual:
        def on_destroy(self, win):
                Gtk.main_quit()
 
-        # Methods
+       # Methods
        def load_config(self):
                def set_val(name, val):
                        self.builder.get_object(name).set_value(val)