/* This file is part of the KDE project Copyright (C) 2004 Cedric Pasteur 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 #include #include #include #include "form.h" class KAboutData; class KInstance; class TQWorkspace; class TQCloseEvent; using KFormDesigner::Form; class KFORMEDITOR_EXPORT KFDFactory : public KParts::Factory { Q_OBJECT TQ_OBJECT public: KFDFactory(); virtual ~KFDFactory(); virtual KParts::Part* createPartObject(TQWidget *parentWidget=0, const char *widgetName=0, TQObject *tqparent=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 TQ_OBJECT public: KFormDesignerPart(TQWidget *tqparent, 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 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 TQ_OBJECT public: FormWidgetBase(KFormDesignerPart *part, TQWidget *tqparent = 0, const char *name = 0, int WFlags = WDestructiveClose) : TQWidget(tqparent, name, WFlags), m_part(part) {} ~FormWidgetBase() {;} void drawRect(const TQRect& r, int type); void drawRects(const TQValueList &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