forked from francescmm/GitQlient
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Terminal.cpp
71 lines (58 loc) · 1.73 KB
/
Terminal.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "Terminal.h"
#include <QVBoxLayout>
#include <QLineEdit>
#include <QTextBrowser>
#include <QApplication>
#include <QFile>
#include "git.h"
Terminal::Terminal(QSharedPointer<Git> git)
: QDialog()
, mGit(git)
, outputTerminal(new QTextBrowser())
{
setWindowTitle(tr("GitQlient terminal"));
setMinimumSize(800, 400);
setAttribute(Qt::WA_DeleteOnClose);
QFile styles(":/stylesheet.css");
if (styles.open(QIODevice::ReadOnly))
{
setStyleSheet(QString::fromUtf8(styles.readAll()));
styles.close();
}
const auto leGitCommand = new QLineEdit();
leGitCommand->setObjectName("leGitCommand");
leGitCommand->setPlaceholderText(tr("Enter Git command..."));
outputTerminal->setObjectName("outputTerminal");
const auto vLayout = new QVBoxLayout(this);
vLayout->setSpacing(0);
vLayout->setContentsMargins(QMargins());
vLayout->addWidget(leGitCommand);
vLayout->addWidget(outputTerminal);
connect(leGitCommand, &QLineEdit::returnPressed, this, &Terminal::executeCommand);
}
void Terminal::executeCommand()
{
const auto leGitCommand = dynamic_cast<QLineEdit *>(sender());
if (!leGitCommand->text().isEmpty())
{
const auto order = leGitCommand->text();
if (order == "clear")
outputTerminal->clear();
else if (order == "update")
emit signalUpdateUi();
else if (order == "exit" || order == "quit")
close();
else
{
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
const auto ret = mGit->run(leGitCommand->text());
QApplication::restoreOverrideCursor();
outputTerminal->setText(ret.second);
}
}
leGitCommand->clear();
}
int Terminal::exec()
{
return QDialog::exec();
}