Refakturiert die Anwendung und modernisiert das Build-System
Diese umfangreiche Überarbeitung verbessert die Architektur, den Build-Prozess und die Benutzeroberfläche der Toolbox. Wesentliche Änderungen: - **Build-System:** Umfassende Modernisierung des CMake-Builds für verbesserte Stabilität und Wartbarkeit. Die Konfiguration wurde auf zielbasierte Befehle umgestellt, `c_tray` stabilisiert und `saucer-desktop` entfernt. - **Modulare Architektur:** Die Kernlogik von `ToolboxWindow` wurde in dedizierte Helferklassen ausgelagert, darunter `LuaRunner` für die Skriptausführung, `ToolRegistry` für die Tool-Erkennung, `ResourceLoader` für UI-Ressourcen, `ToolboxJsBridge` für JavaScript-Bindungen und `WindowPlacement` für die Fensterverwaltung. Dies reduziert die Komplexität und fördert die Wiederverwendbarkeit. - **Benutzeroberfläche (UI):** Die HTML-Templates (`einstellungen_custom.html`, `index.html`) und Stylesheets (`styles.css`) wurden zentralisiert und überarbeitet, um eine kohärentere Benutzeroberfläche mit benutzerdefinierten Fensterdekorationen zu bieten. Neue Funktionen wie das Öffnen der Kommandozeile und eine "Tool hinzufügen"-Karte wurden integriert. - **Tray-Verwaltung:** Die Tray-Icon-Logik wurde in `TrayController` gekapselt, um eine robustere und zentralisierte Steuerung zu ermöglichen, insbesondere im Umgang mit Explorer-Neustarts.
This commit is contained in:
79
main.cpp
79
main.cpp
@@ -1,82 +1,31 @@
|
||||
#include <saucer/app.hpp>
|
||||
#include <Windows.h>
|
||||
#include <saucer/app.hpp>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "toolboxWindow.h"
|
||||
#include "resource.h"
|
||||
#include "tray.h"
|
||||
#include "trayController.h"
|
||||
|
||||
import toolboxTray;
|
||||
coco::stray start(saucer::application* app) {
|
||||
std::shared_ptr<saucer::application> appShared(app, [](saucer::application*) {});
|
||||
|
||||
ToolboxWindow* g_toolboxWindow = nullptr;
|
||||
auto window = std::make_unique<ToolboxWindow>(appShared);
|
||||
window->initialize();
|
||||
|
||||
void on_quit(struct tray_menu *item) {
|
||||
tray_exit();
|
||||
}
|
||||
|
||||
void on_open(struct tray_menu *item = nullptr) {
|
||||
if (g_toolboxWindow) {
|
||||
if (g_toolboxWindow->m_bShow) {
|
||||
g_toolboxWindow->hide();
|
||||
} else {
|
||||
g_toolboxWindow->show();
|
||||
}
|
||||
TrayController tray(*window);
|
||||
if (!tray.initialize()) {
|
||||
co_return;
|
||||
}
|
||||
}
|
||||
|
||||
coco::stray start(saucer::application *app){
|
||||
// Toolbox-Fenster erstellen und initialisieren
|
||||
std::shared_ptr<saucer::application> app_shared(app, [](saucer::application*){});
|
||||
auto toolboxWindow = std::make_unique<ToolboxWindow>(app_shared);
|
||||
toolboxWindow->initialize();
|
||||
|
||||
g_toolboxWindow = toolboxWindow.get();
|
||||
|
||||
HICON hIcon = static_cast<HICON>(LoadImage(
|
||||
GetModuleHandle(NULL),
|
||||
MAKEINTRESOURCE(IDI_ICON1),
|
||||
IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXSMICON),
|
||||
GetSystemMetrics(SM_CYSMICON),
|
||||
LR_SHARED
|
||||
));
|
||||
|
||||
// Tray-Menue definieren
|
||||
tray_menu tray_menu_items[] = {
|
||||
{"Oeffnen", 0, 0, 0, on_open, nullptr},
|
||||
{"-", 0, 0, 0, nullptr, nullptr}, // Separator
|
||||
{"Beenden", 0, 0, 0, on_quit, nullptr},
|
||||
{nullptr, 0, 0, 0, nullptr, nullptr} // Ende des Menues
|
||||
};
|
||||
|
||||
// ToolboxTray erstellen
|
||||
toolboxTray tray("toolbox.ico", "Toolbox");
|
||||
tray.icon_handle = hIcon;
|
||||
tray.icon_is_shared = (hIcon != nullptr) ? 1 : 0;
|
||||
|
||||
// Linksklick-Aktion registrieren
|
||||
tray.setLeftClickAction([&]() {
|
||||
on_open(nullptr); // Ruft die Funktion ohne Menueeintrag auf
|
||||
});
|
||||
|
||||
// Tray-Menue registrieren
|
||||
tray.setTrayMenu(tray_menu_items);
|
||||
|
||||
if (tray_init(&tray) != 0) {
|
||||
fprintf(stderr, "Fehler beim Initialisieren des Tray-Icons\n");
|
||||
co_return; // Fehlerfall: coroutine beenden
|
||||
}
|
||||
|
||||
//toolboxWindow->show();
|
||||
|
||||
co_await app->finish();
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
int main(int argc, char** argv) {
|
||||
int main(int, char**) {
|
||||
return saucer::application::create({.id = "toolbox"})->run(start);
|
||||
}
|
||||
#else
|
||||
#include <Windows.h>
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
|
||||
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
|
||||
return saucer::application::create({.id = "toolbox"})->run(start);
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user