Elaztek Developer Hub
Blamite Game Engine - Keystone  00411.04.21.24.0017.blamite
A library that enables the use of Qt in Blamite's editing tools.
BlamEditorWindow.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <HEKGuerilla/components/tags/tags.h>
6 #include <Strings/components/settings/config/config.h>
7 #include <qmainwindow.h>
8 
13 
14 #ifndef KEYSTONE
15 #define KEYSTONE
16 #endif
17 
22 {
23  MDI,
24  Tabs
25 };
26 
34 {
35  Tool,
36  Sapien,
37  Guerilla,
38  Foundry,
40 };
41 
48 class BlamEditorWindow : public QMainWindow
49 {
50 private:
51 
56 
57  void OnTabCloseRequested(int index);
58 
59 public:
60 
62 
64  QTabWidget* tab_area = nullptr;
65 
66  std::vector<BlamEditorToolWindow*> open_tool_windows = std::vector<BlamEditorToolWindow*>();
67  std::vector<BlamEditorDocument*> open_documents = std::vector<BlamEditorDocument*>();
68 
69  BlamConfigurationFile* config = nullptr;
70 
77 
81  void SetupWindow();
82 
89 
95  virtual void OnThemeChange(BlamEditorTheme* new_theme);
96 
103  bool OpenDocument(std::string file_path, BlamTagTreeNode* tree_node, BlamEditorDocumentType doctype);
104 
110  void OpenDocument(BlamEditorDocument* document);
111 
117  void CloseDocument(int index);
118 
124  void CloseDocument(BlamEditorDocument* document);
125 
129  void CloseAllDocuments();
130 
134  void SaveAllDocuments();
135 
145  bool OpenToolWindow(BlamEditorToolWindowType tool_type, Qt::DockWidgetArea position);
146 
156 
163 
167  void CloseAllToolWindows();
168 
176 
185 
195 
200 
207  void UpdateDefaultIcon();
208 
216  std::string GetApplicationTitle();
217 };
BlamEditorToolWindow
Base class for all editor tool windows.
Definition: BlamEditorToolWindow.h:37
BlamEditorDocument_Tag
Class representing a Tag document.
Definition: tag.h:15
BlamEditorDocument_GameWindow
Class representing a Game Window "document".
Definition: game_window.h:18
editor_data.h
BlamEditorDocument::parent_window
BlamEditorWindow * parent_window
The parent window that owns this document.
Definition: BlamEditorDocument.h:48
BlamEditorWindow::GetActiveDocument
BlamEditorDocument * GetActiveDocument()
Get the current active document.
Definition: BlamEditorWindow.cpp:382
BlamEditorDocument_TagDesigner
Class representing a Tag Designer "document".
Definition: tag_designer.h:18
BlamEditorDocumentType::GameWindow
@ GameWindow
Special document type used for the Game Viewport window.
SkinnableMdiArea.h
BlamEditorWindowType::Tool
@ Tool
The editor window is the GUI for Tool (see tool_gui_window).
BlamEditorWindowType
BlamEditorWindowType
Enumerator used to identify the type of the main editor window.
Definition: BlamEditorWindow.h:33
BlamWorkspaceLayoutType::Tabs
@ Tabs
Sub-windows will be organized using tabs, similar to more modern editing tools.
BlamEditorToolWindow.h
BlamEditorWindow::workspace_type
BlamWorkspaceLayoutType workspace_type
The layout type the window is currently using.
Definition: BlamEditorWindow.h:61
BlamEditorToolWindow::OnToolOpen
virtual void OnToolOpen()
Called when the tool window is being opened.
Definition: BlamEditorToolWindow.h:89
QSourceHighlite::QSourceHighliterTheme::theme
QHash< QSourceHighliter::Token, QTextCharFormat > theme(QSourceHighliter::Themes)
Definition: qsourcehighliterthemes.cpp:63
BlamEditorWindow::GetEditorWindowType
BlamEditorWindowType GetEditorWindowType()
Retrieves the type of the editor window.
Definition: BlamEditorWindow.cpp:121
BlamEditorWindowType::Sapien
@ Sapien
The editor window is the main window for Sapien (see #sapien_main_window).
BlamEditorDocumentWidget::document
BlamEditorDocument * document
The document associated with this widget.
Definition: BlamEditorDocument.h:172
BlamEditorWindow::GetApplicationTitle
std::string GetApplicationTitle()
Retrieves the application title of this Editor Window.
Definition: BlamEditorWindow.cpp:445
BlamEditorWindow::open_documents
std::vector< BlamEditorDocument * > open_documents
The list of open documents.
Definition: BlamEditorWindow.h:67
BlamEditorDocumentType
BlamEditorDocumentType
Enumerator containing all possible editor document types.
Definition: BlamEditorDocument.h:23
themes.h
BlamEditorWindow::SetupWindow
void SetupWindow()
Prepares the main window layout.
Definition: BlamEditorWindow.cpp:23
BlamEditorWindow::BlamEditorWindow
BlamEditorWindow(BlamEditorWindowType window_type)
Constructs a new editor window.
Definition: BlamEditorWindow.cpp:18
BlamEditorTheme
Class representing a Blamite Editor Theme.
Definition: themes.h:45
BlamEditorDocument.h
BlamEditorWindowType::Guerilla
@ Guerilla
The editor window is the main window for Guerilla (see guerilla_window).
SkinnableMdiArea
Wrapper class around a QMdiArea, made to simplify skinning.
Definition: SkinnableMdiArea.h:20
explorer_bar.h
BlamWorkspaceLayoutType
BlamWorkspaceLayoutType
Enumerator used to specify the workspace layout method that an application should use.
Definition: BlamEditorWindow.h:21
BlamEditorDocumentType::TagDesigner
@ TagDesigner
Special document type used for the Tag Designer window.
BlamEditorWindow.h
BlamEditorDocumentType::Tag
@ Tag
Indicates the document represents a tag file.
BlamEditorToolWindowType
BlamEditorToolWindowType
Enumerator containing all possible editor tool window types.
Definition: BlamEditorToolWindow.h:21
BlamKeystone::EditorData::GetToolWindow
KEYSTONE BlamEditorToolWindow * GetToolWindow(BlamEditorToolWindowType type)
Retrieves a desired tool window.
Definition: editor_data.cpp:37
BlamEditorWindow::CloseToolWindow
void CloseToolWindow(BlamEditorToolWindowType tool_type)
Closes the specified tool window.
Definition: BlamEditorWindow.cpp:314
BlamKeystone::Themes::GetActiveTheme
KEYSTONE BlamEditorTheme * GetActiveTheme()
Retrieves the currently selected theme.
Definition: themes.cpp:335
BlamEditorWindow::UpdateDefaultIcon
void UpdateDefaultIcon()
Updates the default icon for the window (and all child MDI subwindows).
Definition: BlamEditorWindow.cpp:411
BlamEditorWindow::config
BlamConfigurationFile * config
The configuration file for this editor window.
Definition: BlamEditorWindow.h:69
BlamWorkspaceLayoutType::MDI
@ MDI
Sub-windows will be organized using MDI (Multiple Document Interface).
BlamEditorDocumentWidget
Class acting as a simple interface to allow for easy retrieval of the active document.
Definition: BlamEditorDocument.h:169
BlamEditorWindow::IsToolWindowOpen
bool IsToolWindowOpen(BlamEditorToolWindowType tool_type)
Checks if a given tool window type is open.
Definition: BlamEditorWindow.cpp:356
BlamEditorWindow::OpenToolWindow
bool OpenToolWindow(BlamEditorToolWindowType tool_type, Qt::DockWidgetArea position)
Opens the specified tool window within the main window.
Definition: BlamEditorWindow.cpp:274
BlamEditorToolWindow::GetDockWidgetArea
Qt::DockWidgetArea GetDockWidgetArea()
Retrieves the current dock widget area of the window.
Definition: BlamEditorToolWindow.cpp:117
tag_designer.h
BlamEditorWindow::open_tool_windows
std::vector< BlamEditorToolWindow * > open_tool_windows
The list of open tool windows.
Definition: BlamEditorWindow.h:66
BlamKeystone::Themes::GetTheme
KEYSTONE BlamEditorTheme * GetTheme(std::string name)
Retrieves a theme.
Definition: themes.cpp:320
BlamEditorWindow::OnThemeChange
virtual void OnThemeChange(BlamEditorTheme *new_theme)
Called when the active theme is changed.
Definition: BlamEditorWindow.cpp:126
BlamEditorDocument
Interface class that any types of editor documents inherit from.
Definition: BlamEditorDocument.h:38
BlamEditorWindow::CloseAllDocuments
void CloseAllDocuments()
Closes all open documents.
Definition: BlamEditorWindow.cpp:255
BlamEditorWindow::tab_area
QTabWidget * tab_area
The tab widget used for documents. Only set when using Tab layout.
Definition: BlamEditorWindow.h:64
BlamEditorWindow::mdi_area
SkinnableMdiArea * mdi_area
The MDI area used for documents. Only set when using MDI layout.
Definition: BlamEditorWindow.h:63
BlamEditorDocument::Show
void Show()
Shows the document within the parent window.
Definition: BlamEditorDocument.cpp:23
BlamEditorDocument::loaded
bool loaded
Whether or not the document was able to be successfully loaded.
Definition: BlamEditorDocument.h:52
BlamEditorWindow
Interface class that all main editing tool windows inherit from.
Definition: BlamEditorWindow.h:48
BlamEditorDocumentType::Unspecified
@ Unspecified
Indicates the document type is unspecified or invalid.
BlamEditorWindow::CloseAllToolWindows
void CloseAllToolWindows()
Closes all tool windows.
Definition: BlamEditorWindow.cpp:333
tag.h
BlamEditorWindow::ToggleToolWindow
void ToggleToolWindow(BlamEditorToolWindowType tool_type)
Toggles the specified tool window.
Definition: BlamEditorWindow.cpp:344
file.h
BlamEditorWindow::SaveAllDocuments
void SaveAllDocuments()
Attempts to save all open documents.
Definition: BlamEditorWindow.cpp:266
BlamEditorDocument::Close
virtual bool Close()
Closes the document and releases any resources being used by it.
Definition: BlamEditorDocument.cpp:178
BlamEditorWindow::OpenDocument
bool OpenDocument(std::string file_path, BlamTagTreeNode *tree_node, BlamEditorDocumentType doctype)
Attempts to open the specified document in the main window.
Definition: BlamEditorWindow.cpp:131
BlamEditorDocument_File
Class representing a File document.
Definition: file.h:14
BlamEditorWindow::CloseDocument
void CloseDocument(int index)
Attempts to close the specified document.
Definition: BlamEditorWindow.cpp:242
BlamEditorWindowType::Foundry
@ Foundry
The editor window is the main window for Foundry (see foundry_main_window).
BlamEditorWindow::GetToolWindow
BlamEditorToolWindow * GetToolWindow(BlamEditorToolWindowType tool_type)
Retrieves a specific tool window.
Definition: BlamEditorWindow.cpp:369
BlamEditorToolWindow::OnToolClose
virtual void OnToolClose()
Called when the tool window is being closed.
Definition: BlamEditorToolWindow.h:94
BlamEditorDocumentType::File
@ File
Indicates the document represents a generic file.
output.h
tag_designer
Class representing the Tag Designer.
Definition: tag_designer.h:24
game_window.h
BlamEditorWindowType::Unspecified
@ Unspecified
Indicates that the editor window type is unknown. This should never happen.
BlamKeystone::EditorData::GetDocumentTypeConfiguration
KEYSTONE BlamConfigurationFile * GetDocumentTypeConfiguration(BlamEditorDocumentType type)
Attempts to locate the configuration file for the specified document type.
Definition: document_config.cpp:107