Skip to content

Commit

Permalink
Rename class and fix Qt's bug with border rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
MahBoiDeveloper committed Mar 7, 2025
1 parent b0daf22 commit a0a8021
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 109 deletions.
81 changes: 47 additions & 34 deletions src/GUI/HotkeysMainWindow.cpp → src/GUI/EditorWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@

#include "ImageManager.hpp"
#include "WindowManager.hpp"
#include "HotkeysMainWindow.hpp"
#include "SettingsWindow.hpp"
#include "EditorWindow.hpp"

HotkeysMainWindow::HotkeysMainWindow(QWidget* parent)
EditorWindow::EditorWindow(QWidget* parent)
: QMainWindow(parent)
, pFactionsButtonsGroup{new QButtonGroup{this}}
, pEntitiesTreeWidget{new QTreeWidget}
Expand All @@ -39,7 +40,7 @@ HotkeysMainWindow::HotkeysMainWindow(QWidget* parent)
// Set icon size
pEntitiesTreeWidget->setIconSize(QSize{PROGRAM_CONSTANTS->ICON_MIN_HEIGHT, PROGRAM_CONSTANTS->ICON_MIN_HEIGHT});

connect(pEntitiesTreeWidget, &QTreeWidget::itemSelectionChanged, this, &HotkeysMainWindow::SetHotkeysPanels);
connect(pEntitiesTreeWidget, &QTreeWidget::itemSelectionChanged, this, &EditorWindow::SetHotkeysPanels);

QBoxLayout* ltFactions = nullptr;
int factonsCount = factionVector.size();
Expand All @@ -64,7 +65,8 @@ HotkeysMainWindow::HotkeysMainWindow(QWidget* parent)
QPushButton* factionButton = new QPushButton{currFaction.GetDisplayName()};

auto shortName = currFaction.GetShortName();
if (PROGRAM_CONSTANTS->USA_SHORT_NAMES.contains(shortName)) ;
if (PROGRAM_CONSTANTS->USA_SHORT_NAMES.contains(shortName))
factionButton->setProperty("faction", "USA");

if (PROGRAM_CONSTANTS->PRC_SHORT_NAMES.contains(shortName))
factionButton->setProperty("faction", "PRC");
Expand Down Expand Up @@ -161,7 +163,7 @@ HotkeysMainWindow::HotkeysMainWindow(QWidget* parent)
if (firstFactionButton != nullptr) firstFactionButton->click();
}

void HotkeysMainWindow::ConfigureMenu()
void EditorWindow::ConfigureMenu()
{
QMenu* mnFileOptions = new QMenu(tr("File"));
QAction* actOpen = new QAction(tr("Open"));
Expand All @@ -174,9 +176,9 @@ void HotkeysMainWindow::ConfigureMenu()
mnFileOptions->addAction(actSpecial);
menuBar()->addMenu(mnFileOptions);

connect(actOpen, &QAction::triggered, this, &HotkeysMainWindow::ActOpen_Triggered);
connect(actSave, &QAction::triggered, this, &HotkeysMainWindow::ActSave_Triggered);
connect(actSaveAs, &QAction::triggered, this, &HotkeysMainWindow::ActSaveAs_Triggered);
connect(actOpen, &QAction::triggered, this, &EditorWindow::ActOpen_Triggered);
connect(actSave, &QAction::triggered, this, &EditorWindow::ActSave_Triggered);
connect(actSaveAs, &QAction::triggered, this, &EditorWindow::ActSaveAs_Triggered);

QMenu* mnViewOptions = new QMenu(tr("View"));
QMenu* mnStatusBarChecbox = new QMenu(tr("Status Bar"));
Expand All @@ -186,15 +188,15 @@ void HotkeysMainWindow::ConfigureMenu()
menuBar()->addMenu(mnViewOptions);

QAction* actSettings = new QAction(tr("Settings"));
connect(actSettings, &QAction::triggered, this, &HotkeysMainWindow::ActLanguage_Triggered);
connect(actSettings, &QAction::triggered, this, &EditorWindow::ActSettings_Triggered);
menuBar()->addAction(actSettings);

QAction* actAbout = new QAction(tr("About"));
connect(actAbout, &QAction::triggered, this, &HotkeysMainWindow::ActAbout_Triggered);
connect(actAbout, &QAction::triggered, this, &EditorWindow::ActAbout_Triggered);
menuBar()->addAction(actAbout);
}

