[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.
|