|
@@ -298,35 +298,9 @@ Example: |
|
|
*/ |
|
|
*/ |
|
|
template <class TMenuItem = ui::MenuItem> |
|
|
template <class TMenuItem = ui::MenuItem> |
|
|
TMenuItem* createBoolMenuItem(std::string text, std::string rightText, std::function<bool()> getter, std::function<void(bool state)> setter, bool disabled = false, bool alwaysConsume = false) { |
|
|
TMenuItem* createBoolMenuItem(std::string text, std::string rightText, std::function<bool()> getter, std::function<void(bool state)> setter, bool disabled = false, bool alwaysConsume = false) { |
|
|
struct Item : TMenuItem { |
|
|
|
|
|
std::string rightTextPrefix; |
|
|
|
|
|
std::function<bool()> getter; |
|
|
|
|
|
std::function<void(size_t)> setter; |
|
|
|
|
|
bool alwaysConsume; |
|
|
|
|
|
|
|
|
|
|
|
void step() override { |
|
|
|
|
|
this->rightText = rightTextPrefix; |
|
|
|
|
|
if (getter()) { |
|
|
|
|
|
if (!rightTextPrefix.empty()) |
|
|
|
|
|
this->rightText += " "; |
|
|
|
|
|
this->rightText += CHECKMARK_STRING; |
|
|
|
|
|
} |
|
|
|
|
|
TMenuItem::step(); |
|
|
|
|
|
} |
|
|
|
|
|
void onAction(const event::Action& e) override { |
|
|
|
|
|
setter(!getter()); |
|
|
|
|
|
if (alwaysConsume) |
|
|
|
|
|
e.consume(this); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
Item* item = createMenuItem<Item>(text); |
|
|
|
|
|
item->rightTextPrefix = rightText; |
|
|
|
|
|
item->getter = getter; |
|
|
|
|
|
item->setter = setter; |
|
|
|
|
|
item->disabled = disabled; |
|
|
|
|
|
item->alwaysConsume = alwaysConsume; |
|
|
|
|
|
return item; |
|
|
|
|
|
|
|
|
return createCheckMenuItem<TMenuItem>(text, rightText, getter, [=]() { |
|
|
|
|
|
setter(!getter()); |
|
|
|
|
|
}, disabled, alwaysConsume); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|