qwad/Qwad.pyw

133 lines
4.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python
#coding=utf-8
2012-11-19 23:00:31 +01:00
import sys, os
2012-11-19 23:00:16 +01:00
from optparse import OptionParser
from optparse import Option, OptionValueError
2012-08-21 19:28:14 +02:00
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QTranslator, QString, QLocale
2012-11-25 11:49:09 +01:00
from GUI.VenPri import MWQwad, nusDownloadingCLI, PackingCLI, UnpackingCLI
2012-11-19 23:14:34 +01:00
from TitleIDs import TitleDict, IOSdict, swap_dic
2012-08-21 19:28:14 +02:00
2012-11-19 23:00:16 +01:00
class MultipleOption(Option):
ACTIONS = Option.ACTIONS + ("extend",)
STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",)
TYPED_ACTIONS = Option.TYPED_ACTIONS + ("extend",)
ALWAYS_TYPED_ACTIONS = Option.ALWAYS_TYPED_ACTIONS + ("extend",)
2012-11-19 23:00:16 +01:00
def take_action(self, action, dest, opt, value, values, parser):
if action == "extend":
values.ensure_value(dest, []).append(value)
else:
Option.take_action(self, action, dest, opt, value, values, parser)
2012-11-19 23:00:16 +01:00
VERSION = '0.6'
def opts():
2012-11-25 11:49:09 +01:00
os.chdir(sys.path[0])
2012-11-19 23:03:01 +01:00
description = """NUS-Downloader, WadManager and TMD-Viewer for Linux"""
2012-11-19 23:00:16 +01:00
parser = OptionParser(option_class=MultipleOption,
usage='usage: qwad [OPTIONS] ARGUMENT',
description=description)
2012-11-19 23:11:25 +01:00
parser.add_option('-d', '--download',
2012-11-19 23:00:16 +01:00
action="extend", type="string",
dest='download',
metavar='Arguments',
2012-11-25 11:49:09 +01:00
help="IOS Version Output Decrypt Pack")
parser.add_option('-u', "--unpack", dest="unpack", action="extend",
type="string", metavar='Arguments', help="unpack a WAD")
2012-11-25 11:58:04 +01:00
parser.add_option('-p', "--pack", dest="pack", action="extend",
type="string", metavar='Arguments', help="pack folder as WAD")
2012-11-19 23:11:25 +01:00
parser.add_option('-g', "--getversions", dest="getversions",
action="store_true", default=False, help="get available versions for IOS")
2012-11-19 23:14:00 +01:00
parser.add_option('-c', "--convert", dest="convert",
2012-11-25 11:49:09 +01:00
action="store_true", default=False, help="convert between IOSxx and hex-value")
2012-11-19 23:00:16 +01:00
parser.add_option("-v", "--version", dest="version",
action="store_true", default=False, help="print version and exit")
2012-11-19 23:00:16 +01:00
options, args = parser.parse_args()
if options.version:
print "%s" % VERSION
sys.exit(0)
if options.download:
2012-11-19 23:48:18 +01:00
if "IOS" in str(options.download[0]):
xarg = TitleDict[str(options.download[0])]
nusdow = nusDownloadingCLI(int(str(xarg).lower(),16), args[0], args[1], args[2], args[3])
2012-11-19 23:00:16 +01:00
else:
2012-11-19 23:11:25 +01:00
2012-11-19 23:48:18 +01:00
nusdow = nusDownloadingCLI(int(str(options.download[0]).lower(),16), args[0], args[1], args[2], args[3])
2012-11-19 23:00:16 +01:00
nusdow.start()
sys.exit(0)
2012-11-19 23:11:25 +01:00
if options.getversions:
if "IOS" in str(args[0]):
print "Available Versions for %s: %s" % (str(args[0]), IOSdict[str(args[0])])
else:
NewDict = swap_dic(TitleDict)
xarg = NewDict[str(args[0])]
print "Available Versions for %s: %s" % (str(args[0]), IOSdict[str(xarg)])
sys.exit(0)
2012-11-19 23:14:00 +01:00
if options.convert:
if "IOS" in str(args[0]):
print "%s == %s" % (str(args[0]), TitleDict[str(args[0])])
else:
NewDict = swap_dic(TitleDict)
xarg = NewDict[str(args[0])]
print "%s == %s" % (str(args[0]), xarg)
sys.exit(0)
2012-11-25 11:49:09 +01:00
if options.unpack:
if os.access(str(options.unpack[0]), os.R_OK):
wad = str(options.unpack[0])
else:
print "WAD file %s does not exist." % str(options.unpack[0])
sys.exit(1)
if os.access(str(args[0]), os.W_OK):
folder = str(args[0])
else:
os.mkdir(str(args[0]), 0755)
if os.access(str(args[0]), os.W_OK):
2012-11-25 11:58:04 +01:00
UnpackingCLI(wad, str(args[0])).start()
2012-11-25 11:49:09 +01:00
sys.exit(0)
else:
print "Output folder %s not writeable." % str(args[0])
sys.exit(1)
2012-11-25 11:58:04 +01:00
if options.pack:
if os.access(str(options.pack[0]), os.R_OK):
folder = str(options.pack[0])
else:
print "Input folder %s not readable." % str(options.pack[0])
sys.exit(1)
if os.access(os.path.dirname(str(args[0])), os.W_OK):
PackingCLI(folder, str(args[0])).start()
sys.exit(0)
else:
print "Output file %s can't be created." % str(args[0])
sys.exit(1)
def main():
# load our own translations
2012-08-21 19:28:14 +02:00
translator = QTranslator()
translator.load(QString("i18n/Qwad_%1").arg(QLocale.system().name()))
# load Qt translations
2012-08-21 19:28:14 +02:00
qttranslator = QTranslator()
qttranslator.load(QString("qt_%1").arg(QLocale.system().name()))
# change directory in $HOME, so that file-seletors don't start in Qwads source/data directory
os.chdir(os.getenv("HOME"))
# misc stuff
2012-08-21 19:28:14 +02:00
Vapp = QApplication(sys.argv)
Vapp.setOrganizationName("Nanolx")
2012-08-21 19:28:14 +02:00
Vapp.setApplicationName("Qwad")
Vapp.installTranslator(translator)
Vapp.installTranslator(qttranslator)
VentanaP = MWQwad()
VentanaP.show()
sys.exit(Vapp.exec_())
2012-11-19 23:00:16 +01:00
if __name__ == "__main__":
opts()
2012-11-19 23:00:16 +01:00
main()