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
+
+