[xiph-commits] r15068 - trunk/subtle

jmesquita at svn.xiph.org jmesquita at svn.xiph.org
Tue Jun 24 19:05:47 PDT 2008


Author: jmesquita
Date: 2008-06-24 19:05:46 -0700 (Tue, 24 Jun 2008)
New Revision: 15068

Modified:
   trunk/subtle/GPlayer.py
   trunk/subtle/Subtle.py
   trunk/subtle/subtle.glade
Log:
* Add support to fast forward and slow motion

Modified: trunk/subtle/GPlayer.py
===================================================================
--- trunk/subtle/GPlayer.py	2008-06-24 23:17:13 UTC (rev 15067)
+++ trunk/subtle/GPlayer.py	2008-06-25 02:05:46 UTC (rev 15068)
@@ -60,6 +60,7 @@
         bus.connect('sync-message::element', self.on_sync_message)
         bus.connect('message', self.on_message)
         self.cur_frame = 0
+        self.rate = 1.0
         
     def on_sync_message(self, bus, message):
         if message.structure is None:
@@ -76,7 +77,53 @@
             self.playing = False
         elif t == gst.MESSAGE_EOS:
             self.playing = False
+            
+    def fast_forward(self):
+        """
+            Here we will fast forward the stream for as many times
+            as this is called
+        """
+        if self.rate < 8.0:
+            self.rate = self.rate*2.0
+            event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
+                gst.SEEK_FLAG_FLUSH,
+                gst.SEEK_TYPE_SET, self.query_position()[0],
+                gst.SEEK_TYPE_NONE, 0)
 
+            res = self.player.send_event(event)
+            if res:
+                gst.info("fast forwarding at rate: %f" % self.rate)
+                self.player.set_new_stream_time(0L)
+            else:
+                gst.error("change rate to %f failed" % self.rate)
+        return
+    
+    def slow_motion(self):
+        """
+            Here we will slow motion the stream for as many times
+            as this is called
+        """
+        self.rate = self.rate/2.0
+        event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
+            gst.SEEK_FLAG_FLUSH,
+            gst.SEEK_TYPE_SET, self.query_position()[0],
+            gst.SEEK_TYPE_NONE, 0)
+
+        res = self.player.send_event(event)
+        if res:
+            gst.info("slowing playback to rate: %f" % self.rate)
+            self.player.set_new_stream_time(0L)
+        else:
+            gst.error("change rate to %f failed" % self.rate)
+
+        return
+        
+    def get_rate(self):
+        """
+            Get the playing rate at the moment
+        """
+        return self.rate
+
     ## Set location.
     # Set location of the source.
     # \param location - URI of the source.
@@ -121,7 +168,8 @@
             if caps is not None:
                 framerate = caps[0]['framerate']
                 position = float(position)/float(1000000000)
-                self.cur_frame = (float(position)*float(framerate.num))/float(framerate.denom)
+                self.cur_frame = (float(position)*float(
+                                    framerate.num))/float(framerate.denom)
         return self.cur_frame
 
     ## Seek.
@@ -129,7 +177,7 @@
     # \param location - location to the seek.
     def seek(self, location):
         gst.debug("seeking to %r" % location)
-        event = gst.event_new_seek(1.0, gst.FORMAT_TIME,
+        event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
             gst.SEEK_FLAG_FLUSH,
             gst.SEEK_TYPE_SET, location,
             gst.SEEK_TYPE_NONE, 0)
@@ -151,14 +199,33 @@
     ## Play.
     # Media play.
     def play(self):
-        gst.info("playing player")
-        self.player.set_state(gst.STATE_PLAYING)
-        self.playing = True
+        """
+            Change the stream state to playing or simply
+            change its playing rate to normal rate
+        """
+        if self.rate != 1.0:
+            self.rate = 1.0
+            event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
+                gst.SEEK_FLAG_FLUSH,
+                gst.SEEK_TYPE_SET, self.query_position()[0],
+                gst.SEEK_TYPE_NONE, 0)
 
