aboutsummaryrefslogtreecommitdiff
path: root/main.cc
diff options
context:
space:
mode:
authorAdrian Kummerlaender2015-12-05 19:12:26 +0100
committerAdrian Kummerlaender2015-12-05 19:12:26 +0100
commiteaa6b0b5f43738c0386e99eeba26b44250e6136d (patch)
tree3400c97d336bb59a9216e4e5400ad8f7617a5682 /main.cc
parent428dc1d77bd843c0e7313cb28dc69f26154fdea6 (diff)
downloadMetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar.gz
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar.bz2
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar.lz
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar.xz
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.tar.zst
MetaTerm-eaa6b0b5f43738c0386e99eeba26b44250e6136d.zip
Implement `cd` command to enable changing _MetaTerm_'s working directory
Exposing access to the working directory to QML is the first step towards enabling usage analogously to a normal terminal emulator alongside the management of multiple running appications. i.e. executing `cd` should change the global working directory so that consecutive commands work as expected.
Diffstat (limited to 'main.cc')
-rw-r--r--main.cc30
1 files changed, 28 insertions, 2 deletions
diff --git a/main.cc b/main.cc
index 617b43a..a27ab6c 100644
--- a/main.cc
+++ b/main.cc
@@ -1,12 +1,36 @@
+#include <QDir>
+#include <QQmlContext>
#include <QApplication>
#include <QQmlApplicationEngine>
+class WorkingDirectory : public QObject {
+ Q_OBJECT
+
+ public:
+ Q_INVOKABLE bool cd(const QString& path) const {
+ QDir current(QDir::current());
+
+ const bool result = current.cd(path);
+
+ QDir::setCurrent(current.absolutePath());
+
+ return result;
+ }
+
+ Q_INVOKABLE QString current() const {
+ return QDir::current().absolutePath();
+ }
+};
+
int main(int argc, char *argv[]) {
- QApplication application(argc, argv);
+ WorkingDirectory directory;
+ QApplication application(argc, argv);
+ QQmlApplicationEngine engine(QUrl(QStringLiteral("qrc:/main.qml")));
+
application.setOrganizationName("akr");
application.setApplicationName("MetaTerm");
- QQmlApplicationEngine engine(QUrl(QStringLiteral("qrc:/main.qml")));
+ engine.rootContext()->setContextProperty("workingDirectory", &directory);
QObject::connect(
static_cast<QObject*>(&engine),
@@ -17,3 +41,5 @@ int main(int argc, char *argv[]) {
return application.exec();
}
+
+#include "main.moc"