diff --git a/src/blackgui/commandinput.cpp b/src/blackgui/commandinput.cpp new file mode 100644 index 000000000..75cddaae7 --- /dev/null +++ b/src/blackgui/commandinput.cpp @@ -0,0 +1,42 @@ +/* Copyright (C) 2015 + * swift project community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "commandinput.h" +#include + +namespace BlackGui +{ + + CCommandInput::CCommandInput(QWidget *parent) : + QLineEdit(parent) + { + connect(this, &CCommandInput::returnPressed, this, &CCommandInput::validateCommand); + } + + void CCommandInput::validateCommand() + { + QString commandLine = text(); + setText(QStringLiteral("")); + + if (commandLine.startsWith('.')) + { + emit commandEntered(commandLine, commandInputOriginator()); + } + } + + const QString &CCommandInput::commandInputOriginator() + { + // string is generated once, the timestamp allows to use multiple + // components (as long as they are not generated at the same ms) + static const QString o = QStringLiteral("COMMANDINPUT:").append(QString::number(QDateTime::currentMSecsSinceEpoch())); + return o; + } + +} + diff --git a/src/blackgui/commandinput.h b/src/blackgui/commandinput.h new file mode 100644 index 000000000..6c1cd6900 --- /dev/null +++ b/src/blackgui/commandinput.h @@ -0,0 +1,52 @@ +/* Copyright (C) 2015 + * swift project community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKGUI_COMMANDINPUT_H +#define BLACKGUI_COMMANDINPUT_H + +#include "blackguiexport.h" +#include +#include + +namespace BlackGui +{ + + //! Specialized LineEdit for command inputs + class BLACKGUI_EXPORT CCommandInput : public QLineEdit + { + Q_OBJECT + + public: + + //! Constructor + CCommandInput(QWidget *parent = nullptr); + + //! Destructor + ~CCommandInput() {} + + signals: + + //! Command was entered + void commandEntered(const QString &command, const QString &originator); + + private slots: + + //! Basic command validation + void validateCommand(); + + private: + + const QString &commandInputOriginator(); + }; + +} + +#endif // CCOMMANDINPUT_H