+            res = self.player.send_event(event)
+            if res:
+                gst.info("slowing playback to rate: %f" % self.rate)
+                self.player.set_new_stream_time(0L)
+            else:
+                gst.error("change rate to %f failed" % self.rate)           
+        else:
+            gst.info("playing player")
+            self.player.set_state(gst.STATE_PLAYING)
+            self.playing = True
+        return
+
     ## Stop
     # Media stop.
     def stop(self):
-        self.player.set_state(gst.STATE_NULL)
+        self.player.set_state(gst.STATE_READY)
         self.playing = False
         gst.info("stopped player")
 

Modified: trunk/subtle/Subtle.py
===================================================================
--- trunk/subtle/Subtle.py	2008-06-24 23:17:13 UTC (rev 15067)
+++ trunk/subtle/Subtle.py	2008-06-25 02:05:46 UTC (rev 15068)
@@ -86,6 +86,8 @@
             "on_TOOL_STOP_clicked": self.playerStop,\
             "on_TOOL_SEEK_FORWARD_clicked": self.playerSeekForward,\
             "on_TOOL_SEEK_REWIND_clicked": self.playerSeekRewind,\
+            "on_TOOL_SM_clicked": self.playerSlowMotion,\
+            "on_TOOL_FF_clicked":self.playerFastForward,\
             "on_TOOL_HIDE_STREAMS_clicked": self.cb_hideStreamsPane,\
             "on_TOOL_HIDE_SUBLIST_clicked": self.cb_hideSubPane,\
             "on_MEDIA_ADJUSTMENT_button_press_event": self.buttonPressAdjustment,\
@@ -748,7 +750,8 @@
         """
             Put the current playing video in slow motion
         """
-        #TODO: Implement it
+        self.player.slow_motion()
+        self.playButton.set_stock_id(gtk.STOCK_MEDIA_PLAY)
         pass
 
 
@@ -756,7 +759,8 @@
         """
             Put the current playing video in FastForward 
         """
-        #TODO: Implement it
+        self.player.fast_forward()
+        self.playButton.set_stock_id(gtk.STOCK_MEDIA_PLAY)
         pass
 
 
@@ -849,11 +853,14 @@
 
     def play_toggled(self):
         if self.player.is_playing():
-            self.player.pause()
-            self.playButton.set_stock_id(gtk.STOCK_MEDIA_PLAY)
-            #self.playButton.set_icon_name(gtk.STOCK_MEDIA_PLAY)
-            if gobject.source_remove(self.update_id):
-                    self.update_id = -1
+            if self.player.get_rate() != 1.0:
+                self.player.play()
+                self.playButton.set_stock_id(gtk.STOCK_MEDIA_PAUSE)
+            else:
+                self.player.pause()
+                self.playButton.set_stock_id(gtk.STOCK_MEDIA_PLAY)
+                if gobject.source_remove(self.update_id):
+                        self.update_id = -1
         else:
             self.player.play()
             if self.update_id == -1:

Modified: trunk/subtle/subtle.glade
===================================================================
--- trunk/subtle/subtle.glade	2008-06-24 23:17:13 UTC (rev 15067)
+++ trunk/subtle/subtle.glade	2008-06-25 02:05:46 UTC (rev 15068)
@@ -107,7 +107,7 @@
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="MAIN_VIEW_SUBTITLES">
+                      <widget class="GtkMenuItem" id="MAIN_VIEW_SUBTITLES1">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="label" translatable="yes">S_ubtitle Pane</property>
@@ -261,8 +261,8 @@
                                 <property name="use_underline">True</property>
                                 <property name="stock_id">gtk-go-down</property>
                                 <signal name="clicked" handler="on_TOOL_IN_SUB_clicked"/>