void HotkeysMainWindow::SetGameObjectList(const QString& factionShortName)
void EditorWindow::SetGameObjectList(const QString& factionShortName)
{
pEntitiesTreeWidget->clear();

Expand Down Expand Up @@ -247,7 +249,7 @@ void HotkeysMainWindow::SetGameObjectList(const QString& factionShortName)
pEntitiesTreeWidget->setCurrentItem(firstEntity);
}

void HotkeysMainWindow::SetHotkeysPanels()
void EditorWindow::SetHotkeysPanels()
{
// Skip if there are no selected items
if (pEntitiesTreeWidget->selectedItems().isEmpty()) return;
Expand Down Expand Up @@ -329,12 +331,12 @@ void HotkeysMainWindow::SetHotkeysPanels()
pHotkeysPanelsWidget->setMinimumSize(pHotkeysPanelsWidget->sizeHint());
pHotkeysArea->setWidget(pHotkeysPanelsWidget);

connect(pHotkeysPanelsWidget, &QTabWidget::currentChanged, this, &HotkeysMainWindow::KeyboardWindow_Update);
connect(pHotkeysPanelsWidget, &QTabWidget::currentChanged, this, &EditorWindow::KeyboardWindow_Update);

emit pHotkeysPanelsWidget->currentChanged(0);
}

void HotkeysMainWindow::HighlightCurrentKeys()
void EditorWindow::HighlightCurrentKeys()
{
// Skip if no widgets
if (vHotkeyWidgets.isEmpty()) return;
Expand All @@ -360,7 +362,7 @@ void HotkeysMainWindow::HighlightCurrentKeys()
}
}

void HotkeysMainWindow::KeyboardWindow_Nullify()
void EditorWindow::KeyboardWindow_Nullify()
{
for (QChar& qc : QString("QWERTYUIOPASDFGHJKLZXCVBNM"))
{
Expand All @@ -372,7 +374,7 @@ void HotkeysMainWindow::KeyboardWindow_Nullify()
}
}

void HotkeysMainWindow::KeyboardWindow_Update(int id)
void EditorWindow::KeyboardWindow_Update(int id)
{
KeyboardWindow_Nullify();
auto currTab = pHotkeysPanelsWidget->findChild<QWidget*>(QString("Layout ") + QString::number(id + 1), Qt::FindChildrenRecursively);
Expand Down Expand Up @@ -400,13 +402,13 @@ void HotkeysMainWindow::KeyboardWindow_Update(int id)
}
}

void HotkeysMainWindow::SetFactions()
void EditorWindow::SetFactions()
{
for(const auto& elem : TECH_TREE_SOURCE.Query("$.TechTree").toArray())
factionVector.push_back(Faction{elem.toObject()});
}

const Faction& HotkeysMainWindow::GetFactionRef(const QString& name)
const Faction& EditorWindow::GetFactionRef(const QString& name)
{
int tmp = 0;

Expand All @@ -424,7 +426,7 @@ const Faction& HotkeysMainWindow::GetFactionRef(const QString& name)
return factionVector.at(tmp);
}

