kdelibs/kdeui/actions/kactionmenu.h
Ivailo Monev 6278217dc6 kdeui: format and indent
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2023-08-28 02:26:32 +03:00

119 lines
4.1 KiB
C++

/* This file is part of the KDE libraries
Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org>
(C) 1999 Simon Hausmann <hausmann@kde.org>
(C) 2000 Nicolas Hadacek <haadcek@kde.org>
(C) 2000 Kurt Granroth <granroth@kde.org>
(C) 2000 Michael Koch <koch@kde.org>
(C) 2001 Holger Freyther <freyther@kde.org>
(C) 2002 Ellis Whitehead <ellis@kde.org>
(C) 2003 Andras Mantia <amantia@kde.org>
(C) 2005-2006 Hamish Rodda <rodda@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KACTIONMENU_H
#define KACTIONMENU_H
#include <kaction.h>
class KMenu;
/**
* A KActionMenu is an action that has several properties specific to holding a
* sub-menu of other actions.
*
* Any QAction can be used to create a submenu.
*
* Plugged in a popupmenu, it will create a submenu.
* Plugged in a toolbar, it will create a button with a popup menu.
*
* This is the action used by the XMLGUI since it holds other actions.
* If you want a submenu for selecting one tool among many (without icons), see KSelectAction.
* See also setDelayed about the main action.
*/
class KDEUI_EXPORT KActionMenu : public KAction
{
Q_OBJECT
Q_PROPERTY(bool delayed READ delayed WRITE setDelayed)
Q_PROPERTY(bool stickyMenu READ stickyMenu WRITE setStickyMenu)
public:
explicit KActionMenu(QObject *parent);
KActionMenu(const QString &text, QObject *parent);
KActionMenu(const KIcon& icon, const QString &text, QObject *parent);
virtual ~KActionMenu();
void addAction(QAction *action);
QAction* addSeparator();
void insertAction(QAction *before, QAction *action);
QAction* insertSeparator(QAction* before);
void removeAction(QAction *action);
/**
* Returns this action's menu as a KMenu, if it is one.
* If none exists, one will be created.
*/
KMenu* menu();
/*
* Overload of QAction::setMenu to make sure a KMenu is passed
**/
void setMenu(KMenu *menu);
/**
* Returns true if this action creates a delayed popup menu
* when plugged in a KToolBar.
*/
bool delayed() const;
/**
* If set to true, this action will create a delayed popup menu
* when plugged in a KToolBar. Otherwise it creates a normal popup.
* Default: delayed
*
* Remember that if the "main" action (the toolbar button itself)
* cannot be clicked, then you should call setDelayed(false).
*
* In the other case, if the main action can be clicked, it can only happen
* in a toolbar: in a menu, the parent of a submenu can't be activated.
* To get a "normal" menu item when plugged a menu (and no submenu)
* use KToolBarPopupAction.
*/
void setDelayed(bool delayed);
/**
* Returns true if this action creates a sticky popup menu.
* @see setStickyMenu().
*/
bool stickyMenu() const;
/**
* If set to true, this action will create a sticky popup menu
* when plugged in a KToolBar.
* "Sticky", means it's visible until a selection is made or the mouse is
* clicked elsewhere. This feature allows you to make a selection without
* having to press and hold down the mouse while making a selection.
* Default: sticky.
*/
void setStickyMenu(bool sticky);
virtual QWidget* createWidget(QWidget* parent);
private:
class KActionMenuPrivate* const d;
};
#endif