+                                <accelerator key="c" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                                 <accelerator key="C" modifiers="GDK_MOD1_MASK" signal="clicked"/>
-                                <accelerator key="c" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>
@@ -275,8 +275,8 @@
                                 <property name="use_underline">True</property>
                                 <property name="stock_id">gtk-go-up</property>
                                 <signal name="clicked" handler="on_TOOL_OUT_SUB_clicked"/>
+                                <accelerator key="V" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                                 <accelerator key="v" modifiers="GDK_MOD1_MASK" signal="clicked"/>
-                                <accelerator key="V" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>
@@ -389,10 +389,11 @@
                             <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
                             <property name="icon_size">GTK_ICON_SIZE_MENU</property>
                             <child>
-                              <widget class="GtkToolButton" id="TOOL_PREV">
+                              <widget class="GtkToolButton" id="TOOL_SM">
                                 <property name="visible">True</property>
+                                <property name="tooltip" translatable="yes">Slow Motion</property>
                                 <property name="stock_id">gtk-media-previous</property>
-                                <signal name="clicked" handler="on_TOOL_PREV_clicked"/>
+                                <signal name="clicked" handler="on_TOOL_SM_clicked"/>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>
@@ -420,11 +421,12 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkToolButton" id="TOOL_NEXT">
+                              <widget class="GtkToolButton" id="TOOL_FF">
                                 <property name="visible">True</property>
+                                <property name="tooltip" translatable="yes">Fast Forward</property>
                                 <property name="use_underline">True</property>
                                 <property name="stock_id">gtk-media-next</property>
-                                <signal name="clicked" handler="on_TOOL_NEXT_clicked"/>
+                                <signal name="clicked" handler="on_TOOL_FF_clicked"/>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>
@@ -623,254 +625,266 @@
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <child>
-                  <widget class="GtkVBox" id="subedit_pane1">
+                  <widget class="GtkVPaned" id="vpaned2">
                     <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="can_focus">True</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox3">
+                      <widget class="GtkVBox" id="subedit_pane1">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <child>
-                          <widget class="GtkToolbar" id="toolbar1">
+                          <widget class="GtkHBox" id="hbox3">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
-                            <property name="icon_size">GTK_ICON_SIZE_MENU</property>
                             <child>
-                              <widget class="GtkToolButton" id="TOOL_HIDE_SUBEDIT1">
+                              <widget class="GtkToolbar" id="toolbar1">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="stock_id">gtk-close</property>
+                                <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
+                                <property name="icon_size">GTK_ICON_SIZE_MENU</property>
+                                <child>
+                                  <widget class="GtkToolButton" id="TOOL_HIDE_SUBEDIT">
+                                    <property name="visible">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="stock_id">gtk-close</property>
+                                    <signal name="clicked" handler="on_TOOL_HIDE_SUBEDIT_clicked"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkToolButton" id="TOOL_DETACH_SUBEDIT1">
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="stock_id">gtk-leave-fullscreen</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
                               </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                              </packing>
                             </child>
                             <child>
-                              <widget class="GtkToolButton" id="TOOL_DETACH_SUBEDIT1">
+                              <widget class="GtkToggleButton" id="tgl_mode">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="stock_id">gtk-leave-fullscreen</property>
+                                <property name="label" translatable="yes">Online Mode</property>
+                                <property name="response_id">0</property>
+                                <property name="active">True</property>
+                                <signal name="toggled" handler="on_tgl_mode_toggled"/>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkToggleButton" id="tgl_mode">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">Online Mode</property>
-                            <property name="response_id">0</property>
-                            <property name="active">True</property>
-                            <signal name="toggled" handler="on_tgl_mode_toggled"/>
-                          </widget>
                           <packing>
                             <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkFrame" id="frame1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">GTK_SHADOW_NONE</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment1">
+                          <widget class="GtkFrame" id="frame1">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="left_padding">12</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">GTK_SHADOW_ETCHED_OUT</property>
                             <child>
-                              <widget class="GtkTextView" id="txt_subedit">
-                                <property name="height_request">35</property>
+                              <widget class="GtkAlignment" id="alignment1">
                                 <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="justification">GTK_JUSTIFY_CENTER</property>
