diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /lib/widgets/propeditor/propertyeditor.h | |
download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/widgets/propeditor/propertyeditor.h')
-rw-r--r-- | lib/widgets/propeditor/propertyeditor.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/lib/widgets/propeditor/propertyeditor.h b/lib/widgets/propeditor/propertyeditor.h new file mode 100644 index 00000000..f641118c --- /dev/null +++ b/lib/widgets/propeditor/propertyeditor.h @@ -0,0 +1,129 @@ +/*************************************************************************** + * Copyright (C) 2002-2004 by Alexander Dymo * + * cloudtemple@mskat.net * + * * + * This program 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 program 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 General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef PROPERTYEDITOR_H +#define PROPERTYEDITOR_H + +#ifndef PURE_QT +#include <klistview.h> +#else +#include <qlistview.h> +#define KListView QListView +#define KListViewItem QListViewItem +#endif + +#include "propertylist.h" + +class QPushButton; +class QGridLayout; + +namespace PropertyLib{ + +class PropertyItem; +class PropertyGroupItem; +class PropertyWidget; +class Property; +class MultiProperty; +struct Machine; + +/** @file propertyeditor.h +@short Contains @ref PropertyLib::PropertyEditor class. +*/ + +/** +@short %Property editor. + +Displays a list of properties in a table form. Also performs grouping and +creation of property widgets from the machine factory. +@see PropertyWidget +@see Machine +@see PropertyMachineFactory +*/ +class PropertyEditor: public KListView{ + Q_OBJECT +public: + /**Constructs the property editor.*/ + PropertyEditor(QWidget *parent = 0, const char *name = 0); + ~PropertyEditor(); + + /**@return @ref Machine for given property. + Uses cache to store created machines. + Cache will be cleared only with @ref clearMachineCache.*/ + Machine *machine(MultiProperty *property); + +public slots: + /**Shows properties from a list.*/ + void populateProperties(PropertyList *list); + /**Clears property list, disconnects accessor from the editor and deletes it.*/ + void clearProperties(); + /**Deletes cached machines.*/ + void clearMachineCache(); + +signals: + /**Emitted when something is changed in property editor.*/ + void changed(); + +protected slots: + /**Updates property widget in the editor.*/ + void propertyValueChanged(Property* property); + /**Updates property in the list when new value is selected in the editor.*/ + void propertyChanged(MultiProperty *property, const QVariant &value); + + /**Shows property editor.*/ + void slotClicked(QListViewItem* item); + void updateEditorSize(); + + /**Undoes the last change in property editor.*/ + void undo(); + +protected: + void editItem(QListViewItem*, int); + void hideEditor(); + void showEditor(PropertyItem *item); + void placeEditor(PropertyItem *item); + PropertyWidget *prepareEditor(PropertyItem *item); + + void addGroup(const QString &name); + void addProperty(PropertyGroupItem *group, const QString &name); + void addProperty(const QString &name); + void addChildProperties(PropertyItem *parent); + +private: + PropertyList *m_list; + PropertyList m_detailedList; + + //machines cache for property types, machines will be deleted + QMap<QString, Machine* > m_registeredForType; + + PropertyItem *m_currentEditItem; + PropertyWidget *m_currentEditWidget; + QWidget *m_currentEditArea; + QGridLayout *m_currentEditLayout; + + bool m_doubleClickForEdit; + QListViewItem* m_lastClickedItem; + + QPushButton *m_undoButton; + +friend class PropertyItem; +}; + +} + +#endif |