void HotkeysMainWindow::SetActionHotkey(const QString& fctShortName, const QString& goName, const QString& actName, const QString& hk)
void EditorWindow::SetActionHotkey(const QString& fctShortName, const QString& goName, const QString& actName, const QString& hk)
{
for(Faction& fct : factionVector)
{
Expand All @@ -436,7 +438,7 @@ void HotkeysMainWindow::SetActionHotkey(const QString& fctShortName, const QStri
}
}

void HotkeysMainWindow::ActAbout_Triggered()
void EditorWindow::ActAbout_Triggered()
{
// if dialog already exists
if (pAboutDialog != nullptr)
Expand Down Expand Up @@ -480,33 +482,44 @@ void HotkeysMainWindow::ActAbout_Triggered()
ltMainBlock->addLayout(lblContent);

pAboutDialog->setLayout(ltMainBlock);
pAboutDialog->setWindowModality(Qt::WindowModality::ApplicationModal);
pAboutDialog->show();
pAboutDialog->raise();
pAboutDialog->activateWindow();

connect(pAboutDialog, &QDialog::finished, this, [this]()
{
pAboutDialog->deleteLater();
pAboutDialog = nullptr;
});
}

void HotkeysMainWindow::ActLanguage_Triggered()
void EditorWindow::ActSettings_Triggered()
{
if (pSettingsWindow != nullptr)
if (pSettingsWindow == nullptr)
{
pSettingsWindow->show();
return;
// Read this thread:
// https://forum.qt.io/topic/146107/can-t-show-the-border-of-the-class-inheriting-qwidget-class
// to understand why QWidget's inherited class has been wrapped into another native QWidget

auto sw = new SettingsWindow();
auto lt = new QVBoxLayout();
lt->addWidget(sw);

pSettingsWindow = new QWidget();
pSettingsWindow->setObjectName(nameof(pSettingsWindow));
pSettingsWindow->setWindowTitle(tr("Settings"));
pSettingsWindow->setFixedSize(PROGRAM_CONSTANTS->SET_UP_WINDOW_SIZE);
pSettingsWindow->setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
pSettingsWindow->setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint
& ~Qt::WindowMinimizeButtonHint);
pSettingsWindow->setWindowModality(Qt::WindowModality::ApplicationModal);
pSettingsWindow->setLayout(lt);
}

pSettingsWindow = new SettingsWindow();
pSettingsWindow->setObjectName(nameof(pSettingsWindow));
pSettingsWindow->setWindowTitle(tr("Settings"));
pSettingsWindow->setWindowModality(Qt::WindowModality::ApplicationModal);
pSettingsWindow->show();
}

QHBoxLayout* HotkeysMainWindow::CreateKeysOnKeyboard(const QString& str)
QHBoxLayout* EditorWindow::CreateKeysOnKeyboard(const QString& str)
{
QHBoxLayout* pKeys = new QHBoxLayout();
for (const auto& ch : str)
Expand All @@ -520,17 +533,17 @@ QHBoxLayout* HotkeysMainWindow::CreateKeysOnKeyboard(const QString& str)
return pKeys;
}

void HotkeysMainWindow::ActSave_Triggered()
void EditorWindow::ActSave_Triggered()
{
LOGMSG("Saving changes to .csf file...");
CSF_PARSER->Save();
LOGMSG("Changes has been saved");
}

void HotkeysMainWindow::ActSaveAs_Triggered()
void EditorWindow::ActSaveAs_Triggered()
{
}

void HotkeysMainWindow::ActOpen_Triggered()
void EditorWindow::ActOpen_Triggered()
{
}
15 changes: 7 additions & 8 deletions src/GUI/HotkeysMainWindow.hpp → src/GUI/EditorWindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@
#include <QHBoxLayout>

#include "../Parsers/JSONFile.hpp"
#include "SettingsWindow.hpp"
#include "ActionHotkeyWidget.hpp"
#include "Faction.hpp"