-                                <signal name="key_release_event" handler="on_txt_subedit_key_release_event"/>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <widget class="GtkTextView" id="txt_subedit">
+                                    <property name="height_request">35</property>
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="justification">GTK_JUSTIFY_CENTER</property>
+                                    <signal name="key_release_event" handler="on_txt_subedit_key_release_event"/>
+                                  </widget>
+                                </child>
                               </widget>
                             </child>
+                            <child>
+                              <widget class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Subtitle Edition&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="type">label_item</property>
+                              </packing>
+                            </child>
                           </widget>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label6">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Subtitle Edition&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </widget>
                           <packing>
-                            <property name="type">label_item</property>
+                            <property name="position">1</property>
                           </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="position">1</property>
+                        <property name="resize">False</property>
+                        <property name="shrink">True</property>
                       </packing>
                     </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="streams_pane">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <child>
-                      <widget class="GtkFrame" id="frame2">
+                      <widget class="GtkVBox" id="streams_pane">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">GTK_SHADOW_NONE</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment2">
+                          <widget class="GtkFrame" id="frame2">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="left_padding">12</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">GTK_SHADOW_ETCHED_OUT</property>
                             <child>
-                              <widget class="GtkVBox" id="vbox5">
+                              <widget class="GtkAlignment" id="alignment2">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <widget class="GtkToolbar" id="toolbar11">
+                                  <widget class="GtkVBox" id="vbox5">
                                     <property name="visible">True</property>
                                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
-                                    <property name="icon_size">GTK_ICON_SIZE_MENU</property>
                                     <child>
-                                      <widget class="GtkToolButton" id="TOOL_HIDE_STREAMS">
+                                      <widget class="GtkToolbar" id="toolbar11">
                                         <property name="visible">True</property>
                                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="stock_id">gtk-close</property>
-                                        <signal name="clicked" handler="on_TOOL_HIDE_STREAMS_clicked"/>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkToolButton" id="TOOL_DETACH_STREAMS">
-                                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                        <property name="stock_id">gtk-leave-fullscreen</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox8">
-                                    <property name="visible">True</property>
-                                    <child>
-                                      <widget class="GtkToolbar" id="toolbar13">
-                                        <property name="visible">True</property>
                                         <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
                                         <property name="icon_size">GTK_ICON_SIZE_MENU</property>
                                         <child>
-                                          <widget class="GtkToolButton" id="TOOL_ADD_STREAM">
+                                          <widget class="GtkToolButton" id="TOOL_HIDE_STREAMS">
                                             <property name="visible">True</property>
-                                            <property name="stock_id">gtk-add</property>
-                                            <signal name="clicked" handler="on_TOOL_ADD_STREAM_clicked"/>
-                                            <accelerator key="a" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                            <property name="stock_id">gtk-close</property>
+                                            <signal name="clicked" handler="on_TOOL_HIDE_STREAMS_clicked"/>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
                                           </packing>
                                         </child>
                                         <child>
-                                          <widget class="GtkToolButton" id="TOOL_NEW_STREAM">
-                                            <property name="visible">True</property>
-                                            <property name="stock_id">gtk-new</property>
-                                            <signal name="clicked" handler="on_TOOL_NEW_STREAM_clicked"/>
-                                            <accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                          <widget class="GtkToolButton" id="TOOL_DETACH_STREAMS">
+                                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                            <property name="stock_id">gtk-leave-fullscreen</property>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
                                           </packing>
                                         </child>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkVBox" id="vbox8">
+                                        <property name="visible">True</property>
                                         <child>
-                                          <widget class="GtkToolButton" id="TOOL_MOD_STREAM">
+                                          <widget class="GtkToolbar" id="toolbar13">
                                             <property name="visible">True</property>
