Compare commits
38 Commits
Author | SHA1 | Date |
---|---|---|
Dmitry Isaenko | 5ee9f6aacd | |
Dmitry Isaenko | 7f9b3a7598 | |
01ut | cd9e3ddf30 | |
Kevin | Secret Jupiter | d1ac1f5403 | |
Dmitry Isaenko | e9b0fa309e | |
Dmitry Isaenko | c0bf247666 | |
Dmitry Isaenko | 66758ffdb9 | |
Justin Dhillon | b32986682e | |
Justin Dhillon | 2935d4ef55 | |
Justin Dhillon | 353b058388 | |
Justin Dhillon | 5b3ea13b08 | |
Justin Dhillon | 1251d39a6b | |
Justin Dhillon | 57e7f72531 | |
Dmitry Isaenko | 88ca0815ed | |
Dmitry Isaenko | 66e7338fa5 | |
Dmitry Isaenko | fa236cb1ad | |
Justin Dhillon | 5b120204ef | |
Justin Dhillon | 94ad332bf7 | |
Justin Dhillon | b89bfa806d | |
Justin Dhillon | abf7621f28 | |
Justin Dhillon | c5688f79df | |
Justin Dhillon | 25910ac94c | |
Justin Dhillon | 474f90a427 | |
Dmitry Isaenko | 8348c9f2ab | |
Dmitry Isaenko | 47045b2aeb | |
Dmitry Isaenko | 67351642ae | |
Dmitry Isaenko | 3909371774 | |
Dmitry Isaenko | 1e4593afb6 | |
DDinghoya | d3faa384ae | |
Dmitry Isaenko | 9d4cac26e5 | |
requinDr | ad211cd562 | |
requinDr | 4bdc5ffb63 | |
Dmitry Isaenko | 7db7af0cf8 | |
exiori | 6052d385d9 | |
exiori | f6b875af0b | |
Dmitry Isaenko | 01a25f071a | |
Dmitry Isaenko | c1651e874b | |
Dmitry Isaenko | 94845c1411 |
15
.drone.yml
15
.drone.yml
|
@ -16,6 +16,7 @@ steps:
|
|||
image: alpine:latest
|
||||
commands:
|
||||
- mkdir -p /builds/ns-usbloader
|
||||
- echo target/ns-usbloader-*jar
|
||||
- cp target/ns-usbloader-*jar /builds/ns-usbloader/
|
||||
volumes:
|
||||
- name: builds
|
||||
|
@ -28,20 +29,25 @@ steps:
|
|||
- misc/windows/update_version.sh
|
||||
- cd misc/windows/NSIS
|
||||
- makensis -V4 ./installer.nsi
|
||||
- echo Installer-*.exe
|
||||
- cp Installer-*.exe /builds/ns-usbloader/
|
||||
- rm ./NS-USBloader.exe
|
||||
- rm ./Installer-*.exe
|
||||
- cd ../../../
|
||||
volumes:
|
||||
- name: builds
|
||||
path: /builds
|
||||
- name: jdk
|
||||
path: /drone/src/misc/windows/NSIS/jdk
|
||||
- name: drivers
|
||||
path: /drone/src/misc/windows/NSIS/Drivers_set.exe
|
||||
|
||||
- name: emerge-legacy-artifact
|
||||
image: maven:3-openjdk-17
|
||||
commands:
|
||||
- . ./.make_legacy
|
||||
- mvn -B -DskipTests clean package
|
||||
- echo target/ns-usbloader-*jar
|
||||
- cp target/ns-usbloader-*jar /builds/ns-usbloader/
|
||||
volumes:
|
||||
- name: m2
|
||||
|
@ -56,6 +62,7 @@ steps:
|
|||
- misc/windows/update_version.sh legacy
|
||||
- cd misc/windows/NSIS
|
||||
- makensis -V4 ./installer.nsi
|
||||
- echo Installer-*.exe
|
||||
- cp Installer-*.exe /builds/ns-usbloader/
|
||||
- cd ../../../
|
||||
volumes:
|
||||
|
@ -63,12 +70,15 @@ steps:
|
|||
path: /builds
|
||||
- name: jdk
|
||||
path: /drone/src/misc/windows/NSIS/jdk
|
||||
- name: drivers
|
||||
path: /drone/src/misc/windows/NSIS/Drivers_set.exe
|
||||
|
||||
- name: emerge-mac-m1-artifact
|
||||
image: maven:3-openjdk-17
|
||||
commands:
|
||||
- . ./.make_m1
|
||||
- mvn -B -DskipTests clean package
|
||||
- echo target/ns-usbloader-*jar
|
||||
- cp target/ns-usbloader-*jar /builds/ns-usbloader/
|
||||
volumes:
|
||||
- name: m2
|
||||
|
@ -85,4 +95,7 @@ volumes:
|
|||
path: /home/www/builds
|
||||
- name: jdk
|
||||
host:
|
||||
path: /home/docker/drone/files/assembly/openjdk-19.0.2
|
||||
path: /home/docker/drone/files/assembly/openjdk-19.0.2
|
||||
- name: drivers
|
||||
host:
|
||||
path: /home/docker/drone/files/assembly/Drivers_set.exe
|
|
@ -0,0 +1,2 @@
|
|||
offsets.txt
|
||||
environment.txt
|
28
README.md
28
README.md
|
@ -49,8 +49,8 @@ Sometimes I add new posts about this project [on my blog page](https://developer
|
|||
* Korean by [DDinghoya](https://github.com/DDinghoya)
|
||||
* Portuguese by [almircanella](https://github.com/almircanella)
|
||||
* Spanish by [/u/cokimaya007](https://www.reddit.com/u/cokimaya007), [Kuziel Alejandro](https://github.com/Uzi-Oni)
|
||||
* Chinese (Simplified) by [Huang YunKun (htynkn)](https://github.com/htynkn), [FFT9 (XXgame Group)](https://www.xxgame.net)
|
||||
* Chinese (Traditional) by [qazrfv1234](https://github.com/qazrfv1234), [FFT9 (XXgame Group)](https://www.xxgame.net)
|
||||
* Chinese (Simplified) by [Huang YunKun (htynkn)](https://github.com/htynkn), [FFT9 (XXgame Group)](http://xxgame.net/)
|
||||
* Chinese (Traditional) by [qazrfv1234](https://github.com/qazrfv1234), [FFT9 (XXgame Group)](http://xxgame.net/)
|
||||
* German by [Swarsele](https://github.com/Swarsele)
|
||||
* Vietnamese by [Hai Phan Nguyen (pnghai)](https://github.com/pnghai)
|
||||
* Czech by [Spenaat](https://github.com/spenaat)
|
||||
|
@ -65,7 +65,8 @@ Sometimes I add new posts about this project [on my blog page](https://developer
|
|||
|
||||
### System requirements
|
||||
|
||||
JDK 11 for macOS and Linux
|
||||
- JDK 11 for macOS and Linux
|
||||
- libusb, if you have a Mac with Apple Silicon (install via `brew install libusb`)
|
||||
|
||||
### Supported Goldleaf versions
|
||||
| Goldleaf version | NS-USBloader version |
|
||||
|
@ -127,6 +128,8 @@ Set 'Security & Privacy' settings if needed.
|
|||
|
||||
Download application with `-m1.jar` postfix.
|
||||
|
||||
Manually install libusb with Homebrew by running `brew install libusb` in your Terminal.
|
||||
|
||||
##### Windows:
|
||||
|
||||
* Once application opens click on 'Gear' icon.
|
||||
|
@ -255,17 +258,14 @@ This is non-commercial project.
|
|||
|
||||
Nevertheless, I'll be more than happy if you find a chance to make a donation for charity to people I trust:
|
||||
|
||||
* BTC → bc1q67j4yjmt67mes0hv03fyydjejmw6ahw0v932su
|
||||
* ETH → 0x82Ab0ddE183C12cAa6eD61DF3671675C4bdC42fc
|
||||
* DOGE → D8o42b952yjEWZ5Ajq4ZtjGvx1kR7DyDHm
|
||||
* DOT → 1511KQqm6Mme5Za4rtgsSdzCyuEzQ6CC1a6XLxQJXXW3GWpo
|
||||
* LTC → LRFXTN4rTEiQ3RxzssMFC5S1WMRd1raN2Q
|
||||
* LUNA → terra1n0sfmljpuu87h7lrn9nzxadfa3qxthlmvtq5lf
|
||||
* TRX → TU3AyFkF12Jg1yApcXGz91R8xKvXV1EzkW
|
||||
* ETC → 0x78A946fC9708c024298c9a4f8961A49B7a830d53
|
||||
* USDT (TRC20) → TU3AyFkF12Jg1yApcXGz91R8xKvXV1EzkW
|
||||
* USDT (ERC20) → 0x82Ab0ddE183C12cAa6eD61DF3671675C4bdC42fc
|
||||
* XRP → r91kfRiRsvnDp7evHNmXkrL3yAL7eakWk1
|
||||
* BTC → 1BnErE3n6LEdEjvvFrt4FMdXd1UGa5L7Ge
|
||||
* ETH → 0x9c29418129553bE171181bb6245151aa0576A3b7
|
||||
* DOT → 15BWSwmA4xEHZdq3gGftWg7dctMQk9vXwqA92Pg22gsxDweF
|
||||
* LTC → ltc1qfjvzxm04tax077ra9rvmxdnsum8alws2n20fag
|
||||
* ETC → 0xe9064De288C8454942533a005AB72515e689226E
|
||||
* USDT (TRC20) → TKgp5SvJGiqYNFtvJfEDGLFbezFEHq1tBy
|
||||
* USDT (ERC20) → 0x9c29418129553bE171181bb6245151aa0576A3b7
|
||||
* XRP → rGmGaLsKmSUbxWfyi4mujtVamTzj3Nqxbw.
|
||||
|
||||
Thanks!
|
||||
|
||||
|
|
|
@ -92,6 +92,7 @@ Section "NS-USBloader" Install
|
|||
|
||||
SetOutPath "$INSTDIR"
|
||||
file /r jdk
|
||||
file Drivers_set.exe
|
||||
file NS-USBloader.exe
|
||||
file logo.ico
|
||||
|
||||
|
@ -143,6 +144,7 @@ Section "Uninstall"
|
|||
|
||||
;Delete installed files
|
||||
RMDir /r "$INSTDIR\jdk\*"
|
||||
Delete "$INSTDIR\Drivers_set.exe"
|
||||
Delete "$INSTDIR\NS-USBloader.exe"
|
||||
Delete "$INSTDIR\logo.ico"
|
||||
Delete "$SMPROGRAMS\Uninstall.exe"
|
||||
|
|
4
pom.xml
4
pom.xml
|
@ -8,7 +8,7 @@
|
|||
<name>NS-USBloader</name>
|
||||
|
||||
<artifactId>ns-usbloader</artifactId>
|
||||
<version>7.0</version> <!-- linked via script to NSIS system. Should have format of 2 blocks of numbers. May have end on '-SNAPSHOT' -->
|
||||
<version>7.1</version> <!-- linked via script to NSIS system. Should have format of 2 blocks of numbers -->
|
||||
|
||||
<url>https://redrise.ru</url>
|
||||
<description>NS multi-tool</description>
|
||||
|
@ -55,7 +55,7 @@
|
|||
|
||||
<issueManagement>
|
||||
<system>GitHub</system>
|
||||
<url>https://github.com/developer_su/${project.artifactId}/issues</url>
|
||||
<url>https://github.com/developersu/${project.artifactId}/issues</url>
|
||||
</issueManagement>
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
*/
|
||||
package nsusbloader;
|
||||
|
||||
import javafx.scene.text.Font;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
|
@ -27,22 +29,26 @@ public class AppPreferences {
|
|||
|
||||
private final Preferences preferences;
|
||||
private final Locale locale;
|
||||
public static final String[] goldleafSupportedVersions = {"v0.5", "v0.7.x", "v0.8-0.9", "v0.10"};
|
||||
public static final String[] GOLDLEAF_SUPPORTED_VERSIONS = {"v0.5", "v0.7.x", "v0.8-0.9", "v0.10+"};
|
||||
private static final Font DEFAULT_FONT = Font.getDefault();
|
||||
|
||||
private AppPreferences(){
|
||||
this.preferences = Preferences.userRoot().node("NS-USBloader");
|
||||
String localeCode = preferences.get("locale", Locale.getDefault().toString());
|
||||
this.locale = new Locale(localeCode.substring(0, 2), localeCode.substring(3));
|
||||
if (localeCode.length() < 5)
|
||||
this.locale = new Locale("en", "EN");
|
||||
else
|
||||
this.locale = new Locale(localeCode.substring(0, 2), localeCode.substring(3));
|
||||
}
|
||||
|
||||
public String getTheme(){
|
||||
String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user to change settings manually
|
||||
String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user change settings manually
|
||||
if (!theme.matches("(^/res/app_dark.css$)|(^/res/app_light.css$)"))
|
||||
theme = "/res/app_dark.css";
|
||||
return theme;
|
||||
}
|
||||
public int getProtocol(){
|
||||
int protocolIndex = preferences.getInt("protocol_index", 0); // Don't let user to change settings manually
|
||||
int protocolIndex = preferences.getInt("protocol_index", 0); // Don't let user change settings manually
|
||||
if (protocolIndex < 0 || protocolIndex > 1)
|
||||
protocolIndex = 0;
|
||||
return protocolIndex;
|
||||
|
@ -50,7 +56,7 @@ public class AppPreferences {
|
|||
public void setProtocol(int protocolIndex){ preferences.putInt("protocol_index", protocolIndex); }
|
||||
|
||||
public String getNetUsb(){
|
||||
String netUsb = preferences.get("NETUSB", "USB"); // Don't let user to change settings manually
|
||||
String netUsb = preferences.get("NETUSB", "USB"); // Don't let user change settings manually
|
||||
if (!netUsb.matches("(^USB$)|(^NET$)"))
|
||||
netUsb = "USB";
|
||||
return netUsb;
|
||||
|
@ -114,7 +120,7 @@ public class AppPreferences {
|
|||
public void setNspFileFilterGL(boolean prop){preferences.putBoolean("GL_NSP_FILTER", prop);}
|
||||
|
||||
public int getGlVersion(){
|
||||
return preferences.getInt("gl_ver", goldleafSupportedVersions.length - 1);
|
||||
return preferences.getInt("gl_ver", GOLDLEAF_SUPPORTED_VERSIONS.length - 1);
|
||||
}
|
||||
public void setGlVersion(int version){ preferences.putInt("gl_ver", version);}
|
||||
|
||||
|
@ -147,6 +153,19 @@ public class AppPreferences {
|
|||
|
||||
public boolean getPatchesTabInvisible(){return preferences.getBoolean("patches_tab_visible", true); }
|
||||
public void setPatchesTabInvisible(boolean value){preferences.putBoolean("patches_tab_visible", value);}
|
||||
public String getPatchOffset(String type, int moduleNumber, int offsetId){ return preferences.get(String.format("%s_%02x_%02x", type, moduleNumber, offsetId), ""); }
|
||||
public void setPatchOffset(String fullTypeSpecifier, String offset){ preferences.put(fullTypeSpecifier, offset); }
|
||||
public String getPatchPattern(String type, int moduleNumber, int offsetId){ return preferences.get(String.format("%s_%02x_%02x", type, moduleNumber, offsetId), ""); }
|
||||
public void setPatchPattern(String fullTypeSpecifier, String offset){ preferences.put(fullTypeSpecifier, offset); }
|
||||
|
||||
public String getFontFamily(){ return preferences.get("font_family", DEFAULT_FONT.getFamily()); }
|
||||
public double getFontSize(){ return preferences.getDouble("font_size", DEFAULT_FONT.getSize()); }
|
||||
public String getFontStyle(){
|
||||
final String fontFamily = preferences.get("font_family", DEFAULT_FONT.getFamily());
|
||||
final double fontSize = preferences.getDouble("font_size", DEFAULT_FONT.getSize());
|
||||
|
||||
return String.format("-fx-font-family: \"%s\"; -fx-font-size: %.0f;", fontFamily, fontSize);
|
||||
}
|
||||
public void setFontStyle(String fontFamily, double size){
|
||||
preferences.put("font_family", fontFamily);
|
||||
preferences.putDouble("font_size", size);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,6 +87,7 @@ public class FilesDropHandle {
|
|||
Scene mainScene = new Scene(parentVBox, 310, 185);
|
||||
|
||||
mainScene.getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
parentVBox.setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
stage.setOnHidden(windowEvent -> filesDropHandleTask.cancel(true ) );
|
||||
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
Copyright 2019-2023 Dmitry Isaenko
|
||||
|
||||
This file is part of NS-USBloader.
|
||||
|
||||
NS-USBloader 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.
|
||||
|
||||
NS-USBloader 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 NS-USBloader. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package nsusbloader.Controllers;
|
||||
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.stage.Stage;
|
||||
import nsusbloader.AppPreferences;
|
||||
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class FontSettings {
|
||||
public FontSettings(ResourceBundle resourceBundle) throws Exception{
|
||||
Stage stage = new Stage();
|
||||
stage.setMinWidth(650);
|
||||
stage.setMinHeight(450);
|
||||
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/FontSettings.fxml"));
|
||||
fxmlLoader.setResources(resourceBundle);
|
||||
|
||||
stage.setTitle(resourceBundle.getString("tab2_Btn_ApplicationFont"));
|
||||
stage.getIcons().addAll(
|
||||
new Image("/res/app_icon32x32.png"),
|
||||
new Image("/res/app_icon48x48.png"),
|
||||
new Image("/res/app_icon64x64.png"),
|
||||
new Image("/res/app_icon128x128.png"));
|
||||
|
||||
Parent parent = fxmlLoader.load();
|
||||
Scene fontScene = new Scene(parent, 660, 525);
|
||||
|
||||
fontScene.getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
parent.setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
stage.setAlwaysOnTop(true);
|
||||
stage.setScene(fontScene);
|
||||
stage.show();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
Copyright 2019-2023 Dmitry Isaenko
|
||||
|
||||
This file is part of NS-USBloader.
|
||||
|
||||
NS-USBloader 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.
|
||||
|
||||
NS-USBloader 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 NS-USBloader. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package nsusbloader.Controllers;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.text.Font;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.Stage;
|
||||
import nsusbloader.AppPreferences;
|
||||
import nsusbloader.MediatorControl;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class FontSettingsController implements Initializable {
|
||||
private final AppPreferences preferences = AppPreferences.getInstance();
|
||||
|
||||
@FXML
|
||||
private Button applyBtn, cancelBtn, resetBtn;
|
||||
|
||||
@FXML
|
||||
private ListView<String> fontsLv;
|
||||
|
||||
@FXML
|
||||
private Spinner<Double> fontSizeSpinner;
|
||||
|
||||
@FXML
|
||||
private Text exampleText;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
applyBtn.setDefaultButton(true);
|
||||
applyBtn.getStyleClass().add("buttonUp");
|
||||
applyBtn.setOnAction(e -> applyChanges());
|
||||
|
||||
cancelBtn.setCancelButton(true);
|
||||
cancelBtn.setOnAction(e -> closeWindow());
|
||||
|
||||
resetBtn.setOnAction(e -> reset());
|
||||
|
||||
fontsLv.setCellFactory(item -> getCellFactory());
|
||||
fontsLv.setItems(getFonts());
|
||||
fontsLv.getSelectionModel().select(preferences.getFontFamily());
|
||||
fontsLv.getSelectionModel().selectedIndexProperty().addListener(
|
||||
(observableValue, oldValueNumber, newValueNumber) -> setExampleTextFont());
|
||||
fontsLv.setFixedCellSize(40.0);
|
||||
|
||||
fontSizeSpinner.setEditable(false);
|
||||
fontSizeSpinner.setValueFactory(getValueFactory());
|
||||
|
||||
exampleText.setText(resourceBundle.getString("fontPreviewText"));
|
||||
|
||||
fontSizeSpinner.getValueFactory().setValue(preferences.getFontSize());
|
||||
}
|
||||
|
||||
private ListCell<String> getCellFactory(){
|
||||
return new ListCell<>(){
|
||||
@Override
|
||||
protected void updateItem(String item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
if (empty || item == null)
|
||||
return;
|
||||
Font font = Font.font(item);
|
||||
Text itemText = new Text(item);
|
||||
itemText.setFont(font);
|
||||
setGraphic(itemText);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private ObservableList<String> getFonts(){
|
||||
ObservableList<String> fonts = FXCollections.observableArrayList();
|
||||
fonts.addAll(Font.getFamilies());
|
||||
|
||||
return fonts;
|
||||
}
|
||||
|
||||
private SpinnerValueFactory<Double> getValueFactory(){
|
||||
return new SpinnerValueFactory<>() {
|
||||
@Override
|
||||
public void decrement(int i) {
|
||||
double value = getValue() - i;
|
||||
if (value < 4)
|
||||
return;
|
||||
|
||||
setValue(value);
|
||||
setExampleTextFont(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increment(int i) {
|
||||
double value = getValue() + i;
|
||||
if (value > 100)
|
||||
return;
|
||||
|
||||
setValue(value);
|
||||
setExampleTextFont(value);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void setExampleTextFont(){
|
||||
setExampleTextFont(fontsLv.getSelectionModel().getSelectedItem(), fontSizeSpinner.getValue());
|
||||
}
|
||||
private void setExampleTextFont(double size){
|
||||
setExampleTextFont(fontsLv.getSelectionModel().getSelectedItem(), size);
|
||||
}
|
||||
private void setExampleTextFont(String font, double size){
|
||||
exampleText.setFont(Font.font(font, size));
|
||||
}
|
||||
|
||||
private void reset(){
|
||||
final Font defaultFont = Font.getDefault();
|
||||
exampleText.setFont(defaultFont);
|
||||
|
||||
fontsLv.getSelectionModel().select(defaultFont.getFamily());
|
||||
fontSizeSpinner.getValueFactory().setValue(defaultFont.getSize());
|
||||
}
|
||||
|
||||
private void applyChanges(){
|
||||
final String fontFamily = fontsLv.getSelectionModel().getSelectedItem();
|
||||
final double fontSize = fontSizeSpinner.getValue().intValue();
|
||||
|
||||
preferences.setFontStyle(fontFamily, fontSize);
|
||||
MediatorControl.getInstance().updateApplicationFont(fontFamily, fontSize);
|
||||
|
||||
closeWindow();
|
||||
}
|
||||
|
||||
private void closeWindow(){
|
||||
((Stage) cancelBtn.getScene().getWindow()).close();
|
||||
}
|
||||
}
|
|
@ -169,7 +169,7 @@ public class PatchesController implements Initializable {
|
|||
continue;
|
||||
if (! lineValues[1].matches("^(([0-9A-Fa-f]{2})|\\.)+?$"))
|
||||
continue;
|
||||
preferences.setPatchOffset(lineValues[0], lineValues[1]);
|
||||
preferences.setPatchPattern(lineValues[0], lineValues[1]);
|
||||
|
||||
System.out.println(pointer[0]+"_"+pointer[1]+"_"+pointer[2]+" = "+lineValues[1]);
|
||||
count++;
|
||||
|
|
|
@ -43,6 +43,9 @@ import java.util.ResourceBundle;
|
|||
public class SettingsBlockGenericController implements Initializable {
|
||||
@FXML
|
||||
private ChoiceBox<LocaleHolder> languagesChB;
|
||||
@FXML
|
||||
private Button fontSelectBtn;
|
||||
|
||||
@FXML
|
||||
private Button submitLanguageBtn,
|
||||
driversInstallBtn,
|
||||
|
@ -81,6 +84,14 @@ public class SettingsBlockGenericController implements Initializable {
|
|||
newVersionHyperlink.setOnAction(e-> hostServices.showDocument(newVersionHyperlink.getText()));
|
||||
checkForUpdBtn.setOnAction(e->checkForUpdatesAction());
|
||||
submitLanguageBtn.setOnAction(e->languageButtonAction());
|
||||
fontSelectBtn.setOnAction(e -> openFontSettings());
|
||||
}
|
||||
private void openFontSettings() {
|
||||
try {
|
||||
new FontSettings(resourceBundle);
|
||||
} catch (Exception ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDriversInstallFeature(){
|
||||
|
|
|
@ -38,7 +38,7 @@ public class SettingsBlockGoldleafController implements Initializable {
|
|||
final AppPreferences preferences = AppPreferences.getInstance();
|
||||
|
||||
nspFilesFilterForGLCB.setSelected(preferences.getNspFileFilterGL());
|
||||
glVersionChoiceBox.getItems().addAll(AppPreferences.goldleafSupportedVersions);
|
||||
glVersionChoiceBox.getItems().addAll(AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS);
|
||||
|
||||
glVersionChoiceBox.getSelectionModel().select(preferences.getGlVersion());
|
||||
}
|
||||
|
|
|
@ -60,4 +60,8 @@ public class MediatorControl {
|
|||
getPatchesController().notifyThreadStarted(isActive, appModuleType);
|
||||
}
|
||||
public synchronized boolean getTransferActive() { return this.isTransferActive.get(); }
|
||||
public void updateApplicationFont(String fontFamily, double fontSize){
|
||||
mainController.logArea.getScene().getRoot().setStyle(
|
||||
String.format("-fx-font-family: \"%s\"; -fx-font-size: %.0f;", fontFamily, fontSize));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,7 @@ public class NSLMain extends Application {
|
|||
);
|
||||
|
||||
mainScene.getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
root.setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
primaryStage.setScene(mainScene);
|
||||
primaryStage.show();
|
||||
|
|
|
@ -44,7 +44,6 @@ public class ServiceWindow {
|
|||
alertBox.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
|
||||
alertBox.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
|
||||
alertBox.setResizable(true); // Java bug workaround for JDR11/OpenJFX. TODO: nothing. really.
|
||||
alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
|
||||
Stage dialogStage = (Stage) alertBox.getDialogPane().getScene().getWindow();
|
||||
dialogStage.setAlwaysOnTop(true);
|
||||
|
@ -54,6 +53,9 @@ public class ServiceWindow {
|
|||
new Image("/res/warn_ico64x64.png"),
|
||||
new Image("/res/warn_ico128x128.png")
|
||||
);
|
||||
alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
dialogStage.getScene().getRoot().setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
alertBox.show();
|
||||
dialogStage.toFront();
|
||||
}
|
||||
|
@ -68,7 +70,6 @@ public class ServiceWindow {
|
|||
alertBox.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
|
||||
alertBox.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
|
||||
alertBox.setResizable(true); // Java bug workaround for JDR11/OpenJFX. TODO: nothing. really.
|
||||
alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
|
||||
Stage dialogStage = (Stage) alertBox.getDialogPane().getScene().getWindow();
|
||||
dialogStage.setAlwaysOnTop(true);
|
||||
|
@ -78,6 +79,10 @@ public class ServiceWindow {
|
|||
new Image("/res/ask_ico64x64.png"),
|
||||
new Image("/res/ask_ico128x128.png")
|
||||
);
|
||||
|
||||
alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
dialogStage.getScene().getRoot().setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
dialogStage.toFront();
|
||||
|
||||
Optional<ButtonType> result = alertBox.showAndWait();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2019-2020 Dmitry Isaenko
|
||||
Copyright 2019-2023 Dmitry Isaenko
|
||||
|
||||
This file is part of NS-USBloader.
|
||||
|
||||
|
@ -25,8 +25,8 @@ import java.net.URL;
|
|||
|
||||
public class DownloadDriversTask extends Task<String> {
|
||||
|
||||
public static final long DRIVERS_FILE_SIZE = 3857375;
|
||||
private static final String driverFileLocationURL = "https://github.com/developersu/NS-Drivers/releases/download/v1.0/Drivers_set.exe";
|
||||
private static final long driversFileSize = 3857375;
|
||||
|
||||
private static File driversInstallerFile;
|
||||
|
||||
|
@ -38,7 +38,7 @@ public class DownloadDriversTask extends Task<String> {
|
|||
}
|
||||
|
||||
private boolean isDriversDownloaded(){
|
||||
return driversInstallerFile != null && driversInstallerFile.length() == driversFileSize;
|
||||
return driversInstallerFile != null && driversInstallerFile.length() == DRIVERS_FILE_SIZE;
|
||||
}
|
||||
|
||||
private boolean downloadDrivers(){
|
||||
|
@ -64,7 +64,7 @@ public class DownloadDriversTask extends Task<String> {
|
|||
while ((bytesRead = bis.read(dataBuffer, 0, 1024)) != -1) {
|
||||
fos.write(dataBuffer, 0, bytesRead);
|
||||
totalRead += bytesRead;
|
||||
updateProgress(totalRead, driversFileSize);
|
||||
updateProgress(totalRead, DRIVERS_FILE_SIZE);
|
||||
if (this.isCancelled()) {
|
||||
bis.close();
|
||||
fos.close();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2019-2020 Dmitry Isaenko
|
||||
Copyright 2019-2023 Dmitry Isaenko
|
||||
|
||||
This file is part of NS-USBloader.
|
||||
|
||||
|
@ -32,16 +32,32 @@ import javafx.scene.layout.VBox;
|
|||
import javafx.stage.Stage;
|
||||
import nsusbloader.AppPreferences;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class DriversInstall {
|
||||
|
||||
private static volatile boolean isRunning;
|
||||
|
||||
private final ResourceBundle resourceBundle;
|
||||
private Label runInstallerStatusLabel;
|
||||
|
||||
public DriversInstall(ResourceBundle rb){
|
||||
this.resourceBundle = rb;
|
||||
|
||||
if (isDriversDistributesWithExecutable())
|
||||
runInstaller("Drivers_set.exe");
|
||||
else
|
||||
runDownloadProcess();
|
||||
}
|
||||
|
||||
private boolean isDriversDistributesWithExecutable(){
|
||||
final File drivers = new File("Drivers_set.exe");
|
||||
|
||||
return drivers.length() == DownloadDriversTask.DRIVERS_FILE_SIZE;
|
||||
}
|
||||
|
||||
private void runDownloadProcess(){
|
||||
if (DriversInstall.isRunning)
|
||||
return;
|
||||
|
||||
|
@ -49,11 +65,11 @@ public class DriversInstall {
|
|||
|
||||
DownloadDriversTask downloadTask = new DownloadDriversTask();
|
||||
|
||||
Button cancelButton = new Button(rb.getString("btn_Cancel"));
|
||||
Button cancelButton = new Button(resourceBundle.getString("btn_Cancel"));
|
||||
|
||||
HBox hBoxInformation = new HBox();
|
||||
hBoxInformation.setAlignment(Pos.TOP_LEFT);
|
||||
hBoxInformation.getChildren().add(new Label(rb.getString("windowBodyDownloadDrivers")));
|
||||
hBoxInformation.getChildren().add(new Label(resourceBundle.getString("windowBodyDownloadDrivers")));
|
||||
|
||||
ProgressBar progressBar = new ProgressBar();
|
||||
progressBar.setPrefWidth(Double.MAX_VALUE);
|
||||
|
@ -90,7 +106,7 @@ public class DriversInstall {
|
|||
|
||||
Stage stage = new Stage();
|
||||
|
||||
stage.setTitle(rb.getString("windowTitleDownloadDrivers"));
|
||||
stage.setTitle(resourceBundle.getString("windowTitleDownloadDrivers"));
|
||||
stage.getIcons().addAll(
|
||||
new Image("/res/dwnload_ico32x32.png"), //TODO: REDRAW
|
||||
new Image("/res/dwnload_ico48x48.png"),
|
||||
|
@ -103,6 +119,7 @@ public class DriversInstall {
|
|||
Scene mainScene = new Scene(parentVBox, 405, 155);
|
||||
|
||||
mainScene.getStylesheets().add(AppPreferences.getInstance().getTheme());
|
||||
parentVBox.setStyle(AppPreferences.getInstance().getFontStyle());
|
||||
|
||||
stage.setOnHidden(windowEvent -> {
|
||||
downloadTask.cancel(true );
|
||||
|
@ -114,7 +131,7 @@ public class DriversInstall {
|
|||
stage.toFront();
|
||||
|
||||
downloadTask.setOnSucceeded(event -> {
|
||||
cancelButton.setText(rb.getString("btn_Close"));
|
||||
cancelButton.setText(resourceBundle.getString("btn_Close"));
|
||||
|
||||
String returnedValue = downloadTask.getValue();
|
||||
|
||||
|
@ -140,7 +157,7 @@ public class DriversInstall {
|
|||
return true;
|
||||
}
|
||||
catch (Exception e){
|
||||
runInstallerStatusLabel.setText("Error: "+e.toString());
|
||||
runInstallerStatusLabel.setText("Error: "+e);
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ import nsusbloader.Utilities.patches.SimplyFind;
|
|||
import java.util.List;
|
||||
|
||||
class HeuristicEs1 extends AHeuristic {
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchOffset("ES", 1, 0);
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchPattern("ES", 1, 0);
|
||||
|
||||
private final List<Integer> findings;
|
||||
private final byte[] where;
|
||||
|
|
|
@ -28,7 +28,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
class HeuristicEs2 extends AHeuristic {
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchOffset("ES", 2, 0);
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchPattern("ES", 2, 0);
|
||||
|
||||
private List<Integer> findings;
|
||||
private final byte[] where;
|
||||
|
|
|
@ -27,8 +27,8 @@ import nsusbloader.Utilities.patches.SimplyFind;
|
|||
import java.util.List;
|
||||
|
||||
class HeuristicEs3 extends AHeuristic {
|
||||
private static final String PATTERN0 = AppPreferences.getInstance().getPatchOffset("ES", 3, 0);
|
||||
private static final String PATTERN1 = AppPreferences.getInstance().getPatchOffset("ES", 3, 1);
|
||||
private static final String PATTERN0 = AppPreferences.getInstance().getPatchPattern("ES", 3, 0);
|
||||
private static final String PATTERN1 = AppPreferences.getInstance().getPatchPattern("ES", 3, 1);
|
||||
|
||||
private final List<Integer> findings;
|
||||
private final byte[] where;
|
||||
|
|
|
@ -28,7 +28,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
class HeuristicFs1 extends AHeuristic {
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchOffset("FS", 1, 0); // TBZ
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchPattern("FS", 1, 0); // TBZ
|
||||
|
||||
private final byte[] where;
|
||||
private final List<Integer> findings;
|
||||
|
|
|
@ -28,7 +28,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
class HeuristicFs2 extends AHeuristic {
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchOffset("FS", 2, 0);
|
||||
private static final String PATTERN = AppPreferences.getInstance().getPatchPattern("FS", 2, 0);
|
||||
|
||||
private final byte[] where;
|
||||
private final List<Integer> findings;
|
||||
|
|
|
@ -75,7 +75,7 @@ public class GoldLeafCli {
|
|||
private String getGlSupportedVersions(){
|
||||
StringBuilder builder = new StringBuilder("Supported versions: \n");
|
||||
|
||||
for (String a : AppPreferences.goldleafSupportedVersions){
|
||||
for (String a : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){
|
||||
builder.append("\t");
|
||||
builder.append(a);
|
||||
builder.append("\n");
|
||||
|
@ -98,7 +98,7 @@ public class GoldLeafCli {
|
|||
"Try 'ns-usbloader -g help' for more information.");
|
||||
}
|
||||
|
||||
for (String version : AppPreferences.goldleafSupportedVersions){
|
||||
for (String version : AppPreferences.GOLDLEAF_SUPPORTED_VERSIONS){
|
||||
if (version.equals(goldLeafVersion))
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ public class UsbCommunications extends CancellableRunnable {
|
|||
case "TinFoil":
|
||||
module = new TinFoil(handler, nspMap, this, logPrinter);
|
||||
break;
|
||||
case "GoldLeafv0.10":
|
||||
case "GoldLeafv0.10+":
|
||||
module = new GoldLeaf_010(handler, nspMap, this, logPrinter, nspFilterForGl);
|
||||
break;
|
||||
case "GoldLeafv0.8-0.9":
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.ListView?>
|
||||
<?import javafx.scene.control.Spinner?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<AnchorPane xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.FontSettingsController">
|
||||
<children>
|
||||
<VBox layoutX="344.0" layoutY="132.0" prefHeight="200.0" prefWidth="100.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<children>
|
||||
<ListView fx:id="fontsLv" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
|
||||
<Text fx:id="exampleText" strokeType="OUTSIDE" strokeWidth="0.0" />
|
||||
<HBox alignment="CENTER_RIGHT" spacing="5.0">
|
||||
<children>
|
||||
<Label text="%fontSize" wrapText="true" />
|
||||
<Spinner fx:id="fontSizeSpinner" minWidth="100.0" />
|
||||
<Pane HBox.hgrow="ALWAYS" />
|
||||
<Button fx:id="resetBtn" mnemonicParsing="false" text="%btn_ResetToDefaults">
|
||||
<HBox.margin>
|
||||
<Insets right="5.0" />
|
||||
</HBox.margin>
|
||||
</Button>
|
||||
<Button fx:id="cancelBtn" mnemonicParsing="false" text="%btn_Cancel" wrapText="true" />
|
||||
<Button fx:id="applyBtn" mnemonicParsing="false" styleClass="buttonUp" text="%btn_Select" wrapText="true" />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
</children>
|
||||
</AnchorPane>
|
|
@ -12,21 +12,12 @@
|
|||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.SVGPath?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<VBox spacing="15.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.NxdtController">
|
||||
<VBox spacing="15.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.NxdtController">
|
||||
<HBox alignment="CENTER">
|
||||
<children>
|
||||
<Label styleClass="nxdt" text="nx">
|
||||
<font>
|
||||
<Font name="System Bold" size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label text="dumptool">
|
||||
<font>
|
||||
<Font name="System Bold" size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label styleClass="nxdt" text="nx" />
|
||||
<Label styleClass="bold-text" text="dumptool" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane>
|
||||
|
|
|
@ -12,18 +12,13 @@
|
|||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.SVGPath?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<ScrollPane fitToWidth="true" onDragDropped="#handleDrop" onDragOver="#handleDragOver" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.PatchesController">
|
||||
<VBox fx:id="patchesToolPane" spacing="15.0">
|
||||
<Pane minHeight="-Infinity" prefHeight="10.0" style="-fx-background-color: linear-gradient(from 41px 34px to 50px 50px, reflect, #2cd882 40%, transparent 45%);" />
|
||||
<HBox alignment="CENTER">
|
||||
<children>
|
||||
<Label text="%tabPatches_Lbl_Title">
|
||||
<font>
|
||||
<Font name="System Bold" size="15.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label styleClass="bold-text" text="%tabPatches_Lbl_Title" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane>
|
||||
|
@ -55,11 +50,7 @@
|
|||
</Button>
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="locationFirmwareLbl" disable="true" textOverrun="LEADING_WORD_ELLIPSIS">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="locationFirmwareLbl" disable="true" styleClass="italic-text" textOverrun="LEADING_WORD_ELLIPSIS" />
|
||||
<HBox alignment="CENTER_LEFT" spacing="5.0">
|
||||
<children>
|
||||
<Label minHeight="-Infinity" minWidth="-Infinity" text="%tabPatches_Lbl_Atmo" wrapText="true" />
|
||||
|
@ -72,11 +63,7 @@
|
|||
</Button>
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="locationAtmosphereLbl" disable="true" textOverrun="LEADING_WORD_ELLIPSIS">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="locationAtmosphereLbl" disable="true" styleClass="italic-text" textOverrun="LEADING_WORD_ELLIPSIS" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Separator prefWidth="200.0" />
|
||||
|
@ -94,10 +81,7 @@
|
|||
</Button>
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="locationKeysLbl" disable="true" textOverrun="LEADING_WORD_ELLIPSIS">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font></Label>
|
||||
<Label fx:id="locationKeysLbl" disable="true" styleClass="italic-text" textOverrun="LEADING_WORD_ELLIPSIS" />
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox spacing="5.0">
|
||||
|
|
|
@ -14,18 +14,13 @@
|
|||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.SVGPath?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<ScrollPane fitToWidth="true" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.RcmController">
|
||||
<ScrollPane fitToWidth="true" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.RcmController">
|
||||
<VBox fx:id="rcmToolPane" spacing="15.0">
|
||||
<Pane minHeight="-Infinity" prefHeight="10.0" style="-fx-background-color: linear-gradient(from 41px 34px to 50px 50px, reflect, #ff1515 40%, transparent 45%);" />
|
||||
<HBox alignment="CENTER">
|
||||
<children>
|
||||
<Label text="%tabRcm_Lbl_FuseeGelee">
|
||||
<font>
|
||||
<Font name="System Bold" size="15.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label styleClass="bold-text" text="%tabRcm_Lbl_FuseeGelee" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane>
|
||||
|
@ -57,11 +52,7 @@
|
|||
<Label fx:id="payloadFNameLbl1" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="payloadFPathLbl1" disable="true">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="payloadFPathLbl1" disable="true" styleClass="italic-text" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button fx:id="selPldBtn1" mnemonicParsing="false" onAction="#bntSelectPayloader" styleClass="buttonSelect">
|
||||
|
@ -86,11 +77,7 @@
|
|||
<Label fx:id="payloadFNameLbl2" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="payloadFPathLbl2" disable="true">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="payloadFPathLbl2" disable="true" styleClass="italic-text" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button fx:id="selPldBtn2" mnemonicParsing="false" onAction="#bntSelectPayloader" styleClass="buttonSelect">
|
||||
|
@ -115,11 +102,7 @@
|
|||
<Label fx:id="payloadFNameLbl3" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="payloadFPathLbl3" disable="true">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="payloadFPathLbl3" disable="true" styleClass="italic-text" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button fx:id="selPldBtn3" mnemonicParsing="false" onAction="#bntSelectPayloader" styleClass="buttonSelect">
|
||||
|
@ -144,11 +127,7 @@
|
|||
<Label fx:id="payloadFNameLbl4" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="payloadFPathLbl4" disable="true">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="payloadFPathLbl4" disable="true" styleClass="italic-text" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button fx:id="selPldBtn4" mnemonicParsing="false" onAction="#bntSelectPayloader" styleClass="buttonSelect">
|
||||
|
@ -173,11 +152,7 @@
|
|||
<Label fx:id="payloadFNameLbl5" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="payloadFPathLbl5" disable="true">
|
||||
<font>
|
||||
<Font name="System Italic" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="payloadFPathLbl5" disable="true" styleClass="italic-text" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button fx:id="selPldBtn5" mnemonicParsing="false" onAction="#bntSelectPayloader" styleClass="buttonSelect">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
|
||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.SettingsBlockGenericController">
|
||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.SettingsBlockGenericController">
|
||||
<children>
|
||||
<Label text="%tab2_Lbl_ApplicationSettings" />
|
||||
<HBox alignment="CENTER_LEFT" spacing="5.0">
|
||||
|
@ -28,6 +28,11 @@
|
|||
<Insets left="5.0" />
|
||||
</VBox.margin>
|
||||
</HBox>
|
||||
<Button fx:id="fontSelectBtn" mnemonicParsing="false" text="%tab2_Btn_ApplicationFont">
|
||||
<VBox.margin>
|
||||
<Insets left="5.0" />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
<HBox>
|
||||
<children>
|
||||
<VBox>
|
||||
|
|
|
@ -12,19 +12,14 @@
|
|||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<VBox fx:id="smToolPane" onDragDropped="#handleDrop" onDragOver="#handleDragOver" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.SplitMergeController">
|
||||
<VBox fx:id="smToolPane" onDragDropped="#handleDrop" onDragOver="#handleDragOver" spacing="20.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="nsusbloader.Controllers.SplitMergeController">
|
||||
<VBox spacing="15.0">
|
||||
<children>
|
||||
<Pane minHeight="-Infinity" prefHeight="10.0" style="-fx-background-color: linear-gradient(from 41px 34px to 50px 50px, reflect, #00c8fc 40%, transparent 45%);" />
|
||||
<HBox alignment="CENTER">
|
||||
<children>
|
||||
<Label text="%tabSplMrg_Lbl_SplitNMergeTitle">
|
||||
<font>
|
||||
<Font name="System Bold" size="15.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label styleClass="bold-text" text="%tabSplMrg_Lbl_SplitNMergeTitle" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane>
|
||||
|
|
|
@ -91,3 +91,7 @@ tabPatches_Btn_MakeAtmo=Make Loader (Atmosphere)
|
|||
tabPatches_Btn_MakeAll=Make all
|
||||
tabPatches_ServiceWindowMessageEsFs=Both firmware and keys should be set to generate patches. Otherwise, it's not clear what to patch.
|
||||
tabPatches_ServiceWindowMessageLoader=Atmosphere folder should be defined to generate 'Loader' patch.
|
||||
tab2_Btn_ApplicationFont=Change application font
|
||||
btn_ResetToDefaults=Reset
|
||||
fontPreviewText=Text preview
|
||||
fontSize=Font size:
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
btn_OpenFile=Selectionner les fichiers
|
||||
btn_OpenFile=S\u00E9l\u00E9ctionner les fichiers
|
||||
btn_OpenFolders=S\u00E9l\u00E9ctionner un dossier
|
||||
btn_Upload=Envoyer vers NS
|
||||
tab3_Txt_EnteredAsMsg1=Vous etes connect\u00E9 en tant que:
|
||||
btn_OpenFolders_tooltip=S\u00E9lectionnez un dossier \u00E0 analyser.\nCe dossier et tous ses sous-dossiers seront analys\u00E9s.\nTous les fichiers pertinents seront ajout\u00E9s à la liste.
|
||||
tab3_Txt_EnteredAsMsg1=Vous \u00EAtes connect\u00E9 en tant que :
|
||||
tab3_Txt_EnteredAsMsg2=Vous devez \u00EAtre root ou avoir configur\u00E9 les r\u00E8gles 'udev' pour cet utilisateur afin d'\u00E9viter tout probl\u00E8me.
|
||||
tab3_Txt_FilesToUploadTitle=Fichiers a envoyer:
|
||||
tab3_Txt_GreetingsMessage=Bienvenue sur NS-USBloader
|
||||
|
@ -9,21 +11,21 @@ windowBodyConfirmExit=Le transfert de donn\u00E9es est en cours et la fermeture
|
|||
windowTitleConfirmExit=Non, ne faites pas \u00E7a!
|
||||
btn_Stop=Interrompre
|
||||
tab3_Txt_GreetingsMessage2=--\n\
|
||||
Source: https://git.redrise.ru/desu/ns-usbloader\n\
|
||||
Mirror: https://github.com/developersu/ns-usbloader/\n\
|
||||
Site: https://redrise.ru\n\
|
||||
Source : https://git.redrise.ru/desu/ns-usbloader\n\
|
||||
Mirror : https://github.com/developersu/ns-usbloader/\n\
|
||||
Site : https://redrise.ru\n\
|
||||
Dmitry Isaenko [developer.su]
|
||||
tab1_table_Lbl_Upload=Envoyer ?
|
||||
tab1_table_Lbl_Size=Taille
|
||||
tab1_table_Lbl_FileName=Nom de fichier
|
||||
tab1_table_Lbl_Status=Statut
|
||||
tab1_table_Lbl_FileName=Nom de fichier
|
||||
tab1_table_Lbl_Size=Taille
|
||||
tab1_table_Lbl_Upload=Envoyer ?
|
||||
tab1_table_contextMenu_Btn_BtnDelete=Supprimer
|
||||
tab1_table_contextMenu_Btn_DeleteAll=Supprimer tout
|
||||
tab2_Lbl_HostIP=IP de l'ordinateur
|
||||
tab1_Lbl_NSIP=IP de NS:
|
||||
tab2_Cb_ValidateNSHostName=Toujours v\u00E9rifier que l'adresse IP de NS entr\u00E9e est correcte
|
||||
windowTitleBadIp=L'adresse IP de NS est probablement incorrecte
|
||||
windowBodyBadIp=\u00CAtes-vous s\u00FBr que l'adresse IP de NS entr\u00E9e est correcte ?
|
||||
windowTitleBadIp=L'adresse IP de NS est probablement incorrecte
|
||||
tab2_Cb_ExpertMode=Mode expert
|
||||
tab2_Lbl_HostPort=port
|
||||
tab2_Cb_AutoDetectIp=D\u00E9tection automatique d'IP
|
||||
|
@ -37,12 +39,24 @@ tab2_Cb_AutoCheckForUpdates=V\u00E9rifier automatiquement les mises \u00E0 jour
|
|||
windowTitleNewVersionAval=Nouvelle version disponible
|
||||
windowTitleNewVersionNOTAval=Aucune nouvelle version disponible
|
||||
windowTitleNewVersionUnknown=Impossible de v\u00E9rifier les nouvelles versions
|
||||
windowBodyNewVersionNOTAval=Vous utilisez la derni\u00E8re version
|
||||
windowBodyNewVersionUnknown=Une erreur s'est produite\nPeut-\u00EAtre des probl\u00E8mes de connexion Internet ou GitHub est en panne
|
||||
windowBodyNewVersionNOTAval=Vous utilisez la derni\u00E8re version
|
||||
tab2_Cb_AllowXciNszXcz=Autoriser la s\u00E9lection de fichiers XCI / NSZ / XCZ pour Awoo
|
||||
tab2_Lbl_AllowXciNszXczDesc=Utilis\u00E9 par certaines applications tierces prenant en charge XCI/NSZ/XCZ et utilisant le protocole de transfert TinFoil. Ne changez pas en cas de doute.
|
||||
tab2_Lbl_Language=La langue
|
||||
tab2_Lbl_Language=Langue
|
||||
windowBodyRestartToApplyLang=Red\u00E9marrez l'application pour appliquer les modifications.
|
||||
btn_OpenSplitFile=S\u00E9lectionner un NSP divis\u00E9
|
||||
tab2_Lbl_ApplicationSettings=Param\u00E8tres principaux
|
||||
tabSplMrg_RadioBtn_Split=Diviser
|
||||
tabSplMrg_RadioBtn_Merge=Fusionner
|
||||
failure_txt=Erreur
|
||||
btn_Select=S\u00E9lectionner
|
||||
btn_InjectPayloader=Injecter le payload
|
||||
tab2_Btn_InstallDrivers=T\u00E9l\u00E9charger et installer les pilotes
|
||||
windowTitleDownloadDrivers=T\u00E9l\u00E9charger et installer les pilotes
|
||||
btn_Cancel=Annuler
|
||||
|
||||
|
||||
btn_Close=Fermer
|
||||
tab2_Cb_GlVersion=Version de GoldLeaf
|
||||
tab2_Cb_GLshowNspOnly=N'afficher que les *.nsp dans GoldLeaf.
|
||||
tab2_Cb_foldersSelectorForRoms=S\u00E9lectionnez un dossier contenant des fichiers ROM plutôt que de les s\u00E9lectionner individuellement.
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
btn_OpenFile=\uD30C\uC77C \uC120\uD0DD
|
||||
btn_OpenFolders=\uD30C\uC77C \uC120\uD0DD
|
||||
btn_OpenFolders=\uD30C\uC77C \uC120\uD0DD
|
||||
btn_Upload=NS\uC5D0 \uC5C5\uB85C\uB4DC
|
||||
btn_OpenFolders_tooltip=\uC2A4\uCE94\uD560 \uD3F4\uB354\uB97C \uC120\uD0DD\uD569\uB2C8\uB2E4.\n\uC774 \uD3F4\uB354\uC640 \uBAA8\uB4E0 \uD558\uC704 \uD3F4\uB354\uAC00 \uAC80\uC0C9\uB429\uB2C8\uB2E4.\n\uC77C\uCE58\uD558\uB294 \uBAA8\uB4E0 \uD30C\uC77C\uC774 \uBAA9\uB85D\uC5D0 \uCD94\uAC00\uB429\uB2C8\uB2E4.
|
||||
tab3_Txt_EnteredAsMsg1=\uB2E4\uC74C\uACFC \uAC19\uC774 \uC785\uB825\uB418\uC5C8\uC2B5\uB2C8\uB2E4:
|
||||
|
@ -79,4 +79,15 @@ windowBodyFilesScanned=\uC2A4\uCE94 \uB41C \uD30C\uC77C: %d\n\uCD94\uAC00 \uB420
|
|||
tab2_Lbl_AwooBlockTitle=Awoo \uC124\uCE58 \uD504\uB85C\uADF8\uB7A8\uACFC \uD638\uD658\uC131
|
||||
tabRcm_Lbl_Payload=\uD398\uC774\uB85C\uB4DC:
|
||||
tabRcm_Lbl_FuseeGelee=Fus\u00E9e Gel\u00E9e RCM
|
||||
|
||||
tabPatches_Lbl_Firmware=\uD38C\uC6E8\uC5B4:
|
||||
tabPatches_Lbl_Atmo=Atmosphere:
|
||||
tabPatches_Btn_fromFolder=\uD3F4\uB354\uC5D0\uC11C
|
||||
tabPatches_Btn_asZipFile=ZIP \uD30C\uC77C\uB85C
|
||||
tabPatches_Lbl_Title=\uD328\uCE58
|
||||
tabPatches_Lbl_Keys=\uD0A4:
|
||||
tabPatches_Btn_MakeEs=ES \uB9CC\uB4E4\uAE30
|
||||
tabPatches_Btn_MakeFs=FS \uB9CC\uB4E4\uAE30
|
||||
tabPatches_Btn_MakeAtmo=\uB85C\uB354 \uB9CC\uB4E4\uAE30 (Atmosphere)
|
||||
tabPatches_Btn_MakeAll=\uBAA8\uB450 \uB9CC\uB4E4\uAE30
|
||||
tabPatches_ServiceWindowMessageEsFs=\uD38C\uC6E8\uC5B4\uC640 \uD0A4 \uBAA8\uB450 \uD328\uCE58\uB97C \uC0DD\uC131\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC73C\uBA74 \uBB34\uC5C7\uC744 \uD328\uCE58\uD560\uC9C0 \uBA85\uD655\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
|
||||
tabPatches_ServiceWindowMessageLoader='\uB85C\uB354' \uD328\uCE58\uB97C \uC0DD\uC131\uD558\uB824\uBA74 Atmosphere \uD3F4\uB354\uB97C \uC815\uC758\uD574\uC57C \uD569\uB2C8\uB2E4.
|
||||
|
|
|
@ -23,7 +23,7 @@ tab2_Lbl_HostIP=IP \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430
|
|||
tab1_Lbl_NSIP=NS IP:
|
||||
tab2_Cb_ValidateNSHostName=\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E\u0441\u0442\u044C NS IP.
|
||||
windowTitleBadIp=IP \u0430\u0434\u0440\u0435\u0441 NS \u043F\u043E\u0445\u043E\u0436\u0435 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439
|
||||
windowBodyBadIp=\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B \u0447\u0442\u043E IP \u0430\u0434\u0440\u0435\u0441 NS \u0432\u0432\u0435\u0434\u0451\u043D \u0431\u0435\u0437 \u043E\u0448\u0438\u0431\u043E\u043A?
|
||||
windowBodyBadIp=\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E IP \u0430\u0434\u0440\u0435\u0441 NS \u0432\u0432\u0435\u0434\u0451\u043D \u0431\u0435\u0437 \u043E\u0448\u0438\u0431\u043E\u043A?
|
||||
tab2_Cb_ExpertMode=\u0420\u0435\u0436\u0438\u043C \u044D\u043A\u0441\u043F\u0435\u0440\u0442\u0430 (\u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0435\u0442\u0438)
|
||||
tab2_Lbl_HostPort=\u043F\u043E\u0440\u0442
|
||||
tab2_Cb_AutoDetectIp=\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0442\u044C IP
|
||||
|
@ -89,5 +89,9 @@ tabPatches_Lbl_Keys=\u041A\u043B\u044E\u0447\u0438:
|
|||
tabPatches_Lbl_Title=\u041F\u0430\u0442\u0447\u0438
|
||||
tabPatches_ServiceWindowMessageEsFs=\u0414\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043F\u0430\u0442\u0447\u0435\u0439 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u0430\u043A \u043F\u0443\u0442\u044C \u043A \u043F\u0440\u043E\u0448\u0438\u0432\u043A\u0435, \u0442\u0430\u043A \u0438 \u043F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443 \u043A\u043B\u044E\u0447\u0435\u0439. \u0418\u043D\u0430\u0447\u0435 \u043D\u0435 \u043F\u043E\u043D\u044F\u0442\u043D\u043E \u0447\u0442\u043E \u0436\u0435 \u043F\u0430\u0442\u0447\u0438\u0442\u044C.
|
||||
tabPatches_ServiceWindowMessageLoader=\u0414\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043F\u0430\u0442\u0447\u0430 \u00ABLoader\u00BB \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0443\u0442\u044C \u043A Atmosphere.
|
||||
tab2_Btn_ApplicationFont=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0448\u0440\u0438\u0444\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F
|
||||
btn_ResetToDefaults=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C
|
||||
fontPreviewText=\u041F\u0440\u0438\u043C\u0435\u0440 \u0442\u0435\u043A\u0441\u0442\u0430
|
||||
fontSize=\u0420\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u043E\u0432:
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
btn_OpenFile=Dosya secimi
|
||||
btn_OpenFolders=Klasor secimi
|
||||
btn_Upload=NS'e yukle
|
||||
btn_OpenFolders_tooltip=Taranmasi icin bir klasor secin.\nBu klasor ve butun alt klasorleri taranacaktir.\nButun uyusan dosyalar listeye eklenecektir.
|
||||
tab3_Txt_EnteredAsMsg1=Olarak giris yaptiniz:
|
||||
tab3_Txt_EnteredAsMsg2=Bir cok hatadan kacinmak icin root olmaniz ya da bu kullanici icin 'udev' kurallarini ayarlamaniz gerekmektedir.
|
||||
tab3_Txt_FilesToUploadTitle=Yuklenecek dosyalar:
|
||||
tab3_Txt_GreetingsMessage= NS-USBloader'a Hos Geldiniz
|
||||
tab3_Txt_NoFolderOrFileSelected=Hicbir dosya secilmedi: hicbir sey yuklenmedi.
|
||||
windowBodyConfirmExit=Data transferi devam ediyor ve uygulamayi kapatmak bunu yarida kesecek.\nBu su an yapabileceginiz en kotu sey.\nIslemi yardida kes ve cik ?
|
||||
windowTitleConfirmExit=Hayir,Bunu yapma!
|
||||
btn_Stop=Hata
|
||||
tab3_Txt_GreetingsMessage2=--\n\
|
||||
Source: https://git.redrise.ru/desu/ns-usbloader\n\
|
||||
Mirror: https://github.com/developersu/ns-usbloader/\n\
|
||||
Site: https://redrise.ru\n\
|
||||
Dmitry Isaenko [developer.su]
|
||||
tab1_table_Lbl_Status=Durum
|
||||
tab1_table_Lbl_FileName=Dosya Ismi
|
||||
tab1_table_Lbl_Size=Boyut
|
||||
tab1_table_Lbl_Upload=Yukle?
|
||||
tab1_table_contextMenu_Btn_BtnDelete=Kaldir
|
||||
tab1_table_contextMenu_Btn_DeleteAll=Hepsini kaldir
|
||||
tab2_Lbl_HostIP=Host IP
|
||||
tab1_Lbl_NSIP=NS IP:
|
||||
tab2_Cb_ValidateNSHostName= NS IP girislerinizi her zaman dogrulayin.
|
||||
windowBodyBadIp=Girilen NS IP adresinin dogru olduguna emin misiniz?
|
||||
windowTitleBadIp=NS'in IP adressi buyuk ihtimalle yanlis
|
||||
tab2_Cb_ExpertMode=Uzman modu (NET setup)
|
||||
tab2_Lbl_HostPort=Port
|
||||
tab2_Cb_AutoDetectIp=Oto-Tespit IP
|
||||
tab2_Cb_RandSelectPort=Portu rastgele al
|
||||
tab2_Cb_DontServeRequests=Istekleri yerine getirme
|
||||
tab2_Lbl_DontServeRequestsDesc=Eger secili ise, bu bilgisayar NS'den (ag uzerinden) gelen NSP dosyalarinin isteklerine yanit vermez ve Awoo Installer'a (veya uyumlu uygulamalara) dosyalari nerede aramasi gerektigini soylemek icin tanimlanmis ana bilgisayar ayarlarini kullanir.
|
||||
tab2_Lbl_HostExtra=Ekstra
|
||||
windowTitleErrorPort=Port seti hatali!
|
||||
windowBodyErrorPort=Port 0 olamaz ve 65535'den buyuk olamaz.
|
||||
tab2_Cb_AutoCheckForUpdates=Guncellemeleri otomatik kontrol et
|
||||
windowTitleNewVersionAval=Yeni versiyon mevcut
|
||||
windowTitleNewVersionNOTAval=Yeni versiyon mevcut degil
|
||||
windowTitleNewVersionUnknown=Yeni versiyon kontrolu yapilamiyor
|
||||
windowBodyNewVersionUnknown=Bir sey ters gitti\nBelki internet yoktur ya da GitHub cokmustur
|
||||
windowBodyNewVersionNOTAval=En son versiyonu kullaniyorsunuz
|
||||
tab2_Cb_AllowXciNszXcz=XCI / NSZ / XCZ dosyalaninin Awoo icin seciminine izin ver.
|
||||
tab2_Lbl_AllowXciNszXczDesc=XCI/NSZ/XCZ'yi destekleyen uygulamalar tarafindan kullanilir ve Awoo (Adubbz/TinFoil olarak da bilinir) transfer protokolunu uygular. Emin degilseniz degistirmeyin. Installer icin AWOO'yu etkinlestirin.
|
||||
tab2_Lbl_Language=Dil
|
||||
windowBodyRestartToApplyLang=Lutfen degisikliklerin uygulanabilmesi icin uygulamayi yendiden baslatin.
|
||||
btn_OpenSplitFile=Bolme sec
|
||||
tab2_Lbl_ApplicationSettings=Ana ayarlar
|
||||
tabSplMrg_Lbl_SplitNMergeTitle=Dosyalari bolme & birlestirme araci
|
||||
tabSplMrg_RadioBtn_Split=Ayir
|
||||
tabSplMrg_RadioBtn_Merge=Birlestir
|
||||
tabSplMrg_Txt_File=Dosya:
|
||||
tabSplMrg_Txt_Folder=Dosyayi ayir (klasor):
|
||||
tabSplMrg_Btn_SelectFile=Dosya sec
|
||||
tabSplMrg_Btn_SelectFolder=Klasor Sec
|
||||
tabSplMrg_Lbl_SaveToLocation=Buraya kaydet:
|
||||
tabSplMrg_Btn_ChangeSaveToLocation=Degistir
|
||||
tabSplMrg_Btn_Convert=Cevir
|
||||
windowTitleError=Hata
|
||||
windowBodyPleaseFinishTransfersFirst=Bolme/Birlestirme islemleri USB/Network transfer sureci aktifken yapilamaz. Lutfen once aktif transfer isleminizi bitiriniz.
|
||||
done_txt=Hazir!
|
||||
failure_txt=Basarisiz
|
||||
btn_Select=Secim yap
|
||||
btn_InjectPayloader=payload yukle (enject)
|
||||
tabNXDT_Btn_Start=Basla!
|
||||
tab2_Btn_InstallDrivers=Suruculeri indir ve yukle
|
||||
windowTitleDownloadDrivers=Suruculeri indir ve yukle
|
||||
windowBodyDownloadDrivers=Suruculer indiriliyor (libusbK v3.0.7.0)...
|
||||
btn_Cancel=Iptal
|
||||
btn_Close=Kapat
|
||||
tab2_Cb_GlVersion=GoldLeaf versiyonu
|
||||
tab2_Cb_GLshowNspOnly=Goldleaf'ta sadece *.nsp goster.
|
||||
windowBodyPleaseStopOtherProcessFirst=Lutfen devam etmeden once butun diger aktif islemleri durdurun.
|
||||
tab2_Cb_foldersSelectorForRoms=Direkt ROM dosyalini secmek yerine ROM klasorunu sec
|
||||
tab2_Cb_foldersSelectorForRomsDesc=Oyunlar' sekmesinde 'Dosyalari Sec' dugmesi davranisini degistirir: Tek tek ROM dosyalarini secmek yerine, desteklenen her dosyayi bir klasor secerek ekleyebilirsiniz.
|
||||
windowTitleAddingFiles=Dosyalar araniyor...
|
||||
windowBodyFilesScanned=Dosyalar tarandi: %d\nEklenecek: %d
|
||||
tab2_Lbl_AwooBlockTitle=Awoo Yukleyicisi ve Uyumu
|
||||
tabRcm_Lbl_Payload=Payload:
|
||||
tabRcm_Lbl_FuseeGelee=Fus\u00E9e Gel\u00E9e RCM
|
||||
tabPatches_Lbl_Firmware=Firmware:
|
||||
tabPatches_Lbl_Atmo=Atmosphere:
|
||||
tabPatches_Btn_fromFolder=Klasorden
|
||||
tabPatches_Btn_asZipFile=ZIP dosyasi olarak
|
||||
tabPatches_Lbl_Title=Yamalar
|
||||
tabPatches_Lbl_Keys=Anahtarlar:
|
||||
tabPatches_Btn_MakeEs=ES yap
|
||||
tabPatches_Btn_MakeFs=FS yap
|
||||
tabPatches_Btn_MakeAtmo=Loader yap (Atmosphere)
|
||||
tabPatches_Btn_MakeAll=Hepsini yap
|
||||
tabPatches_ServiceWindowMessageEsFs=Firmware ve anahtarlar, yamalari olusturmak icin ayarlanmalidir. Aksi takdirde, neyi duzeltecegi belirsiz olacaktir.
|
||||
tabPatches_ServiceWindowMessageLoader='Loader' yamasi olusturmak icin Atmosphere klasoru tanimlanmalidir.
|
||||
tab2_Btn_ApplicationFont=Uygulama yazi tipini degistir
|
||||
btn_ResetToDefaults=Reset
|
||||
fontPreviewText=Yazi Onizlemesi
|
||||
fontSize=Yazi boyutu:
|
|
@ -89,4 +89,8 @@ tabPatches_Lbl_Keys=\u041A\u043B\u044E\u0447\u0456:
|
|||
tabPatches_Lbl_Title=\u041F\u0430\u0442\u0447\u0438
|
||||
tabPatches_ServiceWindowMessageEsFs=\u0414\u043B\u044F \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u043F\u0430\u0442\u0447\u0456\u0432 \u043D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u043E \u0432\u043A\u0430\u0437\u0430\u0442\u0438 \u044F\u043A \u0448\u043B\u044F\u0445 \u0434\u043E \u043F\u0440\u043E\u0448\u0438\u0432\u043A\u0438, \u0442\u0430\u043A \u0456 \u0434\u043E \u0444\u0430\u0439\u043B\u0443 \u043A\u043B\u044E\u0447\u0456\u0432. \u0411\u043E \u0456\u043D\u0430\u043A\u0448\u0435 \u043D\u0435 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u043E \u0449\u043E \u0436 \u0442\u0440\u0435\u0431\u0430 \u043F\u0430\u0442\u0447\u0438\u0442\u0438.
|
||||
tabPatches_ServiceWindowMessageLoader=\u0414\u043B\u044F \u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0456\u0457 "Loader"-\u043F\u0430\u0442\u0447\u0443 \u043D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u043E \u0432\u043A\u0430\u0437\u0430\u0442\u0438 \u0448\u043B\u044F\u0445 \u0434\u043E Atmosphere.
|
||||
tab2_Btn_ApplicationFont=\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0448\u0440\u0438\u0444\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u0438
|
||||
btn_ResetToDefaults=C\u043A\u0438\u043D\u0443\u0442\u0438
|
||||
fontPreviewText=\u041F\u0440\u0438\u043A\u043B\u0430\u0434 \u0442\u0435\u043A\u0441\u0442\u0443
|
||||
fontSize=\u0420\u043E\u0437\u043C\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0456\u0432:
|
||||
|
|
@ -44,7 +44,7 @@ windowBodyNewVersionNOTAval=\u4F60\u6B63\u5728\u4F7F\u7528\u6700\u65B0\u7248
|
|||
tab2_Cb_AllowXciNszXcz=Awoo\u6A21\u5F0F\u5141\u8BB8\u9009\u62E9XCI\u6587\u4EF6
|
||||
tab2_Lbl_AllowXciNszXczDesc=\u7528\u4E8E\u4E00\u4E9B\u652F\u6301XCI/NSZ/XCZ\u548CTinfoil\u4F20\u8F93\u534F\u8BAE\u7684\u7B2C\u4E09\u65B9\u5E94\u7528\u3002\u5982\u679C\u4E0D\u6E05\u695A\u4E0D\u8981\u4FEE\u6539\u3002
|
||||
tab2_Lbl_Language=\u8BED\u8A00
|
||||
windowBodyRestartToApplyLang=\u8BF7\u91CD\u542F\u5E94\u7528\u4EE5\u5E94\u7528\u66F4\u6539\u3002
|
||||
windowBodyRestartToApplyLang=\u8bf7\u91cd\u542f\u7a0b\u5e8f\u005c\u006e\u914d\u7f6e\u624d\u4f1a\u751f\u6548\uff01
|
||||
btn_OpenSplitFile=\u9009\u62E9\u5206\u5272\u7684ROM
|
||||
tab2_Lbl_ApplicationSettings=\u4E3B\u8981\u8BBE\u5B9A
|
||||
tabSplMrg_Lbl_SplitNMergeTitle=\u5206\u5272&\u5408\u5E76\u6587\u4EF6\u5DE5\u5177
|
||||
|
|
|
@ -5,6 +5,18 @@
|
|||
-fx-background: #2d2d2d;
|
||||
}
|
||||
|
||||
Text {
|
||||
-fx-fill: white;
|
||||
}
|
||||
|
||||
.bold-text{
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
.italic-text{
|
||||
-fx-font-style: italic;
|
||||
}
|
||||
|
||||
.button, .buttonUp, .buttonStop, .buttonSelect{
|
||||
-fx-background-color: #4f4f4f;
|
||||
-fx-border-color: #4f4f4f;
|
||||
|
@ -235,21 +247,31 @@
|
|||
-fx-border-width: 2;
|
||||
}
|
||||
|
||||
.list-cell, .list-cell:selected, .list-cell:filled:selected{
|
||||
.list-cell:even,
|
||||
.list-cell:even:selected,
|
||||
.list-cell:even:filled:selected{
|
||||
-fx-background-color: -fx-table-cell-border-color, #424242;
|
||||
-fx-background-insets: 0, 0 0 1 0;
|
||||
-fx-table-cell-border-color: #6d8484;
|
||||
}
|
||||
.list-cell:odd, .list-cell:odd:selected, .list-cell:odd:filled:selected{
|
||||
.list-cell:odd,
|
||||
.list-cell:odd:selected,
|
||||
.list-cell:odd:filled:selected{
|
||||
-fx-background-color: -fx-table-cell-border-color, #4f4f4f;
|
||||
-fx-background-insets: 0, 0 0 1 0;
|
||||
-fx-table-cell-border-color: #6d8484;
|
||||
}
|
||||
|
||||
.list-cell .text, .list-cell:odd .text{
|
||||
.list-cell .text,
|
||||
.list-cell:odd .text,
|
||||
.list-cell Text,
|
||||
.list-cell:odd Text{
|
||||
-fx-fill: #f7fafa;
|
||||
}
|
||||
.list-cell:filled:selected .text, .list-cell:odd:filled:selected .text{
|
||||
.list-cell:filled:selected .text,
|
||||
.list-cell:odd:filled:selected .text,
|
||||
.list-cell:filled:selected Text,
|
||||
.list-cell:odd:filled:selected Text{
|
||||
-fx-fill: #08f3ff;
|
||||
}
|
||||
/* -========================== Context menu =====================- */
|
||||
|
@ -445,6 +467,7 @@
|
|||
}
|
||||
.nxdt.label .text {
|
||||
-fx-fill: #cb0010;
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
.regionWindows {
|
||||
|
@ -468,7 +491,39 @@
|
|||
-fx-min-height: -size;
|
||||
-fx-min-width: 24;
|
||||
}
|
||||
//
|
||||
/********************* Spinner **************************/
|
||||
.spinner{
|
||||
-fx-background-color: #4f4f4f;
|
||||
-fx-border-radius: 3;
|
||||
-fx-border-width: 1;
|
||||
-fx-border-color: #4f4f4f;
|
||||
-fx-mark-color: #eea11e;
|
||||
-fx-effect: none;
|
||||
}
|
||||
|
||||
.spinner .increment-arrow-button,
|
||||
.spinner .decrement-arrow-button {
|
||||
-fx-background-radius: 0;
|
||||
-fx-background-color: #4f4f4f;
|
||||
}
|
||||
|
||||
.spinner .increment-arrow-button:hover .increment-arrow,
|
||||
.spinner .decrement-arrow-button:hover .decrement-arrow {
|
||||
-fx-background-color: #ff8000;
|
||||
}
|
||||
|
||||
.spinner .increment-arrow-button:hover:pressed .increment-arrow,
|
||||
.spinner .decrement-arrow-button:hover:pressed .decrement-arrow,
|
||||
.spinner .increment-arrow-button:pressed .increment-arrow,
|
||||
.spinner .decrement-arrow-button:pressed .decrement-arrow {
|
||||
-fx-background-color: #71e016;
|
||||
}
|
||||
|
||||
.spinner .increment-arrow-button .increment-arrow,
|
||||
.spinner .decrement-arrow-button .decrement-arrow {
|
||||
-fx-background-color: #eea11e;
|
||||
}
|
||||
|
||||
//.lineGradient {
|
||||
// -fx-background-color: linear-gradient(from 41px 34px to 50px 50px, reflect, #00c8fc 30%, transparent 45%);
|
||||
//}
|
|
@ -5,6 +5,18 @@
|
|||
-fx-background: #ebebeb;
|
||||
}
|
||||
|
||||
Text {
|
||||
-fx-fill: black;
|
||||
}
|
||||
|
||||
.bold-text{
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
.italic-text{
|
||||
-fx-font-style: italic;
|
||||
}
|
||||
|
||||
.button, .buttonUp, .buttonStop, .buttonSelect{
|
||||
-fx-background-color: #fefefe;
|
||||
-fx-background-insets: 0 0 0 0, 0, 1, 2;
|
||||
|
@ -253,23 +265,35 @@
|
|||
-fx-border-width: 2;
|
||||
}
|
||||
|
||||
.list-cell, .list-cell:selected, .list-cell:filled:selected{
|
||||
.list-cell:even{
|
||||
-fx-background-color: -fx-table-cell-border-color, #ebfffe;
|
||||
-fx-background-insets: 0, 0 0 1 0;
|
||||
-fx-table-cell-border-color: #b0b0b0;
|
||||
}
|
||||
.list-cell:odd, .list-cell:odd:selected, .list-cell:odd:filled:selected{
|
||||
.list-cell:odd{
|
||||
-fx-background-color: -fx-table-cell-border-color, #fefefe;
|
||||
-fx-background-insets: 0, 0 0 1 0;
|
||||
-fx-table-cell-border-color: #b0b0b0;
|
||||
}
|
||||
|
||||
.list-cell .text, .list-cell:odd .text{
|
||||
.list-cell:even:selected,
|
||||
.list-cell:even:filled:selected,
|
||||
.list-cell:odd:selected,
|
||||
.list-cell:odd:filled:selected{
|
||||
-fx-background-color: -fx-table-cell-border-color, #e4ffde;
|
||||
}
|
||||
|
||||
.list-cell .text,
|
||||
.list-cell:odd .text,
|
||||
.list-cell Text,
|
||||
.list-cell:odd Text{
|
||||
-fx-fill: #2c2c2c;
|
||||
}
|
||||
.list-cell:filled:selected .text, .list-cell:odd:filled:selected .text{
|
||||
.list-cell:filled:selected .text,
|
||||
.list-cell:odd:filled:selected .text,
|
||||
.list-cell:filled:selected Text,
|
||||
.list-cell:odd:filled:selected Text{
|
||||
-fx-fill: #2c2c2c;
|
||||
-fx-font-weight: bold
|
||||
}
|
||||
/* -========================= Separator ===================- */
|
||||
.separator *.line {
|
||||
|
@ -363,6 +387,7 @@
|
|||
}
|
||||
.nxdt.label .text {
|
||||
-fx-fill: #9d010e;
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
.regionWindows {
|
||||
-fx-shape: "M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z";
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
/* Copyright WTFPL */
|
||||
package integration;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class Environment {
|
||||
public final String CONTAINER = "environment.txt";
|
||||
|
||||
private String atmosphere;
|
||||
private String prodkeys;
|
||||
private String firmwares;
|
||||
private String saveTo;
|
||||
|
||||
public Environment() throws Exception{
|
||||
if (Files.notExists(Path.of(CONTAINER))) {
|
||||
boolean createdTemplate = createTemplate();
|
||||
throw new Exception("'environment.txt' not found\n" +
|
||||
"Please "+(createdTemplate?"":"create and ") +
|
||||
"set values in file");
|
||||
}
|
||||
|
||||
read();
|
||||
|
||||
if (isNotValid())
|
||||
throw new Exception("'environment.txt' doesn't contain valid data\n");
|
||||
}
|
||||
private void read() throws Exception{
|
||||
HashMap<String, String> rawKeySet = new HashMap<>();
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(CONTAINER))) {
|
||||
String fileLine;
|
||||
String[] keyValue;
|
||||
while ((fileLine = br.readLine()) != null) {
|
||||
keyValue = fileLine.trim().split("\\s+?=\\s+?", 2);
|
||||
if (keyValue.length == 2)
|
||||
rawKeySet.put(keyValue[0], keyValue[1]);
|
||||
}
|
||||
}
|
||||
|
||||
atmosphere = rawKeySet.get("ATMOSPHERE");
|
||||
prodkeys = rawKeySet.get("PRODKEYS");
|
||||
firmwares = rawKeySet.get("NS_GLOBAL_FIRMWARES");
|
||||
saveTo = rawKeySet.get("SAVE_TO");
|
||||
}
|
||||
private boolean isNotValid(){
|
||||
return atmosphere == null || atmosphere.isBlank() ||
|
||||
prodkeys == null || prodkeys.isBlank() ||
|
||||
firmwares == null || firmwares.isBlank();
|
||||
}
|
||||
private boolean createTemplate(){
|
||||
try(FileWriter writer = new FileWriter(CONTAINER)){
|
||||
writer.write(
|
||||
"ATMOSPHERE = \n" +
|
||||
"PRODKEYS = \n" +
|
||||
"NS_GLOBAL_FIRMWARES = \n" +
|
||||
"SAVE_TO = /tmp");
|
||||
}
|
||||
catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getAtmosphereLocation() {
|
||||
return atmosphere;
|
||||
}
|
||||
|
||||
public String getProdkeysLocation() {
|
||||
return prodkeys;
|
||||
}
|
||||
|
||||
public String getFirmwaresLocation() {
|
||||
return firmwares;
|
||||
}
|
||||
|
||||
public String getSaveToLocation() {
|
||||
return saveTo;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/* Copyright WTFPL */
|
||||
package integration;
|
||||
|
||||
import nsusbloader.NSLMain;
|
||||
import nsusbloader.Utilities.patches.es.EsPatchMaker;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
|
||||
@Disabled
|
||||
public class EsIntegrationTest {
|
||||
static String pathToFirmware;
|
||||
static String pathToFirmwares;
|
||||
static String pathToKeysFile;
|
||||
static String saveTo;
|
||||
|
||||
@BeforeAll
|
||||
static void init() throws Exception{
|
||||
NSLMain.isCli = true;
|
||||
Environment environment = new Environment();
|
||||
pathToKeysFile = environment.getProdkeysLocation();
|
||||
saveTo = environment.getSaveToLocation() + File.separator + "ES_LPR";
|
||||
pathToFirmwares = environment.getFirmwaresLocation();
|
||||
pathToFirmware = pathToFirmware + File.separator + "Firmware 14.1.0";
|
||||
}
|
||||
|
||||
@DisplayName("ES Integration validation - everything")
|
||||
@Test
|
||||
void makeEss() throws Exception{
|
||||
File[] fwDirs = new File(pathToFirmwares).listFiles((file, s) -> {
|
||||
return s.matches("^Firmware (9\\.|[0-9][0-9]\\.).*");
|
||||
//return s.matches("^Firmware 10.0.1.*");
|
||||
});
|
||||
assert fwDirs != null;
|
||||
Arrays.sort(fwDirs);
|
||||
for (File dir : fwDirs){
|
||||
EsPatchMaker esPatchMaker = new EsPatchMaker(dir.getAbsolutePath(), pathToKeysFile, saveTo);
|
||||
Thread workThread = new Thread(esPatchMaker);
|
||||
workThread.start();
|
||||
workThread.join();
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("ES Integration validation - one particular firmware")
|
||||
@Test
|
||||
void makeEs() throws Exception{
|
||||
EsPatchMaker esPatchMaker = new EsPatchMaker(pathToFirmware, pathToKeysFile, saveTo);
|
||||
Thread workThread = new Thread(esPatchMaker);
|
||||
workThread.start();
|
||||
workThread.join();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/* Copyright WTFPL */
|
||||
package integration;
|
||||
|
||||
import nsusbloader.NSLMain;
|
||||
import nsusbloader.Utilities.patches.fs.FsPatchMaker;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
|
||||
@Disabled
|
||||
public class FsIntegrationTest {
|
||||
static String pathToFirmware;
|
||||
static String pathToFirmwares;
|
||||
static String pathToKeysFile;
|
||||
static String saveTo;
|
||||
|
||||
@BeforeAll
|
||||
static void init() throws Exception{
|
||||
NSLMain.isCli = true;
|
||||
Environment environment = new Environment();
|
||||
pathToKeysFile = environment.getProdkeysLocation();
|
||||
saveTo = environment.getSaveToLocation() + File.separator + "FS_LPR";
|
||||
pathToFirmwares = environment.getFirmwaresLocation();
|
||||
pathToFirmware = pathToFirmware + File.separator + "Firmware 13.0.0";
|
||||
}
|
||||
|
||||
@DisplayName("FS Integration validation - everything")
|
||||
@Test
|
||||
void makeFss() throws Exception{
|
||||
File[] fwDirs = new File(pathToFirmwares).listFiles((file, s) -> {
|
||||
return (s.matches("^Firmware (9\\.|[0-9][0-9]\\.).*") && ! s.endsWith(".zip"));
|
||||
//return s.matches("^Firmware 10.0.1.*");
|
||||
});
|
||||
assert fwDirs != null;
|
||||
Arrays.sort(fwDirs);
|
||||
|
||||
for (File dir : fwDirs){
|
||||
System.out.println("\n\t\t\t"+dir.getName());
|
||||
FsPatchMaker fsPatchMaker = new FsPatchMaker(dir.getAbsolutePath(), pathToKeysFile, saveTo);
|
||||
Thread workThread = new Thread(fsPatchMaker);
|
||||
workThread.start();
|
||||
workThread.join();
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("FS Integration validation - one particular firmware")
|
||||
@Test
|
||||
void makeFs() throws Exception{
|
||||
System.out.println(pathToFirmware);
|
||||
FsPatchMaker fsPatchMaker = new FsPatchMaker(pathToFirmware, pathToKeysFile, saveTo);
|
||||
Thread workThread = new Thread(fsPatchMaker);
|
||||
workThread.start();
|
||||
workThread.join();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/* Copyright WTFPL */
|
||||
package integration;
|
||||
|
||||
import nsusbloader.NSLMain;
|
||||
import nsusbloader.Utilities.patches.loader.LoaderPatchMaker;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@Disabled
|
||||
public class LoaderIntegrationTest {
|
||||
static String pathToAtmo;
|
||||
static String saveTo;
|
||||
|
||||
@BeforeAll
|
||||
static void init() throws Exception{
|
||||
NSLMain.isCli = true;
|
||||
Environment environment = new Environment();
|
||||
saveTo = environment.getSaveToLocation() + File.separator + "Loader_LPR";
|
||||
pathToAtmo = environment.getAtmosphereLocation();
|
||||
}
|
||||
|
||||
@DisplayName("Loader Integration validation")
|
||||
@Test
|
||||
void makeLoader() throws Exception{
|
||||
System.out.println(pathToAtmo);
|
||||
LoaderPatchMaker patchMaker = new LoaderPatchMaker(pathToAtmo, saveTo);
|
||||
Thread workThread = new Thread(patchMaker);
|
||||
workThread.start();
|
||||
workThread.join();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue