func_.origin = FuncRequest::MENU;
}
+ ~MenuItem() {}
+
/// The label of a given menuitem
QString label() const { return label_.split('|')[0]; }
/// set the description of the submenu
void submenuname(QString const & name) { submenuname_ = name; }
///
- Menu * submenu() const { return submenu_; }
+ Menu * submenu() const { return submenu_.get(); }
///
- void setSubmenu(Menu * menu) { submenu_ = menu; }
+ void setSubmenu(Menu * menu) { submenu_.reset(menu); }
private:
///
///
FuncStatus status_;
///
- Menu * submenu_;
+ boost::shared_ptr<Menu> submenu_;
};
///
setTitle(label(mi));
}
+ ~GuiPopupMenu() { delete top_level_menu; }
+
/// populates the menu or one of its submenu
/// This is used as a recursive function
void populate(QMenu * qMenu, Menu * menu);
continue;
// All the rest is for floats
- auto_ptr<Menu> menu(new Menu);
+ Menu * submenu = new Menu;
TocIterator ccit = cit->second.begin();
TocIterator eend = cit->second.end();
for (; ccit != eend; ++ccit) {
QString const label = limitStringLength(ccit->str());
- menu->add(MenuItem(MenuItem::Command, label,
+ submenu->add(MenuItem(MenuItem::Command, label,
FuncRequest(ccit->action())));
}
string const & floatName = floatlist.getType(cit->first).listName();
else
label = qt_("Other floats");
MenuItem item(MenuItem::Submenu, label);
- item.setSubmenu(menu.release());
+ item.setSubmenu(submenu);
add(item);
}
struct Menus::Impl {
- ///
- void add(Menu const &);
///
bool hasMenu(QString const &) const;
///
case MenuItem::Submenu: {
MenuItem item(*cit);
item.setSubmenu(new Menu(cit->submenuname()));
- expand(getMenu(cit->submenuname()),
- *item.submenu(), buf);
+ expand(getMenu(cit->submenuname()), *item.submenu(), buf);
tomenu.addWithStatusCheck(item);
}
break;
}
-void Menus::Impl::add(Menu const & menu)
-{
- menulist_.push_back(menu);
-}
-
-
bool Menus::Impl::hasMenu(QString const & name) const
{
return find_if(menulist_.begin(), menulist_.end(),
else {
Menu menu(name);
menu.read(lex);
- d->add(menu);
+ d->menulist_.push_back(menu);
}
break;
}