1/* This file is part of the KDE project
2 Copyright (C) 2000 Simon Hausmann <hausmann@kde.org>
3 David Faure <faure@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20#ifndef kxmlguibuilder_h
21#define kxmlguibuilder_h
22
23#include <kdeui_export.h>
24
25class KComponentData;
26class KXMLGUIBuilderPrivate;
27class KXMLGUIClient;
28
29class QAction;
30class QDomElement;
31class QStringList;
32class QWidget;
33
34/**
35 * Implements the creation of the GUI (menubar, menus and toolbars)
36 * as requested by the GUI factory.
37 *
38 * The virtual methods are mostly for historical reasons, there isn't really
39 * a need to derive from KXMLGUIBuilder anymore.
40 */
41class KDEUI_EXPORT KXMLGUIBuilder
42{
43 public:
44
45 explicit KXMLGUIBuilder( QWidget *widget );
46 virtual ~KXMLGUIBuilder();
47
48 /* @internal */
49 KXMLGUIClient *builderClient() const;
50 /* @internal */
51 void setBuilderClient( KXMLGUIClient *client );
52 /* @internal */
53 KComponentData builderComponentData() const;
54 /* @internal */
55 void setBuilderComponentData(const KComponentData &componentData);
56 /* @internal */
57 QWidget *widget();
58
59 virtual QStringList containerTags() const;
60
61 /**
62 * Creates a container (menubar/menu/toolbar/statusbar/separator/...)
63 * from an element in the XML file
64 *
65 * @param parent The parent for the container
66 * @param index The index where the container should be inserted
67 * into the parent container/widget
68 * @param element The element from the DOM tree describing the
69 * container (use it to access container specified
70 * attributes or child elements)
71 * @param action The action created for this container; used for e.g. passing to removeContainer.
72 */
73 virtual QWidget *createContainer( QWidget *parent, int index,
74 const QDomElement &element, QAction* &containerAction );
75
76 /**
77 * Removes the given (and previously via createContainer )
78 * created container.
79 *
80 */
81 virtual void removeContainer( QWidget *container, QWidget *parent,
82 QDomElement &element, QAction* containerAction );
83
84 virtual QStringList customTags() const;
85
86 virtual QAction* createCustomElement( QWidget *parent, int index, const QDomElement &element );
87
88 virtual void removeCustomElement( QWidget *parent, QAction* action );
89
90 virtual void finalizeGUI( KXMLGUIClient *client );
91
92protected:
93 virtual void virtual_hook( int id, void* data );
94private:
95 KXMLGUIBuilderPrivate * const d;
96};
97
98#endif
99
100