-                                            <property name="stock_id">gtk-edit</property>
-                                            <signal name="clicked" handler="on_TOOL_MOD_STREAM_clicked"/>
-                                            <accelerator key="e" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                            <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
+                                            <property name="icon_size">GTK_ICON_SIZE_MENU</property>
+                                            <child>
+                                              <widget class="GtkToolButton" id="TOOL_ADD_STREAM">
+                                                <property name="visible">True</property>
+                                                <property name="stock_id">gtk-add</property>
+                                                <signal name="clicked" handler="on_TOOL_ADD_STREAM_clicked"/>
+                                                <accelerator key="a" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkToolButton" id="TOOL_NEW_STREAM">
+                                                <property name="visible">True</property>
+                                                <property name="stock_id">gtk-new</property>
+                                                <signal name="clicked" handler="on_TOOL_NEW_STREAM_clicked"/>
+                                                <accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkToolButton" id="TOOL_MOD_STREAM">
+                                                <property name="visible">True</property>
+                                                <property name="stock_id">gtk-edit</property>
+                                                <signal name="clicked" handler="on_TOOL_MOD_STREAM_clicked"/>
+                                                <accelerator key="e" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkToolButton" id="TOOL_DEL_STREAM">
+                                                <property name="visible">True</property>
+                                                <property name="stock_id">gtk-delete</property>
+                                                <signal name="clicked" handler="on_TOOL_DEL_STREAM_clicked"/>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                              </packing>
+                                            </child>
                                           </widget>
                                           <packing>
                                             <property name="expand">False</property>
+                                            <property name="fill">False</property>
                                           </packing>
                                         </child>
                                         <child>
-                                          <widget class="GtkToolButton" id="TOOL_DEL_STREAM">
+                                          <widget class="GtkScrolledWindow" id="scrolledwindow6">
                                             <property name="visible">True</property>
-                                            <property name="stock_id">gtk-delete</property>
-                                            <signal name="clicked" handler="on_TOOL_DEL_STREAM_clicked"/>
+                                            <property name="can_focus">True</property>
+                                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                            <child>
+                                              <widget class="GtkTreeView" id="LIST_STREAMS">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">True</property>
+                                              </widget>
+                                            </child>
                                           </widget>
                                           <packing>
-                                            <property name="expand">False</property>
+                                            <property name="position">1</property>
                                           </packing>
                                         </child>
                                       </widget>
                                       <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkScrolledWindow" id="scrolledwindow6">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                        <child>
-                                          <widget class="GtkTreeView" id="LIST_STREAMS">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                      <packing>
                                         <property name="position">1</property>
                                       </packing>
                                     </child>
                                   </widget>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
                             </child>
+                            <child>
+                              <widget class="GtkLabel" id="label7">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Project&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="type">label_item</property>
+                              </packing>
+                            </child>
                           </widget>
                         </child>
-                        <child>
-                          <widget class="GtkLabel" id="label7">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Project&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
-                        </child>
                       </widget>
+                      <packing>
+                        <property name="resize">True</property>
+                        <property name="shrink">True</property>
+                      </packing>
                     </child>
                   </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
                 </child>
               </widget>
               <packing>
@@ -902,7 +916,7 @@
             <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
             <property name="icon_size">GTK_ICON_SIZE_MENU</property>
             <child>
-              <widget class="GtkToolButton" id="TOOL_ADD_STREAM">
+              <widget class="GtkToolButton" id="TOOL_ADD_STREAM1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-add</property>
                 <signal name="clicked" handler="on_TOOL_ADD_STREAM_clicked"/>
@@ -913,7 +927,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_NEW_STREAM">
+              <widget class="GtkToolButton" id="TOOL_NEW_STREAM1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-new</property>
                 <signal name="clicked" handler="on_TOOL_NEW_STREAM_clicked"/>
@@ -924,7 +938,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_MOD_STREAM">
+              <widget class="GtkToolButton" id="TOOL_MOD_STREAM1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-edit</property>
                 <signal name="clicked" handler="on_TOOL_MOD_STREAM_clicked"/>
