Files
Toolbox/module/toolboxTray.ixx
2024-12-18 14:17:36 +01:00

52 lines
1.4 KiB
C++

export module toolboxTray;
#include <functional>
#include "tray.h"
export
class toolboxTray : public tray {
public:
// Konstruktor mit optionalen Parametern für Icon und Tooltip
toolboxTray(const char* icon = nullptr, const char* tooltip = nullptr) {
this->icon = icon;
this->tooltip = const_cast<char*>(tooltip);
this->menu = nullptr; // Initialisiere ohne Menü (kann später gesetzt werden)
}
// Funktion, um die gewünschte Aktion für den Linksklick zu setzen
void setLeftClickAction(const std::function<void()>& action) {
leftClickAction = action;
}
// Funktion zum Setzen des Tray-Menüs
void setTrayMenu(tray_menu* menu) {
this->menu = menu;
}
// Ereignis-Handler für Mausklicks
void handleMouseClick(int button) {
if (button == LEFT_CLICK && leftClickAction) {
// Führt die Linksklick-Aktion aus
leftClickAction();
} else if (button == RIGHT_CLICK) {
// Zeigt das Menü
showMenu();
}
}
enum MouseButton {
LEFT_CLICK = 0,
RIGHT_CLICK = 1
};
private:
std::function<void()> leftClickAction; // Aktion für Linksklick
// Zeigt das Menü an (Rechtsklick)
void showMenu() {
if (this->menu) {
tray_update(this); // Update des Trays mit dem Menü
}
}
};