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
|
/* This file is part of the KDE project
Copyright (C) 2004 Cedric Pasteur <cedric.pasteur@free.fr>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
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 KFORMDESIGNER_PART_H
#define KFORMDESIGNER_PART_H
#include <qwidget.h>
#include <qpixmap.h>
#include <kparts/part.h>
#include <kparts/factory.h>
#include "form.h"
class KAboutData;
class KInstance;
class QWorkspace;
class QCloseEvent;
using KFormDesigner::Form;
class KFORMEDITOR_EXPORT KFDFactory : public KParts::Factory
{
Q_OBJECT
public:
KFDFactory();
virtual ~KFDFactory();
virtual KParts::Part* createPartObject(QWidget *parentWidget=0, const char *widgetName=0, QObject *parent=0, const char *name=0,
const char *classname="KParts::Part", const QStringList &args=QStringList());
static KInstance *instance();
static KAboutData *aboutData();
private:
static KInstance *m_instance;
};
class KFORMEDITOR_EXPORT KFormDesignerPart: public KParts::ReadWritePart
{
Q_OBJECT
public:
KFormDesignerPart(QWidget *parent, const char *name, bool readOnly=true, const QStringList &args=QStringList());
virtual ~KFormDesignerPart();
static KFormDesigner::WidgetLibrary* formsLibrary();
// KFormDesigner::FormManager* manager() { return m_manager; }
void setUniqueFormMode(bool enable) { m_uniqueFormMode = enable; }
bool closeForm(Form *form);
bool closeForms();
virtual bool closeURL();
public slots:
/*! Creates a new blank Form. The new Form is shown and become the active Form. */
void createBlankForm();
/*! Loads a Form from a UI file. A "Open File" dialog is shown to select the file. The loaded Form is shown and becomes
the active Form. */
void open();
void slotPreviewForm();
void saveAs();
//void slotCreateFormSlot(KFormDesigner::Form *form, const QString &widget, const QString &signal);
protected slots:
void slotFormModified(KFormDesigner::Form *form, bool isDirty);
//moved to manager void slotWidgetSelected(KFormDesigner::Form *form, bool multiple);
//moved to manager void slotFormWidgetSelected(KFormDesigner::Form *form);
//moved to manager void slotNoFormSelected();
void setUndoEnabled(bool enabled, const QString &text);
void setRedoEnabled(bool enabled, const QString &text);
/*! Shows a property set \a set in a Property Editor. */
void slotPropertySetSwitched(KoProperty::Set *set, bool forceReload = false,
const QCString& propertyToSelect = QCString());
protected:
virtual bool openFile();
virtual bool saveFile();
void disableWidgetActions();
void enableFormActions();
void setupActions();
private:
static KFormDesigner::WidgetLibrary* static_formsLibrary;
// KFormDesigner::FormManager *m_manager;
QWorkspace *m_workspace;
QGuardedPtr<KoProperty::Editor> m_editor;
int m_count;
bool m_uniqueFormMode;
bool m_openingFile;
bool m_inShell;
};
//! Helper: this widget is used to create form's surface
class KFORMEDITOR_EXPORT FormWidgetBase : public QWidget, public KFormDesigner::FormWidget
{
Q_OBJECT
public:
FormWidgetBase(KFormDesignerPart *part, QWidget *parent = 0, const char *name = 0, int WFlags = WDestructiveClose)
: QWidget(parent, name, WFlags), m_part(part) {}
~FormWidgetBase() {;}
void drawRect(const QRect& r, int type);
void drawRects(const QValueList<QRect> &list, int type);
void initBuffer();
void clearForm();
void highlightWidgets(QWidget *from, QWidget *to);//, const QPoint &p);
protected:
void closeEvent(QCloseEvent *ev);
private:
QPixmap buffer; //!< stores grabbed entire form's area for redraw
QRect prev_rect; //!< previously selected rectangle
KFormDesignerPart *m_part;
};
#endif
|