You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.3 KiB
143 lines
4.3 KiB
/* 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
|
|
|