#include <kpluginfactory.h>
#include <kpropertiesdialog.h>
#include <ktoggleaction.h>
+#include <kio/netaccess.h>
+#include <kauthorized.h>
+#include <kshell.h>
#include <QActionGroup>
#include <QApplication>
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,
KonqFileItemCapabilities capabilities(selection);
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
-
+
renameAction->setEnabled(capabilities.supportsMoving());
moveToTrashAction->setEnabled(enableMoveToTrash);
deleteAction->setEnabled(capabilities.supportsDeleting());
sDeleting = false;
sMoving = false;
}
-
+
if ( sMoving )
editActions.append(actionCollection()->action("rename"));
// 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"
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphinpart" version="6" >
+<kpartgui name="dolphinpart" version="7" >
<MenuBar>
<Menu name="edit">
<Action name="rename"/>
<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" />