20 #include "qtdesignerintegration.h" 24 #include <tqfileinfo.h> 26 #include <tdelocale.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" 41 QtDesignerIntegration::QtDesignerIntegration(KDevLanguageSupport *part,
ImplementationWidget *impl,
bool classHasDefinitions,
const char* name)
42 :KDevDesignerIntegration(part, name), m_part(part), m_impl(impl),
43 m_classHasDefinitions(classHasDefinitions)
47 QtDesignerIntegration::~QtDesignerIntegration()
52 void 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));
67 addFunctionToClass(
function, klass);
70 void 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;
77 void QtDesignerIntegration::removeFunction(
const TQString& formName, KInterfaceDesigner::Function
function)
79 kdDebug() <<
"QtDesignerIntegration::removeFunction: form: " << formName <<
", function: " <<
function.function << endl;
82 bool QtDesignerIntegration::selectImplementation(
const TQString &formName)
84 TQFileInfo fi(formName);
88 if (m_impl->exec(formName))
90 m_implementations[formName] = m_impl->selectedClass();
96 void QtDesignerIntegration::loadSettings(TQDomDocument dom, TQString path)
98 TQDomElement el = DomUtil::elementByPath(dom, path +
"/qtdesigner");
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();
120 void QtDesignerIntegration::saveSettings(TQDomDocument dom, TQString path)
122 kdDebug() <<
"QtDesignerIntegration::saveSettings" << endl;
123 TQDomElement el = DomUtil::createElementByPath(dom, path +
"/qtdesigner");
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());
137 void 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();
151 processImplementationName(impl);
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);
185 void QtDesignerIntegration::openSource(
const TQString &formName)
187 if (!m_implementations.contains(formName))
188 if (!selectImplementation(formName))
190 TQString impl = m_implementations[formName]->fileName();
191 processImplementationName(impl);
192 m_part->partController()->editDocument(KURL(impl), -1, -1);
195 #include "qtdesignerintegration.moc"
virtual void processImplementationName(TQString &name)
Modifies name to be a name of a implementation file for languages that have separate files for interf...