From 2da058c7f28bbcb5c9135978e6178704e5c4162b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 10 Nov 2019 11:00:55 +0100 Subject: [PATCH] HackStudio: Use the GWidget class registry to populate the toolbar This will allow HackStudio to learn about new GWidget types without having to do anything in HackStudio :^) --- Base/res/icons/widgets/GButton.png | Bin 0 -> 266 bytes Base/res/icons/widgets/GCheckBox.png | Bin 0 -> 184 bytes Base/res/icons/widgets/GGroupBox.png | Bin 0 -> 177 bytes Base/res/icons/widgets/GLabel.png | Bin 0 -> 162 bytes Base/res/icons/widgets/GProgressBar.png | Bin 0 -> 186 bytes Base/res/icons/widgets/GRadioButton.png | Bin 0 -> 5391 bytes Base/res/icons/widgets/GScrollBar.png | Bin 0 -> 239 bytes Base/res/icons/widgets/GSlider.png | Bin 0 -> 177 bytes Base/res/icons/widgets/GSpinBox.png | Bin 0 -> 261 bytes Base/res/icons/widgets/GTextBox.png | Bin 0 -> 243 bytes DevTools/HackStudio/main.cpp | 13 ++++++++++--- 11 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 Base/res/icons/widgets/GButton.png create mode 100644 Base/res/icons/widgets/GCheckBox.png create mode 100644 Base/res/icons/widgets/GGroupBox.png create mode 100644 Base/res/icons/widgets/GLabel.png create mode 100644 Base/res/icons/widgets/GProgressBar.png create mode 100644 Base/res/icons/widgets/GRadioButton.png create mode 100644 Base/res/icons/widgets/GScrollBar.png create mode 100644 Base/res/icons/widgets/GSlider.png create mode 100644 Base/res/icons/widgets/GSpinBox.png create mode 100644 Base/res/icons/widgets/GTextBox.png diff --git a/Base/res/icons/widgets/GButton.png b/Base/res/icons/widgets/GButton.png new file mode 100644 index 0000000000000000000000000000000000000000..7d735c8e73240774b869b62f50a26f2b0534bbfd GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mE_%8+hIkx*8g`KPumX>b z`5!A5;S%<+hX5WL4Rq_=D#lMwO5#)-0SUe zh9|9V>O0|lE%k*J#mk}t_gi1Hwvr2|$coN6DZ2AokKwkjR>@};wXW&4yvaFX>$FKL zuT{m~|6Xuz>g+5(C#9&A7*n-v9y?qVxTnlk-*1|D*?;Lvn;@^Z#fx7*-NSu>H=HHv W!18|=85tND7(8A5T-G@yGywqGpln|N literal 0 HcmV?d00001 diff --git a/Base/res/icons/widgets/GCheckBox.png b/Base/res/icons/widgets/GCheckBox.png new file mode 100644 index 0000000000000000000000000000000000000000..192972a22ca0df7c7e21f5e8762eef94530a69ed GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3m>OEZ?Lp+YZo#M@RK!L;M zU`77(v{xrzoLVByYHyl(C`Y!^qRU0^dTwDpW5XE{FHJ$?^4CW%J`3vNWODfGa&|&- zSof8vQ2&T?b7r!6&Sf-h=&0e23fxgBWt{QNZkprT-?B3-ca?{1-Z=Bw3U+HQrUa>D nYxnz!-Fkjk{BhCWVE&1-)YR)OF7q)kFfe$!`njxgN@xNAZDK^? literal 0 HcmV?d00001 diff --git a/Base/res/icons/widgets/GGroupBox.png b/Base/res/icons/widgets/GGroupBox.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8dd643bdfec64bb3ef8704df427097f4abd198 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mDm+~rLp+YZo$`?DfC5L$ z-W%2F{_pBo%};i)HP4WDNqf4qMd{?r8MF89<*8V>%FRqe!(++sgU@ZZhA}ogT(&Ao z{ltlk4%ROgGP`*$_ryI~)zENp>86NV8F9;MzOD|^XbpOyu<*2XRJPIUQ@d@droG>> hzWMy@;!ojuyw)xvn^n@5FfcGMc)I$ztaD0e0swxoNZkMc literal 0 HcmV?d00001 diff --git a/Base/res/icons/widgets/GLabel.png b/Base/res/icons/widgets/GLabel.png new file mode 100644 index 0000000000000000000000000000000000000000..b6eb3a49f68ad426fd9f0465a23c6dc8f4f95301 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mGCf@!Lp+YZz3Rwyz<|Rg z@awaVKOb+=d1NFZ_hN#}9jm>co~~)VxBlOf>38>OBuniVWS=C!b&{h|V3CtV zpmMk1uEi=ZSH|iec6sHtuwQ RgMop8!PC{xWt~$(695v#KcoNv literal 0 HcmV?d00001 diff --git a/Base/res/icons/widgets/GProgressBar.png b/Base/res/icons/widgets/GProgressBar.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c5e10a45afbc1bce19af87c6d43c2e0eaf6e0e GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3m8a-VcLp+WrCrGd^P7n#; zl9*`8%gg(pbH)GeBWcH$Z`ikQUgN}xf_Zk_yPBBU`2ybjYHMTTF%-+;`YJa!<-wze zX%8Mf1>wX8ZI=p*zZ(fBUp&~%Zg^zI3sLvQViS2IIy?%>fJy3=E#GelF{r5}E)!Hb+|k literal 0 HcmV?d00001 diff --git a/Base/res/icons/widgets/GRadioButton.png b/Base/res/icons/widgets/GRadioButton.png new file mode 100644 index 0000000000000000000000000000000000000000..c694b06afafc2684d82acc8dcf3d86f1e9a69181 GIT binary patch literal 5391 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 uIwbLYoakFY~GEgvQadNVLEFnGH9xvX z!k3GDm=m-Dj^syPZ{L_|5G|aQU&tXT>V*#m{q2CNvan(mom&vP`%?W$>QfI8ULi6dG=hD-Av5P)*5ymnzic>IdKRCuCQM&-eb7l zbIFvO+jo`(X2bysH0^C+Ic!0=q= z-u-Cny^59r&ewG2Zrzr#ZRYBz6XNSMN z%RF=Z^HOysr4GY?-)BGA{dT@IYhvQV9{q!!snV}z=-V(bFfe$!`njxgN@xNAWT$7a literal 0 HcmV?d00001 diff --git a/DevTools/HackStudio/main.cpp b/DevTools/HackStudio/main.cpp index e867f13dd1..cf8df9a7d6 100644 --- a/DevTools/HackStudio/main.cpp +++ b/DevTools/HackStudio/main.cpp @@ -127,9 +127,16 @@ int main(int argc, char** argv) auto form_widgets_toolbar = GToolBar::construct(Orientation::Vertical, 26, g_form_inner_container); form_widgets_toolbar->set_preferred_size(38, 0); - form_widgets_toolbar->add_action(GAction::create("GLabel", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/label.png"), [&](auto&) {})); - form_widgets_toolbar->add_action(GAction::create("GButton", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/button.png"), [&](auto&) {})); - form_widgets_toolbar->add_action(GAction::create("GSpinBox", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/spinbox.png"), [&](auto&) {})); + form_widgets_toolbar->add_action(GAction::create("Cursor", GraphicsBitmap::load_from_file("/res/cursors/arrow.png"), [&](auto&) { + })); + + GWidgetClassRegistration::for_each([&](const GWidgetClassRegistration& reg) { + auto icon_path = String::format("/res/icons/widgets/%s.png", reg.class_name().characters()); + auto action = GAction::create(reg.class_name(), GraphicsBitmap::load_from_file(icon_path), [&](auto&) { + + }); + form_widgets_toolbar->add_action(move(action)); + }); auto form_editor_inner_splitter = GSplitter::construct(Orientation::Horizontal, g_form_inner_container);