20#include "tqtdesignerintegration.h"
24#include <tqfileinfo.h>
28#include <tdemessagebox.h>
33#include <kdevpartcontroller.h>
34#include <kdevcreatefile.h>
35#include <kdevlanguagesupport.h>
36#include <kdevproject.h>
38#include "codemodel_utils.h"
39#include "implementationwidget.h"
41QtDesignerIntegration::QtDesignerIntegration(KDevLanguageSupport *part,
ImplementationWidget *impl,
bool classHasDefinitions,
const char* name)
42 :KDevDesignerIntegration(part, name), m_part(part), m_impl(impl),
43 m_classHasDefinitions(classHasDefinitions)
47QtDesignerIntegration::~QtDesignerIntegration()
52void QtDesignerIntegration::addFunction(
const TQString& formName, KInterfaceDesigner::Function function)
54 kdDebug() <<
"QtDesignerIntegration::addFunction: form: " << formName <<
", function: " << function.function << endl;
56 if (!m_implementations.contains(formName))
57 if (!selectImplementation(formName))
60 ClassDom klass = m_implementations[formName];
63 KMessageBox::error(0, i18n(
"Cannot find implementation class for form: %1").arg(formName));
70void QtDesignerIntegration::editFunction(
const TQString& formName, KInterfaceDesigner::Function oldFunction, KInterfaceDesigner::Function function)
72 kdDebug() <<
"QtDesignerIntegration::editFunction: form: " << formName
73 <<
", old function: " << oldFunction.function
74 <<
", function: " << function.function << endl;
77void QtDesignerIntegration::removeFunction(
const TQString& formName, KInterfaceDesigner::Function function)
79 kdDebug() <<
"QtDesignerIntegration::removeFunction: form: " << formName <<
", function: " << function.function << endl;
82bool QtDesignerIntegration::selectImplementation(
const TQString &formName)
84 TQFileInfo fi(formName);
88 if (m_impl->exec(formName))
90 m_implementations[formName] = m_impl->selectedClass();
96void QtDesignerIntegration::loadSettings(TQDomDocument dom, TQString path)
98 TQDomElement el = DomUtil::elementByPath(dom, path +
"/tqtdesigner");
101 TQDomNodeList impls = el.elementsByTagName(
"implementation");
102 for (uint i = 0; i < impls.count(); ++i)
104 TQDomElement el = impls.item(i).toElement();
107 TQString implementationPath = Relative::File(m_part->project()->projectDirectory(),
108 el.attribute(
"implementationpath"),
true).urlPath();
109 FileDom file = m_part->codeModel()->fileByName(implementationPath);
112 ClassList cllist = file->classByName(el.attribute(
"class"));
113 TQString uiPath = Relative::File(m_part->project()->projectDirectory(),
114 el.attribute(
"path"),
true).urlPath();
115 if (cllist.count() > 0)
116 m_implementations[uiPath] = cllist.first();
120void QtDesignerIntegration::saveSettings(TQDomDocument dom, TQString path)
122 kdDebug() <<
"QtDesignerIntegration::saveSettings" << endl;
123 TQDomElement el = DomUtil::createElementByPath(dom, path +
"/tqtdesigner");
124 for (TQMap<TQString, ClassDom>::const_iterator it = m_implementations.begin();
125 it != m_implementations.end(); ++it)
127 TQDomElement il = dom.createElement(
"implementation");
129 il.setAttribute(
"path",
130 Relative::File(m_part->project()->projectDirectory(), it.key()).rurl());
131 il.setAttribute(
"implementationpath",
132 Relative::File(m_part->project()->projectDirectory(), it.data()->fileName()).rurl());
133 il.setAttribute(
"class", it.data()->name());
137void QtDesignerIntegration::openFunction(
const TQString &formName,
const TQString &functionName)
139 kdDebug() <<
"QtDesignerIntegration::openFunction, formName = " << formName
140 <<
", functionName = " << functionName << endl;
141 TQString fn = functionName;
142 if (fn.find(
"(") > 0)
143 fn.remove(fn.find(
"("), fn.length());
145 if (!m_implementations[formName])
148 int line = -1, col = -1;
150 TQString impl = m_implementations[formName]->fileName();
153 if (m_part->codeModel()->hasFile(impl))
155 if (m_classHasDefinitions)
157 FunctionDefinitionList list =
158 m_part->codeModel()->fileByName(impl)->functionDefinitionList();
159 for (FunctionDefinitionList::const_iterator it = list.begin(); it != list.end(); ++it)
161 if ((*it)->name() == fn)
162 (*it)->getStartPosition(&line, &col);
168 m_part->codeModel()->fileByName(impl)->functionList();
169 for (FunctionList::const_iterator it = list.begin(); it != list.end(); ++it)
171 if ((*it)->name() == fn)
172 (*it)->getStartPosition(&line, &col);
177 m_part->partController()->editDocument(KURL(impl), line, col);
185void QtDesignerIntegration::openSource(
const TQString &formName)
187 if (!m_implementations.contains(formName))
188 if (!selectImplementation(formName))
190 TQString impl = m_implementations[formName]->fileName();
192 m_part->partController()->editDocument(KURL(impl), -1, -1);
195#include "tqtdesignerintegration.moc"
virtual void addFunctionToClass(KInterfaceDesigner::Function function, ClassDom klass)=0
Reimplement this to add a function to a class.
virtual void processImplementationName(TQString &name)
Modifies name to be a name of a implementation file for languages that have separate files for interf...