commit a9c7952f5cfc440db0df3cc5dd4d16a394de533a Author: 2ndbeam <2ndbeam@disroot.org> Date: Fri Jun 27 14:11:44 2025 +0300 Basic classes and window layout diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa3808c --- /dev/null +++ b/.gitignore @@ -0,0 +1,82 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* +*.qbs.user* +CMakeLists.txt.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + +# Directories with generated files +.moc/ +.obj/ +.pch/ +.rcc/ +.uic/ +/build*/ diff --git a/LinesGridEditor.pro b/LinesGridEditor.pro new file mode 100644 index 0000000..ce9a9ac --- /dev/null +++ b/LinesGridEditor.pro @@ -0,0 +1,28 @@ +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + gridpreview.cpp \ + line.cpp \ + main.cpp \ + mainwindow.cpp + +HEADERS += \ + gridpreview.h \ + line.h \ + mainwindow.h + +FORMS += \ + mainwindow.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/gridpreview.cpp b/gridpreview.cpp new file mode 100644 index 0000000..1227fe6 --- /dev/null +++ b/gridpreview.cpp @@ -0,0 +1,34 @@ +#include "gridpreview.h" + +GridPreview::GridPreview(QWidget *parent) + : QWidget{parent} +{} + +void GridPreview::setSize(int newWidth, int newHeight) +{ + width = newWidth; + height = newHeight; +} + +void GridPreview::addLine(Line &line) +{ + lines.push_back(line); +} + +void GridPreview::removeLine(int index) +{ + lines.removeAt(index); +} + +QString GridPreview::toLuaTable() +{ + QString output(tableTemplate.arg(width).arg(height)); + QString linesSubTable = ""; + for(auto iter = lines.begin(); iter != lines.end(); iter++ ) + { + linesSubTable += QString(" %1,\n").arg(iter->toLuaTable()); + } + linesSubTable.removeLast(); // \n + linesSubTable.removeLast(); // , + return output.arg(linesSubTable); +} diff --git a/gridpreview.h b/gridpreview.h new file mode 100644 index 0000000..0a1e92f --- /dev/null +++ b/gridpreview.h @@ -0,0 +1,23 @@ +#ifndef GRIDPREVIEW_H +#define GRIDPREVIEW_H + +#include +#include "line.h" + +class GridPreview : public QWidget +{ + Q_OBJECT +public: + explicit GridPreview(QWidget *parent = nullptr); + void setSize(int newWidth, int newHeight); + void addLine(Line &line); + void removeLine(int index); + QString toLuaTable(); +private: + int width = 5, height = 5; + QVector lines {}; + const QString tableTemplate = "return {\n width = %1,\n height = %2,\n lines = {\n%3\n }\n}"; +signals: +}; + +#endif // GRIDPREVIEW_H diff --git a/line.cpp b/line.cpp new file mode 100644 index 0000000..c62eda2 --- /dev/null +++ b/line.cpp @@ -0,0 +1,50 @@ +#include "line.h" + +Line::Line() {} + +void Line::setStartPoint(int x, int y) +{ + startX = x; + startY = y; +} + +void Line::setEndPoint(int x, int y) +{ + endX = x; + endY = y; +} + +void Line::setColor(QString newColor) +{ + color = newColor; +} + +int Line::getStartX() +{ + return startX; +} + +int Line::getStartY() +{ + return startY; +} + +int Line::getEndX() +{ + return endX; +} + +int Line::getEndY() +{ + return endY; +} + +QString Line::getColor() +{ + return color; +} + +QString Line::toLuaTable() +{ + return QString("{ %1, %2, %3, %4, \"%5\" }").arg(startX).arg(startY).arg(endX).arg(endY).arg(color); +} diff --git a/line.h b/line.h new file mode 100644 index 0000000..23ee306 --- /dev/null +++ b/line.h @@ -0,0 +1,24 @@ +#ifndef LINE_H +#define LINE_H + +#include + +class Line +{ +public: + Line(); + void setStartPoint(int x, int y); + void setEndPoint(int x, int y); + void setColor(QString color); + int getStartX(); + int getStartY(); + int getEndX(); + int getEndY(); + QString getColor(); + QString toLuaTable(); +private: + int startX, startY, endX, endY; + QString color; +}; + +#endif // LINE_H diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..fd3e533 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..2740a6e --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,14 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..f7a3da3 --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,23 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +}; +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..df7308c --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,417 @@ + + + MainWindow + + + + 0 + 0 + 1280 + 720 + + + + + 800 + 600 + + + + + MesloLGS Nerd Font + 12 + + + + MainWindow + + + + + + + + + + + false + + + QDockWidget::DockWidgetFeature::DockWidgetMovable + + + Qt::DockWidgetArea::AllDockWidgetAreas + + + Output Preview + + + 1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + 2 + + + 0 + + + + 6 + + + 6 + + + 6 + + + 6 + + + 6 + + + + + + + + + + Save + + + + + + + Clear + + + + + + + + + + + + + + QDockWidget::DockWidgetFeature::DockWidgetMovable + + + Editor + + + 2 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + 2 + + + + + + + + + + 1 + + + + + + + Color: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + + 0 + 0 + + + + Grid W: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + 1 + + + 99 + + + + + + + 1 + + + + + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + 2 + + + + + + + + 0 + 0 + + + + Y: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + End point X: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + 2 + + + + + + + + + + + 0 + 0 + + + + Y: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + + 0 + 0 + + + + H: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + Start point X: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + 0 + + + -1 + + + + + + + 1 + + + + + + + + 0 + 0 + + + + Current Line + + + Qt::AlignmentFlag::AlignBottom|Qt::AlignmentFlag::AlignHCenter + + + + + + + + 0 + 0 + + + + + MesloLGS Nerd Font + 12 + + + + Grid + + + Qt::AlignmentFlag::AlignBottom|Qt::AlignmentFlag::AlignHCenter + + + + + + + + + + + + + + 0 + 0 + + + + Line Selector + + + Qt::AlignmentFlag::AlignBottom|Qt::AlignmentFlag::AlignHCenter + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + GridPreview + QWidget +
gridpreview.h
+ 1 +
+
+ + +