diff --git a/assets/icons/editor/delete.png b/assets/icons/editor-dark/actions/48/delete.png similarity index 100% rename from assets/icons/editor/delete.png rename to assets/icons/editor-dark/actions/48/delete.png diff --git a/assets/icons/editor/drag.png b/assets/icons/editor-dark/actions/48/drag.png similarity index 100% rename from assets/icons/editor/drag.png rename to assets/icons/editor-dark/actions/48/drag.png diff --git a/assets/icons/editor/new.png b/assets/icons/editor-dark/actions/48/new.png similarity index 100% rename from assets/icons/editor/new.png rename to assets/icons/editor-dark/actions/48/new.png diff --git a/assets/icons/editor/open.png b/assets/icons/editor-dark/actions/48/open.png similarity index 100% rename from assets/icons/editor/open.png rename to assets/icons/editor-dark/actions/48/open.png diff --git a/assets/icons/editor/save.png b/assets/icons/editor-dark/actions/48/save.png similarity index 100% rename from assets/icons/editor/save.png rename to assets/icons/editor-dark/actions/48/save.png diff --git a/assets/icons/editor/snap05.png b/assets/icons/editor-dark/actions/48/snap05.png similarity index 100% rename from assets/icons/editor/snap05.png rename to assets/icons/editor-dark/actions/48/snap05.png diff --git a/assets/icons/editor/snap1.png b/assets/icons/editor-dark/actions/48/snap1.png similarity index 100% rename from assets/icons/editor/snap1.png rename to assets/icons/editor-dark/actions/48/snap1.png diff --git a/assets/icons/editor/snapoff.png b/assets/icons/editor-dark/actions/48/snapoff.png similarity index 100% rename from assets/icons/editor/snapoff.png rename to assets/icons/editor-dark/actions/48/snapoff.png diff --git a/assets/icons/editor-dark/actions/48/surface-glue.png b/assets/icons/editor-dark/actions/48/surface-glue.png new file mode 100644 index 0000000..1816199 Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-glue.png differ diff --git a/assets/icons/editor-dark/actions/48/surface-inlets.png b/assets/icons/editor-dark/actions/48/surface-inlets.png new file mode 100644 index 0000000..f104a81 Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-inlets.png differ diff --git a/assets/icons/editor-dark/actions/48/surface-smooth.png b/assets/icons/editor-dark/actions/48/surface-smooth.png new file mode 100644 index 0000000..1cc151d Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-smooth.png differ diff --git a/assets/icons/editor-dark/actions/48/surface-studs.png b/assets/icons/editor-dark/actions/48/surface-studs.png new file mode 100644 index 0000000..ff50f64 Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-studs.png differ diff --git a/assets/icons/editor-dark/actions/48/surface-universal.png b/assets/icons/editor-dark/actions/48/surface-universal.png new file mode 100644 index 0000000..2ffab08 Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-universal.png differ diff --git a/assets/icons/editor-dark/actions/48/surface-weld.png b/assets/icons/editor-dark/actions/48/surface-weld.png new file mode 100644 index 0000000..63d7cfb Binary files /dev/null and b/assets/icons/editor-dark/actions/48/surface-weld.png differ diff --git a/assets/icons/editor-dark/index.theme b/assets/icons/editor-dark/index.theme new file mode 100644 index 0000000..57ec3e6 --- /dev/null +++ b/assets/icons/editor-dark/index.theme @@ -0,0 +1,8 @@ +[Icon Theme] +Name=editor-dark +Comment=icon theme (dark) + +[actions/48] +Size=48 +Context=Actions +Type=Fixed diff --git a/assets/icons/editor/actions/48/delete.png b/assets/icons/editor/actions/48/delete.png new file mode 100644 index 0000000..08f2493 Binary files /dev/null and b/assets/icons/editor/actions/48/delete.png differ diff --git a/assets/icons/editor/actions/48/drag.png b/assets/icons/editor/actions/48/drag.png new file mode 100644 index 0000000..532f532 Binary files /dev/null and b/assets/icons/editor/actions/48/drag.png differ diff --git a/assets/icons/editor/actions/48/new.png b/assets/icons/editor/actions/48/new.png new file mode 100644 index 0000000..8b8b1ca Binary files /dev/null and b/assets/icons/editor/actions/48/new.png differ diff --git a/assets/icons/editor/actions/48/open.png b/assets/icons/editor/actions/48/open.png new file mode 100644 index 0000000..1ef6e11 Binary files /dev/null and b/assets/icons/editor/actions/48/open.png differ diff --git a/assets/icons/editor/actions/48/save.png b/assets/icons/editor/actions/48/save.png new file mode 100644 index 0000000..caea546 Binary files /dev/null and b/assets/icons/editor/actions/48/save.png differ diff --git a/assets/icons/editor/actions/48/snap05.png b/assets/icons/editor/actions/48/snap05.png new file mode 100644 index 0000000..17e732b Binary files /dev/null and b/assets/icons/editor/actions/48/snap05.png differ diff --git a/assets/icons/editor/actions/48/snap1.png b/assets/icons/editor/actions/48/snap1.png new file mode 100644 index 0000000..d96eba1 Binary files /dev/null and b/assets/icons/editor/actions/48/snap1.png differ diff --git a/assets/icons/editor/actions/48/snapoff.png b/assets/icons/editor/actions/48/snapoff.png new file mode 100644 index 0000000..374ddfe Binary files /dev/null and b/assets/icons/editor/actions/48/snapoff.png differ diff --git a/assets/icons/editor/actions/48/surface-glue.png b/assets/icons/editor/actions/48/surface-glue.png new file mode 100644 index 0000000..de9b08a Binary files /dev/null and b/assets/icons/editor/actions/48/surface-glue.png differ diff --git a/assets/icons/editor/actions/48/surface-inlets.png b/assets/icons/editor/actions/48/surface-inlets.png new file mode 100644 index 0000000..1c6ab4e Binary files /dev/null and b/assets/icons/editor/actions/48/surface-inlets.png differ diff --git a/assets/icons/editor/actions/48/surface-smooth.png b/assets/icons/editor/actions/48/surface-smooth.png new file mode 100644 index 0000000..0089f69 Binary files /dev/null and b/assets/icons/editor/actions/48/surface-smooth.png differ diff --git a/assets/icons/editor/actions/48/surface-studs.png b/assets/icons/editor/actions/48/surface-studs.png new file mode 100644 index 0000000..32ff2ed Binary files /dev/null and b/assets/icons/editor/actions/48/surface-studs.png differ diff --git a/assets/icons/editor/actions/48/surface-universal.png b/assets/icons/editor/actions/48/surface-universal.png new file mode 100644 index 0000000..f45a248 Binary files /dev/null and b/assets/icons/editor/actions/48/surface-universal.png differ diff --git a/assets/icons/editor/actions/48/surface-weld.png b/assets/icons/editor/actions/48/surface-weld.png new file mode 100644 index 0000000..f52ca49 Binary files /dev/null and b/assets/icons/editor/actions/48/surface-weld.png differ diff --git a/assets/icons/editor/index.theme b/assets/icons/editor/index.theme new file mode 100644 index 0000000..de0a031 --- /dev/null +++ b/assets/icons/editor/index.theme @@ -0,0 +1,8 @@ +[Icon Theme] +Name=editor +Comment=icon theme + +[actions/48] +Size=48 +Context=Actions +Type=Fixed diff --git a/assets/src/glue.svg b/assets/src/glue.svg new file mode 100644 index 0000000..1d28cb6 --- /dev/null +++ b/assets/src/glue.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/src/inlets.svg b/assets/src/inlets.svg new file mode 100644 index 0000000..0fcf518 --- /dev/null +++ b/assets/src/inlets.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/src/smooth.svg b/assets/src/smooth.svg new file mode 100644 index 0000000..e4faded --- /dev/null +++ b/assets/src/smooth.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/src/studs.svg b/assets/src/studs.svg new file mode 100644 index 0000000..10af373 --- /dev/null +++ b/assets/src/studs.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/src/universal.svg b/assets/src/universal.svg new file mode 100644 index 0000000..49440dc --- /dev/null +++ b/assets/src/universal.svg @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/src/weld.svg b/assets/src/weld.svg new file mode 100644 index 0000000..99e70d5 --- /dev/null +++ b/assets/src/weld.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/editor/mainwindow.cpp b/editor/mainwindow.cpp index a020f25..9befed7 100644 --- a/editor/mainwindow.cpp +++ b/editor/mainwindow.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include #include #include +#include #include "common.h" #include "editorcommon.h" @@ -45,6 +47,19 @@ bool simulationPlaying = false; bool worldSpaceTransforms = false; +inline bool isDarkMode() { +#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + const auto scheme = QGuiApplication::styleHints()->colorScheme(); + return scheme == Qt::ColorScheme::Dark; +#else + const QPalette defaultPalette; + const auto text = defaultPalette.color(QPalette::WindowText); + const auto window = defaultPalette.color(QPalette::Window); + return text.lightness() > window.lightness(); +#endif // QT_VERSION +} + + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) @@ -55,6 +70,14 @@ MainWindow::MainWindow(QWidget *parent) timer.start(33, this); setMouseTracking(true); + // https://stackoverflow.com/a/78854851/16255372 + QIcon::setThemeSearchPaths(QIcon::themeSearchPaths() + QStringList { "./assets/icons" }); + if (isDarkMode()) + QIcon::setFallbackThemeName("editor-dark"); + else + QIcon::setFallbackThemeName("editor"); + + setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); diff --git a/editor/mainwindow.ui b/editor/mainwindow.ui index 5c4d6de..e0a9e78 100644 --- a/editor/mainwindow.ui +++ b/editor/mainwindow.ui @@ -40,7 +40,7 @@ 0 0 - 1027 + 1612 30 @@ -99,46 +99,6 @@ - - - - 0 - 0 - - - - toolBar - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - - - - - - Output @@ -158,6 +118,95 @@ + + + toolBar + + + TopToolBarArea + + + false + + + + + + + + toolBar_2 + + + TopToolBarArea + + + false + + + + + + + + + + toolBar_3 + + + TopToolBarArea + + + false + + + + + + + + + + toolBar_4 + + + TopToolBarArea + + + false + + + + + + + + toolBar_5 + + + TopToolBarArea + + + false + + + + + + toolBar_6 + + + TopToolBarArea + + + false + + + + + + + + @@ -300,8 +349,7 @@ true - - assets/icons/editor/snap1.pngassets/icons/editor/snap1.png + 1-Stud Snapping @@ -318,8 +366,7 @@ true - - assets/icons/editor/snap05.pngassets/icons/editor/snap05.png + 1/2-Stud Snapping @@ -336,8 +383,7 @@ true - - assets/icons/editor/snapoff.pngassets/icons/editor/snapoff.png + No Grid Snapping @@ -495,6 +541,90 @@ QAction::MenuRole::NoRole + + + + + + Studs + + + Studs + + + QAction::MenuRole::NoRole + + + + + + + + Inlets + + + Inlets + + + QAction::MenuRole::NoRole + + + + + + + + Universal + + + Universal + + + QAction::MenuRole::NoRole + + + + + + + + Smooth + + + Smooth + + + QAction::MenuRole::NoRole + + + + + + + + Weld + + + Weld + + + QAction::MenuRole::NoRole + + + + + + + + Glue + + + Glue + + + QAction::MenuRole::NoRole + +