Improved "time of day" UI
|
@ -37,6 +37,24 @@ MainModelerWindow::MainModelerWindow()
|
||||||
water = new WaterModeler(this);
|
water = new WaterModeler(this);
|
||||||
|
|
||||||
render_process = new RenderProcess(this, render_preview_provider);
|
render_process = new RenderProcess(this, render_preview_provider);
|
||||||
|
|
||||||
|
// Bind file buttons
|
||||||
|
QObject *button_new = findQmlObject("tool_file_new");
|
||||||
|
if (button_new) {
|
||||||
|
connect(button_new, SIGNAL(clicked()), this, SLOT(newFile()));
|
||||||
|
}
|
||||||
|
QObject *button_save = findQmlObject("tool_file_save");
|
||||||
|
if (button_save) {
|
||||||
|
connect(button_save, SIGNAL(clicked()), this, SLOT(saveFile()));
|
||||||
|
}
|
||||||
|
QObject *button_load = findQmlObject("tool_file_load");
|
||||||
|
if (button_load) {
|
||||||
|
connect(button_load, SIGNAL(clicked()), this, SLOT(loadFile()));
|
||||||
|
}
|
||||||
|
QObject *button_exit = findQmlObject("tool_file_exit");
|
||||||
|
if (button_exit) {
|
||||||
|
connect(button_exit, SIGNAL(clicked()), this, SLOT(exit()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MainModelerWindow::~MainModelerWindow()
|
MainModelerWindow::~MainModelerWindow()
|
||||||
|
@ -76,6 +94,32 @@ void MainModelerWindow::setState(const QString &stateName)
|
||||||
rootObject()->setProperty("state", stateName);
|
rootObject()->setProperty("state", stateName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainModelerWindow::newFile()
|
||||||
|
{
|
||||||
|
getScenery()->autoPreset();
|
||||||
|
renderer->reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainModelerWindow::saveFile()
|
||||||
|
{
|
||||||
|
getScenery()->saveGlobal("saved.p3d");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainModelerWindow::loadFile()
|
||||||
|
{
|
||||||
|
Scenery loaded;
|
||||||
|
if (loaded.loadGlobal("saved.p3d") == Scenery::FILE_OPERATION_OK)
|
||||||
|
{
|
||||||
|
loaded.copy(scenery);
|
||||||
|
renderer->reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainModelerWindow::exit()
|
||||||
|
{
|
||||||
|
QGuiApplication::instance()->exit();
|
||||||
|
}
|
||||||
|
|
||||||
void MainModelerWindow::keyReleaseEvent(QKeyEvent *event)
|
void MainModelerWindow::keyReleaseEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
if (getState() == "Render Dialog")
|
if (getState() == "Render Dialog")
|
||||||
|
@ -113,30 +157,28 @@ void MainModelerWindow::keyReleaseEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
if (event->modifiers() & Qt::ControlModifier)
|
if (event->modifiers() & Qt::ControlModifier)
|
||||||
{
|
{
|
||||||
QGuiApplication::instance()->exit();
|
exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event->key() == Qt::Key_N)
|
else if (event->key() == Qt::Key_N)
|
||||||
{
|
{
|
||||||
if (event->modifiers() & Qt::ControlModifier)
|
if (event->modifiers() & Qt::ControlModifier)
|
||||||
{
|
{
|
||||||
getScenery()->autoPreset();
|
newFile();
|
||||||
renderer->reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event->key() == Qt::Key_S)
|
else if (event->key() == Qt::Key_S)
|
||||||
{
|
{
|
||||||
if (event->modifiers() & Qt::ControlModifier)
|
if (event->modifiers() & Qt::ControlModifier)
|
||||||
{
|
{
|
||||||
getScenery()->saveGlobal("saved.p3d");
|
saveFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event->key() == Qt::Key_L or event->key() == Qt::Key_O)
|
else if (event->key() == Qt::Key_L or event->key() == Qt::Key_O)
|
||||||
{
|
{
|
||||||
if (event->modifiers() & Qt::ControlModifier)
|
if (event->modifiers() & Qt::ControlModifier)
|
||||||
{
|
{
|
||||||
getScenery()->loadGlobal("saved.p3d");
|
loadFile();
|
||||||
renderer->reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event->key() == Qt::Key_Z)
|
else if (event->key() == Qt::Key_Z)
|
||||||
|
|
|
@ -25,6 +25,12 @@ public:
|
||||||
inline OpenGLRenderer *getRenderer() const {return renderer;}
|
inline OpenGLRenderer *getRenderer() const {return renderer;}
|
||||||
inline ModelerCameras *getCamera() const {return cameras;}
|
inline ModelerCameras *getCamera() const {return cameras;}
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void newFile();
|
||||||
|
void saveFile();
|
||||||
|
void loadFile();
|
||||||
|
void exit();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void keyReleaseEvent(QKeyEvent *event) override;
|
virtual void keyReleaseEvent(QKeyEvent *event) override;
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,8 @@ import QtQuick.Layouts 1.1
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
default property alias children : inner_layout.children
|
default property alias children : inner_layout.children
|
||||||
|
property alias spacing : inner_layout.spacing
|
||||||
property int value
|
property int value
|
||||||
width: 100
|
|
||||||
height: 32
|
|
||||||
|
|
||||||
ExclusiveGroup {
|
ExclusiveGroup {
|
||||||
id: choice_group
|
id: choice_group
|
||||||
|
|
|
@ -7,17 +7,22 @@ Rectangle {
|
||||||
property bool checked: false
|
property bool checked: false
|
||||||
property ExclusiveGroup exclusiveGroup: null
|
property ExclusiveGroup exclusiveGroup: null
|
||||||
property int value
|
property int value
|
||||||
|
property int padding: 4
|
||||||
|
|
||||||
color: "#333333"
|
color: "#333333"
|
||||||
|
radius: padding * 2
|
||||||
|
|
||||||
signal toggled(bool value)
|
signal toggled(bool value)
|
||||||
|
|
||||||
width: 20
|
width: 40
|
||||||
height: 20
|
height: 40
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
anchors.fill: parent
|
id: icon_image
|
||||||
source: parent.icon
|
source: parent.icon
|
||||||
|
width: parent.width - 2 * parent.padding
|
||||||
|
height: parent.height - 2 * parent.padding
|
||||||
|
anchors.centerIn: parent
|
||||||
antialiasing: true
|
antialiasing: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +40,12 @@ Rectangle {
|
||||||
|
|
||||||
onCheckedChanged: choice_item.toggled(checked)
|
onCheckedChanged: choice_item.toggled(checked)
|
||||||
|
|
||||||
|
Behavior on color {
|
||||||
|
PropertyAnimation {
|
||||||
|
duration: 200
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
State {
|
State {
|
||||||
name: "Checked"
|
name: "Checked"
|
||||||
|
@ -42,7 +53,7 @@ Rectangle {
|
||||||
|
|
||||||
PropertyChanges {
|
PropertyChanges {
|
||||||
target: choice_item
|
target: choice_item
|
||||||
color: "#999999"
|
color: "#dddddd"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,22 +4,21 @@ BaseRectangle {
|
||||||
property ToolbarButton tool
|
property ToolbarButton tool
|
||||||
id: panel
|
id: panel
|
||||||
|
|
||||||
enabled: false
|
|
||||||
width: 200
|
width: 200
|
||||||
height: parent.height - 100
|
height: primary_toolbar.current ? primary_toolbar.current.height : 10
|
||||||
color: "#a0909090"
|
color: "#40909090"
|
||||||
|
|
||||||
anchors.right: parent.right
|
anchors.left: primary_toolbar.current ? primary_toolbar.current.right : parent.left
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.top: primary_toolbar.current ? primary_toolbar.current.top : parent.top
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
State {
|
State {
|
||||||
name: "Active"
|
name: "hidden"
|
||||||
when: tool.selected
|
when: !tool.selected
|
||||||
|
|
||||||
PropertyChanges {
|
PropertyChanges {
|
||||||
target: panel
|
target: panel
|
||||||
enabled: true
|
enabled: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,3 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
src/interface/modeler/quickapp/qml/BaseSecondaryToolbar.qml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
Toolbar {
|
||||||
|
enabled: false
|
||||||
|
height: parent.height - primary_toolbar.height
|
||||||
|
anchors.left: primary_toolbar.left
|
||||||
|
anchors.top: primary_toolbar.bottom
|
||||||
|
|
||||||
|
onEnabledChanged: primary_toolbar.current = this
|
||||||
|
}
|
||||||
|
|
|
@ -1,29 +1,22 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
BaseRectangle {
|
Toolbar {
|
||||||
id: camera_choice
|
id: camera_choice
|
||||||
width: 200
|
horizontal: false
|
||||||
height: 50
|
|
||||||
color: "#90888888"
|
color: "#90888888"
|
||||||
objectName: "camera_choice"
|
objectName: "camera_choice"
|
||||||
|
|
||||||
Row {
|
|
||||||
id: inner_space
|
|
||||||
anchors.centerIn: parent
|
|
||||||
spacing: 15
|
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: camera_choice_render
|
id: camera_choice_render
|
||||||
picture: "images/tab_display.png"
|
picture: "images/tab_display.png"
|
||||||
hovertext: qsTr("Switch to the final camera")
|
hovertext: qsTr("Final render camera")
|
||||||
selected: true
|
selected: true
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: camera_choice_topdown
|
id: camera_choice_topdown
|
||||||
picture: "images/display_topdown.png"
|
picture: "images/display_topdown.png"
|
||||||
hovertext: qsTr("Switch to the top-down camera")
|
hovertext: qsTr("Top-down camera")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
|
|
15
src/interface/modeler/quickapp/qml/ClickableImage.qml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
Image {
|
||||||
|
signal clicked()
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
parent.clicked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,10 +3,11 @@ import QtQuick.Controls 1.1
|
||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
|
|
||||||
BasePanel {
|
BasePanel {
|
||||||
width: 70
|
id: daytime
|
||||||
|
width: 100
|
||||||
|
|
||||||
objectName: "atmosphere_daytime"
|
objectName: "atmosphere_daytime"
|
||||||
default property real value: day_night.value == 2 ? 1.0 : slider.value * 0.54 + 0.23;
|
default property real value: day_night.value == 2 ? 0.0 : slider.value * 0.54 + 0.23;
|
||||||
signal changed(real value)
|
signal changed(real value)
|
||||||
|
|
||||||
onValueChanged: {
|
onValueChanged: {
|
||||||
|
@ -20,15 +21,19 @@ BasePanel {
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
{
|
{
|
||||||
anchors.fill: parent
|
height: parent.height
|
||||||
anchors.margins: 10
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
spacing: 20
|
spacing: 20
|
||||||
|
|
||||||
|
Item {height: 1}
|
||||||
|
|
||||||
BaseChoice {
|
BaseChoice {
|
||||||
id: day_night
|
id: day_night
|
||||||
width: parent.width
|
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
spacing: 10
|
||||||
|
width: 90
|
||||||
|
height: 40
|
||||||
|
|
||||||
BaseChoiceItem {
|
BaseChoiceItem {
|
||||||
icon: "images/icon_atmosphere_day.png"
|
icon: "images/icon_atmosphere_day.png"
|
||||||
|
@ -47,7 +52,97 @@ BasePanel {
|
||||||
Layout.maximumWidth: 15
|
Layout.maximumWidth: 15
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
visible: day_night.value == 1
|
}
|
||||||
|
|
||||||
|
Grid {
|
||||||
|
id: clock
|
||||||
|
property int hour: daytime.value * 86400 / 3600
|
||||||
|
property int minute: (daytime.value * 86400 - 3600 * hour) / 60
|
||||||
|
property int second: daytime.value * 86400 - 3600 * hour - 60 * minute
|
||||||
|
rows: 3
|
||||||
|
columns: 5
|
||||||
|
rowSpacing: 4
|
||||||
|
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_up.png"
|
||||||
|
onClicked: slider.value += (1.0 / 24.0) / 0.54
|
||||||
|
}
|
||||||
|
Item {width: 1; height: 1}
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_up.png"
|
||||||
|
onClicked: slider.value += (1.0 / 3600.0) / 0.54
|
||||||
|
}
|
||||||
|
Item {width: 1; height: 1}
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_up.png"
|
||||||
|
onClicked: slider.value += (1.0 / 86400.0) / 0.54
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: (clock.hour > 9 ? "" : "0") + clock.hour.toString()
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: " : "
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: (clock.minute > 9 ? "" : "0") + clock.minute.toString()
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: " : "
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: (clock.second > 9 ? "" : "0") + clock.second.toString()
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_down.png"
|
||||||
|
onClicked: slider.value -= (1.0 / 24.0) / 0.54
|
||||||
|
}
|
||||||
|
Item {width: 1; height: 1}
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_down.png"
|
||||||
|
onClicked: slider.value -= (1.0 / 1440.0) / 0.54
|
||||||
|
}
|
||||||
|
Item {width: 1; height: 1}
|
||||||
|
ClickableImage {
|
||||||
|
width: 20
|
||||||
|
height: 10
|
||||||
|
source: "qrc:/images/arrow_down.png"
|
||||||
|
onClicked: slider.value -= (1.0 / 86400.0) / 0.54
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Item {height: 1}
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "night"
|
||||||
|
when: day_night.value == 2
|
||||||
|
PropertyChanges {
|
||||||
|
target: slider
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: clock
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import QtQuick 2.2
|
import QtQuick 2.2
|
||||||
|
|
||||||
BasePanel {
|
BasePanel {
|
||||||
width: 20
|
width: 40
|
||||||
|
|
||||||
BaseSlider {
|
BaseSlider {
|
||||||
objectName: "water_height"
|
objectName: "water_height"
|
||||||
|
@ -9,5 +9,6 @@ BasePanel {
|
||||||
maximumValue: 1
|
maximumValue: 1
|
||||||
orientation: Qt.Vertical
|
orientation: Qt.Vertical
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
anchors.margins: 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,16 @@ import QtQuick 2.0
|
||||||
BaseRectangle {
|
BaseRectangle {
|
||||||
|
|
||||||
default property alias children : inner_space.children
|
default property alias children : inner_space.children
|
||||||
width: 70
|
property bool horizontal: false
|
||||||
height: parent.height
|
width: horizontal ? parent.width : 60
|
||||||
|
height: horizontal ? 60 : parent.height
|
||||||
color: "#50888888"
|
color: "#50888888"
|
||||||
|
|
||||||
Column {
|
Grid {
|
||||||
id: inner_space
|
id: inner_space
|
||||||
spacing: (parent.height - children.length * tool_terrain.height) / (children.length + 1)
|
columns: parent.horizontal ? children.length : 1
|
||||||
|
rows: parent.horizontal ? 1 : children.length
|
||||||
|
spacing: (parent.horizontal ? (parent.width - children.length * tool_terrain.width) : (parent.height - children.length * tool_terrain.height)) / (children.length + 1)
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ Item {
|
||||||
onEntered: {
|
onEntered: {
|
||||||
parent.hovered = true;
|
parent.hovered = true;
|
||||||
tooltip_widget.hovertext = hovertext;
|
tooltip_widget.hovertext = hovertext;
|
||||||
|
tooltip_widget.hovered = this;
|
||||||
}
|
}
|
||||||
onExited: {
|
onExited: {
|
||||||
parent.hovered = false;
|
parent.hovered = false;
|
||||||
|
|
|
@ -1,16 +1,31 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
BaseRectangle {
|
BaseRectangle {
|
||||||
|
property var hovered
|
||||||
property string helptext
|
property string helptext
|
||||||
property string hovertext
|
property string hovertext
|
||||||
width: content.width
|
width: content.width + 10
|
||||||
height: content.height
|
height: content.height + 10
|
||||||
|
enabled: content.deftext ? true : false
|
||||||
|
anchors.margins: 5
|
||||||
|
|
||||||
color: "#99000000"
|
color: "#99000000"
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
id: content
|
id: content
|
||||||
color: "white"
|
color: "white"
|
||||||
text: parent.helptext || parent.hovertext
|
font.bold: true
|
||||||
|
font.pixelSize: 12
|
||||||
|
property string deftext: parent.helptext || parent.hovertext
|
||||||
|
property string oldtext
|
||||||
|
text: deftext || oldtext
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
onDeftextChanged: {
|
||||||
|
if (deftext)
|
||||||
|
{
|
||||||
|
oldtext = deftext;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,5 +28,14 @@
|
||||||
<file>RenderDialog.qml</file>
|
<file>RenderDialog.qml</file>
|
||||||
<file>CameraChoice.qml</file>
|
<file>CameraChoice.qml</file>
|
||||||
<file>BaseRectangle.qml</file>
|
<file>BaseRectangle.qml</file>
|
||||||
|
<file>BaseSecondaryToolbar.qml</file>
|
||||||
|
<file>images/icon_exit.png</file>
|
||||||
|
<file>images/icon_file_load.png</file>
|
||||||
|
<file>images/icon_file_new.png</file>
|
||||||
|
<file>images/icon_file_save.png</file>
|
||||||
|
<file>images/tab_file.png</file>
|
||||||
|
<file>images/arrow_down.png</file>
|
||||||
|
<file>images/arrow_up.png</file>
|
||||||
|
<file>ClickableImage.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
BIN
src/interface/modeler/quickapp/qml/images/arrow_down.png
Normal file
After Width: | Height: | Size: 229 B |
BIN
src/interface/modeler/quickapp/qml/images/arrow_up.png
Normal file
After Width: | Height: | Size: 243 B |
BIN
src/interface/modeler/quickapp/qml/images/icon_exit.png
Normal file
After Width: | Height: | Size: 834 B |
BIN
src/interface/modeler/quickapp/qml/images/icon_file_load.png
Normal file
After Width: | Height: | Size: 502 B |
BIN
src/interface/modeler/quickapp/qml/images/icon_file_new.png
Normal file
After Width: | Height: | Size: 760 B |
BIN
src/interface/modeler/quickapp/qml/images/icon_file_save.png
Normal file
After Width: | Height: | Size: 514 B |
BIN
src/interface/modeler/quickapp/qml/images/tab_file.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
|
@ -11,66 +11,58 @@ OpenGLView {
|
||||||
Tooltip {
|
Tooltip {
|
||||||
id: tooltip_widget
|
id: tooltip_widget
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: primary_toolbar.bottom
|
||||||
anchors.right: parent.right
|
anchors.right: primary_toolbar.right
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolbar {
|
Toolbar {
|
||||||
id: primary_toolbar
|
id: primary_toolbar
|
||||||
|
horizontal: true
|
||||||
color: "#90888888"
|
color: "#90888888"
|
||||||
|
property var current
|
||||||
|
|
||||||
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
||||||
ToolbarButton {
|
|
||||||
id: tool_display
|
|
||||||
picture: "images/tab_display.png"
|
|
||||||
hovertext: qsTr("Display options")
|
|
||||||
}
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_terrain
|
id: tool_terrain
|
||||||
picture: "images/tab_terrain.png"
|
picture: "images/tab_terrain.png"
|
||||||
|
hovertext: qsTr("Terrain edition")
|
||||||
}
|
}
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_textures
|
id: tool_textures
|
||||||
picture: "images/tab_textures.png"
|
picture: "images/tab_textures.png"
|
||||||
|
hovertext: qsTr("Terrain textures")
|
||||||
}
|
}
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_water
|
id: tool_water
|
||||||
picture: "images/icon_water.png"
|
picture: "images/icon_water.png"
|
||||||
hovertext: "Water tools"
|
hovertext: qsTr("Water tools")
|
||||||
}
|
}
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_atmosphere
|
id: tool_atmosphere
|
||||||
picture: "images/icon_atmosphere.png"
|
picture: "images/icon_atmosphere.png"
|
||||||
hovertext: "Atmosphere/weather tools"
|
hovertext: qsTr("Atmosphere/weather control")
|
||||||
}
|
}
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_clouds
|
id: tool_clouds
|
||||||
picture: "images/tab_clouds.png"
|
picture: "images/tab_clouds.png"
|
||||||
|
hovertext: qsTr("Cloud layers")
|
||||||
}
|
}
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_render
|
id: tool_render
|
||||||
picture: "images/tab_render.png"
|
picture: "images/tab_render.png"
|
||||||
|
hovertext: qsTr("Rendering")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Toolbar {
|
|
||||||
id: display_toolbar
|
|
||||||
enabled: false
|
|
||||||
anchors.left: primary_toolbar.right
|
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_display_topdown
|
id: tool_file
|
||||||
picture: "images/display_topdown.png"
|
picture: "images/tab_file.png"
|
||||||
hovertext: qsTr("Top-down view")
|
hovertext: qsTr("File")
|
||||||
helptext: qsTr("Drag the mouse on the map to change the viewpoint.")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolbar {
|
BaseSecondaryToolbar {
|
||||||
id: water_toolbar
|
id: water_toolbar
|
||||||
enabled: false
|
|
||||||
anchors.left: primary_toolbar.right
|
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_water_level
|
id: tool_water_level
|
||||||
|
@ -79,10 +71,8 @@ OpenGLView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolbar {
|
BaseSecondaryToolbar {
|
||||||
id: atmosphere_toolbar
|
id: atmosphere_toolbar
|
||||||
enabled: false
|
|
||||||
anchors.left: primary_toolbar.right
|
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_atmosphere_daytime
|
id: tool_atmosphere_daytime
|
||||||
|
@ -91,10 +81,8 @@ OpenGLView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolbar {
|
BaseSecondaryToolbar {
|
||||||
id: render_toolbar
|
id: render_toolbar
|
||||||
enabled: false
|
|
||||||
anchors.left: primary_toolbar.right
|
|
||||||
|
|
||||||
ToolbarButton {
|
ToolbarButton {
|
||||||
id: tool_render_quick
|
id: tool_render_quick
|
||||||
|
@ -104,10 +92,43 @@ OpenGLView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BaseSecondaryToolbar {
|
||||||
|
id: file_toolbar
|
||||||
|
|
||||||
|
ToolbarButton {
|
||||||
|
id: tool_file_new
|
||||||
|
objectName: "tool_file_new"
|
||||||
|
picture: "images/icon_file_new.png"
|
||||||
|
hovertext: qsTr("Generate a new scene")
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolbarButton {
|
||||||
|
id: tool_file_save
|
||||||
|
objectName: "tool_file_save"
|
||||||
|
picture: "images/icon_file_save.png"
|
||||||
|
hovertext: qsTr("Save the current scene to a file")
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolbarButton {
|
||||||
|
id: tool_file_load
|
||||||
|
objectName: "tool_file_load"
|
||||||
|
picture: "images/icon_file_load.png"
|
||||||
|
hovertext: qsTr("Load a scene from a file")
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolbarButton {
|
||||||
|
id: tool_file_exit
|
||||||
|
objectName: "tool_file_exit"
|
||||||
|
picture: "images/icon_exit.png"
|
||||||
|
hovertext: qsTr("Exit the program")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CameraChoice {
|
CameraChoice {
|
||||||
id: camera_choice
|
id: camera_choice
|
||||||
anchors.bottom: main_ui.bottom
|
height: 150
|
||||||
anchors.horizontalCenter: main_ui.horizontalCenter
|
anchors.right: main_ui.right
|
||||||
|
anchors.verticalCenter: main_ui.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderDialog {
|
RenderDialog {
|
||||||
|
@ -126,15 +147,6 @@ OpenGLView {
|
||||||
}
|
}
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
State {
|
|
||||||
name: "Display Mode"
|
|
||||||
when: tool_display.selected
|
|
||||||
|
|
||||||
PropertyChanges {
|
|
||||||
target: display_toolbar
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State {
|
State {
|
||||||
name: "Water Mode"
|
name: "Water Mode"
|
||||||
when: tool_water.selected
|
when: tool_water.selected
|
||||||
|
@ -162,6 +174,15 @@ OpenGLView {
|
||||||
enabled: true
|
enabled: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
State {
|
||||||
|
name: "File Mode"
|
||||||
|
when: tool_file.selected
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: file_toolbar
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
},
|
||||||
State {
|
State {
|
||||||
name: "Render Dialog"
|
name: "Render Dialog"
|
||||||
|
|
||||||
|
|