Elaztek Developer Hub
Blamite Game Engine - Keystone  00386.06.16.23.0646.blamite
A library that enables the use of Qt in Blamite's editing tools.
drag_container.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QWidget>
4 #include <qlabel.h>
5 #include <qgraphicseffect.h>
6 #include <vector>
7 
8 #include "ui_drag_container.h"
9 
10 #include <HEKGuerilla/components/tags/fields/fields.h>
11 #include <Strings/components/classes/events/events.h>
12 
15 
19 class drag_list
20 {
21 public:
22  QBoxLayout* drag_layout = nullptr;
23 
30  void GenerateDropZones(bool clear_existing = true);
31 
37  void AddContentWidget(QWidget* widget);
38 
46  std::vector<QWidget*> GetContentWidgets();
47 };
48 
73 class grip_frame : public QFrame
74 {
75 private:
76  QImage grip_image;
77 
78 public:
79  grip_frame();
80 
81  void paintEvent(QPaintEvent* event) override;
82 };
83 
90 class drag_container : public QWidget, public BlamEventListener
91 {
92  Q_OBJECT
93 
94 private:
95  Ui::drag_container ui;
96 
100  bool enable_transparency_effects = false;
101 
106  float drag_transparency = 0.5;
107 
108  QPoint click_point = QPoint(0, 0);
109  drag_list* parent_list = nullptr;
110  grip_frame* frame_grip = nullptr;
111  drag_drop_zone* active_drop_zone_widget = nullptr;
112  float move_distance = 0.0f;
113  bool click_start = false;
114  bool dragging = false;
115 
116  std::string style_click = "";
117  std::string style_drag = "";
118 
119  bool focused = false;
120  std::string style_focused = "";
121  std::string style_unfocused = "";
122 
133  void GetDropInfo(int* insert_position, QLayoutItem** item);
134 
140  void UpdateStylesheet();
141 
142 public:
143  BlamPluginField* field_data = nullptr;
145  tag_designer* designer = nullptr;
146 
152  drag_container(drag_list* _parent_list, tag_designer* _designer);
153  ~drag_container();
154 
155  void mousePressEvent(QMouseEvent* mouse_event) override;
156  void mouseMoveEvent(QMouseEvent* event) override;
157  void mouseReleaseEvent(QMouseEvent* mouse_event) override;
158 
159  void OnEditorThemeChangeEvent(EditorThemeChangeEvent* event) override;
160 
166  void AddContentWidget(QWidget* widget);
167 
173  void SetIconVisiblity(bool icon_visible_state);
174 
181  void SetIcon(std::string group_id, std::string resource_id);
182 
194  void SetFocusState(bool focus_state, bool force_update = false);
195 
196 private slots:
197  void ItemTypeDropdownIndexChanged(int index);
198  void EditButtonClicked();
199 
200  void EditMenu_PropertiesClicked();
201  void EditMenu_Block_SetMaxEntriesClicked();
202  void EditMenu_Tagref_SetAllowedClassesClicked();
203  void EditMenu_Bitfield_EditFlagsClicked();
204  void EditMenu_Enum_EditOptionsClicked();
205 };
drag_list::GenerateDropZones
void GenerateDropZones(bool clear_existing=true)
Generates drop zones for the given drag list.
Definition: drag_list.cpp:5
editor_data.h
BlamEditorTheme::GetResource
std::string GetResource(std::string group_id, std::string id)
Retrieves a resource path from the theme.
Definition: BlamEditorTheme.cpp:158
tag_designer::UnfocusAllContainers
void UnfocusAllContainers()
Unfocuses all existing drag containers.
Definition: tag_designer.cpp:151
drag_container::designer
tag_designer * designer
The Tag Designer that this container exists within.
Definition: drag_container.h:145
StringListEditDialog.h
BitfieldFlagsEditorDialog::IsCancelled
bool IsCancelled()
Definition: BitfieldFlagsEditorDialog.cpp:111
drag_container::mousePressEvent
void mousePressEvent(QMouseEvent *mouse_event) override
Definition: drag_container.cpp:142
drag_drop_zone
Definition: drag_drop_zone.h:7
drag_container::~drag_container
~drag_container()
Definition: drag_container.cpp:137
drag_container
Class representing a draggable widget container.
Definition: drag_container.h:90
BitfieldFlagsEditorDialog.h
grip_frame::grip_frame
grip_frame()
Definition: grip_frame.cpp:6
themes.h
BlamEditorTagFieldControl
Interface used as a base for all tag field controls.
Definition: tag_fields.h:18
BlamEditorDocument.h
drag_container::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *event) override
Definition: drag_container.cpp:161
PluginFieldPropertiesDialog.h
PluginFieldPropertiesDialog
Definition: PluginFieldPropertiesDialog.h:8
BitfieldFlagsEditorDialog
Definition: BitfieldFlagsEditorDialog.h:10
drag_container.h
drag_list::GetContentWidgets
std::vector< QWidget * > GetContentWidgets()
Retrieves a list of all content widgets within the drag list.
Definition: drag_list.cpp:56
utils.h
BlamEditorDocumentType::TagDesigner
@ TagDesigner
Special document type used for the Tag Designer window.
drag_container::SetIconVisiblity
void SetIconVisiblity(bool icon_visible_state)
Sets whether or not the drag container's sidebar icon should be visible.
Definition: drag_container.cpp:347
drag_container::field_data
BlamPluginField * field_data
The plugin field that belongs to this container.
Definition: drag_container.h:143
drag_list::drag_layout
QBoxLayout * drag_layout
The layout container that holds all drag and drop widgets.
Definition: drag_container.h:22
BlamKeystone::Themes::GetActiveTheme
KEYSTONE BlamEditorTheme * GetActiveTheme()
Retrieves the currently selected theme.
Definition: themes.cpp:335
drag_container::drag_container
drag_container(drag_list *_parent_list, tag_designer *_designer)
Creates a new drag_container instance.
Definition: drag_container.cpp:27
drag_container::tag_field_control
BlamEditorTagFieldControl * tag_field_control
The tag field widget that belongs to this container.
Definition: drag_container.h:144
BlamKeystone::Utils::IsPointWithinGeometry
KEYSTONE bool IsPointWithinGeometry(QWidget *widget, QPoint point)
Definition: utils.cpp:309
grip_frame
Class used for the drag container's grip widget.
Definition: drag_container.h:73
drag_drop_zone::SetDropDisplayActive
void SetDropDisplayActive(bool active)
Definition: drag_drop_zone.cpp:24
drag_list
A basic interface class which can be used for drag and drop behaviors.
Definition: drag_container.h:19
drag_list::AddContentWidget
void AddContentWidget(QWidget *widget)
Adds a content item to the drag list.
Definition: drag_list.cpp:38
drag_drop_zone.h
drag_container::AddContentWidget
void AddContentWidget(QWidget *widget)
Adds a widget to this drag container.
Definition: drag_container.cpp:337
grip_frame::paintEvent
void paintEvent(QPaintEvent *event) override
Definition: grip_frame.cpp:22
BitfieldFlagsEditorDialog::GetNewOptions
std::vector< BlamEnumFieldOption > GetNewOptions()
Definition: BitfieldFlagsEditorDialog.cpp:139
drag_container::OnEditorThemeChangeEvent
void OnEditorThemeChangeEvent(EditorThemeChangeEvent *event) override
Definition: drag_container.cpp:270
BlamEditorTagFieldControl::SetupUI
virtual void SetupUI()
Configures the UI for the current field.
Definition: tag_fields.h:64
THEME_RESOURCE
#define THEME_RESOURCE(group_id, id)
Definition: themes.h:17
PluginFieldPropertiesDialog::IsCancelled
bool IsCancelled()
Definition: PluginFieldPropertiesDialog.cpp:32
drag_container::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *mouse_event) override
Definition: drag_container.cpp:190
BlamKeystone::Utils::SetGraphicsViewImage
KEYSTONE void SetGraphicsViewImage(QGraphicsView *graphics_view, std::string image_path, Qt::AspectRatioMode aspect_ratio_mode)
Applies an image to a graphics view, without the need for extra scene/pixmap management.
Definition: utils.cpp:221
tag_fields.h
tag_designer.h
drag_container::SetIcon
void SetIcon(std::string group_id, std::string resource_id)
Sets the drag container's sidebar icon.
Definition: drag_container.cpp:352
tag_designer
Class representing the Tag Designer.
Definition: tag_designer.h:24
drag_container::SetFocusState
void SetFocusState(bool focus_state, bool force_update=false)
Sets the drag container's focus state.
Definition: drag_container.cpp:312
BitfieldFlagsEditorDialog::GetNewFlags
std::vector< BlamBitfieldBitInfo > GetNewFlags()
Definition: BitfieldFlagsEditorDialog.cpp:116
BlamKeystone::EditorData::GetDocumentTypeConfiguration
KEYSTONE BlamConfigurationFile * GetDocumentTypeConfiguration(BlamEditorDocumentType type)
Attempts to locate the configuration file for the specified document type.
Definition: document_config.cpp:107