diff --git a/data/interface/wcreate.ui b/data/interface/wcreate.ui
index ee0b252..e986214 100644
--- a/data/interface/wcreate.ui
+++ b/data/interface/wcreate.ui
@@ -7,6 +7,7 @@
270
False
devede
+ center
devede.svg
dialog
diff --git a/src/devede/avconv_converter.py b/src/devede/avconv_converter.py
index 5b599ee..da30999 100644
--- a/src/devede/avconv_converter.py
+++ b/src/devede/avconv_converter.py
@@ -34,11 +34,14 @@ class avconv_converter(devede.executor.executor):
@staticmethod
def check_is_installed():
- handle = subprocess.Popen(["avconv","-version"], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- (stdout, stderr) = handle.communicate()
- if 0==handle.wait():
- return True
- else:
+ try:
+ handle = subprocess.Popen(["avconv","-version"], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ (stdout, stderr) = handle.communicate()
+ if 0==handle.wait():
+ return True
+ else:
+ return False
+ except:
return False
def __init__(self):
@@ -312,7 +315,7 @@ class avconv_converter(devede.executor.executor):
def process_stdout(self,data):
- pass
+ return
def process_stderr(self,data):
@@ -321,5 +324,6 @@ class avconv_converter(devede.executor.executor):
pos+=5
pos2 = data[0].find(" ",pos)
if (pos2 != -1):
- t = float(data[0][pos:pos2])
- self.progress_bar[1].set_fraction(t / self.final_length)
\ No newline at end of file
+ t = float(data[0][pos:pos2]) / self.final_length
+ self.progress_bar[1].set_fraction(t)
+ self.progress_bar[1].set_text("%.1f%%" % (100.0 * t))
\ No newline at end of file
diff --git a/src/devede/executor.py b/src/devede/executor.py
index 047071a..cc2b457 100644
--- a/src/devede/executor.py
+++ b/src/devede/executor.py
@@ -83,10 +83,10 @@ class executor(GObject.GObject):
def run(self, progress_bar):
self.progress_bar = progress_bar
- self.launch_process(self.command_var)
self.progress_bar[0].set_label(self.text)
self.progress_bar[1].set_fraction(0.0)
self.progress_bar[0].show_all()
+ self.launch_process(self.command_var)
def remove_ansi(self,line):
@@ -115,31 +115,50 @@ class executor(GObject.GObject):
return output
- def launch_process(self,command):
+ def launch_process(self,command,redirect_output = True):
- self.launch_command = "Launching:"
+ self.launch_command = "\n\nLaunching:"
for e in command:
- self.launch_command += (e+" ")
+ self.launch_command += (" "+e)
+ self.launch_command += "\n"
- print(self.launch_command)
+ try:
+ if (self.stdin_file != None):
+ self.handle = subprocess.Popen(command,stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ self.channel_stdin = GLib.IOChannel(self.handle.stdin.fileno())
+ self.channel_stdin.add_watch(GLib.IO_OUT | GLib.IO_HUP, self.read_stdin_from_file)
+ self.file_in = open(self.stdin_file,"rb")
+ else:
+ self.handle = subprocess.Popen(command,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ except Exception as error_launch:
+ self.stderr_data += str(error_launch)
+ self.wait_end()
+ return
- if (self.stdin_file != None):
- self.handle = subprocess.Popen(command,stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- self.channel_stdin = GLib.IOChannel(self.handle.stdin.fileno())
- self.channel_stdin.add_watch(GLib.IO_OUT | GLib.IO_HUP, self.read_stdin_from_file)
- self.file_in = open(self.stdin_file,"rb")
+ if (redirect_output):
+ self.stdout_buf = ""
+ self.stderr_buf = ""
+ self.channel_stdout = GLib.IOChannel(self.handle.stdout.fileno())
+ self.channel_stderr = GLib.IOChannel(self.handle.stderr.fileno())
+ if (self.stdout_file != None):
+ self.channel_stdout.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stdout_to_file)
+ self.file_out = open(self.stdout_file,"wb")
+ else:
+ self.channel_stdout.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stdout)
+ self.channel_stderr.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stderr)
else:
- self.handle = subprocess.Popen(command,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- self.channel_stdout = GLib.IOChannel(self.handle.stdout.fileno())
- self.channel_stderr = GLib.IOChannel(self.handle.stderr.fileno())
- if (self.stdout_file != None):
- self.channel_stdout.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stdout_to_file)
- self.file_out = open(self.stdout_file,"wb")
- else:
- self.channel_stdout.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stdout)
- self.channel_stderr.add_watch(GLib.IO_IN | GLib.IO_HUP,self.read_stderr)
- self.stdout_buf = ""
- self.stderr_buf = ""
+ (stdout_r, stderr_r) = self.handle.communicate()
+ self.config.append_log(self.launch_command)
+ try:
+ self.config.append_log(stdout_r.decode("utf-8"))
+ except:
+ self.config.append_log(stdout_r.decode("latin-1"))
+ try:
+ self.config.append_log(stderr_r.decode("utf-8"))
+ except:
+ self.config.append_log(stderr_r.decode("latin-1"))
+ return (stdout_r, stderr_r)
+
def read_stdout_to_file(self,source,condition):
@@ -176,7 +195,11 @@ class executor(GObject.GObject):
self.wait_end()
return False
else:
- line_data = self.stdout_buf+(self.handle.stdout.read1(4096).decode("utf-8"))
+ read_data = self.handle.stdout.read1(4096)
+ try:
+ line_data = self.stdout_buf+(read_data.decode("utf-8"))
+ except:
+ line_data = self.stdout_buf+(read_data.decode("latin-1"))
self.stdout_data += line_data
data = (line_data).replace("\r","\n").split("\n")
if (len(data) == 1):
@@ -198,7 +221,11 @@ class executor(GObject.GObject):
self.wait_end()
return False
else:
- line_data = self.stderr_buf+(self.handle.stderr.read1(4096).decode("utf-8"))
+ read_data = self.handle.stderr.read1(4096)
+ try:
+ line_data = self.stderr_buf+(read_data.decode("utf-8"))
+ except:
+ line_data = self.stderr_buf+(read_data.decode("latin-1"))
self.stderr_data += line_data
data = (line_data).replace("\r","\n").split("\n")
if (len(data) == 1):
@@ -226,5 +253,8 @@ class executor(GObject.GObject):
self.config.append_log(self.launch_command)
self.config.append_log(self.stdout_data)
self.config.append_log(self.stderr_data)
- retval = self.handle.wait()
+ if self.handle != None:
+ retval = self.handle.wait()
+ else:
+ retval = -1
self.emit("ended",retval)
\ No newline at end of file
diff --git a/src/devede/mplayer_detector.py b/src/devede/mplayer_detector.py
index d61f54f..60e9684 100644
--- a/src/devede/mplayer_detector.py
+++ b/src/devede/mplayer_detector.py
@@ -29,15 +29,19 @@ class mplayer_detector(devede.executor.executor):
@staticmethod
def check_is_installed():
- handle = subprocess.Popen(["mplayer","-v"], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- (stdout, stderr) = handle.communicate()
- if 0==handle.wait():
- return True
- else:
+ try:
+ handle = subprocess.Popen(["mplayer","-v"], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ (stdout, stderr) = handle.communicate()
+ if 0==handle.wait():
+ return True
+ else:
+ return False
+ except:
return False
def __init__(self):
+ devede.executor.executor.__init__(self)
self.config = devede.configuration_data.configuration.get_config()
def get_film_data(self, file_name):
@@ -61,8 +65,7 @@ class mplayer_detector(devede.executor.executor):
command_line = ["mplayer","-loop","1","-identify", "-vo", "null", "-ao", "null", "-frames", frames , file_name]
- handle = subprocess.Popen(command_line, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- (stdout, stderr) = handle.communicate()
+ (stdout, stderr) = self.launch_process(command_line, False)
minimum_audio=-1
self.audio_list=[]
@@ -75,8 +78,14 @@ class mplayer_detector(devede.executor.executor):
self.original_audiorate = 0
self.original_audiorate_uncompressed = 0
self.original_fps = 0
+ self.original_aspect_ratio = 0
+
+ try:
+ stdout2 = stdout.decode("utf-8")
+ except:
+ stdout2 = stdout.decode("latin1")
- for line in str(stdout).split("\\n"):
+ for line in stdout2.split("\n"):
line=self.remove_ansi(line)
if line == "":
continue
diff --git a/src/devede/mux_dvd_menu.py b/src/devede/mux_dvd_menu.py
index 5e016be..d887f76 100644
--- a/src/devede/mux_dvd_menu.py
+++ b/src/devede/mux_dvd_menu.py
@@ -41,13 +41,4 @@ class mux_dvd_menu(devede.executor.executor):
def process_stderr(self,data):
- print("spumux: "+str(data))
- return
-
- pos = data[0].find("time=")
- if (pos != -1):
- pos+=5
- pos2 = data[0].find(" ",pos)
- if (pos2 != -1):
- t = float(data[0][pos:pos2])
- self.progress_bar[1].set_fraction(t / self.sound_length)
\ No newline at end of file
+ return
\ No newline at end of file
diff --git a/src/devede/runner.py b/src/devede/runner.py
index 57f1331..36229f9 100644
--- a/src/devede/runner.py
+++ b/src/devede/runner.py
@@ -51,6 +51,7 @@ class runner(GObject.GObject):
f = Gtk.Frame()
p = Gtk.ProgressBar()
p.set_orientation(Gtk.Orientation.HORIZONTAL)
+ p.set_show_text(True)
f.add(p)
# A frame, a progress bar, and the process running in that bar
self.progress_bars.append([f, p, None])