bulk pre-camp commit
authorAsbjørn Sloth Tønnesen <asbjorn@ahead.com>
Thu, 29 Apr 2010 20:16:38 +0000 (20:16 +0000)
committerAsbjørn Sloth Tønnesen <asbjorn@ahead.com>
Thu, 29 Apr 2010 20:16:38 +0000 (20:16 +0000)
src/audioplayer.py
src/main.glade
src/mediaplayer.py
src/talkcutter.py
src/videoplayer.py

index aac7bdf..d0ba582 100644 (file)
@@ -14,6 +14,8 @@ class audioplayer(mediaplayer):
         self.spinner = self.wTree.get_widget('audio_spin')
         self.seeker = self.wTree.get_widget('audio_seeker')
         self.label = self.wTree.get_widget('audio_label')
+        self.bbox = self.wTree.get_widget('audio_buttons')
+        self.status = self.wTree.get_widget('audio_status')
 
         super(audioplayer, self).__init__()
 
index f77d5fd..e46fd4d 100644 (file)
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkToggleButton" id="video_lock">
-                            <property name="label">gtk-media-pause</property>
+                          <widget class="GtkHButtonBox" id="video_buttons">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_stock">True</property>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </widget>
                           <packing>
                             <property name="expand">False</property>
                         <property name="position">2</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="ideo_status">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">label</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkToggleButton" id="audio_lock">
-                            <property name="label">gtk-media-pause</property>
+                          <widget class="GtkHButtonBox" id="audio_buttons">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_stock">True</property>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </widget>
                           <packing>
                             <property name="expand">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="audio_status">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">label</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkToggleButton" id="talk_lock">
-                            <property name="label">gtk-media-pause</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_stock">True</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="position">2</property>
-                          </packing>
+                          <placeholder/>
                         </child>
                       </widget>
                       <packing>
index b2741b0..4b4df99 100644 (file)
@@ -6,6 +6,9 @@ import gtk
 import gtk.glade
 
 class mediaplayer(object):
+    PLAY_IMAGE = gtk.image_new_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_BUTTON)
+    PAUSE_IMAGE = gtk.image_new_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_BUTTON)
+
     def __init__( self ):
         self.playbin = gst.element_factory_make('playbin2')
 
@@ -15,7 +18,7 @@ class mediaplayer(object):
 
         self.spinner.set_range(0, 100)
         self.spinner.set_increments(1, 10)
-        self.spinner.connect('change-value', self.on_seeker_change)
+        self.spinner.connect('value-changed', self.on_spinner_change)
 
         self.seeker.set_range(0, 100)
         self.seeker.set_increments(1, 10)
@@ -23,6 +26,24 @@ class mediaplayer(object):
         self.seeker.connect('button-press-event', self.on_button_press)
         self.seeker.connect('button-release-event', self.on_button_release)
 
+        self.play_button = gtk.Button()
+        self.play_button.set_image(self.PLAY_IMAGE)
+        self.play_button.connect('clicked', self.on_play_clicked)
+        self.bbox.pack_start(self.play_button, False)
+
+        self.begin_button = gtk.Button()
+        self.begin_button.set_image(self.PLAY_IMAGE)
+        self.begin_button.connect('clicked', self.on_begin_clicked)
+        self.bbox.pack_start(self.begin_button, False)
+
+        self.end_button = gtk.Button()
+        self.end_button.set_image(self.PLAY_IMAGE)
+        self.end_button.connect('clicked', self.on_end_clicked)
+        self.bbox.pack_start(self.end_button, False)
+
+        self.bbox.show_all()
+
+        self.is_loaded = False
         self.is_playing = False
         self.known_range = False
 
@@ -30,9 +51,11 @@ class mediaplayer(object):
         self.playbin.set_property('uri', uri)
         self.playbin.set_state(gst.STATE_PLAYING)
         self.label.label = 'f';
-        gobject.timeout_add(100, self.update_slider)
+        gobject.timeout_add(500, self.update_slider)
         self.is_playing = True
+        self.is_loaded = True
         self.known_range = False
+        self.label.set_text(uri)
 
     def on_finish(self, bus, message):
         self.playbin.set_state(gst.STATE_PAUSED);
@@ -44,7 +67,7 @@ class mediaplayer(object):
 
     def update_slider(self):
         if not self.is_playing:
-            return False # cancel timeout
+            return True
 
         try:
             if not self.known_range:
@@ -61,7 +84,7 @@ class mediaplayer(object):
 
             # block seek handler so we don't seek when we set_value()
             self.seeker.handler_block_by_func(self.on_seeker_change)
-            self.spinner.handler_block_by_func(self.on_seeker_change)
+            self.spinner.handler_block_by_func(self.on_spinner_change)
 
             value = float(nanosecs) / gst.SECOND;
 
@@ -71,7 +94,7 @@ class mediaplayer(object):
             self.spinner.set_text("%f" %(value))
 
             self.seeker.handler_unblock_by_func(self.on_seeker_change)
-            self.spinner.handler_unblock_by_func(self.on_seeker_change)
+            self.spinner.handler_unblock_by_func(self.on_spinner_change)
 
         except gst.QueryError:
             # pipeline must not be ready and does not know position
@@ -81,14 +104,42 @@ class mediaplayer(object):
 
 
     def on_seeker_change(self, element, a, b):
-        print 'on_seeker_change'
         seek_time_secs = element.get_value()
+        self.mseek(seek_time_secs)
+
+    def on_spinner_change(self, element):
+        seek_time_secs = float(element.get_value())
+        self.mseek(seek_time_secs)
+
+    def mplay(self):
+        self.playbin.set_state(gst.STATE_PLAYING)
+
+    def mpause(self):
+        self.playbin.set_state(gst.STATE_PAUSED)
+
+    def mseek(self, seek_time_secs):
+        print 'seek: %f' % (seek_time_secs)
         self.playbin.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_KEY_UNIT, seek_time_secs * gst.SECOND)
 
     def on_button_press(self, element, a):
-        self.playbin.set_state(gst.STATE_PAUSED);
+        if self.is_playing:
+          self.mpause()
 
     def on_button_release(self, element, a):
-        self.playbin.set_state(gst.STATE_PLAYING)
-
+        if self.is_playing:
+          self.mplay()
+
+    def on_play_clicked(self, element):
+        if self.is_playing:
+          self.mpause()
+          self.play_button.set_image(self.PLAY_IMAGE)
+          self.is_playing = False;
+        else:
+          self.mplay()
+          self.play_button.set_image(self.PAUSE_IMAGE)
+          self.is_playing = True;
+          
+    def on_begin_clicked(self, element):
+        
+    def on_end_clicked(self, element):
 
index 103a70a..15e5b94 100755 (executable)
@@ -45,7 +45,6 @@ class TalkCutter:
         self.wTree.visible = True
         gtk.main()
 
-
     def on_destroy(self, window):
         self.playbin.set_state(gst.STATE_NULL)
         gtk.main_quit()
index 0d88a22..73e22f2 100644 (file)
@@ -15,6 +15,8 @@ class videoplayer(mediaplayer):
         self.spinner = self.wTree.get_widget('video_spin')
         self.seeker = self.wTree.get_widget('video_seeker')
         self.label = self.wTree.get_widget('video_label')
+        self.bbox = self.wTree.get_widget('video_buttons')
+        self.status = self.wTree.get_widget('video_status')
         self.drawingarea = self.wTree.get_widget('video')
 
         super(videoplayer, self).__init__()