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
|
|
@ -49,12 +49,35 @@
|
|||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="frame1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</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>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<property name="icon">devede.svg</property>
|
||||
<property name="type_hint">normal</property>
|
||||
<property name="action">save</property>
|
||||
<property name="do_overwrite_confirmation">True</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox" id="filechooserdialog-vbox1">
|
||||
<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')]:
|
||||
pofile = os.path.join('po', pofile) # po/fr.po
|
||||
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/
|
||||
data_files.append((target, [mofile]))
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 = {}
|
||||
|
|
|
|||
|
|
@ -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 """
|
||||
|
|
|
|||
|
|
@ -185,22 +185,26 @@ class interface_manager(GObject.GObject):
|
|||
|
||||
for element in self.interface_labels:
|
||||
value = eval('self.'+element)
|
||||
obj = builder.get_object(element)
|
||||
if obj != None:
|
||||
if (value != None):
|
||||
builder.get_object(element).set_text(str(value))
|
||||
obj.set_text(str(value))
|
||||
else:
|
||||
builder.get_object(element).set_text("")
|
||||
obj.set_text("")
|
||||
|
||||
for element in self.interface_integer_adjustments:
|
||||
value = eval('self.'+element[0])
|
||||
obj = builder.get_object(element[0])
|
||||
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])
|
||||
if obj != None:
|
||||
value = eval('self.'+element[0])
|
||||
obj.set_value(value)
|
||||
callback = element[1]
|
||||
if (callback != None):
|
||||
|
|
@ -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,10 +386,12 @@ class interface_manager(GObject.GObject):
|
|||
|
||||
for element in self.interface_integer_adjustments:
|
||||
obj = builder.get_object(element[0])
|
||||
if obj != None:
|
||||
exec('self.'+element[0]+' = int(obj.get_value())')
|
||||
|
||||
for element in self.interface_float_adjustments:
|
||||
obj = builder.get_object(element[0])
|
||||
if obj != None:
|
||||
exec('self.'+element[0]+' = obj.get_value()')
|
||||
|
||||
for element in self.interface_colorbuttons:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue