/* Copyright (C) 1998 Stefan Westerfeld stefan@space.twc.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "midiinstdlg.h" #include <klocale.h> #include <kstandarddirs.h> #include <kapplication.h> #include <tqlayout.h> #include <tqlabel.h> #include <tqfile.h> #include <tqdir.h> #include <kbuttonbox.h> #include <kseparator.h> #include <kdebug.h> #include <tqbutton.h> #include <tqpushbutton.h> #include <kstdguiitem.h> static TQStringList getArtsPath() { TQStringList artsPath; TQString dir = locate("data", "artsbuilder/examples/"); artsPath += dir; TQString home = TQDir::homeDirPath() + "/arts/structures/"; artsPath += home; return artsPath; } static TQStringList listFiles(TQString directory, TQString extension) { TQStringList result; TQStringList artsPath = getArtsPath(); TQStringList::Iterator it; for ( it = artsPath.begin(); it != artsPath.end(); it++ ) { TQString pathname = *it + "/" + directory; TQDir dir(pathname, extension); if (dir.exists()) { //kdDebug() << "found dir " << dir.absPath() << endl; result += dir.entryList(); } } return result; } MidiInstDlg::MidiInstDlg(TQWidget *parent) :TQDialog(parent,"instrument",TRUE) { TQVBoxLayout *maintqlayout = new TQVBoxLayout(this); // caption label: title maintqlayout->addSpacing(5); TQLabel *captionlabel = new TQLabel(this); TQFont labelfont(captionlabel->font()); labelfont.setPointSize(labelfont.pointSize()*3/2); captionlabel->setFont(labelfont); captionlabel->setText(TQString(" ")+i18n("Instrument")+TQString(" ")); captionlabel->tqsetAlignment(AlignCenter); //min_size(captionlabel); maintqlayout->addWidget(captionlabel); // hruler maintqlayout->addSpacing(5); KSeparator *ruler2 = new KSeparator( KSeparator::HLine, this); maintqlayout->addWidget(ruler2); maintqlayout->addSpacing(5); // combobox box = new TQComboBox(this); TQStringList instruments = listFiles(".","*.arts"); TQStringList::Iterator it; for ( it = instruments.begin(); it != instruments.end(); it++ ) { TQString modname = *it; TQString prefix = TQString::tqfromLatin1("instrument_"); if (modname.length() > 5) modname.truncate(modname.length()-5); // kill .arts extension if ( (modname.startsWith(prefix)) && (!modname.contains("_GUI")) ) box->insertItem(modname.mid(prefix.length())); //kdDebug() << "inserted instrument: " << modname.mid(prefix.length()) << endl; } TQStringList maps = listFiles(".","*.arts-map"); for ( it = maps.begin(); it != maps.end(); it++ ) { TQString modname = *it; TQString prefix = TQString::tqfromLatin1("instrument_"); if (modname.length() > 9) modname.truncate(modname.length()-9); // kill .arts-map extension if (modname.startsWith(prefix)) box->insertItem(modname.mid(prefix.length())); //kdDebug() << "inserted map: " << modname.mid(prefix.length()) << endl; } maintqlayout->addWidget(box); // hruler maintqlayout->addSpacing(5); KSeparator *ruler = new KSeparator( KSeparator::HLine, this); maintqlayout->addWidget(ruler); maintqlayout->addSpacing(5); // buttons TQHBoxLayout *buttontqlayout = new TQHBoxLayout; maintqlayout->addSpacing(5); maintqlayout->addLayout(buttontqlayout); maintqlayout->addSpacing(5); buttontqlayout->addSpacing(5); KButtonBox *bbox = new KButtonBox(this); bbox->addButton(KStdGuiItem::help(), TQT_TQOBJECT(this), TQT_SLOT( help() )); bbox->addStretch(1); TQButton *okbutton = bbox->addButton(KStdGuiItem::ok()); connect( okbutton, TQT_SIGNAL( clicked() ), TQT_SLOT(accept() ) ); bbox->tqlayout(); buttontqlayout->addWidget(bbox); buttontqlayout->addSpacing(5); maintqlayout->freeze(); } TQCString MidiInstDlg::filename() { TQStringList artsPath = getArtsPath(); TQString instrument = box->currentText(); TQStringList::Iterator it; for ( it = artsPath.begin(); it != artsPath.end(); it++ ) { TQString pathname = *it + TQString::tqfromLatin1("/instrument_") + instrument + TQString::tqfromLatin1(".arts"); TQFileInfo fi(pathname); if (fi.exists() && fi.isReadable()) return TQFile::encodeName(pathname); pathname = *it + TQString::tqfromLatin1("/instrument_") + instrument + TQString::tqfromLatin1(".arts-map"); fi.setFile(pathname); if (fi.exists() && fi.isReadable()) return TQFile::encodeName(pathname); } return ""; } void MidiInstDlg::help() { KApplication::kApplication()->invokeHelp("", "artsbuilder"); } #include "midiinstdlg.moc"