diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/formeditor/formIO.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kexi/formeditor/formIO.h')
-rw-r--r-- | kexi/formeditor/formIO.h | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/kexi/formeditor/formIO.h b/kexi/formeditor/formIO.h new file mode 100644 index 00000000..b7337182 --- /dev/null +++ b/kexi/formeditor/formIO.h @@ -0,0 +1,222 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Cedric Pasteur <[email protected]> + Copyright (C) 2005-2007 Jaroslaw Staniek <[email protected]> + + 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 FORMIO_H +#define FORMIO_H + +#include <qobject.h> +#include <qdict.h> +#include <qstring.h> +#include <qwidget.h> +#include <qmap.h> + +class QString; +class QDomElement; +class QDomNode; +class QDomDocument; +class QDomText; +class QVariant; +class QLabel; + +//! A blank widget displayed when class is not supported +class KFORMEDITOR_EXPORT CustomWidget : public QWidget +{ + Q_OBJECT + + public: + CustomWidget(const QCString &className, QWidget *parent, const char *name); + virtual ~CustomWidget(); + + virtual void paintEvent(QPaintEvent *ev); + + private: + QCString m_className; +}; + +namespace KFormDesigner { + +class WidgetPropertySet; +class Form; +class ObjectTreeItem; +class Container; +class WidgetLibrary; + +//! KFormDesigner API version number. Increased on every breaking of backward compatibility. +//! Use KFormDesigner::version() to get real version number of the library. +#define KFORMDESIGNER_VERSION 2 + +//! \return KFormDesigner API version number for this library. This information is stored +KFORMEDITOR_EXPORT uint version(); + +/** This class act as a namespace for all .ui files related functions, ie saving/loading .ui files. + You don't need to create a FormIO object, as all methods are static.\n + This class is able to read and write Forms to .ui files, and to save each type of properties, including set and enum + properties, and pixmaps(pixmap-related code was taken from Qt Designer). + **/ + //! A class to save/load forms from .ui files +class KFORMEDITOR_EXPORT FormIO : public QObject +{ + Q_OBJECT + + public: + FormIO(); + ~FormIO(); + + /*! Save the Form in the \a domDoc QDomDocument. Called by saveForm(). + \return true if saving succeeded. + \sa saveForm() */ + static bool saveFormToDom(Form *form, QDomDocument &domDoc); + + /*! Save the Form \a form to the file \a filename. If \a filename is null or not given, + a Save File dialog will be shown to choose dest file. + \return true if saving succeeded. + \todo Add errors code and error dialog + */ + static bool saveFormToFile(Form *form, const QString &filename=QString::null); + + /*! Saves the Form to the \a dest string. \a indent can be specified to apply indentation. + \return true if saving succeeded. + \sa saveForm() + */ + static bool saveFormToString(Form *form, QString &dest, int indent = 0); + + /*! Saves the \a form inside the \a dest QByteArray. + \return true if saving succeeded. + \sa saveFormToDom(), saveForm() + */ + static bool saveFormToByteArray(Form *form, QByteArray &dest); + + /*! Loads a form from the \a domDoc QDomDocument. Called by loadForm() and loadFormData(). + \return true if loading succeeded. */ + static bool loadFormFromDom(Form *form, QWidget *container, QDomDocument &domDoc); + + /*! Loads a form from the \a src QByteArray. + \sa loadFormFromDom(), loadForm(). + \return true if loading succeeded. + */ + static bool loadFormFromByteArray(Form *form, QWidget *container, QByteArray &src, + bool preview=false); + + static bool loadFormFromString(Form *form, QWidget *container, QString &src, bool preview=false); + + /*! Loads the .ui file \a filename in the Form \a form. If \a filename is null or not given, + a Open File dialog will be shown to select the file to open. + createToplevelWidget() is used to load the Form's toplevel widget. + \return true if loading succeeded. + \todo Add errors code and error dialog + */ + static bool loadFormFromFile(Form *form, QWidget *container, const QString &filename=QString::null); + + /*! Saves the widget associated to the ObjectTreeItem \a item into DOM document \a domDoc, + with \a parent as parent node. + It calls readPropertyValue() for each object property, readAttribute() for each attribute and + itself to save child widgets.\n + \return true if saving succeeded. + This is used to copy/paste widgets. + */ + static void saveWidget(ObjectTreeItem *item, QDomElement &parent, QDomDocument &domDoc, + bool insideGridLayout=false); + + /*! Cleans the "UI" QDomElement after saving widget. It deletes the "includes" element + not needed when pasting, and make sure all the "widget" elements are at the beginning. + Call this after copying a widget, before pasting.*/ + static void cleanClipboard(QDomElement &uiElement); + + /*! Loads the widget associated to the QDomElement \a el into the Container \a container, + with \a parent as parent widget. + If parent = 0, the Container::widget() is used as parent widget. + This is used to copy/paste widgets. + */ + static void loadWidget(Container *container, + const QDomElement &el, QWidget *parent=0); + + /*! Save an element in the \a domDoc as child of \a parentNode. + The element will be saved like this : + \code <$(tagName) name = "$(property)">< value_as_XML ><$(tagName)/> + \endcode + */ + static void savePropertyElement(QDomElement &parentNode, QDomDocument &domDoc, const QString &tagName, + const QString &property, const QVariant &value); + + /*! Read an object property in the DOM doc. + \param node the QDomNode of the property + \param obj the widget whose property is being read + \param name the name of the property being read + */ + static QVariant readPropertyValue(QDomNode node, QObject *obj, const QString &name); + + /*! Write an object property in the DOM doc. + \param parentNode the DOM document to write to + \param name the name of the property being saved + \param value the value of this property + \param w the widget whose property is being saved + \param lib the widget library for which the property is being saved + + Properties of subwidget are saved with subwidget="true" arribute added + to 'property' XML element. + */ + static void savePropertyValue(QDomElement &parentNode, QDomDocument &parent, const char *name, + const QVariant &value, QWidget *w, WidgetLibrary *lib=0); + + protected: + /*! Saves the QVariant \a value as text to be included in an xml file, with \a parentNode.*/ + static void writeVariant(QDomDocument &parent, QDomElement &parentNode, QVariant value); + + /*! Creates a toplevel widget from the QDomElement \a element in the Form \a form, + with \a parent as parent widget. + It calls readPropertyValue() and loadWidget() to load child widgets. + */ + static void createToplevelWidget(Form *form, QWidget *container, QDomElement &element); + + /*! \return the name of the pixmap saved, to use to access it + This function save the QPixmap \a pixmap into the DOM document \a domDoc. + The pixmap is converted to XPM and compressed for compatibility with Qt Designer. + Encoding code is taken from Designer. + */ + static QString saveImage(QDomDocument &domDoc, const QPixmap &pixmap); + + /*! \return the loaded pixmap + This function loads the pixmap named \a name in the DOM document \a domDoc. + Decoding code is taken from QT Designer. + */ + static QPixmap loadImage(QDomDocument domDoc, const QString& name); + + /*! Reads the child nodes of a "widget" element. */ + static void readChildNodes(ObjectTreeItem *tree, Container *container, + const QDomElement &el, QWidget *w); + + /*! Adds an include file name to be saved in the "includehints" part of .ui file, + which is needed by uic. */ + static void addIncludeFileName(const QString &include, QDomDocument &domDoc); + + private: + // This dict stores buddies associations until the Form is completely loaded. + static QDict<QLabel> *m_buddies; + + /// Instead of having to pass these for every functions, we just store them in the class + //static QWidgdet *m_currentWidget; + static ObjectTreeItem *m_currentItem; + static Form *m_currentForm; + static bool m_savePixmapsInline; +}; + +} + +#endif |