27 #include <qpushbutton.h>
29 #include <qlineedit.h>
33 #include <qcombobox.h>
37 : QDialog(parent, 0, false, Qt::WDestructiveClose)
39 ParentDialog = parent;
41 all =
new QVBoxLayout(
this);
46 new QLabel(tr(
"The search result contains all components whose\n"
47 "name contains the search string. All libraries\n"
48 "are included in the search."),
this) );
50 QHBox *h1 =
new QHBox(
this);
53 new QLabel(tr(
"Search string:"), h1);
54 SearchEdit =
new QLineEdit(h1);
55 connect(SearchEdit, SIGNAL(returnPressed()), SLOT(slotSearch()));
57 QHBox *h2 =
new QHBox(
this);
60 h2->setStretchFactor(
new QWidget(h2), 5);
62 QPushButton *ButtonSearch =
new QPushButton(tr(
"Search"), h2);
63 connect(ButtonSearch, SIGNAL(clicked()), SLOT(slotSearch()));
64 QPushButton *ButtonClose =
new QPushButton(tr(
"Close"), h2);
65 connect(ButtonClose, SIGNAL(clicked()), SLOT(slotClose()));
66 ButtonSearch->setFocus();
68 SearchEdit->setFocus();
77 void SearchDialog::slotClose()
83 void SearchDialog::slotSearch()
85 if(SearchEdit->text().isEmpty()) {
90 bool findComponent =
false;
92 QStringList LibFiles = LibDir.entryList(
"*.lib", QDir::Files, QDir::Name);
95 QTextStream ReadWhole;
96 QString LibraryString, LibName, CompName;
97 QStringList::iterator it;
98 int Start,
End, NameStart, NameEnd;
99 for(it = LibFiles.begin(); it != LibFiles.end(); it++) {
101 if(!File.open(IO_ReadOnly))
continue;
103 ReadWhole.setDevice(&File);
104 LibraryString = ReadWhole.read();
107 Start = LibraryString.find(
"<Qucs Library ");
108 if(Start < 0)
continue;
109 End = LibraryString.find(
'>', Start);
110 if(End < 0)
continue;
111 LibName = LibraryString.mid(Start, End-Start).section(
'"', 1, 1);
114 while((Start=LibraryString.find(
"\n<Component ", Start)) > 0) {
116 NameStart = Start + 11;
117 NameEnd = LibraryString.find(
'>', NameStart);
118 if(NameEnd < 0)
continue;
119 CompName = LibraryString.mid(NameStart, NameEnd-NameStart);
121 End = LibraryString.find(
"\n</Component>", NameEnd);
122 if(End < 0)
continue;
126 if(CompName.find(SearchEdit->text()) >= 0) {
132 findComponent =
true;
133 ParentDialog->
CompList->insertItem(CompName);
135 LibName+
'\n'+LibraryString.mid(Start, End-Start));
142 End = ParentDialog->
Library->count();
143 if(ParentDialog->
Library->text(End-1) != tr(
"Search result"))
144 ParentDialog->
Library->insertItem(tr(
"Search result"));
145 ParentDialog->
Library->setCurrentItem(End);