You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(12) |
Jul
(42) |
Aug
(106) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
|
Mar
(17) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(1) |
2007 |
Jan
(3) |
Feb
(3) |
Mar
|
Apr
(2) |
May
(10) |
Jun
(9) |
Jul
(20) |
Aug
(34) |
Sep
(29) |
Oct
(10) |
Nov
(9) |
Dec
(6) |
2008 |
Jan
(8) |
Feb
(15) |
Mar
(34) |
Apr
(20) |
May
(8) |
Jun
(16) |
Jul
(32) |
Aug
(14) |
Sep
(24) |
Oct
(14) |
Nov
(33) |
Dec
(69) |
2009 |
Jan
(123) |
Feb
(31) |
Mar
(54) |
Apr
(49) |
May
(116) |
Jun
(95) |
Jul
(68) |
Aug
(21) |
Sep
(20) |
Oct
(34) |
Nov
(9) |
Dec
(13) |
2010 |
Jan
(5) |
Feb
(6) |
Mar
(28) |
Apr
(47) |
May
(73) |
Jun
(74) |
Jul
(38) |
Aug
(45) |
Sep
(32) |
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <iwa...@us...> - 2003-08-06 08:34:02
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv4734 Modified Files: gtkmain.py Log Message: Scan working with language and subtitle settings. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** gtkmain.py 6 Aug 2003 05:27:19 -0000 1.14 --- gtkmain.py 6 Aug 2003 08:33:57 -0000 1.15 *************** *** 18,25 **** gnome.init("quickrip", "1.0") except: ! print "Couldn't load PyGTK module! Check it's installed properly." ! print "If you think it is, but you still get this message, please" ! print "see the frequent problems page online at:" ! print "http://quickrip.sf.net/fp.shtml" print "" print "Press Enter for the full GTK error message" --- 18,23 ---- gnome.init("quickrip", "1.0") except: ! print "Couldn't load some required modules!" ! print "Check to see that PyGTK and Glade are installed properly." print "" print "Press Enter for the full GTK error message" *************** *** 60,66 **** self.hideRip() self.hideScan() - - #wtf?? - # self.langs = {} self.scanDVD() --- 58,61 ---- *************** *** 109,117 **** check.connect("toggled", self.toggle) column1 = gtk.TreeViewColumn("Track", cell, text=0) ! column2 = gtk.TreeViewColumn("Time (h:m:s)", cell, text=1) column3 = gtk.TreeViewColumn("Language", cell, text=2) column4 = gtk.TreeViewColumn("Subtitles", cell, text=3) ! column45 = gtk.TreeViewColumn("Result Size", cell, text=6) ! column5 = gtk.TreeViewColumn("Rip?", check, active=4) column1.set_resizable(gtk.TRUE) column2.set_resizable(gtk.TRUE) --- 104,112 ---- check.connect("toggled", self.toggle) column1 = gtk.TreeViewColumn("Track", cell, text=0) ! column2 = gtk.TreeViewColumn("Time (H:M:S)", cell, text=1) column3 = gtk.TreeViewColumn("Language", cell, text=2) column4 = gtk.TreeViewColumn("Subtitles", cell, text=3) ! column45 = gtk.TreeViewColumn("Projected Size", cell, text=6) ! column5 = gtk.TreeViewColumn("Process", check, active=4) column1.set_resizable(gtk.TRUE) column2.set_resizable(gtk.TRUE) *************** *** 120,130 **** column45.set_resizable(gtk.TRUE) column5.set_resizable(gtk.FALSE) ! # column1.set_min_width(40) ! # column2.set_min_width(90) ! # column3.set_min_width(90) ! # column4.set_min_width(90) ! # column45.set_min_width(90) ! column5.set_min_width(40) ! column5.set_max_width(40) self.tree.append_column(column1) self.tree.append_column(column2) --- 115,120 ---- column45.set_resizable(gtk.TRUE) column5.set_resizable(gtk.FALSE) ! column5.set_min_width(20) ! column5.set_max_width(20) self.tree.append_column(column1) self.tree.append_column(column2) *************** *** 135,144 **** def rowChange(self, widget, data=None): ! # self.model, self.modeliter = "", "" ! # selected = gtk.TreeSelection() ! selected = self.tree.get_selection() ! (self.model, self.modelIter) = selected.get_selected()#self.model, self.modelIter) ! track = self.model.get_value(self.modelIter, 5) adj = self.sAudio.get_adjustment() adj.value = float(track['abr']) --- 125,137 ---- def rowChange(self, widget, data=None): ! self.inRowChange = "true" selected = self.tree.get_selection() ! (self.model, self.modelIter) = selected.get_selected() ! newtrack = self.model.get_value(self.modelIter, 5) ! if newtrack != self.oldtrack: ! self.oldtrack = newtrack ! else: ! return ! track = newtrack adj = self.sAudio.get_adjustment() adj.value = float(track['abr']) *************** *** 147,150 **** --- 140,158 ---- self.updateSize() + list = [] + for language in track['alangs']: + (short, long) = language + list.append(long) + self.comboLang.set_popdown_strings(list) + self.comboLang.entry.set_text(config.langs[track['alang']]) + + list = []#["Not Specified"] + for language in track['slangs']: + (short, long) = language + list.append(long) + self.comboSub.set_popdown_strings(list) + self.comboSub.entry.set_text(config.langs[track['slang']]) + self.inRowChange = "false" + def updateSize(self): track = self.model.get_value(self.modelIter, 5) *************** *** 173,178 **** --- 181,211 ---- track['abr'] = ival self.updateSize() + + def languageSelect(self, widget, data=None): + if self.inRowChange == "true": # gotta ignore the message sent by + return # rowChange above, restoring defaults + thetext = self.comboLang.entry.get_text() + self.model.set_value(self.modelIter, 2, thetext) + track = self.model.get_value(self.modelIter, 5) + for language in track['alangs']: + (short, long) = language + if long == thetext: + track['alang'] = short + return + + def subtitleSelect(self, widget, data=None): + if self.inRowChange == "true": # gotta ignore the message sent by + return # rowChange above, restoring defaults + thetext = self.comboSub.entry.get_text() + self.model.set_value(self.modelIter, 3, thetext) + track = self.model.get_value(self.modelIter, 5) + for language in track['slangs']: + (short, long) = language + if long == thetext: + track['slang'] = short + return def __init__(self): + self.oldtrack = None xml = gtk.glade.XML('glade/gtkmain.glade') self.window = xml.get_widget('window') *************** *** 187,190 **** --- 220,225 ---- self.sVideo = xml.get_widget('scaleVideo') self.lSize = xml.get_widget('labelSize') + self.comboLang = xml.get_widget('comboLanguage') + self.comboSub = xml.get_widget('comboSubtitles') xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) *************** *** 199,202 **** --- 234,239 ---- xml.signal_autoconnect( {'on_audio_moved': self.slideAudio} ) xml.signal_autoconnect( {'on_video_moved': self.slideVideo} ) + xml.signal_autoconnect( {'on_lang_changed': self.languageSelect} ) + xml.signal_autoconnect( {'on_subs_changed': self.subtitleSelect} ) self.initTree() *************** *** 404,408 **** def int_dispTitle(self, track): - print "display track" if self.modelIter == None: self.modelIter = self.model.insert_before(None, None) --- 441,444 ---- *************** *** 414,426 **** # model.set_value(i, 2, "third") # model.set_value(i, 3, "forth") # i = model.append(i, None) length = "" ! length += str(track['time'] / 3600) + ":" ! length += str((track['time'] % 3600) / 60) + ":" length += str(track['time'] % 60) self.model.set_value(self.modelIter, 0, track['name']) self.model.set_value(self.modelIter, 1, length) self.model.set_value(self.modelIter, 4, gtk.FALSE) self.model.set_value(self.modelIter, 5, track) def int_finishScanning(self): --- 450,470 ---- # model.set_value(i, 2, "third") # model.set_value(i, 3, "forth") + # this will nest a child and i will point to the child # i = model.append(i, None) length = "" ! if track['time'] >= 3600: ! length += str(track['time'] / 3600) + ":" ! if track['time'] >= 60: ! length += str((track['time'] % 3600) / 60) + ":" length += str(track['time'] % 60) + + track['slangs'].insert(0, [" ", "Not Specified"]) self.model.set_value(self.modelIter, 0, track['name']) self.model.set_value(self.modelIter, 1, length) + self.model.set_value(self.modelIter, 2, config.langs[track['alang']]) + self.model.set_value(self.modelIter, 3, config.langs[track['slang']]) self.model.set_value(self.modelIter, 4, gtk.FALSE) self.model.set_value(self.modelIter, 5, track) + self.updateSize() def int_finishScanning(self): |
From: <iwa...@us...> - 2003-08-06 08:34:02
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv4734/glade Modified Files: gtkmain.glade Log Message: Scan working with language and subtitle settings. Index: gtkmain.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtkmain.glade,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gtkmain.glade 6 Aug 2003 05:27:19 -0000 1.7 --- gtkmain.glade 6 Aug 2003 08:33:58 -0000 1.8 *************** *** 395,398 **** --- 395,399 ---- <property name="invisible_char" translatable="yes">*</property> <property name="activates_default">False</property> + <signal name="changed" handler="on_lang_changed" last_modification_time="Wed, 06 Aug 2003 07:35:51 GMT"/> </widget> </child> *************** *** 416,461 **** <child> - <widget class="GtkCombo" id="comboSubtitles"> - <property name="border_width">5</property> - <property name="width_request">225</property> - <property name="visible">True</property> - <property name="value_in_list">False</property> - <property name="allow_empty">True</property> - <property name="case_sensitive">False</property> - <property name="enable_arrow_keys">True</property> - <property name="enable_arrows_always">False</property> - - <child internal-child="entry"> - <widget class="GtkEntry" id="entry2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char" translatable="yes">*</property> - <property name="activates_default">False</property> - </widget> - </child> - - <child internal-child="list"> - <widget class="GtkList" id="list2"> - <property name="visible">True</property> - <property name="selection_mode">GTK_SELECTION_BROWSE</property> - </widget> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">expand</property> - <property name="y_options"></property> - </packing> - </child> - - <child> <widget class="GtkHBox" id="hbox17"> <property name="visible">True</property> --- 417,420 ---- *************** *** 465,469 **** <child> <widget class="GtkHScale" id="scaleAudio"> ! <property name="width_request">185</property> <property name="visible">True</property> <property name="can_focus">True</property> --- 424,428 ---- <child> <widget class="GtkHScale" id="scaleAudio"> ! <property name="width_request">155</property> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 544,548 **** <child> <widget class="GtkHScale" id="scaleVideo"> ! <property name="width_request">185</property> <property name="visible">True</property> <property name="can_focus">True</property> --- 503,507 ---- <child> <widget class="GtkHScale" id="scaleVideo"> ! <property name="width_request">155</property> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 552,556 **** <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> <property name="inverted">False</property> ! <property name="adjustment">112 64 2400 0 0 0</property> <signal name="value_changed" handler="on_video_moved" after="yes" last_modification_time="Wed, 06 Aug 2003 04:28:10 GMT"/> </widget> --- 511,515 ---- <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> <property name="inverted">False</property> ! <property name="adjustment">112 64 2048 2 16 16</property> <signal name="value_changed" handler="on_video_moved" after="yes" last_modification_time="Wed, 06 Aug 2003 04:28:10 GMT"/> </widget> *************** *** 566,570 **** <property name="width_request">35</property> <property name="visible">True</property> ! <property name="label" translatable="yes">1155</property> <property name="use_underline">False</property> <property name="use_markup">False</property> --- 525,529 ---- <property name="width_request">35</property> <property name="visible">True</property> ! <property name="label" translatable="yes">112</property> <property name="use_underline">False</property> <property name="use_markup">False</property> *************** *** 634,637 **** --- 593,639 ---- <property name="top_attach">4</property> <property name="bottom_attach">5</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkCombo" id="comboSubtitles"> + <property name="border_width">5</property> + <property name="width_request">225</property> + <property name="visible">True</property> + <property name="value_in_list">False</property> + <property name="allow_empty">True</property> + <property name="case_sensitive">False</property> + <property name="enable_arrow_keys">True</property> + <property name="enable_arrows_always">False</property> + + <child internal-child="entry"> + <widget class="GtkEntry" id="entry2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char" translatable="yes">*</property> + <property name="activates_default">False</property> + <signal name="changed" handler="on_subs_changed" last_modification_time="Wed, 06 Aug 2003 07:33:39 GMT"/> + </widget> + </child> + + <child internal-child="list"> + <widget class="GtkList" id="list2"> + <property name="visible">True</property> + <property name="selection_mode">GTK_SELECTION_BROWSE</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options"></property> <property name="y_options"></property> |
From: <iwa...@us...> - 2003-08-06 05:27:23
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv11383/gtk Modified Files: gtkmain.py Log Message: Tracks read in from scan. Need to store Subtitle/language stuff. Rearranged the main gui to look usable. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** gtkmain.py 6 Aug 2003 01:18:48 -0000 1.13 --- gtkmain.py 6 Aug 2003 05:27:19 -0000 1.14 *************** *** 84,95 **** i = mod.get_iter(row_num) bool = mod.get_value(i, 4) if bool == gtk.TRUE: mod.set_value(i, 4, gtk.FALSE) else: mod.set_value(i, 4, gtk.TRUE) ! def inittree(self): ! model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN) ! self.tree.set_model(model) self.tree.set_headers_clickable(gtk.FALSE) cell = gtk.CellRendererText() --- 84,106 ---- i = mod.get_iter(row_num) bool = mod.get_value(i, 4) + track = mod.get_value(i, 5) if bool == gtk.TRUE: mod.set_value(i, 4, gtk.FALSE) + track['rip'] = "no" else: mod.set_value(i, 4, gtk.TRUE) + track['rip'] = "yes" ! def initTree(self): ! # i = model.insert_before(None, None) ! # str = { "first": "1st", "second": "3rd" } ! # model.set_value(i, 0, str["first"]) ! # model.set_value(i, 1, str["second"]) ! # model.set_value(i, 2, "third") ! # model.set_value(i, 3, "forth") ! # i = model.append(i, None) ! # str2 = { "4" : "5", "6" : "seven" } ! # model.set_value(i, 0, str2["4"]) ! # model.set_value(i, 1, str2["6"]) self.tree.set_headers_clickable(gtk.FALSE) cell = gtk.CellRendererText() *************** *** 98,130 **** check.connect("toggled", self.toggle) column1 = gtk.TreeViewColumn("Track", cell, text=0) ! column2 = gtk.TreeViewColumn("Length", cell, text=1) ! column3 = gtk.TreeViewColumn("Language", cell)#, text=2) ! column4 = gtk.TreeViewColumn("Subtitles", cell)#, text=3) ! column5 = gtk.TreeViewColumn("Rip", check, active=4) column1.set_resizable(gtk.TRUE) column2.set_resizable(gtk.TRUE) column3.set_resizable(gtk.TRUE) column4.set_resizable(gtk.TRUE) ! column1.set_min_width(90) ! column2.set_min_width(90) ! column3.set_min_width(90) ! column4.set_min_width(90) column5.set_min_width(40) self.tree.append_column(column1) self.tree.append_column(column2) self.tree.append_column(column3) self.tree.append_column(column4) self.tree.append_column(column5) - i = model.insert_before(None, None) - str = { "first": "1st", "second": "3rd" } - model.set_value(i, 0, str["first"]) - model.set_value(i, 1, str["second"]) - # model.set_value(i, 2, "third") - # model.set_value(i, 3, "forth") - i = model.append(i, None) - str2 = { "4" : "5", "6" : "seven" } - model.set_value(i, 0, str2["4"]) - model.set_value(i, 1, str2["6"]) def __init__(self): xml = gtk.glade.XML('glade/gtkmain.glade') --- 109,177 ---- check.connect("toggled", self.toggle) column1 = gtk.TreeViewColumn("Track", cell, text=0) ! column2 = gtk.TreeViewColumn("Time (h:m:s)", cell, text=1) ! column3 = gtk.TreeViewColumn("Language", cell, text=2) ! column4 = gtk.TreeViewColumn("Subtitles", cell, text=3) ! column45 = gtk.TreeViewColumn("Result Size", cell, text=6) ! column5 = gtk.TreeViewColumn("Rip?", check, active=4) column1.set_resizable(gtk.TRUE) column2.set_resizable(gtk.TRUE) column3.set_resizable(gtk.TRUE) column4.set_resizable(gtk.TRUE) ! column45.set_resizable(gtk.TRUE) ! column5.set_resizable(gtk.FALSE) ! # column1.set_min_width(40) ! # column2.set_min_width(90) ! # column3.set_min_width(90) ! # column4.set_min_width(90) ! # column45.set_min_width(90) column5.set_min_width(40) + column5.set_max_width(40) self.tree.append_column(column1) self.tree.append_column(column2) self.tree.append_column(column3) self.tree.append_column(column4) + self.tree.append_column(column45) self.tree.append_column(column5) + def rowChange(self, widget, data=None): + # self.model, self.modeliter = "", "" + # selected = gtk.TreeSelection() + + selected = self.tree.get_selection() + (self.model, self.modelIter) = selected.get_selected()#self.model, self.modelIter) + track = self.model.get_value(self.modelIter, 5) + adj = self.sAudio.get_adjustment() + adj.value = float(track['abr']) + adj = self.sVideo.get_adjustment() + adj.value = float(track['vbr']) + self.updateSize() + + def updateSize(self): + track = self.model.get_value(self.modelIter, 5) + size = track['time'] * (track['abr'] + (track['vbr'])) / 8192 #1024 + string = str(int(size)) + " MB" + self.lSize.set_text(string) + self.model.set_value(self.modelIter, 6, string) + + def slideVideo(self, widget, data=None): + self.lVideo.set_text(str(int(widget.get_adjustment().value))) + track = self.model.get_value(self.modelIter, 5) + adj = widget.get_adjustment() + track['vbr'] = int(adj.value) + self.updateSize() + + def slideAudio(self, widget, data=None): + slider = widget.get_adjustment() + ival = int(slider.value) + if (ival % 32) < 16: + ival = ival - (ival%32) + self.lAudio.set_text(str(ival)) + else: + ival = (ival + 32) - (ival % 32) + self.lAudio.set_text(str(ival)) + track = self.model.get_value(self.modelIter, 5) + track['abr'] = ival + self.updateSize() + def __init__(self): xml = gtk.glade.XML('glade/gtkmain.glade') *************** *** 135,138 **** --- 182,190 ---- self.miScan = xml.get_widget('miScan') self.tree = xml.get_widget('treeview') + self.lAudio = xml.get_widget('labelAudio') + self.lVideo = xml.get_widget('labelVideo') + self.sAudio = xml.get_widget('scaleAudio') + self.sVideo = xml.get_widget('scaleVideo') + self.lSize = xml.get_widget('labelSize') xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) *************** *** 144,149 **** xml.signal_autoconnect( {'on_rip_clicked': self.rip} ) xml.signal_autoconnect( {'on_quit_activate': self.quit} ) ! self.inittree() self.dialogSettings = GTKSettings(self) self.dialogProgress = GTKProgress() --- 196,204 ---- xml.signal_autoconnect( {'on_rip_clicked': self.rip} ) xml.signal_autoconnect( {'on_quit_activate': self.quit} ) + xml.signal_autoconnect( {'on_row_activated': self.rowChange} ) + xml.signal_autoconnect( {'on_audio_moved': self.slideAudio} ) + xml.signal_autoconnect( {'on_video_moved': self.slideVideo} ) ! self.initTree() self.dialogSettings = GTKSettings(self) self.dialogProgress = GTKProgress() *************** *** 326,335 **** def int_startScanning(self): print "start scanning backend" def int_configError(self, config): ! print "Couldn't find " + config ! def int_noTracks(self): ! print "no tracks were found" def int_dispDVD(self): --- 381,400 ---- def int_startScanning(self): print "start scanning backend" + model = gtk.TreeStore( gobject.TYPE_STRING, #track title + gobject.TYPE_STRING, #track length + gobject.TYPE_STRING, #audio language + gobject.TYPE_STRING, #subtitle language + gobject.TYPE_BOOLEAN, #boolean for rip check + gobject.TYPE_PYOBJECT, #reference to object to set based on rip + gobject.TYPE_STRING) #projected size + self.tree.set_model(model) + self.model = model + self.modelIter = None def int_configError(self, config): ! msg = GTKErrorBox("Error!", "Config couldn't autodetect: " + config) ! def int_noTitles(self): ! msg = GTKErrorBox("Sorry!", "No DVD Video Titles were found!") def int_dispDVD(self): *************** *** 338,343 **** print "Found subtitle languages %s" % (self.slangs) ! def int_dispTrack(self, track): print "display track" def int_finishScanning(self): --- 403,426 ---- print "Found subtitle languages %s" % (self.slangs) ! def int_dispTitle(self, track): print "display track" + if self.modelIter == None: + self.modelIter = self.model.insert_before(None, None) + else : + self.modelIter = self.model.append(None, None)#self.modelIter, None) + # str = { "first": "1st", "second": "3rd" } + # model.set_value(i, 0, str["first"]) + # model.set_value(i, 1, str["second"]) + # model.set_value(i, 2, "third") + # model.set_value(i, 3, "forth") + # i = model.append(i, None) + length = "" + length += str(track['time'] / 3600) + ":" + length += str((track['time'] % 3600) / 60) + ":" + length += str(track['time'] % 60) + self.model.set_value(self.modelIter, 0, track['name']) + self.model.set_value(self.modelIter, 1, length) + self.model.set_value(self.modelIter, 4, gtk.FALSE) + self.model.set_value(self.modelIter, 5, track) def int_finishScanning(self): *************** *** 345,355 **** self.showRip() self.showScan() def int_startRipping(self): - print "start rip" self.hideScan() ! self.showRip() ! def int_newTrack(self, name, number, total, vbr): print "new track" --- 428,439 ---- self.showRip() self.showScan() + # for i in range(1, int(self.numtitles) + 1): + # print "title add " + str(i) def int_startRipping(self): self.hideScan() ! self.hideRip() ! def int_newTitle(self, name, number, total, vbr): print "new track" *************** *** 357,361 **** print "new pass" ! def int_updateProgress(self, perc, tpass): print "update progress" --- 441,446 ---- print "new pass" ! def int_updateProgress(self, perc, trem, tpass): ! print "%s percent, %s remaining in %s" % (perc, trem, tpass) print "update progress" |
From: <iwa...@us...> - 2003-08-06 05:27:23
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv11383/gtk/glade Modified Files: gtkmain.glade Log Message: Tracks read in from scan. Need to store Subtitle/language stuff. Rearranged the main gui to look usable. Index: gtkmain.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtkmain.glade,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gtkmain.glade 5 Aug 2003 01:57:27 -0000 1.6 --- gtkmain.glade 6 Aug 2003 05:27:19 -0000 1.7 *************** *** 10,15 **** <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> ! <property name="default_width">400</property> ! <property name="default_height">300</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> --- 10,15 ---- <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> ! <property name="default_width">244</property> ! <property name="default_height">361</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> *************** *** 185,196 **** <child> ! <widget class="GtkTreeView" id="treeview"> <property name="visible">True</property> ! <property name="tooltip" translatable="yes">Select multiple tracks, then click "Rip"</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> </widget> <packing> --- 185,222 ---- <child> ! <widget class="GtkHBox" id="hbox12"> <property name="visible">True</property> ! <property name="homogeneous">False</property> ! <property name="spacing">0</property> ! ! <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="treeview"> ! <property name="border_width">5</property> ! <property name="visible">True</property> ! <property name="tooltip" translatable="yes">Select multiple tracks, then click "Rip" button</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> ! <signal name="button_release_event" handler="on_row_activated" last_modification_time="Wed, 06 Aug 2003 05:12:37 GMT"/> ! </widget> ! </child> ! </widget> ! <packing> ! <property name="padding">0</property> ! <property name="expand">True</property> ! <property name="fill">True</property> ! </packing> ! </child> </widget> <packing> *************** *** 202,242 **** <child> ! <widget class="GtkHBox" id="hbox6"> <property name="visible">True</property> <property name="homogeneous">False</property> ! <property name="spacing">0</property> <child> ! <widget class="GtkButton" id="buttonScan"> <property name="border_width">5</property> <property name="visible">True</property> ! <property name="tooltip" translatable="yes">Scan device pointed to in settings.</property> ! <property name="can_focus">True</property> ! <property name="relief">GTK_RELIEF_NORMAL</property> ! <signal name="clicked" handler="on_scan_clicked" last_modification_time="Mon, 04 Aug 2003 00:40:57 GMT"/> <child> ! <widget class="GtkAlignment" id="alignment5"> <property name="visible">True</property> ! <property name="xalign">0.5</property> ! <property name="yalign">0.5</property> ! <property name="xscale">0</property> ! <property name="yscale">0</property> <child> ! <widget class="GtkHBox" id="hbox7"> <property name="visible">True</property> <property name="homogeneous">False</property> ! <property name="spacing">2</property> <child> ! <widget class="GtkImage" id="image5"> <property name="visible">True</property> ! <property name="stock">gtk-index</property> ! <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> ! <property name="xpad">0</property> ! <property name="ypad">0</property> </widget> <packing> --- 228,500 ---- <child> ! <widget class="GtkTable" id="table2"> <property name="visible">True</property> + <property name="n_rows">1</property> + <property name="n_columns">2</property> <property name="homogeneous">False</property> ! <property name="row_spacing">0</property> ! <property name="column_spacing">0</property> <child> ! <widget class="GtkFrame" id="frame2"> <property name="border_width">5</property> <property name="visible">True</property> ! <property name="label_xalign">0</property> ! <property name="label_yalign">0.5</property> ! <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> <child> ! <widget class="GtkTable" id="table3"> <property name="visible">True</property> ! <property name="n_rows">5</property> ! <property name="n_columns">2</property> ! <property name="homogeneous">False</property> ! <property name="row_spacing">0</property> ! <property name="column_spacing">0</property> <child> ! <widget class="GtkLabel" id="label34"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Language</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</property> ! <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> ! </widget> ! <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">0</property> ! <property name="bottom_attach">1</property> ! <property name="x_options">fill</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="label35"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Video Quality</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</property> ! <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> ! </widget> ! <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">2</property> ! <property name="bottom_attach">3</property> ! <property name="x_options">fill</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="label36"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Subtitles</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</property> ! <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> ! </widget> ! <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">1</property> ! <property name="bottom_attach">2</property> ! <property name="x_options">fill</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="label37"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Audio Quality</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</property> ! <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> ! </widget> ! <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">3</property> ! <property name="bottom_attach">4</property> ! <property name="x_options">fill</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="label38"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Projected Size</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</property> ! <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">4</property> ! </widget> ! <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">4</property> ! <property name="bottom_attach">5</property> ! <property name="x_options">fill</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkCombo" id="comboLanguage"> ! <property name="border_width">5</property> ! <property name="width_request">225</property> ! <property name="visible">True</property> ! <property name="value_in_list">False</property> ! <property name="allow_empty">True</property> ! <property name="case_sensitive">False</property> ! <property name="enable_arrow_keys">True</property> ! <property name="enable_arrows_always">False</property> ! ! <child internal-child="entry"> ! <widget class="GtkEntry" id="entry1"> ! <property name="visible">True</property> ! <property name="can_focus">True</property> ! <property name="editable">False</property> ! <property name="visibility">True</property> ! <property name="max_length">0</property> ! <property name="text" translatable="yes"></property> ! <property name="has_frame">True</property> ! <property name="invisible_char" translatable="yes">*</property> ! <property name="activates_default">False</property> ! </widget> ! </child> ! ! <child internal-child="list"> ! <widget class="GtkList" id="list1"> ! <property name="visible">True</property> ! <property name="selection_mode">GTK_SELECTION_BROWSE</property> ! </widget> ! </child> ! </widget> ! <packing> ! <property name="left_attach">1</property> ! <property name="right_attach">2</property> ! <property name="top_attach">0</property> ! <property name="bottom_attach">1</property> ! <property name="x_options">expand</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkCombo" id="comboSubtitles"> ! <property name="border_width">5</property> ! <property name="width_request">225</property> ! <property name="visible">True</property> ! <property name="value_in_list">False</property> ! <property name="allow_empty">True</property> ! <property name="case_sensitive">False</property> ! <property name="enable_arrow_keys">True</property> ! <property name="enable_arrows_always">False</property> ! ! <child internal-child="entry"> ! <widget class="GtkEntry" id="entry2"> ! <property name="visible">True</property> ! <property name="can_focus">True</property> ! <property name="editable">False</property> ! <property name="visibility">True</property> ! <property name="max_length">0</property> ! <property name="text" translatable="yes"></property> ! <property name="has_frame">True</property> ! <property name="invisible_char" translatable="yes">*</property> ! <property name="activates_default">False</property> ! </widget> ! </child> ! ! <child internal-child="list"> ! <widget class="GtkList" id="list2"> ! <property name="visible">True</property> ! <property name="selection_mode">GTK_SELECTION_BROWSE</property> ! </widget> ! </child> ! </widget> ! <packing> ! <property name="left_attach">1</property> ! <property name="right_attach">2</property> ! <property name="top_attach">1</property> ! <property name="bottom_attach">2</property> ! <property name="x_options">expand</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkHBox" id="hbox17"> <property name="visible">True</property> <property name="homogeneous">False</property> ! <property name="spacing">0</property> <child> ! <widget class="GtkHScale" id="scaleAudio"> ! <property name="width_request">185</property> <property name="visible">True</property> ! <property name="can_focus">True</property> ! <property name="draw_value">False</property> ! <property name="value_pos">GTK_POS_RIGHT</property> ! <property name="digits">0</property> ! <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> ! <property name="inverted">False</property> ! <property name="adjustment">128 64 256 32 32 0</property> ! <signal name="value_changed" handler="on_audio_moved" after="yes" last_modification_time="Wed, 06 Aug 2003 04:28:27 GMT"/> ! </widget> ! <packing> ! <property name="padding">0</property> ! <property name="expand">False</property> ! <property name="fill">False</property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="labelAudio"> ! <property name="width_request">35</property> ! <property name="visible">True</property> ! <property name="label" translatable="yes">128</property> ! <property name="use_underline">False</property> ! <property name="use_markup">False</property> ! <property name="justify">GTK_JUSTIFY_RIGHT</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">5</property> ! <property name="ypad">5</property> </widget> <packing> *************** *** 248,263 **** <child> ! <widget class="GtkLabel" id="label22"> <property name="visible">True</property> ! <property name="label" translatable="yes">Scan</property> ! <property name="use_underline">True</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> </widget> <packing> --- 506,521 ---- <child> ! <widget class="GtkLabel" id="label43"> <property name="visible">True</property> ! <property name="label" translatable="yes">kbps</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</property> <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> </widget> <packing> *************** *** 268,314 **** </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="GtkButton" id="buttonRip"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Encode tracks and store to disk.</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <signal name="clicked" handler="on_rip_clicked" last_modification_time="Mon, 04 Aug 2003 00:41:27 GMT"/> - - <child> - <widget class="GtkAlignment" id="alignment6"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> <child> ! <widget class="GtkHBox" id="hbox8"> <property name="visible">True</property> <property name="homogeneous">False</property> ! <property name="spacing">2</property> <child> ! <widget class="GtkImage" id="image6"> <property name="visible">True</property> ! <property name="stock">gtk-cdrom</property> ! <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> ! <property name="xpad">0</property> ! <property name="ypad">0</property> </widget> <packing> --- 526,579 ---- </child> </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> </child> <child> ! <widget class="GtkHBox" id="hbox18"> <property name="visible">True</property> <property name="homogeneous">False</property> ! <property name="spacing">0</property> <child> ! <widget class="GtkHScale" id="scaleVideo"> ! <property name="width_request">185</property> <property name="visible">True</property> ! <property name="can_focus">True</property> ! <property name="draw_value">False</property> ! <property name="value_pos">GTK_POS_RIGHT</property> ! <property name="digits">0</property> ! <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> ! <property name="inverted">False</property> ! <property name="adjustment">112 64 2400 0 0 0</property> ! <signal name="value_changed" handler="on_video_moved" after="yes" last_modification_time="Wed, 06 Aug 2003 04:28:10 GMT"/> ! </widget> ! <packing> ! <property name="padding">0</property> ! <property name="expand">False</property> ! <property name="fill">False</property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkLabel" id="labelVideo"> ! <property name="width_request">35</property> ! <property name="visible">True</property> ! <property name="label" translatable="yes">1155</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">5</property> ! <property name="ypad">5</property> </widget> <packing> *************** *** 320,335 **** <child> ! <widget class="GtkLabel" id="label23"> <property name="visible">True</property> ! <property name="label" translatable="yes">Rip</property> ! <property name="use_underline">True</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> </widget> <packing> --- 585,600 ---- <child> ! <widget class="GtkLabel" id="label44"> <property name="visible">True</property> ! <property name="label" translatable="yes">kbps</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</property> <property name="yalign">0.5</property> ! <property name="xpad">5</property> ! <property name="ypad">5</property> </widget> <packing> *************** *** 340,352 **** </child> </widget> </child> </widget> </child> </widget> <packing> ! <property name="padding">0</property> ! <property name="expand">False</property> ! <property name="fill">False</property> ! <property name="pack_type">GTK_PACK_END</property> </packing> </child> --- 605,820 ---- </child> </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="labelSize"> + <property name="visible">True</property> + <property name="label" translatable="yes">0 MB</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">5</property> + <property name="ypad">5</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> </child> </widget> </child> + + <child> + <widget class="GtkLabel" id="label40"> + <property name="visible">True</property> + <property name="label" translatable="yes">Track Settings</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> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> </widget> <packing> ! <property name="left_attach">0</property> ! <property name="right_attach">1</property> ! <property name="top_attach">0</property> ! <property name="bottom_attach">1</property> ! <property name="y_options"></property> ! </packing> ! </child> ! ! <child> ! <widget class="GtkVButtonBox" id="vbuttonbox1"> ! <property name="border_width">5</property> ! <property name="visible">True</property> ! <property name="layout_style">GTK_BUTTONBOX_SPREAD</property> ! <property name="spacing">0</property> ! ! <child> ! <widget class="GtkButton" id="buttonScan"> ! <property name="border_width">5</property> ! <property name="visible">True</property> ! <property name="can_default">True</property> ! <property name="can_focus">True</property> ! <property name="relief">GTK_RELIEF_NORMAL</property> ! <signal name="clicked" handler="on_scan_clicked" last_modification_time="Wed, 06 Aug 2003 03:06:38 GMT"/> ! ! <child> ! <widget class="GtkAlignment" id="alignment11"> ! <property name="visible">True</property> ! <property name="xalign">0.5</property> ! <property name="yalign">0.5</property> ! <property name="xscale">0</property> ! <property name="yscale">0</property> ! ! <child> ! <widget class="GtkHBox" id="hbox15"> ! <property name="visible">True</property> ! <property name="homogeneous">False</property> ! <property name="spacing">2</property> ! ! <child> ! <widget class="GtkImage" id="image31"> ! <property name="visible">True</property> ! <property name="stock">gtk-index</property> ! <property name="icon_size">4</property> ! <property name="xalign">0.5</property> ! <property name="yalign">0.5</property> ! <property name="xpad">0</property> ! <property name="ypad">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="label41"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Scan</property> ! <property name="use_underline">True</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> ! </widget> ! <packing> ! <property name="padding">0</property> ! <property name="expand">False</property> ! <property name="fill">False</property> ! </packing> ! </child> ! </widget> ! </child> ! </widget> ! </child> ! </widget> ! </child> ! ! <child> ! <widget class="GtkButton" id="buttonRip"> ! <property name="border_width">5</property> ! <property name="visible">True</property> ! <property name="can_default">True</property> ! <property name="can_focus">True</property> ! <property name="relief">GTK_RELIEF_NORMAL</property> ! <signal name="clicked" handler="on_rip_clicked" last_modification_time="Wed, 06 Aug 2003 03:06:49 GMT"/> ! ! <child> ! <widget class="GtkAlignment" id="alignment12"> ! <property name="visible">True</property> ! <property name="xalign">0.5</property> ! <property name="yalign">0.5</property> ! <property name="xscale">0</property> ! <property name="yscale">0</property> ! ! <child> ! <widget class="GtkHBox" id="hbox16"> ! <property name="visible">True</property> ! <property name="homogeneous">False</property> ! <property name="spacing">2</property> ! ! <child> ! <widget class="GtkImage" id="image32"> ! <property name="visible">True</property> ! <property name="stock">gtk-cdrom</property> ! <property name="icon_size">4</property> ! <property name="xalign">0.5</property> ! <property name="yalign">0.5</property> ! <property name="xpad">0</property> ! <property name="ypad">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="label42"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">Rip</property> ! <property name="use_underline">True</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> ! </widget> ! <packing> ! <property name="padding">0</property> ! <property name="expand">False</property> ! <property name="fill">False</property> ! </packing> ! </child> ! </widget> ! </child> ! </widget> ! </child> ! </widget> ! </child> ! </widget> ! <packing> ! <property name="left_attach">1</property> ! <property name="right_attach">2</property> ! <property name="top_attach">0</property> ! <property name="bottom_attach">1</property> ! <property name="x_options"></property> ! <property name="y_options">expand</property> </packing> </child> |
From: <te...@us...> - 2003-08-06 01:36:08
|
Update of /cvsroot/quickrip/quickrip/cli In directory sc8-pr-cvs1:/tmp/cvs-serv11184/cli Added Files: cli.py ncurses.py Log Message: Removed old CLI, added new one 'cli/cli.py' - not at all working yet! Adjusted quickrip.py accordingly --- NEW FILE: cli.py --- #!/usr/bin/env python """ cli.py - QuickRip's command line interface copyright: (C) 2003, Tom Chance license: GNU General Public License (GPL) (see LICENSE file) web: http://quickrip.sf.net email: tom...@gm... """ try: import sys, os, re, output, curses, curses.wrapper import ncurses from base import * except ImportError, desc: print "Unable to load module (", desc, ")" raise SystemExit # QuickRip global configuration. import config __app__ = config.app __author__ = config.author __version__ = config.version __date__ = config.date __copyright__ = config.copyright __license__ = config.license class Main(QuickRip): """Command Line Interface, using ncurses library""" def __init__(self): self.initialise() global SCREEN_WIDTH; global SCREEN_HEIGHT SCREEN_WIDTH = float(os.popen("tput cols").read()) SCREEN_HEIGHT = float(os.popen("tput lines").read()) self.mode = '' curses.wrapper(self.hook) def hook(self, stdscr, mode="front"): self.stdscr = stdscr self.draw_screen() while 1: if self.mode is '': self.mode = 'front' self.front() choice = self.stdscr.getch() if chr(choice) in 'qQ': sys.exit(2) self.switch(choice) def draw_screen(self): self.stdscr.clear() app_string = "".join([__app__, " v.", __version__, " ", __copyright__]) self.stdscr.addstr(0,0,app_string,curses.A_STANDOUT) self.stdscr.refresh() def switch(self, choice): if self.mode== 'front': self.mode = 'titlelist' self.titleList() else: curses.beep() def front(self): self.draw_screen() self.stdscr.addstr(2,0,"Hit ENTER to scan the DVD",curses.A_BOLD) self.stdscr.refresh() return 1 def titleList(self): self.draw_screen() self.scanDVD() self.draw_screen() self.list = ncurses.TitleList(self.stdscr, SCREEN_WIDTH, SCREEN_HEIGHT, self.numtitles) #i = 2 #for title in self.titles: # i = i + 1 # self.stdscr.addstr(i,0,"".join(["* Title ", str(title['id']), ", ", title['timelabel']])) # self.stdscr.refresh() #self.stdscr.move(self.pointer['y'], self.pointer['x']) def int_noTitles(self): self.draw_screen() self.stdscr.addstr(4, 0, "ERROR: No titles were found!", curses.A_STANDOUT) def int_dispDVD(self, numtitles): self.j = 4 self.stdscr.addstr(2, 0, "Scanning DVD...", curses.A_BOLD) self.stdscr.addstr(4, 0, "".join([numtitles, " titles found on this DVD"])) self.stdscr.refresh() def int_dispTitle(self, title): self.j = self.j + 1 text = "".join(["* Title ", str(title['id']), ", ", title['timelabel']]) self.stdscr.addstr(self.j, 0, text) self.stdscr.refresh() def main(): cli = Main() --- NEW FILE: ncurses.py --- #!/usr/bin/env python """ cli.py - QuickRip's command line interface copyright: (C) 2003, Tom Chance license: GNU General Public License (GPL) (see LICENSE file) web: http://quickrip.sf.net email: tom...@gm... """ try: import curses, curses.wrapper except ImportError, desc: print "Unable to load module (", desc, ")" raise SystemExit class TitleList: """Handle the list of DVD titles in a window""" def __init__(self, mainwindow, SCREEN_WIDTH, SCREEN_HEIGHT, numtitles): height = SCREEN_HEIGHT - 10 width = SCREEN_WIDTH - 4 self.win = curses.newwin(height, width, 2, 2) self.win.border() self.win.addstr(0,2,"".join([numtitles, " DVD titles available"]),curses.A_BOLD) self.win.refresh() |
From: <te...@us...> - 2003-08-06 01:36:08
|
Update of /cvsroot/quickrip/quickrip In directory sc8-pr-cvs1:/tmp/cvs-serv11184 Modified Files: base.py config.py quickrip.py Removed Files: cli.py Log Message: Removed old CLI, added new one 'cli/cli.py' - not at all working yet! Adjusted quickrip.py accordingly Index: base.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/base.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** base.py 6 Aug 2003 01:18:48 -0000 1.2 --- base.py 6 Aug 2003 01:36:05 -0000 1.3 *************** *** 36,40 **** self.dio = config.dio self.aro = config.dio - self.langs = config.langs self.configfile = os.path.join(os.path.expanduser("~"), ".quickriprc") self.loadConfig() --- 36,39 ---- *************** *** 227,234 **** self.numtitles = self.getDVDInfo() for i in range(int(self.numtitles) + 1): if i is not 0: - print i # Get title information from disc chapters, alangs, slangs, time, time_label = self.getTitleInfo(i) --- 226,233 ---- self.numtitles = self.getDVDInfo() + self.int_dispDVD(self.numtitles) for i in range(int(self.numtitles) + 1): if i is not 0: # Get title information from disc chapters, alangs, slangs, time, time_label = self.getTitleInfo(i) *************** *** 422,426 **** pass ! def int_dispDVD(self): pass --- 421,425 ---- pass ! def int_dispDVD(self, numtitles): pass *************** *** 438,447 **** def int_newPass(self, passtype): ! #pass ! print passtype def int_updateProgress(self, perc, trem, tpass): ! #pass ! print "%s percent, %s remaining in %s" % (perc, trem, tpass) def int_finishRipping(self): --- 437,444 ---- def int_newPass(self, passtype): ! pass def int_updateProgress(self, perc, trem, tpass): ! pass def int_finishRipping(self): Index: config.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/config.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** config.py 5 Aug 2003 17:50:36 -0000 1.11 --- config.py 6 Aug 2003 01:36:05 -0000 1.12 *************** *** 14,23 **** app = "QuickRip" author = "Tom Chance <tom...@gm...>" ! version = "0.8-rc1" ! date = "2003-07-30" copyright = "(C) 2003 Tom Chance" license = "GNU General Public License (GPL) (see LICENSE file)" paths = os.environ['PATH'].split(":") - #paths = ['/bin', '/usr/bin/', '/usr/local/bin/', '/opt/bin/', '/sbin/', '/usr/sbin/', '/usr/X11R6/lib/X11/bin'] icon = os.path.join("icons", "quickrip.xpm") qr_dir = "/usr/share/quickrip" --- 14,22 ---- app = "QuickRip" author = "Tom Chance <tom...@gm...>" ! version = "0.9-cvs" ! date = "2003-08-05" copyright = "(C) 2003 Tom Chance" license = "GNU General Public License (GPL) (see LICENSE file)" paths = os.environ['PATH'].split(":") icon = os.path.join("icons", "quickrip.xpm") qr_dir = "/usr/share/quickrip" Index: quickrip.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/quickrip.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** quickrip.py 5 Aug 2003 17:50:36 -0000 1.10 --- quickrip.py 6 Aug 2003 01:36:05 -0000 1.11 *************** *** 28,35 **** Options: (with none, runs PyQt GUI mode) ! -h, --help print this help message ! -c, --cli trun in command line interface mode ! -a, --autoresize automatically resize the cli progress bar as ! the terminal is resized (small performance hit) """ % sys.argv[0] --- 28,34 ---- Options: (with none, runs PyQt GUI mode) ! -h, --help \t print this help message ! -c, --cli \t run with the command line interface ! -g, --gtk \t run with the Gtk interface """ % sys.argv[0] *************** *** 46,60 **** if opt in ("-h", "--help"): usage() ! sys.exit() elif opt in ("-g", "--gtk"): sys.path.append("gtk") import gtkmain gtkmain.main() elif opt in ("-c", "--cli"): import cli cli.main() ! elif opt in ("-a", "--autoresize"): ! # Help! What do I do here??? ! pass # Fallback to GUI mode... --- 45,59 ---- if opt in ("-h", "--help"): usage() ! sys.exit(2) elif opt in ("-g", "--gtk"): sys.path.append("gtk") import gtkmain gtkmain.main() + sys.exit(2) elif opt in ("-c", "--cli"): + sys.path.append("cli") import cli cli.main() ! sys.exit(2) # Fallback to GUI mode... --- cli.py DELETED --- |
From: <te...@us...> - 2003-08-06 01:29:08
|
Update of /cvsroot/quickrip/quickrip/cli In directory sc8-pr-cvs1:/tmp/cvs-serv10326/cli Log Message: Directory /cvsroot/quickrip/quickrip/cli added to the repository |
From: <iwa...@us...> - 2003-08-06 01:18:51
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv8833/gtk Modified Files: gtkmain.py Log Message: Fixed a small typo in base.py so getTitleInfo actually reads the language from the config file. gtkmain is just beginning to work with this. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** gtkmain.py 6 Aug 2003 00:58:02 -0000 1.12 --- gtkmain.py 6 Aug 2003 01:18:48 -0000 1.13 *************** *** 62,66 **** #wtf?? ! self.langs = {} self.scanDVD() --- 62,66 ---- #wtf?? ! # self.langs = {} self.scanDVD() |
From: <iwa...@us...> - 2003-08-06 01:18:51
|
Update of /cvsroot/quickrip/quickrip In directory sc8-pr-cvs1:/tmp/cvs-serv8833 Modified Files: base.py Log Message: Fixed a small typo in base.py so getTitleInfo actually reads the language from the config file. gtkmain is just beginning to work with this. Index: base.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/base.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** base.py 5 Aug 2003 17:50:36 -0000 1.1 --- base.py 6 Aug 2003 01:18:48 -0000 1.2 *************** *** 204,213 **** if re_alang.search(line): alang = re_alang.search(line).group(1) ! alang_full = self.langs[alang] if alang != "xx": alangs.append([alang, alang_full]) if re_slang.search(line): slang = re_slang.search(line).group(1) ! slang_full = self.langs[slang] if slang != "xx": slangs.append([slang, slang_full]) --- 204,213 ---- if re_alang.search(line): alang = re_alang.search(line).group(1) ! alang_full = config.langs[alang] if alang != "xx": alangs.append([alang, alang_full]) if re_slang.search(line): slang = re_slang.search(line).group(1) ! slang_full = config.langs[slang] if slang != "xx": slangs.append([slang, slang_full]) |
From: <iwa...@us...> - 2003-08-06 00:58:05
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv5763 Modified Files: gtkmain.py Log Message: gtkmain updated to work with new base. Just copy the base.py and place in the same directory. Then python gtkmain. Get some errors in scan dvd tho :| Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** gtkmain.py 6 Aug 2003 00:33:48 -0000 1.11 --- gtkmain.py 6 Aug 2003 00:58:02 -0000 1.12 *************** *** 37,42 **** gnome.init("quickrip", "1.0") ! import dvd ! from dvd import * import config import gtkerrorbox --- 37,42 ---- gnome.init("quickrip", "1.0") ! import base ! from base import * import config import gtkerrorbox *************** *** 51,55 **** ! class GTKMain(DVD): def rip(self, widget, data=None): print "Rip" --- 51,55 ---- ! class GTKMain(QuickRip): def rip(self, widget, data=None): print "Rip" *************** *** 60,63 **** --- 60,66 ---- self.hideRip() self.hideScan() + + #wtf?? + self.langs = {} self.scanDVD() |
From: <iwa...@us...> - 2003-08-06 00:58:05
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv5763/glade Modified Files: gtksettings.glade Log Message: gtkmain updated to work with new base. Just copy the base.py and place in the same directory. Then python gtkmain. Get some errors in scan dvd tho :| Index: gtksettings.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtksettings.glade,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** gtksettings.glade 6 Aug 2003 00:33:48 -0000 1.3 --- gtksettings.glade 6 Aug 2003 00:58:02 -0000 1.4 *************** *** 171,176 **** <widget class="GtkLabel" id="label1"> <property name="visible">True</property> ! <property name="label" translatable="yes">General</property> ! <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> --- 171,176 ---- <widget class="GtkLabel" id="label1"> <property name="visible">True</property> ! <property name="label" translatable="yes">_General</property> ! <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> *************** *** 465,470 **** <widget class="GtkLabel" id="label2"> <property name="visible">True</property> ! <property name="label" translatable="yes">Programs</property> ! <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> --- 465,470 ---- <widget class="GtkLabel" id="label2"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Programs</property> ! <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> *************** *** 883,888 **** <widget class="GtkLabel" id="label11"> <property name="visible">True</property> ! <property name="label" translatable="yes">Audio</property> ! <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> --- 883,888 ---- <widget class="GtkLabel" id="label11"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Audio</property> ! <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> *************** *** 1323,1328 **** <widget class="GtkLabel" id="label3"> <property name="visible">True</property> ! <property name="label" translatable="yes">Video</property> ! <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> --- 1323,1328 ---- <widget class="GtkLabel" id="label3"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Video</property> ! <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> *************** *** 1509,1514 **** <widget class="GtkLabel" id="label10"> <property name="visible">True</property> ! <property name="label" translatable="yes">Logging</property> ! <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> --- 1509,1514 ---- <widget class="GtkLabel" id="label10"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Logging</property> ! <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> |
From: <iwa...@us...> - 2003-08-06 00:33:53
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv2385/glade Modified Files: gtksettings.glade Log Message: Added the ogmmerge setting in preferences. Index: gtksettings.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtksettings.glade,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** gtksettings.glade 5 Aug 2003 01:57:27 -0000 1.2 --- gtksettings.glade 6 Aug 2003 00:33:48 -0000 1.3 *************** *** 190,194 **** <widget class="GtkTable" id="table7"> <property name="visible">True</property> ! <property name="n_rows">3</property> <property name="n_columns">4</property> <property name="homogeneous">False</property> --- 190,194 ---- <widget class="GtkTable" id="table7"> <property name="visible">True</property> ! <property name="n_rows">4</property> <property name="n_columns">4</property> <property name="homogeneous">False</property> *************** *** 387,390 **** --- 387,455 ---- <property name="top_attach">2</property> <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label27"> + <property name="visible">True</property> + <property name="label" translatable="yes">OGMMerge</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</property> + <property name="yalign">0.5</property> + <property name="xpad">5</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="textOgmmerge"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes">/usr/bin/ogmmerge</property> + <property name="has_frame">True</property> + <property name="invisible_char" translatable="yes">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button8"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Browse</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_ogmmerge_clicked" last_modification_time="Wed, 06 Aug 2003 00:26:56 GMT"/> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> |
From: <iwa...@us...> - 2003-08-06 00:33:53
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv2385 Modified Files: gtkmain.py gtksettings.py Log Message: Added the ogmmerge setting in preferences. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** gtkmain.py 5 Aug 2003 06:31:55 -0000 1.10 --- gtkmain.py 6 Aug 2003 00:33:48 -0000 1.11 *************** *** 157,162 **** --- 157,165 ---- self.dialogSettings.wteMencoder.set_text(self.config['mencoder']) self.dialogSettings.wteTcprobe.set_text(self.config['tcprobe']) + self.dialogSettings.wteOgmmerge.set_text(self.config['ogmmerge']) + self.dialogSettings.wteDVD.set_text(self.config['dvd_device']) self.dialogSettings.wteOutput.set_text(self.config['outputdir']) + self.dialogSettings.wteLog.set_text(self.config['logfile']) self.dialogSettings.wcbLogLevel.entry.set_text(self.config['loglevel']) *************** *** 177,180 **** --- 180,184 ---- self.parser.set('programs', 'mencoder', self.config['mencoder']) self.parser.set('programs', 'tcprobe', self.config['tcprobe']) + self.parser.set('programs', 'ogmmerge', self.config['ogmmerge']) self.parser.set('general', 'dvd_device', self.config['dvd_device']) self.parser.set('general', 'outputdir', self.config['outputdir']) *************** *** 202,209 **** --- 206,217 ---- config['mencoder'] = parser.get("programs", "mencoder") config['tcprobe'] = parser.get("programs", "tcprobe") + config['ogmmerge'] = parser.get("programs", "ogmmerge") + config['dvd_device'] = parser.get("general", "dvd_device") config['outputdir'] = parser.get("general", "outputdir") + config['logfile'] = parser.get("logging", "logfile") config['loglevel'] = parser.get("logging", "loglevel") + config['deinterlacing'] = parser.get("video", "deinterlacing") config['aspectratio'] = parser.get("video", "aspectratio") *************** *** 211,214 **** --- 219,223 ---- config['pdamode'] = parser.get("video", "pdamode") config['videocodec'] = parser.get("video", "videocodec") + config['audiocodec'] = parser.get("audio", "audiocodec") config['quality'] = parser.get("audio", "quality") *************** *** 221,225 **** #paths = ['/usr/bin/', '/usr/local/bin/', '/opt/bin/', '/sbin/', '/usr/sbin/', '/bin', '/usr/X11R6/lib/X11/bin'] paths = config.paths ! mplayer, mencoder, tcprobe, outdir = "", "", "", "/tmp" for path in paths: #if os.path.isfile(path + "mplayer"): --- 230,234 ---- #paths = ['/usr/bin/', '/usr/local/bin/', '/opt/bin/', '/sbin/', '/usr/sbin/', '/bin', '/usr/X11R6/lib/X11/bin'] paths = config.paths ! mplayer, mencoder, tcprobe, ogmmerge, outdir = "", "", "", "", "/tmp" for path in paths: #if os.path.isfile(path + "mplayer"): *************** *** 234,237 **** --- 243,249 ---- #tcprobe = path + "tcprobe" tcprobe = os.path.join(path, "tcprobe") + if os.path.isfile(os.path.join(path, "ogmmerge")): + #tcprobe = path + "ogmmerge" + ogmmerge = os.path.join(path, "ogmmerge") if not mplayer:# == "": self.int_configError("mplayer") *************** *** 240,243 **** --- 252,257 ---- if not tcprobe:# == "": self.int_configError("tcprobe") + if not ogmmerge:# == "": + self.int_configError("ogmmerge") dvd_device = "/dev/dvd" *************** *** 257,260 **** --- 271,275 ---- parser.set("programs", "mencoder", mencoder) parser.set("programs", "tcprobe", tcprobe) + parser.set("programs", "ogmmerge", ogmmerge) parser.set("general", "dvd_device", dvd_device) parser.set("general", "outputdir", outdir) Index: gtksettings.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtksettings.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** gtksettings.py 5 Aug 2003 06:31:55 -0000 1.8 --- gtksettings.py 6 Aug 2003 00:33:48 -0000 1.9 *************** *** 53,56 **** --- 53,57 ---- self.parent.config['mencoder'] = self.wteMencoder.get_text() self.parent.config['tcprobe'] = self.wteTcprobe.get_text() + self.parent.config['ogmmerge'] = self.wteOgmmerge.get_text() #general *************** *** 103,106 **** --- 104,109 ---- def findMencoder(self, widget, data=None): self.findGeneric("Location of MEncoder", self.wteMencoder) + def findOgmmerge(self, widget, data=None): + self.findGeneric("Location of OGMMerge", self.wteOgmmerge) def __init__(self, parent): *************** *** 113,116 **** --- 116,120 ---- self.wteMencoder = xml.get_widget('textMencoder') # self.wteMplayer = xml.get_widget('textMplayer') # + self.wteOgmmerge = xml.get_widget('textOgmmerge') # self.wteTcprobe = xml.get_widget('textTcprobe') # self.wcbVideoCodec = xml.get_widget('comboVideoCodec')# *************** *** 130,133 **** --- 134,138 ---- xml.signal_autoconnect( {'on_mencoder_clicked': self.findMencoder} ) xml.signal_autoconnect( {'on_tcprobe_clicked': self.findTcprobe} ) + xml.signal_autoconnect( {'on_ogmmerge_clicked': self.findOgmmerge} ) xml.signal_autoconnect( {'on_log_clicked': self.findLog} ) |
From: <te...@us...> - 2003-08-05 17:50:40
|
Update of /cvsroot/quickrip/quickrip/qt In directory sc8-pr-cvs1:/tmp/cvs-serv26132/qt Added Files: qtgui.py qtmain.py qtprogressdialogue.py qtsettings.py Log Message: Added base.py, Removed dvd.py, Moved qt files into "qt" subdirectory, Changed config.py to fit new base.py Changed quickrip.py to handle qt subdirectory A LOT IS NOW BROKEN! CLI AND QT INTERFACES NEED WORK TO MAKE THEM WORK WITH NEW BASE CLASS, DUE TO SOME MAJOR CHANGES, AND THE REPLACEMENT OF 'TRACK' WITH 'TITLE' --- NEW FILE: qtgui.py --- #!/usr/bin/env python """ gui.py - GUI specific functions for QuickRip copyright: (C) 2003, Tom Chance license: GNU General Public License (GPL) (see LICENSE file) web: http://quickrip.sf.net email: tom...@gm... """ import sys, os, re from base import * try: from qt import * except: print """ Unable to load the PyQt module! Check it's installed properly. If you think it is, but you still get this message, please see the frequent problems page online at http://quickrip.sf.net/fp.shtml Press Enter for the full Qt error message """ deleteme = raw_input() del deleteme import qt from qtmain import MainWindow from qtsettings import dialogSettings from qtprogressdialogue import dialogueProgress # QuickRip global configuration. import config __app__ = config.app __author__ = config.author __version__ = config.version __date__ = config.date __copyright__ = config.copyright __license__ = config.license class GUI(DVD, MainWindow): """GUI-specific functions to add a Qt GUI to the DVD class: changeState() - start/stop the ripping process int_startScanning() - notify user that the DVD is being scanned int_noTracks() - notify user that no tracks were found int_dispDVD() - display information about the DVD int_dispTrack() - display information about scanned track int_finishScanning() - notify user that scanning has finished int_startRipping() - notify user that ripping has started int_newTrack() - notify that ripping has begun on a new track int_newPass() - notify that new ripping pass has begun int_updateProgress() - update any ripping progress display being used int_finishRipping() - notify user that ripping has finished""" def __init__(self, app, parent=None): self.app = app MainWindow.__init__(self, parent) self.setIcon(QPixmap(config.icon)) # set application icon... self.DVD_DEVICE = "/dev/dvd" self.cwd = os.getcwd() self.alangs = [] self.slangs = [] self.tracks = [] self.dio = {0 : 'None', 1: 'dint', 2: 'il', 3: 'lavcdeint', 4: 'pp=lb'} self.aro = {0: 'Default', 1: '4:3', 2: '16:9', 3: '2.35:1'} self.configfile = os.path.join(os.path.expanduser("~"),".quickriprc") (self.config, self.parser) = self.loadConfig() self.outputDir.setText(self.config['outputdir']) self.outdir = self.config['outputdir'] def int_configError(self, bin): self.errormsg = "QuickRip was unable to find " + bin + " on your system.\nCheck it is installed then retry" QMessageBox.critical(self, "QuickRip Error", self.errormsg, "OK") sys.exit(2) def int_startScanning(self): print "* Scanning DVD..." self.b_ScanDVD.setText("Scanning...") self.dvdTracks.clear() def int_noTracks(self): QMessageBox.warning(self, "QuickRip Error", "QuickRip was unable to find any " "DVD tracks.\n\nCheck:\n* Mplayer and Transcode are " "installed\n* The program paths are correct in Settings\n" "* Mplayer can play DVDs\n* You have a DVD " "in your drive", "OK") self.b_ScanDVD.setText("Scan DVD") def int_dispDVD(self): #print "Found %s titles" % (self.numtitles) #print "Found audio languages %s" % (self.alangs) #print "Found subtitle languages %s" % (self.slangs) print "Found %s titles\nFound audio languages %s\nFound subtitle languages %s\n" % \ (self.numtitles, self.alangs, self.slangs) # Add languages to drop-down menus for lang in self.alangs: self.aLang.insertItem(lang, -1) for lang in self.slangs: self.subTitles.insertItem(lang, -1) def int_dispTrack(self, track): self.track = track print "Track %2s: %2s" % (self.track['id'], self.track['timelabel']) item = QListViewItem(self.dvdTracks,None) item.setText(0, self.track['name']) item.setText(1, str(self.track['timelabel'])) item.info = self.track for i in range(int(self.track['numchapters']) + 1): if i > 0: if i < 10: i = "0" + str(i) chap_label = "Chapter %s" % (i) subitem = QListViewItem(item,None) subitem.setText(0, self.tr(chap_label)) self.app.processEvents() def int_finishScanning(self): print "* Finished scanning" self.b_ScanDVD.setText("Scan DVD") def int_startRipping(self): print "* Starting ripping" def int_newTrack(self, name, number, total, vbr): print "*\tRipping track '%s' (%s of %s) at %skbps" % (name, number, total, vbr) if self.config['passes'] is 1: self.Dialogue.pm_audioPass.setProgress(-1) elif self.config['passes'] is 2: self.Dialogue.pm_audioPass.setProgress(-1) self.Dialogue.pm_videoPass1.setProgress(-1) elif not self.config['passes'] or self.config['passes'] is 3: self.Dialogue.pm_audioPass.setProgress(-1) self.Dialogue.pm_videoPass1.setProgress(-1) self.Dialogue.pm_videoPass2.setProgress(-1) self.Dialogue.rippingXofY.setText("".join(["Ripping ", str(name), " (", str(number), " of ", str(total), ")"])) def int_newPass(self, passtype): self.passtype = passtype if self.passtype is "video1": self.Dialogue.pm_audioPass.setProgress(100) elif self.passtype is "video2": self.Dialogue.pm_videoPass1.setProgress(100) def int_updateProgress(self, perc, trem, tpass): self.percentage = perc self.trem = trem self.tpass = tpass eta = "".join(["ETA: ", str(trem), " (approximately)"]) self.Dialogue.l_ETA.setText(eta) if self.tpass is "all": self.Dialogue.pm_audioPass.setProgress(int(perc)) elif self.tpass is "audio": self.Dialogue.pm_audioPass.setProgress(int(perc)) elif self.tpass is "video1": self.Dialogue.pm_videoPass1.setProgress(int(perc)) elif self.tpass is "video2": self.Dialogue.pm_videoPass2.setProgress(int(perc)) self.app.processEvents() def int_finishRipping(self): if self.config['passes'] is 1: self.Dialogue.pm_audioPass.setProgress(100) elif self.config['passes'] is 2: self.Dialogue.pm_videoPass1.setProgress(100) elif not self.config['passes'] or self.config['passes'] is 3: self.Dialogue.pm_videoPass2.setProgress(100) print "* Ripping finished" self.Dialogue.rippingXofY.setText("Waiting to start...") os.popen("rm divx2pass.log 2>/dev/null") os.popen("rm " + self.outdir + "frameno.avi 2>/dev/null") self.Dialogue.b_changeState.setText("Start") self.Dialogue.b_closeProgressDialogue.setEnabled(1) self.Dialogue.l_ETA.setText("ETA: N/A") self.state = "stopped" os.chdir(self.cwd) def selectTrack(self, const, qpoint, col): """Select tracks to rip by setting column 2 to 'yes'""" # Check the mouse isn't clicking in blank space self.track = self.dvdTracks.selectedItem() try: checker = self.track.text(0) del checker except: return # Check if the user has clicked on a title or a chapter chap = re.compile('Chapter.*') if not chap.search(str(self.track.text(0))): # Stop short of tagging for ripping unless "Rip" column is selected if col is not 2: self.updateTrackDisplay(self.track) return if self.track.info['rip'] is "yes": self.track.setPixmap(2, self.image_blank) self.updateTrackRip(self.track, mode="remove") else: self.track.setPixmap(2, self.image_tick) self.updateTrackRip(self.track, mode="add") self.checkEnableRip() def updateTrackDisplay(self, track): self.track = track self.track.info['name'] = self.track.text(0) if abs(int(str(self.fileSize.cleanText())) - self.track.info['size']) > 1: self.fileSize.setValue(self.track.info['size']) if abs(self.audioBitRate.currentItem() - self.track.info['abr_id']) > 1: self.audioBitRate.setCurrentItem(self.track.info['abr_id']) self.track.info['abr'] = self.audioBitRate.currentText() if abs(int(str(self.videoBitRate.cleanText())) - self.track.info['vbr']) > 1: self.videoBitRate.setValue(self.track.info['vbr']) self.videoBitRateSlider.setValue(self.track.info['vbr']) def updateTrackRip(self, track, mode): """Update track's rip attribute""" if not len(self.tracks): return # Add/remove "rip" status to/from track self.mode = mode if self.mode is "remove": self.track.info['rip'] = "no" elif self.mode is "add": self.track.info['rip'] = "yes" self.updateTrackDisplay(self.track) def newFileSize(self, filesize): self.track = self.dvdTracks.selectedItem() self.filesize = int(str(self.fileSize.cleanText())) self.track.info['size'] = int(self.filesize) self.track.info['vbr'] = self.calcRate(self.track.info['time'], self.track.info['abr'], self.track.info['size']) #print "new file size, changing video bitrate to %s (size: %s, length %s, abr %s)" % (self.track.info['vbr'], self.track.info['size'], self.track.info['time'], self.track.info['abr']) self.updateTrackDisplay(self.track) def newBitrate(self, bitrate): self.track = self.dvdTracks.selectedItem() self.bitrate = int(str(self.videoBitRate.cleanText())) self.track.info['vbr'] = self.bitrate self.track.info['size'] = self.calcFileSize(self.track.info['time'], self.track.info['abr'], self.track.info['vbr']) #print "new bitrate, changing file size to %s (vbr: %s, length %s, abr %s)" % (self.track.info['size'],self.track.info['vbr'], self.track.info['time'], self.track.info['abr']) self.updateTrackDisplay(self.track) def newAudioBitrate(self, bitrate): self.track = self.dvdTracks.selectedItem() self.audiobitrate = int(str(self.audioBitRate.currentText())) print self.audiobitrate self.track.info['abr'] = self.audiobitrate self.track.info['vbr'] = self.calcRate(self.track.info['time'], self.track.info['abr'], self.track.info['size']) self.updateTrackDisplay(self.track) def checkEnableRip(self): r = str(self.videoBitRate.cleanText()) o = str(self.outputDir.text()) t = 0 for track in self.tracks: if track['rip'] is "yes": t = 1 if len(r) > 0 and len(o) > 0 and t is 1: self.b_RipDVD.setEnabled(1) else: self.b_RipDVD.setEnabled(0) def renameTrack(self, item): """Set ViewListItem to be renamed""" self.item = item self.item.setRenameEnabled(0, 1) self.item.startRename(0) def browseHD(self): """Launch file dialogue and set output directory""" directory = QFileDialog.getExistingDirectory(self.config['outputdir'], \ self, \ "get existing directory", \ "Choose a directory", \ 1 ) self.outputDir.setText(str(directory)) self.outdir = str(directory) self.checkEnableRip() def openRipDialogue(self): try: os.chdir(config.qr_dir) except OSError, msg: print "\n***Unable to change to directory", qr_dir, "\n(", msg, ")\n" #import output #print output.bold("DEVELOPER: UNCOMMENT THE CHDIR CODE! (LINE 282, GUI.PY)") self.state = "stopped" self.Dialogue = dialogueProgress(self) self.Dialogue.connect(self.Dialogue.b_changeState,SIGNAL("clicked()"),self.changeState) self.Dialogue.b_changeState.setText("Start") self.Dialogue.b_closeProgressDialogue.setEnabled(1) self.Dialogue.rippingXofY.setText("Waiting to start...") # Add in progress bars appropriate to number of passes l_audiopass = QHBoxLayout(None,0,6,"l_audiopass") self.Dialogue.textLabel3 = QLabel(self.Dialogue.groupBox3,"textlabel3") l_audiopass.addWidget(self.Dialogue.textLabel3) self.Dialogue.pm_audioPass = QProgressBar(self.Dialogue.groupBox3,"pm_audioPass") self.Dialogue.pm_audioPass.setMinimumSize(QSize(400,0)) l_audiopass.addWidget(self.Dialogue.pm_audioPass) self.Dialogue.groupBox3Layout.addLayout(l_audiopass,2,0) self.Dialogue.textLabel3.setText(self.tr("Progress:")) if self.config['passes'] is 2 or self.config['passes'] is 3: l_videopass1 = QHBoxLayout(None,0,6,"l_videopass1") self.Dialogue.textLabel4 = QLabel(self.Dialogue.groupBox3,"textlabel4") l_videopass1.addWidget(self.Dialogue.textLabel4) self.Dialogue.pm_videoPass1 = QProgressBar(self.Dialogue.groupBox3,"pm_videoPass1") self.Dialogue.pm_videoPass1.setMinimumSize(QSize(400,0)) l_videopass1.addWidget(self.Dialogue.pm_videoPass1) self.Dialogue.groupBox3Layout.addLayout(l_videopass1,3,0) self.Dialogue.textLabel3.setText(self.tr("Audio pass:")) self.Dialogue.textLabel4.setText(self.tr("Video pass:")) if self.config['passes'] is 3: l_videopass2 = QHBoxLayout(None,0,6,"l_videopass1") self.Dialogue.textLabel5 = QLabel(self.Dialogue.groupBox3,"textlabel5") l_videopass2.addWidget(self.Dialogue.textLabel5) self.Dialogue.pm_videoPass2 = QProgressBar(self.Dialogue.groupBox3,"pm_videoPass2") self.Dialogue.pm_videoPass2.setMinimumSize(QSize(400,0)) l_videopass2.addWidget(self.Dialogue.pm_videoPass2) self.Dialogue.groupBox3Layout.addLayout(l_videopass2,4,0) self.Dialogue.textLabel3.setText(self.tr("Audio pass:")) self.Dialogue.textLabel4.setText(self.tr("Video pass 1:")) self.Dialogue.textLabel5.setText(self.tr("Video pass 2:")) # if self.config['passes'] is 1: # from guiprogressdialogue_1pass import dialogProgress # elif self.config['passes'] is 2: # from guiprogressdialogue_2pass import dialogProgress # elif not self.config['passes'] or self.config['passes'] is 3: # from guiprogressdialogue_3pass import dialogProgress self.Dialogue.exec_loop() def changeState(self): """Switch dialogue between stopped and ripping, changing buttons and starting/stopping ripping process""" if self.state is "stopped": self.Dialogue.b_changeState.setText("Stop") self.Dialogue.b_closeProgressDialogue.setEnabled(0) os.chdir(self.outdir) self.volumead = str(self.volume.currentText()) self.aLanguage = str(self.aLang.currentText()) self.sLanguage = str(self.subTitles.currentText()) self.ripDVD() elif self.state is "ripping": print "* Ripping aborted" self.Dialogue.rippingXofY.setText("Waiting to start...") try: pid = self.pipe.pid os.kill(pid, 9) os.waitpid(pid, os.WNOHANG) except: pass os.popen("rm divx2pass.log 2>/dev/null") os.popen("rm " + self.outdir + "frameno.avi 2>/dev/null") self.Dialogue.b_changeState.setText("Start") self.Dialogue.b_closeProgressDialogue.setEnabled(1) if self.config['passes'] is 1: self.Dialogue.pm_audioPass.setProgress(-1) elif self.config['passes'] is 2: self.Dialogue.pm_audioPass.setProgress(-1) self.Dialogue.pm_videoPass1.setProgress(-1) #elif self.config['passes'] == 0 or self.config['passes'] == 3: elif not self.config['passes'] or self.config['passes'] is 3: self.Dialogue.pm_audioPass.setProgress(-1) self.Dialogue.pm_videoPass1.setProgress(-1) self.Dialogue.pm_videoPass2.setProgress(-1) self.state = "stopped" os.chdir(self.cwd) def openSettingsDialogue(self): """Open the settings dialogue box, connecting slots to functions""" self.Dialogue = dialogSettings(self) # Set-up defauls from config file self.Dialogue.mplayer.setText(self.config['mplayer']) self.Dialogue.mencoder.setText(self.config['mencoder']) self.Dialogue.tcprobe.setText(self.config['tcprobe']) self.Dialogue.dvdDevice.setText(self.config['dvd_device']) self.Dialogue.outputDir.setText(self.config['outputdir']) self.Dialogue.deInterlacing.setCurrentItem(int(self.config['deinterlacing'])) self.Dialogue.aspectRatio.setCurrentItem(int(self.config['aspectratio'])) self.Dialogue.encoderPasses.setCurrentItem(int(self.config['passes'])) self.Dialogue.videoCodec.setCurrentItem(int(self.config['videocodec'])) if self.config['pdamode'] == 1: self.Dialogue.c_pdamode.setChecked(1) # Connect functions self.connect(self.Dialogue.b_browseMPlayer,SIGNAL("clicked()"),self.browseMPlayer) self.connect(self.Dialogue.b_browseMencoder,SIGNAL("clicked()"),self.browseMencoder) self.connect(self.Dialogue.b_browseTcprobe,SIGNAL("clicked()"),self.browseTcprobe) self.connect(self.Dialogue.b_browseDVD,SIGNAL("clicked()"),self.browseDVD) self.connect(self.Dialogue.b_selectOutputDir,SIGNAL("clicked()"),self.selectOutDir) self.connect(self.Dialogue.b_OK,SIGNAL("clicked()"),self.changeSettings) self.connect(self.Dialogue.b_Save,SIGNAL("clicked()"),self.saveSettings) self.Dialogue.exec_loop() def browseMPlayer(self): """Launch file dialogue and set path to MPlayer""" self.path = re.compile('(/.*)/.*').search(self.config['mplayer']).group(1) mplayer = QFileDialog.getOpenFileName( self.path, \ "*", \ self, \ "open file dialog", \ "Choose path to MPlayer") self.Dialogue.mplayer.setText(str(mplayer)) def browseMencoder(self): """Launch file dialogue and set path to Mencoder""" self.path = re.compile('(/.*)/.*').search(self.config['mencoder']).group(1) mencoder = QFileDialog.getOpenFileName( self.path, \ "*", \ self, \ "open file dialog", \ "Choose path to Mencoder") self.Dialogue.mencoder.setText(str(mencoder)) def browseTcprobe(self): """Launch file dialogue and set path to Tcprobe""" self.path = re.compile('(/.*)/.*').search(self.config['tcprobe']).group(1) tcprobe = QFileDialog.getOpenFileName( self.path, \ "*", \ self, \ "open file dialog", \ "Choose path to Tcprobe") self.Dialogue.tcprobe.setText(str(tcprobe)) def browseDVD(self): """Launch file dialogue and set path to dvd device""" try: self.path = re.compile('(/.*)/.*').search(self.config['dvd_device']).group(1) except: self.path = os.path.join("/", "dev", "dvd") dvd_device = QFileDialog.getOpenFileName( self.path, \ "*", \ self, \ "open file dialog", \ "Choose path to DVD Device") self.Dialogue.dvdDevice.setText(str(dvd_device)) def selectOutDir(self): """Launch file dialogue and set output directory""" directory = QFileDialog.getExistingDirectory(self.config['outputdir'], \ self, \ "get existing directory", \ "Choose a directory", \ 1 ) self.Dialogue.outputDir.setText(str(directory)) def changeSettings(self): self.config['mplayer'] = self.Dialogue.mplayer.text() self.config['mencoder'] = self.Dialogue.mencoder.text() self.config['tcprobe'] = self.Dialogue.tcprobe.text() self.config['dvd_device'] = self.Dialogue.dvdDevice.text() self.config['outputdir'] = self.Dialogue.outputDir.text() self.config['deinterlacing'] = self.Dialogue.deInterlacing.currentItem() self.config['aspectratio'] = self.Dialogue.aspectRatio.currentItem() self.config['passes'] = self.Dialogue.encoderPasses.currentItem() self.config['videocodec'] = self.Dialogue.videoCodec.currentItem() if self.Dialogue.c_pdamode.isChecked(): self.config['pdamode'] = 1 else: self.config['pdamode'] = 0 self.Dialogue.accept() def saveSettings(self): print "* Saving new settings to ~/.quickriprc" self.config['mplayer'] = self.Dialogue.mplayer.text() self.config['mencoder'] = self.Dialogue.mencoder.text() self.config['tcprobe'] = self.Dialogue.tcprobe.text() self.config['dvd_device'] = self.Dialogue.dvdDevice.text() self.config['outputdir'] = self.Dialogue.outputDir.text() self.config['deinterlacing'] = self.Dialogue.deInterlacing.currentItem() self.config['aspectratio'] = self.Dialogue.aspectRatio.currentItem() self.config['passes'] = self.Dialogue.encoderPasses.currentItem() self.config['videocodec'] = self.Dialogue.videoCodec.currentItem() if self.Dialogue.c_pdamode.isChecked(): self.config['pdamode'] = 1 else: self.config['pdamode'] = 0 self.parser.set('paths', 'mplayer', self.config['mplayer']) self.parser.set('paths', 'mencoder', self.config['mencoder']) self.parser.set('paths', 'tcprobe', self.config['tcprobe']) self.parser.set('paths', 'dvd_device', self.config['dvd_device']) self.parser.set('paths', 'outputdir', self.config['outputdir']) self.parser.set('mencoder', 'deinterlacing', self.config['deinterlacing']) self.parser.set('mencoder', 'aspectratio', self.config['aspectratio']) self.parser.set('mencoder', 'passes', self.config['passes']) self.parser.set('mencoder', 'pdamode', self.config['pdamode']) self.parser.set('mencoder', 'videocodec', self.config['videocodec']) self.parser.write(open(self.configfile, 'w')) def main(): print "%s v%s, %s\n" % (__app__, __version__, __copyright__) app = QApplication(sys.argv) QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) win = GUI(app) app.setMainWidget(win) win.show() app.exec_loop() --- NEW FILE: qtmain.py --- # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'guimain.ui' # # Created: jeu jui 31 14:08:59 2003 # by: The PyQt User Interface Compiler (pyuic) 3.6 # # WARNING! All changes made in this file will be lost! from qt import * image0_data = [ "323 100 1077 2", ".# c None", ".r c #000000", "dm c #000008", ".E c #000400", "fV c #000808", [...1626 lines suppressed...] def renameTrack(self): print "MainWindow.renameTrack(): Not implemented yet" def openSettingsDialogue(self): print "MainWindow.openSettingsDialogue(): Not implemented yet" def browseHD(self): print "MainWindow.browseHD(): Not implemented yet" def newBitrate(self): print "MainWindow.newBitrate(): Not implemented yet" def newFileSize(self): print "MainWindow.newFileSize(): Not implemented yet" def newAudioBitrate(self): print "MainWindow.newAudioBitrate(): Not implemented yet" def openRipDialogue(self): print "MainWindow.openRipDialogue(): Not implemented yet" --- NEW FILE: qtprogressdialogue.py --- # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui/guiprogressdialogue.ui' # # Created: Wed Jul 16 16:58:50 2003 # by: The PyQt User Interface Compiler (pyuic) 3.6 # # WARNING! All changes made in this file will be lost! from qt import * image0_data = [ "16 16 39 1", ". c None", "# c #000000", "B c #080c08", "w c #101410", "D c #181810", "a c #181c18", "s c #202018", "r c #292820", "K c #313029", "c c #393c31", "G c #414439", "b c #4a4841", "p c #52504a", "y c #6a695a", "I c #6a6962", "q c #737562", "f c #7b756a", "J c #7b796a", "z c #9c9583", "l c #a4a194", "t c #aca594", "F c #acaa94", "C c #b4b2a4", "A c #bdbaa4", "v c #c5beac", "i c #cdcab4", "h c #d5ceb4", "j c #d5cebd", "n c #d5d2bd", "u c #ded6bd", "H c #ded6c5", "o c #dedac5", "k c #e6dec5", "e c #e6decd", "E c #e6e2cd", "d c #eee6cd", "g c #eeead5", "m c #fff6de", "x c #ffffe6", "................", ".......#abc##...", ".......ddeeef##.", "...##..ghihjkl#.", "..#fm..gnoknjep#", ".#qed...drstunv#", "#wejox...###khda", "#yohop#....#ohdr", "#zujA#....#rkjeB", "#lujC#....#heuz#", "#qohor##x...gea#", "#DEjnoFCem..xG#.", ".#fehhjhjm..##..", "..#fdkHodz......", "...#DIzJK##.....", "....#####......." ] class dialogueProgress(QDialog): def __init__(self,parent = None,name = None,modal = 0,fl = 0): QDialog.__init__(self,parent,name,modal,fl) self.image0 = QPixmap(image0_data) if not name: self.setName("dialogueProgress") self.setIcon(self.image0) dialogueProgressLayout = QGridLayout(self,1,1,11,6,"dialogueProgressLayout") self.groupBox3 = QGroupBox(self,"groupBox3") self.groupBox3.setColumnLayout(0,Qt.Vertical) self.groupBox3.layout().setSpacing(6) self.groupBox3.layout().setMargin(11) self.groupBox3Layout = QGridLayout(self.groupBox3.layout()) self.groupBox3Layout.setAlignment(Qt.AlignTop) self.rippingXofY = QLabel(self.groupBox3,"rippingXofY") self.rippingXofY.setSizePolicy(QSizePolicy(7,0,0,0,self.rippingXofY.sizePolicy().hasHeightForWidth())) self.groupBox3Layout.addWidget(self.rippingXofY,0,0) self.l_ETA = QLabel(self.groupBox3,"l_ETA") self.groupBox3Layout.addWidget(self.l_ETA,1,0) spacer = QSpacerItem(21,20,QSizePolicy.Minimum,QSizePolicy.Expanding) self.groupBox3Layout.addItem(spacer,4,0) layout8 = QHBoxLayout(None,0,6,"layout8") spacer_2 = QSpacerItem(31,31,QSizePolicy.Expanding,QSizePolicy.Minimum) layout8.addItem(spacer_2) self.b_changeState = QPushButton(self.groupBox3,"b_changeState") self.b_changeState.setSizePolicy(QSizePolicy(0,0,0,0,self.b_changeState.sizePolicy().hasHeightForWidth())) layout8.addWidget(self.b_changeState) spacer_3 = QSpacerItem(31,31,QSizePolicy.Expanding,QSizePolicy.Minimum) layout8.addItem(spacer_3) self.b_closeProgressDialogue = QPushButton(self.groupBox3,"b_closeProgressDialogue") self.b_closeProgressDialogue.setEnabled(0) self.b_closeProgressDialogue.setSizePolicy(QSizePolicy(0,0,0,0,self.b_closeProgressDialogue.sizePolicy().hasHeightForWidth())) layout8.addWidget(self.b_closeProgressDialogue) spacer_4 = QSpacerItem(31,31,QSizePolicy.Expanding,QSizePolicy.Minimum) layout8.addItem(spacer_4) self.groupBox3Layout.addLayout(layout8,5,0) dialogueProgressLayout.addWidget(self.groupBox3,0,0) self.languageChange() self.resize(QSize(567,201).expandedTo(self.minimumSizeHint())) # self.clearWState(Qt.WState_Polished) self.connect(self.b_closeProgressDialogue,SIGNAL("clicked()"),self,SLOT("accept()")) def languageChange(self): self.setCaption(self.tr("Ripping Progress")) self.groupBox3.setTitle(self.tr("Ripping Progress")) self.rippingXofY.setText(self.tr("Ripping Track x of y")) self.l_ETA.setText(self.tr("ETA: N/A")) self.b_changeState.setText(self.tr("Start")) QToolTip.add(self.b_changeState,self.tr("Stop the ripping process")) self.b_closeProgressDialogue.setText(self.tr("Close")) QToolTip.add(self.b_closeProgressDialogue,self.tr("Close window when finished")) --- NEW FILE: qtsettings.py --- # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui/guisettings.ui' # # Created: Thu Jul 24 12:57:03 2003 # by: The PyQt User Interface Compiler (pyuic) 3.6 # # WARNING! All changes made in this file will be lost! from qt import * image0_data = [ "16 16 59 1", ". c None", "# c #000000", "B c #000400", "O c #080c08", "C c #181410", "V c #181818", "E c #181c18", "a c #201c18", "y c #202018", "U c #202020", "L c #292820", "x c #292829", "I c #312c29", "4 c #393431", "c c #393c31", "Y c #4a4441", "b c #524841", "H c #5a554a", "u c #5a5552", "1 c #6a6962", "F c #736d62", "v c #737562", "o c #7b756a", "g c #7b796a", "Z c #7b7973", "3 c #837d73", "S c #9c9583", "2 c #a4998b", "0 c #a49d94", "J c #a4a194", "P c #aca194", "n c #aca594", "z c #acaa9c", "R c #bdb2a4", "W c #bdb6a4", "K c #c5baac", "A c #c5beac", "i c #cdcab4", "k c #d5cab4", "j c #d5cebd", "D c #d5d2bd", "l c #ded2bd", "t c #ded2c5", "Q c #ded6bd", "r c #ded6c5", "G c #dedac5", "m c #e6dac5", "s c #e6decd", "e c #e6e2cd", "M c #eedecd", "N c #eee2cd", "f c #eee2d5", "w c #eee6cd", "d c #eee6d5", "q c #f6ead5", "h c #f6eed5", "X c #fff6de", "p c #fffae6", "T c #ffffee", "................", ".......#abc##...", ".......ddefeg##.", "...##..hijklmn#.", "..#op..qrmsrtsu#", ".#vew...wxyzrrAB", "#CfDsp...###sjqE", "#FmjGH#....#GjwI", "#JGjK#....#LMjNO", "#PQDR#....#DsGS#", "#FsjsL##T...qsU#", "#VNlDmzWeX..pY#.", ".#Zstjljth..##..", "..#gNsrmN0......", "...#a1234##.....", "....#####......." ] image1_data = [ "18 18 54 1", ". c None", "e c #000000", "d c #101800", "a c #181c18", "b c #201c20", "f c #313031", "c c #414041", "W c #414441", "T c #4a444a", "R c #525552", "V c #5a555a", "K c #5a595a", "F c #626162", "I c #626562", "J c #6a656a", "y c #6a696a", "H c #6a6d6a", "s c #6aa5a4", "q c #6aa5ac", "r c #6aaaac", "L c #736d73", "o c #737173", "m c #737573", "t c #73aaac", "n c #7b757b", "G c #7b797b", "B c #837d83", "z c #838183", "v c #8b858b", "g c #8b898b", "# c #8bee18", "Q c #949194", "Z c #acaaac", "u c #acbebd", "X c #b4b6b4", "p c #b4bebd", "Y c #bdb6bd", "U c #bdbebd", "P c #cdcacd", "O c #d5d2d5", "N c #dedede", "S c #e6dee6", "M c #e6e6e6", "E c #f6e6de", "x c #f6eade", "D c #f6eae6", "A c #ffeae6", "l c #ffeee6", "C c #ffeeee", "k c #fff2ee", "j c #fff6f6", "w c #fffaf6", "i c #fffaff", "h c #ffffff", "..#abccccccccabde.", "..fgchhijjkklcmbee", ".abccccccccabcnaee", "agchhijjkklcmbobee", "bgchpqrstulcnaoaee", "avchwwkkllxcobybee", "bzcipstqruAcoayaee", "aBcijjkCDAEcybFbee", "bGGccccccccyyaFaee", "anomooHHyyIJFbKbee", "booLcccccccFFaKaee", "aoHcMNOPcQgcKbRbee", "bHHcScTUcvvcKaVaee", "ayIcOWIXcBGcRbfeee", "bIJcPUYZcmncVaeeee", "ebabccccababaeeee.", "eeeeeeeeeeeeeeee..", ".eeeeeeeeeeeeee..." ] image2_data = [ "16 14 7 1", ". c None", "d c #000000", "c c #004000", "b c #008100", "a c #00c200", "e c #410000", "# c #c5ffc5", "...............#", "..............#a", ".............#ab", "............#abc", "...........#abcd", "..#b......#abcd.", ".#aab....#abce..", "dcbaab..#abcd...", ".dcbaab#abce....", "..ecbaaabce.....", "...dcbabcd......", "....dcbcd.......", ".....ded........", "................" ] image3_data = [ "16 16 80 2", "Qt c None", ".P c #000000", "#i c #180000", ".G c #200000", ".e c #200808", ".O c #410000", ".Y c #4a0000", ".o c #4a3c39", "#h c #520400", "#k c #5a0408", ".v c #5a484a", "#l c #940400", "#g c #ac0000", "#j c #b40000", "#n c #b40408", "#f c #b40808", ".F c #b43031", "#. c #bd0408", "#c c #bd0808", "#m c #bd0810", ".n c #bd4c52", ".5 c #c50408", ".X c #cd0c08", ".u c #d56562", ".N c #e62020", "#d c #f60000", ".d c #f6797b", ".7 c #ff0000", ".4 c #ff0400", "#e c #ff0408", "## c #ff0808", ".Z c #ff0c10", ".6 c #ff1010", ".w c #ff1818", ".8 c #ff1c20", ".Q c #ff2420", ".1 c #ff2429", ".0 c #ff2829", ".W c #ff2c31", "#a c #ff3431", ".H c #ff3439", ".V c #ff3839", ".R c #ff4041", ".M c #ff4441", ".L c #ff5052", ".E c #ff595a", ".D c #ff5d5a", ".B c #ff7173", ".t c #ff757b", ".# c #ff797b", ".s c #ff7d7b", ".C c #ff7d83", ".A c #ff8183", ".y c #ff8583", ".a c #ff858b", ".b c #ff898b", ".c c #ff8d8b", ".r c #ff8d94", ".I c #ff9194", ".q c #ff999c", "#b c #ff9d9c", ".x c #ff9da4", ".2 c #ffa1a4", ".z c #ffa5a4", ".m c #ffa5ac", ".p c #ffaeac", ".S c #ffb2b4", ".l c #ffb6b4", ".g c #ffb6bd", ".h c #ffbabd", ".k c #ffc2c5", ".j c #ffc6c5", ".i c #ffc6cd", ".K c #ffdede", ".9 c #ffdee6", ".T c #ffe6ee", ".3 c #fff2f6", ".J c #fff6ff", ".U c #fffaff", ".f c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQt.#.a.b.c.b.b.d.eQtQtQtQt", "QtQt.f.b.g.h.i.j.k.l.m.n.oQtQtQt", "QtQt.g.p.q.b.r.r.b.s.t.#.u.vQtQt", "Qt.w.x.y.t.z.A.#.B.c.C.D.E.F.GQt", "Qt.H.b.E.I.f.k.E.B.J.K.L.M.N.O.P", "Qt.Q.E.R.E.h.f.S.T.U.t.V.W.X.Y.P", "Qt.w.Q.Z.0.1.2.f.3.L.w.w.4.5.O.P", "Qt.6.w.7.7.8.9.3.f.b.7.7.7#..O.P", "Qt####.7#a.T.3.H.A.f#b##.7#c.O.P", "Qt#d#e.7.0.k.R.7.7#b.r.4.7#f.O.P", "Qt.G#g.7.7#e.7.7.7.7.7.7.5#h.P.P", "QtQt#i#j.7.7.7.7.7.7.7.5#k.P.P.P", "QtQtQt#i#l#m#f#f#f#f#n#h.P.P.PQt", "QtQtQtQt#i.Y.Y.O.O.O.O.P.P.PQtQt", "QtQtQtQtQt.P.P.P.P.P.P.P.PQtQtQt" ] class dialogSettings(QDialog): def __init__(self,parent = None,name = None,modal = 0,fl = 0): QDialog.__init__(self,parent,name,modal,fl) self.image0 = QPixmap(image0_data) self.image1 = QPixmap(image1_data) self.image2 = QPixmap(image2_data) self.image3 = QPixmap(image3_data) if not name: self.setName("dialogSettings") self.setSizePolicy(QSizePolicy(5,5,0,0,self.sizePolicy().hasHeightForWidth())) self.setIcon(self.image0) dialogSettingsLayout = QGridLayout(self,1,1,12,6,"dialogSettingsLayout") self.groupBox1 = QGroupBox(self,"groupBox1") self.groupBox1.setSizePolicy(QSizePolicy(5,1,0,0,self.groupBox1.sizePolicy().hasHeightForWidth())) self.groupBox1.setColumnLayout(0,Qt.Vertical) self.groupBox1.layout().setSpacing(6) self.groupBox1.layout().setMargin(12) groupBox1Layout = QGridLayout(self.groupBox1.layout()) groupBox1Layout.setAlignment(Qt.AlignTop) self.l_tcprobe = QLabel(self.groupBox1,"l_tcprobe") self.l_tcprobe.setSizePolicy(QSizePolicy(0,0,0,0,self.l_tcprobe.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.l_tcprobe,2,0) self.b_browseMPlayer = QPushButton(self.groupBox1,"b_browseMPlayer") groupBox1Layout.addWidget(self.b_browseMPlayer,0,2) self.l_mplayer = QLabel(self.groupBox1,"l_mplayer") self.l_mplayer.setSizePolicy(QSizePolicy(0,0,0,0,self.l_mplayer.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.l_mplayer,0,0) self.l_mencoder = QLabel(self.groupBox1,"l_mencoder") self.l_mencoder.setSizePolicy(QSizePolicy(0,0,0,0,self.l_mencoder.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.l_mencoder,1,0) self.outputDir = QLineEdit(self.groupBox1,"outputDir") groupBox1Layout.addMultiCellWidget(self.outputDir,5,5,0,1) self.b_selectOutputDir = QPushButton(self.groupBox1,"b_selectOutputDir") groupBox1Layout.addWidget(self.b_selectOutputDir,5,2) self.l_outputDir = QLabel(self.groupBox1,"l_outputDir") self.l_outputDir.setSizePolicy(QSizePolicy(5,0,0,0,self.l_outputDir.sizePolicy().hasHeightForWidth())) groupBox1Layout.addMultiCellWidget(self.l_outputDir,4,4,0,2) self.textLabel1 = QLabel(self.groupBox1,"textLabel1") groupBox1Layout.addWidget(self.textLabel1,3,0) self.mencoder = QLineEdit(self.groupBox1,"mencoder") self.mencoder.setSizePolicy(QSizePolicy(3,0,0,0,self.mencoder.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.mencoder,1,1) self.mplayer = QLineEdit(self.groupBox1,"mplayer") self.mplayer.setSizePolicy(QSizePolicy(3,0,0,0,self.mplayer.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.mplayer,0,1) self.tcprobe = QLineEdit(self.groupBox1,"tcprobe") self.tcprobe.setSizePolicy(QSizePolicy(3,0,0,0,self.tcprobe.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.tcprobe,2,1) self.dvdDevice = QLineEdit(self.groupBox1,"dvdDevice") self.dvdDevice.setSizePolicy(QSizePolicy(3,0,0,0,self.dvdDevice.sizePolicy().hasHeightForWidth())) groupBox1Layout.addWidget(self.dvdDevice,3,1) self.b_browseMencoder = QPushButton(self.groupBox1,"b_browseMencoder") groupBox1Layout.addWidget(self.b_browseMencoder,1,2) self.b_browseTcprobe = QPushButton(self.groupBox1,"b_browseTcprobe") groupBox1Layout.addWidget(self.b_browseTcprobe,2,2) self.b_browseDVD = QPushButton(self.groupBox1,"b_browseDVD") groupBox1Layout.addWidget(self.b_browseDVD,3,2) dialogSettingsLayout.addWidget(self.groupBox1,0,0) self.groupBox2 = QGroupBox(self,"groupBox2") self.groupBox2.setSizePolicy(QSizePolicy(5,1,0,0,self.groupBox2.sizePolicy().hasHeightForWidth())) self.groupBox2.setColumnLayout(0,Qt.Vertical) self.groupBox2.layout().setSpacing(6) self.groupBox2.layout().setMargin(12) groupBox2Layout = QGridLayout(self.groupBox2.layout()) groupBox2Layout.setAlignment(Qt.AlignTop) self.l_aspectRatio = QLabel(self.groupBox2,"l_aspectRatio") self.l_aspectRatio.setSizePolicy(QSizePolicy(5,0,0,0,self.l_aspectRatio.sizePolicy().hasHeightForWidth())) groupBox2Layout.addWidget(self.l_aspectRatio,0,2) self.l_deinterlacing = QLabel(self.groupBox2,"l_deinterlacing") self.l_deinterlacing.setSizePolicy(QSizePolicy(5,0,0,0,self.l_deinterlacing.sizePolicy().hasHeightForWidth())) groupBox2Layout.addWidget(self.l_deinterlacing,0,0) self.deInterlacing = QComboBox(0,self.groupBox2,"deInterlacing") groupBox2Layout.addWidget(self.deInterlacing,0,1) self.l_Passes = QLabel(self.groupBox2,"l_Passes") self.l_Passes.setSizePolicy(QSizePolicy(1,0,0,0,self.l_Passes.sizePolicy().hasHeightForWidth())) groupBox2Layout.addWidget(self.l_Passes,1,0) self.c_pdamode = QCheckBox(self.groupBox2,"c_pdamode") groupBox2Layout.addWidget(self.c_pdamode,2,0) self.encoderPasses = QComboBox(0,self.groupBox2,"encoderPasses") self.encoderPasses.setSizePolicy(QSizePolicy(1,0,0,0,self.encoderPasses.sizePolicy().hasHeightForWidth())) groupBox2Layout.addWidget(self.encoderPasses,1,1) self.textLabel1_2 = QLabel(self.groupBox2,"textLabel1_2") groupBox2Layout.addWidget(self.textLabel1_2,1,2) self.aspectRatio = QComboBox(0,self.groupBox2,"aspectRatio") groupBox2Layout.addWidget(self.aspectRatio,0,3) self.videoCodec = QComboBox(0,self.groupBox2,"videoCodec") groupBox2Layout.addWidget(self.videoCodec,1,3) dialogSettingsLayout.addWidget(self.groupBox2,1,0) layout2 = QHBoxLayout(None,0,6,"layout2") self.b_Save = QPushButton(self,"b_Save") self.b_Save.setIconSet(QIconSet(self.image1)) layout2.addWidget(self.b_Save) spacer = QSpacerItem(170,20,QSizePolicy.Expanding,QSizePolicy.Minimum) layout2.addItem(spacer) self.b_OK = QPushButton(self,"b_OK") self.b_OK.setIconSet(QIconSet(self.image2)) layout2.addWidget(self.b_OK) self.b_Cancel = QPushButton(self,"b_Cancel") self.b_Cancel.setIconSet(QIconSet(self.image3)) layout2.addWidget(self.b_Cancel) dialogSettingsLayout.addLayout(layout2,2,0) self.languageChange() self.resize(QSize(519,436).expandedTo(self.minimumSizeHint())) # self.clearWState(Qt.WState_Polished) self.connect(self.b_Cancel,SIGNAL("clicked()"),self,SLOT("accept()")) self.l_tcprobe.setBuddy(self.tcprobe) self.l_mplayer.setBuddy(self.mplayer) self.l_mencoder.setBuddy(self.mencoder) self.l_outputDir.setBuddy(self.outputDir) self.l_aspectRatio.setBuddy(self.aspectRatio) self.l_deinterlacing.setBuddy(self.deInterlacing) self.l_Passes.setBuddy(self.encoderPasses) def languageChange(self): self.setCaption(self.tr("Configuration - QuickRip")) self.groupBox1.setTitle(self.tr("&Paths")) self.l_tcprobe.setText(self.tr("&Tcprobe:")) self.b_browseMPlayer.setText(self.tr("&Browse")) self.b_browseMPlayer.setAccel(self.tr("Alt+B")) self.l_mplayer.setText(self.tr("&MPlayer:")) self.l_mencoder.setText(self.tr("Mencode&r:")) QToolTip.add(self.outputDir,self.tr("Directory where QuickRip saves files")) QWhatsThis.add(self.outputDir,self.tr("The default directory where\n" "QuickRip should save ripped\n" "DVD files")) self.b_selectOutputDir.setText(self.tr("Brow&se")) self.b_selectOutputDir.setAccel(self.tr("Alt+S")) self.l_outputDir.setText(self.tr("&Default output directory:")) self.textLabel1.setText(self.tr("DVD device:")) self.mencoder.setText(QString.null) QToolTip.add(self.mencoder,self.tr("Path to mencoder binary")) QWhatsThis.add(self.mencoder,self.tr("The path to <tt>mencoder</tt> binary\n" "(e.g. <tt>/usr/bin/mencoder</tt>)")) self.mplayer.setText(QString.null) QToolTip.add(self.mplayer,self.tr("Path to mplayer binary")) QWhatsThis.add(self.mplayer,self.tr("The path to <tt>mplayer</tt> binary\n" "(e.g. <tt>/usr/bin/mplayer</tt>)")) self.tcprobe.setText(QString.null) QToolTip.add(self.tcprobe,self.tr("Path to tcprobe binary")) QWhatsThis.add(self.tcprobe,self.tr("The path to the <tt>tcprobe</tt> binary\n" "(e.g. <tt>/usr/bin/tcprobe</tt>)")) self.dvdDevice.setText(QString.null) QToolTip.add(self.dvdDevice,self.tr("Path to tcprobe binary")) QWhatsThis.add(self.dvdDevice,self.tr("The path to the <tt>tcprobe</tt> binary\n" "(e.g. <tt>/usr/bin/tcprobe</tt>)")) self.b_browseMencoder.setText(self.tr("B&rowse")) self.b_browseMencoder.setAccel(self.tr("Alt+R")) self.b_browseTcprobe.setText(self.tr("Bro&wse")) self.b_browseTcprobe.setAccel(self.tr("Alt+W")) self.b_browseDVD.setText(self.tr("Bro&wse")) self.b_browseDVD.setAccel(self.tr("Alt+W")) self.groupBox2.setTitle(self.tr("Me&ncoder Options")) self.l_aspectRatio.setText(self.tr("As&pect ratio:")) self.l_deinterlacing.setText(self.tr("&De-Interlacing:")) self.deInterlacing.clear() self.deInterlacing.insertItem(self.tr("None")) self.deInterlacing.insertItem(self.tr("-vop dint")) self.deInterlacing.insertItem(self.tr("-vop il")) self.deInterlacing.insertItem(self.tr("-vop lavcdeint")) self.deInterlacing.insertItem(self.tr("-vop pp=lb")) QToolTip.add(self.deInterlacing,self.tr("De-Interlacing options. See documentation.")) QWhatsThis.add(self.deInterlacing,self.tr("De-Interlacing options. For more information on de-interlacing consult the QuickRip and Mplayer documentation.")) self.l_Passes.setText(self.tr("&Encoder passes:")) self.c_pdamode.setText(self.tr("&PDA mode")) self.c_pdamode.setAccel(self.tr("Alt+P")) self.encoderPasses.clear() self.encoderPasses.insertItem(self.tr("Default")) self.encoderPasses.insertItem(self.tr("One Pass")) self.encoderPasses.insertItem(self.tr("Two Pass")) self.encoderPasses.insertItem(self.tr("Three Pass")) self.textLabel1_2.setText(self.tr("Video codec:")) self.aspectRatio.clear() self.aspectRatio.insertItem(self.tr("Default")) self.aspectRatio.insertItem(self.tr("4:3")) self.aspectRatio.insertItem(self.tr("16:9")) self.aspectRatio.insertItem(self.tr("2.35:1")) QToolTip.add(self.aspectRatio,self.tr("Aspect ratio of video")) QWhatsThis.add(self.aspectRatio,self.tr("The aspect ratio of the video. Change if the output appears stretched. \n" "DVDs have aspect ratios printed on their cases.")) self.videoCodec.clear() self.videoCodec.insertItem(self.tr("DivX")) self.videoCodec.insertItem(self.tr("XviD")) QToolTip.add(self.videoCodec,self.tr("Aspect ratio of video")) QWhatsThis.add(self.videoCodec,self.tr("The aspect ratio of the video. Change if the output appears stretched. \n" "DVDs have aspect ratios printed on their cases.")) self.b_Save.setText(self.tr("&Save settings","g")) self.b_Save.setAccel(self.tr("Alt+S")) self.b_OK.setText(self.tr("&OK","g")) self.b_OK.setAccel(self.tr("Alt+O")) self.b_Cancel.setText(self.tr("&Cancel","g")) self.b_Cancel.setAccel(self.tr("Alt+C")) |
Update of /cvsroot/quickrip/quickrip In directory sc8-pr-cvs1:/tmp/cvs-serv26132 Modified Files: cli.py config.py quickrip.py quickriprc Added Files: base.py Removed Files: dvd.py gui.py guimain.py guiprogressdialogue.py guisettings.py Log Message: Added base.py, Removed dvd.py, Moved qt files into "qt" subdirectory, Changed config.py to fit new base.py Changed quickrip.py to handle qt subdirectory A LOT IS NOW BROKEN! CLI AND QT INTERFACES NEED WORK TO MAKE THEM WORK WITH NEW BASE CLASS, DUE TO SOME MAJOR CHANGES, AND THE REPLACEMENT OF 'TRACK' WITH 'TITLE' --- NEW FILE: base.py --- #!/usr/bin/env python """ base.py - QuickRip base code copyright: (C) 2003, Tom Chance license: GNU General Public License (GPL) (see LICENSE file) web: http://quickrip.sf.net email: tom...@gm... """ from __future__ import generators from time import sleep import sys, os, re, popen2, ConfigParser, copy import config # QuickRip global configuration. class QuickRip: """QuickRip base class, including the following methods: loadConfig - loads the user configuration file cautiousLoad - loads a config variable in an exception clause findProgram - takes a program name, returns the full path calcRate - calculates a video bitrate from length, abr and file size calcFileSize - calculates file size from length, abr and video bitrate""" def __init__(self): """Replace this with your own init, but include the one line in your own""" self.initialise() def initialise(self): """the 'actual' init function""" self.cwd = os.getcwd() self.numtitles = 0 self.alangs = [] self.slangs = [] self.titles = [] self.dio = config.dio self.aro = config.dio self.langs = config.langs self.configfile = os.path.join(os.path.expanduser("~"), ".quickriprc") self.loadConfig() def loadConfig(self): """Load user configuration file""" self.config = {} self.parser = ConfigParser.ConfigParser() if not os.path.isfile(self.configfile): self.parser.write(open(self.configfile, 'w')) self.parser.readfp(open(self.configfile, 'r')) variables = { \ 'mplayer': ['paths', self.findProgram("mplayer")], \ 'mencoder': ['paths', self.findProgram("mencoder")], \ 'tcprobe': ['paths', self.findProgram("tcprobe")], \ 'transcode': ['paths', self.findProgram("transcode")], \ 'ogmmerge': ['paths', self.findProgram("ogmmerge")], \ 'outputdir': ['paths', os.path.expanduser("~")], \ 'dvd_device': ['paths', os.path.join("/", "dev", "dvd")], \ 'deinterlacing': ['vencode', 0], \ 'aspectratio': ['vencode', 0], \ 'videocodec': ['vencode', 0], \ 'pdamode': ['vencode', 0], \ 'audiocodec': ['aencode', 0], \ 'volumead': ['aencode', 0], \ 'audiobitrate': ['aencode', 1] \ } for key in variables.keys(): self.cautiousLoad(variables[key][0], key, variables[key][1]) def cautiousLoad(self, section, var, default): """Load a configurable variable within an exception clause, in case variable is not in configuration file""" try: self.config[var] = int(self.parser.get(section, var)) except: self.config[var] = default try: self.parser.set(section, var, default) except: self.parser.add_section(section) self.parser.set(section, var, default) self.parser.write(open(self.configfile, 'w')) def findProgram(self, program): """Looks for program in path, and returns full path if found""" for path in config.paths: if os.path.isfile(os.path.join(path, program)): return os.path.join(path, program) self.int_configError(program) def calcRate(self, length, audiobr, filesize): """Calculate bitrate for video based on: - length of title (seconds) - audio bitrate (kbps) - size of resultant file (MB)""" try: self.filesize = int(filesize) self.length = int(length) self.audiobr = int(audiobr) self.rate = ((self.filesize * 8192) / self.length) - self.audiobr self.rate = self.rate * 0.98 # Correction based on addition of credits and usual error return self.rate except: return 1 def calcFileSize(self, length, audiobr, bitrate): """Calculate vilesize for video based on: - length of title (seconds) - audio bitrate (kbps) - bitrate of title (Kbps)""" try: self.length = int(length) self.audiobr = int(audiobr) self.bitrate = int(bitrate) self.filesize = ((self.bitrate + self.audiobr) * self.length) / 8192 self.filesize = self.filesize * (1 / 0.98) # Correction based on addition of credits and usual error return self.filesize except: return 1 def run(self, program, arguments, flushbuffer=0): """Runs a program; supply program name (string) and arguments (list)""" command = arguments command[:0] = [self.config[program]] self.pipe = popen2.Popen4(command) pid = self.pipe.pid while 1: try: if flushbuffer: line = self.pipe.fromchild.read(1000) else: line = self.pipe.fromchild.readline() if not line: break yield line except: # For PyGtk... weird! sleep(1) continue # Clean up process table try: self.kill_pipe() except: pass try: os.waitpid(pid, os.WNOHANG) except: pass def kill_pipe(self): """Kills current process (pipe)""" try: os.kill(self.pipe.pid, 9) os.waitpid(self.pipe.pid, os.WNOHANG) except: pass def getDVDInfo(self): """Find number of titles on DVD""" arguments = ['-vo', 'null', '-ao', 'null', '-v', 'dvd://', '-identify', '-quiet', '-nocache'] re_title = re.compile('There are (\d*) titles on this DVD') re_error = re.compile('libdvdread: Could not open device') for line in self.run('mplayer', arguments): if re_error.search(line): self.int_noTitles() if re_title.search(line): numtitles = re_title.search(line).group(1) return numtitles def getTitleInfo(self, no): """Find number of chapters, audio/subtitle languages & length for title""" arguments = ['-i', self.config['dvd_device'], '-T', str(no)] re_error = re.compile('No such file or directory') re_time = re.compile('.*title playback time: (.*):(.*):(\d*)\.\d* (\d*) sec') re_chap = re.compile('(\d*) chapter\(s\), ') re_alang = re.compile('.* ac3 (\w*) ') re_slang = re.compile('.* subtitle \d*=<(\w*)>') alangs = [] slangs = [] for line in self.run('tcprobe', arguments): if re_error.search(line): self.int_noTitles() return if re_time.search(line): hours = re_time.search(line).group(1) minutes = re_time.search(line).group(2) seconds = re_time.search(line).group(3) time = re_time.search(line).group(4) time_label = "%2s hrs %2s mins %2s secs" % (hours, minutes, seconds) if re_alang.search(line): alang = re_alang.search(line).group(1) alang_full = self.langs[alang] if alang != "xx": alangs.append([alang, alang_full]) if re_slang.search(line): slang = re_slang.search(line).group(1) slang_full = self.langs[slang] if slang != "xx": slangs.append([slang, slang_full]) if re_chap.search(line): chapters = re_chap.search(line).group(1) return chapters, alangs, slangs, time, time_label def scanDVD(self): """Scan the DVD and build up a data structure for the titles""" self.int_startScanning() # Reset values to default (in case user scans two different discs in same session) self.titles = [] self.numtitles = 0 self.numtitles = self.getDVDInfo() for i in range(int(self.numtitles) + 1): if i is not 0: print i # Get title information from disc chapters, alangs, slangs, time, time_label = self.getTitleInfo(i) # Clean up title if i < 10: title_label = "".join(["0", str(i)]) else: title_label = str(i) title = {} title['id'] = i title['name'] = title_label title['numchapters'] = int(chapters) title['time'] = int(time) title['timelabel'] = time_label title['size'] = 680 title['vbr'] = self.calcRate(int(time), 96, 680) title['rip'] = "no" title['alangs'] = alangs title['alang'] = 'en' title['slangs'] = slangs title['slang'] = '' self.titles.append(title) self.int_dispTitle(title) self.int_finishScanning() def ripDVD(self): """Rip the DVD titles based on gathered settings""" self.int_startRipping() self.state = "ripping" try: os.chdir(self.config['outputdir']) except OSError, msg: print "Unable to change to directory %s: %s" % (self.config['outputdir'], msg) # Build list of titles to rip self.torip = [] for title in self.titles: if title['rip'] == 'yes': self.torip.append(title) self.numrips = len(self.torip) # Check PDA mode (universal to all ripping methods) if int(self.config['pdamode']) is 0: resolution = "720" else: resolution = "320" i = 0 for title in self.torip: self.int_newTitle(title['name'], i, self.numrips, title['vbr']) i = i + 1 # Look for cropping sstep = int(title['time']) / 31 if not sstep: sstep = 1 arguments = ["-dvd ", str(title['id']), "-vop", "cropdetect", "-nosound", "-vo", "null", "-frames", "10", "-sstep", str(sstep)] re_crop = re.compile('.*-vop crop=(\d*:\d*:\d*:\d*).*') crop_options = {} common_crop = "" cc_hits = 0 for line in self.run('mplayer', arguments): if re_crop.search(line): crop = re_crop.search(line).group(1) try: crop_options[crop] = crop_options[crop] + 1 if crop_options[crop] > cc_hits: common_crop = crop except: crop_options[crop] = 1 title['crop'] = common_crop # Clean up output dir in case QuickRip crashed out there os.popen("".join(["rm ", self.config['outputdir'], "frameno.avi 2>/dev/null"])) if self.config['videocodec'] is 2: self.scvd(title, output, resolution) elif self.config['audiocodec'] is 1: output = os.path.join(self.config['outputdir'], "".join([str(title['name']), ".ogm"])) self.oggAudio(title) self.aviVideo(title, output, resolution, 0) else: output = os.path.join(self.config['outputdir'], "".join([str(title['name']), ".avi"])) self.mp3Audio(title) self.aviVideo(title, output, resolution, 1) def mencode(self, arguments, passtype): """Run mencoder with given arguments and report progress""" perc = 0 trem = 0 re_progress = re.compile('(\d+)\%\) .*Trem:\s*(\d+\w+)\s+') for line in self.run('mencoder', arguments, 1): if re_progress.search(line): perc = re_progress.search(line).group(1) trem = re_progress.search(line).group(2) self.int_updateProgress(perc, trem, passtype) def mp3Audio(self, title): """Rip the audio from a DVD title and encode as MP3""" self.int_newPass("mp3audio") try: os.popen("".join(["rm ", os.path.join(self.config['outputdir'], "frameno.avi")])) except: pass if not self.config['volumead']: vol = "".join([":vol=", str(self.config['volumead'])]) else: vol = "" lameopts = "".join(["cbr=", str(config.abr[self.config['audiobitrate']]), str(vol)]) arguments = ["-dvd", str(title['id']), "-alang", title['alang'], "-oac", \ "mp3lame", "-lameopts", lameopts, "-ovc", "frameno", "-o", \ os.path.join(self.config['outputdir'], "frameno.avi")] self.mencode(arguments, "mp3audio") def oggAudio(self, title): """Rip the audio from a DVD title and encode as OGG""" import output print output.bold("NOT IMPLEMENTED YET!") def aviVideo(self, title, output, resolution, merge=1): """Rip the video from a DVD title, and optionally merge with audio""" self.int_newPass("video") if self.config['videocodec']: ovc = "xvid" ovc_opts_type = "-xvidencopts" ovc_opts = "".join(["4mv:me_quality=6:mod_quant:quant_range=1-31/1-31:bitrate=", str(int(title['vbr']))]) else: ovc = "lavc" ovc_opts_type = "-lavcopts" ovc_opts = "".join(["vcodec=mpeg4:vhq:vbitrate=", str(int(title['vbr']))]) vop = "".join(["scale,crop=", title['crop']]) if int(self.config['deinterlacing']) is not 0: vop = "".join([vop, ",", self.dio[self.config['deinterlacing']]]) if merge: oac = "frameno" else: oac = "null" arguments = ["-dvd", str(title['id']), "-alang", title['alang'], "-oac", oac, \ "-ovc", ovc, ovc_opts_type, ovc_opts, "-vop", vop, "-zoom", \ "-xy", resolution, "-o", output] if int(self.config['aspectratio']) is not 0: arguments.insert(3, "-aspect") arguments.insert(4, self.aro[self.config['aspectratio']]) if title['slang']: arguments.insert(3, "-slang") arguments.insert(4, title['slang']) self.mencode(arguments, "video") def ogmerge(self, number, title, output, resolution): """Merge the OGG audio and MPEG4 video using ogmmerge""" import output print output.bold("NOT IMPLEMENTED YET!") def svcd(self, number, title, output, resolution): """Rip the title to an SVCD MPEG using transcode""" import output print output.bold("NOT IMPLEMENTED YET!") ## INHERIT THE CLASS AND SUBSTITUE THESE CLASS METHODS WITH YOUR ## OWN UI HOOKS def int_startScanning(self): pass def int_noTitles(self): pass def int_dispDVD(self): pass def int_dispTitle(self, title): pass def int_finishScanning(self): pass def int_startRipping(self): pass def int_newTitle(self, name, number, total, vbr): pass def int_newPass(self, passtype): #pass print passtype def int_updateProgress(self, perc, trem, tpass): #pass print "%s percent, %s remaining in %s" % (perc, trem, tpass) def int_finishRipping(self): pass Index: cli.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/cli.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** cli.py 1 Aug 2003 11:51:44 -0000 1.17 --- cli.py 5 Aug 2003 17:50:36 -0000 1.18 *************** *** 11,15 **** try: import sys, os, re, output ! from dvd import * except ImportError, desc: print "Unable to load module (", desc, ")" --- 11,15 ---- try: import sys, os, re, output ! from base import * except ImportError, desc: print "Unable to load module (", desc, ")" Index: config.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/config.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** config.py 30 Jul 2003 11:07:10 -0000 1.10 --- config.py 5 Aug 2003 17:50:36 -0000 1.11 *************** *** 22,23 **** --- 22,56 ---- icon = os.path.join("icons", "quickrip.xpm") qr_dir = "/usr/share/quickrip" + aro = {0: 'Default', 1: '4:3', 2: '16:9', 3: '2.35:1'} + dio = {0 : 'None', 1: 'dint', 2: 'il', 3: 'lavcdeint', 4: 'pp=lb'} + abr = {0: 64, 1: 96, 2: 128, 3: 160, 4: 190} + langs = { \ + " ": "Not Specified", "aa": "Afar", "ab": "Abkhazian", "af": "Afrikaans", "am": "Amharic", \ + "ar": "Arabic", "as": "Assamese", "ay": "Aymara", "az": "Azerbaijani", "ba": "Bashkir", \ + "be": "Byelorussian", "bg": "Bulgarian", "bh": "Bihari", "bi": "Bislama", "bn": "Bengali; Bangla", \ + "bo": "Tibetan", "br": "Breton", "ca": "Catalan", "co": "Corsican", "cs": "Czech", \ + "cy": "Welsh", "da": "Dansk", "de": "Deutsch", "dz": "Bhutani", "el": "Greek", "en": "English", \ + "eo": "Esperanto", "es": "Espanol", "et": "Estonian", "eu": "Basque", "fa": "Persian", \ + "fi": "Suomi", "fj": "Fiji", "fo": "Faroese", "fr": "Francais", "fy": "Frisian", "ga": "Gaelic", \ + "gd": "Scots Gaelic", "gl": "Galician", "gn": "Guarani", "gu": "Gujarati", "ha": "Hausa", \ + "he": "Hebrew", "hi": "Hindi", "hr": "Hrvatski", "hu": "Magyar", "hy": "Armenian", \ + "ia": "Interlingua", "id": "Indonesian", "ie": "Interlingue", "ik": "Inupiak", "in": "Indonesian", \ + "is": "Islenska", "it": "Italiano", "iu": "Inuktitut", "iw": "Hebrew", "ja": "Japanese", \ + "ji": "Yiddish", "jw": "Javanese", "ka": "Georgian", "kk": "Kazakh", "kl": "Greenlandic", \ + "km": "Cambodian", "kn": "Kannada", "ko": "Korean", "ks": "Kashmiri", "ku": "Kurdish", \ + "ky": "Kirghiz", "la": "Latin", "ln": "Lingala", "lo": "Laothian", "lt": "Lithuanian", \ + "lv": "Latvian, Lettish", "mg": "Malagasy", "mi": "Maori", "mk": "Macedonian", "ml": "Malayalam", \ + "mn": "Mongolian", "mo": "Moldavian", "mr": "Marathi", "ms": "Malay", "mt": "Maltese", \ + "my": "Burmese", "na": "Nauru", "ne": "Nepali", "nl": "Nederlands", "no": "Norsk", "oc": "Occitan", \ + "om": "Oromo", "or": "Oriya", "pa": "Punjabi", "pl": "Polish", "ps": "Pashto, Pushto", \ + "pt": "Portugues", "qu": "Quechua", "rm": "Rhaeto-Romance", "rn": "Kirundi", "ro": "Romanian" , \ + "ru": "Russian", "rw": "Kinyarwanda", "sa": "Sanskrit", "sd": "Sindhi", "sg": "Sangho", \ + "sh": "Serbo-Croatian", "si": "Sinhalese", "sk": "Slovak", "sl": "Slovenian", "sm": "Samoan", \ + "sn": "Shona" , "so": "Somali", "sq": "Albanian", "sr": "Serbian", "ss": "Siswati", \ + "st": "Sesotho", "su": "Sundanese", "sv": "Svenska", "sw": "Swahili", "ta": "Tamil", \ + "te": "Telugu", "tg": "Tajik", "th": "Thai", "ti": "Tigrinya", "tk": "Turkmen", "tl": "Tagalog", \ + "tn": "Setswana", "to": "Tonga", "tr": "Turkish", "ts": "Tsonga", "tt": "Tatar", "tw": "Twi", \ + "ug": "Uighur", "uk": "Ukrainian", "ur": "Urdu", "uz": "Uzbek", "vi": "Vietnamese", \ + "vo": "Volapuk", "wo": "Wolof", "xh": "Xhosa", "yi": "Yiddish", "yo": "Yoruba", "za": "Zhuang", \ + "zh": "Chinese", "zu": "Zulu" \ + } \ No newline at end of file Index: quickrip.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/quickrip.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** quickrip.py 31 Jul 2003 18:03:20 -0000 1.9 --- quickrip.py 5 Aug 2003 17:50:36 -0000 1.10 *************** *** 60,65 **** # Fallback to GUI mode... if 'DISPLAY' in os.environ: ! import gui ! gui.main() else: print "No $DISPLAY found. Using CLI interface" --- 60,66 ---- # Fallback to GUI mode... if 'DISPLAY' in os.environ: ! sys.path.append("qt") ! import qtgui ! qtgui.main() else: print "No $DISPLAY found. Using CLI interface" Index: quickriprc =================================================================== RCS file: /cvsroot/quickrip/quickrip/quickriprc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** quickriprc 13 Jun 2003 20:19:50 -0000 1.2 --- quickriprc 5 Aug 2003 17:50:36 -0000 1.3 *************** *** 14,22 **** # Paths to binaries tcprobe = /usr/bin/tcprobe mplayer = /usr/bin/mplayer mencoder = /usr/bin/mencoder ! [mencoder] # Aspect ratio for DVD # (0 = default, 4:3 --- 14,27 ---- # Paths to binaries tcprobe = /usr/bin/tcprobe + transcode = /usr/bin/transcode mplayer = /usr/bin/mplayer mencoder = /usr/bin/mencoder + ogmmerge = /usr/bin/ogmmerge + # Path to DVD device + dvd_device = /dev/dvd ! ! [vencode] # Aspect ratio for DVD # (0 = default, 4:3 *************** *** 34,43 **** deinterlacing = 0 ! # Number of mencoder passes ! # Can be 1, 2 or 3 ! passes = 3 #PDA mode (changes output resolution to suitable for PDAs) # 0 = off # 1 = on ! pdamode = 0 \ No newline at end of file --- 39,69 ---- deinterlacing = 0 ! # Video Codec, can be: ! # 0 - DivX ! # 1 - XviD ! # 2 - (S)VCD (MPEG-2) ! videocodec = 0 #PDA mode (changes output resolution to suitable for PDAs) # 0 = off # 1 = on ! pdamode = 0 ! ! ! [aencode] ! # Audio codec, can be: ! # 0 - MP3 ! # 1 - OGG ! audiocodec = 0 ! ! # Audio bitrate, can be: ! # 0 - 64kbps ! # 1 - 96kbps ! # 2 - 128kbps ! # 3 - 160kbps ! # 4 - 190kbps ! audiobitrate = 1 ! ! # Volume adjustment, can be: ! # 0 (none) - 10 ! volumead = 0 \ No newline at end of file --- dvd.py DELETED --- --- gui.py DELETED --- --- guimain.py DELETED --- --- guiprogressdialogue.py DELETED --- --- guisettings.py DELETED --- |
From: <te...@us...> - 2003-08-05 17:43:57
|
Update of /cvsroot/quickrip/quickrip/qt In directory sc8-pr-cvs1:/tmp/cvs-serv24989/qt Log Message: Directory /cvsroot/quickrip/quickrip/qt added to the repository |
From: <iwa...@us...> - 2003-08-05 06:31:58
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv7166/glade Added Files: gtkerrorbox.glade Log Message: Added errorbox class to help in feedback problems. Help->About works. Subtle changes elsewhere. --- NEW FILE: gtkerrorbox.glade --- <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> <glade-interface> <widget class="GtkWindow" id="window"> <property name="visible">True</property> <property name="title" translatable="yes">title</property> <property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="window_position">GTK_WIN_POS_CENTER</property> <property name="modal">True</property> <property name="default_width">100</property> <property name="default_height">78</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> <signal name="delete_event" handler="on_window_delete_event" last_modification_time="Tue, 05 Aug 2003 06:16:19 GMT"/> <child> <widget class="GtkVBox" id="vbox1"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> <widget class="GtkVBox" id="client"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> <child> <placeholder/> </child> </widget> <packing> <property name="padding">0</property> <property name="expand">True</property> <property name="fill">True</property> </packing> </child> <child> <widget class="GtkHSeparator" id="hseparator1"> <property name="visible">True</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> <child> <widget class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="homogeneous">True</property> <property name="spacing">0</property> <child> <widget class="GtkButton" id="button2"> <property name="border_width">5</property> <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="has_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <signal name="clicked" handler="on_okay_clicked" last_modification_time="Tue, 05 Aug 2003 06:16:41 GMT"/> <child> <widget class="GtkAlignment" id="alignment2"> <property name="visible">True</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> <widget class="GtkHBox" id="hbox3"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">2</property> <child> <widget class="GtkImage" id="image2"> <property name="visible">True</property> <property name="stock">gtk-ok</property> <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">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="label2"> <property name="visible">True</property> <property name="label" translatable="yes">_OK</property> <property name="use_underline">True</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> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> </widget> </child> </widget> </child> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> <property name="pack_type">GTK_PACK_END</property> </packing> </child> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> </packing> </child> </widget> </child> </widget> </glade-interface> |
From: <iwa...@us...> - 2003-08-05 06:31:58
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv7166 Modified Files: gtkmain.py gtksettings.py Added Files: gtkerrorbox.py Log Message: Added errorbox class to help in feedback problems. Help->About works. Subtle changes elsewhere. --- NEW FILE: gtkerrorbox.py --- #!/usr/bin/python #gtkerrorbox #generic error box for my needs. try: import pygtk pygtk.require("2.0") import gtk import gtk.glade from time import * except: print "Couldn't load PyGTK module! Check it's installed properly." print "If you think it is, but you still get this message, please" print "see the frequent problems page online at:" print "http://quickrip.sf.net/fp.shtml" print "" print "Press Enter for the full GTK error message" deleteme = raw_input() del deleteme import pygtk pygtk.require("2.0") import gtk import gtk.glade class GTKErrorBox: def quit(self, widget, data=None): self.window.destroy() return gtk.FALSE def __init__(self, title, message, parent=None): label = gtk.Label(message) xml = gtk.glade.XML('glade/gtkerrorbox.glade') self.window = xml.get_widget('window') self.window.set_title(title) self.box = xml.get_widget('client') self.box.pack_start(label, gtk.TRUE, gtk.TRUE) xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) xml.signal_autoconnect( {'on_okay_clicked': self.quit} ) self.window.show_all() Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** gtkmain.py 5 Aug 2003 05:27:38 -0000 1.9 --- gtkmain.py 5 Aug 2003 06:31:55 -0000 1.10 *************** *** 39,44 **** import dvd from dvd import * - import config __app__ = config.app --- 39,45 ---- import dvd from dvd import * import config + import gtkerrorbox + from gtkerrorbox import * __app__ = config.app *************** *** 69,73 **** def about(self, widget, data=None): ! print "about" def manual(self, widget, data=None): --- 70,75 ---- def about(self, widget, data=None): ! box = GTKErrorBox("About Quickrip", ! "A quick dvd ripper.\nSee the homepage at quickrip.sf.net.\nVersion " + config.version) def manual(self, widget, data=None): Index: gtksettings.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtksettings.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gtksettings.py 5 Aug 2003 05:27:38 -0000 1.7 --- gtksettings.py 5 Aug 2003 06:31:55 -0000 1.8 *************** *** 27,30 **** --- 27,33 ---- import gtk import gtk.glade + + import gtkerrorbox + from gtkerrorbox import * class GTKSettings: *************** *** 41,44 **** --- 44,48 ---- # dvd = wtvDVD.get_text() # return "false" + # box = GTKErrorBox("Error!", "Do not do!", self.window) self.changeSettings() return "true" |
From: <iwa...@us...> - 2003-08-05 05:27:41
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv30353 Modified Files: gtkmain.py gtksettings.py Log Message: Browse buttons working in gtk settings dialog. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** gtkmain.py 5 Aug 2003 01:57:27 -0000 1.8 --- gtkmain.py 5 Aug 2003 05:27:38 -0000 1.9 *************** *** 63,73 **** def configure(self, widget, data=None): self.dialogSettings.window.show_all() ! print "Configure" ! def quit(self, widget, data=None): - print "quit" gtk.main_quit() return gtk.FALSE ! def about(self, widget, data=None): print "about" --- 63,71 ---- def configure(self, widget, data=None): self.dialogSettings.window.show_all() ! def quit(self, widget, data=None): gtk.main_quit() return gtk.FALSE ! def about(self, widget, data=None): print "about" Index: gtksettings.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtksettings.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gtksettings.py 5 Aug 2003 01:57:27 -0000 1.6 --- gtksettings.py 5 Aug 2003 05:27:38 -0000 1.7 *************** *** 12,15 **** --- 12,16 ---- import gtk import gtk.glade + from time import * except: print "Couldn't load PyGTK module! Check it's installed properly." *************** *** 30,41 **** def quit(self, widget, data=None): ! print "close settigns - add some validation here" ! self.changeSettings() ! self.window.hide() return gtk.TRUE ! def validate(self): ! dvd = wtvDVD.get_text() ! def changeSettings(self): #programs --- 31,47 ---- def quit(self, widget, data=None): ! if self.validate() == "true": ! self.window.hide() ! else: ! print "Invalid Settings!" return gtk.TRUE ! def validate(self): ! print "add some settings validation here" ! # dvd = wtvDVD.get_text() ! # return "false" ! self.changeSettings() ! return "true" ! def changeSettings(self): #programs *************** *** 68,74 **** self.parent.writeSettings(self.parent.homefile) ! def page(self, widget): ! print "page" def __init__(self, parent): --- 74,102 ---- self.parent.writeSettings(self.parent.homefile) + + def accept(self, widget, data=None): + (textbox, dialog) = data + textbox.set_text(dialog.get_filename()) + dialog.destroy() + + def findGeneric(self, title, widget): + dialog = gtk.FileSelection(title) + dialog.ok_button.connect("clicked", self.accept, (widget, dialog)) + dialog.cancel_button.connect("clicked", lambda w: dialog.destroy()) + dialog.set_filename(widget.get_text()) + dialog.show() ! def findLog(self, widget, data=None): ! self.findGeneric("Log File Destination", self.wteLog) ! def findTcprobe(self, widget, data=None): ! self.findGeneric("Location of TCProbe", self.wteTcprobe) ! def findDVD(self, widget, data=None): ! self.findGeneric("Location of DVD Device", self.wteDVD) ! def findOutput(self, widget, data=None): ! self.findGeneric("Select Destination Directory", self.wteOutput) ! def findMplayer(self, widget, data=None): ! self.findGeneric("Location of MPlayer", self.wteMplayer) ! def findMencoder(self, widget, data=None): ! self.findGeneric("Location of MEncoder", self.wteMencoder) def __init__(self, parent): *************** *** 93,105 **** xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) ! xml.signal_autoconnect( {'on_dvddevice_clicked': self.quit} ) ! xml.signal_autoconnect( {'on_output_clicked': self.quit} ) ! xml.signal_autoconnect( {'on_mplayer_clicked': self.quit} ) ! xml.signal_autoconnect( {'on_mencoder_clicked': self.quit} ) ! xml.signal_autoconnect( {'on_tcprobe_clicked': self.quit} ) ! xml.signal_autoconnect( {'on_log_clicked': self.quit} ) ! # xml.signal_autoconnect( {'on_change_page': self.page} ) ! ! # self.window.show_all() def main(self): --- 121,130 ---- xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) ! xml.signal_autoconnect( {'on_dvddevice_clicked': self.findDVD} ) ! xml.signal_autoconnect( {'on_output_clicked': self.findOutput} ) ! xml.signal_autoconnect( {'on_mplayer_clicked': self.findMplayer} ) ! xml.signal_autoconnect( {'on_mencoder_clicked': self.findMencoder} ) ! xml.signal_autoconnect( {'on_tcprobe_clicked': self.findTcprobe} ) ! xml.signal_autoconnect( {'on_log_clicked': self.findLog} ) def main(self): |
From: <iwa...@us...> - 2003-08-05 01:57:31
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv2505/glade Modified Files: gtkmain.glade gtksettings.glade Log Message: Added setting saving features to the gtk version of quickrip. Load and save features are pretty modular, though I plan possibly on making a generic config file we can all agree upon and use. Index: gtkmain.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtkmain.glade,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** gtkmain.glade 4 Aug 2003 04:48:16 -0000 1.5 --- gtkmain.glade 5 Aug 2003 01:57:27 -0000 1.6 *************** *** 37,41 **** <child> ! <widget class="GtkImageMenuItem" id="scan1"> <property name="visible">True</property> <property name="label" translatable="yes">_Scan</property> --- 37,41 ---- <child> ! <widget class="GtkImageMenuItem" id="miScan"> <property name="visible">True</property> <property name="label" translatable="yes">_Scan</property> *************** *** 44,48 **** <child internal-child="image"> ! <widget class="GtkImage" id="image18"> <property name="visible">True</property> <property name="stock">gtk-index</property> --- 44,48 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image22"> <property name="visible">True</property> <property name="stock">gtk-index</property> *************** *** 65,69 **** <child internal-child="image"> ! <widget class="GtkImage" id="image19"> <property name="visible">True</property> <property name="stock">gtk-cdrom</property> --- 65,69 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image23"> <property name="visible">True</property> <property name="stock">gtk-cdrom</property> *************** *** 92,96 **** <child internal-child="image"> ! <widget class="GtkImage" id="image20"> <property name="visible">True</property> <property name="stock">gtk-quit</property> --- 92,96 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image24"> <property name="visible">True</property> <property name="stock">gtk-quit</property> *************** *** 126,130 **** <child internal-child="image"> ! <widget class="GtkImage" id="image21"> <property name="visible">True</property> <property name="stock">gtk-preferences</property> --- 126,130 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image25"> <property name="visible">True</property> <property name="stock">gtk-preferences</property> *************** *** 160,164 **** <child internal-child="image"> ! <widget class="GtkImage" id="image22"> <property name="visible">True</property> <property name="stock">gtk-help</property> --- 160,164 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image26"> <property name="visible">True</property> <property name="stock">gtk-help</property> Index: gtksettings.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtksettings.glade,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gtksettings.glade 4 Aug 2003 02:33:53 -0000 1.1 --- gtksettings.glade 5 Aug 2003 01:57:27 -0000 1.2 *************** *** 81,85 **** <child> ! <widget class="GtkEntry" id="entry6"> <property name="visible">True</property> <property name="can_focus">True</property> --- 81,85 ---- <child> ! <widget class="GtkEntry" id="textDVD"> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 102,106 **** <child> ! <widget class="GtkEntry" id="entry7"> <property name="visible">True</property> <property name="can_focus">True</property> --- 102,106 ---- <child> ! <widget class="GtkEntry" id="textOutput"> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 329,333 **** <child> ! <widget class="GtkEntry" id="entry3"> <property name="visible">True</property> <property name="can_focus">True</property> --- 329,333 ---- <child> ! <widget class="GtkEntry" id="textMplayer"> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 350,354 **** <child> ! <widget class="GtkEntry" id="entry4"> <property name="visible">True</property> <property name="can_focus">True</property> --- 350,354 ---- <child> ! <widget class="GtkEntry" id="textMencoder"> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 371,375 **** <child> ! <widget class="GtkEntry" id="entry5"> <property name="visible">True</property> <property name="can_focus">True</property> --- 371,375 ---- <child> ! <widget class="GtkEntry" id="textTcprobe"> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 450,454 **** <child> ! <widget class="GtkCombo" id="combo7"> <property name="border_width">5</property> <property name="visible">True</property> --- 450,454 ---- <child> ! <widget class="GtkCombo" id="comboQuality"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 602,606 **** <child> ! <widget class="GtkCombo" id="combo8"> <property name="border_width">6</property> <property name="visible">True</property> --- 602,606 ---- <child> ! <widget class="GtkCombo" id="comboVolume"> <property name="border_width">6</property> <property name="visible">True</property> *************** *** 754,758 **** <child> ! <widget class="GtkCombo" id="combo13"> <property name="border_width">5</property> <property name="visible">True</property> --- 754,758 ---- <child> ! <widget class="GtkCombo" id="comboAudioCodec"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 916,920 **** <child> ! <widget class="GtkCombo" id="combo10"> <property name="border_width">5</property> <property name="visible">True</property> --- 916,920 ---- <child> ! <widget class="GtkCombo" id="comboVideoCodec"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 988,992 **** <child> ! <widget class="GtkCombo" id="combo11"> <property name="border_width">5</property> <property name="visible">True</property> --- 988,992 ---- <child> ! <widget class="GtkCombo" id="comboAspect"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 1060,1064 **** <child> ! <widget class="GtkCombo" id="combo12"> <property name="border_width">5</property> <property name="visible">True</property> --- 1060,1064 ---- <child> ! <widget class="GtkCombo" id="comboDeinterlace"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 1140,1144 **** <child> ! <widget class="GtkCheckButton" id="checkbutton1"> <property name="border_width">5</property> <property name="visible">True</property> --- 1140,1144 ---- <child> ! <widget class="GtkCheckButton" id="checkbuttonPDA"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 1186,1190 **** <child> ! <widget class="GtkCombo" id="combo9"> <property name="border_width">5</property> <property name="visible">True</property> --- 1186,1190 ---- <child> ! <widget class="GtkCombo" id="comboPasses"> <property name="border_width">5</property> <property name="visible">True</property> *************** *** 1332,1336 **** <child> ! <widget class="GtkCombo" id="combo4"> <property name="visible">True</property> <property name="value_in_list">False</property> --- 1332,1336 ---- <child> ! <widget class="GtkCombo" id="comboLogLevel"> <property name="visible">True</property> <property name="value_in_list">False</property> *************** *** 1396,1400 **** <child> <widget class="GtkButton" id="button2"> ! <property name="border_width">7</property> <property name="visible">True</property> <property name="can_focus">True</property> --- 1396,1400 ---- <child> <widget class="GtkButton" id="button2"> ! <property name="border_width">5</property> <property name="visible">True</property> <property name="can_focus">True</property> *************** *** 1415,1419 **** <child> ! <widget class="GtkEntry" id="entry8"> <property name="visible">True</property> <property name="can_focus">True</property> --- 1415,1419 ---- <child> ! <widget class="GtkEntry" id="textLog"> <property name="visible">True</property> <property name="can_focus">True</property> |
From: <iwa...@us...> - 2003-08-05 01:57:31
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv2505 Modified Files: gtkmain.py gtksettings.py Log Message: Added setting saving features to the gtk version of quickrip. Load and save features are pretty modular, though I plan possibly on making a generic config file we can all agree upon and use. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gtkmain.py 4 Aug 2003 05:49:16 -0000 1.7 --- gtkmain.py 5 Aug 2003 01:57:27 -0000 1.8 *************** *** 57,60 **** --- 57,62 ---- def scan(self, widget, data=None): print "Scan gui" + self.hideRip() + self.hideScan() self.scanDVD() *************** *** 128,131 **** --- 130,134 ---- self.buttonRip = xml.get_widget('buttonRip') self.miRip = xml.get_widget('miRip') + self.miScan = xml.get_widget('miScan') self.tree = xml.get_widget('treeview') *************** *** 140,144 **** self.inittree() ! self.dialogSettings = GTKSettings() self.dialogProgress = GTKProgress() --- 143,147 ---- self.inittree() ! self.dialogSettings = GTKSettings(self) self.dialogProgress = GTKProgress() *************** *** 146,158 **** self.hideRip() ! DVD.__init__(self) ! self.app = __app__ ! self.DVD_DEVICE = "/dev/dvd" ! # self.outputDir.setText(self.config['outputdir']) ! # self.outdir = self.config['outputdir'] ! self.config['mplayer'] = "/usr/bin/mplayer" ! self.config['mencoder'] = "/usr/bin/mencoder" ! self.config['tcprobe'] = "/usr/bin/tcprobe" ! self.config['dvd_device'] = "/dev/cdroms/cdrom1" def browse(self, widget, data=None): --- 149,273 ---- self.hideRip() ! self.homefile = os.path.join(os.path.expanduser("~"), ".gtkquickrip") ! (self.config, self.parser) = self.readSettings(self.homefile) ! self.syncSettingsDialog() ! ! def syncSettingsDialog(self): ! self.dialogSettings.wteMplayer.set_text(self.config['mplayer']) ! self.dialogSettings.wteMencoder.set_text(self.config['mencoder']) ! self.dialogSettings.wteTcprobe.set_text(self.config['tcprobe']) ! self.dialogSettings.wteDVD.set_text(self.config['dvd_device']) ! self.dialogSettings.wteOutput.set_text(self.config['outputdir']) ! self.dialogSettings.wteLog.set_text(self.config['logfile']) ! self.dialogSettings.wcbLogLevel.entry.set_text(self.config['loglevel']) ! ! self.dialogSettings.wcbVideoCodec.entry.set_text(self.config['videocodec']) ! self.dialogSettings.wcbAspect.entry.set_text(self.config['aspectratio']) ! self.dialogSettings.wcbDeinterlace.entry.set_text(self.config['deinterlacing']) ! self.dialogSettings.wcbPasses.entry.set_text(self.config['passes']) ! if self.config['pdamode'] == "1": ! self.dialogSettings.wcheckPDA.set_active(gtk.TRUE) ! ! self.dialogSettings.wcbAudioCodec.entry.set_text(self.config['audiocodec']) ! self.dialogSettings.wcbVolume.entry.set_text(self.config['volume']) ! self.dialogSettings.wcbQuality.entry.set_text(self.config['quality']) ! ! def writeSettings(self, file): ! self.parser.set('programs', 'mplayer', self.config['mplayer']) ! self.parser.set('programs', 'mencoder', self.config['mencoder']) ! self.parser.set('programs', 'tcprobe', self.config['tcprobe']) ! self.parser.set('general', 'dvd_device', self.config['dvd_device']) ! self.parser.set('general', 'outputdir', self.config['outputdir']) ! self.parser.set('logging', 'logfile', self.config['logfile']) ! self.parser.set('logging', 'loglevel', self.config['loglevel']) ! self.parser.set('video', 'deinterlacing', self.config['deinterlacing']) ! self.parser.set('video', 'aspectratio', self.config['aspectratio']) ! self.parser.set('video', 'passes', self.config['passes']) ! self.parser.set('video', 'pdamode', self.config['pdamode']) ! self.parser.set('video', 'videocodec', self.config['videocodec']) ! self.parser.set('audio', 'audiocodec', self.config['audiocodec']) ! self.parser.set('audio', 'quality', self.config['quality']) ! self.parser.set('audio', 'volume', self.config['volume']) ! self.parser.write(open(file, 'w')) ! ! def readSettings(self, file): ! # Check config file exists ! if not os.path.isfile(file): ! self.createSettings(file) ! # Load configuration options from config file ! config = {} ! parser = ConfigParser.ConfigParser() ! parser.readfp(open(file, 'r')) ! config['mplayer'] = parser.get("programs", "mplayer") ! config['mencoder'] = parser.get("programs", "mencoder") ! config['tcprobe'] = parser.get("programs", "tcprobe") ! config['dvd_device'] = parser.get("general", "dvd_device") ! config['outputdir'] = parser.get("general", "outputdir") ! config['logfile'] = parser.get("logging", "logfile") ! config['loglevel'] = parser.get("logging", "loglevel") ! config['deinterlacing'] = parser.get("video", "deinterlacing") ! config['aspectratio'] = parser.get("video", "aspectratio") ! config['passes'] = parser.get("video", "passes") ! config['pdamode'] = parser.get("video", "pdamode") ! config['videocodec'] = parser.get("video", "videocodec") ! config['audiocodec'] = parser.get("audio", "audiocodec") ! config['quality'] = parser.get("audio", "quality") ! config['volume'] = parser.get("audio", "volume") ! ! return (config, parser) ! ! def createSettings(self, file): ! # Find the programs mplayer, mencoder and tcprobe ! #paths = ['/usr/bin/', '/usr/local/bin/', '/opt/bin/', '/sbin/', '/usr/sbin/', '/bin', '/usr/X11R6/lib/X11/bin'] ! paths = config.paths ! mplayer, mencoder, tcprobe, outdir = "", "", "", "/tmp" ! for path in paths: ! #if os.path.isfile(path + "mplayer"): ! if os.path.isfile(os.path.join(path, "mplayer")): ! #mplayer = path + "mplayer" ! mplayer = os.path.join(path, "mplayer") ! #if os.path.isfile(path + "mencoder"): ! if os.path.isfile(os.path.join(path, "mencoder")): ! #mencoder = path + "mencoder" ! mencoder = os.path.join(path, "mencoder") ! if os.path.isfile(os.path.join(path, "tcprobe")): ! #tcprobe = path + "tcprobe" ! tcprobe = os.path.join(path, "tcprobe") ! if not mplayer:# == "": ! self.int_configError("mplayer") ! if not mencoder:# == "": ! self.int_configError("mencoder") ! if not tcprobe:# == "": ! self.int_configError("tcprobe") ! ! dvd_device = "/dev/dvd" ! if not os.path.isfile(dvd_device): ! self.int_configError("dvd_device") ! ! logfile = os.path.join(os.path.expanduser("~"), "quickrip.log") ! ! # Create config ! parser = ConfigParser.ConfigParser() ! parser.add_section("programs") ! parser.add_section("general") ! parser.add_section("audio") ! parser.add_section("video") ! parser.add_section("logging") ! parser.set("programs", "mplayer", mplayer) ! parser.set("programs", "mencoder", mencoder) ! parser.set("programs", "tcprobe", tcprobe) ! parser.set("general", "dvd_device", dvd_device) ! parser.set("general", "outputdir", outdir) ! parser.set("logging", "logfile", logfile) ! parser.set("logging", "loglevel", "None") ! parser.set("video", "deinterlacing", "None") ! parser.set("video", "aspectratio", "Default") ! parser.set("video", "passes", "One") ! parser.set("video", "pdamode", 0) ! parser.set("video", "videocodec", "DivX") ! parser.set("audio", "audiocodec", "MP3") ! parser.set("audio", "quality", "128") ! parser.set("audio", "volume", "+0") ! parser.write(open(file, 'w')) def browse(self, widget, data=None): *************** *** 178,190 **** self.buttonRip.hide() self.miRip.hide() def main(self): gtk.main() ! ! ################################# HOOKS def int_startScanning(self): print "start scanning backend" ! self.hideRip() def int_noTracks(self): --- 293,314 ---- self.buttonRip.hide() self.miRip.hide() + + def hideScan(self): + self.buttonScan.hide() + self.miScan.hide() + + def showScan(self): + self.buttonScan.show() + self.miScan.show() def main(self): gtk.main() ! ################################# HOOKS def int_startScanning(self): print "start scanning backend" ! ! def int_configError(self, config): ! print "Couldn't find " + config def int_noTracks(self): *************** *** 202,208 **** --- 326,335 ---- print "finish scanning" self.showRip() + self.showScan() def int_startRipping(self): print "start rip" + self.hideScan() + self.showRip() def int_newTrack(self, name, number, total, vbr): *************** *** 217,220 **** --- 344,349 ---- def int_finishRipping(self): print "finish ripping" + self.showScan() + self.showRip() if __name__ == "__main__": Index: gtksettings.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtksettings.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** gtksettings.py 4 Aug 2003 05:49:16 -0000 1.5 --- gtksettings.py 5 Aug 2003 01:57:27 -0000 1.6 *************** *** 31,40 **** def quit(self, widget, data=None): print "close settigns - add some validation here" self.window.hide() return gtk.TRUE ! def __init__(self): xml = gtk.glade.XML('glade/gtksettings.glade') self.window = xml.get_widget('window') xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) --- 31,94 ---- def quit(self, widget, data=None): print "close settigns - add some validation here" + self.changeSettings() self.window.hide() return gtk.TRUE + + def validate(self): + dvd = wtvDVD.get_text() + + def changeSettings(self): + #programs + self.parent.config['mplayer'] = self.wteMplayer.get_text() + self.parent.config['mencoder'] = self.wteMencoder.get_text() + self.parent.config['tcprobe'] = self.wteTcprobe.get_text() + + #general + self.parent.config['dvd_device'] = self.wteDVD.get_text() + self.parent.config['outputdir'] = self.wteOutput.get_text() + + #logging + self.parent.config['logfile'] = self.wteLog.get_text() + self.parent.config['loglevel'] = self.wcbLogLevel.entry.get_text() ! #video ! self.parent.config['deinterlacing'] = self.wcbDeinterlace.entry.get_text() ! self.parent.config['aspectratio'] = self.wcbAspect.entry.get_text() ! self.parent.config['passes'] = self.wcbPasses.entry.get_text() ! self.parent.config['videocodec'] = self.wcbVideoCodec.entry.get_text() ! if self.wcheckPDA.get_active() == gtk.TRUE: ! self.parent.config['pdamode'] = 1 ! else: ! self.parent.config['pdamode'] = 0 ! ! #audio ! self.parent.config['audiocodec'] = self.wcbAudioCodec.entry.get_text() ! self.parent.config['quality'] = self.wcbQuality.entry.get_text() ! self.parent.config['volume'] = self.wcbVolume.entry.get_text() ! ! self.parent.writeSettings(self.parent.homefile) ! ! def page(self, widget): ! print "page" ! ! def __init__(self, parent): xml = gtk.glade.XML('glade/gtksettings.glade') + self.parent = parent self.window = xml.get_widget('window') + self.wteDVD = xml.get_widget('textDVD') # + self.wteOutput = xml.get_widget('textOutput') # + self.wteLog = xml.get_widget('textLog') # + self.wteMencoder = xml.get_widget('textMencoder') # + self.wteMplayer = xml.get_widget('textMplayer') # + self.wteTcprobe = xml.get_widget('textTcprobe') # + self.wcbVideoCodec = xml.get_widget('comboVideoCodec')# + self.wcbAspect = xml.get_widget('comboAspect') # + self.wcbDeinterlace = xml.get_widget('comboDeinterlace') # + self.wcbPasses = xml.get_widget('comboPasses')# + self.wcbLogLevel = xml.get_widget('comboLogLevel') # + self.wcbAudioCodec = xml.get_widget('comboAudioCodec') # + self.wcbQuality = xml.get_widget('comboQuality') # + self.wcbVolume = xml.get_widget('comboVolume') # + self.wcheckPDA = xml.get_widget('checkbuttonPDA') # xml.signal_autoconnect( {'on_window_delete_event': self.quit} ) *************** *** 45,48 **** --- 99,103 ---- xml.signal_autoconnect( {'on_tcprobe_clicked': self.quit} ) xml.signal_autoconnect( {'on_log_clicked': self.quit} ) + # xml.signal_autoconnect( {'on_change_page': self.page} ) # self.window.show_all() |
From: <iwa...@us...> - 2003-08-04 05:49:19
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv28681 Modified Files: gtkmain.py gtkprogress.py gtksettings.py Log Message: Few updates. Working on scan button. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gtkmain.py 4 Aug 2003 04:48:16 -0000 1.6 --- gtkmain.py 4 Aug 2003 05:49:16 -0000 1.7 *************** *** 8,11 **** --- 8,12 ---- try: import pygtk + import sys, os, re pygtk.require("2.0") import gtk, gobject *************** *** 26,29 **** --- 27,31 ---- del deleteme import pygtk + import sys, os, re pygtk.require("2.0") import gtk, gobject *************** *** 35,49 **** gnome.init("quickrip", "1.0") ! class GTKMain: def rip(self, widget, data=None): print "Rip" self.dialogProgress.window.show_all() ! def scan(self, widget, data=None): ! print "Scan" ! # node = self.tree.insert_node(None, None, [ "sample", "two", "three", "four" ]) ! self.buttonRip.show() ! self.miRip.show() ! def configure(self, widget, data=None): self.dialogSettings.window.show_all() --- 37,62 ---- gnome.init("quickrip", "1.0") ! import dvd ! from dvd import * ! ! import config ! ! __app__ = config.app ! __author__ = config.author ! __version__ = config.version ! __date__ = config.date ! __copyright__ = config.copyright ! __license__ = config.license ! ! ! class GTKMain(DVD): def rip(self, widget, data=None): print "Rip" self.dialogProgress.window.show_all() ! def scan(self, widget, data=None): ! print "Scan gui" ! self.scanDVD() ! def configure(self, widget, data=None): self.dialogSettings.window.show_all() *************** *** 104,121 **** # model.set_value(i, 2, "third") # model.set_value(i, 3, "forth") ! i = model.insert_before(None, None) str2 = { "4" : "5", "6" : "seven" } model.set_value(i, 0, str2["4"]) model.set_value(i, 1, str2["6"]) - - def create_gtk_list(self): - scrolled_window = gtk.ScrolledWindow() - scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - model = gtk.TreeStore(4) - model.set_column_types(4, gobject.TYPE_STRING) - view = gtk.TreeView(model) - scrolled_window.add_with_viewport(view) - view.show() - return scrolled_window def __init__(self): --- 117,124 ---- # model.set_value(i, 2, "third") # model.set_value(i, 3, "forth") ! i = model.append(i, None) str2 = { "4" : "5", "6" : "seven" } model.set_value(i, 0, str2["4"]) model.set_value(i, 1, str2["6"]) def __init__(self): *************** *** 141,147 **** self.window.show_all() ! self.buttonRip.hide() ! self.miRip.hide() ! def browse(self, widget, data=None): self.filesel = gtk.FileSelection() --- 144,159 ---- self.window.show_all() ! self.hideRip() ! ! DVD.__init__(self) ! self.app = __app__ ! self.DVD_DEVICE = "/dev/dvd" ! # self.outputDir.setText(self.config['outputdir']) ! # self.outdir = self.config['outputdir'] ! self.config['mplayer'] = "/usr/bin/mplayer" ! self.config['mencoder'] = "/usr/bin/mencoder" ! self.config['tcprobe'] = "/usr/bin/tcprobe" ! self.config['dvd_device'] = "/dev/cdroms/cdrom1" ! def browse(self, widget, data=None): self.filesel = gtk.FileSelection() *************** *** 158,165 **** self.textOutputFile.set_buffer(textbuf) self.filesel.hide() ! def main(self): gtk.main() if __name__ == "__main__": app = GTKMain() --- 170,221 ---- self.textOutputFile.set_buffer(textbuf) self.filesel.hide() ! ! def showRip(self): ! self.buttonRip.show() ! self.miRip.show() ! ! def hideRip(self): ! self.buttonRip.hide() ! self.miRip.hide() ! def main(self): gtk.main() + + ################################# HOOKS + def int_startScanning(self): + print "start scanning backend" + self.hideRip() + + def int_noTracks(self): + print "no tracks were found" + + def int_dispDVD(self): + print "Found %s titles" % (self.numtitles) + print "Found audio languages %s" % (self.alangs) + print "Found subtitle languages %s" % (self.slangs) + + def int_dispTrack(self, track): + print "display track" + + def int_finishScanning(self): + print "finish scanning" + self.showRip() + + def int_startRipping(self): + print "start rip" + + def int_newTrack(self, name, number, total, vbr): + print "new track" + + def int_newPass(self, passtype): + print "new pass" + + def int_updateProgress(self, perc, tpass): + print "update progress" + + def int_finishRipping(self): + print "finish ripping" + if __name__ == "__main__": app = GTKMain() Index: gtkprogress.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkprogress.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** gtkprogress.py 4 Aug 2003 01:18:10 -0000 1.3 --- gtkprogress.py 4 Aug 2003 05:49:16 -0000 1.4 *************** *** 49,51 **** app = GTKProgress() app.main() - --- 49,50 ---- Index: gtksettings.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtksettings.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** gtksettings.py 4 Aug 2003 01:18:10 -0000 1.4 --- gtksettings.py 4 Aug 2003 05:49:16 -0000 1.5 *************** *** 54,56 **** app = GTKSettings() app.main() - --- 54,55 ---- |
From: <iwa...@us...> - 2003-08-04 04:48:28
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv20398/glade Modified Files: gtkmain.glade Added Files: 64x64-quickrip.png Log Message: Added png to proper location for icon and have updates for the gtkmain which now include a rip checkbox and example items. --- NEW FILE: 64x64-quickrip.png --- (This appears to be a binary file; contents omitted.) Index: gtkmain.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtkmain.glade,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** gtkmain.glade 4 Aug 2003 02:41:42 -0000 1.4 --- gtkmain.glade 4 Aug 2003 04:48:16 -0000 1.5 *************** *** 3,7 **** <glade-interface> - <requires lib="gnome"/> <widget class="GtkWindow" id="window"> --- 3,6 ---- *************** *** 45,51 **** <child internal-child="image"> ! <widget class="GtkImage" id="image7"> <property name="visible">True</property> ! <property name="stock">gtk-cdrom</property> <property name="icon_size">1</property> <property name="xalign">0.5</property> --- 44,50 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image18"> <property name="visible">True</property> ! <property name="stock">gtk-index</property> <property name="icon_size">1</property> <property name="xalign">0.5</property> *************** *** 66,72 **** <child internal-child="image"> ! <widget class="GtkImage" id="image8"> <property name="visible">True</property> ! <property name="stock">gtk-execute</property> <property name="icon_size">1</property> <property name="xalign">0.5</property> --- 65,71 ---- <child internal-child="image"> ! <widget class="GtkImage" id="image19"> <property name="visible">True</property> ! <property name="stock">gtk-cdrom</property> <property name="icon_size">1</property> <property name="xalign">0.5</property> *************** *** 86,94 **** <child> ! <widget class="GtkMenuItem" id="quit"> <property name="visible">True</property> ! <property name="label" translatable="yes">gtk-quit</property> <property name="use_underline">True</property> <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 04 Aug 2003 00:48:22 GMT"/> </widget> </child> --- 85,105 ---- <child> ! <widget class="GtkImageMenuItem" id="quit"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Quit</property> <property name="use_underline">True</property> <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 04 Aug 2003 00:48:22 GMT"/> + + <child internal-child="image"> + <widget class="GtkImage" id="image20"> + <property name="visible">True</property> + <property name="stock">gtk-quit</property> + <property name="icon_size">1</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> </child> *************** *** 108,116 **** <child> ! <widget class="GtkMenuItem" id="preferences1"> <property name="visible">True</property> <property name="label" translatable="yes">_Preferences</property> <property name="use_underline">True</property> <signal name="activate" handler="on_preferences_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> </widget> </child> --- 119,139 ---- <child> ! <widget class="GtkImageMenuItem" id="preferences1"> <property name="visible">True</property> <property name="label" translatable="yes">_Preferences</property> <property name="use_underline">True</property> <signal name="activate" handler="on_preferences_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> + + <child internal-child="image"> + <widget class="GtkImage" id="image21"> + <property name="visible">True</property> + <property name="stock">gtk-preferences</property> + <property name="icon_size">1</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> </child> *************** *** 130,138 **** <child> ! <widget class="GtkMenuItem" id="about1"> <property name="visible">True</property> <property name="label" translatable="yes">_About</property> <property name="use_underline">True</property> <signal name="activate" handler="on_about_activate" last_modification_time="Mon, 04 Aug 2003 00:16:19 GMT"/> </widget> </child> --- 153,173 ---- <child> ! <widget class="GtkImageMenuItem" id="about1"> <property name="visible">True</property> <property name="label" translatable="yes">_About</property> <property name="use_underline">True</property> <signal name="activate" handler="on_about_activate" last_modification_time="Mon, 04 Aug 2003 00:16:19 GMT"/> + + <child internal-child="image"> + <widget class="GtkImage" id="image22"> + <property name="visible">True</property> + <property name="stock">gtk-help</property> + <property name="icon_size">1</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> </child> *************** *** 152,155 **** --- 187,191 ---- <widget class="GtkTreeView" id="treeview"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Select multiple tracks, then click "Rip"</property> <property name="can_focus">True</property> <property name="headers_visible">True</property> *************** *** 157,161 **** <property name="reorderable">False</property> <property name="enable_search">True</property> - <signal name="show" handler="on_treeview_show" last_modification_time="Mon, 04 Aug 2003 02:31:08 GMT"/> </widget> <packing> --- 193,196 ---- *************** *** 176,179 **** --- 211,215 ---- <property name="border_width">5</property> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Scan device pointed to in settings.</property> <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> *************** *** 247,250 **** --- 283,287 ---- <property name="border_width">5</property> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Encode tracks and store to disk.</property> <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> |
From: <iwa...@us...> - 2003-08-04 04:48:28
|
Update of /cvsroot/quickrip/quickrip/gtk In directory sc8-pr-cvs1:/tmp/cvs-serv20398 Modified Files: gtkmain.py Log Message: Added png to proper location for icon and have updates for the gtkmain which now include a rip checkbox and example items. Index: gtkmain.py =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/gtkmain.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** gtkmain.py 4 Aug 2003 02:33:53 -0000 1.5 --- gtkmain.py 4 Aug 2003 04:48:16 -0000 1.6 *************** *** 60,87 **** def manual(self, widget, data=None): print "manual" ! def create_gtk_list(self): scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) ! model = gtk.ListStore(gobject.TYPE_STRING) view = gtk.TreeView(model) scrolled_window.add_with_viewport(view) view.show() - cell = gtk.CellRendererText() - column1 = gtk.TreeViewColumn() - column2 = gtk.TreeViewColumn() - column3 = gtk.TreeViewColumn() - column1.set_resizable(gtk.TRUE) - column2.set_resizable(gtk.TRUE) - column3.set_resizable(gtk.TRUE) - column1.set_min_width(150) - column2.set_min_width(150) - column3.set_min_width(50) - column1.set_title("Track") - column2.set_title("Length") - column3.set_title("Rip?") - view.append_column(column1) - view.append_column(column2) - view.append_column(column3) return scrolled_window --- 60,120 ---- def manual(self, widget, data=None): print "manual" ! ! def toggle(self, togglerenderer, row_num): ! print "toggled " + row_num ! mod = self.tree.get_model() ! i = mod.get_iter(row_num) ! bool = mod.get_value(i, 4) ! if bool == gtk.TRUE: ! mod.set_value(i, 4, gtk.FALSE) ! else: ! mod.set_value(i, 4, gtk.TRUE) ! ! def inittree(self): ! model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN) ! self.tree.set_model(model) ! self.tree.set_headers_clickable(gtk.FALSE) ! cell = gtk.CellRendererText() ! # list = CellRendererCombo ! check = gtk.CellRendererToggle() ! check.connect("toggled", self.toggle) ! column1 = gtk.TreeViewColumn("Track", cell, text=0) ! column2 = gtk.TreeViewColumn("Length", cell, text=1) ! column3 = gtk.TreeViewColumn("Language", cell)#, text=2) ! column4 = gtk.TreeViewColumn("Subtitles", cell)#, text=3) ! column5 = gtk.TreeViewColumn("Rip", check, active=4) ! column1.set_resizable(gtk.TRUE) ! column2.set_resizable(gtk.TRUE) ! column3.set_resizable(gtk.TRUE) ! column4.set_resizable(gtk.TRUE) ! column1.set_min_width(90) ! column2.set_min_width(90) ! column3.set_min_width(90) ! column4.set_min_width(90) ! column5.set_min_width(40) ! self.tree.append_column(column1) ! self.tree.append_column(column2) ! self.tree.append_column(column3) ! self.tree.append_column(column4) ! self.tree.append_column(column5) ! i = model.insert_before(None, None) ! str = { "first": "1st", "second": "3rd" } ! model.set_value(i, 0, str["first"]) ! model.set_value(i, 1, str["second"]) ! # model.set_value(i, 2, "third") ! # model.set_value(i, 3, "forth") ! i = model.insert_before(None, None) ! str2 = { "4" : "5", "6" : "seven" } ! model.set_value(i, 0, str2["4"]) ! model.set_value(i, 1, str2["6"]) ! def create_gtk_list(self): scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) ! model = gtk.TreeStore(4) ! model.set_column_types(4, gobject.TYPE_STRING) view = gtk.TreeView(model) scrolled_window.add_with_viewport(view) view.show() return scrolled_window *************** *** 103,106 **** --- 136,140 ---- xml.signal_autoconnect( {'on_quit_activate': self.quit} ) + self.inittree() self.dialogSettings = GTKSettings() self.dialogProgress = GTKProgress() |
From: <je...@us...> - 2003-08-04 02:41:45
|
Update of /cvsroot/quickrip/quickrip/gtk/glade In directory sc8-pr-cvs1:/tmp/cvs-serv3639/glade Modified Files: gtkmain.glade Log Message: Moved Preferences to the Edit menu. Index: gtkmain.glade =================================================================== RCS file: /cvsroot/quickrip/quickrip/gtk/glade/gtkmain.glade,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** gtkmain.glade 4 Aug 2003 02:33:53 -0000 1.3 --- gtkmain.glade 4 Aug 2003 02:41:42 -0000 1.4 *************** *** 3,6 **** --- 3,7 ---- <glade-interface> + <requires lib="gnome"/> <widget class="GtkWindow" id="window"> *************** *** 37,54 **** <child> ! <widget class="GtkMenuItem" id="scan1"> <property name="visible">True</property> <property name="label" translatable="yes">_Scan</property> <property name="use_underline">True</property> <signal name="activate" handler="on_scan_activate" last_modification_time="Mon, 04 Aug 2003 00:12:23 GMT"/> </widget> </child> <child> ! <widget class="GtkMenuItem" id="miRip"> <property name="visible">True</property> <property name="label" translatable="yes">_Rip</property> <property name="use_underline">True</property> <signal name="activate" handler="on_rip_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> </widget> </child> --- 38,79 ---- <child> ! <widget class="GtkImageMenuItem" id="scan1"> <property name="visible">True</property> <property name="label" translatable="yes">_Scan</property> <property name="use_underline">True</property> <signal name="activate" handler="on_scan_activate" last_modification_time="Mon, 04 Aug 2003 00:12:23 GMT"/> + + <child internal-child="image"> + <widget class="GtkImage" id="image7"> + <property name="visible">True</property> + <property name="stock">gtk-cdrom</property> + <property name="icon_size">1</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> </child> <child> ! <widget class="GtkImageMenuItem" id="miRip"> <property name="visible">True</property> <property name="label" translatable="yes">_Rip</property> <property name="use_underline">True</property> <signal name="activate" handler="on_rip_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> + + <child internal-child="image"> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="stock">gtk-execute</property> + <property name="icon_size">1</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> </child> *************** *** 61,84 **** <child> ! <widget class="GtkMenuItem" id="preferences1"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Preferences</property> <property name="use_underline">True</property> ! <signal name="activate" handler="on_preferences_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> </widget> </child> ! <child> ! <widget class="GtkMenuItem" id="separatormenuitem1"> ! <property name="visible">True</property> ! </widget> ! </child> <child> ! <widget class="GtkImageMenuItem" id="quit"> <property name="visible">True</property> ! <property name="label">gtk-quit</property> ! <property name="use_stock">True</property> ! <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 04 Aug 2003 00:48:22 GMT"/> </widget> </child> --- 86,116 ---- <child> ! <widget class="GtkMenuItem" id="quit"> <property name="visible">True</property> ! <property name="label" translatable="yes">gtk-quit</property> <property name="use_underline">True</property> ! <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 04 Aug 2003 00:48:22 GMT"/> </widget> </child> + </widget> + </child> + </widget> + </child> ! <child> ! <widget class="GtkMenuItem" id="edit"> ! <property name="visible">True</property> ! <property name="label" translatable="yes">_Edit</property> ! <property name="use_underline">True</property> ! ! <child> ! <widget class="GtkMenu" id="edit_menu"> <child> ! <widget class="GtkMenuItem" id="preferences1"> <property name="visible">True</property> ! <property name="label" translatable="yes">_Preferences</property> ! <property name="use_underline">True</property> ! <signal name="activate" handler="on_preferences_activate" last_modification_time="Mon, 04 Aug 2003 00:13:09 GMT"/> </widget> </child> |