#include "support/docstring.h"
-#include <Qmenu>
+#include <QMenu>
#include <vector>
class QString;
+class QMenuBar;
namespace lyx {
class GuiView;
+class Menu : public QMenu
+{
+ Q_OBJECT
+public:
+ ///
+ Menu(GuiView * gv, QString const & name, bool top_level);
+
+ ///
+ ~Menu();
+
+private Q_SLOTS:
+ ///
+ void updateView();
+
+private:
+ friend class Menus;
+
+ /// Use the Pimpl idiom to hide the internals.
+ struct Impl;
+ /// The pointer never changes although *d's contents may.
+ Impl * const d;
+};
+
+
class Menus
{
public:
Menus();
+ ~Menus();
///
bool searchMenu(FuncRequest const & func,
std::vector<docstring> & names) const;
///
- void fillMenuBar(GuiView * view);
+ void fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial = false);
/// \return a top-level submenu given its name.
- QMenu * menu(QString const & name, GuiView & view);
+ Menu * menu(QString const & name, GuiView & view);
///
void read(Lexer &);
///
- void updateMenu(QString const & name);
+ void updateMenu(Menu * qmenu);
private:
/// Use the Pimpl idiom to hide the internals.
Impl * const d;
};
-
-class GuiPopupMenuBase : public QMenu
-{
- Q_OBJECT
-
-public:
- ///
- GuiPopupMenuBase(QWidget * parent = 0)
- : QMenu(parent)
- {
- connect(this, SIGNAL(aboutToShow()), this, SLOT(updateView()));
- }
-
-private Q_SLOTS:
- ///
- virtual void updateView() = 0;
-};
-
} // namespace frontend
} // namespace lyx