Add fonts selector for #153
This commit is contained in:
parent
9d4cac26e5
commit
3909371774
21 changed files with 416 additions and 86 deletions
2
pom.xml
2
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-SNAPSHOT</version> <!-- linked via script to NSIS system. Should have format of 2 blocks of numbers. May have end on '-SNAPSHOT' -->
|
||||
|
||||
<url>https://redrise.ru</url>
|
||||
<description>NS multi-tool</description>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
*/
|
||||
package nsusbloader;
|
||||
|
||||
import javafx.scene.text.Font;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
|
@ -28,6 +30,7 @@ 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"};
|
||||
private static final Font DEFAULT_FONT = Font.getDefault();
|
||||
|
||||
private AppPreferences(){
|
||||
this.preferences = Preferences.userRoot().node("NS-USBloader");
|
||||
|
@ -152,4 +155,17 @@ public class AppPreferences {
|
|||
public void setPatchesTabInvisible(boolean value){preferences.putBoolean("patches_tab_visible", value);}
|
||||
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 ) );
|
||||
|
||||
|
|
56
src/main/java/nsusbloader/Controllers/FontSelector.java
Normal file
56
src/main/java/nsusbloader/Controllers/FontSelector.java
Normal file
|
@ -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 FontSelector {
|
||||
public FontSelector(ResourceBundle resourceBundle) throws Exception{
|
||||
Stage stage = new Stage();
|
||||
stage.setMinWidth(800);
|
||||
stage.setMinHeight(800);
|
||||
|
||||
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, 550, 600);
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
|
@ -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 FontSelector(resourceBundle);
|
||||
} catch (Exception ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDriversInstallFeature(){
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -103,6 +103,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 );
|
||||
|
|
40
src/main/resources/FontSettings.fxml
Normal file
40
src/main/resources/FontSettings.fxml
Normal file
|
@ -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 prefHeight="400.0" prefWidth="600.0" 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 to defaults
|
||||
fontPreviewText=Text preview
|
||||
fontSize=Font size:
|
||||
|
|
|
@ -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 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
|
||||
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:
|
||||
|
||||
|
||||
|
|
|
@ -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 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F
|
||||
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:
|
||||
|
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue