2023-07-25 19:44:18 +00:00
|
|
|
#pragma once
|
|
|
|
#include <JuceHeader.h>
|
|
|
|
|
2024-11-09 19:19:36 +00:00
|
|
|
class MainMenuBarModel : public juce::MenuBarModel {
|
2023-07-25 19:44:18 +00:00
|
|
|
public:
|
2024-12-14 18:15:22 +00:00
|
|
|
MainMenuBarModel();
|
2024-08-14 19:27:56 +00:00
|
|
|
~MainMenuBarModel();
|
2023-07-25 19:44:18 +00:00
|
|
|
|
2024-12-14 18:15:22 +00:00
|
|
|
void addTopLevelMenu(const juce::String& name);
|
|
|
|
void addMenuItem(int topLevelMenuIndex, const juce::String& name, std::function<void()> action);
|
2025-01-04 18:29:09 +00:00
|
|
|
|
|
|
|
std::function<void(juce::PopupMenu&, int)> customMenuLogic;
|
|
|
|
std::function<bool(int, int)> customMenuSelectedLogic;
|
2024-12-14 18:15:22 +00:00
|
|
|
|
|
|
|
private:
|
2023-07-25 19:44:18 +00:00
|
|
|
juce::StringArray getMenuBarNames() override;
|
|
|
|
juce::PopupMenu getMenuForIndex(int topLevelMenuIndex, const juce::String& menuName) override;
|
|
|
|
void menuItemSelected(int menuItemID, int topLevelMenuIndex) override;
|
|
|
|
void menuBarActivated(bool isActive);
|
|
|
|
|
2024-12-14 18:15:22 +00:00
|
|
|
juce::StringArray topLevelMenuNames;
|
|
|
|
std::vector<std::vector<std::pair<juce::String, std::function<void()>>>> menuItems;
|
2023-07-25 19:44:18 +00:00
|
|
|
};
|