mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
added command tab to settings but they don't save
This commit is contained in:
parent
871195265a
commit
8693203c6d
|
@ -38,9 +38,9 @@ void CommandManager::setCommands(const QStringList &_commands)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command.at(0) != '/') {
|
// if (command.at(0) != '/') {
|
||||||
command = QString("/") + command;
|
// command = QString("/") + command;
|
||||||
}
|
// }
|
||||||
|
|
||||||
QString commandName = command.mid(0, command.indexOf(' '));
|
QString commandName = command.mid(0, command.indexOf(' '));
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ QStringList CommandManager::getCommands()
|
||||||
return this->commandsStringList;
|
return this->commandsStringList;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CommandManager::execCommand(QString text)
|
QString CommandManager::execCommand(QString text, bool dryRun)
|
||||||
{
|
{
|
||||||
Command command;
|
Command command;
|
||||||
QStringList words = text.split(' ', QString::SkipEmptyParts);
|
QStringList words = text.split(' ', QString::SkipEmptyParts);
|
||||||
|
|
|
@ -18,7 +18,7 @@ class CommandManager
|
||||||
public:
|
public:
|
||||||
static CommandManager &getInstance();
|
static CommandManager &getInstance();
|
||||||
|
|
||||||
QString execCommand(QString text);
|
QString execCommand(QString text, bool dryRun);
|
||||||
|
|
||||||
void loadCommands();
|
void loadCommands();
|
||||||
void saveCommands();
|
void saveCommands();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "widgets/helper/splitinput.hpp"
|
#include "widgets/helper/splitinput.hpp"
|
||||||
|
#include "singletons/commandmanager.hpp"
|
||||||
#include "singletons/completionmanager.hpp"
|
#include "singletons/completionmanager.hpp"
|
||||||
#include "singletons/ircmanager.hpp"
|
#include "singletons/ircmanager.hpp"
|
||||||
#include "singletons/settingsmanager.hpp"
|
#include "singletons/settingsmanager.hpp"
|
||||||
|
@ -82,7 +83,11 @@ SplitInput::SplitInput(Split *_chatWidget)
|
||||||
}
|
}
|
||||||
QString message = textInput.toPlainText();
|
QString message = textInput.toPlainText();
|
||||||
|
|
||||||
c->sendMessage(message.replace('\n', ' '));
|
QString sendMessage =
|
||||||
|
singletons::CommandManager::getInstance().execCommand(message, false);
|
||||||
|
sendMessage = sendMessage.replace('\n', ' ');
|
||||||
|
|
||||||
|
c->sendMessage(sendMessage);
|
||||||
prevMsg.append(message);
|
prevMsg.append(message);
|
||||||
|
|
||||||
event->accept();
|
event->accept();
|
||||||
|
@ -229,6 +234,8 @@ void SplitInput::editTextChanged()
|
||||||
static QRegularExpression spaceRegex("\\s\\s+");
|
static QRegularExpression spaceRegex("\\s\\s+");
|
||||||
text = text.replace(spaceRegex, " ");
|
text = text.replace(spaceRegex, " ");
|
||||||
|
|
||||||
|
text = singletons::CommandManager::getInstance().execCommand(text, true);
|
||||||
|
|
||||||
QString labelText;
|
QString labelText;
|
||||||
|
|
||||||
if (text.length() == 0) {
|
if (text.length() == 0) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "const.hpp"
|
#include "const.hpp"
|
||||||
#include "debug/log.hpp"
|
#include "debug/log.hpp"
|
||||||
#include "singletons/accountmanager.hpp"
|
#include "singletons/accountmanager.hpp"
|
||||||
|
#include "singletons/commandmanager.hpp"
|
||||||
#include "singletons/windowmanager.hpp"
|
#include "singletons/windowmanager.hpp"
|
||||||
#include "twitch/twitchmessagebuilder.hpp"
|
#include "twitch/twitchmessagebuilder.hpp"
|
||||||
#include "twitch/twitchuser.hpp"
|
#include "twitch/twitchuser.hpp"
|
||||||
|
@ -87,8 +88,7 @@ void SettingsDialog::addTabs()
|
||||||
|
|
||||||
this->addTab(this->createBehaviourTab(), "Behaviour", ":/images/behave.svg");
|
this->addTab(this->createBehaviourTab(), "Behaviour", ":/images/behave.svg");
|
||||||
|
|
||||||
// this->addTab(this->createCommandsTab(), "Commands",
|
this->addTab(this->createCommandsTab(), "Commands", ":/images/CustomActionEditor_16x.png");
|
||||||
// ":/images/CustomActionEditor_16x.png");
|
|
||||||
|
|
||||||
this->addTab(this->createEmotesTab(), "Emotes", ":/images/emote.svg");
|
this->addTab(this->createEmotesTab(), "Emotes", ":/images/emote.svg");
|
||||||
|
|
||||||
|
@ -361,8 +361,37 @@ QVBoxLayout *SettingsDialog::createBehaviourTab()
|
||||||
|
|
||||||
QVBoxLayout *SettingsDialog::createCommandsTab()
|
QVBoxLayout *SettingsDialog::createCommandsTab()
|
||||||
{
|
{
|
||||||
|
singletons::CommandManager &commandManager = singletons::CommandManager::getInstance();
|
||||||
|
|
||||||
|
this->commandsTextChangedDelay.setSingleShot(true);
|
||||||
|
|
||||||
auto layout = this->createTabLayout();
|
auto layout = this->createTabLayout();
|
||||||
|
|
||||||
|
layout->addWidget(new QLabel("One command per line. Commands don't save right now"));
|
||||||
|
layout->addWidget(new QLabel("\"/cmd example command\" will print "
|
||||||
|
"\"example command\" when you type /cmd in chat."));
|
||||||
|
layout->addWidget(new QLabel("{1} will be replaced with the first word you type after the "
|
||||||
|
"command, {2} with the second and so on."));
|
||||||
|
layout->addWidget(new QLabel("{1+} will be replaced with first word and everything after, {2+} "
|
||||||
|
"with everything after the second word and so on"));
|
||||||
|
layout->addWidget(new QLabel("Duplicate commands will be ignored."));
|
||||||
|
|
||||||
|
QTextEdit *textEdit = new QTextEdit();
|
||||||
|
textEdit->setPlainText(QString(commandManager.getCommands().join('\n')));
|
||||||
|
|
||||||
|
layout->addWidget(textEdit);
|
||||||
|
|
||||||
|
QObject::connect(textEdit, &QTextEdit::textChanged,
|
||||||
|
[this] { this->commandsTextChangedDelay.start(200); });
|
||||||
|
|
||||||
|
QObject::connect(&this->commandsTextChangedDelay, &QTimer::timeout,
|
||||||
|
[textEdit, &commandManager] {
|
||||||
|
QString text = textEdit->toPlainText();
|
||||||
|
QStringList lines = text.split(QRegularExpression("(\r?\n|\r\n?)"));
|
||||||
|
|
||||||
|
commandManager.setCommands(lines);
|
||||||
|
});
|
||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QStackedLayout>
|
#include <QStackedLayout>
|
||||||
|
#include <QTimer>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <pajlada/settings/setting.hpp>
|
#include <pajlada/settings/setting.hpp>
|
||||||
|
@ -52,6 +53,7 @@ private:
|
||||||
std::vector<SettingsDialogTab *> tabs;
|
std::vector<SettingsDialogTab *> tabs;
|
||||||
|
|
||||||
pajlada::Settings::Setting<int> usernameDisplayMode;
|
pajlada::Settings::Setting<int> usernameDisplayMode;
|
||||||
|
QTimer commandsTextChangedDelay;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
QVBoxLayout tabs;
|
QVBoxLayout tabs;
|
||||||
|
|
Loading…
Reference in a new issue