@@ -934,7 +948,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_DEL_STREAM">
+              <widget class="GtkToolButton" id="TOOL_DEL_STREAM1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-delete</property>
                 <signal name="clicked" handler="on_TOOL_DEL_STREAM_clicked"/>
@@ -956,7 +970,7 @@
             <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
             <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
             <child>
-              <widget class="GtkTreeView" id="LIST_STREAMS">
+              <widget class="GtkTreeView" id="LIST_STREAMS1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
               </widget>
@@ -984,7 +998,7 @@
             <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
             <property name="icon_size">GTK_ICON_SIZE_MENU</property>
             <child>
-              <widget class="GtkToolButton" id="TOOL_INS_B4_SUB">
+              <widget class="GtkToolButton" id="TOOL_INS_B4_SUB1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-sort-ascending</property>
                 <signal name="clicked" handler="on_TOOL_INS_B4_SUB_clicked"/>
@@ -995,7 +1009,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_INS_AFTER_SUB">
+              <widget class="GtkToolButton" id="TOOL_INS_AFTER_SUB1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-sort-descending</property>
                 <signal name="clicked" handler="on_TOOL_INS_AFTER_SUB_clicked"/>
@@ -1006,7 +1020,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_DEL_SUBS">
+              <widget class="GtkToolButton" id="TOOL_DEL_SUBS1">
                 <property name="visible">True</property>
                 <property name="stock_id">gtk-delete</property>
                 <signal name="clicked" handler="on_TOOL_DEL_SUBS_clicked"/>
@@ -1017,7 +1031,7 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_SAVE_STREAM">
+              <widget class="GtkToolButton" id="TOOL_SAVE_STREAM1">
                 <property name="visible">True</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-save</property>
@@ -1037,28 +1051,28 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_IN_SUB">
+              <widget class="GtkToolButton" id="TOOL_IN_SUB1">
                 <property name="visible">True</property>
                 <property name="tooltip" translatable="yes">Timecode IN (ALT+C)</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-go-down</property>
                 <signal name="clicked" handler="on_TOOL_IN_SUB_clicked"/>
+                <accelerator key="c" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                 <accelerator key="C" modifiers="GDK_MOD1_MASK" signal="clicked"/>
-                <accelerator key="c" modifiers="GDK_MOD1_MASK" signal="clicked"/>
               </widget>
               <packing>
                 <property name="expand">False</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkToolButton" id="TOOL_OUT_SUB">
+              <widget class="GtkToolButton" id="TOOL_OUT_SUB1">
                 <property name="visible">True</property>
                 <property name="tooltip" translatable="yes">Timecode OUT (ALT+V)</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-go-up</property>
                 <signal name="clicked" handler="on_TOOL_OUT_SUB_clicked"/>
+                <accelerator key="V" modifiers="GDK_MOD1_MASK" signal="clicked"/>
                 <accelerator key="v" modifiers="GDK_MOD1_MASK" signal="clicked"/>
-                <accelerator key="V" modifiers="GDK_MOD1_MASK" signal="clicked"/>
               </widget>
               <packing>
                 <property name="expand">False</property>
@@ -1080,7 +1094,7 @@
               <widget class="GtkViewport" id="viewport1">
                 <property name="visible">True</property>
                 <child>
-                  <widget class="GtkTreeView" id="LIST_SUBS">
+                  <widget class="GtkTreeView" id="LIST_SUBS1">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="reorderable">True</property>
@@ -1154,8 +1168,8 @@
     <property name="window_position">GTK_WIN_POS_CENTER</property>
     <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
     <property name="gravity">GDK_GRAVITY_CENTER</property>
+    <property name="show_hidden">True</property>
     <property name="do_overwrite_confirmation">True</property>
-    <property name="show_hidden">True</property>
     <child internal-child="vbox">
       <widget class="GtkVBox" id="dialog-vbox2">
         <property name="visible">True</property>



More information about the commits mailing list