Skip to content
Snippets Groups Projects
Commit 9d2a55b0 authored by Marco Matthies's avatar Marco Matthies
Browse files

Change for formatting for main.qml for better readability

parent d5985468
No related branches found
No related tags found
No related merge requests found
......@@ -10,210 +10,209 @@ import QtQuick.Dialogs
import QtQuick.Layouts
ApplicationWindow {
id: mainWindow
title: "Persefone.jl Desktop"
width: 1024
height: 768
visibility: "Maximized"
visible: true
menuBar: MenuBar {
Menu {
title: "&Simulation"
Action {
text: "&New Simulation"
onTriggered: { vars.launching = true } //TODO select config file
}
Action {
text: "&Configure Simulation"
onTriggered: { Julia.configwindow() }
}
Action {
text: "&Load Saved State"
onTriggered: { loadFileChooser.open() }
}
Action {
text: "&Save Current State"
onTriggered: { saveFileChooser.open() }
}
MenuSeparator { }
Action {
text: "&Quit"
onTriggered: { mainWindow.close() }
}
}
Menu {
title: "&Data"
Action {
text: "Show &Population Graph"
onTriggered: { populationGraph.visible = true }
}
Action {
text: "Save &Simulation Output"
onTriggered: { Julia.saveoutput() }
}
}
Menu {
title: "&Help"
Action {
text: "&Documentation"
onTriggered: { Qt.openUrlExternally("https://persefone-model.eu/documentation") }
}
Action {
text: "&Website"
onTriggered: { Qt.openUrlExternally("https://persefone-model.eu/") }
}
Action {
text: "&About"
onTriggered: { aboutDialog.open() }
}
}
}
id: mainWindow
title: "Persefone.jl Desktop"
width: 1024
height: 768
visibility: "Maximized"
visible: true
// visualise the model map and the locations of animals
MakieViewport {
id: mapviewport
anchors.fill: parent
renderFunction: render_map_callback
menuBar: MenuBar {
Menu {
title: "&Simulation"
Action {
text: "&New Simulation"
onTriggered: { vars.launching = true } //TODO select config file
}
Action {
text: "&Configure Simulation"
onTriggered: { Julia.configwindow() }
}
Action {
text: "&Load Saved State"
onTriggered: { loadFileChooser.open() }
}
Action {
text: "&Save Current State"
onTriggered: { saveFileChooser.open() }
}
MenuSeparator { }
Action {
text: "&Quit"
onTriggered: { mainWindow.close() }
}
}
Menu {
title: "&Data"
Action {
text: "Show &Population Graph"
onTriggered: { populationGraph.visible = true }
}
Action {
text: "Save &Simulation Output"
onTriggered: { Julia.saveoutput() }
}
}
Menu {
title: "&Help"
Action {
text: "&Documentation"
onTriggered: { Qt.openUrlExternally("https://persefone-model.eu/documentation") }
}
Action {
text: "&Website"
onTriggered: { Qt.openUrlExternally("https://persefone-model.eu/") }
}
Action {
text: "&About"
onTriggered: { aboutDialog.open() }
}
}
}
// the main control bar, with pause/step/run buttons, the progress
// bar and a speed slider
footer: ToolBar {
RowLayout {
//TODO change button texts to icons
// (https://doc.qt.io/qt-6/qtquickcontrols-icons.html)
id: controlBar
anchors.fill: parent
Layout.alignment: Qt.AlignVCenter
Layout.fillWidth: true
// anchors.topMargin: 5 //FIXME
// anchors.bottomMargin: 5
Button {
id: backButton
text: "<"
ToolTip.text: "Back"
ToolTip.visible: hovered
onClicked: { Julia.previousstep() }
}
Button {
id: stepButton
text: ">"
ToolTip.text: "Step"
ToolTip.visible: hovered
onClicked: { Julia.nextstep() }
}
Button {
id: runButton
text: vars.runbuttontext
ToolTip.text: vars.runbuttontip
ToolTip.visible: hovered
onClicked: { vars.running = !vars.running }
}
ProgressBar {
id: progressBar
value: vars.progress
Layout.fillWidth: true
ToolTip.text: "Simulation progress"
ToolTip.visible: hovered
}
Slider {
id: speedSlider
from: 0.0
to: 2.0
value: vars.delay
stepSize: 0.1
snapMode: Slider.SnapAlways
ToolTip.text: "Time delay between updates"
ToolTip.visible: hovered
onValueChanged: vars.delay = value
}
Text {
id: dateText
text: Julia.datestring()
//width: //TODO
}
}
// visualise the model map and the locations of animals
MakieViewport {
id: mapviewport
anchors.fill: parent
renderFunction: render_map_callback
}
// the main control bar, with pause/step/run buttons, the progress
// bar and a speed slider
footer: ToolBar {
RowLayout {
//TODO change button texts to icons
// (https://doc.qt.io/qt-6/qtquickcontrols-icons.html)
id: controlBar
anchors.fill: parent
Layout.alignment: Qt.AlignVCenter
Layout.fillWidth: true
// anchors.topMargin: 5 //FIXME
// anchors.bottomMargin: 5
Button {
id: backButton
text: "<"
ToolTip.text: "Back"
ToolTip.visible: hovered
onClicked: { Julia.previousstep() }
}
Button {
id: stepButton
text: ">"
ToolTip.text: "Step"
ToolTip.visible: hovered
onClicked: { Julia.nextstep() }
}
Button {
id: runButton
text: vars.runbuttontext
ToolTip.text: vars.runbuttontip
ToolTip.visible: hovered
onClicked: { vars.running = !vars.running }
}
ProgressBar {
id: progressBar
value: vars.progress
Layout.fillWidth: true
ToolTip.text: "Simulation progress"
ToolTip.visible: hovered
}
Slider {
id: speedSlider
from: 0.0
to: 2.0
value: vars.delay
stepSize: 0.1
snapMode: Slider.SnapAlways
ToolTip.text: "Time delay between updates"
ToolTip.visible: hovered
onValueChanged: vars.delay = value
}
Text {
id: dateText
text: Julia.datestring()
//width: //TODO
}
}
}
// extra windows
MessageDialog {
id: aboutDialog
text: "Persefone.jl Desktop"
informativeText: "A mechanistic model of agricultural landscapes \
// extra windows
MessageDialog {
id: aboutDialog
text: "Persefone.jl Desktop"
informativeText: "A mechanistic model of agricultural landscapes \
and ecosystems in Europe.\n\n\
© 2023 Daniel Vedder, Lea Kolb, Guy Pe'er\n\
Distributed under the MIT license."
}
}
FileDialog {
id: loadFileChooser
defaultSuffix: "dat"
nameFilters: ["Save files (*.dat)"]
onAccepted: { Julia.loadsimulation(selectedFile.toString()) }
}
FileDialog {
id: loadFileChooser
defaultSuffix: "dat"
nameFilters: ["Save files (*.dat)"]
onAccepted: { Julia.loadsimulation(selectedFile.toString()) }
}
FileDialog {
id: saveFileChooser
defaultSuffix: "dat"
fileMode: FileDialog.SaveFile
nameFilters: ["Save files (*.dat)"]
onAccepted: { Julia.savesimulation(selectedFile.toString()) }
}
FileDialog {
id: saveFileChooser
defaultSuffix: "dat"
fileMode: FileDialog.SaveFile
nameFilters: ["Save files (*.dat)"]
onAccepted: { Julia.savesimulation(selectedFile.toString()) }
}
Window {
id: populationGraph
title: "Population Graph"
width: 512
height: 512
visible: false
Window {
id: populationGraph
title: "Population Graph"
width: 512
height: 512
visible: false
MakieViewport {
id: plotviewport
anchors.fill: parent
renderFunction: render_plot_callback
}
MakieViewport {
id: plotviewport
anchors.fill: parent
renderFunction: render_plot_callback
}
}
Popup {
id: splashPopup
parent: Overlay.overlay
closePolicy: Popup.NoAutoClose
modal: true
padding: 0
Popup {
id: splashPopup
parent: Overlay.overlay
closePolicy: Popup.NoAutoClose
modal: true
padding: 0
width: 600
height: 250
x: Math.round((parent.width - width) / 2)
y: Math.round((parent.height - height) / 2)
width: 600
height: 250
x: Math.round((parent.width - width) / 2)
y: Math.round((parent.height - height) / 2)
Image {
anchors.fill: parent
source: "persefonejl_logo_v3_splash.png"
}
Image {
anchors.fill: parent
source: "persefonejl_logo_v3_splash.png"
}
}
// set up connections and signals to update the simulation and the display
Connections {
target: timer
function onTimeout() { vars.ticks += 1 }
// set up connections and signals to update the simulation and the display
Connections {
target: timer
function onTimeout() { vars.ticks += 1 }
}
JuliaSignals {
signal updateMakie()
onUpdateMakie: {
dateText.text = Julia.datestring();
mapviewport.update();
plotviewport.update();
}
JuliaSignals {
signal updateMakie()
onUpdateMakie: {
dateText.text = Julia.datestring();
mapviewport.update();
plotviewport.update();
}
signal showSplash()
onShowSplash: {
splashPopup.open()
}
signal closeSplash()
onCloseSplash: {
splashPopup.close()
}
signal showSplash()
onShowSplash: {
splashPopup.open()
}
signal closeSplash()
onCloseSplash: {
splashPopup.close()
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment