20 #include "implementationwidget.h" 22 #include <tqfileinfo.h> 23 #include <tqtextstream.h> 28 #include <tqradiobutton.h> 30 #include <klineedit.h> 31 #include <tdelocale.h> 32 #include <tdemessagebox.h> 33 #include <tdelistview.h> 35 #include <kdevproject.h> 37 #include <filetemplate.h> 38 #include <kdevlanguagesupport.h> 41 class ClassItem:
public TDEListViewItem{
43 ClassItem(TDEListViewItem *parent, ClassDom dom)
44 :TDEListViewItem(parent, dom->name(), dom->fileName()), m_dom(dom) { setOpen(
true); }
45 ClassItem(TDEListView *parent, ClassDom dom)
46 :TDEListViewItem(parent, dom->name(), dom->fileName()), m_dom(dom) { setOpen(
true); }
47 ClassDom dom()
const {
return m_dom; }
52 class NamespaceItem:
public TDEListViewItem{
54 NamespaceItem(TDEListViewItem *parent, NamespaceDom dom)
55 :TDEListViewItem(parent, dom->name(), dom->fileName()), m_dom(dom) { setOpen(
true); }
56 NamespaceItem(TDEListView *parent, NamespaceDom dom)
57 :TDEListViewItem(parent, dom->name(), dom->fileName()), m_dom(dom) { setOpen(
true); }
58 NamespaceDom dom()
const {
return m_dom; }
64 ImplementationWidget::ImplementationWidget(KDevLanguageSupport *part, TQWidget* parent,
const char* name,
bool modal)
65 :CreateImplemenationWidgetBase(parent, name, modal), m_part(part)
71 m_formName = formName;
74 fileNameEdit->clear();
75 classNameEdit->clear();
78 DomUtil::openDOMFile(doc, m_formName);
79 m_baseClassName = DomUtil::elementByPathExt(doc,
"class").text();
80 setCaption(i18n(
"Create or Select Implementation Class for: %1").arg(m_baseClassName));
82 TDEListViewItem *item =
new TDEListViewItem(classView, i18n(
"Namespaces && Classes"));
84 processNamespaces(m_part->codeModel()->globalNamespace(), item);
87 void ImplementationWidget::processNamespaces(NamespaceDom dom, TDEListViewItem *parent)
89 const NamespaceList nslist = dom->namespaceList();
90 for (NamespaceList::const_iterator it = nslist.begin(); it != nslist.end(); ++it)
91 processNamespaces(*it,
new ImplUtils::NamespaceItem(parent, *it));
92 const ClassList cllist = dom->classList();
93 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
94 processClasses(*it,
new ImplUtils::ClassItem(parent, *it));
97 void ImplementationWidget::processClasses(ClassDom dom, TDEListViewItem *parent)
99 const ClassList cllist = dom->classList();
100 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
101 processClasses(*it,
new ImplUtils::ClassItem(parent, *it));
104 ImplementationWidget::~ImplementationWidget()
109 void ImplementationWidget::classNameChanged(
const TQString &text)
111 fileNameEdit->setText(text.lower());
114 void ImplementationWidget::accept()
116 if (createButton->isOn())
118 if (classNameEdit->text().isEmpty())
122 ClassList cllist = m_part->codeModel()->globalNamespace()->classByName(classNameEdit->text());
123 if (cllist.count() > 0)
124 m_selectedClass = cllist.first();
126 KMessageBox::error(0, i18n(
"Class was created but not found in class store."));
128 else if (useButton->isOn())
130 if (!classView->currentItem())
132 ImplUtils::ClassItem *item =
dynamic_cast<ImplUtils::ClassItem*
>(classView->currentItem());
135 m_selectedClass = item->dom();
142 return m_selectedClass;
154 return TQDialog::exec();
157 #include "implementationwidget.moc"