This is a prototype for a Data Definition, Declaration, and Management tool intended for game development. C++ and QT, will support C++ Plugins to extend functionality, and will have Python support for scripting over data.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

186 lines
5.3 KiB

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "assetlist.h"
#include <QAbstractButton>
#include <QApplication>
#include <QBitmap>
#include <QComboBox>
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QJsonDocument>
#include <QJsonObject>
#include <QTextStream>
void MainWindow::EnableThemeDark()
{
ui->actionToggleDark->setIcon(QIcon(":/icons/data/icons/alexandru.stoica/sun_star [#1268].svg"));
//QFile file(":/css/data/css/style.qss");
//QFile file(":/css/data/css/DarkMonokai.qss");
QFile file(":/css/data/css/darkorange.qss");
//QFile file(":/css/data/css/darkstyle.qss");
//QFile file(":/css/data/css/QTDark.qss");
//QFile file(":/dark.qss");
file.open(QFile::ReadOnly | QFile::Text);
QTextStream stream(&file);
qApp->setStyleSheet(stream.readAll());
auto& children = this->children();
for( auto& child : children ) {
QAction* action = qobject_cast<QAction*>(child);
QAbstractButton* button = qobject_cast<QAbstractButton*>(child);
if( action ) {
auto icon = action->icon();
auto pixmap = icon.pixmap(icon.actualSize(QSize(32,32)));
const auto& mask = pixmap.createMaskFromColor(QColor("transparent"), Qt::MaskInColor);
pixmap.fill(QColor("white"));
pixmap.setMask(mask);
action->setIcon(QIcon(pixmap));
} else if( button ) {
auto icon = button->icon();
auto pixmap = icon.pixmap(icon.actualSize(QSize(32,32)));
const auto& mask = pixmap.createMaskFromColor(QColor("transparent"), Qt::MaskInColor);
pixmap.fill(QColor("white"));
pixmap.setMask(mask);
button->setIcon(QIcon(pixmap));
}
}
//this->setWindowState(Qt::WindowMaximized);
}
void MainWindow::EnableThemeLight()
{
ui->actionToggleDark->setIcon(QIcon(":/icons/data/icons/alexandru.stoica/moon [#1248].svg"));
qApp->setStyleSheet("");
//QFile file(":/light.qss");
//file.open(QFile::ReadOnly | QFile::Text);
//QTextStream stream(&file);
//qApp->setStyleSheet(stream.readAll());
auto& children = this->children();
for( auto& child : children )
{
QAction* action = qobject_cast<QAction*>(child);
if( action )
{
auto icon = action->icon();
auto pixmap = icon.pixmap(icon.actualSize(QSize(32,32)));
const auto& mask = pixmap.createMaskFromColor(QColor("transparent"), Qt::MaskInColor);
pixmap.fill(QColor("black"));
pixmap.setMask(mask);
action->setIcon(QIcon(pixmap));
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::SetupDefineList()
{
}
void MainWindow::SetupDeclareList()
{
}
void MainWindow::LoadDefines( const QJsonDocument& document )
{
const QJsonValue& value = document.object()["defines"];
if( value.isArray()) {
} else {
}
}
void MainWindow::LoadDeclarations( const QJsonDocument& document )
{
const QJsonValue& value = document.object()["declarations"];
if( value.isArray()) {
} else {
}
}
void MainWindow::LoadConfigFile( const QString& configPath )
{
// If no initial config should run through a setup process.
// configPath should be stored in a project location, so shouldn't be created into a user specific directory.
QFileInfo fileInfo( configPath );
QFile file( configPath );
if( /*file.exists()*/ fileInfo.exists() && fileInfo.isFile() ) {
file.open(QFile::ReadOnly);
QJsonDocument document(QJsonDocument::fromJson(file.readAll()));
//QJsonObject object = document.object();
LoadDefines( document );
LoadDeclarations( document );
} else {
}
}
void MainWindow::SaveConfigFile( const QJsonDocument& jsonDocument, const QString& configPath )
{
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*connect( comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index){
ui->stackedWidget_2->setCurrentIndex(index);
});
const int currentIndex = 0;
comboBox->setCurrentIndex(currentIndex);
ui->stackedWidget_2->setCurrentIndex(currentIndex);*/
/*const auto pOutputDock = new OutputDock();
pOutputDock->setMinimumHeight(50);
this->addDockWidget(Qt::BottomDockWidgetArea, pOutputDock->GetDock());
pOutputDock->setMinimumHeight(0);*/
//const QDir& dir = QDir::current();
const QString& path = QCoreApplication::applicationDirPath();
if( path.length() ) {
}
LoadConfigFile("bin/projectName.json");
const auto pDefineList = new AssetList();
pDefineList->setMinimumWidth(150);
this->addDockWidget(Qt::LeftDockWidgetArea, pDefineList);
pDefineList->setMinimumHeight(0);
pDefineList->setWindowTitle("Define");
const auto pDeclareList = new AssetList();
pDeclareList->setMinimumWidth(150);
this->addDockWidget(Qt::LeftDockWidgetArea, pDeclareList);
pDeclareList->setMinimumHeight(0);
pDeclareList->setWindowTitle("Declare");
QMainWindow::tabifyDockWidget(pDefineList, pDeclareList);
connect( ui->actionToggleDark, &QAction::triggered, [=](bool checked){
if( checked ) {
EnableThemeDark();
} else {
EnableThemeLight();
}
});
}