diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/controls.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/controls.kt new file mode 100644 index 000000000..d3a04c349 --- /dev/null +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/controls.kt @@ -0,0 +1,13 @@ +package net.mamoe.mirai.console.graphical.util + +import javafx.event.EventTarget +import javafx.geometry.Pos +import javafx.scene.layout.HBox +import tornadofx.addClass +import tornadofx.hbox + +fun EventTarget.myButtonBar(alignment: Pos = Pos.BASELINE_LEFT, op: HBox.() -> Unit = {}) = hbox { + addClass("my-button-bar") + this.alignment = alignment + op() +} \ No newline at end of file diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt index 4270ae704..97cbf6044 100644 --- a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt @@ -2,6 +2,7 @@ package net.mamoe.mirai.console.graphical.view import com.jfoenix.controls.JFXListCell import javafx.collections.ObservableList +import javafx.geometry.Pos import javafx.scene.control.Tab import javafx.scene.control.TabPane import javafx.scene.image.Image @@ -10,8 +11,10 @@ import javafx.stage.FileChooser import kotlinx.coroutines.runBlocking import net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController import net.mamoe.mirai.console.graphical.model.BotModel +import net.mamoe.mirai.console.graphical.util.jfxButton import net.mamoe.mirai.console.graphical.util.jfxListView import net.mamoe.mirai.console.graphical.util.jfxTabPane +import net.mamoe.mirai.console.graphical.util.myButtonBar import tornadofx.* class PrimaryView : View() { @@ -104,13 +107,14 @@ private fun TabPane.logTab( this.isClosable = closeable vbox { - buttonbar { + myButtonBar(alignment = Pos.BASELINE_RIGHT) { - button("导出日志").action { + jfxButton("导出日志").action { val path = chooseFile( "选择保存路径", arrayOf(FileChooser.ExtensionFilter("日志", "txt")), - FileChooserMode.Save + FileChooserMode.Save, + owner = FX.primaryStage ) { initialFileName = "$text.txt" } diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt index fca431caa..3fe3d7a50 100644 --- a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt @@ -1,9 +1,11 @@ package net.mamoe.mirai.console.graphical.view +import javafx.geometry.Pos import net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController import net.mamoe.mirai.console.graphical.model.GlobalSettingModel import net.mamoe.mirai.console.graphical.util.jfxButton import net.mamoe.mirai.console.graphical.util.jfxTextfield +import net.mamoe.mirai.console.graphical.util.myButtonBar import tornadofx.* import java.awt.Desktop import java.io.File @@ -13,33 +15,33 @@ class SettingsView : View() { private val controller = find() private val settingModel = find() - override val root = form { + override val root = vbox { - fieldset { - field { - jfxButton("撤掉").action { - settingModel.rollback() - } - jfxButton("保存").action { - settingModel.commit() - } + myButtonBar(alignment = Pos.BASELINE_RIGHT) { + jfxButton("撤掉").action { + settingModel.rollback() + } + jfxButton("保存").action { + settingModel.commit() } } - fieldset("插件目录") { - field { - jfxTextfield((System.getProperty("user.dir") + "/plugins/").replace("//", "/")) { isEditable = false } - jfxButton("打开目录").action { - (System.getProperty("user.dir") + "/plugins/").replace("//", "/").also { path -> - Desktop.getDesktop().takeIf { it.isSupported(Desktop.Action.OPEN) }?.open(File(path)) + form { + fieldset("插件目录") { + field { + jfxTextfield((System.getProperty("user.dir") + "/plugins/").replace("//", "/")) { isEditable = false } + jfxButton("打开目录").action { + (System.getProperty("user.dir") + "/plugins/").replace("//", "/").also { path -> + Desktop.getDesktop().takeIf { it.isSupported(Desktop.Action.OPEN) }?.open(File(path)) + } } } } - } - fieldset("最大日志容量") { - field { - jfxTextfield().bind(settingModel.maxLogNum) + fieldset("最大日志容量") { + field { + jfxTextfield().bind(settingModel.maxLogNum) + } } } }