44 public SGPropertyChangeListener
97 _callbacks.push_back(cb);
106 std::for_each(_callbacks.begin(), _callbacks.end(), [](
NasalCallback& cb) {
113 std::string _shortcut;
114 bool _isSeparator =
false;
115 bool _isCheckable =
false;
116 bool _enabled =
true;
117 bool _checked =
false;
119 SGPropertyNode_ptr _enabledNode,
120 _checkedNode, _labelNode;
122 SGBindingList _bindings;
123 std::vector<NasalCallback> _callbacks;
172 auto n = config->getChild(
"name");
174 SG_LOG(SG_GUI, SG_DEV_WARN,
"menu item without <name> element:" << config->getLocation());
176 _name = n->getStringValue();
177 n->addChangeListener(
this);
184 auto _labelNode = config->getChild(
"label");
186 _labelNode->addChangeListener(
this);
190 _checkedNode = config->getChild(
"checked");
193 _checked = _checkedNode->getBoolValue();
194 _checkedNode->addChangeListener(
this);
201 _enabledNode = config->getChild(
"enabled");
203 _enabled = _enabledNode->getBoolValue();
205 _enabledNode = config->addChild(
"enabled");
206 _enabledNode->setBoolValue(
true);
208 _enabledNode->addChangeListener(
this);
212 n = config->getChild(
"key");
214 _shortcut = n->getStringValue();
217 auto bindingNodes = config->getChildren(
"binding");
218 _bindings = readBindingList(bindingNodes,
globals->get_props());
220 n = config->getChild(
"menu");
223 _submenu->initFromNode(n);
268 const auto name = config->getStringValue(
"name");
271 _enabledNode = config->getChild(
"enabled");
273 _enabled = _enabledNode->getBoolValue();
275 _enabledNode = config->addChild(
"enabled");
276 _enabledNode->setBoolValue(
true);
278 _enabledNode->addChangeListener(
this);
280 auto _labelNode = config->getChild(
"label");
282 _labelNode->addChangeListener(
this);
286 for (
auto i : config->getChildren(
"item")) {
289 _items.push_back(it);