[Ktutorial-commits] SF.net SVN: ktutorial:[243] trunk/ktutorial/ktutorial-editor/src/view/ TargetAp
Status: Alpha
Brought to you by:
danxuliu
From: <dan...@us...> - 2010-05-18 16:42:51
|
Revision: 243 http://ktutorial.svn.sourceforge.net/ktutorial/?rev=243&view=rev Author: danxuliu Date: 2010-05-18 16:42:44 +0000 (Tue, 18 May 2010) Log Message: ----------- Use KOpenWithDialog instead of a generic KFileDialog to select the target application. Modified Paths: -------------- trunk/ktutorial/ktutorial-editor/src/view/TargetApplicationView.cpp Modified: trunk/ktutorial/ktutorial-editor/src/view/TargetApplicationView.cpp =================================================================== --- trunk/ktutorial/ktutorial-editor/src/view/TargetApplicationView.cpp 2010-05-18 15:42:15 UTC (rev 242) +++ trunk/ktutorial/ktutorial-editor/src/view/TargetApplicationView.cpp 2010-05-18 16:42:44 UTC (rev 243) @@ -21,10 +21,11 @@ #include <QApplication> #include <QScopedPointer> -#include <KFileDialog> -#include <KFileFilterCombo> #include <KLocalizedString> #include <KMessageBox> +#include <KOpenWithDialog> +#include <KShell> +#include <KStandardDirs> //public: @@ -63,18 +64,24 @@ //private: QString TargetApplicationView::askApplicationFilePath() { - QScopedPointer<KFileDialog> dialog(new KFileDialog(QString("/usr/bin"), "", - mParent)); + QScopedPointer<KOpenWithDialog> dialog(new KOpenWithDialog(mParent)); + dialog->hideNoCloseOnExit(); + dialog->hideRunInTerminal(); - dialog->setCaption(i18nc("@title", "Select Executable")); - dialog->setOperationMode(KFileDialog::Other); - dialog->setMode(KFile::File | KFile::ExistingOnly | KFile::LocalOnly); - if (dialog->exec() == QDialog::Rejected) { return ""; } - return dialog->selectedUrl().toLocalFile(); + //The executable returned by the services may contain arguments like "%U". + //We are interested only in the executable itself. + QString executable = KShell::splitArgs(dialog->text())[0]; + + //The executable may be just a name, not the absolute path to the executable + if (KUrl(executable).isRelative()) { + executable = KStandardDirs::findExe(executable); + } + + return executable; } //private slots: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |