changeset 550:f233fa1ec801

vidref displays the directory it's writing frames ot Ignore-this: fe5419f4c36e596c1fd2cf5612dde9b3
author drewp@bigasterisk.com
date Tue, 15 Jun 2010 06:22:40 +0000
parents fc14e2e87e9e
children ad5043f70fda
files light9/vidref/main.py light9/vidref/replay.py light9/vidref/vidref.glade
diffstat 3 files changed, 57 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/light9/vidref/main.py	Tue Jun 15 05:44:32 2010 +0000
+++ b/light9/vidref/main.py	Tue Jun 15 06:22:40 2010 +0000
@@ -69,8 +69,9 @@
                                         gst.PAD_ALWAYS,
                                         gst.caps_new_any())
 
-    def __init__(self, musicTime):
+    def __init__(self, musicTime, updateRecordingTo):
         gst.Element.__init__(self)
+        self.updateRecordingTo = updateRecordingTo
         self.sinkpad = gst.Pad(self._sinkpadtemplate, "sink")
         self.add_pad(self.sinkpad)
         self.sinkpad.set_chain_function(self.chainfunc)
@@ -129,6 +130,7 @@
                   outFilename,
                   (now - self.lastTime) * 1000,
                   (now - t1) * 1000)
+        self.updateRecordingTo(outDir)
         self.lastTime = now
 
 gobject.type_register(VideoRecordSink)
@@ -142,6 +144,8 @@
         mainwin.connect("destroy", gtk.main_quit)
         wtree.connect_signals(self)
 
+        self.recordingTo = wtree.get_object('recordingTo')
+
         # wtree.get_object("replayPanel").show() # demo only
         rp = wtree.get_object("replayVbox")
         self.replayViews = ReplayViews(rp)
@@ -186,7 +190,15 @@
             return e
         
         sink = makeElem("xvimagesink")
-        recSink = VideoRecordSink(self.musicTime)
+        def setRec(t):
+            # if you're selecting the text while gtk is updating it,
+            # you can get a crash in xcb_io
+            if getattr(self, '_lastRecText', None) == t:
+                return
+            with gtk.gdk.lock:
+                self.recordingTo.set_text(t)
+            self._lastRecText = t
+        recSink = VideoRecordSink(self.musicTime, setRec)
         self.pipeline.add(recSink)
 
         tee = makeElem("tee")
--- a/light9/vidref/replay.py	Tue Jun 15 05:44:32 2010 +0000
+++ b/light9/vidref/replay.py	Tue Jun 15 06:22:40 2010 +0000
@@ -54,7 +54,12 @@
             v.destroy()
         self.views[:] = []
 
-        takes = sorted(os.listdir(songDir(song)))
+        d = songDir(song)
+        try:
+            takes = sorted(os.listdir(d))
+        except OSError:
+            return
+        
         for take in takes:
             td = takeDir(songDir(song), take)
             r = Replay(td)
--- a/light9/vidref/vidref.glade	Tue Jun 15 05:44:32 2010 +0000
+++ b/light9/vidref/vidref.glade	Tue Jun 15 06:22:40 2010 +0000
@@ -74,9 +74,10 @@
                         <property name="width_request">75</property>
                         <property name="height_request">20</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Frame rate</property>
+                        <property name="label" translatable="yes">Frame rate:</property>
                       </object>
                       <packing>
+                        <property name="expand">False</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
@@ -106,9 +107,10 @@
                         <property name="width_request">85</property>
                         <property name="height_request">20</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Input source</property>
+                        <property name="label" translatable="yes">Input source:</property>
                       </object>
                       <packing>
+                        <property name="expand">False</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
@@ -127,6 +129,36 @@
                     <property name="position">2</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkHBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Recording
+to:</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTextView" id="recordingToView">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="editable">False</property>
+                        <property name="wrap_mode">char</property>
+                        <property name="buffer">recordingTo</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -307,4 +339,7 @@
     <property name="visible">True</property>
     <property name="stock">gtk-delete</property>
   </object>
+  <object class="GtkTextBuffer" id="recordingTo">
+    <property name="text" translatable="yes">/home/drewp/light9-vidref/play-light9.bigasterisk.com_show_dance2010_song6/1276582699</property>
+  </object>
 </interface>