region selector in NUS Downloader

This commit is contained in:
Christopher Roy Bratusek 2012-08-23 13:35:48 +02:00
parent 9b979d96e6
commit 88e7efaa0b
5 changed files with 222 additions and 67 deletions

View File

@ -6,7 +6,7 @@
taken from: [http://code.activestate.com/recipes/135435/] taken from: [http://code.activestate.com/recipes/135435/]
* ensure Python 2.x is used, Python 3.x is not yet supported * ensure Python 2.x is used, Python 3.x is not yet supported
* separate combobox for choosing channels, system-menu in downloader * separate combobox for choosing channels, system-menu in downloader
as of now, region-code must be changed manually (instructions given) * combobox to choose region for channels (JAP, PAL or USA)
* changed order of tabs, downloader is now default tab * changed order of tabs, downloader is now default tab
* improved TMD Viewer * improved TMD Viewer
- display title ID as ascii - display title ID as ascii

View File

@ -178,13 +178,17 @@ class Ui_Qwad(object):
self.comboBox2.addItem(QtCore.QString()) self.comboBox2.addItem(QtCore.QString())
self.decryptCheck = QtGui.QCheckBox(self.NUStab) self.decryptCheck = QtGui.QCheckBox(self.NUStab)
self.decryptCheck.setEnabled(False) self.decryptCheck.setEnabled(False)
self.decryptCheck.setGeometry(QtCore.QRect(40, 122, 171, 23)) self.decryptCheck.setGeometry(QtCore.QRect(40, 122, 130, 23))
self.decryptCheck.setChecked(False) self.decryptCheck.setChecked(False)
self.decryptCheck.setObjectName("decryptCheck") self.decryptCheck.setObjectName("decryptCheck")
self.pack_in_WAD_checkbox = QtGui.QCheckBox(self.NUStab) self.pack_in_WAD_checkbox = QtGui.QCheckBox(self.NUStab)
self.pack_in_WAD_checkbox.setGeometry(QtCore.QRect(170, 122, 181, 23)) self.pack_in_WAD_checkbox.setGeometry(QtCore.QRect(120, 122, 150, 23))
self.pack_in_WAD_checkbox.setChecked(True) self.pack_in_WAD_checkbox.setChecked(True)
self.pack_in_WAD_checkbox.setObjectName("pack_in_WAD_checkbox") self.pack_in_WAD_checkbox.setObjectName("pack_in_WAD_checkbox")
self.ChooseRegion = QtGui.QComboBox(self.NUStab)
self.ChooseRegion.setGeometry(QtCore.QRect(230, 122, 150, 23))
self.ChooseRegion.setObjectName("ChooseRegion")
self.ChooseRegion.addItem(QtCore.QString())
self.VersionlineEdit = QtGui.QLineEdit(self.NUStab) self.VersionlineEdit = QtGui.QLineEdit(self.NUStab)
self.VersionlineEdit.setGeometry(QtCore.QRect(325, 45, 71, 25)) self.VersionlineEdit.setGeometry(QtCore.QRect(325, 45, 71, 25))
self.VersionlineEdit.setObjectName("VersionlineEdit") self.VersionlineEdit.setObjectName("VersionlineEdit")
@ -262,7 +266,8 @@ class Ui_Qwad(object):
self.TitleIDlabel.setText(QtGui.QApplication.translate("Qwad", "Title ID", None, QtGui.QApplication.UnicodeUTF8)) self.TitleIDlabel.setText(QtGui.QApplication.translate("Qwad", "Title ID", None, QtGui.QApplication.UnicodeUTF8))
self.Title.setText(QtGui.QApplication.translate("Qwad", "Choose title:", None, QtGui.QApplication.UnicodeUTF8)) self.Title.setText(QtGui.QApplication.translate("Qwad", "Choose title:", None, QtGui.QApplication.UnicodeUTF8))
self.comboBox.setItemText(0, QtGui.QApplication.translate("Qwad", "Choose IOS", None, QtGui.QApplication.UnicodeUTF8)) self.comboBox.setItemText(0, QtGui.QApplication.translate("Qwad", "Choose IOS", None, QtGui.QApplication.UnicodeUTF8))
self.comboBox2.setItemText(0, QtGui.QApplication.translate("Qwad", "Choose Channel/Menu", None, QtGui.QApplication.UnicodeUTF8)) self.comboBox2.setItemText(0, QtGui.QApplication.translate("Qwad", "Choose Region First!", None, QtGui.QApplication.UnicodeUTF8))
self.ChooseRegion.setItemText(0, QtGui.QApplication.translate("Qwad", "Choose Region", None, QtGui.QApplication.UnicodeUTF8))
self.decryptCheck.setText(QtGui.QApplication.translate("Qwad", "Decrypt", None, QtGui.QApplication.UnicodeUTF8)) self.decryptCheck.setText(QtGui.QApplication.translate("Qwad", "Decrypt", None, QtGui.QApplication.UnicodeUTF8))
self.pack_in_WAD_checkbox.setText(QtGui.QApplication.translate("Qwad", "Pack as WAD", None, QtGui.QApplication.UnicodeUTF8)) self.pack_in_WAD_checkbox.setText(QtGui.QApplication.translate("Qwad", "Pack as WAD", None, QtGui.QApplication.UnicodeUTF8))
self.versionlabel.setText(QtGui.QApplication.translate("Qwad", "Version:", None, QtGui.QApplication.UnicodeUTF8)) self.versionlabel.setText(QtGui.QApplication.translate("Qwad", "Version:", None, QtGui.QApplication.UnicodeUTF8))

View File

@ -30,9 +30,10 @@ class MWQwad(QMainWindow, Ui_Qwad):
self.VersionlineEdit.setText(self.defaultversion) self.VersionlineEdit.setText(self.defaultversion)
for key in TitleIDs.sorted_copy(TitleIDs.TitleDict): for key in TitleIDs.sorted_copy(TitleIDs.TitleDict):
self.comboBox.addItem(key) self.comboBox.addItem(key)
for key in TitleIDs.sorted_copy(TitleIDs.ChannelDict): for key in TitleIDs.SupportedRegions:
self.comboBox2.addItem(key) self.ChooseRegion.addItem(key)
self.getReady() self.getReady()
self.default_region = ""
def Status(self,status): def Status(self,status):
print status print status
@ -210,7 +211,10 @@ class MWQwad(QMainWindow, Ui_Qwad):
""" """
Show the title ID of the selected title Show the title ID of the selected title
""" """
if self.comboBox.findText(selection) != 0: if self.comboBox.findText(selection) == 0:
self.enteredTitleID.setText("")
self.availableVersions.setText("")
elif self.comboBox.findText(selection) > 0:
self.enteredTitleID.enabled = False self.enteredTitleID.enabled = False
self.enteredTitleID.setText(TitleIDs.TitleDict[str(selection)]) self.enteredTitleID.setText(TitleIDs.TitleDict[str(selection)])
self.availableVersions.setText(TitleIDs.IOSdict[str(selection)]) self.availableVersions.setText(TitleIDs.IOSdict[str(selection)])
@ -220,10 +224,42 @@ class MWQwad(QMainWindow, Ui_Qwad):
""" """
Show the title ID of the selected title Show the title ID of the selected title
""" """
if self.comboBox2.findText(selection) != 0: print self.comboBox2.findText(selection)
if self.comboBox2.findText(selection) == 0:
self.enteredTitleID.setText("")
self.availableVersions.setText("")
elif self.comboBox2.findText(selection) > 0:
self.enteredTitleID.enabled = False self.enteredTitleID.enabled = False
self.enteredTitleID.setText(TitleIDs.ChannelDict[str(selection)]) if self.default_region == "JAP":
self.availableVersions.setText(TitleIDs.ChannelRegionDict[str(selection)]) self.enteredTitleID.setText(TitleIDs.ChannelJAPDict[str(selection)])
self.availableVersions.setText(TitleIDs.ChannelJAPVerDict[str(selection)])
elif self.default_region == "PAL":
self.enteredTitleID.setText(TitleIDs.ChannelPALDict[str(selection)])
self.availableVersions.setText(TitleIDs.ChannelPALVerDict[str(selection)])
elif self.default_region == "USA":
self.enteredTitleID.setText(TitleIDs.ChannelUSADict[str(selection)])
self.availableVersions.setText(TitleIDs.ChannelUSAVerDict[str(selection)])
@pyqtSignature("QString")
def on_ChooseRegion_currentIndexChanged(self, selection):
self.default_region = "JAP"
if self.default_region != "":
count = self.comboBox2.count()
while count > -1 :
self.comboBox2.removeItem(count)
count = count - 1
if self.ChooseRegion.findText(selection) != 0:
self.default_region = str(selection)
self.comboBox2.addItem("Choose Channel")
if self.default_region == "JAP":
for key in TitleIDs.sorted_copy(TitleIDs.ChannelJAPDict):
self.comboBox2.addItem(key)
elif self.default_region == "PAL":
for key in TitleIDs.sorted_copy(TitleIDs.ChannelPALDict):
self.comboBox2.addItem(key)
elif self.default_region == "USA":
for key in TitleIDs.sorted_copy(TitleIDs.ChannelUSADict):
self.comboBox2.addItem(key)
@pyqtSignature("") @pyqtSignature("")
def on_enteredTitleID_returnPressed(self): def on_enteredTitleID_returnPressed(self):

View File

@ -46,7 +46,7 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>3</number>
</property> </property>
<widget class="QWidget" name="unpacktab"> <widget class="QWidget" name="unpacktab">
<attribute name="title"> <attribute name="title">
@ -539,7 +539,7 @@
<rect> <rect>
<x>40</x> <x>40</x>
<y>120</y> <y>120</y>
<width>171</width> <width>111</width>
<height>23</height> <height>23</height>
</rect> </rect>
</property> </property>
@ -553,9 +553,9 @@
<widget class="QCheckBox" name="pack_in_WAD_checkbox"> <widget class="QCheckBox" name="pack_in_WAD_checkbox">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>220</x> <x>150</x>
<y>120</y> <y>120</y>
<width>181</width> <width>131</width>
<height>23</height> <height>23</height>
</rect> </rect>
</property> </property>
@ -633,6 +633,36 @@
</property> </property>
</item> </item>
</widget> </widget>
<widget class="QComboBox" name="ChooseRegion">
<property name="geometry">
<rect>
<x>280</x>
<y>120</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<item>
<property name="text">
<string>Choose a Region</string>
</property>
</item>
<item>
<property name="text">
<string>JAP</string>
</property>
</item>
<item>
<property name="text">
<string>USA</string>
</property>
</item>
<item>
<property name="text">
<string>PAL</string>
</property>
</item>
</widget>
</widget> </widget>
</widget> </widget>
</widget> </widget>

View File

@ -47,6 +47,8 @@ def swap_dic(original_dict):
####################### Swap Keys and Values of a dictionary ###################### ####################### Swap Keys and Values of a dictionary ######################
return dict([(v, k) for (k, v) in original_dict.iteritems()]) return dict([(v, k) for (k, v) in original_dict.iteritems()])
SupportedRegions = [ "JAP", "USA", "PAL" ]
TitleDict = { TitleDict = {
"IOS4":"0000000100000004", "IOS4":"0000000100000004",
"IOS9":"0000000100000009", "IOS9":"0000000100000009",
@ -91,69 +93,151 @@ TitleDict = {
TitleSwapDict = swap_dic(TitleDict) TitleSwapDict = swap_dic(TitleDict)
ChannelDict = { ChannelJAPDict = {
"BOOT2":"0000000100000001", "BOOT2":"0000000100000001",
"System Menu [JAP]":"0000000100000002", "System Menu":"0000000100000002",
"System Menu [PAL]":"0000000100000002",
"System Menu [KOR]":"0000000100000002",
"System Menu [USA]":"0000000100000002",
"BC":"0000000100000100", "BC":"0000000100000100",
"MIOS":"0000000100000101", "MIOS":"0000000100000101",
"BBC iPlayer [PAL]":"0001000148434A50", "Check Mii Out":"000100014841504A",
"Check Mii Out":"00010001484150**", "Digicam Print":"000100014843444A",
"Digicam Print [JAP]":"000100014843444A", "EULA":"0001000848414B4A",
"EULA":"0001000848414B**", "Everyone Votes":"0001000148414A4A",
"Everyone Votes":"0001000148414A**", "Jam With The Band":"000100014843414A",
"Jam With The Band":"00010001484341**", "Japan Food Service":"000100084843434A",
"Japan Food Service [JAP]":"000100084843434A", "Mii Channel":"0001000248414341",
"Mii Channel [ALL]":"0001000248414341",
"News":"0001000248414741", "News":"0001000248414741",
"Nintendo":"00010001484154**", "Nintendo":"000100014841544A",
"Opera":"00010001484144**", "Opera":"000100014841444A",
"Photo [ALL]":"0001000248414141", "Photo":"0001000248414141",
"Photo 1.1":"00010002484159**", "Photo 1.1":"000100024841594A",
"Region Select":"0001000848414C**", "Region Select":"0001000848414C4A",
"Shashin Channel [JAP]":"000100014843424A", "Shashin Channel":"000100014843424A",
"Shop":"00010002484142**", "Shop":"000100024841424A",
"Today & Tomorrow":"00010001484156**", "Today & Tomorrow":"000100014841564A",
"TV Friend / G-Guide [JAP]":"0001000148424E4A", "TV Friend / G-Guide":"0001000148424E4A",
"Weather":"00010002484146**", "Weather":"000100024841464A",
"Wii No Ma [JAP]":"000100014843494A", "Wii No Ma":"000100014843494A",
"Wii Speak":"00010001484346**" "Wii Speak":"000100014843464A"
} }
ChannelRegionDict = { ChannelJAPVerDict = {
"BOOT2":"4", "BOOT2":"4",
"System Menu [JAP]":"128 2.0, 192 2.1, 224 3.0, 256 3.1, 288 3.2,\ "System Menu":"128 2.0, 192 2.1, 224 3.0, 256 3.1, 288 3.2,\
\n352 3.3, 384 3.4, 416 4.0, 448 4.1, 480 4.2,\n512 4.3", \n352 3.3, 384 3.4, 416 4.0, 448 4.1, 480 4.2,\n512 4.3",
"System Menu [PAL]":"130 2.0, 162 2.1, 194 2.2, 226 3.0, 257 3.1,\
\n290 3.2, 354 3.3, 386 3.4, 418 4.0, 450 4.1,\n482 4.2, 514 4.3",
"System Menu [USA]":"97 2.0, 193 2.2, 225 3.0, 257 3.1, 289 3.2,\
\n353 3.3, 385 3.4, 417 4.0, 449 4.1, 481 4.2,\n513 4.3",
"System Menu [KOR]":"390 3.5, 454 4.1, 486 4.2, 518 4.3",
"BC":"2, 4, 5, 6", "BC":"2, 4, 5, 6",
"MIOS":"4, 5, 8, 9, 10", "MIOS":"4, 5, 8, 9, 10",
"BBC iPlayer [PAL]":"latest (PAL only)", "Check Mii Out":"1, 3, 512",
"Check Mii Out":"1, 3, 512,\n** = 45 (USA), 4A (JAP), 50 (PAL)", "Digicam Print":"latest",
"Digicam Print [JAP]":"latest (JAP only)", "EULA":"1, 2, 3,",
"EULA":"1, 2, 3,\n** = 45 (USA), 4A (JAP), 4B (KOR), 50 (PAL)", "Everyone Votes":"latest",
"Everyone Votes":"latest\n** = 45 (USA), 4A (JAP), 50 (PAL)", "Japan Food Service":"latest",
"Japan Food Service [JAP]":"latest (JAP only)", "Jam With The Band":"latest",
"Jam With The Band":"latest\n** = 4A (JAP), 50 (PAL)", "Mii Channel":"2, 3, 4, 5, 6",
"Mii Channel [ALL]":"2, 3, 4, 5, 6", "News":"3, 6, 7,",
"News":"3, 6, 7,\n** = 41 (ALL), 45 (USA), 4A (JAP), 50 (PAL)", "Nintendo":"latest",
"Nintendo":"latest\n** = 45 (USA), 4A (JAP), 50 (PAL)", "Opera":"1, 3, 257, 512, 1024",
"Opera":"1, 3, 257, 512, 1024\n** = 45 (USA), 4A (JAP), 50 (PAL)", "Photo":"1, 2",
"Photo [ALL]":"1, 2", "Photo 1.1":"1, 2, 3,",
"Photo 1.1":"1, 2, 3,\n** = 41 (ALL), 4B (KOR)", "Region Select":"1, 2,",
"Region Select":"1, 2,\n** = 45 (USA), 4A (JAP), 4B (KOR), 50 (PAL)", "Shashin Channel":"latest",
"Shashin Channel [JAP]":"latest (JAP only)", "Shop":"3, 4, 5, 6, 7, 8, 10, 13, 16,\n17, 18, 19, 20,",
"Shop":"3, 4, 5, 6, 7, 8, 10, 13, 14 (KOR only), 16,\n17, 18, 19, 20, ** = 41 (ALL), 4B (KOR)", "Today & Tomorrow":"latest",
"Today & Tomorrow":"latest, ** = 4A (JAP), 50 (PAL)", "TV Friend / G-Guide":"latest",
"TV Friend / G-Guide [JAP]":"latest (JAP only)", "Weather":"3, 6, 7",
"Weather":"3, 6, 7\n** = 41 (ALL), 45 (USA), 4A (JAP), 50 (PAL)", "Wii No Ma":"latest",
"Wii No Ma [JAP]":"latest (JAP only)", "Wii Speak":"1, 256, 512"
"Wii Speak":"1, 256, 512,\n** = 45 (USA), 4A (JAP), 50 (PAL)" }
ChannelPALDict = {
"BOOT2":"0000000100000001",
"System Menu":"0000000100000002",
"BC":"0000000100000100",
"MIOS":"0000000100000101",
"BBC iPlayer":"0001000148434A50",
"Check Mii Out":"0001000148415050",
"EULA":"0001000848414B50",
"Everyone Votes":"0001000148414A50",
"Jam With The Band":"0001000148434150",
"Mii Channel":"0001000248414341",
"News":"0001000248414741",
"Nintendo":"0001000148415450",
"Opera":"0001000148414450",
"Photo":"0001000248414141",
"Photo 1.1":"0001000248415950",
"Region Select":"0001000848414C50",
"Shop":"0001000248414250",
"Today & Tomorrow":"0001000148415650",
"Weather":"0001000248414650",
"Wii Speak":"0001000148434650"
}
ChannelPALVerDict = {
"BOOT2":"4",
"System Menu":"130 2.0, 162 2.1, 194 2.2, 226 3.0, 257 3.1,\
\n290 3.2, 354 3.3, 386 3.4, 418 4.0, 450 4.1,\n482 4.2, 514 4.3",
"BC":"2, 4, 5, 6",
"MIOS":"4, 5, 8, 9, 10",
"BBC iPlayer":"latest",
"Check Mii Out":"1, 3, 512,",
"EULA":"1, 2, 3,",
"Everyone Votes":"latest",
"Jam With The Band":"latest",
"Mii Channel":"2, 3, 4, 5, 6",
"News":"3, 6, 7,",
"Nintendo":"latest",
"Opera":"1, 3, 257, 512, 1024",
"Photo":"1, 2",
"Photo 1.1":"1, 2, 3,",
"Region Select":"1, 2,",
"Shop":"3, 4, 5, 6, 7, 8, 10, 13, 16,\n17, 18, 19, 20",
"Today & Tomorrow":"latest",
"Weather":"3, 6, 7",
"Wii Speak":"1, 256, 512"
}
ChannelUSADict = {
"BOOT2":"0000000100000001",
"System Menu":"0000000100000002",
"BC":"0000000100000100",
"MIOS":"0000000100000101",
"Check Mii Out":"0001000148415045",
"EULA":"0001000848414B45",
"Everyone Votes":"0001000148414A45",
"Jam With The Band":"0001000148434145",
"Mii Channel":"0001000248414341",
"News":"0001000248414741",
"Nintendo":"0001000148415445",
"Opera":"0001000148414445",
"Photo":"0001000248414141",
"Photo 1.1":"0001000248415945",
"Region Select":"0001000848414C45",
"Shop":"0001000248414245",
"Today & Tomorrow":"0001000148415645",
"Weather":"0001000248414645",
"Wii Speak":"0001000148434650"
}
ChannelUSAVerDict = {
"BOOT2":"4",
"System Menu":"97 2.0, 193 2.2, 225 3.0, 257 3.1, 289 3.2,\
\n353 3.3, 385 3.4, 417 4.0, 449 4.1, 481 4.2,\n513 4.3",
"BC":"2, 4, 5, 6",
"MIOS":"4, 5, 8, 9, 10",
"Check Mii Out":"1, 3, 512,",
"EULA":"1, 2, 3,",
"Everyone Votes":"latest",
"Jam With The Band":"latest",
"Mii Channel":"2, 3, 4, 5, 6",
"News":"3, 6, 7,",
"Nintendo":"latest",
"Opera":"1, 3, 257, 512, 1024",
"Photo":"1, 2",
"Photo 1.1":"1, 2, 3,",
"Region Select":"1, 2,",
"Shop":"3, 4, 5, 6, 7, 8, 10, 13, 16,\n17, 18, 19, 20",
"Today & Tomorrow":"latest",
"Weather":"3, 6, 7",
"Wii Speak":"1, 256, 512"
} }
IOSdict = { IOSdict = {