mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-08 21:17:53 +00:00
@@ -7,7 +7,7 @@
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=C:/Qt/5.14.2/msvc2017_64/lib/cmake/Qt5",
|
||||
"cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/msvc2022_64/lib/cmake/Qt6",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"variables": []
|
||||
@@ -19,7 +19,7 @@
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=C:/Qt/5.14.2/msvc2017_64/lib/cmake/Qt5",
|
||||
"cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/msvc2022_64/lib/cmake/Qt6",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"variables": []
|
||||
|
||||
22
README.md
22
README.md
@@ -13,20 +13,20 @@ by running `git submodule update --init --recursive`.
|
||||
|
||||
**64-bit Note:** Except for Visual Studio and the Qt installer, ensure 64-bit (x86-64, x64) packages are installed.
|
||||
|
||||
* [Visual Studio 2017](https://visualstudio.microsoft.com/vs/) (Desktop development with C++)
|
||||
* [Qt 5.10+](https://download.qt.io/official_releases/qt/) (MSVC 2017 64-bit specification)
|
||||
* [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (Desktop development with C++)
|
||||
* [Qt 6.5+](https://download.qt.io/official_releases/qt/) (MSVC 2022 64-bit specification)
|
||||
* [LLVM 6.0.1 x86-64](http://releases.llvm.org/6.0.1/LLVM-6.0.1-win64.exe) installation; currently must be installed to `C:\Program Files\LLVM\`
|
||||
* [Python 3 x86-64](https://www.python.org/downloads/windows/)
|
||||
|
||||
## Build using Qt Creator
|
||||
|
||||
**Compiler Note:** Before starting, it is wise to select the 64-bit compiler by opening *Tools* > *Kits* > *Kits* tab.
|
||||
The C and C++ compilers should be set to *Microsoft Visual C++ Compiler 15.0 (amd64)*.
|
||||
The C and C++ compilers should be set to *Visual Studio Community 2022 (amd64)*.
|
||||
|
||||
**CMake Note:** At the time of writing, Qt Creator will search for a user-installed CMake but this is not necessary.
|
||||
The CMake that comes with Visual Studio may be manually selected by opening *Tools* > *Kits* > *CMake* tab, then adding
|
||||
a manual CMake with the path:
|
||||
`C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe`.
|
||||
`C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe`.
|
||||
|
||||
**Debugger Note:** To use Qt Creator for debugging, *Debugging Tools for Windows* must be installed from the
|
||||
[Windows SDK package](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk). Once installed,
|
||||
@@ -42,7 +42,7 @@ the Qt Creator kit should automatically detect CDB. Make sure the x64 version is
|
||||
## Build using Visual Studio
|
||||
|
||||
**Qt Note:** It may be necessary to edit both CMAKE_PREFIX_PATH entries in the *CMakeSettings.json* file.
|
||||
They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
They should be set to `C:/Qt/<QT VERSION>/msvc2022_64/lib/cmake/Qt6`.
|
||||
|
||||
1. *File* > *Open* > *CMake*
|
||||
2. Select *CMakeLists.txt* at root of cloned PrimeWorldEditor
|
||||
@@ -51,11 +51,11 @@ They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
|
||||
## Build using Command Line
|
||||
|
||||
1. Launch *x64 Native Tools Command Prompt for VS 2017*
|
||||
1. Launch *x64 Native Tools Command Prompt for VS 2022*
|
||||
2. `cd <PATH TO PrimeWorldEditor ROOT>`
|
||||
3. `mkdir build`
|
||||
4. `cd build`
|
||||
5. `cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5 ..`
|
||||
5. `cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=C:/Qt/<QT VERSION>/msvc2022_64/lib/cmake/Qt6 ..`
|
||||
6. `ninja`
|
||||
7. *PrimeWorldEditor.exe* is found in the `build/bin` directory.
|
||||
|
||||
@@ -64,7 +64,7 @@ They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
## Requirements
|
||||
|
||||
* [Xcode 10.2+](https://developer.apple.com/xcode/)
|
||||
* [Qt 5.10+](https://download.qt.io/official_releases/qt/) (macOS specification)
|
||||
* [Qt 6.5+](https://download.qt.io/official_releases/qt/) (macOS specification)
|
||||
* *cmake*, *ninja* and *python* installed using [Homebrew](https://brew.sh/)
|
||||
|
||||
## Build using Xcode
|
||||
@@ -72,7 +72,7 @@ They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
1. `cd <PATH TO PrimeWorldEditor ROOT>`
|
||||
2. `mkdir build`
|
||||
3. `cd build`
|
||||
4. `cmake -G Xcode -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt5 ..`
|
||||
4. `cmake -G Xcode -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt6 ..`
|
||||
5. Open *PrimeWorldEditor.xcodeproj*
|
||||
6. Edit/Build/Debug/Run
|
||||
|
||||
@@ -81,7 +81,7 @@ They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
1. `cd <PATH TO PrimeWorldEditor ROOT>`
|
||||
2. `mkdir build`
|
||||
3. `cd build`
|
||||
4. `cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt5 ..`
|
||||
4. `cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt6 ..`
|
||||
5. `ninja`
|
||||
6. *PrimeWorldEditor.app* is found in the `build/bin` directory.
|
||||
|
||||
@@ -90,7 +90,7 @@ They should be set to `C:/Qt/<QT VERSION>/msvc2017_64/lib/cmake/Qt5`.
|
||||
## Requirements
|
||||
|
||||
* A working compiler toolchain (GCC or Clang)
|
||||
* *cmake*, *ninja*, *python3*, *qt5* (dev), *clang* (dev) packages
|
||||
* *cmake*, *ninja*, *python3*, *qt6* (dev), *clang* (dev) packages
|
||||
|
||||
## Build using Command Line
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ void CBasicViewport::mousePressEvent(QMouseEvent *pEvent)
|
||||
OnMouseClick(pEvent);
|
||||
}
|
||||
|
||||
mLastMousePos = pEvent->globalPos();
|
||||
mLastMousePos = pEvent->globalPosition().toPoint();
|
||||
}
|
||||
|
||||
void CBasicViewport::mouseReleaseEvent(QMouseEvent *pEvent)
|
||||
@@ -117,7 +117,7 @@ void CBasicViewport::mouseReleaseEvent(QMouseEvent *pEvent)
|
||||
// Send context menu event to subclass if needed
|
||||
if ((pEvent->button() == Qt::RightButton) && (mMoveTimer.Time() <= 0.3) && !mMouseMoved)
|
||||
{
|
||||
QContextMenuEvent Event(QContextMenuEvent::Mouse, QCursor::pos());
|
||||
QContextMenuEvent Event(QContextMenuEvent::Mouse, QCursor::pos(), QCursor::pos());
|
||||
this->ContextMenu(&Event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <Core/GameProject/CGameProject.h>
|
||||
|
||||
#include <QFuture>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include <QtConcurrentRun>
|
||||
|
||||
CEditorApplication::CEditorApplication(int& rArgc, char **ppArgv)
|
||||
: QApplication(rArgc, ppArgv)
|
||||
@@ -280,7 +280,7 @@ bool CEditorApplication::RebuildResourceDatabase()
|
||||
Dialog.SetOneShotTask("Rebuilding resource database");
|
||||
Dialog.DisallowCanceling();
|
||||
|
||||
QFuture<void> Future = QtConcurrent::run(pProj->ResourceStore(), &CResourceStore::RebuildFromDirectory);
|
||||
QFuture<void> Future = QtConcurrent::run(&CResourceStore::RebuildFromDirectory, pProj->ResourceStore());
|
||||
Dialog.WaitForResults(Future);
|
||||
Dialog.close();
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <QFileDialog>
|
||||
#include <QLabel>
|
||||
#include <QVBoxLayout>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include <QtConcurrentRun>
|
||||
|
||||
#include <nod/nod.hpp>
|
||||
|
||||
@@ -445,7 +445,7 @@ void CExportGameDialog::Export()
|
||||
StrExportDir.EnsureEndsWith('/');
|
||||
|
||||
CProgressDialog Dialog(tr("Creating new game project"), false, true, parentWidget());
|
||||
QFuture<bool> Future = QtConcurrent::run(mpExporter.get(), &CGameExporter::Export, mpDisc.get(), StrExportDir, &NameMap, &GameInfo, &Dialog);
|
||||
QFuture<bool> Future = QtConcurrent::run(&CGameExporter::Export, mpExporter.get(), mpDisc.get(), StrExportDir, &NameMap, &GameInfo, &Dialog);
|
||||
mExportSuccess = Dialog.WaitForResults(Future);
|
||||
|
||||
if (!mExportSuccess)
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
#include "UICommon.h"
|
||||
#include <Core/Resource/Script/NGameList.h>
|
||||
#include <Core/Resource/Script/NPropertyMap.h>
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
#include <QtConcurrentRun>
|
||||
#include <QThreadPool>
|
||||
#include <iterator>
|
||||
|
||||
CGeneratePropertyNamesDialog::CGeneratePropertyNamesDialog(QWidget* pParent)
|
||||
@@ -39,7 +40,7 @@ CGeneratePropertyNamesDialog::CGeneratePropertyNamesDialog(QWidget* pParent)
|
||||
mpUI->OutputTreeWidget->setSortingEnabled(true);
|
||||
|
||||
// Allow the generator to initialize in the background while the user is getting set up
|
||||
QtConcurrent::run(&mGenerator, &CPropertyNameGenerator::Warmup);
|
||||
QThreadPool::globalInstance()->start([this] { mGenerator.Warmup(); });
|
||||
}
|
||||
|
||||
CGeneratePropertyNamesDialog::~CGeneratePropertyNamesDialog() = default;
|
||||
@@ -159,14 +160,14 @@ void CGeneratePropertyNamesDialog::StartGeneration()
|
||||
Params.Prefix = TO_TSTRING(mpUI->PrefixLineEdit->text());
|
||||
Params.Suffix = TO_TSTRING(mpUI->SuffixLineEdit->text());
|
||||
Params.Casing = mpUI->CasingComboBox->currentEnum();
|
||||
Params.ValidIdPairs = mIdPairs.toStdVector();
|
||||
Params.ValidIdPairs = std::vector<SPropertyIdTypePair>(mIdPairs.begin(), mIdPairs.end());
|
||||
Params.ExcludeAccuratelyNamedProperties = mpUI->UnnamedOnlyCheckBox->isChecked();
|
||||
Params.TestIntsAsChoices = mpUI->TestIntsAsChoicesCheckBox->isChecked();
|
||||
Params.PrintToLog = mpUI->LogOutputCheckBox->isChecked();
|
||||
|
||||
// Run the task and configure ourselves so we can update correctly
|
||||
connect(&mFutureWatcher, &QFutureWatcher<void>::finished, this, &CGeneratePropertyNamesDialog::GenerationComplete);
|
||||
mFuture = QtConcurrent::run(&mGenerator, &CPropertyNameGenerator::Generate, Params, &mNotifier);
|
||||
mFuture = QtConcurrent::run(&CPropertyNameGenerator::Generate, &mGenerator, Params, &mNotifier);
|
||||
mFutureWatcher.setFuture(mFuture);
|
||||
|
||||
mUpdateTimer.start(500);
|
||||
|
||||
@@ -36,7 +36,7 @@ class CGeneratePropertyNamesDialog : public QDialog
|
||||
CProgressBarNotifier mNotifier;
|
||||
|
||||
/** List of ID/type pairs in the ID pool */
|
||||
QVector<SPropertyIdTypePair> mIdPairs;
|
||||
QList<SPropertyIdTypePair> mIdPairs;
|
||||
|
||||
/** Future/future watcher for name generation task */
|
||||
QFuture<void> mFuture;
|
||||
@@ -46,7 +46,7 @@ class CGeneratePropertyNamesDialog : public QDialog
|
||||
QTimer mUpdateTimer;
|
||||
|
||||
/** Checked items in the output tree widget */
|
||||
QVector<QTreeWidgetItem*> mCheckedItems;
|
||||
QList<QTreeWidgetItem*> mCheckedItems;
|
||||
|
||||
/** Whether name generation is running */
|
||||
bool mRunningNameGeneration = false;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include <Common/Log.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QScreen>
|
||||
|
||||
CGizmo::CGizmo()
|
||||
|
||||
@@ -54,12 +54,7 @@ set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
if (WIN32)
|
||||
set(QT_PLATFORM_COMPONENTS WinExtras)
|
||||
set(QT_PLATFORM_COMPONENTS_LIBS Qt5::WinExtras)
|
||||
endif()
|
||||
|
||||
find_package(Qt5 COMPONENTS Core Widgets ${QT_PLATFORM_COMPONENTS} REQUIRED)
|
||||
find_package(Qt6 COMPONENTS Concurrent Core Gui OpenGL OpenGLWidgets Widgets REQUIRED)
|
||||
|
||||
file(GLOB_RECURSE source_files
|
||||
"*.cpp"
|
||||
@@ -109,8 +104,13 @@ target_compile_features(pwe_editor PRIVATE cxx_std_17)
|
||||
target_link_libraries(
|
||||
pwe_editor
|
||||
pwe_core
|
||||
Qt5::Widgets
|
||||
${QT_PLATFORM_COMPONENTS_LIBS}
|
||||
Qt6::Concurrent
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::OpenGL
|
||||
Qt6::OpenGLWidgets
|
||||
Qt6::Widgets
|
||||
|
||||
${PLAT_LIBS}
|
||||
)
|
||||
|
||||
@@ -154,7 +154,7 @@ if (WIN32 OR APPLE)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
find_program(WINDEPLOYQT_PROGRAM windeployqt PATHS ${Qt5_DIR}/../../../bin/)
|
||||
find_program(WINDEPLOYQT_PROGRAM windeployqt PATHS ${Qt6_DIR}/../../../bin/)
|
||||
if(WINDEPLOYQT_PROGRAM)
|
||||
message(STATUS "Found ${WINDEPLOYQT_PROGRAM}")
|
||||
else()
|
||||
@@ -163,7 +163,7 @@ if (WIN32)
|
||||
|
||||
# run windeployqt to gather necessary qt libraries and plugins
|
||||
add_custom_command(TARGET pwe_editor POST_BUILD COMMAND ${WINDEPLOYQT_PROGRAM} ARGS
|
||||
--no-angle --no-opengl-sw $<TARGET_FILE:pwe_editor>)
|
||||
$<TARGET_FILE:pwe_editor>)
|
||||
|
||||
# copy bin directory of dew prefix
|
||||
add_custom_command(TARGET pwe_editor POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
|
||||
@@ -174,7 +174,7 @@ if (WIN32)
|
||||
install(DIRECTORY "${CMAKE_SOURCE_DIR}/resources" DESTINATION ".")
|
||||
install(DIRECTORY "${CMAKE_SOURCE_DIR}/templates" DESTINATION ".")
|
||||
elseif (APPLE)
|
||||
find_program(MACDEPLOYQT_PROGRAM macdeployqt PATHS ${Qt5_DIR}/../../../bin/)
|
||||
find_program(MACDEPLOYQT_PROGRAM macdeployqt PATHS ${Qt6_DIR}/../../../bin/)
|
||||
if(MACDEPLOYQT_PROGRAM)
|
||||
message(STATUS "Found ${MACDEPLOYQT_PROGRAM}")
|
||||
else()
|
||||
|
||||
@@ -14,24 +14,6 @@ CProgressDialog::CProgressDialog(QString OperationName, bool UseBusyIndicator, b
|
||||
mpUI->ProgressBar->setMaximum(UseBusyIndicator ? 0 : 10000);
|
||||
setWindowTitle(OperationName);
|
||||
|
||||
#ifdef WIN32
|
||||
QWinTaskbarButton *pButton = new QWinTaskbarButton(this);
|
||||
QWindow *pWindow = UICommon::FindWidgetWindowHandle( parentWidget() );
|
||||
|
||||
if (pWindow)
|
||||
{
|
||||
pButton->setWindow(pWindow);
|
||||
mpTaskbarProgress = pButton->progress();
|
||||
mpTaskbarProgress->setMinimum(0);
|
||||
mpTaskbarProgress->setMaximum(UseBusyIndicator ? 0 : 10000);
|
||||
mpTaskbarProgress->show();
|
||||
}
|
||||
else
|
||||
mpTaskbarProgress = nullptr;
|
||||
|
||||
setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
|
||||
#endif
|
||||
|
||||
connect(mpUI->CancelButton, &QPushButton::pressed, this, &CProgressDialog::CancelButtonClicked);
|
||||
}
|
||||
|
||||
@@ -57,14 +39,6 @@ void CProgressDialog::closeEvent(QCloseEvent *pEvent)
|
||||
else
|
||||
{
|
||||
pEvent->accept();
|
||||
|
||||
#ifdef WIN32
|
||||
if (mpTaskbarProgress)
|
||||
{
|
||||
mpTaskbarProgress->reset();
|
||||
mpTaskbarProgress->hide();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,10 +76,5 @@ void CProgressDialog::UpdateUI(const QString& rkTaskDesc, const QString& rkStepD
|
||||
{
|
||||
int ProgressValue = 10000 * ProgressPercent;
|
||||
mpUI->ProgressBar->setValue(ProgressValue);
|
||||
|
||||
#ifdef WIN32
|
||||
if (mpTaskbarProgress)
|
||||
mpTaskbarProgress->setValue(ProgressValue);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,6 @@
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <QtWinExtras/QWinTaskbarButton>
|
||||
#include <QtWinExtras/QWinTaskbarProgress>
|
||||
#endif
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace Ui {
|
||||
@@ -30,10 +25,6 @@ class CProgressDialog : public IProgressNotifierUI
|
||||
bool mFinished = false;
|
||||
bool mCanceled = false;
|
||||
|
||||
#ifdef WIN32
|
||||
QWinTaskbarProgress *mpTaskbarProgress;
|
||||
#endif
|
||||
|
||||
public:
|
||||
explicit CProgressDialog(QString OperationName, bool UseBusyIndicator, bool AlertOnFinish, QWidget *pParent = nullptr);
|
||||
~CProgressDialog() override;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
#include <QMessageBox>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include <QtConcurrentRun>
|
||||
|
||||
CProjectSettingsDialog::CProjectSettingsDialog(QWidget *pParent)
|
||||
: QDialog(pParent)
|
||||
@@ -191,12 +191,12 @@ void CProjectSettingsDialog::BuildISO()
|
||||
|
||||
if (!NeedsDiscMerge)
|
||||
{
|
||||
QFuture<bool> Future = QtConcurrent::run(pProj, &CGameProject::BuildISO, TO_TSTRING(IsoPath), &Dialog);
|
||||
QFuture<bool> Future = QtConcurrent::run(&CGameProject::BuildISO, pProj, TO_TSTRING(IsoPath), &Dialog);
|
||||
Success = Dialog.WaitForResults(Future);
|
||||
}
|
||||
else
|
||||
{
|
||||
QFuture<bool> Future = QtConcurrent::run(pProj, &CGameProject::MergeISO, TO_TSTRING(IsoPath), (nod::DiscWii*) pBaseDisc.get(), &Dialog);
|
||||
QFuture<bool> Future = QtConcurrent::run(&CGameProject::MergeISO, pProj, TO_TSTRING(IsoPath), (nod::DiscWii*)pBaseDisc.get(), &Dialog);
|
||||
Success = Dialog.WaitForResults(Future);
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ QVariant CSkeletonHierarchyModel::data(const QModelIndex& rkIndex, int Role) con
|
||||
return TO_QSTRING(pBone->Name());
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
CBone* CSkeletonHierarchyModel::BoneForIndex(const QModelIndex& rkIndex) const
|
||||
|
||||
@@ -48,7 +48,7 @@ bool IEditor::CheckUnsavedChanges()
|
||||
|
||||
if (!OkToClear)
|
||||
{
|
||||
const int Result = QMessageBox::warning(this, tr("Save"), tr("You have unsaved changes. Save?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel);
|
||||
const int Result = QMessageBox::warning(this, tr("Save"), tr("You have unsaved changes. Save?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel);
|
||||
|
||||
if (Result == QMessageBox::Yes)
|
||||
{
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include "Editor/SDolHeader.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QRegExp>
|
||||
#include <QObject>
|
||||
#include <QOverload>
|
||||
#include <QSettings>
|
||||
|
||||
#undef CopyFile
|
||||
@@ -37,10 +37,10 @@ CGameProject* gpQuickplayProject = nullptr;
|
||||
void CQuickplayRelay::QuickplayStarted()
|
||||
{
|
||||
debugf("Quickplay session started.");
|
||||
connect(gpDolphinProcess, qOverload<int>(&QProcess::finished), this, &CQuickplayRelay::QuickplayFinished);
|
||||
connect(gpDolphinProcess, &QProcess::finished, this, &CQuickplayRelay::QuickplayFinished);
|
||||
}
|
||||
|
||||
void CQuickplayRelay::QuickplayFinished(int ReturnCode)
|
||||
void CQuickplayRelay::QuickplayFinished(int ReturnCode, QProcess::ExitStatus exitStatus)
|
||||
{
|
||||
debugf("Quickplay session finished.");
|
||||
disconnect(gpDolphinProcess, 0, this, 0);
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
|
||||
public slots:
|
||||
void QuickplayStarted();
|
||||
void QuickplayFinished(int ReturnCode);
|
||||
void QuickplayFinished(int ReturnCode, QProcess::ExitStatus exitStatus);
|
||||
};
|
||||
|
||||
/** Attempt to launch quickplay based on the current editor state. */
|
||||
|
||||
@@ -220,13 +220,14 @@ QVariant CPropertyModel::headerData(int Section, Qt::Orientation Orientation, in
|
||||
if (Section == 0) return tr("Name");
|
||||
if (Section == 1) return tr("Value");
|
||||
}
|
||||
return QVariant::Invalid;
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QVariant CPropertyModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
{
|
||||
if (!rkIndex.isValid())
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
|
||||
if (Role == Qt::DisplayRole || (Role == Qt::ToolTipRole && rkIndex.column() == 1))
|
||||
{
|
||||
@@ -465,7 +466,7 @@ QVariant CPropertyModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QModelIndex CPropertyModel::index(int Row, int Column, const QModelIndex& rkParent) const
|
||||
|
||||
@@ -82,7 +82,7 @@ void CResourceBrowserDelegate::paint(QPainter *pPainter, const QStyleOptionViewI
|
||||
// Draw icon
|
||||
QVariant IconVariant = rkIndex.model()->data(rkIndex, Qt::DecorationRole);
|
||||
|
||||
if (IconVariant != QVariant::Invalid)
|
||||
if (IconVariant.isValid())
|
||||
{
|
||||
QIcon Icon = IconVariant.value<QIcon>();
|
||||
Icon.paint(pPainter, GeomInfo.IconRect);
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#include "CResourceBrowser.h"
|
||||
#include "CResourceMimeData.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
CResourceTableModel::CResourceTableModel(CResourceBrowser *pBrowser, QObject *pParent)
|
||||
: QAbstractTableModel(pParent)
|
||||
{
|
||||
@@ -27,7 +29,7 @@ int CResourceTableModel::columnCount(const QModelIndex&) const
|
||||
QVariant CResourceTableModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
{
|
||||
if (rkIndex.column() != 0)
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
|
||||
// Directory
|
||||
if (IsIndexDirectory(rkIndex))
|
||||
@@ -44,7 +46,7 @@ QVariant CResourceTableModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
if (Role == Qt::DecorationRole)
|
||||
return QIcon(QStringLiteral(":/icons/Open_24px.svg"));
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
// Resource
|
||||
@@ -59,7 +61,7 @@ QVariant CResourceTableModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
if (Role == Qt::DecorationRole)
|
||||
return QIcon(QStringLiteral(":/icons/Sphere Preview.svg"));
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
Qt::ItemFlags CResourceTableModel::flags(const QModelIndex& rkIndex) const
|
||||
@@ -277,7 +279,7 @@ void CResourceTableModel::RecursiveAddDirectoryContents(CVirtualDirectory *pDir)
|
||||
|
||||
int CResourceTableModel::EntryListIndex(CResourceEntry *pEntry)
|
||||
{
|
||||
return qLowerBound(mEntries, pEntry) - mEntries.constBegin();
|
||||
return std::lower_bound(mEntries.begin(), mEntries.end(), pEntry) - mEntries.begin();
|
||||
}
|
||||
|
||||
void CResourceTableModel::RefreshAllIndices()
|
||||
|
||||
@@ -73,7 +73,7 @@ int CVirtualDirectoryModel::columnCount(const QModelIndex&) const
|
||||
QVariant CVirtualDirectoryModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
{
|
||||
if (!rkIndex.isValid())
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
|
||||
if (Role == Qt::DisplayRole || Role == Qt::ToolTipRole)
|
||||
{
|
||||
@@ -94,7 +94,7 @@ QVariant CVirtualDirectoryModel::data(const QModelIndex& rkIndex, int Role) cons
|
||||
return QIcon(QStringLiteral(":/icons/Open_24px.svg"));
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool CVirtualDirectoryModel::setData(const QModelIndex& rkIndex, const QVariant& rkValue, int Role)
|
||||
|
||||
@@ -39,7 +39,7 @@ QVariant CStringListModel::data(const QModelIndex& kIndex, int Role) const
|
||||
{
|
||||
if (!kIndex.isValid() || !mpStringTable)
|
||||
{
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
const auto StringIndex = static_cast<size_t>(kIndex.row());
|
||||
@@ -66,7 +66,7 @@ QVariant CStringListModel::data(const QModelIndex& kIndex, int Role) const
|
||||
// other roles: invalid
|
||||
else
|
||||
{
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#include "ui_CSelectResourcePanel.h"
|
||||
#include "Editor/CEditorApplication.h"
|
||||
#include <Common/Math/MathUtil.h>
|
||||
#include <QDesktopWidget>
|
||||
#include <QDebug>
|
||||
#include <QScreen>
|
||||
|
||||
CSelectResourcePanel::CSelectResourcePanel(CResourceSelector *pSelector)
|
||||
: QFrame(pSelector)
|
||||
@@ -24,7 +24,7 @@ CSelectResourcePanel::CSelectResourcePanel(CResourceSelector *pSelector)
|
||||
|
||||
// Determine size
|
||||
QPoint SelectorPos = pSelector->parentWidget()->mapToGlobal( pSelector->pos() );
|
||||
QRect ScreenRect = gpEdApp->desktop()->availableGeometry();
|
||||
QRect ScreenRect = gpEdApp->primaryScreen()->availableGeometry();
|
||||
|
||||
int MaxWidthLeft = SelectorPos.x();
|
||||
int MaxWidthRight = ScreenRect.width() - SelectorPos.x() - pSelector->width();
|
||||
|
||||
@@ -59,7 +59,9 @@ void WColorPicker::mousePressEvent(QMouseEvent *)
|
||||
|
||||
void WColorPicker::mouseReleaseEvent(QMouseEvent *pEvent)
|
||||
{
|
||||
if ((pEvent->x() < width()) && (pEvent->y() < height()))
|
||||
const auto pos = pEvent->position().toPoint();
|
||||
|
||||
if (pos.x() < width() && pos.y() < height())
|
||||
{
|
||||
mOldColor = mColor;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "WDraggableSpinBox.h"
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QLineEdit>
|
||||
#include <QMouseEvent>
|
||||
#include <QScreen>
|
||||
@@ -35,7 +34,9 @@ void WDraggableSpinBox::mouseReleaseEvent(QMouseEvent *pEvent)
|
||||
{
|
||||
if (!mBeenDragged)
|
||||
{
|
||||
if (pEvent->y() <= height() / 2)
|
||||
const auto pos = pEvent->position().toPoint();
|
||||
|
||||
if (pos.y() <= height() / 2)
|
||||
stepUp();
|
||||
else
|
||||
stepDown();
|
||||
|
||||
@@ -49,7 +49,7 @@ CInstancesModel::~CInstancesModel() = default;
|
||||
|
||||
QVariant CInstancesModel::headerData(int Section, Qt::Orientation Orientation, int Role) const
|
||||
{
|
||||
if ((Orientation == Qt::Horizontal) && (Role == Qt::DisplayRole))
|
||||
if (Orientation == Qt::Horizontal && Role == Qt::DisplayRole)
|
||||
{
|
||||
switch (Section)
|
||||
{
|
||||
@@ -59,7 +59,8 @@ QVariant CInstancesModel::headerData(int Section, Qt::Orientation Orientation, i
|
||||
case 3: return tr("Show");
|
||||
}
|
||||
}
|
||||
return QVariant::Invalid;
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QModelIndex CInstancesModel::index(int Row, int Column, const QModelIndex& rkParent) const
|
||||
@@ -154,7 +155,7 @@ QModelIndex CInstancesModel::parent(const QModelIndex& rkChild) const
|
||||
{
|
||||
CScriptTemplate *pTemp = pObj->Template();
|
||||
|
||||
for (size_t iTemp = 0; iTemp < mTemplateList.size(); iTemp++)
|
||||
for (qsizetype iTemp = 0; iTemp < mTemplateList.size(); iTemp++)
|
||||
{
|
||||
if (mTemplateList[iTemp] == pTemp)
|
||||
return createIndex(static_cast<int>(iTemp), 0, static_cast<quintptr>((iTemp << TYPES_ROW_INDEX_SHIFT) | 1));
|
||||
@@ -221,7 +222,7 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
if (rkIndex.column() == 0)
|
||||
return mBaseItems[rkIndex.row()];
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
// Object types
|
||||
@@ -236,7 +237,7 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
|
||||
// todo: show/hide button in column 2
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
// Instances
|
||||
@@ -260,7 +261,7 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
else
|
||||
{
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,7 +270,7 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
else if ((Role == Qt::DecorationRole) && (rkIndex.column() == 3))
|
||||
{
|
||||
if (!mpScene)
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
|
||||
static const QIcon Visible(QStringLiteral(":/icons/Show.svg"));
|
||||
static const QIcon Invisible(QStringLiteral(":/icons/Hide.svg"));
|
||||
@@ -321,7 +322,7 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
void CInstancesModel::SetModelType(EInstanceModelType Type)
|
||||
@@ -493,7 +494,8 @@ void CInstancesModel::PropertyModified(IProperty *pProp, CScriptObject *pInst)
|
||||
const uint32 Index = mTemplateList.indexOf(pInst->Template());
|
||||
const QModelIndex TempIndex = index(Index, 0, ScriptRoot);
|
||||
|
||||
const QList<CScriptObject*> InstList = QList<CScriptObject*>::fromStdList(pInst->Template()->ObjectList());
|
||||
const auto& ObjList = pInst->Template()->ObjectList();
|
||||
const QList<CScriptObject*> InstList(ObjList.begin(), ObjList.end());
|
||||
const uint32 InstIdx = InstList.indexOf(pInst);
|
||||
const QModelIndex InstIndex = index(InstIdx, 0, TempIndex);
|
||||
emit dataChanged(InstIndex, InstIndex);
|
||||
|
||||
@@ -19,7 +19,7 @@ QVariant CLayerModel::data(const QModelIndex &index, int role) const
|
||||
if (mpArea && (role == Qt::DisplayRole) && (index.row() < rowCount(QModelIndex())))
|
||||
return TO_QSTRING(Layer(index)->Name());
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
void CLayerModel::SetArea(CGameArea *pArea)
|
||||
|
||||
@@ -36,7 +36,7 @@ int CLinkModel::columnCount(const QModelIndex& /*rkParent*/) const
|
||||
QVariant CLinkModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
{
|
||||
if (!mpObject)
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
|
||||
if (Role == Qt::DisplayRole || Role == Qt::ToolTipRole)
|
||||
{
|
||||
@@ -76,11 +76,11 @@ QVariant CLinkModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
|
||||
default:
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QVariant CLinkModel::headerData(int Section, Qt::Orientation Orientation, int Role) const
|
||||
@@ -92,9 +92,9 @@ QVariant CLinkModel::headerData(int Section, Qt::Orientation Orientation, int Ro
|
||||
case 0: return (mType == ELinkType::Incoming ? tr("Sender") : tr("Target"));
|
||||
case 1: return tr("State");
|
||||
case 2: return tr("Message");
|
||||
default: return QVariant::Invalid;
|
||||
default: return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
@@ -48,7 +48,8 @@ public:
|
||||
|
||||
QVariant data(const QModelIndex& rkIndex, int Role) const override
|
||||
{
|
||||
if (!rkIndex.isValid()) return QVariant::Invalid;
|
||||
if (!rkIndex.isValid())
|
||||
return QVariant();
|
||||
|
||||
if (Role == Qt::DisplayRole)
|
||||
return TO_QSTRING(mObjList[rkIndex.row()]->Instance()->InstanceName());
|
||||
@@ -65,7 +66,7 @@ public:
|
||||
return QIcon(QStringLiteral(":/icons/POI Normal.svg"));
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
CScriptNode* PoiForIndex(const QModelIndex& rkIndex) const
|
||||
|
||||
@@ -13,10 +13,12 @@ CPoiMapModel::CPoiMapModel(CWorldEditor *pEditor, QObject *pParent)
|
||||
|
||||
QVariant CPoiMapModel::headerData(int Section, Qt::Orientation Orientation, int Role) const
|
||||
{
|
||||
if (Section == 0 && Orientation == Qt::Horizontal && Role == Qt::DisplayRole)
|
||||
return tr("PointOfInterest");
|
||||
|
||||
return QVariant::Invalid;
|
||||
if (Section == 0 && Orientation == Qt::Horizontal)
|
||||
{
|
||||
if (Role == Qt::DisplayRole)
|
||||
return tr("PointOfInterest");
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
int CPoiMapModel::rowCount(const QModelIndex& /*rkParent*/) const
|
||||
@@ -59,7 +61,7 @@ QVariant CPoiMapModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
void CPoiMapModel::AddPOI(CScriptNode *pPOI)
|
||||
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
return mEntries[rkIndex.row()].Name;
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
void SetGameTemplate(CGameTemplate *pGame)
|
||||
|
||||
@@ -28,8 +28,8 @@ public:
|
||||
{
|
||||
if (Role == Qt::DisplayRole || Role == Qt::ToolTipRole)
|
||||
return TO_QSTRING(mTemplates[rkIndex.row()]->Name());
|
||||
else
|
||||
return QVariant::Invalid;
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
Qt::DropActions supportedDropActions() const override
|
||||
|
||||
@@ -92,7 +92,7 @@ CWorldEditor::CWorldEditor(QWidget *parent)
|
||||
|
||||
// Initialize edit mode toolbar
|
||||
mpEditModeButtonGroup = new QButtonGroup(this);
|
||||
connect(mpEditModeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(ChangeEditMode(int)));
|
||||
connect(mpEditModeButtonGroup, &QButtonGroup::idClicked, this, qOverload<int>(&CWorldEditor::ChangeEditMode));
|
||||
|
||||
AddEditModeButton(QIcon(QStringLiteral(":/icons/World.svg")), tr("Edit World Info"), eWEM_EditWorldInfo);
|
||||
AddEditModeButton(QIcon(QStringLiteral(":/icons/Modify.svg")), tr("Edit Script"), eWEM_EditScript);
|
||||
@@ -131,7 +131,7 @@ CWorldEditor::CWorldEditor(QWidget *parent)
|
||||
mpQuickplayAction->setVisible(false);
|
||||
mpQuickplayAction->setEnabled(false);
|
||||
|
||||
connect(pQuickplayButton, SIGNAL(pressed()), this, SLOT(LaunchQuickplay()));
|
||||
connect(pQuickplayButton, &QToolButton::pressed, this, &CWorldEditor::LaunchQuickplay);
|
||||
|
||||
// "Open Recent" menu
|
||||
mpOpenRecentMenu = new QMenu(this);
|
||||
@@ -142,7 +142,7 @@ CWorldEditor::CWorldEditor(QWidget *parent)
|
||||
QAction *pAction = new QAction(this);
|
||||
pAction->setVisible(false);
|
||||
pAction->setData((int) iAct);
|
||||
connect(pAction, SIGNAL(triggered(bool)), this, SLOT(OpenRecentProject()));
|
||||
connect(pAction, &QAction::triggered, this, &CWorldEditor::OpenRecentProject);
|
||||
|
||||
mpOpenRecentMenu->addAction(pAction);
|
||||
mRecentProjectsActions[iAct] = pAction;
|
||||
@@ -150,69 +150,69 @@ CWorldEditor::CWorldEditor(QWidget *parent)
|
||||
UpdateOpenRecentActions();
|
||||
|
||||
// Connect signals and slots
|
||||
connect(gpEdApp, SIGNAL(ActiveProjectChanged(CGameProject*)), this, SLOT(OnActiveProjectChanged(CGameProject*)));
|
||||
connect(gpEdApp->clipboard(), SIGNAL(dataChanged()), this, SLOT(OnClipboardDataModified()));
|
||||
connect(gpEdApp, &CEditorApplication::ActiveProjectChanged, this, &CWorldEditor::OnActiveProjectChanged);
|
||||
connect(gpEdApp->clipboard(), &QClipboard::dataChanged, this, &CWorldEditor::OnClipboardDataModified);
|
||||
|
||||
connect(ui->MainViewport, SIGNAL(ViewportClick(SRayIntersection,QMouseEvent*)), this, SLOT(OnViewportClick(SRayIntersection,QMouseEvent*)));
|
||||
connect(ui->MainViewport, SIGNAL(InputProcessed(SRayIntersection,QMouseEvent*)), this, SLOT(OnViewportInputProcessed(SRayIntersection,QMouseEvent*)));
|
||||
connect(ui->MainViewport, SIGNAL(InputProcessed(SRayIntersection,QMouseEvent*)), this, SLOT(UpdateGizmoUI()) );
|
||||
connect(ui->MainViewport, SIGNAL(InputProcessed(SRayIntersection,QMouseEvent*)), this, SLOT(UpdateStatusBar()) );
|
||||
connect(ui->MainViewport, SIGNAL(InputProcessed(SRayIntersection,QMouseEvent*)), this, SLOT(UpdateCursor()) );
|
||||
connect(ui->MainViewport, SIGNAL(GizmoMoved()), this, SLOT(OnGizmoMoved()));
|
||||
connect(ui->MainViewport, SIGNAL(CameraOrbit()), this, SLOT(UpdateCameraOrbit()));
|
||||
connect(this, SIGNAL(SelectionModified()), this, SLOT(OnSelectionModified()));
|
||||
connect(this, SIGNAL(SelectionTransformed()), this, SLOT(UpdateCameraOrbit()));
|
||||
connect(this, SIGNAL(PickModeEntered(QCursor)), this, SLOT(OnPickModeEnter(QCursor)));
|
||||
connect(this, SIGNAL(PickModeExited()), this, SLOT(OnPickModeExit()));
|
||||
connect(ui->TransformSpinBox, SIGNAL(ValueChanged(CVector3f)), this, SLOT(OnTransformSpinBoxModified(CVector3f)));
|
||||
connect(ui->TransformSpinBox, SIGNAL(EditingDone(CVector3f)), this, SLOT(OnTransformSpinBoxEdited(CVector3f)));
|
||||
connect(ui->CamSpeedSpinBox, SIGNAL(valueChanged(double)), this, SLOT(OnCameraSpeedChange(double)));
|
||||
connect(&UndoStack(), SIGNAL(indexChanged(int)), this, SLOT(OnUndoStackIndexChanged()));
|
||||
connect(ui->MainViewport, &CSceneViewport::ViewportClick, this, &CWorldEditor::OnViewportClick);
|
||||
connect(ui->MainViewport, &CSceneViewport::InputProcessed, this, &CWorldEditor::OnViewportInputProcessed);
|
||||
connect(ui->MainViewport, &CSceneViewport::InputProcessed, this, &CWorldEditor::UpdateGizmoUI);
|
||||
connect(ui->MainViewport, &CSceneViewport::InputProcessed, this, &CWorldEditor::UpdateStatusBar);
|
||||
connect(ui->MainViewport, &CSceneViewport::InputProcessed, this, &CWorldEditor::UpdateCursor);
|
||||
connect(ui->MainViewport, &CSceneViewport::GizmoMoved, this, &CWorldEditor::OnGizmoMoved);
|
||||
connect(ui->MainViewport, &CSceneViewport::CameraOrbit, this, &CWorldEditor::UpdateCameraOrbit);
|
||||
connect(this, &CWorldEditor::SelectionModified, this, &CWorldEditor::OnSelectionModified);
|
||||
connect(this, &CWorldEditor::SelectionTransformed, this, &CWorldEditor::UpdateCameraOrbit);
|
||||
connect(this, &CWorldEditor::PickModeEntered, this, &CWorldEditor::OnPickModeEnter);
|
||||
connect(this, &CWorldEditor::PickModeExited, this, &CWorldEditor::OnPickModeExit);
|
||||
connect(ui->TransformSpinBox, &WVectorEditor::ValueChanged, this, &CWorldEditor::OnTransformSpinBoxModified);
|
||||
connect(ui->TransformSpinBox, &WVectorEditor::EditingDone, this, &CWorldEditor::OnTransformSpinBoxEdited);
|
||||
connect(ui->CamSpeedSpinBox, &WDraggableSpinBox::valueChanged, this, &CWorldEditor::OnCameraSpeedChange);
|
||||
connect(&UndoStack(), &QUndoStack::indexChanged, this, &CWorldEditor::OnUndoStackIndexChanged);
|
||||
|
||||
connect(ui->ActionOpenProject, SIGNAL(triggered()), this, SLOT(OpenProject()));
|
||||
connect(ui->ActionSave, SIGNAL(triggered()) , this, SLOT(Save()));
|
||||
connect(ui->ActionSaveAndRepack, SIGNAL(triggered()), this, SLOT(SaveAndRepack()));
|
||||
connect(ui->ActionExportGame, SIGNAL(triggered()), this, SLOT(ExportGame()));
|
||||
connect(ui->ActionProjectSettings, SIGNAL(triggered()), this, SLOT(OpenProjectSettings()));
|
||||
connect(ui->ActionCloseProject, SIGNAL(triggered()), this, SLOT(CloseProject()));
|
||||
connect(ui->ActionExit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
connect(ui->ActionOpenProject, &QAction::triggered, this, &CWorldEditor::OpenProject);
|
||||
connect(ui->ActionSave, &QAction::triggered , this, &CWorldEditor::Save);
|
||||
connect(ui->ActionSaveAndRepack, &QAction::triggered, this, &CWorldEditor::SaveAndRepack);
|
||||
connect(ui->ActionExportGame, &QAction::triggered, this, &CWorldEditor::ExportGame);
|
||||
connect(ui->ActionProjectSettings, &QAction::triggered, this, &CWorldEditor::OpenProjectSettings);
|
||||
connect(ui->ActionCloseProject, &QAction::triggered, this, &CWorldEditor::CloseProject);
|
||||
connect(ui->ActionExit, &QAction::triggered, this, &CWorldEditor::close);
|
||||
|
||||
connect(ui->ActionCut, SIGNAL(triggered()), this, SLOT(Cut()));
|
||||
connect(ui->ActionCopy, SIGNAL(triggered()), this, SLOT(Copy()));
|
||||
connect(ui->ActionPaste, SIGNAL(triggered()), this, SLOT(Paste()));
|
||||
connect(ui->ActionDelete, SIGNAL(triggered()), this, SLOT(DeleteSelection()));
|
||||
connect(ui->ActionSelectAll, SIGNAL(triggered()), this, SLOT(SelectAllTriggered()));
|
||||
connect(ui->ActionInvertSelection, SIGNAL(triggered()), this, SLOT(InvertSelectionTriggered()));
|
||||
connect(ui->ActionLink, SIGNAL(toggled(bool)), this, SLOT(OnLinkButtonToggled(bool)));
|
||||
connect(ui->ActionUnlink, SIGNAL(triggered()), this, SLOT(OnUnlinkClicked()));
|
||||
connect(ui->ActionCut, &QAction::triggered, this, &CWorldEditor::Cut);
|
||||
connect(ui->ActionCopy, &QAction::triggered, this, &CWorldEditor::Copy);
|
||||
connect(ui->ActionPaste, &QAction::triggered, this, &CWorldEditor::Paste);
|
||||
connect(ui->ActionDelete, &QAction::triggered, this, &CWorldEditor::DeleteSelection);
|
||||
connect(ui->ActionSelectAll, &QAction::triggered, this, &CWorldEditor::SelectAllTriggered);
|
||||
connect(ui->ActionInvertSelection, &QAction::triggered, this, &CWorldEditor::InvertSelectionTriggered);
|
||||
connect(ui->ActionLink, &QAction::toggled, this, &CWorldEditor::OnLinkButtonToggled);
|
||||
connect(ui->ActionUnlink, &QAction::triggered, this, &CWorldEditor::OnUnlinkClicked);
|
||||
|
||||
connect(ui->ActionEditTweaks, SIGNAL(triggered()), mpTweakEditor, SLOT(show()));
|
||||
connect(ui->ActionEditLayers, SIGNAL(triggered()), this, SLOT(EditLayers()));
|
||||
connect(ui->ActionEditTweaks, &QAction::triggered, mpTweakEditor, &CWorldEditor::show);
|
||||
connect(ui->ActionEditLayers, &QAction::triggered, this, &CWorldEditor::EditLayers);
|
||||
if (gTemplatesWritable)
|
||||
connect(ui->ActionGeneratePropertyNames, SIGNAL(triggered()), mpGeneratePropertyNamesDialog, SLOT(show()));
|
||||
connect(ui->ActionGeneratePropertyNames, &QAction::triggered, mpGeneratePropertyNamesDialog, &CWorldEditor::show);
|
||||
else
|
||||
ui->ActionGeneratePropertyNames->setEnabled(false);
|
||||
|
||||
connect(ui->ActionDrawWorld, SIGNAL(triggered()), this, SLOT(ToggleDrawWorld()));
|
||||
connect(ui->ActionDrawObjects, SIGNAL(triggered()), this, SLOT(ToggleDrawObjects()));
|
||||
connect(ui->ActionDrawCollision, SIGNAL(triggered()), this, SLOT(ToggleDrawCollision()));
|
||||
connect(ui->ActionDrawObjectCollision, SIGNAL(triggered()), this, SLOT(ToggleDrawObjectCollision()));
|
||||
connect(ui->ActionDrawLights, SIGNAL(triggered()), this, SLOT(ToggleDrawLights()));
|
||||
connect(ui->ActionDrawSky, SIGNAL(triggered()), this, SLOT(ToggleDrawSky()));
|
||||
connect(ui->ActionGameMode, SIGNAL(triggered()), this, SLOT(ToggleGameMode()));
|
||||
connect(ui->ActionDisableAlpha, SIGNAL(triggered()), this, SLOT(ToggleDisableAlpha()));
|
||||
connect(ui->ActionNoLighting, SIGNAL(triggered()), this, SLOT(SetNoLighting()));
|
||||
connect(ui->ActionBasicLighting, SIGNAL(triggered()), this, SLOT(SetBasicLighting()));
|
||||
connect(ui->ActionWorldLighting, SIGNAL(triggered()), this, SLOT(SetWorldLighting()));
|
||||
connect(ui->ActionNoBloom, SIGNAL(triggered()), this, SLOT(SetNoBloom()));
|
||||
connect(ui->ActionBloomMaps, SIGNAL(triggered()), this, SLOT(SetBloomMaps()));
|
||||
connect(ui->ActionFakeBloom, SIGNAL(triggered()), this, SLOT(SetFakeBloom()));
|
||||
connect(ui->ActionBloom, SIGNAL(triggered()), this, SLOT(SetBloom()));
|
||||
connect(ui->ActionIncrementGizmo, SIGNAL(triggered()), this, SLOT(IncrementGizmo()));
|
||||
connect(ui->ActionDecrementGizmo, SIGNAL(triggered()), this, SLOT(DecrementGizmo()));
|
||||
connect(ui->ActionCollisionRenderSettings, SIGNAL(triggered()), mpCollisionDialog, SLOT(show()));
|
||||
connect(ui->ActionDrawWorld, &QAction::triggered, this, &CWorldEditor::ToggleDrawWorld);
|
||||
connect(ui->ActionDrawObjects, &QAction::triggered, this, &CWorldEditor::ToggleDrawObjects);
|
||||
connect(ui->ActionDrawCollision, &QAction::triggered, this, &CWorldEditor::ToggleDrawCollision);
|
||||
connect(ui->ActionDrawObjectCollision, &QAction::triggered, this, &CWorldEditor::ToggleDrawObjectCollision);
|
||||
connect(ui->ActionDrawLights, &QAction::triggered, this, &CWorldEditor::ToggleDrawLights);
|
||||
connect(ui->ActionDrawSky, &QAction::triggered, this, &CWorldEditor::ToggleDrawSky);
|
||||
connect(ui->ActionGameMode, &QAction::triggered, this, &CWorldEditor::ToggleGameMode);
|
||||
connect(ui->ActionDisableAlpha, &QAction::triggered, this, &CWorldEditor::ToggleDisableAlpha);
|
||||
connect(ui->ActionNoLighting, &QAction::triggered, this, &CWorldEditor::SetNoLighting);
|
||||
connect(ui->ActionBasicLighting, &QAction::triggered, this, &CWorldEditor::SetBasicLighting);
|
||||
connect(ui->ActionWorldLighting, &QAction::triggered, this, &CWorldEditor::SetWorldLighting);
|
||||
connect(ui->ActionNoBloom, &QAction::triggered, this, &CWorldEditor::SetNoBloom);
|
||||
connect(ui->ActionBloomMaps, &QAction::triggered, this, &CWorldEditor::SetBloomMaps);
|
||||
connect(ui->ActionFakeBloom, &QAction::triggered, this, &CWorldEditor::SetFakeBloom);
|
||||
connect(ui->ActionBloom, &QAction::triggered, this, &CWorldEditor::SetBloom);
|
||||
connect(ui->ActionIncrementGizmo, &QAction::triggered, this, &CWorldEditor::IncrementGizmo);
|
||||
connect(ui->ActionDecrementGizmo, &QAction::triggered, this, &CWorldEditor::DecrementGizmo);
|
||||
connect(ui->ActionCollisionRenderSettings, &QAction::triggered, mpCollisionDialog, &CWorldEditor::show);
|
||||
|
||||
connect(ui->ActionAbout, SIGNAL(triggered(bool)), this, SLOT(About()));
|
||||
connect(ui->ActionAbout, &QAction::triggered, this, &CWorldEditor::About);
|
||||
}
|
||||
|
||||
CWorldEditor::~CWorldEditor()
|
||||
@@ -1056,8 +1056,8 @@ void CWorldEditor::OnLinkButtonToggled(bool Enabled)
|
||||
if (Enabled)
|
||||
{
|
||||
EnterPickMode(ENodeType::Script, true, false, false);
|
||||
connect(this, SIGNAL(PickModeClick(SRayIntersection,QMouseEvent*)), this, SLOT(OnLinkClick(SRayIntersection)));
|
||||
connect(this, SIGNAL(PickModeExited()), this, SLOT(OnLinkEnd()));
|
||||
connect(this, &CWorldEditor::PickModeClick, this, &CWorldEditor::OnLinkClick);
|
||||
connect(this, &CWorldEditor::PickModeExited, this, &CWorldEditor::OnLinkEnd);
|
||||
mIsMakingLink = true;
|
||||
mpNewLinkSender = nullptr;
|
||||
mpNewLinkReceiver = nullptr;
|
||||
@@ -1088,8 +1088,8 @@ void CWorldEditor::OnLinkClick(const SRayIntersection& rkIntersect)
|
||||
|
||||
void CWorldEditor::OnLinkEnd()
|
||||
{
|
||||
disconnect(this, SIGNAL(PickModeClick(SRayIntersection,QMouseEvent*)), this, SLOT(OnLinkClick(SRayIntersection)));
|
||||
disconnect(this, SIGNAL(PickModeExited()), this, SLOT(OnLinkEnd()));
|
||||
disconnect(this, &CWorldEditor::PickModeClick, this, &CWorldEditor::OnLinkClick);
|
||||
disconnect(this, &CWorldEditor::PickModeExited, this, &CWorldEditor::OnLinkEnd);
|
||||
ui->ActionLink->setChecked(false);
|
||||
mIsMakingLink = false;
|
||||
mpNewLinkSender = nullptr;
|
||||
|
||||
@@ -112,9 +112,9 @@
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<property name="headerHidden">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
@@ -99,7 +99,7 @@ QVariant CWorldTreeModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
static const QIcon sAreaIcon = QIcon(QStringLiteral(":/icons/New_16px.svg"));
|
||||
|
||||
if (rkIndex.column() == 1)
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
else if (IndexIsWorld(rkIndex))
|
||||
return sWorldIcon;
|
||||
else
|
||||
@@ -144,7 +144,7 @@ QVariant CWorldTreeModel::data(const QModelIndex& rkIndex, int Role) const
|
||||
return Font;
|
||||
}
|
||||
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QVariant CWorldTreeModel::headerData(int Section, Qt::Orientation Orientation, int Role) const
|
||||
@@ -156,7 +156,7 @@ QVariant CWorldTreeModel::headerData(int Section, Qt::Orientation Orientation, i
|
||||
else
|
||||
return tr("Internal Name");
|
||||
}
|
||||
return QVariant::Invalid;
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool CWorldTreeModel::IndexIsWorld(const QModelIndex& rkIndex) const
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="headerHidden">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
Reference in New Issue
Block a user