1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Designer of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28
29//
30// W A R N I N G
31// -------------
32//
33// This file is not part of the Qt API. It exists for the convenience
34// of Qt Designer. This header
35// file may change from version to version without notice, or even be removed.
36//
37// We mean it.
38//
39
40#ifndef QDESIGNER_TASKMENU_H
41#define QDESIGNER_TASKMENU_H
42
43#include "shared_global_p.h"
44#include "extensionfactory_p.h"
45#include <QtDesigner/taskmenu.h>
46
47#include <QtGui/qwindowdefs.h>
48
49#include <QtCore/qobject.h>
50#include <QtCore/qpointer.h>
51#include <QtCore/qlist.h>
52
53QT_BEGIN_NAMESPACE
54
55class QDesignerFormWindowInterface;
56class QDesignerFormEditorInterface;
57
58namespace qdesigner_internal {
59class QDesignerTaskMenuPrivate;
60
61class QDESIGNER_SHARED_EXPORT QDesignerTaskMenu: public QObject, public QDesignerTaskMenuExtension
62{
63 Q_OBJECT
64 Q_INTERFACES(QDesignerTaskMenuExtension)
65public:
66 QDesignerTaskMenu(QWidget *widget, QObject *parent);
67 ~QDesignerTaskMenu() override;
68
69 QWidget *widget() const;
70
71 QList<QAction*> taskActions() const override;
72
73 enum PropertyMode { CurrentWidgetMode, MultiSelectionMode };
74
75 static bool isSlotNavigationEnabled(const QDesignerFormEditorInterface *core);
76 static void navigateToSlot(QDesignerFormEditorInterface *core, QObject *o,
77 const QString &defaultSignal = QString());
78
79protected:
80
81 QDesignerFormWindowInterface *formWindow() const;
82 void changeTextProperty(const QString &propertyName, const QString &windowTitle, PropertyMode pm, Qt::TextFormat desiredFormat);
83
84 QAction *createSeparator();
85
86 /* Retrieve the list of objects the task menu is supposed to act on. Note that a task menu can be invoked for
87 * an unmanaged widget [as of 4.5], in which case it must not use the cursor selection,
88 * but the unmanaged selection of the object inspector. */
89 QObjectList applicableObjects(const QDesignerFormWindowInterface *fw, PropertyMode pm) const;
90 QWidgetList applicableWidgets(const QDesignerFormWindowInterface *fw, PropertyMode pm) const;
91
92 void setProperty(QDesignerFormWindowInterface *fw, PropertyMode pm, const QString &name, const QVariant &newValue);
93
94private slots:
95 void changeObjectName();
96 void changeToolTip();
97 void changeWhatsThis();
98 void changeStyleSheet();
99 void createMenuBar();
100 void addToolBar(Qt::ToolBarArea area);
101 void createStatusBar();
102 void removeStatusBar();
103 void containerFakeMethods();
104 void slotNavigateToSlot();
105 void applySize(QAction *a);
106 void slotLayoutAlignment();
107
108private:
109 QDesignerTaskMenuPrivate *d;
110};
111
112using QDesignerTaskMenuFactory = ExtensionFactory<QDesignerTaskMenuExtension, QWidget, QDesignerTaskMenu>;
113
114} // namespace qdesigner_internal
115
116QT_END_NAMESPACE
117
118#endif // QDESIGNER_TASKMENU_H
119

source code of qttools/src/designer/src/lib/shared/qdesigner_taskmenu_p.h