Elaztek Developer Hub
Blamite Game Engine - Keystone  00390.07.02.23.1947.blamite
A library that enables the use of Qt in Blamite's editing tools.
block.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QWidget>
4 #include <vector>
5 #include <HEKGuerilla/components/tags/fields/block/block.h>
6 
9 #include "ui_block.h"
10 
18 {
19  Q_OBJECT
20 
21 private:
22  Ui::ui_tag_block ui;
23  BlamTagField_Block* field = nullptr;
24  BlamPluginField_Block* template_field = nullptr;
25  bool is_template = false;
26 
27  int active_entry_index = -1;
28  bool collapsed = true;
29 
30  std::vector<BlamEditorTagFieldControl*> fields_ui;
31  bool ui_ready = false;
32 
33  int designer_next_item_id = 0;
34 
35  void ClearEntryUI();
36  void GenerateEntryUI(int index);
37  void SetCollapsed(bool _collapsed);
38 
39 public:
40  ui_tag_block_field(BlamTagField_Block* _field, BlamEditorDocument_Tag* _document, QWidget *parent = Q_NULLPTR);
41  ui_tag_block_field(BlamPluginField_Block* _template, BlamEditorDocument_Tag* _document, QWidget* parent = Q_NULLPTR);
43 
44  bool eventFilter(QObject* object, QEvent* event) override;
45 
46  void SetDesignModeActive(drag_list* _drag_list, tag_designer* _designer) override;
47  void SetDesignNameEditState(bool edit_state, bool save_changes = true) override;
48 
50 
51  void UnfocusAllContainers();
52 
53  void SetupUI() override;
54 
55 private slots:
56  void EntryChanged(int new_index);
57 
58  void btn_add_Click();
59  void btn_duplicate_Click();
60  void btn_insert_Click();
61  void btn_delete_Click();
62  void btn_delete_all_Click();
63  void btn_rename_Click();
64  void btn_expand_collapse_Click();
65  void LabelEditEnterPressed();
66 };
drag_list::GenerateDropZones
void GenerateDropZones(bool clear_existing=true)
Generates drop zones for the given drag list.
Definition: drag_list.cpp:5
block.h
BlamEditorDocument_Tag
Class representing a Tag document.
Definition: tag.h:15
BlamEditorDocument_Tag::show_invisibles
bool show_invisibles
Whether or not to show invisible (hidden) fields in the editor.
Definition: tag.h:20
ui_tag_block_field::eventFilter
bool eventFilter(QObject *object, QEvent *event) override
Definition: block.cpp:281
drag_container
Class representing a draggable widget container.
Definition: drag_container.h:90
BlamEditorDocumentWidget::document
BlamEditorDocument * document
The document associated with this widget.
Definition: BlamEditorDocument.h:171
BlamKeystone::UI::TagFields::GenerateFieldTemplateControl
KEYSTONE BlamEditorTagFieldControl * GenerateFieldTemplateControl(BlamPluginField *field, BlamEditorDocument_Tag *document)
Generates a UI control for a given plugin field.
Definition: tag_fields.cpp:84
ui_comment_field
A comment field control.
Definition: comment.h:15
ui_tag_block_field::RebuildDesignModeFieldList
void RebuildDesignModeFieldList()
Definition: block.cpp:387
BlamEditorTagFieldControl::document
BlamEditorDocument_Tag * document
The document this field belongs to.
Definition: tag_fields.h:24
BlamEditorTagFieldControl
Interface used as a base for all tag field controls.
Definition: tag_fields.h:18
ui_tag_block_field::SetupUI
void SetupUI() override
Configures the UI for the current field.
Definition: block.cpp:482
BlamEditorDocument::FlagAsModified
virtual void FlagAsModified(bool new_modified_state=true)
Flags the document as being modified.
Definition: BlamEditorDocument.cpp:75
ui_tag_block_field::ui_tag_block_field
ui_tag_block_field(BlamTagField_Block *_field, BlamEditorDocument_Tag *_document, QWidget *parent=Q_NULLPTR)
Definition: block.cpp:13
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
drag_container::field_data
BlamPluginField * field_data
The plugin field that belongs to this container.
Definition: drag_container.h:145
ui_tag_block_field
A tag block control.
Definition: block.h:17
drag_list::drag_layout
QBoxLayout * drag_layout
The layout container that holds all drag and drop widgets.
Definition: drag_container.h:22
drag_container::tag_field_control
BlamEditorTagFieldControl * tag_field_control
The tag field widget that belongs to this container.
Definition: drag_container.h:146
BlamEditorTagFieldControl::drag_drop_list
drag_list * drag_drop_list
The active drag list that owns this control. Only used when design_mode is enabled.
Definition: tag_fields.h:26
comment.h
drag_list
A basic interface class which can be used for drag and drop behaviors.
Definition: drag_container.h:19
tag_designer::GeneratePluginFieldControl
void GeneratePluginFieldControl(drag_list *destination_drag_list, BlamPluginField *plugin_field)
Creates a new plugin field control and adds it to a drag list.
Definition: tag_designer.cpp:204
BlamEditorTagFieldControl::design_mode
bool design_mode
Whether or not this field is currently in design mode.
Definition: tag_fields.h:25
tag.h
ui_tag_block_field::SetDesignNameEditState
void SetDesignNameEditState(bool edit_state, bool save_changes=true) override
Enables or disables the label edit field for the current field.
Definition: block.cpp:346
ui_tag_block_field::UnfocusAllContainers
void UnfocusAllContainers()
Definition: block.cpp:451
tag_fields.h
ui_tag_block_field::~ui_tag_block_field
~ui_tag_block_field()
Definition: block.cpp:50
ui_tag_block_field::SetDesignModeActive
void SetDesignModeActive(drag_list *_drag_list, tag_designer *_designer) override
Instructs the field to be editable as a designer field.
Definition: block.cpp:301
BlamEditorTagFieldControl::designer
tag_designer * designer
The active tag designer that owns this control. Only used when design_mode is enabled.
Definition: tag_fields.h:27
tag_designer.h
BlamKeystone::UI::TagFields::GenerateFieldControl
KEYSTONE BlamEditorTagFieldControl * GenerateFieldControl(BlamTagField *field, BlamEditorDocument_Tag *document)
Generates a UI control for a given field.
Definition: tag_fields.cpp:19
tag_designer
Class representing the Tag Designer.
Definition: tag_designer.h:24
BlamEditorDocument_Tag::show_unused_fields
bool show_unused_fields
Whether or not to show unused fields in the editor.
Definition: tag.h:21
drag_container::SetFocusState
void SetFocusState(bool focus_state, bool force_update=false)
Sets the drag container's focus state.
Definition: drag_container.cpp:315