Skip to content

Commit

Permalink
Forward arguments to KakouneClient from KakouneCli
Browse files Browse the repository at this point in the history
  • Loading branch information
falbru committed Mar 25, 2024
1 parent 4676f45 commit 4286605
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 10 deletions.
8 changes: 6 additions & 2 deletions src/kakounecli.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ KakouneCli::KakouneCli(const QString &service_name) : m_dbusiface(service_name,
{
}

int KakouneCli::run(QList<QString> command)
int KakouneCli::run(QStringList command)
{
QString &command_name = command[0];
if (command_name == "new-client")
{
m_dbusiface.call("newClient");
if (command.size() == 1) {
m_dbusiface.call("newClient");
}else {
m_dbusiface.call("newClient", command.sliced(1).join(" "));
}
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion src/kakounecli.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class KakouneCli
public:
KakouneCli(const QString &service_name);

int run(QList<QString> command);
int run(QStringList command);

private:
QDBusInterface m_dbusiface;
Expand Down
14 changes: 12 additions & 2 deletions src/kakouneclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ void KakouneClient::handleRequest(QJsonObject request)
}
}

KakouneClient::KakouneClient(const QString &session_id)
KakouneClient::KakouneClient(const QString &session_id) : KakouneClient(session_id, "")
{
}

KakouneClient::KakouneClient(const QString &session_id, QString arguments)
{
connect(&m_process, &QProcess::readyReadStandardOutput, [=]() {
QByteArray buffer = m_process.readAllStandardOutput();
Expand All @@ -84,7 +88,13 @@ KakouneClient::KakouneClient(const QString &session_id)

connect(&m_process, &QProcess::finished, this, &KakouneClient::finished);

m_process.start("kak", {"-ui", "json", "-c", session_id});
QStringList process_arguments;
qDebug() << arguments;
process_arguments << "-ui" << "json" << "-c" << session_id;
if (!arguments.isEmpty()) {
process_arguments << "-e" << arguments;
}
m_process.start("kak", process_arguments);
}

KakouneClient::~KakouneClient()
Expand Down
1 change: 1 addition & 0 deletions src/kakouneclient.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class KakouneClient : public QObject
Q_OBJECT
public:
KakouneClient(const QString &session_id);
KakouneClient(const QString &session_id, QString arguments);
~KakouneClient();

void sendKeys(const QString &key);
Expand Down
9 changes: 6 additions & 3 deletions src/kakounewidget.cpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
#include "kakounewidget.hpp"
#include "statusbar.hpp"

KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_options, QWidget *parent) : QWidget(parent)
KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_options, QWidget *parent) : KakouneWidget(session_id, draw_options, "", parent)
{
qDebug("Constructing kakounewidget");
}

KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_options, QString client_arguments, QWidget *parent) : QWidget(parent)
{
m_draw_options = draw_options;

m_client = new KakouneClient(session_id);
m_client = new KakouneClient(session_id, client_arguments);
connect(m_client, &KakouneClient::refresh, this, &KakouneWidget::clientRefreshed);
connect(m_client, &KakouneClient::finished, this, &KakouneWidget::finished);

Expand All @@ -26,6 +28,7 @@ KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_option
layout->addWidget(status_bar);

this->setLayout(layout);

}

QSize KakouneWidget::sizeHint() const
Expand Down
1 change: 1 addition & 0 deletions src/kakounewidget.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class KakouneWidget : public QWidget
Q_OBJECT
public:
KakouneWidget(const QString &session_id, DrawOptions *draw_options, QWidget *parent = nullptr);
KakouneWidget(const QString &session_id, DrawOptions *draw_options, QString client_arguments, QWidget *parent = nullptr);
~KakouneWidget();

KakouneClient *getClient();
Expand Down
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ int main(int argc, char *argv[])
{
KakouneCli cli(DBUS_SERVICE_NAME);

QList<QString> command;
QStringList command;
for (int i = 2; i < argc; i++)
{
command.append(argv[i]);
Expand Down
7 changes: 6 additions & 1 deletion src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,12 @@ void MainWindow::closeEvent(QCloseEvent *ev)

void MainWindow::newClient()
{
KakouneWidget *kakwidget = new KakouneWidget(m_session->getSessionId(), m_draw_options, m_root);
newClient("");
}

void MainWindow::newClient(const QString& arguments)
{
KakouneWidget *kakwidget = new KakouneWidget(m_session->getSessionId(), m_draw_options, arguments, m_root);
connect(kakwidget, &KakouneWidget::finished, m_root, [=]() {
kakwidget->setParent(nullptr);

Expand Down
1 change: 1 addition & 0 deletions src/mainwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class MainWindow : public QMainWindow

public slots:
void newClient();
void newClient(const QString& arguments);

protected:
void closeEvent(QCloseEvent *ev) override;
Expand Down

0 comments on commit 4286605

Please sign in to comment.