Updated the way the output dir is handled internally

No longer a global variable, wow! This change means that the "open output directory" button will always open the appropriate directory based on your current settings and simplifies output dir validation.
This commit is contained in:
2026-01-05 17:03:42 -05:00
parent ed90dd529b
commit 6a6ecd0fd5
9 changed files with 941 additions and 933 deletions

View File

@@ -19,7 +19,7 @@
<translation> {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="43"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version} </translation>
</message>
@@ -136,73 +136,73 @@
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="211"/>
<location filename="../../qt/ui/MainMenu.ui" line="221"/>
<source>Run Script</source>
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="238"/>
<location filename="../../qt/ui/MainMenu.ui" line="248"/>
<source>General Settings</source>
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<location filename="../../qt/ui/MainMenu.ui" line="495"/>
<source>Options</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<location filename="../../qt/ui/MainMenu.ui" line="499"/>
<source>Language</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<location filename="../../qt/ui/MainMenu.ui" line="513"/>
<source>Theme</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<location filename="../../qt/ui/MainMenu.ui" line="530"/>
<source>About NUSGet</source>
<translation>NUSGet </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<location filename="../../qt/ui/MainMenu.ui" line="555"/>
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
<source>System (Default)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<location filename="../../qt/ui/MainMenu.ui" line="635"/>
<source>Light</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<location filename="../../qt/ui/MainMenu.ui" line="643"/>
<source>Dark</source>
<translation></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<location filename="../../NUSGet.py" line="230"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation> (WAD/TAD) </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="251"/>
<location filename="../../qt/ui/MainMenu.ui" line="261"/>
<source>File Name</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="220"/>
<location filename="../../NUSGet.py" line="232"/>
<source>Keep encrypted contents</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="222"/>
<location filename="../../NUSGet.py" line="234"/>
<source>Create decrypted contents (*.app)</source>
<translation> (*.app) </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="223"/>
<location filename="../../NUSGet.py" line="235"/>
<source>Use local files, if they exist</source>
<translation> </translation>
</message>
@@ -211,49 +211,37 @@
<translation type="vanished">Wii U NUS ( Wii/vWii에만 )</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="324"/>
<location filename="../../qt/ui/MainMenu.ui" line="334"/>
<source>vWii Title Settings</source>
<translation>vWii </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="227"/>
<location filename="../../NUSGet.py" line="239"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Wii </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="343"/>
<location filename="../../qt/ui/MainMenu.ui" line="353"/>
<source>App Settings</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="228"/>
<location filename="../../NUSGet.py" line="240"/>
<source>Check for updates on startup</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="229"/>
<location filename="../../NUSGet.py" line="241"/>
<source>Use a custom download directory</source>
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="378"/>
<location filename="../../qt/ui/MainMenu.ui" line="388"/>
<source>Select...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="432"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<location filename="../../qt/ui/MainMenu.ui" line="487"/>
<source>Help</source>
<translation></translation>
</message>
@@ -262,16 +250,17 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<location filename="../../qt/ui/MainMenu.ui" line="541"/>
<source>About Qt</source>
<translation>Qt </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="368"/>
<location filename="../../qt/ui/MainMenu.ui" line="378"/>
<source>Output Path</source>
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="442"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -280,7 +269,7 @@ li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="vanished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
<translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
@@ -324,7 +313,7 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
&quot;NUSGet Downloads&quot; .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<location filename="../../NUSGet.py" line="116"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@@ -337,104 +326,102 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
&quot;NUSBet Downloads&quot; .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="224"/>
<location filename="../../NUSGet.py" line="236"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Wii U NUS ( Wii/vWii에만 )</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="306"/>
<location filename="../../NUSGet.py" line="318"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;NUSGet의 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="419"/>
<source>No Output Selected</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="408"/>
<location filename="../../NUSGet.py" line="420"/>
<source>You have not selected any format to output the data in!</source>
<translation> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="421"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<location filename="../../NUSGet.py" line="667"/>
<source>Invalid Download Directory</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation> !</translation>
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="426"/>
<location filename="../../NUSGet.py" line="669"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation> , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="456"/>
<location filename="../../NUSGet.py" line="453"/>
<source>Invalid Title ID</source>
<translation> ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="457"/>
<location filename="../../NUSGet.py" line="454"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID의 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="462"/>
<location filename="../../NUSGet.py" line="459"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="467"/>
<location filename="../../NUSGet.py" line="464"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt; ! .&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="474"/>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="480"/>
<location filename="../../NUSGet.py" line="477"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="500"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt; .&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="552"/>
<location filename="../../NUSGet.py" line="550"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="563"/>
<location filename="../../NUSGet.py" line="561"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID를 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<location filename="../../NUSGet.py" line="704"/>
<location filename="../../NUSGet.py" line="714"/>
<source>Restart Required</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<location filename="../../NUSGet.py" line="705"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation> NUSGet을 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<location filename="../../NUSGet.py" line="715"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation> NUSGet을 .</translation>
</message>
@@ -443,12 +430,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ID의 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="459"/>
<location filename="../../NUSGet.py" line="455"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation> ID는 16 . ID를 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="461"/>
<location filename="../../NUSGet.py" line="458"/>
<source>Title ID/Version Not Found</source>
<translation> ID/ </translation>
</message>
@@ -457,12 +444,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ID !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="464"/>
<location filename="../../NUSGet.py" line="460"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation> ID를 , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="466"/>
<location filename="../../NUSGet.py" line="463"/>
<source>Content Decryption Failed</source>
<translation> </translation>
</message>
@@ -471,12 +458,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ! .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="470"/>
<location filename="../../NUSGet.py" line="465"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>TMD . &quot; &quot; , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="473"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Ticket Not Available</source>
<translation> </translation>
</message>
@@ -485,12 +472,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="472"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation> &quot; &quot; &quot; &quot; . . .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="476"/>
<source>Unknown Error</source>
<translation> </translation>
</message>
@@ -499,12 +486,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="482"/>
<location filename="../../NUSGet.py" line="478"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation> . GitHub에서 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="501"/>
<location filename="../../NUSGet.py" line="499"/>
<source>Script Issues Occurred</source>
<translation> </translation>
</message>
@@ -513,32 +500,32 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="504"/>
<location filename="../../NUSGet.py" line="502"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="511"/>
<location filename="../../NUSGet.py" line="506"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation> . ID와 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="521"/>
<location filename="../../NUSGet.py" line="515"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>&quot; &quot; &quot; &quot; . .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="540"/>
<location filename="../../NUSGet.py" line="538"/>
<source>Script Download Failed</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="541"/>
<location filename="../../NUSGet.py" line="539"/>
<source>Open NUS Script</source>
<translation>NUS </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="542"/>
<location filename="../../NUSGet.py" line="540"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS (*.nus *.json)</translation>
</message>
@@ -547,7 +534,7 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="554"/>
<location filename="../../NUSGet.py" line="551"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>{lineno} , {colno} . .</translation>
</message>
@@ -556,24 +543,23 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ID를 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="562"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>{index} ID가 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="618"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Open Directory</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="629"/>
<location filename="../../NUSGet.py" line="668"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation> , .</translation>
<translation type="vanished"> , .</translation>
</message>
<message>
<source>Open NUS script</source>
@@ -614,12 +600,12 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
&quot;NUSBet&quot; .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="226"/>
<location filename="../../NUSGet.py" line="238"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>IOS에 (WAD에만 )</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="305"/>
<location filename="../../NUSGet.py" line="317"/>
<source>NUSGet Update Available</source>
<translation>NUSGet </translation>
</message>