1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
/***************************************************************************
MenuSub.h - submenu
-------------------
begin : Mon Jan 10 2000
copyright : (C) 2000 by Thomas Eschenbacher
email : Thomas.Eschenbacher@gmx.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef MENU_SUB_H
#define MENU_SUB_H
#include "config.h"
#include <QAction>
#include <QIcon>
#include <QMenu>
#include <QString>
#include "libgui/MenuNode.h"
namespace Kwave
{
/**
* This is the class for submenu entries in a Menu. It is normally
* owned by a root menu node, a toplevel menu or another submenu.
*/
class MenuSub: public Kwave::MenuNode
{
Q_OBJECT
public:
/**
* Constructor.
* @param parent pointer to the node's parent (might be 0)
* @param menu the already generated QMenu
* @param name the non-localized name of the submenu
* @param command the command to be sent when the submenu is
* selected (optional, default=0)
* @param shortcut keyboard shortcut, (optional, default=0)
* @param uid unique id string (optional, default=0)
*/
MenuSub(Kwave::MenuNode *parent,
QMenu *menu,
const QString &name,
const QString &command,
const QKeySequence &shortcut,
const QString &uid);
/** Destructor */
~MenuSub() override;
/**
* Always returns true, as the nodes of this type are branches.
*/
bool isBranch() const override { return true; }
/**
* Inserts a new branch node under the submenu. The new node
* normally is (derived from) MenuSub.
* @param name non-localized name of the node
* @param command the command template used for creating commands of
* submenus (leafes) that don't have an own command
* but contain data for their parent's command.
* Should contain a %s that will be replaced by some
* data from a child entry. (this is used for
* menus with data selection lists like "recent files)
* If not used, pass 0.
* @param shortcut keyboard shortcut, 0 if unused
* @param uid unique id string (might be 0)
* @return pointer to the new branch node
*/
virtual Kwave::MenuSub *insertBranch(const QString &name,
const QString &command,
const QKeySequence &shortcut,
const QString &uid)
override;
/**
* Inserts a new leaf node under the submenu. The new node
* normally is (derived from) MenuItem.
* @param name non-localized name of the node
* @param command the command to be sent when the node is
* selected (might be 0)
* @param shortcut keyboard shortcut, 0 if unused
* @param uid unique id string (might be 0)
* @return pointer to the new leaf node
*/
virtual Kwave::MenuNode *insertLeaf(const QString &name,
const QString &command,
const QKeySequence &shortcut,
const QString &uid) override;
/** Returns the corresponding menu action */
QAction *action() override {
return (m_menu) ? m_menu->menuAction() : nullptr;
}
/**
* Removes a child node of the current node. If the child
* was not found or is already removed this does nothing.
* @param child pointer to the child node
*/
void removeChild(Kwave::MenuNode *child) override;
/**
* Handles/interpretes special menu commands.
* @param command name of a menu node or command
* @return true if the name was recognized as a command and handled
*/
bool specialCommand(const QString &command) override;
/**
* Shows/hides the current sub menu.
* @param visible true to show the sub menu, false to hide
*/
void setVisible(bool visible) override;
/**
* Returns true if the node is enabled.
*/
bool isEnabled() override;
/**
* Enables/disables the current menu node.
* @param enable true to enable the item, false to disable
*/
void setEnabled(bool enable) override;
/** Returns the menu nodes' icon. */
const QIcon icon() override;
/**
* Sets a new icon of a menu node.
* @param icon QPixmap with the icon
*/
void setIcon(const QIcon &icon) override;
protected:
friend class MenuRoot;
/** return the pointer to our QMenu */
virtual QMenu *menu() { return m_menu; }
private:
/** the QMenu that is controlled */
QMenu *m_menu;
};
}
#endif /* MENU_SUB_H */
//***************************************************************************
//***************************************************************************
|