improve eros dialogs

This commit is contained in:
Moritz Zwerger 2023-12-21 20:49:30 +01:00
parent 15152a13da
commit 3638e9b557
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
12 changed files with 33 additions and 31 deletions

View File

@ -14,6 +14,7 @@
import de.bixilon.kutil.os.Architectures
import de.bixilon.kutil.os.OSTypes
import de.bixilon.kutil.os.PlatformInfo
import de.bixilon.kutil.time.TimeUtil
import org.ajoberstar.grgit.Commit
import org.ajoberstar.grgit.Grgit
import org.ajoberstar.grgit.operation.LogOp
@ -454,6 +455,7 @@ val versionJsonTask = tasks.register("versionJson") {
val versionInfo: MutableMap<String, Any> = mutableMapOf(
"general" to mutableMapOf(
"name" to project.version,
"date" to TimeUtil.seconds(),
"stable" to stable,
)
)

View File

@ -21,8 +21,8 @@ import de.bixilon.kutil.observer.DataObserver.Companion.observe
import de.bixilon.minosoft.config.profile.profiles.eros.ErosProfileManager
import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager
import de.bixilon.minosoft.data.registries.identified.Namespaces.i18n
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosConfirmationDialog
import de.bixilon.minosoft.gui.eros.dialog.UpdateAvailableDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog
import de.bixilon.minosoft.gui.eros.main.MainErosController
import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventListener.Companion.javaFX
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
@ -100,7 +100,7 @@ object Eros {
private fun askForUpdates() {
val profile = OtherProfileManager.selected.updater
if (!profile.ask) return
val dialog = SimpleErosConfirmationDialog(
val dialog = ConfirmationDialog(
title = i18n("updater.ask.title"),
header = i18n("updater.ask.header"),
description = i18n("updater.ask.description"),

View File

@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
package de.bixilon.minosoft.gui.eros.dialog
package de.bixilon.minosoft.gui.eros.dialog.simple
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
import de.bixilon.minosoft.data.language.IntegratedLanguage
@ -26,7 +26,7 @@ import javafx.scene.control.Button
import javafx.scene.text.TextFlow
import javafx.stage.Modality
class SimpleErosConfirmationDialog(
class ConfirmationDialog(
val title: Any = DEFAULT_TITLE_TEXT,
val header: Any = DEFAULT_TITLE_TEXT,
val description: Any? = null,
@ -77,7 +77,7 @@ class SimpleErosConfirmationDialog(
companion object {
private val LAYOUT = "minosoft:eros/dialog/simple_confirmation.fxml".toResourceLocation()
private val LAYOUT = "minosoft:eros/dialog/simple/confirmation.fxml".toResourceLocation()
private val DEFAULT_TITLE_TEXT = "minosoft:general.dialog.are_you_sure".toResourceLocation()
}
}

View File

@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
package de.bixilon.minosoft.gui.eros.dialog
package de.bixilon.minosoft.gui.eros.dialog.simple
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
import de.bixilon.minosoft.data.language.IntegratedLanguage
@ -27,7 +27,7 @@ import javafx.scene.input.KeyEvent
import javafx.scene.text.TextFlow
import javafx.stage.Modality
class SimpleErosWarningDialog(
class WarningDialog(
val title: Any = DEFAULT_TITLE_TEXT,
val header: Any = DEFAULT_TITLE_TEXT,
val description: Any? = null,
@ -72,7 +72,7 @@ class SimpleErosWarningDialog(
companion object {
private val LAYOUT = "minosoft:eros/dialog/simple_warning.fxml".toResourceLocation()
private val LAYOUT = "minosoft:eros/dialog/simple/warning.fxml".toResourceLocation()
private val DEFAULT_TITLE_TEXT = "minosoft:general.dialog.warning".toResourceLocation()
private val DEFAULT_IGNORE_TEXT = "minosoft:general.ignore".toResourceLocation()
}

View File

@ -1,6 +1,6 @@
/*
* Minosoft
* Copyright (C) 2020-2022 Moritz Zwerger
* Copyright (C) 2020-2023 Moritz Zwerger
*
* 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
@ -21,7 +21,7 @@ import de.bixilon.minosoft.data.accounts.Account
import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft
import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.controller.JavaFXWindowController
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosWarningDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.WarningDialog
import de.bixilon.minosoft.gui.eros.main.account.AccountController
import de.bixilon.minosoft.gui.eros.util.JavaFXAccountUtil.avatar
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
@ -160,7 +160,7 @@ class MainErosController : JavaFXWindowController() {
val profile = ErosProfileManager.selected.general.accountProfile
val account = account ?: profile.selected
if (account == null) {
SimpleErosWarningDialog(title = NO_ACCOUNT_WARNING_TITLE, header = NO_ACCOUNT_WARNING_HEADER, description = NO_ACCOUNT_WARNING_DESCRIPTION, ignoreButtonText = NO_ACCOUNT_WARNING_BUTTON, onIgnore = { JavaFXUtil.runLater { activity = ErosMainActivities.ACCOUNT } }).show()
WarningDialog(title = NO_ACCOUNT_WARNING_TITLE, header = NO_ACCOUNT_WARNING_HEADER, description = NO_ACCOUNT_WARNING_DESCRIPTION, ignoreButtonText = NO_ACCOUNT_WARNING_BUTTON, onIgnore = { JavaFXUtil.runLater { activity = ErosMainActivities.ACCOUNT } }).show()
return
}

View File

@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.registries.identified.Namespaces.i18n
import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash
import de.bixilon.minosoft.gui.eros.dialog.ErosErrorReport.Companion.report
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosWarningDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.WarningDialog
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.text
@ -67,7 +67,7 @@ class AboutController : EmbeddedJavaFXController<HBox>() {
try {
val update = MinosoftUpdater.check()
if (update == null) {
SimpleErosWarningDialog(i18n("updater.none.title"), i18n("updater.none.header")).show()
WarningDialog(i18n("updater.none.title"), i18n("updater.none.header")).show()
}
// no else, because eros is observing the update property and opens it automatically
} catch (error: Throwable) {

View File

@ -32,7 +32,7 @@ import de.bixilon.minosoft.data.text.ChatComponent
import de.bixilon.minosoft.data.text.TranslatableComponents
import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.dialog.ErosErrorReport.Companion.report
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosConfirmationDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog
import de.bixilon.minosoft.gui.eros.main.account.add.MicrosoftAddController
import de.bixilon.minosoft.gui.eros.main.account.add.MojangAddController
import de.bixilon.minosoft.gui.eros.main.account.add.OfflineAddController
@ -203,7 +203,7 @@ class AccountController : EmbeddedJavaFXController<Pane>() {
it.add(Button("Delete").apply {
setOnAction {
SimpleErosConfirmationDialog(onConfirm = {
ConfirmationDialog(onConfirm = {
if (profile.selected == account) {
profile.selected = null
}

View File

@ -31,11 +31,11 @@ import de.bixilon.minosoft.data.text.TranslatableComponents
import de.bixilon.minosoft.gui.eros.Eros
import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.dialog.ServerModifyDialog
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosConfirmationDialog
import de.bixilon.minosoft.gui.eros.dialog.connection.ConnectingDialog
import de.bixilon.minosoft.gui.eros.dialog.connection.KickDialog
import de.bixilon.minosoft.gui.eros.dialog.connection.LoadingDialog
import de.bixilon.minosoft.gui.eros.dialog.connection.VerifyAssetsDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog
import de.bixilon.minosoft.gui.eros.main.InfoPane
import de.bixilon.minosoft.gui.eros.main.play.server.card.FaviconManager.saveFavicon
import de.bixilon.minosoft.gui.eros.main.play.server.card.ServerCard
@ -284,7 +284,7 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
val type = serverType
isDisable = type.readOnly
setOnAction {
SimpleErosConfirmationDialog(confirmButtonText = "minosoft:general.delete".toResourceLocation(), description = TranslatableComponents.EROS_DELETE_SERVER_CONFIRM_DESCRIPTION(serverCard.server.name, serverCard.server.address), onConfirm = { type.remove(server) }).show()
ConfirmationDialog(confirmButtonText = "minosoft:general.delete".toResourceLocation(), description = TranslatableComponents.EROS_DELETE_SERVER_CONFIRM_DESCRIPTION(serverCard.server.name, serverCard.server.address), onConfirm = { type.remove(server) }).show()
}
ctext = TranslatableComponents.GENERAL_DELETE
},

View File

@ -21,8 +21,8 @@ import de.bixilon.minosoft.data.registries.identified.ResourceLocation
import de.bixilon.minosoft.data.text.TextComponent
import de.bixilon.minosoft.data.text.TranslatableComponents
import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.dialog.SimpleErosConfirmationDialog
import de.bixilon.minosoft.gui.eros.dialog.profiles.ProfileCreateDialog
import de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog
import de.bixilon.minosoft.gui.eros.main.InfoPane
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext
@ -125,7 +125,7 @@ class ProfilesListController : EmbeddedJavaFXController<Pane>() {
Button("Delete").apply {
isDisable = manager.selected == profile
setOnAction {
SimpleErosConfirmationDialog(confirmButtonText = "minosoft:general.delete".toResourceLocation(), onConfirm = {
ConfirmationDialog(confirmButtonText = "minosoft:general.delete".toResourceLocation(), onConfirm = {
manager.delete(profile)
JavaFXUtil.runLater {
profilesListViewFX.items.remove(profile)

View File

@ -2,7 +2,7 @@
<!--
~ Minosoft
~ Copyright (C) 2020-2022 Moritz Zwerger
~ Copyright (C) 2020-2023 Moritz Zwerger
~
~ 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
~
@ -19,7 +19,7 @@
<?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?>
<?import org.kordamp.ikonli.javafx.FontIcon?>
<HBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" prefHeight="230.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/16"> <!--fx:controller="de.bixilon.minosoft.gui.eros.dialog.SimpleErosConfirmationDialog" -->
<HBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" prefHeight="230.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/17.0.2-ea"> <!--fx:controller="de.bixilon.minosoft.gui.eros.dialog.simple.ConfirmationDialog -->
<GridPane HBox.hgrow="ALWAYS">
<columnConstraints>
<ColumnConstraints hgrow="ALWAYS"/>
@ -43,13 +43,13 @@
</GridPane.margin>
<TextFlow fx:id="descriptionFX" GridPane.rowIndex="1">
<GridPane.margin>
<Insets left="5.0" right="5.0"/>
<Insets bottom="20.0" left="5.0" right="5.0" top="10.0"/>
</GridPane.margin>
<Text text="This is a really important warning, please click on cancel!"/>
</TextFlow>
<TextFlow fx:id="headerFX" style="-fx-font-size: 30;">
<GridPane.margin>
<Insets bottom="20.0" left="5.0" right="5.0"/>
<Insets bottom="10.0" left="5.0" right="5.0"/>
</GridPane.margin>
<opaqueInsets>
<Insets/>
@ -60,7 +60,7 @@
<ColumnConstraints hgrow="ALWAYS"/>
</columnConstraints>
</GridPane>
<FontIcon iconColor="#e4e44b" iconLiteral="fas-exclamation-triangle" iconSize="150">
<FontIcon iconColor="#e4e44b" iconLiteral="fas-question-circle" iconSize="150">
<GridPane.margin>
<Insets left="5.0" right="10.0"/>
</GridPane.margin>
@ -78,7 +78,7 @@
<rowConstraints>
<RowConstraints vgrow="NEVER"/>
</rowConstraints>
<Button fx:id="confirmButtonFX" onAction="#confirm" text="Confirm" defaultButton="true" GridPane.columnIndex="2">
<Button fx:id="confirmButtonFX" defaultButton="true" onAction="#confirm" text="Confirm" GridPane.columnIndex="2">
<GridPane.margin>
<Insets left="5.0" right="5.0"/>
</GridPane.margin>

View File

@ -2,7 +2,7 @@
<!--
~ Minosoft
~ Copyright (C) 2020-2022 Moritz Zwerger
~ Copyright (C) 2020-2023 Moritz Zwerger
~
~ 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
~
@ -19,7 +19,7 @@
<?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?>
<?import org.kordamp.ikonli.javafx.FontIcon?>
<HBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" prefHeight="250.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/17.0.2-ea"> <!--fx:controller="de.bixilon.minosoft.gui.eros.dialog.SimpleErosWarningDialog" -->
<HBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" prefHeight="250.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/17.0.2-ea"> <!--fx:controller="de.bixilon.minosoft.gui.eros.dialog.simple.WarningDialog -->
<GridPane HBox.hgrow="ALWAYS">
<columnConstraints>
<ColumnConstraints hgrow="NEVER"/>
@ -45,13 +45,13 @@
</GridPane.margin>
<TextFlow fx:id="descriptionFX" GridPane.rowIndex="1">
<GridPane.margin>
<Insets left="5.0" right="5.0"/>
<Insets bottom="20.0" left="5.0" right="5.0" top="10.0"/>
</GridPane.margin>
<Text text="This is a really important warning, please click on cancel!"/>
</TextFlow>
<TextFlow fx:id="headerFX" style="-fx-font-size: 30;">
<GridPane.margin>
<Insets bottom="20.0" left="5.0" right="5.0" top="40.0"/>
<Insets bottom="10.0" left="5.0" right="5.0" top="40.0"/>
</GridPane.margin>
<opaqueInsets>
<Insets/>
@ -83,7 +83,7 @@
<Insets bottom="10.0" right="5.0"/>
</GridPane.margin>
</GridPane>
<FontIcon styleClass="warning-icon" iconColor="#FFCC00" iconLiteral="fas-exclamation-triangle" iconSize="150">
<FontIcon iconColor="#FFCC00" iconLiteral="fas-exclamation-triangle" iconSize="150" styleClass="warning-icon">
<GridPane.margin>
<Insets left="5.0" right="10.0"/>
</GridPane.margin>

View File

@ -239,6 +239,6 @@ minosoft:updater.available.update=Update now
minosoft:updater.ask.title=Update checking
minosoft:updater.ask.header=Allow automated checking for updates?
minosoft:updater.ask.description=Minosoft can automatically check for updates on startup.\nIt is highly recommended to just run the latest version, there is no benefit from running outdated builds. Newer builds will include performance/feature improvements, potentially security updates and bug fixes.\nThe updater will submit data the following data to a server provided by Moritz Zwerger (Bixilon; original author of the program; visit the privacy https://imprint.bixilon.de): current running version, operating system, processor architecture. All requests are completely anonymized, but might be logged.\nMinosoft will prompt you to automatically update, once an update is available. You can always search for updates manually (Main window -> About -> Check for updates). This option can be changed at any time in the configuration files.
minosoft:updater.ask.description=Minosoft can automatically check for updates on startup.\nIt is highly recommended to just run the latest version, there is no benefit from running outdated builds. Newer builds will include performance/feature improvements, potentially security updates and bug fixes.\n\nThe updater will submit data the following data to a server provided by Moritz Zwerger (Bixilon; original author of the program; visit the privacy https://imprint.bixilon.de ): current running version, operating system, processor architecture. All requests are completely anonymized, but might be logged.\n\nMinosoft will prompt you to automatically update, once an update is available.\n\nYou can always search for updates manually (Main window -> About -> Check for updates). This option can be changed at any time in the configuration files.
minosoft:updater.ask.no=Disallow update checking
minosoft:updater.ask.yes=Allow and check now (recommended)