[xiph-commits] r14686 - trunk/souffleur

jmesquita at svn.xiph.org jmesquita at svn.xiph.org
Tue Apr 8 19:47:52 PDT 2008


Author: jmesquita
Date: 2008-04-08 19:47:51 -0700 (Tue, 08 Apr 2008)
New Revision: 14686

Modified:
   trunk/souffleur/Souffleur.py
   trunk/souffleur/Subtitles.py
   trunk/souffleur/souffleur.glade
Log:
 * souffleur.glade

        Anyone interested on actually running Souffleur will notice the
difference. A new GUI concept was developed. Panes can be hidden and
soon, detachable.

* Souffleur.py

        Oh dear, where should I start...

        - videowidget initial size is now set according to media information
and can be correctly resized
        - Introduce new GUI concept of hiding panes
        - Add new callbacks for improving usability of the subtitle pane
                * Double-click seeks media
                * Single click edits the subtitle
        - Prepared GUI for "edit mode" and "online mode"
                * The idea behind this is that subtitles are always done in 5 stages.
First we transcript, second translate, third spotting and forth timing
and fith review. "Editing mode" will be good for everything but
reviewing. "Online mode" will make the subtitles move according to the
movie on the TreeView and on TextView, but TextView won't be sensitive
at this time.
        - Subtitle editing is done in real-time (a few bugs need fix here)
        - New framerate calculation and display in realtime
        - Added new stream information display on Project Pane

 * Subtitles.py

        - Started to remodel so we can support other formats
        - Why should we update the whole list when editing the sub text? Added
a new method for doing that nicely.

Modified: trunk/souffleur/Souffleur.py
===================================================================
--- trunk/souffleur/Souffleur.py	2008-04-09 02:46:17 UTC (rev 14685)
+++ trunk/souffleur/Souffleur.py	2008-04-09 02:47:51 UTC (rev 14686)
@@ -15,16 +15,12 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 
-#import oggStreams
-#from gstfile import GstFile
 from GPlayer import VideoWidget
 from GPlayer import GstPlayer
 from Subtitles import Subtitles
-#from datetime import time
 import sys
+import os
 
-from streams import Media
-from streams import Stream
 from MediaInfo import MediaInfo
 from SouffleurXML import ProjectXML
 
@@ -50,7 +46,6 @@
 import gst
 
 class Souffleur:
-#    gladefile=""
     def __init__(self):
         """
         In this init we are going to display the main
@@ -66,33 +61,26 @@
         
         self.Subtitle = None
         self.Subtitles = []
-        self.curSub = -1
-        self.scroll = 0
+	# Current subtitle being edited
+	self.cur_edit_sub_iter = None
+
+        #self.scroll = 0
         self.videoWidgetGst = None
         self.player = None
         self.t_duration = 0
-        
         self.media = []
-        self.lastID=0
-        #self.videoWidget=VideoWidget();
-        #gtk.glade.set_custom_handler(self.videoWidget, VideoWidget())
 
-        #gtk.glade.set_custom_handler(self.custom_handler)
-        self.wTree=gtk.glade.XML (gladefile,windowname)
+        self.wTree=gtk.glade.XML(gladefile,windowname)
         self.gladefile = gladefile
-        # we only have two callbacks to register, but
-        # you could register any number, or use a
-        # special class that automatically
-        # registers all callbacks. If you wanted to pass
-        # an argument, you would use a tuple like this:
-        # dic = { "on button1_clicked" : (self.button1_clicked, arg1,arg2) , ...
-        #dic = { "on_button1_clicked" : self.button1_clicked, \
-        #	"gtk_main_quit" : (gtk.mainquit) }
         dic = { "gtk_main_quit" : (gtk.main_quit),\
             "on_main_file_quit_activate": (gtk.main_quit), \
             "on_main_file_open_activate": self.mainFileOpen, \
             "on_TOOL_PLAY_clicked": self.playerPlay,\
             "on_TOOL_STOP_clicked": self.playerStop,\
+            "on_TOOL_SEEK_FORWARD_clicked": self.playerSeekForward,\
+            "on_TOOL_SEEK_REWIND_clicked": self.playerSeekRewind,\
+            "on_TOOL_HIDE_STREAMS_clicked": self.cb_hideStreamsPane,\
+            "on_TOOL_HIDE_SUBLIST_clicked": self.cb_hideSubPane,\
             "on_MEDIA_ADJUSTMENT_button_press_event": self.buttonPressAdjustment,\
             "on_MEDIA_ADJUSTMENT_button_release_event": self.buttonReleaseAdjustment,\
             "on_MEDIA_ADJUSTMENT_change_value": self.changeValueAdjustment,\
@@ -100,26 +88,39 @@
             "on_main_file_save_activate": self.cb_onSaveMenu,\
             "on_main_file_save_as_activate": self.cb_onSaveAsMenu,\
             "on_main_file_new_activate": self.cb_onNewMenu,\
-            "on_TOOL_FIRST_clicked": self.cb_onToolFirst,\
-            "on_TOOL_LAST_clicked": self.cb_onToolLast,\
-            "on_MAIN_VIEW_STREAMS_activate": self.cb_onStreamsWindow,\
-            "on_MAIN_VIEW_SUBTITLES_activate": self.cb_onSubtitleWindow,\
-            "on_LIST_SUBS_cursor_changed": self.cb_onSubsListSelect}
+            "on_MAIN_VIEW_STREAMS_PANE_activate": self.cb_showStreamsPane,\
+            "on_MAIN_VIEW_SUBTITLES_activate": self.cb_showSubtitlePane,\
+            "on_TOOL_DEL_STREAM_clicked": self.cb_delStream,\
+	    "on_TOOL_MOD_STREAM_clicked": self.cb_modStream,\
+	    "on_TOOL_NEW_STREAM_clicked": self.cb_newStream,\
+	    "on_TOOL_ADD_STREAM_clicked": self.cb_addNewStream,\
+	    "on_LIST_SUBS_button_release_event": self.cb_onSubsListSelect,\
+	    "on_LIST_SUBS_button_press_event": self.cb_onSubsListSelect,\
+	    "on_txt_subedit_key_release_event": self.cb_onSubtitleEdit,\
+	    "on_TOOL_SAVE_STREAM_clicked": self.cb_saveStream,\
+	    "on_TOOL_DEL_SUBS_clicked": self.cb_subDel,\
+	    "on_TOOL_OUT_SUB_clicked": self.cb_subOut,\
+	    "on_TOOL_IN_SUB_clicked": self.cb_subIn,\
+	    "on_TOOL_INS_B4_SUB_clicked": self.cb_onSubInsB4,\
+	    "on_TOOL_INS_AFTER_SUB_clicked": self.cb_onSubInsAfter,\
+	    "on_TOOL_IN_SUB_clicked": self.cb_subIn}
         self.wTree.signal_autoconnect (dic)
         
+	self.windowMainWindow=self.wTree.get_widget("MAIN_WINDOW")
         self.windowProjectOpen=None
         self.windowProjectSO=None
         self.PFileName=None
         self.windowMediaOpen=None
-        self.windowStreams=gtk.glade.XML (self.gladefile,"STREAM_WINDOW")
-        dic = {"on_TOOL_DEL_STREAM_clicked": self.cb_delStream,\
-                "on_TOOL_MOD_STREAM_clicked": self.cb_modStream,\
-                "on_TOOL_SAVE_STREAM_clicked": self.cb_saveStream,\
-                "on_TOOL_ADD_STREAM_clicked": self.cb_addNewStream,\
-                "on_STREAM_WINDOW_delete_event": self.cb_StreamWindowDelete}
-        self.windowStreams.signal_autoconnect (dic)
+        #self.windowStreams=gtk.glade.XML (self.gladefile,"STREAM_WINDOW")
+        #dic = {"on_TOOL_DEL_STREAM_clicked": self.cb_delStream,\
+        #        "on_TOOL_MOD_STREAM_clicked": self.cb_modStream,\
+        #        "on_TOOL_NEW_STREAM_clicked": self.cb_newStream,\
+        #        "on_TOOL_ADD_STREAM_clicked": self.cb_addNewStream,\
+        #        "on_STREAM_WINDOW_delete_event": self.cb_StreamWindowDelete}
+        #self.windowStreams.signal_autoconnect (dic)
         ### Setup LIST_STREAMS
-        LIST = self.windowStreams.get_widget("LIST_STREAMS")
+        #LIST = self.windowStreams.get_widget("LIST_STREAMS")
+        LIST = self.wTree.get_widget("LIST_STREAMS")
         if LIST:
             self.streamsTreeStore = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_UINT)
             LIST.set_model(self.streamsTreeStore)
@@ -127,12 +128,20 @@
             tvcolumn = gtk.TreeViewColumn('Streams', cell, text = 0)
             LIST.append_column(tvcolumn)
         
-        self.windowSubsList=gtk.glade.XML (self.gladefile,"SUBS_LIST")
-        dic = {"on_LIST_SUBS_cursor_changed": self.cb_onSubsListSelect,\
-                "on_TOOL_SAVE_STREAM_clicked": self.cb_saveStream,\
-                "on_SUBS_LIST_delete_event": self.cb_onSubsWindowDelete}
-        self.windowSubsList.signal_autoconnect (dic)
-        SUBLIST = self.windowSubsList.get_widget("LIST_SUBS")
+        #self.windowSubsList=gtk.glade.XML (self.gladefile,"SUBS_LIST")
+        #dic = {"on_LIST_SUBS_cursor_changed": self.cb_onSubsListSelect,\
+        #        "on_TOOL_SAVE_STREAM_clicked": self.cb_saveStream,\
+        #        "on_TOOL_DEL_SUBS_clicked": self.cb_subDel,\
+        #        "on_TOOL_OUT_SUB_clicked": self.cb_subOut,\
+        #        "on_TOOL_IN_SUB_clicked": self.cb_subIn,\
+        #        "on_TOOL_INS_B4_SUB_clicked": self.cb_onSubInsB4,\
+        #        "on_TOOL_INS_AFTER_SUB_clicked": self.cb_onSubInsAfter,\
+        #        "on_TOOL_IN_SUB_clicked": self.cb_subIn,\
+        #        "on_SUBS_LIST_delete_event": self.cb_onSubsWindowDelete}
+        #self.windowSubsList.signal_autoconnect (dic)
+        #SUBLIST = self.windowSubsList.get_widget("LIST_SUBS")
+        SUBLIST = self.wTree.get_widget("LIST_SUBS")
+	SUBLIST.add_events(gtk.gdk._2BUTTON_PRESS)
         if SUBLIST:
             self.subsListStore = gtk.ListStore(gobject.TYPE_UINT,
                                                 gobject.TYPE_UINT,
@@ -149,27 +158,149 @@
             tvcolumn = gtk.TreeViewColumn('End', cell, text = 2)
             SUBLIST.append_column(tvcolumn)
             cell = gtk.CellRendererText()
-	    cell.set_property('editable', True)
             tvcolumn = gtk.TreeViewColumn('Text', cell, text = 3)
 	    tvcolumn.set_resizable(True)
             SUBLIST.append_column(tvcolumn)
-        WND=self.windowStreams.get_widget("STREAM_WINDOW")
-        WND.hide()
-        WND=self.windowSubsList.get_widget("SUBS_LIST")
-        WND.hide()
+        #WND=self.windowStreams.get_widget("STREAM_WINDOW")
+        #WND.hide()
+        #WND=self.windowSubsList.get_widget("SUBS_LIST")
+        #WND.hide()
         ### Main window setup
         self.videoWidget = self.wTree.get_widget("VIDEO_OUT_PUT")
         self.adjustment = self.wTree.get_widget("MEDIA_ADJUSTMENT")
-        self.SubEdit = self.wTree.get_widget("VIEW_SUB")
         self.labelHour = self.wTree.get_widget("LABEL_HOUR")
         self.labelMin = self.wTree.get_widget("LABEL_MIN")
         self.labelSec = self.wTree.get_widget("LABEL_SEC")
         self.labelMSec = self.wTree.get_widget("LABEL_MSEC")
-        self.subStartTime = self.wTree.get_widget("SUB_START_TIME")
-        self.subEndTime = self.wTree.get_widget("SUB_END_TIME")
         self.playButton = self.wTree.get_widget("TOOL_PLAY")
+	self.lbl_cur_fps = self.wTree.get_widget("lbl_cur_fps")
+	self.streams_pane = self.wTree.get_widget("streams_pane")
+	self.subtitle_pane = self.wTree.get_widget("subtitle_pane")
+	self.txt_subedit = self.wTree.get_widget("txt_subedit")
+	self.subList = SUBLIST
+	#self.windowMainWindow.maximize()
         return
 #==============================================================================
+    def cb_hideSubPane(self, widget):
+	"""
+	    Hide the subtitles pane
+	"""
+	self.subtitle_pane.hide()
+	return
+#==============================================================================
+    def cb_hideStreamsPane(self, widget):
+	"""
+	    Hide the streams pane
+	"""
+	self.streams_pane.hide()
+	return
+#==============================================================================
+    def cb_showStreamsPane(self, widget):
+	"""
+	    Hide the streams pane
+	"""
+	self.streams_pane.show()
+	return
+#==============================================================================
+    def cb_onSubInsB4(self, widget):
+	"""
+	    Insert new subtitle before current selected
+	"""
+	subsList = self.wTree.get_widget("LIST_SUBS")
+	selection = subsList.get_selection()
+	result = selection.get_selected()
+	if result:
+            model, iter = result
+	    if self.subsListStore.iter_is_valid(iter):
+		cur, sTime, eTime = self.subsListStore.get(iter, 0, 1, 2)
+		self.Subtitle.subAdd(sTime-1,sTime-2,'',None,1)
+		self.subsListStore.insert_before(iter, (cur, sTime-1, sTime-2, 'New subtitle...'))
+		self.reorder_SubsListStore()
+	return
+#==============================================================================
+    def cb_onSubInsAfter(self, widget):
+	"""
+	    Insert new subtitle after current selected
+	"""
+	subsList = self.wTree.get_widget("LIST_SUBS")
+	selection = subsList.get_selection()
+	result = selection.get_selected()
+	if result:
+            model, iter = result
+	    if self.subsListStore.iter_is_valid(iter):
+		cur, sTime, eTime = self.subsListStore.get(iter, 0, 1, 2)
+		self.Subtitle.subAdd(eTime+1,eTime+2,'',None,1)
+		cur += 1
+		self.subsListStore.insert_after(iter, (cur, eTime+1, eTime+2, 'New subtitle...'))
+		self.reorder_SubsListStore()
+	return
+#==============================================================================
+    def reorder_SubsListStore(self):
+	"""
+	    Reorder the subs listStore when added or deleted
+	"""
+	iter = self.subsListStore.get_iter_first()
+	cur = 0
+	while iter is not None:
+	    if iter is not None:
+		self.subsListStore.set_value(iter, 0, cur)
+		cur += 1
+		iter = self.subsListStore.iter_next(iter)
+#==============================================================================
+    def cb_subDel(self, widget):
+	"""
+	    Delete a subtile from the list store and from memory
+	"""
+	subsList = self.wTree.get_widget("LIST_SUBS")
+	selection = subsList.get_selection()
+	result = selection.get_selected()
+	if result:
+            model, iter = result
+	    subKey = self.subsListStore.get(iter, 1)
+            self.Subtitle.subDel(subKey[0])
+	    model.remove(iter)
+	    self.reorder_SubsListStore()
+#==============================================================================
+    def cb_subOut(self, widget):
+	"""
+	    Set subtitle endtime
+	"""
+	if self.player:
+	    subsList = self.windowSubsList.get_widget("LIST_SUBS")
+	    selection = subsList.get_selection()
+	    result = selection.get_selected()
+	    if result:
+		model, iter = result
+		subKey, end_time = self.subsListStore.get(iter, 1, 2)
+		try:
+		    self.Subtitle.getSub(subKey).end_time = self.p_position/1000000
+		    self.Subtitle.subUpdate(subKey)
+		except:
+		    print "Error while setting subtitle timecode"
+		    return
+		self.subsListStore.set(iter,2,self.p_position/1000000)
+	return True
+#==============================================================================
+    def cb_subIn(self, widget):
+	"""
+	    Set subtitle start time
+	"""
+	if self.player:
+	    subsList = self.windowSubsList.get_widget("LIST_SUBS")
+	    selection = subsList.get_selection()
+	    result = selection.get_selected()
+	    if result:
+		model, iter = result
+		subKey = self.subsListStore.get(iter, 1)
+		try:
+		    self.Subtitle.getSub(subKey[0]).start_time = self.p_position/1000000
+		    self.Subtitle.subUpdate(subKey[0])
+		except:
+		    print "Error while setting subtitle timecode"
+		    return
+		self.subsListStore.set(iter,1,self.p_position/1000000)
+	return True
+#==============================================================================
     def cb_onSubsWindowDelete(self, widget, event):
         widget.hide()
         return True
@@ -183,23 +314,17 @@
             WND=self.windowSubsList.get_widget("SUBS_LIST")
             WND.show()
 #==============================================================================
+    def cb_showSubtitlePane(self, menu):
+	"""
+	   Show subtitle pane
+	"""
+	self.subtitle_pane.show()
+#==============================================================================
     def cb_onStreamsWindow(self, menu):
         if self.windowStreams:
             WND=self.windowStreams.get_widget("STREAM_WINDOW")
             WND.show()
 #==============================================================================
-    def cb_onToolLast(self, widget):
-        if self.Subtitle:
-            time = self.Subtitle.subKeys[-1]
-            self.player.set_subtitle_text(self.Subtitle.getSub(time).text)
-            self.player.seek(time*1000000)
-#==============================================================================
-    def cb_onToolFirst(self, widget):
-        if self.Subtitle:
-            time = self.Subtitle.subKeys[0]
-            self.player.set_subtitle_text(self.Subtitle.getSub(time).text)
-            self.player.seek(time*1000000)
-#==============================================================================
     def getSubtitle(self, source):
         for i in self.Subtitles:
             if i.subSource==source:
@@ -223,45 +348,76 @@
             tSubtitle.subSave(mInfo.source, 1)
 #==============================================================================
     def cb_modStream(self, widget):
-        if not self.windowStreams:
-            return
+	# We have removed the window
+        #if not self.windowStreams:
+        #    return
         if not self.streamsTreeStore:
             return
-        TView = self.windowStreams.get_widget("LIST_STREAMS")
+        #TView = self.windowStreams.get_widget("LIST_STREAMS")
+        TView = self.wTree.get_widget("LIST_STREAMS")
         TSelec = TView.get_selection()
         TModel, TIter = TSelec.get_selected()
         if not TIter:
             return
-        N=TModel.get_value(TIter, 1)
-        mInfo = self.media[N]
-        if "subtitle" in mInfo.MIME:
-            self.setSubtitle(mInfo.Streams[0].ID)
+        N=TModel.get_value(TIter, 0)
+	# FIXME: We should actually get the selected subtitle
+	if "Subtitle" in N:
+	    self.setSubtitle()
 #==============================================================================
-    def setSubtitle(self, source):
-        for i in self.Subtitles:
-            if i.subSource==source:
-                self.Subtitle=i
-		#if self.player:
-		#    self.play_toggled()
-                break
+    def cb_newStream(self, widget):
+	"""
+	   Create a new subtitle
+	"""
+	print "Create a new stream"
+	#TODO: Lets popup something that will let us choose sub type
+	return
+#==============================================================================
+    def setSubtitle(self):
         if self.Subtitle:
-            if (self.windowStreams):
-                WND=self.windowSubsList.get_widget("SUBS_LIST")
-                WND.show()
+	    # We have removed the window for now
+            #if (self.windowStreams):
+            #    WND=self.windowSubsList.get_widget("SUBS_LIST")
+            #    WND.show()
             self.subsWindowUpdate()
 #==============================================================================
     def updateStreamWindow(self):
+	#FIXME: This should be more complete and better handled
+	# Maybe all streams must be on the same list/dict
         if not self.streamsTreeStore:
             return
         self.streamsTreeStore.clear()
+	for sub in self.Subtitles:
+            iter = self.streamsTreeStore.append(None)
+	    self.streamsTreeStore.set(iter, 0, "Subtitle: "+ sub.filename, 1, self.Subtitles.index(sub))
+	    child = self.streamsTreeStore.append(iter)
+	    self.streamsTreeStore.set(child, 0, "Type: " + sub.subType, \
+		    1, self.Subtitles.index(sub))
         for mInfo in self.media:
             iter = self.streamsTreeStore.append(None)
-            self.streamsTreeStore.set(iter, 0, mInfo.MIME + " ("+mInfo.source+")", 1, self.media.index(mInfo))
-            for i in mInfo.Streams:
+            self.streamsTreeStore.set(iter, 0, mInfo.source, 1, self.media.index(mInfo))
+	    if mInfo.has_video:
                 child = self.streamsTreeStore.append(iter)
-                self.streamsTreeStore.set(child, 0, i.MIME + " ("+i.Name+")", 1, self.media.index(mInfo))
+		self.streamsTreeStore.set(child, 0, "Mimetype: " + mInfo.MIME.split("/")[1], \
+			1, self.media.index(mInfo))
+                child = self.streamsTreeStore.append(iter)
+		self.streamsTreeStore.set(child, 0, "Resolution: %dx%d "% (mInfo.videoWidth, mInfo.videoHeight), \
+			1, self.media.index(mInfo))
+                child = self.streamsTreeStore.append(iter)
+		self.streamsTreeStore.set(child, 0, ("Framerate: %.2f" % mInfo.framerate), \
+			1, self.media.index(mInfo))
+                child = self.streamsTreeStore.append(iter)
+		self.streamsTreeStore.set(child, 0, ("Length: %s s" % mInfo.videoLengthS), \
+			1, self.media.index(mInfo))
+                child = self.streamsTreeStore.append(iter)
+		self.streamsTreeStore.set(child, 0, ("Frames: %d" % (mInfo.videoLengthS/(1/mInfo.framerate))), \
+			1, self.media.index(mInfo))
+                child = self.streamsTreeStore.append(iter)
 #==============================================================================
     def cb_delStream(self, widget):
+	"""
+	    Remove a stream from the current project
+	"""
+	#FIXME: We broke this ...
         if not self.windowStreams:
             return
         if not self.streamsTreeStore:
@@ -272,7 +428,6 @@
         if not TIter:
             return
         N=TModel.get_value(TIter, 1)
-        del self.media[N]
         self.updateStreamWindow()
 #==============================================================================
     def cb_openMediaCancel(self, widget):
@@ -286,11 +441,21 @@
         URI=WND.get_uri()
 	self.TEST_SUB_URI = URI
         WND.hide()
-        MI = MediaInfo(URI, FN, self.lastID)
-        MI.run()
-        tMedia = MI.getMedia()
-        MI=None
-        self.addMedia(tMedia)
+
+	extension = os.path.splitext(FN)[1]
+	tmpSub = Subtitles(FN)
+	if extension in tmpSub.getSupportedTypes():
+	    #TODO: We should improve the way we check subtitles
+	    tmpSub.subLoad(FN)
+	    self.Subtitle = tmpSub
+	    self.Subtitles.append(tmpSub)
+	    self.updateStreamWindow()
+	else:
+	    #TODO: Check if it is media or throw error
+	    MI = MediaInfo(FN, URI)
+	    # Lets poll for information
+	    gobject.timeout_add(30, self.addMedia, MI)
+
 #==============================================================================
     def cb_addNewStream(self, widget):
         if(self.windowMediaOpen==None):
@@ -311,43 +476,89 @@
             WND=self.windowStreams.get_widget("STREAM_WINDOW")
             WND.show()
 #==============================================================================
-    def cb_onSubsListSelect(self, widget):
-        Row=None
-        Selection = widget.get_selection()
-        if Selection==None:
-            return
-        Model, Rows = Selection.get_selected_rows()
-        if Rows != None:
-            Row = Model[Rows[0][0]]
-            if self.Subtitle:
-                Sub = self.Subtitle.subs[Row[1]]
+    def cb_onSubsListSelect(self, widget, event):
+	"""
+	    Do the proper thing when subtitle is selected
+	    2 clicks seeks de video to its timecode
+	    1 click edits on the TextView
+	"""
+	#FIXME: Something nasty happens on the selection of the subtitle
+	# Only happens the first time and throws an exception
+	Row=None
+	Selection = widget.get_selection()
+	if Selection==None:
+	    return
+	Model, Rows = Selection.get_selected_rows()
+	if Rows != None:
+	    Row = Model[Rows[0][0]]
+	    if self.Subtitle:
+		Sub = self.Subtitle.subs[Row[1]]
+	if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
+	    if self.player:
+		B=0;
 		self.player.set_subtitle_text(Sub.text)
-                if self.player:
-                    B=0;
-                    if self.player.is_playing():
-                        B=1
-                        self.play_toggled()
-                    real = long(Row[1]) # in ns
-                    self.player.seek(real*1000000)
-                    # allow for a preroll
-                    self.player.get_state(timeout=50*gst.MSECOND) # 50 ms
-                    if B==1:
-                        self.play_toggled()
+		if self.player.is_playing():
+		    B=1
+		    self.play_toggled()
+		real = long(Row[1]) # in ns
+		self.player.seek(real*1000000)
+		# allow for a preroll
+		self.player.get_state(timeout=50*gst.MSECOND) # 50 ms
+		if B==1:
+		    self.play_toggled()
+	if event.type == gtk.gdk.BUTTON_RELEASE:
+	    model, self.cur_edit_sub_iter =  Selection.get_selected() 
+	    self.setSubtitleEdit(Sub.text)
 #==============================================================================
+    def cb_onSubTextEdited(self, cell, path, new_text):
+	"""
+	    Callback to change subtitle when subtitle text was changed
+	"""
+	iter = self.subsListStore.get_iter(path)
+	subKey, ETime, Text = self.subsListStore.get(iter, 1, 2, 3)
+	subtitle = self.Subtitle.getSub(subKey)
+	if subtitle.text != new_text:
+	    subAttr = subtitle.Attributes
+	    self.Subtitle.subDel(subKey)
+	    self.Subtitle.subAdd(subKey,ETime,new_text,subAttr,1)
+	    self.subsListStore.set(iter,3,new_text)
+
+        return True
+#==============================================================================
+    def cb_onSubtitleEdit(self, widget, event):
+	"""
+	    Updates the subtile list in realtime
+	"""
+	id, subKey, ETime = self.subsListStore.get(self.cur_edit_sub_iter, 0, 1, 2)
+	#self.Subtitle.subDel(subKey)
+	text = self.txt_subedit.get_buffer().get_property('text')
+	self.Subtitle.updateText(subKey,text)
+	#self.Subtitle.subAdd(subKey,ETime,text,None,0)
+	self.subsListStore.set(self.cur_edit_sub_iter, 3, text) 
+	return
+#==============================================================================
+    def setSubtitleEdit(self,sub):
+	"""
+	    Set the subtitle to be edited
+	"""
+	buf = self.txt_subedit.get_buffer()
+	buf.set_text(sub)
+#==============================================================================
     def subsWindowUpdate(self):
         if not self.Subtitle:
             return
-        if self.windowSubsList:
-            self.subsListStore.clear()
-	    j=0
-            for i in self.Subtitle.subKeys:
-                S=self.Subtitle.subs[i]
-                iter = self.subsListStore.append(None)
-                self.subsListStore.set(iter,0, j, 
-					    1, int(S.start_time),
-                                            2, int(S.end_time),
-                                            3, str(S.text))
-		j +=1
+	# We have removed the window for now
+        #if self.windowSubsList:
+	self.subsListStore.clear()
+	j=0
+	for i in self.Subtitle.subKeys:
+	    S=self.Subtitle.subs[i]
+	    iter = self.subsListStore.append(None)
+	    self.subsListStore.set(iter,0, j, 
+					1, int(S.start_time),
+					2, int(S.end_time),
+					3, str(S.text))
+	    j +=1
 #==============================================================================
     def saveProject(self):
         if not self.PFileName:
@@ -407,38 +618,6 @@
             else:
                 WND.show()
 #==============================================================================
-    def cb_subDel(self, widget):
-        if (self.Subtitle != None) and (self.curSub != -1):
-            self.Subtitle.subDel(self.curSub)
-#==============================================================================
-    def cb_subChangeSave(self, widget):
-        if (self.Subtitle != None):
-            if (self.curSub != -1):
-                BUF = self.SubEdit.get_buffer()
-                TEXT = BUF.get_text(BUF.get_start_iter(), BUF.get_end_iter())
-                self.Subtitle.subs[int(self.curSub)].text = str(TEXT)
-                self.Subtitle.subs[int(self.curSub)].end_time=self.subEndTime.get_value_as_int()
-                if self.Subtitle.subs[int(self.curSub)].start_time!=self.subStartTime.get_value_as_int():
-                    newTime=self.subStartTime.get_value_as_int()
-                    self.Subtitle.subs[int(self.curSub)].start_time=newTime
-                    self.Subtitle.subUpdate(int(self.curSub))
-                    self.curSub = newTime
-                #for i in self.Subtitles:
-                #    if i.subSource == self.Subtitle.subSource:
-                #        self.Subtitles[self.Subtitles.index(i)]=self.Subtitle
-                self.subsWindowUpdate()
-            else:
-                self.subAdd()
-#==============================================================================
-    def subAdd(self):
-        ST = self.subStartTime.get_value()
-        ET = self.subEndTime.get_value()
-        BUF = self.SubEdit.get_buffer()
-        Text = BUF.get_text(BUF.get_start_iter(), BUF.get_end_iter())
-        if (( ST > 0 ) and ( ET > ST ) and ( Text != "" )):
-            self.Subtitle.subAdd(ST, ET, Text, None, 1)
-            self.curSub = ST
-#==============================================================================
     def cb_setSubStartTime(self, widget):
         self.subStartTime.set_value(self.p_position/1000000)
 #==============================================================================
@@ -479,6 +658,34 @@
         if self.player:
             self.play_toggled()
 #==============================================================================
+    def playerSlowMotion(self, widget):
+	"""
+	    Put the current playing video in slow motion
+	"""
+	#TODO: Implement it
+	pass
+#==============================================================================
+    def playerFastForward(self, widget):
+	"""
+	    Put the current playing video in FastForward 
+	"""
+	#TODO: Implement it
+	pass
+#==============================================================================
+    def playerSeekForward(self, widget):
+	"""
+	    Jump some time beyond current position
+	"""
+	#TODO: Implement it
+	pass
+#==============================================================================
+    def playerSeekRewind(self, widget):
+	"""
+	    Jump back som time
+	"""
+	#TODO: Implement it
+	pass
+#==============================================================================
     def mainFileOpen(self, widget):
         if(self.windowProjectOpen==None):
             self.windowProjectOpen=gtk.glade.XML (self.gladefile,"SAVE_OPEN_PFILE")
@@ -528,23 +735,22 @@
     def addMedia(self, mInfo):
         if not mInfo:
             return
-        N=len(self.media)
+	# Frist, wait for media discovery 
+	if mInfo.poll():
+	    return True 
+	mInfo = mInfo.getMedia()
         self.media.append(mInfo)
-        self.lastID = mInfo.lastID
         self.updateStreamWindow()
-        if "subtitle" in mInfo.MIME:
-	    tSubtitle = Subtitles()
-	    tSubtitle.subLoad(mInfo.source, mInfo.Streams[0].ID)
-	    self.Subtitles.append(tSubtitle)
-        else:
-            self.videoWidgetGst=VideoWidget(self.videoWidget)
-            self.player=GstPlayer(self.videoWidgetGst)
-            self.player.set_location("file://"+mInfo.source)
-            if self.videoWidget.flags() & gtk.REALIZED:
-                self.play_toggled()
-            else:
-                self.videoWidget.connect_after('realize',
-                                           lambda *x: self.play_toggled())
+	#Set videoWidget sizes according to media standards
+	self.videoWidget.set_size_request(mInfo.videoWidth, mInfo.videoHeight)
+	self.videoWidgetGst=VideoWidget(self.videoWidget)
+	self.player=GstPlayer(self.videoWidgetGst)
+	self.player.set_location("file://"+mInfo.source)
+	if self.videoWidget.flags() & gtk.REALIZED:
+	    self.play_toggled()
+	else:
+	    self.videoWidget.connect_after('realize',
+				       lambda *x: self.play_toggled())
         return
 #==============================================================================
     def play_toggled(self):
@@ -579,15 +785,25 @@
             if self.player.is_playing():
                 if TText:
 		    self.player.set_subtitle_text(TText.text)
+		    #TODO: Select the current playing subtitle
+		    # Careful with any processor intesive tasks here
+		    # !!!Critical loop!!!
                 else:
 		    self.player.set_subtitle_text('')
+		    # Unselect what is not being played
+		    Selection = self.subList.get_selection()
+		    if Selection:
+			Selection.unselect_all()
         if (self.p_position != gst.CLOCK_TIME_NONE):# and (not self.scroll):
             value = self.p_position
             self.adjustment.set_value(value)
         self.labelHour.set_text("%02d"%Hour)
         self.labelMin.set_text("%02d"%Min)
         self.labelSec.set_text("%02d"%Sec)
+	#BUG: We are not displaying that correctly
         self.labelMSec.set_text("%09d"%MSec)
+	#FIXME: We should know which media is playing
+	self.lbl_cur_fps.set_text("%d"%(MSec/1/self.media[0].framerate))
         return True
 #==============================================================================
 #	MAIN:

Modified: trunk/souffleur/Subtitles.py
===================================================================
--- trunk/souffleur/Subtitles.py	2008-04-09 02:46:17 UTC (rev 14685)
+++ trunk/souffleur/Subtitles.py	2008-04-09 02:47:51 UTC (rev 14686)
@@ -50,17 +50,18 @@
 class Subtitles:
     
     ## Constructor
-    def __init__(self):
+    def __init__(self,FN):
         self.subs={}
-        self.subSource=None
         self.subKeys=[]
+	self.filename = FN
+	# TODO: Support more subtitles types
+	self.subType = "SubRip"
 
 #==============================================================================
     ## Load subtitles.
     # Load subtitles from file whith associated stream ID.
     # \param fileName - name of subtitles file.
-    # \param ID - stream ID.
-    def subLoad(self, fileName, ID):
+    def subLoad(self, fileName):
         FILE=os.open(fileName, os.O_RDONLY)
         FS=os.fstat(FILE)
         DATA=os.read(FILE,FS.st_size)
@@ -68,31 +69,28 @@
 
         self._subSRTLoadFromString(DATA)
 
-        self.subSource=ID
-
 #==============================================================================
     ## Save subtitles.
     # Save subtitles to the file.
     # \param FN - file name.
     # \param format - the store format of subtitles. (NOT USED YET)
     def subSave(self, FN, format):
-        if (self.subSource!=None):
-            FUN=os.open(FN,os.O_WRONLY|os.O_CREAT|os.O_TRUNC)
-            N=1
-            for i in self.subKeys:
-                SUB = self.subs[int(i)]
-                Text=str(N)+"\r\n"
-                Hour, Min, Sec, MSec = self._subTime2SRTtime(SUB.start_time)
-                Text+="%02d:%02d:%02d,%03d"%(Hour, Min, Sec, MSec)
-                Text+=" --> "
-                Hour, Min, Sec, MSec = self._subTime2SRTtime(SUB.end_time)
-                Text+="%02d:%02d:%02d,%03d"%(Hour, Min, Sec, MSec)+"\r\n"
-                Text+=SUB.text+"\r\n"
-                if (SUB.text[-2]!="\r\n"):
-                    Text+="\r\n"
-                os.write(FUN, Text)
-                N+=1
-            os.close(FUN)
+	FUN=os.open(FN,os.O_WRONLY|os.O_CREAT|os.O_TRUNC)
+	N=1
+	for i in self.subKeys:
+	    SUB = self.subs[int(i)]
+	    Text=str(N)+"\r\n"
+	    Hour, Min, Sec, MSec = self._subTime2SRTtime(SUB.start_time)
+	    Text+="%02d:%02d:%02d,%03d"%(Hour, Min, Sec, MSec)
+	    Text+=" --> "
+	    Hour, Min, Sec, MSec = self._subTime2SRTtime(SUB.end_time)
+	    Text+="%02d:%02d:%02d,%03d"%(Hour, Min, Sec, MSec)+"\r\n"
+	    Text+=SUB.text+"\r\n"
+	    if (SUB.text[-2]!="\r\n"):
+		Text+="\r\n"
+	    os.write(FUN, Text)
+	    N+=1
+	os.close(FUN)
 
 #==============================================================================
     ## Convert subtitle time to SRT format.
@@ -178,6 +176,15 @@
         self.subKeys=self.subs.keys()
         self.subKeys.sort()
 
+#==============================================================================    
+    ## Update sub text.
+    # Update text for sub.
+    def updateText(self, key, text):
+	if key in self.subs.keys():
+	    self.subs[key].text = text
+	else:
+	    print "Subkey %s not found" % key
+
 #==============================================================================
     ## Update subtitle.
     # Update subtitle key.
@@ -205,8 +212,11 @@
     ## \var subs
     # List of loaded subtitles.
     
-    ## \var subSource
-    # The source of subtitle 
-    
     ## \var subKeys
     # Array of "subs" keys (hashs)
+#==============================================================================
+    ## Get subtitle supported types.
+    # Get subtitle supported types
+    # \return supported subtitle types 
+    def getSupportedTypes(self):
+	return [".srt"]

Modified: trunk/souffleur/souffleur.glade
===================================================================
--- trunk/souffleur/souffleur.glade	2008-04-09 02:46:17 UTC (rev 14685)
+++ trunk/souffleur/souffleur.glade	2008-04-09 02:47:51 UTC (rev 14686)
@@ -1,1070 +1,1178 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
 <glade-interface>
-
-<widget class="GtkWindow" id="MAIN_WINDOW">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Souffleur</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <signal name="destroy" handler="gtk_main_quit" last_modification_time="Fri, 02 Jun 2006 17:49:48 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox2">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkMenuBar" id="MAIN_MENU">
-	  <property name="visible">True</property>
-	  <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
-	  <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="MAIN_FILE_MENU">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_File</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="MAIN_FILE_MENU_menu">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="MAIN_FILE_NEW">
-		      <property name="visible">True</property>
-		      <property name="label">gtk-new</property>
-		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="on_main_file_new_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="MAIN_FILE_OPEN">
-		      <property name="visible">True</property>
-		      <property name="label">gtk-open</property>
-		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="on_main_file_open_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="MAIN_FILE_SAVE">
-		      <property name="visible">True</property>
-		      <property name="label">gtk-save</property>
-		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="on_main_file_save_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="MAIN_FILE_AS">
-		      <property name="visible">True</property>
-		      <property name="label">gtk-save-as</property>
-		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="on_main_file_save_as_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="MAIN_FILE_QUIT">
-		      <property name="visible">True</property>
-		      <property name="label">gtk-quit</property>
-		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="on_main_file_quit_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="MAIN_VIEW">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_View</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="MAIN_VIEW_menu">
-
-		  <child>
-		    <widget class="GtkMenuItem" id="MAIN_VIEW_STREAMS">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Streams window</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_MAIN_VIEW_STREAMS_activate" last_modification_time="Sun, 20 Aug 2006 17:44:48 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="MAIN_VIEW_SUBTITLES">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">S_ubtitles window</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_MAIN_VIEW_SUBTITLES_activate" last_modification_time="Sun, 20 Aug 2006 17:44:48 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="MAIN_HELP_MENU">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Help</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="MAIN_HELP_MENU_menu">
-
-		  <child>
-		    <widget class="GtkMenuItem" id="MAIN_HELP_ABOUT">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_About</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_main_help_about_activate" last_modification_time="Sat, 03 Jun 2006 16:27:54 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkVBox" id="vbox8">
-	  <property name="width_request">640</property>
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="GtkDrawingArea" id="VIDEO_OUT_PUT">
-	      <property name="width_request">640</property>
-	      <property name="height_request">320</property>
-	      <property name="visible">True</property>
-	      <signal name="expose_event" handler="on_VIDEO_OUT_PUT_expose_event" last_modification_time="Sun, 02 Jul 2006 18:11:59 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkDrawingArea" id="AUDIO_GPAPH">
-	      <property name="height_request">64</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolbar" id="SUB_TOOLS">
-	      <property name="visible">True</property>
-	      <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	      <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
-	      <property name="tooltips">True</property>
-	      <property name="show_arrow">True</property>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_PREV">
-		  <property name="stock_id">gtk-media-previous</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_NEXT">
-		  <property name="label" translatable="yes"></property>
-		  <property name="use_underline">True</property>
-		  <property name="stock_id">gtk-media-next</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkSeparatorToolItem" id="separatortoolitem1">
-		  <property name="draw">True</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_PLAY">
-		  <property name="visible">True</property>
-		  <property name="stock_id">gtk-media-play</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_PLAY_clicked" last_modification_time="Sun, 02 Jul 2006 17:28:58 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_STOP">
-		  <property name="visible">True</property>
-		  <property name="stock_id">gtk-media-stop</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_STOP_clicked" last_modification_time="Sun, 02 Jul 2006 17:29:10 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkSeparatorToolItem" id="separatortoolitem2">
-		  <property name="visible">True</property>
-		  <property name="draw">True</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_FIRST">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Previous subtitle</property>
-		  <property name="use_underline">True</property>
-		  <property name="stock_id">gtk-goto-first</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_FIRST_clicked" last_modification_time="Sun, 20 Aug 2006 17:31:43 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_LAST">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Next subtitle</property>
-		  <property name="use_underline">True</property>
-		  <property name="stock_id">gtk-goto-last</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_LAST_clicked" last_modification_time="Sun, 20 Aug 2006 17:31:48 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkSeparatorToolItem" id="separatortoolitem3">
-		  <property name="visible">True</property>
-		  <property name="draw">True</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_SAVE">
-		  <property name="visible">True</property>
-		  <property name="stock_id">gtk-save</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_SAVE_clicked" last_modification_time="Mon, 03 Jul 2006 18:18:30 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_DELETE">
-		  <property name="visible">True</property>
-		  <property name="stock_id">gtk-delete</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_DELETE_clicked" last_modification_time="Tue, 04 Jul 2006 16:54:36 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkSeparatorToolItem" id="separatortoolitem4">
-		  <property name="visible">True</property>
-		  <property name="draw">True</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_START">
-		  <property name="visible">True</property>
-		  <property name="tooltip" translatable="yes">Set start time of subtitle</property>
-		  <property name="label" translatable="yes">Set start time</property>
-		  <property name="use_underline">True</property>
-		  <property name="stock_id">gtk-go-up</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_START_clicked" last_modification_time="Mon, 03 Jul 2006 17:35:31 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkToolButton" id="TOOL_END">
-		  <property name="visible">True</property>
-		  <property name="tooltip" translatable="yes">Set end time of subtitle</property>
-		  <property name="label" translatable="yes">Set end time</property>
-		  <property name="use_underline">True</property>
-		  <property name="stock_id">gtk-go-down</property>
-		  <property name="visible_horizontal">True</property>
-		  <property name="visible_vertical">True</property>
-		  <property name="is_important">False</property>
-		  <signal name="clicked" handler="on_TOOL_END_clicked" last_modification_time="Mon, 03 Jul 2006 17:35:36 GMT"/>
-		</widget>
-		<packing>
-		  <property name="expand">False</property>
-		  <property name="homogeneous">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkHBox" id="hbox2">
-	      <property name="border_width">4</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">2</property>
-
-	      <child>
-		<widget class="GtkLabel" id="LABEL_HOUR">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">00</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label6">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="LABEL_MIN">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">00</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label8">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="LABEL_SEC">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">00</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label10">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">(</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="LABEL_MSEC">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">000000000</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label12">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">)</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkHScale" id="MEDIA_ADJUSTMENT">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="draw_value">False</property>
-	      <property name="value_pos">GTK_POS_TOP</property>
-	      <property name="digits">1</property>
-	      <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
-	      <property name="inverted">False</property>
-	      <property name="adjustment">0 0 100 0.10000000149 0 0</property>
-	      <signal name="change_value" handler="on_MEDIA_ADJUSTMENT_change_value" last_modification_time="Thu, 06 Jul 2006 17:07:04 GMT"/>
-	      <signal name="button_press_event" handler="on_MEDIA_ADJUSTMENT_button_press_event" last_modification_time="Thu, 06 Jul 2006 17:07:08 GMT"/>
-	      <signal name="button_release_event" handler="on_MEDIA_ADJUSTMENT_button_release_event" last_modification_time="Thu, 06 Jul 2006 17:07:14 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="STREAM_WINDOW">
-  <property name="width_request">240</property>
-  <property name="height_request">320</property>
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Streams</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">True</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <signal name="delete_event" handler="on_STREAM_WINDOW_delete_event" last_modification_time="Sun, 20 Aug 2006 17:53:42 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox3">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkToolbar" id="toolbar2">
-	  <property name="visible">True</property>
-	  <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	  <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
-	  <property name="tooltips">True</property>
-	  <property name="show_arrow">True</property>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_ADD_STREAM">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-add</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_TOOL_ADD_STREAM_clicked" last_modification_time="Thu, 17 Aug 2006 17:44:07 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_MOD_STREAM">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-edit</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_TOOL_MOD_STREAM_clicked" last_modification_time="Thu, 17 Aug 2006 19:14:33 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_SAVE_STREAM">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-save</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_TOOL_SAVE_STREAM_clicked" last_modification_time="Fri, 18 Aug 2006 18:48:21 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_DEL_STREAM">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-delete</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_TOOL_DEL_STREAM_clicked" last_modification_time="Thu, 17 Aug 2006 18:43:12 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkScrolledWindow" id="scrolledwindow1">
-	  <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>
-	  <property name="shadow_type">GTK_SHADOW_NONE</property>
-	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-	  <child>
-	    <widget class="GtkTreeView" id="LIST_STREAMS">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="headers_visible">True</property>
-	      <property name="rules_hint">False</property>
-	      <property name="reorderable">False</property>
-	      <property name="enable_search">True</property>
-	      <property name="fixed_height_mode">False</property>
-	      <property name="hover_selection">False</property>
-	      <property name="hover_expand">False</property>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="SUBS_LIST">
-  <property name="width_request">480</property>
-  <property name="height_request">320</property>
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Subtitles list</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <signal name="delete_event" handler="on_SUBS_LIST_delete_event" last_modification_time="Sun, 20 Aug 2006 17:56:03 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox4">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkToolbar" id="toolbar3">
-	  <property name="visible">True</property>
-	  <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	  <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
-	  <property name="tooltips">True</property>
-	  <property name="show_arrow">True</property>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_ADD_SUBS">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-add</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_MOD_SUBS">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-edit</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_DEL_SUBS">
-	      <property name="visible">True</property>
-	      <property name="stock_id">gtk-delete</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="TOOL_SAVE_STREAM">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes"></property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-save</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_TOOL_SAVE_STREAM_clicked" last_modification_time="Wed, 26 Mar 2008 02:48:13 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkScrolledWindow" id="scrolledwindow2">
-	  <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>
-	  <property name="shadow_type">GTK_SHADOW_NONE</property>
-	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-	  <child>
-	    <widget class="GtkTreeView" id="LIST_SUBS">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="headers_visible">True</property>
-	      <property name="rules_hint">False</property>
-	      <property name="reorderable">True</property>
-	      <property name="enable_search">True</property>
-	      <property name="fixed_height_mode">False</property>
-	      <property name="hover_selection">True</property>
-	      <property name="hover_expand">False</property>
-	      <signal name="cursor_changed" handler="on_LIST_SUBS_cursor_changed" last_modification_time="Wed, 02 Aug 2006 05:34:48 GMT"/>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkFileChooserDialog" id="OPEN_MEDIA">
-  <property name="border_width">5</property>
-  <property name="visible">True</property>
-  <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
-  <property name="local_only">True</property>
-  <property name="select_multiple">False</property>
-  <property name="show_hidden">True</property>
-  <property name="do_overwrite_confirmation">False</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_CENTER</property>
-  <property name="modal">True</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">24</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="dialog-action_area1">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="OPEN_BUTTON_CANCEL">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-6</property>
-	      <signal name="clicked" handler="on_OPEN_BUTTON_CANCEL_clicked" last_modification_time="Sat, 03 Jun 2006 16:31:31 GMT"/>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="OPEN_BUTTON_OPEN">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="has_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-open</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-5</property>
-	      <signal name="clicked" handler="on_OPEN_BUTTON_OPEN_clicked" last_modification_time="Sat, 03 Jun 2006 16:31:26 GMT"/>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkFileChooserDialog" id="SAVE_OPEN_PFILE">
-  <property name="border_width">5</property>
-  <property name="visible">True</property>
-  <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
-  <property name="local_only">True</property>
-  <property name="select_multiple">False</property>
-  <property name="show_hidden">True</property>
-  <property name="do_overwrite_confirmation">True</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_CENTER</property>
-  <property name="modal">True</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-  <property name="gravity">GDK_GRAVITY_CENTER</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox2">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">24</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="dialog-action_area2">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="PROJECT_BUTTON_CANCEL">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-6</property>
-	      <signal name="clicked" handler="on_PROJECT_BUTTON_CANCEL_clicked" last_modification_time="Thu, 10 Aug 2006 13:46:14 GMT"/>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="PROJECT_BUTTON_OK">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="has_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-open</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-5</property>
-	      <signal name="clicked" handler="on_PROJECT_BUTTON_OK_clicked" last_modification_time="Thu, 10 Aug 2006 13:46:20 GMT"/>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
+  <widget class="GtkWindow" id="MAIN_WINDOW">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Souffleur</property>
+    <property name="window_position">GTK_WIN_POS_CENTER</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child>
+      <widget class="GtkVBox" id="vbox2">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkMenuBar" id="MAIN_MENU">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkMenuItem" id="MAIN_FILE_MENU">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use_underline">True</property>
+                <child>
+                  <widget class="GtkMenu" id="MAIN_FILE_MENU_menu">
+                    <child>
+                      <widget class="GtkImageMenuItem" id="MAIN_FILE_NEW">
+                        <property name="sensitive">False</property>
+                        <property name="label">gtk-new</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_main_file_new_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="MAIN_FILE_OPEN">
+                        <property name="sensitive">False</property>
+                        <property name="label">gtk-open</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_main_file_open_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="MAIN_FILE_SAVE">
+                        <property name="sensitive">False</property>
+                        <property name="label">gtk-save</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_main_file_save_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="MAIN_FILE_AS">
+                        <property name="sensitive">False</property>
+                        <property name="label">gtk-save-as</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_main_file_save_as_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+                        <property name="visible">True</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="MAIN_FILE_QUIT">
+                        <property name="visible">True</property>
+                        <property name="label">gtk-quit</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_main_file_quit_activate"/>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkMenuItem" id="MAIN_VIEW">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_View</property>
+                <property name="use_underline">True</property>
+                <child>
+                  <widget class="GtkMenu" id="MAIN_VIEW_menu">
+                    <child>
+                      <widget class="GtkMenuItem" id="MAIN_VIEW_STREAMS">
+                        <property name="sensitive">False</property>
+                        <property name="label" translatable="yes">_Streams window</property>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_MAIN_VIEW_STREAMS_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="MAIN_VIEW_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" translatable="yes">Project _Pane</property>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_MAIN_VIEW_STREAMS_PANE_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="MAIN_VIEW_SUBTITLES">
+                        <property name="sensitive">False</property>
+                        <property name="label" translatable="yes">S_ubtitles window</property>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_MAIN_VIEW_SUBTITLES_activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="MAIN_VIEW_SUBTITLES">
+                        <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>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_MAIN_VIEW_SUBTITLES_activate"/>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkMenuItem" id="MAIN_HELP_MENU">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child>
+                  <widget class="GtkMenu" id="MAIN_HELP_MENU_menu">
+                    <child>
+                      <widget class="GtkMenuItem" id="MAIN_HELP_ABOUT">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_About</property>
+                        <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_main_help_about_activate"/>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkVPaned" id="vpaned1">
+            <property name="visible">True</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>
+            <child>
+              <widget class="GtkHPaned" id="hpaned1">
+                <property name="visible">True</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="position">245</property>
+                <property name="position_set">True</property>
+                <child>
+                  <widget class="GtkVBox" id="subtitle_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="GtkToolbar" id="toolbar7">
+                        <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_SUBLIST">
+                            <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_SUBLIST_clicked"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkToolButton" id="TOOL_DETACH_SUBLIST">
+                            <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>
+                            <signal name="clicked" handler="on_TOOL_DETACH_SUBLIST_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="GtkVBox" id="vbox6">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkToolbar" id="toolbar5">
+                            <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_INS_B4_SUB">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-sort-ascending</property>
+                                <signal name="clicked" handler="on_TOOL_INS_B4_SUB_clicked"/>
+                                <accelerator key="Return" modifiers="GDK_SHIFT_MASK" signal="clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_INS_AFTER_SUB">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-sort-descending</property>
+                                <signal name="clicked" handler="on_TOOL_INS_AFTER_SUB_clicked"/>
+                                <accelerator key="Return" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_DEL_SUBS">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-delete</property>
+                                <signal name="clicked" handler="on_TOOL_DEL_SUBS_clicked"/>
+                                <accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_SAVE_STREAM">
+                                <property name="visible">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="stock_id">gtk-save</property>
+                                <signal name="clicked" handler="on_TOOL_SAVE_STREAM_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSeparatorToolItem" id="separatortoolitem2">
+                                <property name="visible">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="homogeneous">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_IN_SUB">
+                                <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"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_OUT_SUB">
+                                <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"/>
+                              </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="GtkScrolledWindow" id="scrolledwindow4">
+                            <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="GtkViewport" id="viewport3">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkTreeView" id="LIST_SUBS">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="reorderable">True</property>
+                                    <signal name="button_press_event" handler="on_LIST_SUBS_button_press_event"/>
+                                    <signal name="button_release_event" handler="on_LIST_SUBS_button_release_event"/>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="video_pane">
+                    <property name="width_request">640</property>
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkToolbar" id="toolbar9">
+                        <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_VIDEO">
+                            <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_VIDEO_clicked"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkToolButton" id="TOOL_DETACH_VIDEO">
+                            <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>
+                            <signal name="clicked" handler="on_TOOL_DETACH_VIDEO_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="GtkDrawingArea" id="VIDEO_OUT_PUT">
+                        <property name="width_request">640</property>
+                        <property name="height_request">320</property>
+                        <property name="visible">True</property>
+                        <signal name="expose_event" handler="on_VIDEO_OUT_PUT_expose_event"/>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkDrawingArea" id="AUDIO_GPAPH">
+                        <property name="height_request">64</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkToolbar" id="VIDEO_TOOLS">
+                            <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_PREV">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-media-previous</property>
+                                <signal name="clicked" handler="on_TOOL_PREV_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_PLAY">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-media-play</property>
+                                <signal name="clicked" handler="on_TOOL_PLAY_clicked"/>
+                                <accelerator key="space" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_STOP">
+                                <property name="visible">True</property>
+                                <property name="stock_id">gtk-media-stop</property>
+                                <signal name="clicked" handler="on_TOOL_STOP_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_NEXT">
+                                <property name="visible">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="stock_id">gtk-media-next</property>
+                                <signal name="clicked" handler="on_TOOL_NEXT_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSeparatorToolItem" id="toolbutton1">
+                                <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>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="homogeneous">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_SEEK_REWIND">
+                                <property name="visible">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="stock_id">gtk-media-rewind</property>
+                                <signal name="clicked" handler="on_TOOL_SEEK_REWIND_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkToolButton" id="TOOL_SEEK_FORWARD">
+                                <property name="visible">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="stock_id">gtk-media-forward</property>
+                                <signal name="clicked" handler="on_TOOL_SEEK_FORWARD_clicked"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox2">
+                        <property name="visible">True</property>
+                        <property name="border_width">4</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <widget class="GtkLabel" id="LABEL_HOUR">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">00</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label1">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">:</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="LABEL_MIN">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">00</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">:</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="LABEL_SEC">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">00</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">.</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="LABEL_MSEC">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">000000000</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">6</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label4">
+                            <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">(</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">7</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="lbl_cur_fps">
+                            <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">00000</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">8</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label5">
+                            <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">)</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">9</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHScale" id="MEDIA_ADJUSTMENT">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">0 0 100 0.10000000149 0 0</property>
+                        <property name="draw_value">False</property>
+                        <signal name="button_press_event" handler="on_MEDIA_ADJUSTMENT_button_press_event"/>
+                        <signal name="change_value" handler="on_MEDIA_ADJUSTMENT_change_value"/>
+                        <signal name="button_release_event" handler="on_MEDIA_ADJUSTMENT_button_release_event"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">5</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="resize">False</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <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">
+                    <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">
+                        <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">
+                            <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>
+                          </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="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">
+                            <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="GtkTextView" id="txt_subedit">
+                                <property name="height_request">35</property>
+                                <property name="visible">True</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>
+                      <packing>
+                        <property name="position">1</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">
+                        <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">
+                            <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="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>
+                                <child>
+                                  <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="toolbar_style">GTK_TOOLBAR_ICONS</property>
+                                    <property name="icon_size">GTK_ICON_SIZE_MENU</property>
+                                    <child>
+                                      <widget class="GtkToolButton" id="TOOL_HIDE_STREAMS">
+                                        <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">
+                                            <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="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>
+                          </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>
+                  </widget>
+                  <packing>
+                    <property name="position">1</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>
+    </child>
+  </widget>
+  <widget class="GtkWindow" id="STREAM_WINDOW">
+    <property name="width_request">240</property>
+    <property name="height_request">320</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Streams</property>
+    <property name="destroy_with_parent">True</property>
+    <signal name="delete_event" handler="on_STREAM_WINDOW_delete_event"/>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkToolbar" id="toolbar2">
+            <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">
+                <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"/>
+              </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="GtkScrolledWindow" id="scrolledwindow1">
+            <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>
+    </child>
+  </widget>
+  <widget class="GtkWindow" id="SUBS_LIST">
+    <property name="width_request">480</property>
+    <property name="height_request">320</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Subtitles list</property>
+    <signal name="delete_event" handler="on_SUBS_LIST_delete_event"/>
+    <child>
+      <widget class="GtkVBox" id="vbox4">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkToolbar" id="toolbar3">
+            <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_INS_B4_SUB">
+                <property name="visible">True</property>
+                <property name="stock_id">gtk-sort-ascending</property>
+                <signal name="clicked" handler="on_TOOL_INS_B4_SUB_clicked"/>
+                <accelerator key="Return" modifiers="GDK_SHIFT_MASK" signal="clicked"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkToolButton" id="TOOL_INS_AFTER_SUB">
+                <property name="visible">True</property>
+                <property name="stock_id">gtk-sort-descending</property>
+                <signal name="clicked" handler="on_TOOL_INS_AFTER_SUB_clicked"/>
+                <accelerator key="Return" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkToolButton" id="TOOL_DEL_SUBS">
+                <property name="visible">True</property>
+                <property name="stock_id">gtk-delete</property>
+                <signal name="clicked" handler="on_TOOL_DEL_SUBS_clicked"/>
+                <accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkToolButton" id="TOOL_SAVE_STREAM">
+                <property name="visible">True</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-save</property>
+                <signal name="clicked" handler="on_TOOL_SAVE_STREAM_clicked"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkSeparatorToolItem" id="separatortoolitem4">
+                <property name="visible">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkToolButton" id="TOOL_IN_SUB">
+                <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"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkToolButton" id="TOOL_OUT_SUB">
+                <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"/>
+              </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="GtkScrolledWindow" id="scrolledwindow2">
+            <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="GtkViewport" id="viewport1">
+                <property name="visible">True</property>
+                <child>
+                  <widget class="GtkTreeView" id="LIST_SUBS">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="reorderable">True</property>
+                    <signal name="cursor_changed" handler="on_LIST_SUBS_cursor_changed"/>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkFileChooserDialog" id="OPEN_MEDIA">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">GTK_WIN_POS_CENTER</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="show_hidden">True</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">24</property>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="OPEN_BUTTON_CANCEL">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+                <signal name="clicked" handler="on_OPEN_BUTTON_CANCEL_clicked"/>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="OPEN_BUTTON_OPEN">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-open</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+                <signal name="clicked" handler="on_OPEN_BUTTON_OPEN_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkFileChooserDialog" id="SAVE_OPEN_PFILE">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <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="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>
+        <property name="spacing">24</property>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="PROJECT_BUTTON_CANCEL">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+                <signal name="clicked" handler="on_PROJECT_BUTTON_CANCEL_clicked"/>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="PROJECT_BUTTON_OK">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-open</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+                <signal name="clicked" handler="on_PROJECT_BUTTON_OK_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>



More information about the commits mailing list