mirror of
https://github.com/thewesker/lazy-dsi-file-downloader.git
synced 2025-12-20 12:31:11 -05:00
Compare commits
10 Commits
macostest6
...
patch-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6013b5f862 | ||
|
|
279fa88bbf | ||
|
|
90e8504bf8 | ||
|
|
fd6cb29d39 | ||
|
|
2a7bfd934e | ||
|
|
f09059791d | ||
|
|
9b42582d79 | ||
|
|
604ba5afa0 | ||
|
|
3466ef5b35 | ||
|
|
6df97b1e32 |
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG] - "
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Python version [if using Python]
|
||||
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
2
.github/workflows/executables.yml
vendored
2
.github/workflows/executables.yml
vendored
@@ -83,7 +83,7 @@ jobs:
|
||||
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
|
||||
- name: Create executable
|
||||
run: |
|
||||
pyinstaller --onefile --add-data "colour.py:." --add-data "tkmacosx:tkmacosx" --add-data "Darwin:Darwin" --add-data "certifi:certifi" --add-data "requests:requests" --add-data "urllib3:urllib3" --add-data "lazy.ico:." --add-data "chardet:chardet" --icon "lazy.ico" --console --name "lazy-dsi-file-downloader-${{ steps.vars.outputs.tag }}-macOS" main.py
|
||||
pyinstaller --onefile --add-data "colour.py:." --add-data "tkmacosx:tkmacosx" --add-data "Darwin:Darwin" --add-binary "Darwin/7za:Darwin" --add-data "certifi:certifi" --add-data "requests:requests" --add-data "urllib3:urllib3" --add-data "lazy.ico:." --add-data "chardet:chardet" --icon "lazy.ico" --console --name "lazy-dsi-file-downloader-${{ steps.vars.outputs.tag }}-macOS" main.py
|
||||
cd dist
|
||||
chmod +x lazy-dsi-file-downloader-${{ steps.vars.outputs.tag }}-macOS
|
||||
zip ../lazy-dsi-file-downloader-${{ steps.vars.outputs.tag }}-macOS.zip lazy-dsi-file-downloader-${{ steps.vars.outputs.tag }}-macOS
|
||||
|
||||
183
main.py
183
main.py
@@ -4,9 +4,7 @@
|
||||
# https://github.com/YourKalamity/lazy-dsi-file-downloader
|
||||
|
||||
|
||||
#Import libraries
|
||||
import tkinter
|
||||
from tkinter import messagebox
|
||||
from tkinter import filedialog
|
||||
import tkinter.font
|
||||
import tkinter.ttk
|
||||
@@ -20,51 +18,64 @@ import shutil
|
||||
from subprocess import Popen
|
||||
import zipfile
|
||||
import distutils
|
||||
from distutils import dir_util
|
||||
import webbrowser
|
||||
import threading
|
||||
from requests.exceptions import ConnectionError
|
||||
import hashlib
|
||||
from distutils import dir_util
|
||||
|
||||
pageNumber = 0
|
||||
|
||||
#Memory Pit Links - Points to GitHub repo
|
||||
dsiVersions = ["1.0 - 1.3 (USA, EUR, AUS, JPN)", "1.4 - 1.4.5 (USA, EUR, AUS, JPN)", "All versions (KOR, CHN)"]
|
||||
memoryPitLinks = ["https://github.com/YourKalamity/just-a-dsi-cfw-installer/raw/master/assets/files/memoryPit/256/pit.bin","https://github.com/YourKalamity/just-a-dsi-cfw-installer/raw/master/assets/files/memoryPit/768_1024/pit.bin"]
|
||||
dsiVersions = [
|
||||
"1.0 - 1.3 (USA, EUR, AUS, JPN)",
|
||||
"1.4 - 1.4.5 (USA, EUR, AUS, JPN)",
|
||||
"All versions (KOR, CHN)"
|
||||
]
|
||||
|
||||
linkToRepo = "https://github.com/YourKalamity/lazy-dsi-file-downloader"
|
||||
|
||||
memoryPitLinks = [
|
||||
linkToRepo + "/raw/master/assets/files/memoryPit/256/pit.bin",
|
||||
linkToRepo + "/raw/master/assets/files/memoryPit/768_1024/pit.bin"
|
||||
]
|
||||
|
||||
|
||||
#Downloader
|
||||
def downloadFile(link, destination):
|
||||
try:
|
||||
r = requests.get(link, allow_redirects=True)
|
||||
if link.find('/'):
|
||||
fileName = link.rsplit('/', 1)[1]
|
||||
if destination.endswith("/") == False:
|
||||
if destination.endswith("/") is False:
|
||||
destination = destination + "/"
|
||||
downloadLocation = destination + fileName
|
||||
open(downloadLocation, 'wb').write(r.content)
|
||||
return downloadLocation
|
||||
except ConnectionError:
|
||||
except requests.exceptions.ConnectionError as e:
|
||||
print(e)
|
||||
print("File not available, skipping...")
|
||||
return None
|
||||
|
||||
|
||||
def hashcreator(filetobechecked):
|
||||
string = hashlib.blake2b(open(filetobechecked, 'rb').read()).hexdigest()
|
||||
return string
|
||||
|
||||
#Get link of latest Github Release
|
||||
|
||||
def getLatestGitHub(usernamerepo, assetNumber):
|
||||
release = json.loads(requests.get("https://api.github.com/repos/"+usernamerepo+"/releases/latest").content)
|
||||
release = json.loads(
|
||||
requests.get(
|
||||
"https://api.github.com/repos/"+usernamerepo+"/releases/latest"
|
||||
).content)
|
||||
url = release["assets"][assetNumber]["browser_download_url"]
|
||||
return url
|
||||
|
||||
#Push text to output box
|
||||
|
||||
def outputbox(message):
|
||||
outputBox.configure(state='normal')
|
||||
outputBox.insert('end', message)
|
||||
outputBox.see(tkinter.END)
|
||||
outputBox.configure(state='disabled')
|
||||
|
||||
#Check if directory exists and has write permissions
|
||||
|
||||
def validateDirectory(directory):
|
||||
try:
|
||||
directory = str(directory)
|
||||
@@ -90,31 +101,26 @@ def validateDirectory(directory):
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def unzipper(unzipped, destination):
|
||||
with zipfile.ZipFile(unzipped, 'r') as zip_ref:
|
||||
zip_ref.extractall(destination)
|
||||
zip_ref.close()
|
||||
|
||||
|
||||
def un7zipper(_7za, zipfile, destination):
|
||||
proc = Popen([_7za,"x", "-aoa", zipfile, '-o'+destination])
|
||||
|
||||
ret_val = proc.wait()
|
||||
|
||||
while True:
|
||||
if ret_val == 0:
|
||||
break
|
||||
|
||||
un7zipper = Popen([_7za, "x", "-aoa", zipfile, '-o'+destination])
|
||||
un7zipper.wait()
|
||||
|
||||
|
||||
def start():
|
||||
|
||||
# Clear outputBox
|
||||
outputBox.configure(state='normal')
|
||||
outputBox.delete('1.0', tkinter.END)
|
||||
outputBox.configure(state='disabled')
|
||||
|
||||
sysname = platform.system()
|
||||
# Locate 7z binary
|
||||
sysname = platform.system()
|
||||
_7za = os.path.join(sysname, '7za')
|
||||
_7z = None
|
||||
if sysname in ["Darwin", "Linux"]:
|
||||
@@ -123,24 +129,28 @@ def start():
|
||||
os.chmod(_7za, stat.S_IRWXU)
|
||||
if sysname == "Windows":
|
||||
# Search for 7z in the 64-bit Windows Registry
|
||||
from winreg import OpenKey, QueryValueEx, HKEY_LOCAL_MACHINE, KEY_READ, KEY_WOW64_64KEY
|
||||
import winreg
|
||||
print('Searching for 7-Zip in the Windows registry...')
|
||||
|
||||
try:
|
||||
with OpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\\7-Zip', 0, KEY_READ | KEY_WOW64_64KEY) as hkey:
|
||||
_7z = os.path.join(QueryValueEx(hkey, 'Path')[0], '7z.exe')
|
||||
with winreg.OpenKey(
|
||||
winreg.HKEY_LOCAL_MACHINE,
|
||||
'SOFTWARE\\7-Zip', 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY
|
||||
) as hkey:
|
||||
_7z = os.path.join(winreg.QueryValueEx(
|
||||
hkey, 'Path')[0], '7z.exe')
|
||||
|
||||
if not os.path.exists(_7z):
|
||||
raise WindowsError
|
||||
|
||||
_7za = _7z
|
||||
except WindowsError:
|
||||
# Search for 7z in the 32-bit Windows Registry
|
||||
print('Searching for 7-Zip in the 32-bit Windows registry...')
|
||||
|
||||
try:
|
||||
with OpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\\7-Zip') as hkey:
|
||||
_7z = os.path.join(QueryValueEx(hkey, 'Path')[0], '7z.exe')
|
||||
with winreg.OpenKey(
|
||||
winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\7-Zip'
|
||||
) as hkey:
|
||||
_7z = os.path.join(winreg.QueryValueEx(hkey, 'Path')[0], '7z.exe')
|
||||
|
||||
if not os.path.exists(_7z):
|
||||
raise WindowsError
|
||||
@@ -154,8 +164,6 @@ def start():
|
||||
print("7-Zip found!")
|
||||
|
||||
lineCounter = 0
|
||||
|
||||
#Variables
|
||||
directory = SDentry
|
||||
if directory.endswith("\\") or directory.endswith("/"):
|
||||
directory = directory[:-1]
|
||||
@@ -164,7 +172,7 @@ def start():
|
||||
|
||||
# Validate directory
|
||||
directoryValidated = validateDirectory(directory)
|
||||
if directoryValidated == False:
|
||||
if directoryValidated is False:
|
||||
finalbackButton.configure(state='normal')
|
||||
return
|
||||
if dsiVersions.index(version) == 1:
|
||||
@@ -172,7 +180,7 @@ def start():
|
||||
elif dsiVersions.index(version) in [0, 2]:
|
||||
memoryPitDownload = memoryPitLinks[0]
|
||||
|
||||
#Creates a path called "/lazy-dsi-file-downloader-tmp/" if it does not exist
|
||||
# Creates a path called "/lazy-dsi-file-downloader-tmp/"
|
||||
cwdtemp = os.getcwd() + "/lazy-dsi-file-downloader-tmp/"
|
||||
Path(cwdtemp).mkdir(parents=True, exist_ok=True)
|
||||
|
||||
@@ -182,7 +190,7 @@ def start():
|
||||
Path(memoryPitLocation).mkdir(parents=True, exist_ok=True)
|
||||
outputbox("Downloading Memory Pit\n")
|
||||
downloadLocation = downloadFile(memoryPitDownload, memoryPitLocation)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
outputbox("Memory Pit Downloaded\n")
|
||||
print("Memory Pit Downloaded")
|
||||
|
||||
@@ -190,30 +198,24 @@ def start():
|
||||
# Download TWiLight Menu
|
||||
outputbox("Downloading TWiLight Menu ++\n")
|
||||
TWLmenuLocation = downloadFile(getLatestGitHub('DS-Homebrew/TWiLightMenu', 1), cwdtemp)
|
||||
if TWLmenuLocation != None:
|
||||
if TWLmenuLocation is not None:
|
||||
outputbox("TWiLight Menu ++ Downloaded\n")
|
||||
print("TWiLight Menu ++ Downloaded")
|
||||
|
||||
# Extract TWiLight Menu
|
||||
proc = Popen([_7za,"x", "-aoa", TWLmenuLocation, '-o'+cwdtemp, '_nds', 'hiya', 'roms','title', 'BOOT.NDS','snemul.cfg'])
|
||||
ret_val = proc.wait()
|
||||
|
||||
while True:
|
||||
if ret_val == 0:
|
||||
outputbox("TWiLight Menu ++ Extracted\n")
|
||||
print("TWiLight Menu ++ Extracted to", cwdtemp)
|
||||
break
|
||||
originalHash = hashcreator(cwdtemp + "BOOT.NDS")
|
||||
|
||||
# Move TWiLight Menu
|
||||
shutil.copy(cwdtemp + "BOOT.NDS", directory)
|
||||
|
||||
distutils.dir_util.copy_tree(cwdtemp + "_nds/", directory + "/_nds/")
|
||||
distutils.dir_util.copy_tree(cwdtemp + "hiya", directory + "/hiya/")
|
||||
distutils.dir_util.copy_tree(cwdtemp + "title", directory + "/title/")
|
||||
distutils.dir_util.copy_tree(cwdtemp + "roms", directory + "/roms/")
|
||||
|
||||
|
||||
# Some Homebrew write to the _nds folder so it is better to clear it first
|
||||
shutil.rmtree(cwdtemp +"_nds/")
|
||||
Path(cwdtemp + "_nds/").mkdir(parents=True, exist_ok=True)
|
||||
@@ -221,39 +223,35 @@ def start():
|
||||
if originalHash == comparedHash:
|
||||
print("TWiLight Menu ++ placed in", directory)
|
||||
outputbox("TWiLight Menu ++ placed on SD \n")
|
||||
|
||||
|
||||
# Download DeadSkullzJr's Cheat Database
|
||||
Path(directory + "/_nds/TWiLightMenu/extras/").mkdir(parents=True, exist_ok=True)
|
||||
outputbox("Downloading DeadSkullzJr's Cheat database\n")
|
||||
downloadLocation = downloadFile('https://bitbucket.org/DeadSkullzJr/nds-cheat-databases/raw/933c375545d3ff90854d1e210dcf4b3b31d9d585/Cheats/usrcheat.dat', directory + "/_nds/TWiLightMenu/extras/")
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
print("DeadSkullzJr's Cheat Database downloaded")
|
||||
outputbox("DeadSkullzJr's Cheat Database downloaded\n")
|
||||
|
||||
|
||||
if downloaddumptool.get() == 1:
|
||||
# Download dumpTool
|
||||
outputbox("Downloading dumpTool\n")
|
||||
downloadLocation = downloadFile(getLatestGitHub('zoogie/dumpTool', 0), directory)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
print("dumpTool downloaded")
|
||||
outputbox("dumpTool Downloaded\n")
|
||||
lineCounter = lineCounter + 1
|
||||
|
||||
if unlaunchNeeded == 1:
|
||||
# Download Unlaunch
|
||||
url = "https://problemkaputt.de/unlaunch.zip"
|
||||
url = "https://web.archive.org/web/20210207235625if_/https://problemkaputt.de/unlaunch.zip"
|
||||
outputbox("Downloading Unlaunch\n")
|
||||
unlaunchLocation = downloadFile(url, cwdtemp)
|
||||
if unlaunchLocation != None:
|
||||
if unlaunchLocation is not None:
|
||||
print("Unlaunch Downloaded")
|
||||
outputbox("Unlaunch Downloaded\n")
|
||||
lineCounter = lineCounter + 1
|
||||
|
||||
# Extract Unlaunch
|
||||
unzipper(unlaunchLocation, directory)
|
||||
|
||||
print("Unlaunch Extracted")
|
||||
|
||||
# Creates roms/nds if it does not exist
|
||||
roms = directory + "/roms/nds/"
|
||||
@@ -263,19 +261,15 @@ def start():
|
||||
# Download GodMode9i
|
||||
outputbox("Downloading GodMode9i\n")
|
||||
downloadLocation = downloadFile(getLatestGitHub('DS-Homebrew/GodMode9i', 0), cwdtemp)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
print("GodMode9i downloaded")
|
||||
outputbox("GodMode9i Downloaded\n")
|
||||
lineCounter = lineCounter + 1
|
||||
# Extract TWiLight Menu
|
||||
proc = Popen([_7za,"x", "-aoa", downloadLocation, '-o'+roms, 'GodMode9i.nds'])
|
||||
ret_val = proc.wait()
|
||||
|
||||
while True:
|
||||
if ret_val == 0:
|
||||
outputbox("GodMode9i Extracted\n")
|
||||
print("GodMode9i Extracted to", roms)
|
||||
break
|
||||
|
||||
if updateHiyaCFW.get() == 1:
|
||||
# Check if old hiyaCFW insallation exists
|
||||
@@ -284,25 +278,22 @@ def start():
|
||||
outputbox("hiyaCFW found...\n")
|
||||
outputbox("Downloading latest...\n")
|
||||
downloadLocation = downloadFile(getLatestGitHub("RocketRobz/hiyaCFW", 0), cwdtemp)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
outputbox("hiyaCFW.7z downloaded\n")
|
||||
os.remove(directory+"/hiya.dsi")
|
||||
proc = Popen([_7za,"x","-aoa",downloadLocation, "-o"+directory,"for SDNAND SD card\hiya.dsi"])
|
||||
ret_val = proc
|
||||
ret_val = proc.wait()
|
||||
shutil.move(directory + "/for SDNAND SD card/hiya.dsi", directory + "/hiya.dsi")
|
||||
shutil.rmtree(directory + "/for SDNAND SD card/")
|
||||
|
||||
|
||||
else:
|
||||
outputbox("hiya.dsi was not found\n")
|
||||
outputbox("Please run the hiyaCFW helper first")
|
||||
|
||||
|
||||
# Download and extract extra homebrew
|
||||
outputbox("Downloading other homebrew\n")
|
||||
lineCounter = lineCounter + 1
|
||||
print("Downloading other homebrew...")
|
||||
|
||||
|
||||
for count, item in enumerate(homebrewDB):
|
||||
if homebrewList[count].get() == 1:
|
||||
print("Downloading "+item["title"])
|
||||
@@ -317,13 +308,13 @@ def start():
|
||||
outputbox("Downloaded "+item["title"]+'\n')
|
||||
elif item["extension"] == "zip":
|
||||
downloadLocation = downloadFile(downloadlink, cwdtemp)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
if item["location"]["roms"] == "all":
|
||||
unzipper(downloadLocation, roms)
|
||||
outputbox("Downloaded "+item["title"]+'\n')
|
||||
elif item["extension"] == "7z":
|
||||
downloadLocation = downloadFile(downloadlink, cwdtemp)
|
||||
if downloadLocation != None:
|
||||
if downloadLocation is not None:
|
||||
if item["location"]["roms"] == "all":
|
||||
un7zipper(_7za, downloadLocation, roms)
|
||||
outputbox("Downloaded "+item["title"]+'\n')
|
||||
@@ -335,23 +326,20 @@ def start():
|
||||
if "roms" in item["location"]:
|
||||
shutil.copy(cwdtemp+item["location"]["roms"], roms)
|
||||
outputbox("Downloaded "+item["title"]+'\n')
|
||||
|
||||
|
||||
|
||||
# Delete tmp folder
|
||||
shutil.rmtree(cwdtemp)
|
||||
|
||||
# Restore button access
|
||||
finalnextButton.config(state="normal")
|
||||
window.protocol("WM_DELETE_WINDOW", lambda: closeButtonPress(window))
|
||||
|
||||
print("Done!")
|
||||
outputbox("Done!\n")
|
||||
outputbox("Press the Finish button to continue... \n")
|
||||
|
||||
|
||||
def chooseDir(source, SDentry):
|
||||
source.sourceFolder = filedialog.askdirectory(parent=source, initialdir= "/", title='Please select the directory of your SD card')
|
||||
source.sourceFolder = filedialog.askdirectory(
|
||||
parent=source, initialdir="/",
|
||||
title='Please select the root directory of your SD card')
|
||||
SDentry.delete(0, tkinter.END)
|
||||
SDentry.insert(0, source.sourceFolder)
|
||||
|
||||
@@ -360,6 +348,7 @@ def okButtonPress(self,source):
|
||||
self.destroy()
|
||||
source.deiconify()
|
||||
|
||||
|
||||
def extraHomebrew(source):
|
||||
homebrewWindow = tkinter.Toplevel(source)
|
||||
homebrewWindow.config(bg="#f0f0f0")
|
||||
@@ -368,46 +357,43 @@ def extraHomebrew(source):
|
||||
homebrewWindowLabel.pack(anchor="w")
|
||||
homebrewWindowLabel2 = tkinter.Label(homebrewWindow, text="Select additional homebrew for download then press OK", font=(bodyFont), bg="#f0f0f0", fg="#000000")
|
||||
homebrewWindowLabel2.pack(anchor="w")
|
||||
|
||||
vscrollbar = tkinter.Scrollbar(homebrewWindow)
|
||||
canvas = tkinter.Canvas(homebrewWindow, yscrollcommand=vscrollbar.set)
|
||||
canvas.config(bg="#f0f0f0")
|
||||
vscrollbar.config(command=canvas.yview)
|
||||
vscrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
|
||||
|
||||
homebrewFrame = tkinter.Frame(canvas)
|
||||
homebrewFrame.configure(bg="#f0f0f0")
|
||||
|
||||
homebrewWindow.title("Homebrew List")
|
||||
homebrewWindow.resizable(0, 0)
|
||||
canvas.pack(side="left", fill="both", expand=True)
|
||||
canvas.create_window(0, 0, window=homebrewFrame, anchor="n")
|
||||
for count, x in enumerate(homebrewDB):
|
||||
l = tkinter.Checkbutton(homebrewFrame, text=x["title"] + " by " + x["author"],font=(bigListFont), variable=homebrewList[count],bg="#f0f0f0",fg="#000000")
|
||||
l.config(selectcolor="#F0F0F0")
|
||||
l.pack(anchor = "w")
|
||||
|
||||
homebrewListMenu = tkinter.Checkbutton(homebrewFrame, text=x["title"] + " by " + x["author"], font=(bigListFont), variable=homebrewList[count], bg="#f0f0f0", fg="#000000")
|
||||
homebrewListMenu.config(selectcolor="#F0F0F0")
|
||||
homebrewListMenu.pack(anchor = "w")
|
||||
frame = tkinter.ttk.Frame(homebrewWindow, relief=tkinter.RAISED, borderwidth=1)
|
||||
frame.pack(fill=tkinter.BOTH, expand=True)
|
||||
|
||||
|
||||
okButton = Button(homebrewWindow, text = "OK", font=(buttonFont), command=lambda: okButtonPress(homebrewWindow,source), bg="#f0f0f0", fg="#000000")
|
||||
okButton.pack(side=tkinter.RIGHT, padx=5, pady=5)
|
||||
homebrewWindow.update()
|
||||
canvas.config(scrollregion=canvas.bbox("all"))
|
||||
|
||||
homebrewWindow.protocol("WM_DELETE_WINDOW", lambda: okButtonPress(homebrewWindow, source))
|
||||
|
||||
|
||||
def closeButtonPress(source):
|
||||
source.destroy()
|
||||
root.destroy()
|
||||
|
||||
|
||||
def nextWindow(windownumbertosummon):
|
||||
globals()["summonWindow"+windownumbertosummon]
|
||||
|
||||
|
||||
def donothing():
|
||||
return
|
||||
|
||||
|
||||
def summonWindow0():
|
||||
window.title("Lazy DSi file Downloader")
|
||||
window.resizable(0, 0)
|
||||
@@ -420,16 +406,13 @@ def summonWindow0():
|
||||
bottomFrame = tkinter.Frame(window)
|
||||
bottomFrame.pack(side=tkinter.BOTTOM, fill=tkinter.X, padx=5)
|
||||
bottomFrame.option_add("*Background", backgroundColour)
|
||||
first = tkinter.Label(topFrame, text="Welcome to the Lazy DSi File Downloader", font=(titleFont), fg=foregroundColour)
|
||||
first = tkinter.Label(topFrame, text="Lazy DSi File Downloader", font=(titleFont), fg=foregroundColour)
|
||||
first.grid(column=0, row=0, sticky="w", padx=5)
|
||||
|
||||
bulletpoints = [
|
||||
"This is an application made by Your Kalamity that downloads and place files for homebrew'ing your Nintendo DSi in the correct location. If you have already installed homebrew, this can also update the one you have.",
|
||||
"This is to be used in conjunction with the Nintendo DSi Modding guide by NightScript and emiyl",
|
||||
"This is to be used in conjunction with the Nintendo DSi Modding guide by NightScript, emiyl and the rest of the community.",
|
||||
"Check it out here: https://dsi.cfw.guide/",
|
||||
"By using this application, you do not need to follow any of the 'Preparing SD card' steps.",
|
||||
"This application is to be given for free. If you have paid to receive this, contact the person that sold you this application; you have been scammed.",
|
||||
"You may use any part of this application for your own purposes as long as credit is given.",
|
||||
"By using this application, you don't need to follow any of the 'Preparing SD card' steps.",
|
||||
"Please proceed by hitting the 'Next' button"
|
||||
]
|
||||
|
||||
@@ -467,6 +450,10 @@ def summonWindow1():
|
||||
selector["menu"].config(bg=buttonColour, fg=foregroundColour, font=(buttonFont))
|
||||
selector.grid(column=0, row=5, sticky="w")
|
||||
|
||||
if platform.system() == "Darwin":
|
||||
macOS_hiddentext = tkinter.Label(topFrame, text = "(Click the area above this text\n if you can't see the drop down menu) ", fg=foregroundColour, font=(bodyFont))
|
||||
macOS_hiddentext.grid(column=0, row=6, sticky="w")
|
||||
|
||||
backButton = Button(bottomFrame,text="Back", font=(buttonFont), fg=foregroundColour, bg=backButtonColour, command=lambda: [topFrame.destroy(),bottomFrame.destroy(),summonWindow0()], width=button_width)
|
||||
backButton.pack(side=tkinter.LEFT)
|
||||
nextButton = Button(bottomFrame, text="Next",width=button_width, fg=foregroundColour, bg=nextButtonColour, font=(buttonFont),command=lambda: [topFrame.destroy(), bottomFrame.destroy(), summonWindow2()])
|
||||
@@ -475,7 +462,6 @@ def summonWindow1():
|
||||
|
||||
|
||||
def summonWindow2():
|
||||
|
||||
topFrame = tkinter.Frame(window)
|
||||
topFrame.pack(expand=True, fill=tkinter.BOTH, padx=5)
|
||||
topFrame.option_add("*Background", backgroundColour)
|
||||
@@ -506,6 +492,7 @@ def summonWindow2():
|
||||
nextButton.pack(side=tkinter.RIGHT, padx=5, pady=5)
|
||||
window.protocol("WM_DELETE_WINDOW",lambda:closeButtonPress(window))
|
||||
|
||||
|
||||
def summonWindow3():
|
||||
topFrame = tkinter.Frame(window)
|
||||
topFrame.pack(expand=True, fill=tkinter.BOTH,padx=5)
|
||||
@@ -529,10 +516,12 @@ def summonWindow3():
|
||||
nextButton.pack(side=tkinter.RIGHT, padx=5, pady=5)
|
||||
window.protocol("WM_DELETE_WINDOW",lambda:closeButtonPress(window))
|
||||
|
||||
|
||||
def globalify(value):
|
||||
global SDentry
|
||||
SDentry = value
|
||||
|
||||
|
||||
def summonWindow4():
|
||||
startThread = threading.Thread(target=start, daemon=True)
|
||||
topFrame = tkinter.Frame(window)
|
||||
@@ -557,8 +546,8 @@ def summonWindow4():
|
||||
finalnextButton.pack(side=tkinter.RIGHT, padx=5, pady=5)
|
||||
window.protocol("WM_DELETE_WINDOW",lambda:donothing)
|
||||
|
||||
def summonWindow5():
|
||||
|
||||
def summonWindow5():
|
||||
topFrame = tkinter.Frame(window)
|
||||
topFrame.pack(expand=True, fill=tkinter.BOTH,padx=5)
|
||||
topFrame.option_add("*Background", backgroundColour)
|
||||
@@ -588,10 +577,10 @@ def summonWindow5():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
if(sys.version_info.major < 3):
|
||||
print("This program will ONLY work on Python 3 and above")
|
||||
sys.exit()
|
||||
os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
|
||||
|
||||
root = tkinter.Tk()
|
||||
window = tkinter.Toplevel(root)
|
||||
@@ -603,11 +592,10 @@ if __name__ == "__main__":
|
||||
for x in homebrewDB:
|
||||
homebrewList.append(tkinter.IntVar())
|
||||
|
||||
|
||||
# TKinter Vars
|
||||
downloadmemorypit = tkinter.IntVar(value=1)
|
||||
firmwareVersion = tkinter.StringVar()
|
||||
firmwareVersion.set(dsiVersions[0])
|
||||
firmwareVersion.set(dsiVersions[1])
|
||||
downloadtwlmenu = tkinter.IntVar(value=1)
|
||||
downloaddumptool = tkinter.IntVar(value=1)
|
||||
unlaunch = tkinter.IntVar(value=0)
|
||||
@@ -625,7 +613,6 @@ if __name__ == "__main__":
|
||||
size=11,
|
||||
slant="italic"
|
||||
)
|
||||
|
||||
bodyFont = tkinter.font.Font(
|
||||
family="Segoe UI",
|
||||
underline=False,
|
||||
@@ -637,30 +624,26 @@ if __name__ == "__main__":
|
||||
size=11,
|
||||
weight="bold"
|
||||
)
|
||||
|
||||
bigListFont = tkinter.font.Font(
|
||||
family="Segoe UI",
|
||||
underline=False,
|
||||
size=9
|
||||
)
|
||||
|
||||
paragraphFont = tkinter.font.Font(
|
||||
family="Segoe UI",
|
||||
size=10
|
||||
)
|
||||
|
||||
if platform.system() == "Darwin": #Why is macOS so difficult...
|
||||
if platform.system() == "Darwin":
|
||||
from tkmacosx import Button
|
||||
backgroundColour = "#f0f0f0" #How dull and boring
|
||||
backgroundColour = "#f0f0f0"
|
||||
foregroundColour = "black"
|
||||
buttonColour = "#f0f0f0"
|
||||
backButtonColour = "#f0f0f0"
|
||||
nextButtonColour = "#f0f0f0"
|
||||
button_width = 80
|
||||
folder_width = 250
|
||||
|
||||
|
||||
else: #Non Jeve Stobs worshippers
|
||||
else:
|
||||
from tkinter import Button
|
||||
backgroundColour = "#252a34"
|
||||
foregroundColour = "white"
|
||||
|
||||
Reference in New Issue
Block a user