class HotkeysMainWindow final : public QMainWindow
class EditorWindow final : public QMainWindow
{
Q_OBJECT

Expand All @@ -28,19 +27,19 @@ class HotkeysMainWindow final : public QMainWindow
QScrollArea* pKeyboardWindow = nullptr;

// Renewable widgets
QTabWidget* pHotkeysPanelsWidget = nullptr;
QDialog* pAboutDialog = nullptr;
SettingsWindow* pSettingsWindow = nullptr;
QTabWidget* pHotkeysPanelsWidget = nullptr;
QDialog* pAboutDialog = nullptr;
QWidget* pSettingsWindow = nullptr;

QVector<QSet<ActionHotkeyWidget*>> vHotkeyWidgets;

public: // Methods
HotkeysMainWindow(QWidget* parent = nullptr);
EditorWindow(QWidget* parent = nullptr);

private:
/// @brief Read data from TechTree.json and parse it to game objects.
void SetFactions();
/// @brief Return faction from HotkeysMainWindow::factionVector vector.
/// @brief Return faction from EditorWindow::factionVector vector.
const Faction& GetFactionRef(const QString& name);
/// @brief Set context menu bar functions and logics.
void ConfigureMenu();
Expand All @@ -62,7 +61,7 @@ class HotkeysMainWindow final : public QMainWindow
private slots:
void KeyboardWindow_Update(int id = 0);
void ActAbout_Triggered();
void ActLanguage_Triggered();
void ActSettings_Triggered();
void ActSave_Triggered();
void ActSaveAs_Triggered();
void ActOpen_Triggered();
Expand Down
2 changes: 1 addition & 1 deletion src/GUI/SetUpWindowsWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
SetUpWindowsWrapper::SetUpWindowsWrapper(QWidget* parent) : QStackedWidget(parent)
{
// Makes window unresizeable and equal to the size of the background
setFixedSize(795, 440);
setFixedSize(PROGRAM_CONSTANTS->SET_UP_WINDOW_SIZE);
setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint &
~Qt::WindowMinimizeButtonHint);
Expand Down
27 changes: 14 additions & 13 deletions src/GUI/Theme/Styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -104,21 +104,21 @@ QPushButton#btnOk
padding-left: 10px;
}

/* Start widget style setting */
LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow
/* Start widgets and SettingsWindow style settings */
LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, QWidget#pSettingsWindow
{
border-image: url(Resources/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch;
background-color: black;
}

/* Main editor window style settings */
HotkeysMainWindow
EditorWindow
{
border-image: url(Resources/Theme/EditorBackground.webp) 0 0 0 0 stretch stretch;
background-color: black;
}

HotkeysMainWindow QPushButton
EditorWindow QPushButton
{
font-family: Calibri;
font-weight: bold;
Expand All @@ -133,11 +133,9 @@ HotkeysMainWindow QPushButton
border-radius: 3px;
}

HotkeysMainWindow QPushButton:hover { background-color: #3543e7; color: #baff0c; }
HotkeysMainWindow QPushButton:pressed { background-color: #3543e7; color: white; }
HotkeysMainWindow QPushButton:pressed:hover { background-color: #3543e7; color: #baff0c; }

/* QPushButton[faction="USA"] */ /* Already defined as basic non-property */
EditorWindow QPushButton:hover { background-color: #3543e7; color: #baff0c; }
EditorWindow QPushButton:pressed { background-color: #3543e7; color: white; }
EditorWindow QPushButton:pressed:hover { background-color: #3543e7; color: #baff0c; }

QPushButton[faction="GLA"] { background-color: #185a22; border-color: #b1ffbf; }
QPushButton[faction="GLA"]:pressed { background-color: #427b32; /*color: black;*/ }
Expand All @@ -149,14 +147,17 @@ QPushButton[faction="PRC"]:hover { background-color: #e74135; color: #ba
QPushButton[faction="PRC"]:pressed { background-color: #e74135; color: white; }
QPushButton[faction="PRC"]:pressed:hover { background-color: #e74135; color: #baff0c; }

HotkeysMainWindow QTreeWidget, HotkeysMainWindow QTabWidget, HotkeysMainWindow QScrollArea
/* QPushButton[faction="USA"] already defined as basic non-property */
/* If you want to change -- copy and edit styles down below */

EditorWindow QTreeWidget, EditorWindow QTabWidget, EditorWindow QScrollArea
{
background: rgba(0, 0, 0, 0.7);
border-radius: 3px;
border-width: 1px;
border-style: outset;
border-color: white;

color: white;
}

Expand Down Expand Up @@ -210,7 +211,7 @@ QTabBar::tab:selected
border-right-width: 1px;
border-right-style: outset;
border-right-color: white;

background: #3543e7;
}

Expand Down Expand Up @@ -256,7 +257,7 @@ QDialog QLabel#left { margin: 0px 0px 0px 60px; }
QDialog QLabel#right { margin: 30px 40px 30px 0px; }

/* Maybe will be useful in future */
/* HotkeysMainWindow QMenu
/* EditorWindow QMenu
{
background: rgba(0, 0, 0, 0);
color: white;
Expand Down
Loading

0 comments on commit a0a8021

Please sign in to comment.