Imported initial directory implementation from terminal-app.

This commit is contained in:
Filippo Scognamiglio 2014-10-04 15:01:50 +02:00
parent f15440c3c3
commit 15a951288d
4 changed files with 22 additions and 23 deletions

View File

@ -137,6 +137,7 @@ Item{
} }
Component.onCompleted: { Component.onCompleted: {
shadersettings.terminalFontChanged.connect(handleFontChange); shadersettings.terminalFontChanged.connect(handleFontChange);
ksession.startShellProgram();
forceActiveFocus(); forceActiveFocus();
} }
} }

View File

@ -31,8 +31,7 @@
#include <stdlib.h> #include <stdlib.h>
// Qt // Qt
#include <QGuiApplication> #include <QQuickWindow>
#include <QtGui/QWindow>
#include <QtCore/QByteRef> #include <QtCore/QByteRef>
#include <QtCore/QDir> #include <QtCore/QDir>
@ -143,7 +142,12 @@ WId Session::windowId() const
// window = window->parentWidget(); // window = window->parentWidget();
// } // }
return QGuiApplication::focusWindow()->winId(); //return QGuiApplication::focusWindow()->winId();
//There is an issue here! Probably this always returns zero.
//but I try to preseve the behavior there was before.
QQuickWindow * window = _views.first()->window();
return (window ? window->winId() : 0);
} }
} }

View File

@ -35,8 +35,6 @@ KSession::KSession(QObject *parent) :
QObject(parent), m_session(createSession("KSession")) QObject(parent), m_session(createSession("KSession"))
{ {
connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished()));
m_session->run();
} }
KSession::~KSession() KSession::~KSession()
@ -159,33 +157,27 @@ void KSession::setEnvironment(const QStringList &environment)
void KSession::setShellProgram(const QString &progname) void KSession::setShellProgram(const QString &progname)
{ {
if (!m_session)
return;
m_session->setProgram(progname); m_session->setProgram(progname);
} }
void KSession::setWorkingDirectory(const QString &dir) void KSession::setInitialWorkingDirectory(const QString &dir)
{ {
if (!m_session) _initialWorkingDirectory = dir;
return;
m_session->setInitialWorkingDirectory(dir); m_session->setInitialWorkingDirectory(dir);
} }
QString KSession::getInitialWorkingDirectory()
{
return _initialWorkingDirectory;
}
void KSession::setArgs(QStringList &args) void KSession::setArgs(QStringList &args)
{ {
if (!m_session)
return;
m_session->setArguments(args); m_session->setArguments(args);
} }
void KSession::setTextCodec(QTextCodec *codec) void KSession::setTextCodec(QTextCodec *codec)
{ {
if (!m_session)
return;
m_session->setCodec(codec); m_session->setCodec(codec);
} }

View File

@ -34,6 +34,7 @@ class KSession : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString kbScheme READ getKeyBindings WRITE setKeyBindings NOTIFY changedKeyBindings) Q_PROPERTY(QString kbScheme READ getKeyBindings WRITE setKeyBindings NOTIFY changedKeyBindings)
Q_PROPERTY(QString initialWorkingDirectory READ getInitialWorkingDirectory WRITE setInitialWorkingDirectory)
public: public:
KSession(QObject *parent = 0); KSession(QObject *parent = 0);
@ -43,9 +44,6 @@ public:
//bool setup(); //bool setup();
void addView(KTerminalDisplay *displa); void addView(KTerminalDisplay *displa);
//start shell program if it was not started in constructor
void startShellProgram();
int getRandomSeed(); int getRandomSeed();
QString getKeyBindings(); QString getKeyBindings();
@ -57,8 +55,9 @@ public:
// Shell program, default is /bin/bash // Shell program, default is /bin/bash
void setShellProgram(const QString & progname); void setShellProgram(const QString & progname);
//working directory //Initial working directory
void setWorkingDirectory(const QString & dir); void setInitialWorkingDirectory(const QString & dir);
QString getInitialWorkingDirectory();
// Shell program args, default is none // Shell program args, default is none
void setArgs(QStringList & args); void setArgs(QStringList & args);
@ -106,6 +105,8 @@ public slots:
void setKeyBindings(const QString & kb); void setKeyBindings(const QString & kb);
void setTitle(QString name); void setTitle(QString name);
void startShellProgram();
int getShellPID(); int getShellPID();
void changeDir(const QString & dir); void changeDir(const QString & dir);
@ -125,6 +126,7 @@ private slots:
private: private:
//Konsole::KTerminalDisplay *m_terminalDisplay; //Konsole::KTerminalDisplay *m_terminalDisplay;
QString _initialWorkingDirectory;
Session *m_session; Session *m_session;
}; };