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