Merge branch 'develop' of Seil0/cemu_UI into master
This commit is contained in:
commit
1df6a91f41
|
@ -1,3 +1,4 @@
|
|||
language: java
|
||||
jdk:
|
||||
- oraclejdk9
|
||||
- oraclejdk10
|
||||
|
|
24
README.md
24
README.md
|
@ -1,19 +1,17 @@
|
|||
# cemu_UI
|
||||
|
||||
![Total Downloads](https://img.shields.io/github/downloads/Seil0/cemu_UI/total.svg?style=flat-square)
|
||||
[![Build](https://img.shields.io/travis/Seil0/cemu_UI/master.svg?style=flat-square)](https://travis-ci.org/Seil0/cemu_UI)
|
||||
[![Latest](https://img.shields.io/github/release/Seil0/cemu_UI/all.svg?style=flat-square)](https://github.com/Seil0/cemu_UI/releases)
|
||||
[![HitCount](http://hits.dwyl.io/Seil0/cemu_UI.svg)](http://hits.dwyl.io/Seil0/cemu_UI)
|
||||
[![Latest](https://img.shields.io/github/release/Seil0/cemu_UI/all.svg?style=flat-square)](https://git.mosad.xyz/Seil0/cemu_UI/releases)
|
||||
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg?style=flat-square)](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||
cemu_UI is a simple, material design graphical frontend for [cemu](http://cemu.info/), a Wii U emulator. Downloads can be found [here](https://github.com/Seil0/cemu_UI/releases).
|
||||
cemu_UI is a simple, material design graphical frontend for [cemu](http://cemu.info/), a Wii U emulator. Downloads can be found [here](https://git.mosad.xyz/Seil0/cemu_UI/releases).
|
||||
|
||||
## Installation
|
||||
Simply download the cemu_UI.jar from [releases](https://github.com/Seil0/cemu_UI/releases), make sure you have the latest version of java 8 oracle jre/jdk installed and open the file. cemu_UI creats a new directory "C:\Users\USERNAME\Documents\cemu_UI", where the database, settings and covers are stored. **first start can take while!**
|
||||
Simply download the cemu_UI.jar from [Releases](https://git.mosad.xyz/Seil0/cemu_UI/releases), make sure you have the latest version of java 8 oracle jre/jdk installed and open the file. cemu_UI creats a new directory "C:\Users\USERNAME\Documents\cemu_UI", where the database, settings and covers are stored. **first start can take while!**
|
||||
|
||||
If you want to use the cloud sync function read the [wiki](https://github.com/Seil0/cemu_UI/wiki#cloud-savegame-syncronisation) carefully! If you have problems using the cloud synchronisation please update to version [075](https://github.com/Seil0/cemu_UI/releases/tag/075).
|
||||
If you want to use the cloud sync function read the [wiki](https://git.mosad.xyz/Seil0/cemu_UI/wiki#cloud-savegame-syncronisation) carefully!
|
||||
|
||||
### [FAQ](https://github.com/Seil0/cemu_UI/wiki#faq)
|
||||
### [FAQ](https://git.mosad.xyz/Seil0/cemu_UI/wiki#faq)
|
||||
|
||||
## Features
|
||||
|
||||
|
@ -23,19 +21,17 @@ If you want to use the cloud sync function read the [wiki](https://github.com/Se
|
|||
* add updates and dlcs easier (only adding not downloading!)
|
||||
* automatic rom detection (only .rpx files with a app.xml)
|
||||
* customisable UI
|
||||
* [sync savegames via google drive](https://github.com/Seil0/cemu_UI/wiki)
|
||||
* [sync savegames via google drive](https://git.mosad.xyz/Seil0/cemu_UI/wiki)
|
||||
* [smmdb api](https://github.com/Tarnadas/smmdb) integration
|
||||
|
||||
## [planed Features](https://github.com/Seil0/cemu_UI/projects/1) (no ETA)
|
||||
## [planed Features](https://git.mosad.xyz/Seil0/cemu_UI/milestones)
|
||||
|
||||
* Controller support
|
||||
|
||||
### If you have another idea, make a "new issue" with the ![#f03c15](https://placehold.it/15/fbca04/000000?text=+)`idea` lable
|
||||
### If you have another idea, make a new issue!
|
||||
|
||||
### [building from source](https://github.com/Seil0/cemu_UI/wiki/Documantation)
|
||||
### [building from source](https://git.mosad.xyz/Seil0/cemu_UI/wiki/Documantation)
|
||||
|
||||
## Screenshots
|
||||
|
||||
![Screenshot](/downloadContent/cemu_UI4.png)
|
||||
|
||||
|
||||
![Screenshot](https://git.mosad.xyz/Seil0/cemu_UI/raw/branch/master/downloadContent/cemu_UI4.png)
|
||||
|
|
12
pom.xml
12
pom.xml
|
@ -19,14 +19,14 @@
|
|||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.11</version>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jfoenix</groupId>
|
||||
<artifactId>jfoenix</artifactId>
|
||||
<version>9.0.3</version>
|
||||
<version>9.0.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -38,7 +38,7 @@
|
|||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.21.0.1</version>
|
||||
<version>3.23.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -107,7 +107,7 @@
|
|||
<dependency>
|
||||
<groupId>com.google.apis</groupId>
|
||||
<artifactId>google-api-services-drive</artifactId>
|
||||
<version>v3-rev99-1.23.0</version>
|
||||
<version>v3-rev120-1.23.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.google.http-client/google-http-client -->
|
||||
|
@ -150,7 +150,7 @@
|
|||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.9.4</version>
|
||||
<version>2.9.5</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
|
||||
|
@ -195,7 +195,7 @@
|
|||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<version>3.1.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
|
|
|
@ -47,7 +47,6 @@ import javafx.scene.control.ButtonType;
|
|||
import javafx.scene.control.Alert.AlertType;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
|
||||
|
||||
public class Main extends Application {
|
||||
|
||||
private Stage primaryStage;
|
||||
|
@ -62,14 +61,13 @@ public class Main extends Application {
|
|||
private static String osVers = System.getProperty("os.version");
|
||||
private static String javaVers = System.getProperty("java.version");
|
||||
private static String javaVend= System.getProperty("java.vendor");
|
||||
private String gamesDBdownloadURL = "https://github.com/Seil0/cemu_UI/raw/master/downloadContent/games.db";
|
||||
public String dirWin = userHome + "/Documents/cemu_UI"; // Windows: C:/Users/"User"/Documents/cemu_UI
|
||||
public String dirLinux = userHome + "/cemu_UI"; // Linux: /home/"User"/cemu_UI
|
||||
private File directory;
|
||||
private File configFile;
|
||||
private File gamesDBFile;
|
||||
private File reference_gamesFile;
|
||||
private File pictureCache;
|
||||
private String gamesDBdownloadURL = "https://git.mosad.xyz/Seil0/cemu_UI/raw/branch/master/downloadContent/games.db";
|
||||
private static String dirCemuUI;
|
||||
private static File directory;
|
||||
private static File configFile;
|
||||
private static File gamesDBFile;
|
||||
private static File reference_gamesFile;
|
||||
private static File pictureCache;
|
||||
private static Logger LOGGER;
|
||||
|
||||
@Override
|
||||
|
@ -78,7 +76,10 @@ public class Main extends Application {
|
|||
LOGGER.info("OS: " + osName + " " + osVers + " " + osArch);
|
||||
LOGGER.info("Java: " + javaVend + " " + javaVers);
|
||||
LOGGER.info("User: " + userName + " " + userHome);
|
||||
|
||||
this.primaryStage = primaryStage;
|
||||
mainWindowController = new MainWindowController(this);
|
||||
|
||||
mainWindow();
|
||||
initActions();
|
||||
} catch (Exception e) {
|
||||
|
@ -91,29 +92,22 @@ public class Main extends Application {
|
|||
try {
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setLocation(ClassLoader.getSystemResource("fxml/MainWindow.fxml"));
|
||||
loader.setController(mainWindowController);
|
||||
pane = (AnchorPane) loader.load();
|
||||
primaryStage.setMinWidth(265.00);
|
||||
primaryStage.setMinHeight(425.00);
|
||||
primaryStage.setTitle("cemu_UI");
|
||||
// primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("/resources/Homeflix_Icon_64x64.png"))); //adds application icon
|
||||
// primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream(""))); //adds application icon
|
||||
primaryStage.setOnCloseRequest(event -> System.exit(1));
|
||||
|
||||
// generate window
|
||||
scene = new Scene(pane); // create new scene, append pane to scene
|
||||
scene.getStylesheets().add(Main.class.getResource("/css/MainWindows.css").toExternalForm());
|
||||
primaryStage.setScene(scene); // append scene to stage
|
||||
primaryStage.show(); // show stage
|
||||
|
||||
mainWindowController = loader.getController(); // Link of FXMLController and controller class
|
||||
mainWindowController.setMain(this); // call setMain
|
||||
cloudController = new CloudController(mainWindowController); // call cloudController constructor
|
||||
|
||||
// get OS and the specific paths
|
||||
if (osName.equals("Linux")) {
|
||||
directory = new File(dirLinux);
|
||||
configFile = new File(dirLinux + "/config.xml");
|
||||
gamesDBFile = new File(dirLinux + "/games.db");
|
||||
reference_gamesFile = new File(dirLinux + "/reference_games.db");
|
||||
pictureCache= new File(dirLinux+"/picture_cache");
|
||||
} else {
|
||||
directory = new File(dirWin);
|
||||
configFile = new File(dirWin + "/config.xml");
|
||||
gamesDBFile = new File(dirWin + "/games.db");
|
||||
reference_gamesFile = new File(dirWin + "/reference_games.db");
|
||||
pictureCache= new File(dirWin+"/picture_cache");
|
||||
}
|
||||
|
||||
// startup checks
|
||||
// check if client_secret.json is present
|
||||
if (Main.class.getResourceAsStream("/client_secret.json") == null) {
|
||||
|
@ -122,7 +116,7 @@ public class Main extends Application {
|
|||
Alert alert = new Alert(AlertType.ERROR);
|
||||
alert.setTitle("cemu_UI");
|
||||
alert.setHeaderText("Error");
|
||||
alert.setContentText("client_secret is missing! Please contact the maintainer. \nIf you compiled cemu_UI by yourself see: \nhttps://github.com/Seil0/cemu_UI/wiki/Documantation");
|
||||
alert.setContentText("client_secret is missing! Please contact the maintainer. \nIf you compiled cemu_UI by yourself see: \nhttps://git.mosad.xyz/Seil0/cemu_UI/wiki/Documantation");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
|
@ -165,14 +159,6 @@ public class Main extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
// generate window
|
||||
scene = new Scene(pane); // create new scene, append pane to scene
|
||||
scene.getStylesheets().add(Main.class.getResource("/css/MainWindows.css").toExternalForm());
|
||||
primaryStage.setMinWidth(265.00);
|
||||
primaryStage.setMinHeight(425.00);
|
||||
primaryStage.setScene(scene); // append scene to stage
|
||||
primaryStage.show(); // show stage
|
||||
|
||||
// init here as it loads the games to the mwc and the gui, therefore the window must exist
|
||||
mainWindowController.init();
|
||||
mainWindowController.getDbController().init();
|
||||
|
@ -188,6 +174,28 @@ public class Main extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
if (osName.contains("Windows")) {
|
||||
dirCemuUI = userHome + "/Documents/cemu_UI";
|
||||
} else {
|
||||
dirCemuUI = userHome + "/cemu_UI";
|
||||
}
|
||||
|
||||
directory = new File(dirCemuUI);
|
||||
configFile = new File(dirCemuUI + "/config.xml");
|
||||
gamesDBFile = new File(dirCemuUI + "/games.db");
|
||||
reference_gamesFile = new File(dirCemuUI + "/reference_games.db");
|
||||
pictureCache= new File(dirCemuUI+"/picture_cache");
|
||||
|
||||
// delete old log file and create new
|
||||
System.setProperty("logFilename", dirCemuUI + "/app.log");
|
||||
File logFile = new File(dirCemuUI + "/app.log");
|
||||
logFile.delete();
|
||||
LOGGER = LogManager.getLogger(Main.class.getName());
|
||||
launch(args);
|
||||
}
|
||||
|
||||
private void firstStart() {
|
||||
Alert alert = new Alert(AlertType.CONFIRMATION); // new alert with file-chooser
|
||||
alert.setTitle("cemu_UI");
|
||||
|
@ -292,26 +300,6 @@ public class Main extends Application {
|
|||
primaryStage.maximizedProperty().addListener(maximizeListener);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// delete old log file and create new
|
||||
if (osName.equals("Linux")) {
|
||||
System.setProperty("logFilename", userHome + "/cemu_UI/app.log");
|
||||
File logFile = new File(userHome + "/cemu_UI/app.log");
|
||||
logFile.delete();
|
||||
} else {
|
||||
System.setProperty("logFilename", userHome + "/Documents/cemu_UI/app.log");
|
||||
File logFile = new File(userHome + "/Documents/cemu_UI/app.log");
|
||||
logFile.delete();
|
||||
}
|
||||
LOGGER = LogManager.getLogger(Main.class.getName());
|
||||
launch(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
public Stage getPrimaryStage() {
|
||||
return primaryStage;
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ import com.cemu_UI.datatypes.CourseTableDataType;
|
|||
import com.cemu_UI.datatypes.SmmdbApiDataType;
|
||||
import com.cemu_UI.datatypes.UIROMDataType;
|
||||
import com.cemu_UI.uiElements.JFXEditGameDialog;
|
||||
import com.cemu_UI.uiElements.JFXInfoDialog;
|
||||
import com.cemu_UI.uiElements.JFXInfoAlert;
|
||||
import com.cemu_UI.uiElements.JFXOkayCancelDialog;
|
||||
import com.cemu_UI.uiElements.JFXTextAreaInfoDialog;
|
||||
import com.jfoenix.controls.JFXButton;
|
||||
|
@ -111,37 +111,26 @@ public class MainWindowController {
|
|||
|
||||
@FXML
|
||||
private JFXButton aboutBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton settingsBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton addBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton reloadRomsBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton smmdbBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton cemuTFBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton romTFBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton updateBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton smmdbDownloadBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton playBtn;
|
||||
|
||||
@FXML
|
||||
private JFXButton lastTimePlayedBtn;
|
||||
|
||||
@FXML
|
||||
JFXButton totalPlaytimeBtn;
|
||||
|
||||
|
@ -150,13 +139,10 @@ public class MainWindowController {
|
|||
|
||||
@FXML
|
||||
private JFXTextField cemuTextField;
|
||||
|
||||
@FXML
|
||||
private JFXTextField romTextField;
|
||||
|
||||
@FXML
|
||||
private JFXTextField courseSearchTextFiled;
|
||||
|
||||
@FXML
|
||||
private JFXTextField executeCommandTextFiled;
|
||||
|
||||
|
@ -168,40 +154,31 @@ public class MainWindowController {
|
|||
|
||||
@FXML
|
||||
private JFXToggleButton cloudSyncToggleBtn;
|
||||
|
||||
@FXML
|
||||
private JFXToggleButton autoUpdateToggleBtn;
|
||||
|
||||
@FXML
|
||||
private JFXToggleButton fullscreenToggleBtn;
|
||||
|
||||
@FXML
|
||||
private ChoiceBox<String> languageChoisBox;
|
||||
|
||||
@FXML
|
||||
private ChoiceBox<String> branchChoisBox;
|
||||
|
||||
@FXML
|
||||
private AnchorPane mainAnchorPane;
|
||||
|
||||
@FXML
|
||||
private AnchorPane gamesAnchorPane;
|
||||
|
||||
@FXML
|
||||
private AnchorPane settingsAnchorPane;
|
||||
|
||||
@FXML
|
||||
private AnchorPane smmdbAnchorPane;
|
||||
|
||||
@FXML
|
||||
private ScrollPane mainScrollPane;
|
||||
|
||||
@FXML
|
||||
private ScrollPane settingsScrollPane;
|
||||
|
||||
@FXML
|
||||
private ScrollPane smmdbScrollPane;
|
||||
|
||||
@FXML
|
||||
private ScrollPane smmdbImageViewScrollPane;
|
||||
|
||||
|
@ -210,7 +187,6 @@ public class MainWindowController {
|
|||
|
||||
@FXML
|
||||
private HBox topHBox;
|
||||
|
||||
@FXML
|
||||
private HBox bottomHBox;
|
||||
|
||||
|
@ -219,31 +195,22 @@ public class MainWindowController {
|
|||
|
||||
@FXML
|
||||
private Label helpLbl;
|
||||
|
||||
@FXML
|
||||
private Label cemu_UISettingsLbl;
|
||||
|
||||
@FXML
|
||||
private Label cemuDirectoryLbl;
|
||||
|
||||
@FXML
|
||||
private Label romDirectoryLbl;
|
||||
|
||||
@FXML
|
||||
private Label mainColorLbl;
|
||||
|
||||
@FXML
|
||||
private Label languageLbl;
|
||||
|
||||
@FXML
|
||||
private Label updateLbl;
|
||||
|
||||
@FXML
|
||||
private Label branchLbl;
|
||||
|
||||
@FXML
|
||||
private Label cemuSettingsLbl;
|
||||
|
||||
@FXML
|
||||
private Label licensesLbl;
|
||||
|
||||
|
@ -251,17 +218,14 @@ public class MainWindowController {
|
|||
private JFXTreeTableView<CourseTableDataType> courseTreeTable = new JFXTreeTableView<CourseTableDataType>();
|
||||
|
||||
@FXML
|
||||
TreeItem<CourseTableDataType> root = new TreeItem<>(new CourseTableDataType("", "", 0, 0));
|
||||
private TreeItem<CourseTableDataType> root = new TreeItem<>(new CourseTableDataType("", "", 0, 0));
|
||||
|
||||
@FXML
|
||||
private JFXTreeTableColumn<CourseTableDataType, String> titleColumn = new JFXTreeTableColumn<>("title");
|
||||
|
||||
@FXML
|
||||
private JFXTreeTableColumn<CourseTableDataType, String> idColumn = new JFXTreeTableColumn<>("id");
|
||||
|
||||
@FXML
|
||||
private JFXTreeTableColumn<CourseTableDataType, Integer> starsColumn = new JFXTreeTableColumn<>("stars");
|
||||
|
||||
@FXML
|
||||
private JFXTreeTableColumn<CourseTableDataType, Integer> timeColumn = new JFXTreeTableColumn<>("time");
|
||||
|
||||
|
@ -293,8 +257,8 @@ public class MainWindowController {
|
|||
private String selectedGameTitleID;
|
||||
private String selectedGameTitle;
|
||||
private String id;
|
||||
private String version = "0.3.0";
|
||||
private String buildNumber = "077";
|
||||
private String version = "0.3.1";
|
||||
private String buildNumber = "081";
|
||||
private String versionName = "Purple Comet";
|
||||
private int xPos = -200;
|
||||
private int yPos = 17;
|
||||
|
@ -372,8 +336,8 @@ public class MainWindowController {
|
|||
private String smmdbDownloadBtnLoading;
|
||||
private String smmdbDownloadBtnDownload;
|
||||
|
||||
public void setMain(Main m) {
|
||||
this.main = m;
|
||||
public MainWindowController(Main main) {
|
||||
this.main = main;
|
||||
dbController = new DBController(main, this);
|
||||
smmdbAPIController = new SmmdbAPIController();
|
||||
}
|
||||
|
@ -382,7 +346,7 @@ public class MainWindowController {
|
|||
* initialize the MainWindowController
|
||||
* loadSettings, checkAutoUpdate, initUI and initActions
|
||||
*/
|
||||
void init() {
|
||||
public void init() {
|
||||
loadSettings();
|
||||
checkAutoUpdate();
|
||||
initUI();
|
||||
|
@ -721,7 +685,7 @@ public class MainWindowController {
|
|||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Desktop.getDesktop().browse(new URI("https://github.com/Seil0/cemu_UI/issues/3"));
|
||||
Desktop.getDesktop().browse(new URI("https://git.mosad.xyz/Seil0/cemu_UI/issues/3"));
|
||||
} catch (IOException | URISyntaxException e) {
|
||||
LOGGER.error("An error ocoured while trying to open a Website.", e);
|
||||
}
|
||||
|
@ -810,8 +774,8 @@ public class MainWindowController {
|
|||
saveSettings();
|
||||
} else {
|
||||
String bodyText = newValue + ": No such file or directory";
|
||||
JFXInfoDialog fileErrorDialog = new JFXInfoDialog("Waring!", bodyText, dialogBtnStyle, 190, 150, main.getPane());
|
||||
fileErrorDialog.show();
|
||||
JFXInfoAlert fileErrorDialog = new JFXInfoAlert("Waring!", bodyText, dialogBtnStyle, main.getPrimaryStage());
|
||||
fileErrorDialog.showAndWait();
|
||||
LOGGER.warn(newValue + ": No such file or directory");
|
||||
}
|
||||
}
|
||||
|
@ -826,8 +790,8 @@ public class MainWindowController {
|
|||
reloadRoms();
|
||||
} else {
|
||||
String bodyText = newValue + ": No such file or directory";
|
||||
JFXInfoDialog fileErrorDialog = new JFXInfoDialog("Waring!", bodyText, dialogBtnStyle, 190, 150, main.getPane());
|
||||
fileErrorDialog.show();
|
||||
JFXInfoAlert fileErrorDialog = new JFXInfoAlert("Waring!", bodyText, dialogBtnStyle, main.getPrimaryStage());
|
||||
fileErrorDialog.showAndWait();
|
||||
LOGGER.warn(newValue + ": No such file or directory");
|
||||
}
|
||||
}
|
||||
|
@ -837,20 +801,21 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void detailsSlideoutBtnAction() {
|
||||
private void detailsSlideoutBtnAction() {
|
||||
playBtnSlideOut();
|
||||
}
|
||||
|
||||
@FXML
|
||||
void aboutBtnAction() {
|
||||
private void aboutBtnAction() {
|
||||
String bodyText = "cemu_UI by @Seil0 \nVersion: " + version + " (" + buildNumber + ") \"" + versionName + "\" \n"
|
||||
+ aboutBtnBodyText;
|
||||
JFXInfoDialog aboutDialog = new JFXInfoDialog(aboutBtnHeadingText, bodyText, dialogBtnStyle, 350, 200, main.getPane());
|
||||
aboutDialog.show();
|
||||
|
||||
JFXInfoAlert infoAlert = new JFXInfoAlert(aboutBtnHeadingText, bodyText, dialogBtnStyle, main.getPrimaryStage());
|
||||
infoAlert.showAndWait();
|
||||
}
|
||||
|
||||
@FXML
|
||||
void settingsBtnAction() {
|
||||
private void settingsBtnAction() {
|
||||
if (smmdbTrue) {
|
||||
smmdbAnchorPane.setVisible(false);
|
||||
smmdbTrue = false;
|
||||
|
@ -866,12 +831,12 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void reloadRomsBtnAction() throws IOException {
|
||||
private void reloadRomsBtnAction() throws IOException {
|
||||
reloadRoms();
|
||||
}
|
||||
|
||||
@FXML
|
||||
void smmdbBtnAction() {
|
||||
private void smmdbBtnAction() {
|
||||
// show smmdbAnchorPane
|
||||
if (smmdbTrue) {
|
||||
smmdbAnchorPane.setVisible(false);
|
||||
|
@ -910,7 +875,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void playBtnAction() throws InterruptedException, IOException {
|
||||
private void playBtnAction() throws InterruptedException, IOException {
|
||||
dbController.setLastPlayed(selectedGameTitleID);
|
||||
playGame = new playGame(this, dbController);
|
||||
|
||||
|
@ -918,17 +883,17 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void totalPlaytimeBtnAction() {
|
||||
private void totalPlaytimeBtnAction() {
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
void lastTimePlayedBtnAction() {
|
||||
private void lastTimePlayedBtnAction() {
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
void cemuTFBtnAction() {
|
||||
private void cemuTFBtnAction() {
|
||||
File cemuDirectory = directoryChooser.showDialog(main.getPrimaryStage());
|
||||
if (cemuDirectory != null) {
|
||||
cemuTextField.setText(cemuDirectory.getAbsolutePath());
|
||||
|
@ -936,7 +901,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void romTFBtnAction() {
|
||||
private void romTFBtnAction() {
|
||||
File romDirectory = directoryChooser.showDialog(main.getPrimaryStage());
|
||||
if (romDirectory != null) {
|
||||
romTextField.setText(romDirectory.getAbsolutePath());
|
||||
|
@ -944,7 +909,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void updateBtnAction() {
|
||||
private void updateBtnAction() {
|
||||
updateController = new UpdateController(this, buildNumber, useBeta);
|
||||
Thread updateThread = new Thread(updateController);
|
||||
updateThread.setName("Updater");
|
||||
|
@ -952,7 +917,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void autoUpdateToggleBtnAction() {
|
||||
private void autoUpdateToggleBtnAction() {
|
||||
if (isAutoUpdate()) {
|
||||
setAutoUpdate(false);
|
||||
} else {
|
||||
|
@ -962,12 +927,12 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void courseSearchTextFiledAction() {
|
||||
private void courseSearchTextFiledAction() {
|
||||
// not in use
|
||||
}
|
||||
|
||||
@FXML
|
||||
void smmdbDownloadBtnAction() {
|
||||
private void smmdbDownloadBtnAction() {
|
||||
String downloadUrl = "http://smmdb.ddns.net/api/downloadcourse?id=" + id + "&type=zip";
|
||||
String downloadFileURL = getCemuPath() + "/" + id + ".zip"; // getCemuPath() + "/" + smmID + "/" + id + ".rar"
|
||||
String outputFile = getCemuPath() + "/";
|
||||
|
@ -1035,7 +1000,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void fullscreenToggleBtnAction() {
|
||||
private void fullscreenToggleBtnAction() {
|
||||
if (fullscreen) {
|
||||
fullscreen = false;
|
||||
} else {
|
||||
|
@ -1045,7 +1010,7 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void cloudSyncToggleBtnAction() {
|
||||
private void cloudSyncToggleBtnAction() {
|
||||
if(cloudSync) {
|
||||
cloudSync = false;
|
||||
} else {
|
||||
|
@ -1069,9 +1034,9 @@ public class MainWindowController {
|
|||
cloudSyncToggleBtn.setSelected(false);
|
||||
|
||||
// cloud sync init error dialog
|
||||
JFXInfoDialog cloudSyncErrorDialog = new JFXInfoDialog(cloudSyncErrorHeadingText,
|
||||
cloudSyncErrorBodyText, dialogBtnStyle, 450, 170, main.getPane());
|
||||
cloudSyncErrorDialog.show();
|
||||
JFXInfoAlert cloudSyncErrorDialog = new JFXInfoAlert(cloudSyncErrorHeadingText,
|
||||
cloudSyncErrorBodyText, dialogBtnStyle, main.getPrimaryStage());
|
||||
cloudSyncErrorDialog.showAndWait();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1095,13 +1060,13 @@ public class MainWindowController {
|
|||
}
|
||||
|
||||
@FXML
|
||||
void colorPickerAction() {
|
||||
private void colorPickerAction() {
|
||||
editColor(colorPicker.getValue().toString());
|
||||
applyColor();
|
||||
}
|
||||
|
||||
@FXML
|
||||
void addBtnAction() {
|
||||
private void addBtnAction() {
|
||||
String headingText = addGameBtnHeadingText;
|
||||
String bodyText = addGameBtnBodyText;
|
||||
JFXEditGameDialog addGameDialog = new JFXEditGameDialog(headingText, bodyText, dialogBtnStyle, 450, 300, 0,
|
||||
|
@ -1123,9 +1088,9 @@ public class MainWindowController {
|
|||
LOGGER.info("No parameter set!");
|
||||
|
||||
//addGame error dialog
|
||||
JFXInfoDialog errorDialog = new JFXInfoDialog(addBtnReturnErrorHeadingText, addBtnReturnErrorBodyText,
|
||||
dialogBtnStyle, 350, 170, main.getPane());
|
||||
errorDialog.show();
|
||||
JFXInfoAlert errorDialog = new JFXInfoAlert(addBtnReturnErrorHeadingText, addBtnReturnErrorBodyText,
|
||||
dialogBtnStyle, main.getPrimaryStage());
|
||||
errorDialog.showAndWait();
|
||||
|
||||
} else {
|
||||
File pictureCache = main.getPictureCache();
|
||||
|
@ -1591,6 +1556,7 @@ public class MainWindowController {
|
|||
reloadRomsBtn.setGraphic(cached_white);
|
||||
smmdbBtn.setGraphic(smmdb_white);
|
||||
|
||||
menuHam.getStyleClass().clear();
|
||||
menuHam.getStyleClass().add("jfx-hamburgerW");
|
||||
} else {
|
||||
dialogBtnStyle = btnStyleBlack;
|
||||
|
@ -1613,6 +1579,7 @@ public class MainWindowController {
|
|||
reloadRomsBtn.setGraphic(cached_black);
|
||||
smmdbBtn.setGraphic(smmdb_black);
|
||||
|
||||
menuHam.getStyleClass().clear();
|
||||
menuHam.getStyleClass().add("jfx-hamburgerB");
|
||||
}
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ public class UpdateController implements Runnable {
|
|||
FileUtils.copyInputStreamToFile(pmis, new File("cemu_UI_update.jar")); // download update
|
||||
org.apache.commons.io.FileUtils.copyFile(new File("cemu_UI_update.jar"), new File("cemu_UI.jar"));
|
||||
org.apache.commons.io.FileUtils.deleteQuietly(new File("cemu_UI_update.jar")); // delete update
|
||||
Runtime.getRuntime().exec("java -jar cemu_UI.jar"); // start again TODO consider ProcessBuilder to execute
|
||||
new ProcessBuilder("java", "-jar", "cemu_UI.jar").start(); // start the new application
|
||||
System.exit(0); // finishes itself
|
||||
} catch (IOException e) {
|
||||
Platform.runLater(() -> {
|
||||
|
|
|
@ -117,8 +117,8 @@ public class JFXEditGameDialog {
|
|||
// addGame error dialog
|
||||
String headingTextError = mwc.getBundle().getString("editGameDialogHeadingTextError");
|
||||
String bodyTextError = mwc.getBundle().getString("editGameDialogBodyTextError");
|
||||
JFXInfoDialog errorDialog = new JFXInfoDialog(headingTextError, bodyTextError, dialogBtnStyle, 350,170, pane);
|
||||
errorDialog.show();
|
||||
JFXInfoAlert errorDialog = new JFXInfoAlert(headingTextError, bodyTextError, dialogBtnStyle, stage);
|
||||
errorDialog.showAndWait();
|
||||
} else {
|
||||
switch (mode) {
|
||||
case 0:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* cemu_UI
|
||||
* Kellerkinder Framework Alerts
|
||||
*
|
||||
* Copyright 2017-2018 <@Seil0>
|
||||
* Copyright 2018 <@Seil0>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,66 +20,92 @@
|
|||
*/
|
||||
package com.cemu_UI.uiElements;
|
||||
|
||||
import com.jfoenix.controls.JFXAlert;
|
||||
import com.jfoenix.controls.JFXButton;
|
||||
import com.jfoenix.controls.JFXDialog;
|
||||
import com.jfoenix.controls.JFXDialogLayout;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class JFXInfoDialog {
|
||||
public class JFXInfoAlert {
|
||||
|
||||
private String headingText;
|
||||
private String bodyText;
|
||||
private String dialogBtnStyle;
|
||||
private int dialogWidth;
|
||||
private int dialogHeight;
|
||||
private Pane pane;
|
||||
private String btnStyle;
|
||||
private Stage stage;
|
||||
|
||||
/**
|
||||
* Creates a new JFoenix Dialog to show some information
|
||||
* @param headingText Heading Text, just the heading
|
||||
* @param bodyText body Text, all other text belongs here
|
||||
* @param dialogBtnStyle Style of the okay button
|
||||
* @param dialogWidth dialog width
|
||||
* @param dialogHeight dialog height
|
||||
* @param pane pane to which the dialog belongs
|
||||
* Creates a new JFoenix Alert to show some information
|
||||
* @param headerText Heading text of the alert
|
||||
* @param bodyText Content text of the alert
|
||||
* @param btnStyle Style of the okay button
|
||||
* @param stage stage to which the dialog belongs
|
||||
*/
|
||||
public JFXInfoDialog(String headingText, String bodyText, String dialogBtnStyle, int dialogWidth, int dialogHeight, Pane pane) {
|
||||
this.headingText = headingText;
|
||||
this.bodyText = bodyText;
|
||||
this.dialogBtnStyle = dialogBtnStyle;
|
||||
this.dialogWidth = dialogWidth;
|
||||
this.dialogHeight = dialogHeight;
|
||||
this.pane = pane;
|
||||
public JFXInfoAlert(String headingText, String bodyText, String btnStyle, Stage stage) {
|
||||
setHeadingText(headingText);
|
||||
setBodyText(bodyText);
|
||||
setBtnStyle(btnStyle);
|
||||
setStage(stage);
|
||||
}
|
||||
|
||||
public void show() {
|
||||
JFXDialogLayout content = new JFXDialogLayout();
|
||||
content.setHeading(new Text(headingText));
|
||||
content.setBody(new Text(bodyText));
|
||||
content.setPrefSize(dialogWidth, dialogHeight);
|
||||
StackPane stackPane = new StackPane();
|
||||
stackPane.autosize();
|
||||
JFXDialog dialog = new JFXDialog(stackPane, content, JFXDialog.DialogTransition.LEFT, true);
|
||||
public JFXInfoAlert() {
|
||||
// Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public void showAndWait( ) {
|
||||
JFXAlert<Void> alert = new JFXAlert<>(stage);
|
||||
|
||||
JFXButton button = new JFXButton("Okay");
|
||||
button.setOnAction(new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
dialog.close();
|
||||
alert.close();
|
||||
}
|
||||
});
|
||||
button.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED);
|
||||
button.setPrefHeight(32);
|
||||
button.setStyle(dialogBtnStyle);
|
||||
button.setStyle(btnStyle);
|
||||
|
||||
JFXDialogLayout content = new JFXDialogLayout();
|
||||
content.setActions(button);
|
||||
pane.getChildren().add(stackPane);
|
||||
AnchorPane.setTopAnchor(stackPane, (pane.getHeight() - content.getPrefHeight()) / 2);
|
||||
AnchorPane.setLeftAnchor(stackPane, (pane.getWidth() - content.getPrefWidth()) / 2);
|
||||
dialog.show();
|
||||
content.setHeading(new Text(headingText));
|
||||
content.setBody(new Text(bodyText));
|
||||
alert.setContent(content);
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
public String getHeadingText() {
|
||||
return headingText;
|
||||
}
|
||||
|
||||
public void setHeadingText(String headingText) {
|
||||
this.headingText = headingText;
|
||||
}
|
||||
|
||||
public String getBodyText() {
|
||||
return bodyText;
|
||||
}
|
||||
|
||||
public void setBodyText(String bodyText) {
|
||||
this.bodyText = bodyText;
|
||||
}
|
||||
|
||||
public String getBtnStyle() {
|
||||
return btnStyle;
|
||||
}
|
||||
|
||||
public void setBtnStyle(String btnStyle) {
|
||||
this.btnStyle = btnStyle;
|
||||
}
|
||||
|
||||
public Stage getStage() {
|
||||
return stage;
|
||||
}
|
||||
|
||||
public void setStage(Stage stage) {
|
||||
this.stage = stage;
|
||||
}
|
||||
|
||||
}
|
|
@ -18,7 +18,7 @@
|
|||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.TextFlow?>
|
||||
|
||||
<AnchorPane fx:id="mainAnchorPane" minHeight="405.0" minWidth="260.0" prefHeight="600.0" prefWidth="904.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.cemu_UI.application.MainWindowController">
|
||||
<AnchorPane fx:id="mainAnchorPane" minHeight="405.0" minWidth="260.0" prefHeight="600.0" prefWidth="904.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<children>
|
||||
<ScrollPane fx:id="mainScrollPane" fitToWidth="true" layoutY="38.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="38.0">
|
||||
<content>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#HomeFlix-Local_de_DE.properties geramn Local
|
||||
#HomeFlix-Local_de_DE.properties DE-Deutsch Local
|
||||
|
||||
# Buttons
|
||||
aboutBtn = \u00dcber
|
||||
|
@ -46,7 +46,7 @@ licensesLblBodyText = cemu_UI ist lizensiert unter der GNU GPL 3.\n\nJFoenix, Ap
|
|||
showLicenses = Lizenzen \u00f6ffnen
|
||||
|
||||
aboutBtnHeadingText = cemu_UI
|
||||
aboutBtnBodyText = Diese Programm wurde mit freier Software erstellt\nund ist lizensiert unter der GNU GPL 3.\n\nwww.kellerkinder.xyz
|
||||
aboutBtnBodyText = Diese Programm wurde mit freier Software erstellt\nund ist lizensiert unter der GNU GPL 3.\n\nwww.mosad.xyz
|
||||
|
||||
cloudSyncWaringHeadingText = Spielst\u00e4nde über die Cloud syncronisieren (beta)
|
||||
cloudSyncWaringBodyText = WARNING this is a completly WIP cloud save integration,\nit's NOT recomended to use this!!\n\nUse it on your own risk and backup everthing before!
|
||||
|
|
|
@ -46,7 +46,7 @@ licensesLblBodyText = cemu_UI is licensed under the terms of GNU GPL 3.\n\nJFoen
|
|||
showLicenses = show licenses
|
||||
|
||||
aboutBtnHeadingText = cemu_UI
|
||||
aboutBtnBodyText = This Application is made with free Software\nand licensed under the terms of GNU GPL 3.\n\nwww.kellerkinder.xyz
|
||||
aboutBtnBodyText = This Application is made with free Software\nand licensed under the terms of GNU GPL 3.\n\nwww.mosad.xyz
|
||||
|
||||
cloudSyncWaringHeadingText = activate cloud savegame sync (beta)
|
||||
cloudSyncWaringBodyText = WARNING this is a completely WIP cloud save integration,\nit's NOT recommended to use this!!\n\nUse it on your own risk and backup everything before!
|
||||
|
|
Loading…
Reference in New Issue