]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Continue cleaning up the menus of "konqueror as a webbrowser" : moved "Tools / Open...
authorDavid Faure <faure@kde.org>
Wed, 4 Jun 2008 11:51:54 +0000 (11:51 +0000)
committerDavid Faure <faure@kde.org>
Wed, 4 Jun 2008 11:51:54 +0000 (11:51 +0000)
Thanks to Kevin for reminding me of this one.

svn path=/trunk/KDE/kdebase/apps/; revision=816632

src/dolphinpart.cpp
src/dolphinpart.h
src/dolphinpart.rc

index 766a8f0dd953a6091dbc959b1266b9fe4005392d..686dde5b877c58ab83314752e78dc8307e58ca82 100644 (file)
@@ -38,6 +38,9 @@
 #include <kpluginfactory.h>
 #include <kpropertiesdialog.h>
 #include <ktoggleaction.h>
+#include <kio/netaccess.h>
+#include <kauthorized.h>
+#include <kshell.h>
 
 #include <QActionGroup>
 #include <QApplication>
@@ -164,6 +167,16 @@ void DolphinPart::createActions()
     createGoAction("go_autostart", "",
                    i18nc("@action:inmenu Go", "Autostart"), KGlobalSettings::autostartPath(),
                    goActionGroup);
+
+    // Tools menu
+    if (KAuthorized::authorizeKAction("shell_access")) {
+        KAction* action = actionCollection()->addAction("open_terminal");
+        action->setIcon(KIcon("utilities-terminal"));
+        action->setText(i18nc("@action:inmenu Tools", "Open &Terminal"));
+        connect(action, SIGNAL(triggered()), SLOT(slotOpenTerminal()));
+        action->setShortcut(Qt::Key_F4);
+    }
+
 }
 
 void DolphinPart::createGoAction(const char* name, const char* iconName,
@@ -208,7 +221,7 @@ void DolphinPart::slotSelectionChanged(const KFileItemList& selection)
 
         KonqFileItemCapabilities capabilities(selection);
         const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
-        
+
         renameAction->setEnabled(capabilities.supportsMoving());
         moveToTrashAction->setEnabled(enableMoveToTrash);
         deleteAction->setEnabled(capabilities.supportsDeleting());
@@ -336,7 +349,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
             sDeleting = false;
             sMoving = false;
         }
-    
+
         if ( sMoving )
             editActions.append(actionCollection()->action("rename"));
 
@@ -458,4 +471,35 @@ void DolphinPart::setNameFilter(const QString& nameFilter)
     // TODO save/restore name filter in saveState/restoreState like KonqDirPart did in kde3?
 }
 
+void DolphinPart::slotOpenTerminal()
+{
+    KConfigGroup confGroup(KGlobal::config(), "General"); // set by componentchooser kcm
+    const QString preferredTerminal = confGroup.readPathEntry("TerminalApplication", "konsole");
+
+    QString dir(QDir::homePath());
+
+    KUrl u(url());
+
+    // If the given directory is not local, it can still be the URL of an
+    // ioslave using UDS_LOCAL_PATH which to be converted first.
+    u = KIO::NetAccess::mostLocalUrl(u, widget());
+
+    //If the URL is local after the above conversion, set the directory.
+    if (u.isLocalFile()) {
+        dir = u.path();
+    }
+
+    // Compensate for terminal having arguments.
+    QStringList args = KShell::splitArgs(preferredTerminal);
+    if (args.isEmpty()) {
+        return;
+    }
+    const QString prog = args.takeFirst();
+    if (prog == "konsole") {
+        args << "--workdir";
+        args << dir;
+    }
+    QProcess::startDetached(prog, args);
+}
+
 #include "dolphinpart.moc"
index 612c22aa7e3a58bdbe973cc14cdaec43b9cac4d2..ac32c5f43581ddb4b4e80fea76ecf739910cce70 100644 (file)
@@ -172,6 +172,11 @@ private Q_SLOTS:
      */
     void slotProperties();
 
+    /**
+     * Open a terminal window, starting with the current directory.
+     */
+    void slotOpenTerminal();
+
 private:
     void createActions();
     void createGoAction(const char* name, const char* iconName,
index 2e3f63e5c39b1e14bb2b729e3e56eeb2bf61b430..6efc50ba94b682dda919bbd0e4926fe3d57406c2 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphinpart" version="6" >
+<kpartgui name="dolphinpart" version="7" >
  <MenuBar>
   <Menu name="edit">
    <Action name="rename"/>
@@ -50,6 +50,7 @@
     <Action name="go_autostart"/>
   </Menu>
   <Menu name="tools">
+    <Action name="open_terminal"/>
     <Action name="find_file" />
     <Action name="show_filter_bar" />
     <Action name="compare_files" />