Fixed the progress bar when using ffmpeg

Added the capability of storing non-visible values
This commit is contained in:
Sergio Costas 2014-08-06 00:27:26 +02:00
parent dc350be634
commit 5529560ce9
7 changed files with 66 additions and 23 deletions

View file

@ -22,6 +22,7 @@ import os
import devede.configuration_data
import devede.executor
import devede.mux_dvd_menu
import devede.avconv_converter
class avconv_converter(devede.executor.executor):
@ -47,7 +48,7 @@ class avconv_converter(devede.executor.executor):
divx = False
h264 = False
for line in stdout.decode("latin-1").split("\n"):
parts = line.split(" ")
parts = line.strip().split(" ")
if len(parts) < 2:
continue
if len(parts[0]) != 6:

View file

@ -18,6 +18,7 @@
import devede.configuration_data
import devede.mplayer_detector
import devede.avconv_converter
import devede.ffmpeg_converter
import devede.vlc
import devede.brasero
import devede.k3b
@ -37,7 +38,7 @@ class converter:
self.config = devede.configuration_data.configuration.get_config()
# 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]
self.analizers = {}

View file

@ -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("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_top", 12.5, 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_size = 0
self.sound_length = 30
self.video_rate = 2500
self.audio_rate = 224
@ -89,18 +90,21 @@ class dvd_menu(devede.interface_manager.interface_manager):
else:
self.sound_length = length
def update_preview(self,b=None):
self.store_ui(self.builder)
self.sf = None # force to repaint the menu
self.wdrawing_area.queue_draw()
def on_default_background_clicked(self,b):
self.background_picture = self.default_background
self.update_ui(self.builder)
self.update_preview()
def on_no_sound_clicked(self,b):
self.background_music = self.default_sound
@ -167,6 +171,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
self.store_ui(self.builder)
self.wmenu.destroy()
def on_cancel_clicked(self,b):
self.restore_ui()
@ -205,6 +210,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
return fontname,fontstyle,fontslant,fontsize
def paint_arrow(self,xl,xr,y,arrow_type,left):
if arrow_type == "menu_entry":
@ -302,7 +308,6 @@ class dvd_menu(devede.interface_manager.interface_manager):
self.cr.set_antialias(cairo.ANTIALIAS_DEFAULT)
def refresh_static_data(self):
""" This method sets data that can't be changed from the dvd settings window.
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)
return coordinates
def paint_base(self,xl, xr, y, type_b):
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.update_preview()
def on_previous_page_clicked(self,b):
self.current_shown_page -= 1
@ -469,6 +476,7 @@ class dvd_menu(devede.interface_manager.interface_manager):
self.current_shown_page = 0
self.update_preview()
def on_drawingarea_preview_draw(self,widget,cr):
""" 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.paint()
def create_menu_stream(self,path,n_page,coordinates):
""" Creates the menu XML file """

View file

@ -185,26 +185,30 @@ class interface_manager(GObject.GObject):
for element in self.interface_labels:
value = eval('self.'+element)
if (value != None):
builder.get_object(element).set_text(str(value))
else:
builder.get_object(element).set_text("")
obj = builder.get_object(element)
if obj != None:
if (value != None):
obj.set_text(str(value))
else:
obj.set_text("")
for element in self.interface_integer_adjustments:
value = eval('self.'+element[0])
obj = builder.get_object(element[0])
obj.set_value(float(value))
callback = element[1]
if (callback != None):
obj.connect("value_changed",callback)
if obj != None:
value = eval('self.'+element[0])
obj.set_value(float(value))
callback = element[1]
if (callback != None):
obj.connect("value_changed",callback)
for element in self.interface_float_adjustments:
value = eval('self.'+element[0])
obj = builder.get_object(element[0])
obj.set_value(value)
callback = element[1]
if (callback != None):
obj.connect("value_changed",callback)
if obj != None:
value = eval('self.'+element[0])
obj.set_value(value)
callback = element[1]
if (callback != None):
obj.connect("value_changed",callback)
for element in self.interface_lists:
obj = eval('self.'+element[0])
@ -290,6 +294,7 @@ class interface_manager(GObject.GObject):
obj.connect('toggled',self.toggled_element2)
self.toggled_element2(obj)
def toggled_element(self,element):
""" 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:
item.set_sensitive(False)
def store_ui(self,builder):
""" 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:
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:
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:
obj = builder.get_object(element[0])