Implement advanced mode

This commit is contained in:
2025-12-20 20:24:39 +01:00
parent 2ff9d533c3
commit cbf2c3d4a9
20 changed files with 628 additions and 210 deletions
+13
View File
@@ -7,6 +7,7 @@
#include "models/projecttreemodel.h"
#include "mainwindow.h"
#include "editorguiutils.h"
#include "editorsettings.h"
AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainWindow, QWidget *parent) :
QDialog{parent},
@@ -86,6 +87,10 @@ AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainW
menu->addAction(tr("Add/Modify Triggers..."), this, [this](){ m_mainWindow.showDefineTriggers(); reject(); });
m_ui->pushButtonTrigger->setMenu(menu);
}
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &AddEventDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
AddEventDialog::~AddEventDialog() = default;
@@ -107,3 +112,11 @@ void AddEventDialog::reject()
QDialog::reject();
}
void AddEventDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->pushButtonTrigger
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
}
+3
View File
@@ -25,6 +25,9 @@ public:
void accept() override;
void reject() override;
private slots:
void advancedModeChanged(bool advancedMode);
private:
ProjectTreeModel &m_projectModel;
MainWindow &m_mainWindow;
@@ -11,6 +11,7 @@
#include "mainwindow.h"
#include "imagehelpers.h"
#include "editorguiutils.h"
#include "editorsettings.h"
BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, MainWindow &mainWindow) :
QDialog{&mainWindow},
@@ -44,6 +45,10 @@ BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, P
this, &BackgroundPropertiesDialog::changed);
connect(m_ui->checkBoxTileset, &QCheckBox::checkStateChanged,
this, &BackgroundPropertiesDialog::changed);
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &BackgroundPropertiesDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
BackgroundPropertiesDialog::~BackgroundPropertiesDialog() = default;
@@ -166,6 +171,15 @@ void BackgroundPropertiesDialog::backgroundNameChanged(const Background &backgro
updateTitle();
}
void BackgroundPropertiesDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->pushButtonSave,
m_ui->checkBoxTileset
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
}
void BackgroundPropertiesDialog::updateTitle()
{
setWindowTitle(tr("Background Properties: %0%1")
@@ -30,6 +30,8 @@ private slots:
void backgroundNameChanged(const Background &background);
void advancedModeChanged(bool advancedMode);
private:
void updateTitle();
void updateSpriteInfo();
@@ -12,6 +12,7 @@
#include "models/objecteventsmodel.h"
#include "addeventdialog.h"
#include "editorguiutils.h"
#include "editorsettings.h"
ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow &mainWindow) :
QDialog{&mainWindow},
@@ -120,6 +121,10 @@ ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel
connect(m_ui->actionsWidget, &ActionsContainerWidget::changed,
this, &ObjectPropertiesDialog::changed);
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &ObjectPropertiesDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
ObjectPropertiesDialog::~ObjectPropertiesDialog() = default;
@@ -439,6 +444,15 @@ void ObjectPropertiesDialog::setMaskSprite(const Sprite &sprite)
changed();
}
void ObjectPropertiesDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->widgetDetails,
m_ui->pushButtonShowInformation
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
}
void ObjectPropertiesDialog::updateTitle()
{
setWindowTitle(tr("Object Properties: %0%1")
@@ -53,6 +53,8 @@ private slots:
void clearMaskSprite();
void setMaskSprite(const Sprite &sprite);
void advancedModeChanged(bool advancedMode);
private:
void updateTitle();
void updateSpritePreview();
+95 -99
View File
@@ -21,7 +21,7 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QFormLayout" name="formLayout">
<layout class="QFormLayout" name="formLayoutName">
<item row="0" column="0">
<widget class="QLabel" name="labelName">
<property name="text">
@@ -68,7 +68,7 @@
</size>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
</widget>
</item>
@@ -92,7 +92,7 @@
<string>...</string>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
</property>
</widget>
</item>
@@ -164,105 +164,101 @@
</layout>
</item>
<item>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="labelDepth">
<property name="text">
<string>Depth:</string>
</property>
<property name="buddy">
<cstring>spinBoxDepth</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="spinBoxDepth">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>The depth at which the object is drawn</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBoxPersistent">
<property name="toolTip">
<string>Wheter the object is persistent between rooms</string>
</property>
<property name="text">
<string>Persistent</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelParent">
<property name="text">
<string>Parent:</string>
</property>
<property name="buddy">
<cstring>widgetParent</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="ObjectParentSelectorWidget" name="widgetParent" native="true"/>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEditWithMenu" name="lineEditMask">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>The image used as a collision mask for the object</string>
</property>
<property name="text">
<string>&lt;same as sprite&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonMask">
<property name="text">
<string>...</string>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelMask">
<property name="text">
<string>Mask:</string>
</property>
<property name="buddy">
<cstring>lineEditMask</cstring>
</property>
</widget>
</item>
</layout>
<widget class="QWidget" name="widgetDetails" native="true">
<layout class="QFormLayout" name="formLayoutDetails">
<item row="0" column="0">
<widget class="QLabel" name="labelDepth">
<property name="text">
<string>Depth:</string>
</property>
<property name="buddy">
<cstring>spinBoxDepth</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="spinBoxDepth">
<property name="toolTip">
<string>The depth at which the object is drawn</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBoxPersistent">
<property name="toolTip">
<string>Wheter the object is persistent between rooms</string>
</property>
<property name="text">
<string>Persistent</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelParent">
<property name="text">
<string>Parent:</string>
</property>
<property name="buddy">
<cstring>widgetParent</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="ObjectParentSelectorWidget" name="widgetParent" native="true"/>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEditWithMenu" name="lineEditMask">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>The image used as a collision mask for the object</string>
</property>
<property name="text">
<string>&lt;same as sprite&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonMask">
<property name="text">
<string>...</string>
</property>
<property name="popupMode">
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelMask">
<property name="text">
<string>Mask:</string>
</property>
<property name="buddy">
<cstring>lineEditMask</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -295,7 +291,7 @@
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -308,7 +304,7 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::StandardButton::Ok</set>
</property>
<property name="centerButtons">
<bool>true</bool>
@@ -338,7 +334,7 @@
</sizepolicy>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
<enum>Qt::ContextMenuPolicy::CustomContextMenu</enum>
</property>
<property name="iconSize">
<size>
@@ -14,6 +14,7 @@
#include "editorguiutils.h"
#include "genericcodeeditordialog.h"
#include "mainwindow.h"
#include "editorsettings.h"
RoomPropertiesDialog::RoomPropertiesDialog(Room &room, ProjectTreeModel &projectModel, MainWindow &mainWindow) :
QDialog{&mainWindow},
@@ -192,6 +193,10 @@ RoomPropertiesDialog::RoomPropertiesDialog(Room &room, ProjectTreeModel &project
if (!m_projectModel.project()->objects.empty())
setObject(m_projectModel.project()->objects.back());
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &RoomPropertiesDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
RoomPropertiesDialog::~RoomPropertiesDialog() = default;
@@ -422,6 +427,18 @@ void RoomPropertiesDialog::cursorMoved(const QPoint &point)
m_labelY->setText(tr("Y: %0").arg(point.y()));
}
void RoomPropertiesDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->checkBoxPersistent,
m_ui->pushButtonCreationCode
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
m_ui->tabWidget->setTabVisible(m_ui->tabWidget->indexOf(m_ui->tabTiles), advancedMode);
m_ui->tabWidget->setTabVisible(m_ui->tabWidget->indexOf(m_ui->tabViews), advancedMode);
}
void RoomPropertiesDialog::setObject(const Object &object)
{
m_selectedObject = &object;
@@ -50,6 +50,8 @@ private slots:
void cursorMoved(const QPoint &point);
void advancedModeChanged(bool advancedMode);
private:
void setObject(const Object &object);
void updateTitle();
+51 -36
View File
@@ -36,10 +36,10 @@
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::Panel</enum>
<enum>QFrame::Shape::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QHBoxLayout">
<property name="spacing">
@@ -94,11 +94,11 @@
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<widget class="QTabWidget" name="tabWidget">
<property name="tabPosition">
<enum>QTabWidget::West</enum>
<enum>QTabWidget::TabPosition::West</enum>
</property>
<property name="currentIndex">
<number>0</number>
@@ -126,7 +126,7 @@
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
<widget class="QLabel" name="labelObjectPreview">
<property name="geometry">
@@ -134,11 +134,11 @@
<x>0</x>
<y>0</y>
<width>595</width>
<height>527</height>
<height>528</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
</widget>
</widget>
@@ -146,10 +146,10 @@
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
<enum>QFrame::Shape::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
@@ -174,7 +174,7 @@
<string>...</string>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
</property>
</widget>
</item>
@@ -313,11 +313,14 @@
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<width>0</width>
<height>20</height>
</size>
</property>
@@ -337,11 +340,14 @@
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<width>0</width>
<height>20</height>
</size>
</property>
@@ -352,7 +358,7 @@
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -380,7 +386,7 @@
<x>0</x>
<y>0</y>
<width>577</width>
<height>539</height>
<height>540</height>
</rect>
</property>
</widget>
@@ -389,10 +395,10 @@
<item>
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
<enum>QFrame::Shape::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="0,1">
<item>
@@ -451,7 +457,7 @@
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -471,7 +477,7 @@
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -488,11 +494,14 @@
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>177</width>
<width>0</width>
<height>20</height>
</size>
</property>
@@ -618,7 +627,7 @@
<item row="1" column="1">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -635,7 +644,7 @@
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -680,7 +689,7 @@
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -695,11 +704,14 @@
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>119</width>
<width>0</width>
<height>20</height>
</size>
</property>
@@ -930,7 +942,7 @@
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -945,11 +957,14 @@
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>255</width>
<width>0</width>
<height>20</height>
</size>
</property>
@@ -970,7 +985,7 @@
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
<attribute name="title">
<string>Custom Widget</string>
@@ -1184,17 +1199,17 @@
</action>
</widget>
<customwidgets>
<customwidget>
<class>QLineEditWithMenu</class>
<extends>QLineEdit</extends>
<header>widgets/qlineeditwithmenu.h</header>
</customwidget>
<customwidget>
<class>RoomEditWidget</class>
<extends>QWidget</extends>
<header>widgets/roomeditwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QLineEditWithMenu</class>
<extends>QLineEdit</extends>
<header>widgets/qlineeditwithmenu.h</header>
</customwidget>
<customwidget>
<class>QScrollAreaWithMenu</class>
<extends>QScrollArea</extends>
@@ -11,6 +11,7 @@
#include "models/projecttreemodel.h"
#include "mainwindow.h"
#include "editorguiutils.h"
#include "editorsettings.h"
SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, MainWindow &mainWindow) :
QDialog{&mainWindow},
@@ -84,6 +85,10 @@ SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &pro
this, &SoundPropertiesDialog::changed);
connect(m_ui->checkBoxPreload, &QCheckBox::checkStateChanged,
this, &SoundPropertiesDialog::changed);
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &SoundPropertiesDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
SoundPropertiesDialog::~SoundPropertiesDialog() = default;
@@ -238,6 +243,18 @@ void SoundPropertiesDialog::soundNameChanged(const Sound &sound)
updateTitle();
}
void SoundPropertiesDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->groupBoxKind,
m_ui->groupBoxEffects,
m_ui->widgetSliders,
m_ui->checkBoxPreload,
m_ui->pushButtonEdit
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
}
void SoundPropertiesDialog::updateTitle()
{
setWindowTitle(tr("Sound Properties: %0%1")
@@ -33,6 +33,8 @@ private slots:
void soundNameChanged(const Sound &sound);
void advancedModeChanged(bool advancedMode);
private:
void updateTitle();
+67 -65
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>239</width>
<height>534</height>
<height>590</height>
</rect>
</property>
<property name="windowTitle">
@@ -19,7 +19,7 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QFormLayout" name="formLayout">
<layout class="QFormLayout" name="formLayoutName">
<item row="0" column="0">
<widget class="QLabel" name="labelName">
<property name="text">
@@ -194,66 +194,68 @@
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="labelVolume">
<property name="text">
<string>Volume:</string>
</property>
<property name="buddy">
<cstring>horizontalSliderVolume</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSlider" name="horizontalSliderVolume">
<property name="toolTip">
<string>Indicates the default volume for the sound</string>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelPan">
<property name="text">
<string>Pan:</string>
</property>
<property name="buddy">
<cstring>horizontalSliderPan</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSlider" name="horizontalSliderPan">
<property name="toolTip">
<string>Indicates the default pan for the sound</string>
</property>
<property name="minimum">
<number>-100</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="invertedControls">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
<widget class="QWidget" name="widgetSliders" native="true">
<layout class="QFormLayout" name="formLayoutSliders">
<item row="0" column="0">
<widget class="QLabel" name="labelVolume">
<property name="text">
<string>Volume:</string>
</property>
<property name="buddy">
<cstring>horizontalSliderVolume</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSlider" name="horizontalSliderVolume">
<property name="toolTip">
<string>Indicates the default volume for the sound</string>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelPan">
<property name="text">
<string>Pan:</string>
</property>
<property name="buddy">
<cstring>horizontalSliderPan</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSlider" name="horizontalSliderPan">
<property name="toolTip">
<string>Indicates the default pan for the sound</string>
</property>
<property name="minimum">
<number>-100</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="invertedControls">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBoxPreload">
@@ -273,7 +275,7 @@
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -300,7 +302,7 @@
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -315,7 +317,7 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::StandardButton::Ok</set>
</property>
<property name="centerButtons">
<bool>true</bool>
@@ -13,6 +13,7 @@
#include "mainwindow.h"
#include "imagehelpers.h"
#include "editorguiutils.h"
#include "editorsettings.h"
SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, MainWindow &mainWindow) :
QDialog{&mainWindow},
@@ -59,6 +60,10 @@ SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel
this, &SpritePropertiesDialog::changed);
connect(m_ui->checkBoxSeparateCollisionMasks, &QCheckBox::checkStateChanged,
this, &SpritePropertiesDialog::changed);
connect(&mainWindow.settings(), &EditorSettings::advancedModeChanged,
this, &SpritePropertiesDialog::advancedModeChanged);
advancedModeChanged(mainWindow.settings().advancedMode());
}
SpritePropertiesDialog::~SpritePropertiesDialog() = default;
@@ -205,6 +210,16 @@ void SpritePropertiesDialog::spriteNameChanged(const Sprite &sprite)
updateTitle();
}
void SpritePropertiesDialog::advancedModeChanged(bool advancedMode)
{
for (QWidget *widgets[] {
m_ui->pushButtonSave,
m_ui->groupBoxOrigin,
m_ui->groupBoxCollisionChecking
}; QWidget *widget : widgets)
widget->setVisible(advancedMode);
}
void SpritePropertiesDialog::updateTitle()
{
setWindowTitle(tr("Sprite Properties: %0%1")
@@ -32,6 +32,8 @@ private slots:
void spriteNameChanged(const Sprite &sprite);
void advancedModeChanged(bool advancedMode);
private:
void updateTitle();
void updateSpriteInfo();
+13
View File
@@ -135,3 +135,16 @@ void EditorSettings::setHideWebsiteImage(bool hideWebsiteImage)
{
setValue("hideWebsiteImage", hideWebsiteImage);
}
bool EditorSettings::advancedMode() const
{
return value("advancedMode", true).toBool();
}
void EditorSettings::setAdvancedMode(bool advancedMode)
{
if (advancedMode == this->advancedMode())
return;
setValue("advancedMode", advancedMode);
emit advancedModeChanged(advancedMode);
}
+7
View File
@@ -7,6 +7,7 @@
class EditorSettings : public QSettings
{
Q_OBJECT
Q_PROPERTY(bool advancedMode READ advancedMode WRITE setAdvancedMode NOTIFY advancedModeChanged FINAL)
public:
using QSettings::QSettings;
@@ -47,4 +48,10 @@ public:
bool hideWebsiteImage() const;
void setHideWebsiteImage(bool hideWebsiteImage);
bool advancedMode() const;
void setAdvancedMode(bool advancedMode);
signals:
void advancedModeChanged(bool advancedMode);
};
+40
View File
@@ -172,6 +172,11 @@ MainWindow::MainWindow(const QString &filePath, EditorSettings &settings, QWidge
updateVisibilities();
m_ui->actionAdvancedMode->setChecked(m_settings.advancedMode());
connect(m_ui->actionAdvancedMode, &QAction::toggled, &m_settings, &EditorSettings::setAdvancedMode);
connect(&m_settings, &EditorSettings::advancedModeChanged, this, &MainWindow::advancedModeChanged);
advancedModeChanged(m_settings.advancedMode());
restoreGeometry(m_settings.mainWindowGeometry());
restoreState(m_settings.mainWindowState());
}
@@ -591,6 +596,41 @@ void MainWindow::exportResources()
QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented"));
}
void MainWindow::advancedModeChanged(bool advancedMode)
{
for (const QModelIndex &index : {
m_projectTreeModel->rootFor<Path>(),
m_projectTreeModel->rootFor<Script>(),
m_projectTreeModel->rootFor<Font>(),
m_projectTreeModel->rootFor<TimeLine>(),
m_projectTreeModel->extensionPackagesRoot()
})
{
m_ui->treeView->setRowHidden(index.row(), index.parent(), !advancedMode);
}
for (QAction *action : {
m_ui->actionImportResources,
m_ui->actionExportResources,
m_ui->actionCreateGroup,
m_ui->actionFindResource,
m_ui->actionExpandResourceTree,
m_ui->actionCollapseResourceTree,
m_ui->actionShowObjectInformation,
m_ui->actionCreatePath,
m_ui->actionCreateScript,
m_ui->actionCreateFont,
m_ui->actionCreateTimeLine,
m_ui->actionExtensionPackages,
m_ui->actionDefineConstants,
m_ui->actionDefineTriggers,
m_ui->actionIncludedFiles
})
action->setVisible(advancedMode);
m_ui->menuScripts->menuAction()->setVisible(advancedMode);
}
void MainWindow::preferences()
{
PreferencesDialog dialog{m_settings, this};
+1
View File
@@ -50,6 +50,7 @@ private slots:
void publishGame();
void importResources();
void exportResources();
void advancedModeChanged(bool advancedMode);
void preferences();
void create();
void duplicate();
+251 -10
View File
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
<enum>Qt::ContextMenuPolicy::CustomContextMenu</enum>
</property>
<property name="windowTitle">
<string>Form</string>
@@ -50,7 +50,7 @@
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
<enum>Qt::ContextMenuPolicy::CustomContextMenu</enum>
</property>
<property name="acceptDrops">
<bool>true</bool>
@@ -59,10 +59,10 @@
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::DragDrop</enum>
<enum>QAbstractItemView::DragDropMode::DragDrop</enum>
</property>
<property name="defaultDropAction">
<enum>Qt::MoveAction</enum>
<enum>Qt::DropAction::MoveAction</enum>
</property>
<property name="iconSize">
<size>
@@ -77,7 +77,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="tabPosition">
<enum>QTabWidget::East</enum>
<enum>QTabWidget::TabPosition::East</enum>
</property>
<property name="currentIndex">
<number>0</number>
@@ -462,7 +462,7 @@
<item row="15" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -762,7 +762,7 @@
<item row="10" column="0" colspan="3">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -1132,7 +1132,7 @@
<item row="13" column="0" colspan="3">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -1477,7 +1477,7 @@
<item row="11" column="0" colspan="3">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -1493,7 +1493,248 @@
<attribute name="title">
<string>Score</string>
</attribute>
<layout class="QGridLayout" name="gridLayoutScore"/>
<layout class="QGridLayout" name="gridLayoutScore">
<item row="3" column="0" colspan="3">
<widget class="QLabel" name="labelLives">
<property name="text">
<string>Lives</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="toolButton_68">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QToolButton" name="toolButton_80">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QToolButton" name="toolButton_82">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QToolButton" name="toolButton_86">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QToolButton" name="toolButton_77">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="9" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="toolButton_75">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QToolButton" name="toolButton_85">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="toolButton_74">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QToolButton" name="toolButton_79">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QToolButton" name="toolButton_83">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="6" column="0" colspan="3">
<widget class="QLabel" name="labelHealth">
<property name="text">
<string>Health</string>
</property>
<property name="icon" stdset="0">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize" stdset="0">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QToolButton" name="toolButton_76">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QToolButton" name="toolButton_84">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="labelScore">
<property name="text">
<string>Score</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QToolButton" name="toolButton_81">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QToolButton" name="toolButton_78">
<property name="icon">
<iconset resource="../resources_editor.qrc">
<normaloff>:/qtgameengine/icons/action.png</normaloff>:/qtgameengine/icons/action.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabWidgetExtra">
<attribute name="title">