You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Tools/LuaIDE/Source/LUA/LUAEditorSettingsDialog.cpp

127 lines
3.8 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include <AzCore/Script/ScriptAsset.h>
#include <AzFramework/StringFunc/StringFunc.h>
#include <AzCore/Component/TickBus.h>
#include <AzCore/UserSettings/UserSettingsComponent.h>
#include <QtWidgets/QVBoxLayout>
#include <AzCore/Component/ComponentApplicationBus.h>
#include <AzCore/RTTI/TypeInfo.h>
#include <AzToolsFramework/UI/LegacyFramework/Core/EditorFrameworkAPI.h>
#include "LUAEditorSettingsDialog.hxx"
#include "LUAEditorMainWindow.hxx"
#include "LUAEditorContextMessages.h"
#include "LUAEditorBlockState.h"
#include <Source/LUA/ui_LUAEditorSettingsDialog.h>
namespace
{
}
namespace LUAEditor
{
extern AZ::Uuid ContextID;
LUAEditorSettingsDialog::LUAEditorSettingsDialog(QWidget* parent)
: QDialog(parent)
{
m_gui = azcreate(Ui::LUAEditorSettingsDialog, ());
m_gui->setupUi(this);
AZ::SerializeContext* context = nullptr;
{
EBUS_EVENT_RESULT(context, AZ::ComponentApplicationBus, GetSerializeContext);
AZ_Assert(context, "We should have a valid context!");
}
AZStd::intrusive_ptr<SyntaxStyleSettings> syntaxStyleSettings = AZ::UserSettings::CreateFind<SyntaxStyleSettings>(AZ_CRC("LUA Editor Text Settings", 0xb6e15565), AZ::UserSettings::CT_GLOBAL);
// Store a copy to revert if needed.
m_originalSettings = *syntaxStyleSettings;
m_gui->propertyEditor->Setup(context, nullptr, true, 420);
m_gui->propertyEditor->AddInstance(syntaxStyleSettings.get(), syntaxStyleSettings->RTTI_GetType());
m_gui->propertyEditor->setObjectName("m_gui->propertyEditor");
m_gui->propertyEditor->setMinimumHeight(500);
m_gui->propertyEditor->setMaximumHeight(1000);
m_gui->propertyEditor->SetSavedStateKey(AZ_CRC("LuaIDE_SyntaxStyleSettings"));
setModal(false);
m_gui->propertyEditor->InvalidateAll();
m_gui->propertyEditor->ExpandAll();
m_gui->propertyEditor->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(m_gui->propertyEditor);
layout->addWidget(m_gui->cancelButton);
layout->addWidget(m_gui->saveButton);
layout->addWidget(m_gui->saveCloseButton);
setLayout(layout);
}
void LUAEditorSettingsDialog::OnSave()
{
EBUS_EVENT(AZ::UserSettingsComponentRequestBus, Save);
EBUS_EVENT(LUAEditorMainWindowMessages::Bus, Repaint);
}
void LUAEditorSettingsDialog::OnSaveClose()
{
OnSave();
close();
}
void LUAEditorSettingsDialog::OnCancel()
{
AZStd::intrusive_ptr<SyntaxStyleSettings> syntaxStyleSettings = AZ::UserSettings::CreateFind<SyntaxStyleSettings>(AZ_CRC("LUA Editor Text Settings", 0xb6e15565), AZ::UserSettings::CT_GLOBAL);
// Revert the stored copy, no changes will be stored.
*syntaxStyleSettings = m_originalSettings;
EBUS_EVENT(LUAEditorMainWindowMessages::Bus, Repaint);
close();
}
LUAEditorSettingsDialog::~LUAEditorSettingsDialog()
{
m_gui->propertyEditor->ClearInstances();
azdestroy(m_gui);
}
void LUAEditorSettingsDialog::keyPressEvent(QKeyEvent* event)
{
if (event->key() == Qt::Key_Escape)
{
OnCancel();
return;
}
else
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
{
OnSaveClose();
return;
}
}
}//namespace LUAEditor
#include <Source/LUA/moc_LUAEditorSettingsDialog.cpp>