From 8362bf63dea22bbf6736609b0f49c152f975eb63 Mon Sep 17 00:00:00 2001 From: tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> Date: Wed, 20 Jan 2010 01:29:50 +0000 Subject: 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 --- kexi/formeditor/objecttree.cpp | 244 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 kexi/formeditor/objecttree.cpp (limited to 'kexi/formeditor/objecttree.cpp') diff --git a/kexi/formeditor/objecttree.cpp b/kexi/formeditor/objecttree.cpp new file mode 100644 index 00000000..d5708773 --- /dev/null +++ b/kexi/formeditor/objecttree.cpp @@ -0,0 +1,244 @@ +/* This file is part of the KDE project + Copyright (C) 2003 Lucijan Busch <lucijan@gmx.at> + Copyright (C) 2006 Jaroslaw Staniek <js@iidea.pl> + + 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. +*/ + +#include <kdebug.h> +#include <qwidget.h> +#include <qvariant.h> +#include <qdom.h> +#include <qtextstream.h> + +#include "form.h" +#include "container.h" +#include "objecttree.h" + + +using namespace KFormDesigner; + +///////////////////////////////////////////////////////////////////////////////////////// +///////////////// ObjectTreeItem ///////////// +//////////////////////////////////////////////////////////////////////////////////////// + + +ObjectTreeItem::ObjectTreeItem(const QString &classn, const QString &name, QWidget *widget, + Container *parentContainer, Container *container) + : m_enabled(true), m_row(-1), m_col(-1), m_rowspan(-1), m_colspan(-1), m_span(false) +{ + m_className = classn; + m_name = name; + m_widget = widget; + m_container = container; + m_eater = new EventEater(widget, parentContainer); + m_parent = 0; + m_subprops = 0; +} + +ObjectTreeItem::~ObjectTreeItem() +{ +// kdDebug() << "ObjectTreeItem deleted: " << name() << endl; + delete m_subprops; +} + +void +ObjectTreeItem::rename(const QString &name) +{ + m_name = name; +} + +void +ObjectTreeItem::addChild(ObjectTreeItem *c) +{ + m_children.append(c); + c->setParent(this); +} + +void +ObjectTreeItem::removeChild(ObjectTreeItem *c) +{ + m_children.remove(c); +} + +void +ObjectTreeItem::addModifiedProperty(const QCString &property, const QVariant &oldValue) +{ + if(property == "name") + return; + + if(!m_props.contains(property)) { + m_props.insert(property, oldValue); + kdDebug() << "ObjectTree::adModProperty(): Added this property in the list: " << property << " oldValue: " << oldValue << endl; + } +} + +void +ObjectTreeItem::addSubproperty(const QCString &property, const QVariant& value) +{ + if (!m_subprops) + m_subprops = new QMap<QString, QVariant>(); + if (!m_props.contains(property)) + m_subprops->insert( property, value ); +} + +void +ObjectTreeItem::storeUnknownProperty(QDomElement &el) +{ + if(!el.isNull()) { + QTextStream ts(m_unknownProps, IO_WriteOnly|IO_Append ); + el.save(ts, 0); + } +} + +void +ObjectTreeItem::setPixmapName(const QCString &property, const QString &name) +{ + m_pixmapNames[property] = name; +} + +QString +ObjectTreeItem::pixmapName(const QCString &property) +{ + if(m_pixmapNames.contains(property)) + return m_pixmapNames[property]; + return QString::null; +} + +void +ObjectTreeItem::setGridPos(int row, int col, int rowspan, int colspan) +{ + m_row = row; m_col = col; + m_rowspan = rowspan; + m_colspan = colspan; + if(colspan || rowspan) + m_span = true; + else + m_span = false; +} + +///////////////////////////////////////////////////////////////////////////////////////// +/// ObjectTree ///////// +//////////////////////////////////////////////////////////////////////////////////////// + +ObjectTree::ObjectTree(const QString &classn, const QString &name, QWidget *widget, Container *container) + : ObjectTreeItem(classn, name, widget, container, container) +{ +} + +ObjectTree::~ObjectTree() +{ +// for(ObjectTreeItem *it = children()->first(); it; it = children()->next()) +// removeItem(it->name()); + while (children()->first()) { + removeItem(children()->first()); + } +} + +bool +ObjectTree::rename(const QString &oldname, const QString &newname) +{ + if(oldname == m_name) + { + ObjectTreeItem::rename(newname); + return true; + } + + ObjectTreeItem *it = lookup(oldname); + if(!it) + return false; + + it->rename(newname); + m_treeDict.remove(oldname); + m_treeDict.insert(newname, it); + + return true; +} + +bool +ObjectTree::reparent(const QString &name, const QString &newparent) +{ + ObjectTreeItem *item = lookup(name); + if(!item) return false; + ObjectTreeItem *parent = lookup(newparent); + if(!parent) return false; + + item->parent()->removeChild(item); + parent->addChild(item); + return true; +} + +ObjectTreeItem* +ObjectTree::lookup(const QString &name) +{ + if(name == this->name()) + return this; + else + return m_treeDict[name]; +} + +void +ObjectTree::addItem(ObjectTreeItem *parent, ObjectTreeItem *c) +{ + m_treeDict.insert(c->name(), c); + + if(!parent) + parent = this; + parent->addChild(c); + m_container->form()->emitChildAdded(c); + + kdDebug() << "ObjectTree::addItem(): adding " << c->name() << " to " << parent->name() << endl; +} + +void +ObjectTree::removeItem(const QString &name) +{ + ObjectTreeItem *c = lookup(name); + removeItem(c); +} + +void +ObjectTree::removeItem(ObjectTreeItem *c) +{ + if (m_container && m_container->form()) + m_container->form()->emitChildRemoved(c); + + for(ObjectTreeItem *it = c->children()->first(); it; it = c->children()->next()) + removeItem(it->name()); + + m_treeDict.remove(c->name()); + c->parent()->removeChild(c); + delete c; +} + +QCString +ObjectTree::generateUniqueName(const QCString &prefix, bool numberSuffixRequired) +{ + /* old way of naming widgets + int appendix = m_names[c] + 1; + QString name(c); + name.append(QString::number(appendix)); + m_names[c] = appendix;*/ + if (!numberSuffixRequired && !lookup(prefix)) + return prefix; + QString name( prefix ); + int i = 2; //start from 2, i.e. we have: "widget", "widget2", etc. + while(lookup(name + QString::number(i))) + i++; + + return (name + QString::number(i)).latin1(); +} + -- cgit v1.2.1