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/Standalone/Source/Driller/DrillerContext.h

106 lines
4.0 KiB
C++

/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#include <AzCore/Component/Component.h>
#include <AzCore/Math/Crc.h>
#include <AzCore/std/parallel/atomic.h>
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/UserSettings/UserSettings.h>
#include <AzToolsFramework/UI/LegacyFramework/Core/EditorFrameworkAPI.h>
#include "DrillerContextInterface.h"
#include "DrillerMainWindow.hxx"
#include <QStandardItem>
#pragma once
namespace Driller
{
//////////////////////////////////////////////////////////////////////////
// Context
// all editor components are responsible for maintaining the list of documents they are responsible for
// and setting up editing facilities on those asset types in that "space".
// editor contexts are components and have component ID's because we will communicate to them via buses.
// this is the data side of drilling.
// for example, data flow, discovery, that sort of thing.
class Context
: public AZ::Component
, private LegacyFramework::CoreMessageBus::Handler
, private ContextInterface::Handler
{
friend class ContextFactory;
public:
AZ_COMPONENT(Driller::Context, "{60EC92BD-1D96-4E37-AB46-DF89A5497617}")
Context();
virtual ~Context();
//////////////////////////////////////////////////////////////////////////
// AZ::Component
virtual void Init();
virtual void Activate();
virtual void Deactivate();
static void Reflect(AZ::ReflectContext* context);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// EditorFramework CoreMessages
virtual void OnRestoreState(); // sent when everything is registered up and ready to go, this is what bootstraps stuff to get going.
virtual bool OnGetPermissionToShutDown();
virtual bool CheckOkayToShutDown();
virtual void OnSaveState(); // sent to everything when the app is about to shut down - do what you need to do.
virtual void OnDestroyState();
virtual void ApplicationDeactivated();
virtual void ApplicationActivated();
virtual void ApplicationShow(AZ::Uuid id);
virtual void ApplicationHide(AZ::Uuid id);
virtual void ApplicationCensus();
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// EditorFramework::AssetManagementMessages
//virtual bool RawFileOpenRequested(const EditorFramework::RegisteredAssetType& registeredTypeID, const char *fullPathName);
//////////////////////////////////////////////////////////////////////////
virtual void ShowDrillerView();
//////////////////////////////////////////////////////////////////////////
// internal data structure for the class/member/property reference panel
// this is what we serialize and work with
DrillerMainWindow* m_pDrillerMainWindow;
private:
// utility
void ProvisionalShowAndFocus(bool forceShow = false, bool forceHide = false);
};
class ClassReferenceItem
: public QStandardItem
{
public:
AZ_CLASS_ALLOCATOR(ClassReferenceItem, AZ::SystemAllocator, 0);
ClassReferenceItem(const QIcon& icon, const QString& text, size_t id);
ClassReferenceItem(const QString& text, size_t id);
~ClassReferenceItem() {}
size_t GetTypeID() {return m_ID; }
protected:
size_t m_ID;
};
};