[transmageddon] first part of porting UI to a combobox bases setup instead of radiobuttons, this to both shrink UI a
- From: Christian Fredrik Kalager Schaller <uraeus src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [transmageddon] first part of porting UI to a combobox bases setup instead of radiobuttons, this to both shrink UI a
- Date: Sun, 30 Jan 2011 00:03:12 +0000 (UTC)
commit 5745a5bdf08b7392ef6912a3535d6d3bd92bd6ba
Author: Christian Fredrik Kalager Schaller <christian schaller collabora co uk>
Date: Sun Jan 30 00:02:07 2011 +0000
first part of porting UI to a combobox bases setup instead of
radiobuttons, this to both shrink UI and allow for support
of multiple audio streams
src/codecfinder.py | 8 +-
src/transmageddon.py | 99 +++++++++++++++++------
src/transmageddon.ui | 222 ++++++++++----------------------------------------
3 files changed, 124 insertions(+), 205 deletions(-)
---
diff --git a/src/codecfinder.py b/src/codecfinder.py
index 1b4aea0..ce33960 100644
--- a/src/codecfinder.py
+++ b/src/codecfinder.py
@@ -43,14 +43,14 @@ csuffixmap = { 'Ogg' : ".ogg", 'Matroska' : ".mkv", 'MXF' : ".mxf", 'AVI' : ".
'MPEG4' : ".mp4", 'MPEG PS' : ".mpg", 'MPEG TS' : ".ts", 'FLV' : ".flv", '3GPP' : ".3gp",
'ASF' : ".asf", 'WebM' : ".webm" }
-codecmap = { 'vorbis' : "audio/x-vorbis", 'flac' : "audio/x-flac", 'mp3' : "audio/mpeg, mpegversion=(int)1, layer=(int)3",
- 'aac' : "audio/mpeg,mpegversion=4", 'ac3' : "audio/x-ac3", 'speex' : "audio/x-speex",
- 'celt' : "audio/x-celt", 'alac' : "audio/x-alac", 'wma2' : "audio/x-wma, wmaversion=(int)2",
+codecmap = { 'Vorbis' : "audio/x-vorbis", 'FLAC' : "audio/x-flac", 'mp3' : "audio/mpeg, mpegversion=(int)1, layer=(int)3",
+ 'AAC' : "audio/mpeg,mpegversion=4", 'AC3' : "audio/x-ac3", 'Speex' : "audio/x-speex",
+ 'Celt Ultra' : "audio/x-celt", 'ALAC' : "audio/x-alac", 'Windows Media Audio 2' : "audio/x-wma, wmaversion=(int)2",
'theora' : "video/x-theora", 'dirac' : "video/x-dirac", 'h264' : "video/x-h264",
'mpeg2' : "video/mpeg,mpegversion=2,systemstream=false", 'mpeg4' : "video/mpeg,mpegversion=4",
'xvid' : "video/x-xvid", 'dnxhd' : "video/x-dnxhd", 'wmv2' : "video/x-wmv,wmvversion=2",
'dnxhd' : "video/x-dnxhd", 'divx5' : "video/x-divx,divxversion=5",
- 'divx4' : "video/x-divx,divxversion=4", 'amrnb' : "audio/AMR",
+ 'divx4' : "video/x-divx,divxversion=4", 'AMR-NB' : "audio/AMR",
'h263p' : "video/x-h263,variant=itu,h263version=h263p", 'vp8' : "video/x-vp8"}
#####
#This code checks for available muxers and return a unique caps string
diff --git a/src/transmageddon.py b/src/transmageddon.py
index 4c561e8..b43cbba 100644
--- a/src/transmageddon.py
+++ b/src/transmageddon.py
@@ -74,7 +74,7 @@ supported_containers = [
]
supported_audio_codecs = [
- "apass",
+ # "apass",
"vorbis",
"flac",
"mp3",
@@ -118,6 +118,22 @@ supported_container_map = {
'WebM': [ 'vorbis','vp8']
}
+supported_audio_container_map = {
+ 'Ogg': [ 'Vorbis', 'FLAC', 'Speex', 'Celt Ultra' ],
+ 'MXF': [ 'mp3', 'AAC', 'AC3' ],
+ 'Matroska': [ 'FLAC', 'AAC', 'ac3', 'Vorbis' ],
+ 'AVI': [ 'mp3', 'AC3', 'Windows Media Audio 2' ],
+ 'Quicktime': [ 'AAC', 'AC3', 'mp3' ],
+ 'MPEG4': [ 'AAC', 'mp3' ],
+ '3GPP': [ 'AAC', 'mp3', 'AMR-NB' ],
+ 'MPEG PS': [ 'mp3', 'AC3', 'AAC' ],
+ 'MPEG TS': [ 'mp3', 'AC3', 'AAC' ],
+ 'FLV': [ 'mp3' ],
+ 'ASF': [ 'Windows Media Audio 2', 'mp3'],
+ 'WebM': [ 'Vorbis']
+}
+
+
class TransmageddonUI:
"""This class loads the GtkBuilder file of the UI"""
def __init__(self):
@@ -139,6 +155,23 @@ class TransmageddonUI:
self.uifile = "transmageddon.ui"
self.builder.add_from_file(self.uifile)
self.builder.connect_signals(self) # Initialize User Interface
+ self.rows=[]
+ def new_vbox(audiostreams,extra = []):
+ audiostreams=1
+ vbox = gtk.VBox()
+
+ x=-1
+ while x < (audiostreams-1):
+ x=x+1
+ # print "x is " + str(x)
+ store = gtk.ListStore(gobject.TYPE_STRING, *extra)
+ combo = gtk.ComboBox(store)
+ text_cell = gtk.CellRendererText()
+ combo.pack_start(text_cell, True)
+ combo.add_attribute(text_cell, 'text', 0)
+ self.rows.append(combo)
+ vbox.add(self.rows[x])
+ return vbox
#Define functionality of our button and main window
self.TopWindow = self.builder.get_object("TopWindow")
@@ -147,15 +180,16 @@ class TransmageddonUI:
self.audioinformation = self.builder.get_object("audioinformation")
self.videocodec = self.builder.get_object("videocodec")
self.audiocodec = self.builder.get_object("audiocodec")
+ self.vbox = new_vbox([gobject.TYPE_PYOBJECT])
self.CodecBox = self.builder.get_object("CodecBox")
self.presetchoice = self.builder.get_object("presetchoice")
self.containerchoice = self.builder.get_object("containerchoice")
self.rotationchoice = self.builder.get_object("rotationchoice")
self.codec_buttons = dict()
- for c in supported_audio_codecs:
- self.codec_buttons[c] = self.builder.get_object(c+"button")
- self.codec_buttons[c].connect("clicked",
- self.on_audiobutton_pressed, c)
+ # for c in supported_audio_codecs:
+ # self.codec_buttons[c] = self.builder.get_object(c+"button")
+ # self.codec_buttons[c].connect("clicked",
+ # self.on_audiobutton_pressed, c)
for c in supported_video_codecs:
self.codec_buttons[c] = self.builder.get_object(c+"button")
self.codec_buttons[c].connect("clicked",
@@ -165,9 +199,10 @@ class TransmageddonUI:
self.ProgressBar = self.builder.get_object("ProgressBar")
self.cancelbutton = self.builder.get_object("cancelbutton")
self.StatusBar = self.builder.get_object("StatusBar")
-
+ self.CodecBox.attach(self.vbox, 0, 1, 1, 3, yoptions = gtk.FILL)
+ self.CodecBox.show_all()
+ self.rows[0].connect("changed", self.on_audiocodec_changed)
self.TopWindow.connect("destroy", gtk.main_quit)
-
def get_file_path_from_dnd_dropped_uri(self, uri):
# get the path to file
path = ""
@@ -177,7 +212,6 @@ class TransmageddonUI:
path = uri[7:] # 7 is len('file://')
elif uri.startswith('file:'): # xffm
path = uri[5:] # 5 is len('file:')
-
return path
def on_drag_data_received(widget, context, x, y, selection, target_type, timestamp):
@@ -227,8 +261,8 @@ class TransmageddonUI:
self.presetchoice.set_sensitive(False)
self.containerchoice.set_sensitive(False)
self.rotationchoice.set_sensitive(False)
- self.codec_buttons["apass"].set_sensitive(False)
- self.codec_buttons["vpass"].set_sensitive(False)
+ # self.codec_buttons["apass"].set_sensitive(False)
+ # self.codec_buttons["vpass"].set_sensitive(False)
# set default values for various variables
self.AudioCodec = "vorbis"
@@ -242,6 +276,7 @@ class TransmageddonUI:
self.containertoggle=False # this toggle is used to not check for encoders with pbutils
self.discover_done=False # lets us know that discover is finished
self.missingtoggle=False
+ self.oldaudiocodec={}
self.p_duration = gst.CLOCK_TIME_NONE
self.p_time = gst.FORMAT_TIME
@@ -320,7 +355,6 @@ class TransmageddonUI:
self.codec_buttons[self.reverse_lookup(str(preset.acodec.name))].set_active(True)
self.codec_buttons[self.reverse_lookup(str(preset.vcodec.name))].set_active(True)
-
# Check for number of passes
passes = preset.vcodec.passes
if passes == "0":
@@ -510,9 +544,12 @@ class TransmageddonUI:
else:
self.codec_buttons["vpass"].set_sensitive(True)
if audiointersect == ("EMPTY"):
- self.codec_buttons["apass"].set_sensitive(False)
+ # self.codec_buttons["apass"].set_sensitive(False)
+ print "no passthrough"
else:
- self.codec_buttons["apass"].set_sensitive(True)
+ # self.codec_buttons["apass"].set_sensitive(True)
+ self.rows[0].append_text("Audio passthrough")
+ self.oldaudiocodec.append("Audio passthrough")
# define the behaviour of the other buttons
def on_FileChooser_file_set(self, widget):
@@ -593,10 +630,10 @@ class TransmageddonUI:
containerchoice = self.builder.get_object ("containerchoice").get_active_text ()
containerstatus = codecfinder.get_muxer_element(codecfinder.containermap[containerchoice])
# print "containerstatus is " + str(containerstatus)
- if self.AudioCodec != "apass":
+ if self.AudioCodec != "Audio passthrough":
audiostatus = codecfinder.get_audio_encoder_element(codecfinder.codecmap[self.AudioCodec])
else:
- audiostatus = "apass"
+ audiostatus = "Audio passthrough"
if self.VideoCodec != "vpass":
videostatus = codecfinder.get_video_encoder_element(codecfinder.codecmap[self.VideoCodec])
else:
@@ -680,11 +717,19 @@ class TransmageddonUI:
self.AudioCodec = codecs[0]
self.VideoCodec = codecs[1]
self.transcodebutton.set_sensitive(True)
- for b in self.codec_buttons.values():
- b.set_sensitive(False)
- for c in codecs:
- self.codec_buttons[c].set_sensitive(True)
- self.codec_buttons[self.AudioCodec].set_active(True)
+ # for b in self.codec_buttons.values():
+ # b.set_sensitive(False)
+ #for c in codecs:
+ # self.codec_buttons[c].set_sensitive(True)
+ audio_codecs = supported_audio_container_map[self.container]
+ for c in self.oldaudiocodec:
+ self.rows[0].remove_text(0)
+ for c in audio_codecs:
+ self.rows[0].append_text(c)
+ self.rows[0].set_sensitive(True)
+ self.rows[0].set_active(0)
+ self.oldaudiocodec=audio_codecs
+ # self.codec_buttons[self.AudioCodec].set_active(True)
self.codec_buttons[self.VideoCodec].set_active(True)
if self.discover_done == True:
self.check_for_passthrough(self.container)
@@ -716,11 +761,17 @@ class TransmageddonUI:
def on_rotationchoice_changed(self, widget):
self.rotationvalue = self.rotationchoice.get_active()
- def on_audiobutton_pressed(self, widget, codec):
- self.AudioCodec = codec
- if self.AudioCodec == "apass":
+ def on_audiocodec_changed(self, widget):
+ self.AudioCodec = self.rows[0].get_active_text ()
+ # print "self.AudioCodec is " + str(self.AudioCodec)
+ if self.AudioCodec == "Audio passthrough":
self.audiopasstoggle=True
+ #def on_audiobutton_pressed(self, widget, codec):
+ # self.AudioCodec = codec
+ # if self.AudioCodec == "apass":
+ # self.audiopasstoggle=True
+
def on_videobutton_pressed(self, widget, codec):
self.VideoCodec = codec
if self.VideoCodec == "vpass":
@@ -751,7 +802,7 @@ class TransmageddonUI:
self.ProgressBar.set_text(_("Transcoding Progress"))
if error_string=="noaudioparser":
error_message = _("No audio parser, passthrough not available")
- self.codec_buttons["apass"].set_sensitive(False)
+ # self.codec_buttons["apass"].set_sensitive(False)
codecs = supported_container_map[self.container]
self.AudioCodec = codecs[0]
self.codec_buttons[self.AudioCodec].set_active(True)
diff --git a/src/transmageddon.ui b/src/transmageddon.ui
index bacf783..18dc04f 100644
--- a/src/transmageddon.ui
+++ b/src/transmageddon.ui
@@ -432,15 +432,6 @@
<property name="n_rows">12</property>
<property name="n_columns">3</property>
<child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
</object>
@@ -607,74 +598,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="celtbutton">
- <property name="label" translatable="yes">Celt _Ultra</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="speexbutton">
- <property name="label" translatable="yes">_Speex</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="ac3button">
- <property name="label" translatable="yes">AC_3</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="aacbutton">
- <property name="label" translatable="yes">AA_C</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkRadioButton" id="h264button">
<property name="label" translatable="yes">H2_64</property>
<property name="visible">True</property>
@@ -694,23 +617,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="mp3button">
- <property name="label" translatable="yes">_mp3</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkRadioButton" id="diracbutton">
<property name="label" translatable="yes">_Dirac</property>
<property name="visible">True</property>
@@ -730,23 +636,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="flacbutton">
- <property name="label" translatable="yes">F_LAC</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkRadioButton" id="theorabutton">
<property name="label" translatable="yes">Theo_ra</property>
<property name="visible">True</property>
@@ -765,22 +654,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="vorbisbutton">
- <property name="label" translatable="yes">V_orbis</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="vspacer24">
<property name="width_request">12</property>
<property name="visible">True</property>
@@ -832,23 +705,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="amrnbbutton">
- <property name="label" translatable="yes">AMR-N_B</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="relief">none</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkRadioButton" id="h263pbutton">
<property name="label" translatable="yes">H263_plus</property>
<property name="visible">True</property>
@@ -867,22 +723,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="apassbutton">
- <property name="label" translatable="yes">_Audio passthrough</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
<object class="GtkRadioButton" id="vpassbutton">
<property name="label" translatable="yes">_Video passthrough</property>
<property name="visible">True</property>
@@ -914,23 +754,6 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="wma2button">
- <property name="label" translatable="yes">W_indowsMediaAudio 2</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="relief">none</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">vorbisbutton</property>
- </object>
- <packing>
- <property name="top_attach">10</property>
- <property name="bottom_attach">11</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="vspacer11">
<property name="width_request">12</property>
<property name="visible">True</property>
@@ -979,6 +802,51 @@
<property name="bottom_attach">11</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">11</property>
+ <property name="bottom_attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">1</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]