diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java index 0ea90b12b..977ba0c43 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsPage.java @@ -83,7 +83,19 @@ public final class SettingsPage extends SettingsView { .fallbackTo(12.0) .asPredicate(Validator.addTo(txtFontSize))); - lblDisplay.fontProperty().bind(Bindings.createObjectBinding( + lblFontDisplay.fontProperty().bind(Bindings.createObjectBinding( + () -> Font.font(config().getFontFamily(), config().getFontSize()), + config().fontFamilyProperty(), config().fontSizeProperty())); + + cboLogFont.valueProperty().bindBidirectional(config().fontFamilyProperty()); + + txtLogFontSize.textProperty().bindBidirectional(config().fontSizeProperty(), + SafeStringConverter.fromFiniteDouble() + .restrict(it -> it > 0) + .fallbackTo(12.0) + .asPredicate(Validator.addTo(txtLogFontSize))); + + lblLogFontDisplay.fontProperty().bind(Bindings.createObjectBinding( () -> Font.font(config().getFontFamily(), config().getFontSize()), config().fontFamilyProperty(), config().fontSizeProperty())); // ==== diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsView.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsView.java index a7073cd40..b19ac13fd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsView.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/SettingsView.java @@ -46,11 +46,14 @@ public abstract class SettingsView extends StackPane { protected final JFXTextField txtProxyUsername; protected final JFXPasswordField txtProxyPassword; protected final JFXTextField txtFontSize; + protected final JFXTextField txtLogFontSize; protected final JFXComboBox cboLanguage; protected final JFXComboBox cboDownloadSource; protected final FontComboBox cboFont; + protected final FontComboBox cboLogFont; protected final MultiFileItem fileCommonLocation; - protected final Label lblDisplay; + protected final Label lblLogFontDisplay; + protected final Label lblFontDisplay; protected final Label lblUpdate; protected final Label lblUpdateSub; protected final Text lblUpdateNote; @@ -401,6 +404,44 @@ public abstract class SettingsView extends StackPane { borderPane.setLeft(left); } + { + HBox hBox = new HBox(); + hBox.setSpacing(3); + + cboLogFont = new FontComboBox(12); + txtLogFontSize = new JFXTextField(); + FXUtils.setLimitWidth(txtLogFontSize, 50); + hBox.getChildren().setAll(cboLogFont, txtLogFontSize); + + borderPane.setRight(hBox); + } + } + + lblLogFontDisplay = new Label("[23:33:33] [Client Thread/INFO] [WaterPower]: Loaded mod WaterPower."); + fontPane.getChildren().add(lblLogFontDisplay); + + logPane.getContent().add(fontPane); + } + settingsPane.getContent().add(logPane); + } + + { + ComponentSublist fontPane = new ComponentSublist(); + fontPane.setTitle(i18n("settings.launcher.font")); + + { + VBox vbox = new VBox(); + vbox.setSpacing(5); + + { + BorderPane borderPane = new BorderPane(); + vbox.getChildren().add(borderPane); + { + Label left = new Label(i18n("settings.launcher.font")); + BorderPane.setAlignment(left, Pos.CENTER_LEFT); + borderPane.setLeft(left); + } + { HBox hBox = new HBox(); hBox.setSpacing(3); @@ -414,119 +455,12 @@ public abstract class SettingsView extends StackPane { } } - lblDisplay = new Label("[23:33:33] [Client Thread/INFO] [WaterPower]: Loaded mod WaterPower."); - fontPane.getChildren().add(lblDisplay); + lblFontDisplay = new Label("Hello Minecraft! Launcher"); + vbox.getChildren().add(lblFontDisplay); - logPane.getContent().add(fontPane); + fontPane.getContent().add(vbox); } - settingsPane.getContent().add(logPane); - } - - { - StackPane aboutPane = new StackPane(); - GridPane gridPane = new GridPane(); - gridPane.setHgap(20); - gridPane.setVgap(10); - - ColumnConstraints col1 = new ColumnConstraints(); - col1.setHgrow(Priority.SOMETIMES); - col1.setMaxWidth(Double.NEGATIVE_INFINITY); - col1.setMinWidth(Double.NEGATIVE_INFINITY); - - ColumnConstraints col2 = new ColumnConstraints(); - col2.setHgrow(Priority.SOMETIMES); - col2.setMinWidth(20); - col2.setMaxWidth(Double.POSITIVE_INFINITY); - - gridPane.getColumnConstraints().setAll(col1, col2); - - RowConstraints row = new RowConstraints(); - row.setMinHeight(Double.NEGATIVE_INFINITY); - row.setValignment(VPos.TOP); - row.setVgrow(Priority.SOMETIMES); - gridPane.getRowConstraints().setAll(row, row, row, row, row, row); - - { - Label label = new Label(i18n("about.copyright")); - GridPane.setRowIndex(label, 0); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.copyright.statement")); - label.setWrapText(true); - GridPane.setRowIndex(label, 0); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.author")); - GridPane.setRowIndex(label, 1); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.author.statement")); - label.setWrapText(true); - GridPane.setRowIndex(label, 1); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.thanks_to")); - GridPane.setRowIndex(label, 2); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.thanks_to.statement")); - label.setWrapText(true); - GridPane.setRowIndex(label, 2); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.dependency")); - GridPane.setRowIndex(label, 3); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.dependency.statement")); - label.setWrapText(true); - GridPane.setRowIndex(label, 3); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.claim")); - GridPane.setRowIndex(label, 4); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.claim.statement")); - label.setWrapText(true); - label.setTextAlignment(TextAlignment.JUSTIFY); - GridPane.setRowIndex(label, 4); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.open_source")); - GridPane.setRowIndex(label, 5); - GridPane.setColumnIndex(label, 0); - gridPane.getChildren().add(label); - } - { - Label label = new Label(i18n("about.open_source.statement")); - label.setWrapText(true); - GridPane.setRowIndex(label, 5); - GridPane.setColumnIndex(label, 1); - gridPane.getChildren().add(label); - } - aboutPane.getChildren().setAll(gridPane); - settingsPane.getContent().add(aboutPane); + settingsPane.getContent().add(fontPane); } rootPane.getChildren().add(settingsPane); } diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index ce34ee043..bd2e4e437 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -350,7 +350,7 @@ modpack.type.curse.tolerable_error=We cannot complete the download of all files modpack.type.curse.error=Unable to install this Curse modpack. Please retry. modpack.type.curse.not_found=Some of required resources are missing and thus could not be downloaded. Please consider the latest version or other modpacks. modpack.type.mcbbs=MCBBS Standard -modpack.type.mcbbs.export=Can be imported by Hello Minecraft! Launcher +modpack.type.mcbbs.export=Can be imported by Hello Minecraft! Launcher and MultiMC modpack.type.multimc=MultiMC modpack.type.multimc.export=Can be imported by Hello Minecraft! Launcher and MultiMC modpack.type.server=Server Auto-Update Modpack @@ -473,6 +473,7 @@ settings.launcher=Settings settings.launcher.common_path.tooltip=This app will cache all downloads here. settings.launcher.download_source=Download Source settings.launcher.enable_game_list=Show version list in main page +settings.launcher.font=Font settings.launcher.language=Language settings.launcher.launcher_log.export=Export launcher logs settings.launcher.launcher_log.export.failed=Failed to export logs diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 4162b4fdd..d2244803e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -17,17 +17,22 @@ # # Contributors: huangyuhui +about=关于 about.copyright=版权 about.copyright.statement=版权所有 (c) 2021 huangyuhui. about.author=作者 about.author.statement=huanghongxun (hmcl@huangyuhui.net) -about.thanks_to=鸣谢 -about.thanks_to.statement=yushijinhun (authlib-injector 相关支持)\nbangbang93 (BMCLAPI, https://bmclapi2.bangbang93.com/)\ngamerteam (默认背景图)\n所有通过 Issues、Pull Requests 等方式参与本项目的贡献者 -about.dependency=依赖 -# 由于篇幅限制,仅列出第一作者 -about.dependency.statement=JFoenix (Shadi Shaheen, Apache 2.0)\nGson (Google, Apache 2.0)\nApache Commons Compress (ASF, Apache 2.0)\nXZ for Java (Lasse Collin, Public Domain)\nfx-gson (Joffrey Bion, MIT)\nConstant Pool Scanner (jenkins-ci, CDDL, GPL 2)\nOpenNBT (Steveice10, BSD 3-Clause) about.claim=免责声明 about.claim.statement=Minecraft 版权归 Mojang AB 所有,使用本软件产生的版权问题,软件制作方概不负责。请支持正版。 +about.dependency=依赖 +about.donations=赞助 +about.legal=法律声明 +about.thanks_to=鸣谢 +about.thanks_to.bangbang93.statement=提供 BMCLAPI 下载源,请赞助支持 BMCLAPI! +about.thanks_to.contributors=所有通过 Issues、Pull Requests 等方式参与本项目的贡献者 +about.thanks_to.contributors.statement=没有开源社区的支持,Hello Minecraft! Launcher 无法走到今天 +about.thanks_to.gamerteam.statement=默认背景图与 HMCL 官方网站 CDN +about.thanks_to.yushijinhun.statement=authlib-injector 相关支持 about.open_source=开源 about.open_source.statement=GPL v3 (https://github.com/huanghongxun/HMCL/) @@ -350,7 +355,7 @@ modpack.type.curse.tolerable_error=但未能完成 Curse 整合包文件的下 modpack.type.curse.error=未能完成 Curse 整合包的下载,请多次重试或设置代理 modpack.type.curse.not_found=部分必需文件已经在网络中被删除并且再也无法下载,请尝试该整合包的最新版本或者安装其他整合包。 modpack.type.mcbbs=我的世界中文论坛整合包标准 -modpack.type.mcbbs.export=可以被 Hello Minecraft! Launcher (HMCL) 导入 +modpack.type.mcbbs.export=可以被 Hello Minecraft! Launcher (HMCL) 和 MultiMC 导入 modpack.type.multimc=MultiMC modpack.type.multimc.export=可以被 Hello Minecraft! Launcher (HMCL) 和 MultiMC 导入 modpack.type.server=服务器自动更新整合包 @@ -477,6 +482,7 @@ settings.launcher=启动器设置 settings.launcher.common_path.tooltip=启动器将所有游戏资源及依赖库文件放于此集中管理,如果游戏文件夹内有现成的将不会使用公共库文件 settings.launcher.download_source=下载源 settings.launcher.enable_game_list=在主页内显示版本列表 +settings.launcher.font=字体 settings.launcher.language=语言 settings.launcher.launcher_log.export=导出启动器日志 settings.launcher.launcher_log.export.failed=无法导出日志