Fixed the progress bar when using ffmpeg
Added the capability of storing non-visible values
This commit is contained in:
parent
dc350be634
commit
5529560ce9
7 changed files with 66 additions and 23 deletions
|
|
@ -50,10 +50,33 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkProgressBar" id="progress_total">
|
<object class="GtkFrame" id="frame1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="show_text">True</property>
|
<property name="label_xalign">0</property>
|
||||||
|
<property name="shadow_type">none</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAlignment" id="alignment1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="left_padding">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkProgressBar" id="progress_total">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="show_text">True</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="label">
|
||||||
|
<object class="GtkLabel" id="label2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">6</property>
|
||||||
|
<property name="label" translatable="yes">Project progress</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
<property name="icon">devede.svg</property>
|
<property name="icon">devede.svg</property>
|
||||||
<property name="type_hint">normal</property>
|
<property name="type_hint">normal</property>
|
||||||
<property name="action">save</property>
|
<property name="action">save</property>
|
||||||
|
<property name="do_overwrite_confirmation">True</property>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="filechooserdialog-vbox1">
|
<object class="GtkBox" id="filechooserdialog-vbox1">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -29,7 +29,7 @@ def get_data_files():
|
||||||
for pofile in [f for f in os.listdir('po') if f.endswith('.po')]:
|
for pofile in [f for f in os.listdir('po') if f.endswith('.po')]:
|
||||||
pofile = os.path.join('po', pofile) # po/fr.po
|
pofile = os.path.join('po', pofile) # po/fr.po
|
||||||
modir, mofile = get_mopath(pofile)
|
modir, mofile = get_mopath(pofile)
|
||||||
# translations must be always in /usr/share because Gtk.builder only search there
|
# translations must be always in /usr/share because Gtk.builder only search there. If someone knows how to fix this...
|
||||||
target = os.path.join('/usr','share', modir) # share/locale/fr/LC_MESSAGES/
|
target = os.path.join('/usr','share', modir) # share/locale/fr/LC_MESSAGES/
|
||||||
data_files.append((target, [mofile]))
|
data_files.append((target, [mofile]))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import os
|
||||||
import devede.configuration_data
|
import devede.configuration_data
|
||||||
import devede.executor
|
import devede.executor
|
||||||
import devede.mux_dvd_menu
|
import devede.mux_dvd_menu
|
||||||
|
import devede.avconv_converter
|
||||||
|
|
||||||
class avconv_converter(devede.executor.executor):
|
class avconv_converter(devede.executor.executor):
|
||||||
|
|
||||||
|
|
@ -47,7 +48,7 @@ class avconv_converter(devede.executor.executor):
|
||||||
divx = False
|
divx = False
|
||||||
h264 = False
|
h264 = False
|
||||||
for line in stdout.decode("latin-1").split("\n"):
|
for line in stdout.decode("latin-1").split("\n"):
|
||||||
parts = line.split(" ")
|
parts = line.strip().split(" ")
|
||||||
if len(parts) < 2:
|
if len(parts) < 2:
|
||||||
continue
|
continue
|
||||||
if len(parts[0]) != 6:
|
if len(parts[0]) != 6:
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
import devede.configuration_data
|
import devede.configuration_data
|
||||||
import devede.mplayer_detector
|
import devede.mplayer_detector
|
||||||
import devede.avconv_converter
|
import devede.avconv_converter
|
||||||
|
import devede.ffmpeg_converter
|
||||||
import devede.vlc
|
import devede.vlc
|
||||||
import devede.brasero
|
import devede.brasero
|
||||||
import devede.k3b
|
import devede.k3b
|
||||||
|
|
@ -37,7 +38,7 @@ class converter:
|
||||||
|
|
||||||
self.config = devede.configuration_data.configuration.get_config()
|
self.config = devede.configuration_data.configuration.get_config()
|
||||||
# List of classes with conversion capabilities, in order of preference
|
# List of classes with conversion capabilities, in order of preference
|
||||||
self.c = [devede.vlc.vlc_player, devede.mplayer_detector.mplayer_detector, devede.avconv_converter.avconv_converter,
|
self.c = [devede.vlc.vlc_player, devede.mplayer_detector.mplayer_detector, devede.ffmpeg_converter.ffmpeg_converter, devede.avconv_converter.avconv_converter,
|
||||||
devede.brasero.brasero, devede.k3b.k3b]
|
devede.brasero.brasero, devede.k3b.k3b]
|
||||||
|
|
||||||
self.analizers = {}
|
self.analizers = {}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,8 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.add_group("position_horizontal", ["left", "center", "right"], "center", self.update_preview)
|
self.add_group("position_horizontal", ["left", "center", "right"], "center", self.update_preview)
|
||||||
self.add_group("at_startup", ["menu_show_at_startup", "play_first_title_at_startup"], "menu_show_at_startup")
|
self.add_group("at_startup", ["menu_show_at_startup", "play_first_title_at_startup"], "menu_show_at_startup")
|
||||||
|
|
||||||
|
self.add_integer_adjustment("sound_length", 30)
|
||||||
|
|
||||||
self.add_float_adjustment("margin_left", 10.0, self.update_preview)
|
self.add_float_adjustment("margin_left", 10.0, self.update_preview)
|
||||||
self.add_float_adjustment("margin_top", 12.5, self.update_preview)
|
self.add_float_adjustment("margin_top", 12.5, self.update_preview)
|
||||||
self.add_float_adjustment("margin_right", 10.0, self.update_preview)
|
self.add_float_adjustment("margin_right", 10.0, self.update_preview)
|
||||||
|
|
@ -63,7 +65,6 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
|
|
||||||
self.cached_menu_font = None
|
self.cached_menu_font = None
|
||||||
self.cached_menu_size = 0
|
self.cached_menu_size = 0
|
||||||
self.sound_length = 30
|
|
||||||
self.video_rate = 2500
|
self.video_rate = 2500
|
||||||
self.audio_rate = 224
|
self.audio_rate = 224
|
||||||
|
|
||||||
|
|
@ -89,18 +90,21 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
else:
|
else:
|
||||||
self.sound_length = length
|
self.sound_length = length
|
||||||
|
|
||||||
|
|
||||||
def update_preview(self,b=None):
|
def update_preview(self,b=None):
|
||||||
|
|
||||||
self.store_ui(self.builder)
|
self.store_ui(self.builder)
|
||||||
self.sf = None # force to repaint the menu
|
self.sf = None # force to repaint the menu
|
||||||
self.wdrawing_area.queue_draw()
|
self.wdrawing_area.queue_draw()
|
||||||
|
|
||||||
|
|
||||||
def on_default_background_clicked(self,b):
|
def on_default_background_clicked(self,b):
|
||||||
|
|
||||||
self.background_picture = self.default_background
|
self.background_picture = self.default_background
|
||||||
self.update_ui(self.builder)
|
self.update_ui(self.builder)
|
||||||
self.update_preview()
|
self.update_preview()
|
||||||
|
|
||||||
|
|
||||||
def on_no_sound_clicked(self,b):
|
def on_no_sound_clicked(self,b):
|
||||||
|
|
||||||
self.background_music = self.default_sound
|
self.background_music = self.default_sound
|
||||||
|
|
@ -167,6 +171,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.store_ui(self.builder)
|
self.store_ui(self.builder)
|
||||||
self.wmenu.destroy()
|
self.wmenu.destroy()
|
||||||
|
|
||||||
|
|
||||||
def on_cancel_clicked(self,b):
|
def on_cancel_clicked(self,b):
|
||||||
|
|
||||||
self.restore_ui()
|
self.restore_ui()
|
||||||
|
|
@ -205,6 +210,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
|
|
||||||
return fontname,fontstyle,fontslant,fontsize
|
return fontname,fontstyle,fontslant,fontsize
|
||||||
|
|
||||||
|
|
||||||
def paint_arrow(self,xl,xr,y,arrow_type,left):
|
def paint_arrow(self,xl,xr,y,arrow_type,left):
|
||||||
|
|
||||||
if arrow_type == "menu_entry":
|
if arrow_type == "menu_entry":
|
||||||
|
|
@ -302,7 +308,6 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.cr.set_antialias(cairo.ANTIALIAS_DEFAULT)
|
self.cr.set_antialias(cairo.ANTIALIAS_DEFAULT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def refresh_static_data(self):
|
def refresh_static_data(self):
|
||||||
""" This method sets data that can't be changed from the dvd settings window.
|
""" This method sets data that can't be changed from the dvd settings window.
|
||||||
It must be called before painting a menu """
|
It must be called before painting a menu """
|
||||||
|
|
@ -433,6 +438,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.paint_arrow(xl, med, y, "menu_entry_activated", True)
|
self.paint_arrow(xl, med, y, "menu_entry_activated", True)
|
||||||
return coordinates
|
return coordinates
|
||||||
|
|
||||||
|
|
||||||
def paint_base(self,xl, xr, y, type_b):
|
def paint_base(self,xl, xr, y, type_b):
|
||||||
|
|
||||||
height = self.cached_menu_size + self.entry_vertical_margin
|
height = self.cached_menu_size + self.entry_vertical_margin
|
||||||
|
|
@ -462,6 +468,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.current_shown_page -= 1
|
self.current_shown_page -= 1
|
||||||
self.update_preview()
|
self.update_preview()
|
||||||
|
|
||||||
|
|
||||||
def on_previous_page_clicked(self,b):
|
def on_previous_page_clicked(self,b):
|
||||||
|
|
||||||
self.current_shown_page -= 1
|
self.current_shown_page -= 1
|
||||||
|
|
@ -469,6 +476,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
self.current_shown_page = 0
|
self.current_shown_page = 0
|
||||||
self.update_preview()
|
self.update_preview()
|
||||||
|
|
||||||
|
|
||||||
def on_drawingarea_preview_draw(self,widget,cr):
|
def on_drawingarea_preview_draw(self,widget,cr):
|
||||||
|
|
||||||
""" Callback to repaint the menu preview window when it
|
""" Callback to repaint the menu preview window when it
|
||||||
|
|
@ -482,6 +490,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
|
||||||
cr.set_source_surface(self.sf)
|
cr.set_source_surface(self.sf)
|
||||||
cr.paint()
|
cr.paint()
|
||||||
|
|
||||||
|
|
||||||
def create_menu_stream(self,path,n_page,coordinates):
|
def create_menu_stream(self,path,n_page,coordinates):
|
||||||
|
|
||||||
""" Creates the menu XML file """
|
""" Creates the menu XML file """
|
||||||
|
|
|
||||||
|
|
@ -185,26 +185,30 @@ class interface_manager(GObject.GObject):
|
||||||
|
|
||||||
for element in self.interface_labels:
|
for element in self.interface_labels:
|
||||||
value = eval('self.'+element)
|
value = eval('self.'+element)
|
||||||
if (value != None):
|
obj = builder.get_object(element)
|
||||||
builder.get_object(element).set_text(str(value))
|
if obj != None:
|
||||||
else:
|
if (value != None):
|
||||||
builder.get_object(element).set_text("")
|
obj.set_text(str(value))
|
||||||
|
else:
|
||||||
|
obj.set_text("")
|
||||||
|
|
||||||
for element in self.interface_integer_adjustments:
|
for element in self.interface_integer_adjustments:
|
||||||
value = eval('self.'+element[0])
|
|
||||||
obj = builder.get_object(element[0])
|
obj = builder.get_object(element[0])
|
||||||
obj.set_value(float(value))
|
if obj != None:
|
||||||
callback = element[1]
|
value = eval('self.'+element[0])
|
||||||
if (callback != None):
|
obj.set_value(float(value))
|
||||||
obj.connect("value_changed",callback)
|
callback = element[1]
|
||||||
|
if (callback != None):
|
||||||
|
obj.connect("value_changed",callback)
|
||||||
|
|
||||||
for element in self.interface_float_adjustments:
|
for element in self.interface_float_adjustments:
|
||||||
value = eval('self.'+element[0])
|
|
||||||
obj = builder.get_object(element[0])
|
obj = builder.get_object(element[0])
|
||||||
obj.set_value(value)
|
if obj != None:
|
||||||
callback = element[1]
|
value = eval('self.'+element[0])
|
||||||
if (callback != None):
|
obj.set_value(value)
|
||||||
obj.connect("value_changed",callback)
|
callback = element[1]
|
||||||
|
if (callback != None):
|
||||||
|
obj.connect("value_changed",callback)
|
||||||
|
|
||||||
for element in self.interface_lists:
|
for element in self.interface_lists:
|
||||||
obj = eval('self.'+element[0])
|
obj = eval('self.'+element[0])
|
||||||
|
|
@ -290,6 +294,7 @@ class interface_manager(GObject.GObject):
|
||||||
obj.connect('toggled',self.toggled_element2)
|
obj.connect('toggled',self.toggled_element2)
|
||||||
self.toggled_element2(obj)
|
self.toggled_element2(obj)
|
||||||
|
|
||||||
|
|
||||||
def toggled_element(self,element):
|
def toggled_element(self,element):
|
||||||
""" Wenever an element with 'hide' or 'show' needs is toggled, this callback is called """
|
""" Wenever an element with 'hide' or 'show' needs is toggled, this callback is called """
|
||||||
|
|
||||||
|
|
@ -357,6 +362,7 @@ class interface_manager(GObject.GObject):
|
||||||
for item in to_disable:
|
for item in to_disable:
|
||||||
item.set_sensitive(False)
|
item.set_sensitive(False)
|
||||||
|
|
||||||
|
|
||||||
def store_ui(self,builder):
|
def store_ui(self,builder):
|
||||||
""" Takes the values of the widgets and stores them in the internal variables """
|
""" Takes the values of the widgets and stores them in the internal variables """
|
||||||
|
|
||||||
|
|
@ -380,11 +386,13 @@ class interface_manager(GObject.GObject):
|
||||||
|
|
||||||
for element in self.interface_integer_adjustments:
|
for element in self.interface_integer_adjustments:
|
||||||
obj = builder.get_object(element[0])
|
obj = builder.get_object(element[0])
|
||||||
exec('self.'+element[0]+' = int(obj.get_value())')
|
if obj != None:
|
||||||
|
exec('self.'+element[0]+' = int(obj.get_value())')
|
||||||
|
|
||||||
for element in self.interface_float_adjustments:
|
for element in self.interface_float_adjustments:
|
||||||
obj = builder.get_object(element[0])
|
obj = builder.get_object(element[0])
|
||||||
exec('self.'+element[0]+' = obj.get_value()')
|
if obj != None:
|
||||||
|
exec('self.'+element[0]+' = obj.get_value()')
|
||||||
|
|
||||||
for element in self.interface_colorbuttons:
|
for element in self.interface_colorbuttons:
|
||||||
obj = builder.get_object(element[0])
|
obj = builder.get_object(element[0])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue