|
|
|
/* 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 TDEAboutData;
|
|
|
|
class TDEInstance;
|
|
|
|
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 TDEInstance *instance();
|
|
|
|
static TDEAboutData *aboutData();
|
|
|
|
|
|
|
|
private:
|
|
|
|
static TDEInstance *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
|
|
|
|
|