summaryrefslogtreecommitdiffstats
path: root/kexi/formeditor/test/kfd_part.h
blob: 8ba652fd370602f969f8bc3b6f6750601a8677a1 (plain)
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
/* 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 <tqwidget.h>
#include <tqpixmap.h>

#include <kparts/part.h>
#include <kparts/factory.h>

#include "form.h"

class KAboutData;
class KInstance;
class TQWorkspace;
class TQCloseEvent;

using KFormDesigner::Form;

class KFORMEDITOR_EXPORT KFDFactory : public KParts::Factory
{
	Q_OBJECT
  

	public:
		KFDFactory();
		virtual ~KFDFactory();

		virtual KParts::Part* createPartObject(TQWidget *parentWidget=0, const char *widgetName=0, TQObject *parent=0, const char *name=0,
		  const char *classname="KParts::Part", const TQStringList &args=TQStringList());

		static KInstance *instance();
		static KAboutData *aboutData();

	private:
		static KInstance *m_instance;
};

class KFORMEDITOR_EXPORT KFormDesignerPart: public KParts::ReadWritePart
{
	Q_OBJECT
  

	public:
		KFormDesignerPart(TQWidget *parent, const char *name, bool readOnly=true, const TQStringList &args=TQStringList());
		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 TQString &widget, const TQString &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 TQString &text);
		void setRedoEnabled(bool enabled, const TQString &text);

		/*! Shows a property set \a set in a Property Editor. */
		void slotPropertySetSwitched(KoProperty::Set *set, bool forceReload = false, 
			const TQCString& propertyToSelect = TQCString());

	protected:
		virtual bool openFile();
		virtual bool saveFile();
		void disableWidgetActions();
		void enableFormActions();
		void setupActions();

	private:
		static KFormDesigner::WidgetLibrary* static_formsLibrary;
//		KFormDesigner::FormManager  *m_manager;
		TQWorkspace  *m_workspace;
		TQGuardedPtr<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 TQWidget, public KFormDesigner::FormWidget
{
	Q_OBJECT
  

	public:
		FormWidgetBase(KFormDesignerPart *part, TQWidget *parent = 0, const char *name = 0, int WFlags = WDestructiveClose)
		: TQWidget(parent, name, WFlags), m_part(part) {}
		~FormWidgetBase() {;}

		void drawRect(const TQRect& r, int type);
		void drawRects(const TQValueList<TQRect> &list, int type);
		void initBuffer();
		void clearForm();
		void highlightWidgets(TQWidget *from, TQWidget *to);//, const TQPoint &p);

	protected:
		void closeEvent(TQCloseEvent *ev);

	private:
		TQPixmap buffer; //!< stores grabbed entire form's area for redraw
		TQRect prev_rect; //!< previously selected rectangle
		KFormDesignerPart  *m_part;
};

#endif