]> Pileus Git - ~andy/csm213a-hw/commitdiff
Add initial plotting
authorAndy Spencer <andy753421@gmail.com>
Tue, 11 Feb 2014 01:07:27 +0000 (01:07 +0000)
committerAndy Spencer <andy753421@gmail.com>
Tue, 11 Feb 2014 01:07:27 +0000 (01:07 +0000)
vis/visual.py
vis/visual.ui

index 62a0bc3fb887a72e5d12049a348ed2c4cc2ebe0a..4f0e0e0019cbc3ef859e9cf0c87a04255b3074a0 100644 (file)
@@ -25,6 +25,7 @@ class Visual:
                self.device   = device
                self.logger   = logger
                self.builder  = Gtk.Builder()
+               self.history  = [0.5]*1000
 
                self.builder.add_from_file('visual.ui')
                self.builder.connect_signals(self)
@@ -91,6 +92,23 @@ class Visual:
                        setattr(self.config, name, value)
                        self.config.save()
 
+       def on_expose(self, obj, _):
+               cairo   = obj.window.cairo_create()
+               count   = len(self.history)
+               extents = cairo.clip_extents()
+               width   = extents[2] - extents[0] 
+               height  = extents[3] - extents[1] 
+
+               cairo.set_line_width(4)
+               for i in range(0,len(self.history)):
+                       x = i*width/(count-1)
+                       y = ((1-self.history[i]) * 0.8 + 0.1) * height
+                       if i==0:
+                               cairo.move_to(x, y)
+                       else:
+                               cairo.line_to(x, y)
+               cairo.stroke()
+
        def on_key(self, win, ev):
                if ev.string == 'q':
                        Gtk.main_quit();
@@ -141,6 +159,9 @@ class Visual:
                setval(self.tchs,  state.tch, ['P', 'D'])
                setval(self.a2ds,  state.a2d, [])
 
+               self.history = self.history[1:] + [state.a2d[0]]
+               self.window.queue_draw()
+
        def debug(self, state):
                print('update: ' + str(state))
                print('\tacc - ' + str(state.acc))
index 1c862a7ffa4167f774cedfb594cd944597ea7975..497302180ec1394459b150fde08cf14764626a85 100644 (file)
@@ -2,21 +2,6 @@
 <interface>
   <requires lib="gtk+" version="2.24"/>
   <!-- interface-naming-policy project-wide -->
-  <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="a2d_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="GtkAction" id="flush_act">
-    <property name="label" translatable="yes">Upload</property>
-    <property name="stock_id">gtk-floppy</property>
-    <signal name="activate" handler="on_flush" swapped="no"/>
-  </object>
   <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>
+  <object class="GtkAction" id="flush_act">
+    <property name="label" translatable="yes">Upload</property>
+    <property name="stock_id">gtk-floppy</property>
+    <signal name="activate" handler="on_flush" swapped="no"/>
+  </object>
   <object class="GtkAdjustment" id="lgt_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="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>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="plot">
+              <object class="GtkDrawingArea" id="plot">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Plots</property>
+                <signal name="expose-event" handler="on_expose" swapped="no"/>
               </object>
               <packing>
                 <property name="position">2</property>