Supports to use MKISOFS or GENISOIMAGE separately
This commit is contained in:
parent
ec4829812a
commit
57a6e764a4
13 changed files with 216 additions and 21 deletions
|
|
@ -26,6 +26,12 @@
|
|||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="mkiso_store">
|
||||
<columns>
|
||||
<!-- column-name gchararray1 -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="multicore_store">
|
||||
<columns>
|
||||
<!-- column-name gchararray5 -->
|
||||
|
|
@ -359,7 +365,7 @@
|
|||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
|
|
@ -378,7 +384,7 @@
|
|||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
|
|
@ -409,6 +415,40 @@
|
|||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label11">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_right">4</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">Create ISOs:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="mkiso">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">mkiso_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext7"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ class avconv_converter(devede.executor.executor):
|
|||
supports_play = False
|
||||
supports_convert = True
|
||||
supports_menu = True
|
||||
supports_mkiso = False
|
||||
supports_burn = False
|
||||
display_name = "AVCONV"
|
||||
disc_types = []
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ class brasero(devede.executor.executor):
|
|||
supports_play = False
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = False
|
||||
supports_burn = True
|
||||
display_name = "BRASERO"
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class choose_disc_type(GObject.GObject):
|
|||
svcd = True
|
||||
divx = True
|
||||
mkv = True
|
||||
analizers, players, converters, menuers, burners = self.cv.get_needed_programs()
|
||||
analizers, players, converters, menuers, burners, mkiso = self.cv.get_needed_programs()
|
||||
|
||||
if (analizers != None) or (converters != None):
|
||||
dvd = False
|
||||
|
|
@ -54,9 +54,10 @@ class choose_disc_type(GObject.GObject):
|
|||
if menuers != None:
|
||||
dvd = False
|
||||
|
||||
if self.check_program(["dvdauthor","--help"]) == False:
|
||||
if mkiso != None:
|
||||
dvd = False
|
||||
if self.check_program(["mkisofs","--help"]) == False:
|
||||
|
||||
if self.check_program(["dvdauthor","--help"]) == False:
|
||||
dvd = False
|
||||
if self.check_program(["vcdimager","--help"]) == False:
|
||||
vcd = False
|
||||
|
|
@ -140,8 +141,8 @@ class choose_disc_type(GObject.GObject):
|
|||
|
||||
window.show_all()
|
||||
|
||||
analizers, players, menuers, converters, burners = self.cv.get_supported_programs()
|
||||
analizers_i, players_i, menuers_i, converters_i, burners_i = self.cv.get_available_programs()
|
||||
analizers, players, menuers, converters, burners, mkiso = self.cv.get_supported_programs()
|
||||
analizers_i, players_i, menuers_i, converters_i, burners_i, mkiso_i = self.cv.get_available_programs()
|
||||
|
||||
text = ""
|
||||
for e in analizers:
|
||||
|
|
@ -180,15 +181,19 @@ class choose_disc_type(GObject.GObject):
|
|||
text += _("\t%(program_name)s (installed)\n") % {"program_name": e.display_name}
|
||||
text4 = _("CD/DVD burners (install at least one of these):\n\n%(program_list)s\n") % {"program_list" : text}
|
||||
|
||||
text = ""
|
||||
for e in mkiso:
|
||||
if mkiso_i.count(e.display_name) == 0:
|
||||
text += _("\t%(program_name)s (not installed)\n") % {"program_name": e.display_name}
|
||||
else:
|
||||
text += _("\t%(program_name)s (installed)\n") % {"program_name": e.display_name}
|
||||
text5 = _("ISO creators (install at least one of these):\n\n%(program_list)s\n") % {"program_list" : text}
|
||||
|
||||
text = ""
|
||||
if self.check_program(["dvdauthor","--help"]) == False:
|
||||
text += _("\t%(program_name)s (not installed)\n") % {"program_name": "DVDAUTHOR (dvd)"}
|
||||
else:
|
||||
text += _("\t%(program_name)s (installed)\n") % {"program_name": "DVDAUTHOR (dvd)"}
|
||||
if self.check_program(["mkisofs","--help"]) == False:
|
||||
text += _("\t%(program_name)s (not installed)\n") % {"program_name": "MKISOFS/GENISOIMAGE (dvd)"}
|
||||
else:
|
||||
text += _("\t%(program_name)s (installed)\n") % {"program_name": "MKISOFS/GENISOIMAGE (dvd)"}
|
||||
if self.check_program(["vcdimager","--help"]) == False:
|
||||
text += _("\t%(program_name)s (not installed)\n") % {"program_name": "VCDIMAGER (vcd, svcd, cvd)"}
|
||||
else:
|
||||
|
|
@ -198,9 +203,9 @@ class choose_disc_type(GObject.GObject):
|
|||
else:
|
||||
text += _("\t%(program_name)s (installed)\n") % {"program_name": "SPUMUX (dvd, vcd, svcd, cvd)"}
|
||||
|
||||
text5 = _("Other programs:\n\n%(program_list)s\n") % {"program_list" : text}
|
||||
text6 = _("Other programs:\n\n%(program_list)s\n") % {"program_list" : text}
|
||||
|
||||
final_text = text1+text2+text3+text4+text5
|
||||
final_text = text1+text2+text3+text4+text5+text6
|
||||
textbuf.insert_at_cursor(final_text,len(final_text))
|
||||
window.run()
|
||||
window.destroy()
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ class configuration(GObject.GObject):
|
|||
self.sub_language = None
|
||||
self.sub_codepage = None
|
||||
self.burner = None
|
||||
self.mkiso = None
|
||||
|
||||
config_path = os.path.join(os.environ.get("HOME"),".devede")
|
||||
try:
|
||||
|
|
@ -144,6 +145,8 @@ class configuration(GObject.GObject):
|
|||
self.subtitles_font_size = int(linea[19:].strip())
|
||||
if linea[:7]=="burner:":
|
||||
self.burner = int(linea[7:].strip())
|
||||
if linea[:6]=="mkiso:":
|
||||
self.mkiso = int(linea[6:].strip())
|
||||
config_data.close()
|
||||
except:
|
||||
pass
|
||||
|
|
@ -182,6 +185,10 @@ class configuration(GObject.GObject):
|
|||
config_data.write("film_converter:"+str(self.film_converter)+"\n")
|
||||
if (self.menu_converter != None):
|
||||
config_data.write("menu_converter:"+str(self.menu_converter)+"\n")
|
||||
if self.burner != None:
|
||||
config_data.write("burner:"+str(self.burner)+"\n")
|
||||
if self.mkiso != None:
|
||||
config_data.write("mkiso:"+str(self.mkiso)+"\n")
|
||||
if (self.sub_codepage != None):
|
||||
config_data.write("sub_codepage:"+str(self.sub_codepage)+"\n")
|
||||
if (self.sub_language != None):
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ import devede.ffmpeg_converter
|
|||
import devede.vlc
|
||||
import devede.brasero
|
||||
import devede.k3b
|
||||
import devede.mkisofs
|
||||
import devede.genisoimage
|
||||
|
||||
class converter:
|
||||
|
||||
|
|
@ -39,7 +41,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.ffmpeg_converter.ffmpeg_converter, devede.avconv_converter.avconv_converter,
|
||||
devede.brasero.brasero, devede.k3b.k3b]
|
||||
devede.brasero.brasero, devede.k3b.k3b, devede.mkisofs.mkisofs, devede.genisoimage.genisoimage]
|
||||
|
||||
self.analizers = {}
|
||||
self.default_analizer = None
|
||||
|
|
@ -49,6 +51,8 @@ class converter:
|
|||
self.default_converter = None
|
||||
self.menuers = {}
|
||||
self.default_menuer = None
|
||||
self.mkiso = {}
|
||||
self.default_mkiso = None
|
||||
self.burners = {}
|
||||
self.default_burner = None
|
||||
self.discs = []
|
||||
|
|
@ -76,17 +80,23 @@ class converter:
|
|||
self.menuers[name] = element
|
||||
if (self.default_menuer == None):
|
||||
self.default_menuer = element
|
||||
if (element.supports_mkiso):
|
||||
self.mkiso[name] = element
|
||||
if (self.default_mkiso == None):
|
||||
self.default_mkiso = element
|
||||
if (element.supports_burn):
|
||||
self.burners[name] = element
|
||||
if (self.default_burner == None):
|
||||
self.default_burner = element
|
||||
|
||||
|
||||
def get_supported_programs(self):
|
||||
|
||||
analizers = []
|
||||
players = []
|
||||
converters = []
|
||||
menuers = []
|
||||
mkiso = []
|
||||
burners = []
|
||||
|
||||
for element in self.c:
|
||||
|
|
@ -98,10 +108,13 @@ class converter:
|
|||
converters.append(element)
|
||||
if (element.supports_menu):
|
||||
menuers.append(element)
|
||||
if (element.supports_mkiso):
|
||||
mkiso.append(element)
|
||||
if (element.supports_burn):
|
||||
burners.append(element)
|
||||
|
||||
return (analizers, players, menuers, converters, burners)
|
||||
return (analizers, players, menuers, converters, burners, mkiso)
|
||||
|
||||
|
||||
def get_available_programs(self):
|
||||
|
||||
|
|
@ -110,6 +123,7 @@ class converter:
|
|||
converters = []
|
||||
analizers = []
|
||||
burners = []
|
||||
mkiso = []
|
||||
|
||||
for e in self.analizers:
|
||||
analizers.append(e)
|
||||
|
|
@ -121,14 +135,17 @@ class converter:
|
|||
converters.append(e)
|
||||
for e in self.burners:
|
||||
burners.append(e)
|
||||
for e in self.mkiso:
|
||||
mkiso.append(e)
|
||||
|
||||
return (analizers, players, menuers, converters, burners, mkiso)
|
||||
|
||||
return (analizers, players, menuers, converters, burners)
|
||||
|
||||
def get_needed_programs(self):
|
||||
""" returns a tupla with four lists. When a list is NONE, there are installed in the system
|
||||
""" returns a tupla with six lists. When a list is NONE, there are installed in the system
|
||||
programs that covers the needs for that group; when not, it contains the programs valid
|
||||
to cover the needs for that group.
|
||||
The groups are, in this order: ANALIZERS, PLAYERS, CONVERTERS, MENUERS, BURNERS
|
||||
The groups are, in this order: ANALIZERS, PLAYERS, CONVERTERS, MENUERS, BURNERS, MKISO
|
||||
(menuers are the programs that creates the mpeg files for menus) """
|
||||
|
||||
if (self.default_analizer != None):
|
||||
|
|
@ -151,6 +168,10 @@ class converter:
|
|||
burners = None
|
||||
else:
|
||||
burners = []
|
||||
if (self.default_mkiso != None):
|
||||
mkiso = None
|
||||
else:
|
||||
mkiso = []
|
||||
|
||||
for element in self.c:
|
||||
e = element()
|
||||
|
|
@ -165,8 +186,10 @@ class converter:
|
|||
menuers.append(name)
|
||||
if (e.supports_burn) and (burners != None):
|
||||
burners.append(name)
|
||||
if (e.supports_mkiso) and (mkiso != None):
|
||||
mkiso.append(name)
|
||||
|
||||
return ( analizers, players, converters, menuers, burners )
|
||||
return ( analizers, players, converters, menuers, burners, mkiso )
|
||||
|
||||
def get_film_player(self):
|
||||
""" returns a class for the desired film player, or the most priviledged if the desired is not installed """
|
||||
|
|
@ -219,3 +242,11 @@ class converter:
|
|||
return self.default_burner
|
||||
else:
|
||||
return self.burners[self.config.burner]
|
||||
|
||||
def get_mkiso(self):
|
||||
""" returns a class for the desired mkiso, or the most priviledged if the desired is not installed """
|
||||
|
||||
if (self.config.mkiso == None) or (self.config.mkiso not in self.mkiso):
|
||||
return self.default_mkiso
|
||||
else:
|
||||
return self.mkiso[self.config.mkiso]
|
||||
|
|
@ -30,6 +30,7 @@ class ffmpeg_converter(devede.executor.executor):
|
|||
supports_play = False
|
||||
supports_convert = True
|
||||
supports_menu = True
|
||||
supports_mkiso = False
|
||||
supports_burn = False
|
||||
display_name = "FFMPEG"
|
||||
disc_types = []
|
||||
|
|
|
|||
83
src/devede/genisoimage.py
Normal file
83
src/devede/genisoimage.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright 2014 (C) Raster Software Vigo (Sergio Costas)
|
||||
#
|
||||
# This file is part of DeVeDe-NG
|
||||
#
|
||||
# DeVeDe-NG is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# DeVeDe-NG is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
import os
|
||||
import devede.configuration_data
|
||||
import subprocess
|
||||
import devede.executor
|
||||
|
||||
class genisoimage(devede.executor.executor):
|
||||
|
||||
supports_analize = False
|
||||
supports_play = False
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = True
|
||||
supports_burn = False
|
||||
display_name = "GENISOIMAGE"
|
||||
|
||||
@staticmethod
|
||||
def check_is_installed():
|
||||
try:
|
||||
handle = subprocess.Popen(["genisoimage","--help"], 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 create_iso (self, path, name):
|
||||
|
||||
filesystem_path = os.path.join(path,name)
|
||||
final_path = os.path.join(path,name+".iso")
|
||||
|
||||
self.command_var=[]
|
||||
self.command_var.append("genisoimage")
|
||||
self.command_var.append("-dvd-video")
|
||||
self.command_var.append("-V")
|
||||
self.command_var.append("DVDVIDEO")
|
||||
self.command_var.append("-v")
|
||||
self.command_var.append("-udf")
|
||||
self.command_var.append("-o")
|
||||
self.command_var.append(final_path)
|
||||
self.command_var.append(filesystem_path)
|
||||
self.text = _("Creating ISO image")
|
||||
|
||||
|
||||
def process_stdout(self,data):
|
||||
return
|
||||
|
||||
def process_stderr(self,data):
|
||||
|
||||
if (data[0].find("% done") == -1):
|
||||
return
|
||||
|
||||
l = data[0].split("%")
|
||||
p = float(l[0])
|
||||
self.progress_bar[1].set_fraction(p/100.0)
|
||||
self.progress_bar[1].set_text("%.1f%%" % (p))
|
||||
|
||||
return
|
||||
|
|
@ -25,6 +25,7 @@ class k3b(devede.executor.executor):
|
|||
supports_play = False
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = False
|
||||
supports_burn = True
|
||||
display_name = "K3B"
|
||||
|
||||
|
|
|
|||
|
|
@ -19,10 +19,31 @@
|
|||
|
||||
import os
|
||||
import devede.configuration_data
|
||||
import subprocess
|
||||
import devede.executor
|
||||
|
||||
class mkisofs(devede.executor.executor):
|
||||
|
||||
supports_analize = False
|
||||
supports_play = False
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = True
|
||||
supports_burn = False
|
||||
display_name = "MKISOFS"
|
||||
|
||||
@staticmethod
|
||||
def check_is_installed():
|
||||
try:
|
||||
handle = subprocess.Popen(["mkisofs","--help"], 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)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ class mplayer_detector(devede.executor.executor):
|
|||
supports_play = True
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = False
|
||||
supports_burn = False
|
||||
display_name = "MPLAYER"
|
||||
|
||||
|
|
|
|||
|
|
@ -68,12 +68,13 @@ class settings_window(devede.interface_manager.interface_manager):
|
|||
self.add_filebutton("tempo_path", self.config.tmp_folder)
|
||||
|
||||
c = devede.converter.converter.get_converter()
|
||||
(analizers, players, menuers, converters, burners) = c.get_available_programs()
|
||||
(analizers, players, menuers, converters, burners, mkiso) = c.get_available_programs()
|
||||
|
||||
self.add_combobox("analizer", analizers,self.config.film_analizer)
|
||||
self.add_combobox("player", players,self.config.film_player)
|
||||
self.add_combobox("converter", converters,self.config.film_converter,self.set_data_converter)
|
||||
self.add_combobox("menuer", menuers,self.config.menu_converter)
|
||||
self.add_combobox("mkiso", mkiso, self.config.mkiso)
|
||||
self.add_combobox("burner", burners, self.config.burner)
|
||||
|
||||
self.builder = Gtk.Builder()
|
||||
|
|
@ -101,6 +102,7 @@ class settings_window(devede.interface_manager.interface_manager):
|
|||
self.config.film_converter = self.converter
|
||||
self.config.menu_converter = self.menuer
|
||||
self.config.burner = self.burner
|
||||
self.config.mkiso = self.mkiso
|
||||
self.config.save_config()
|
||||
|
||||
def set_data_converter(self,b):
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ class vlc_player(devede.executor.executor):
|
|||
supports_play = True
|
||||
supports_convert = False
|
||||
supports_menu = False
|
||||
supports_mkiso = False
|
||||
supports_burn = False
|
||||
display_name = "VLC"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue