/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #ifndef CRYINCLUDE_EDITOR_CONTROLS_CONSOLESCBMFC_H #define CRYINCLUDE_EDITOR_CONTROLS_CONSOLESCBMFC_H #pragma once #if !defined(Q_MOC_RUN) #include #include #include #include "ConsoleSCB.h" #endif class QMenu; class ConsoleWidget; class QFocusEvent; namespace Ui { class ConsoleMFC; } namespace MFC { struct ConsoleLine { QString text; bool newLine; }; typedef std::deque Lines; class ConsoleLineEdit : public QLineEdit { Q_OBJECT public: explicit ConsoleLineEdit(QWidget* parent = nullptr); protected: void mousePressEvent(QMouseEvent* ev) override; void mouseDoubleClickEvent(QMouseEvent* ev) override; void keyPressEvent(QKeyEvent* ev) override; bool event(QEvent* ev) override; signals: void variableEditorRequested(); void setWindowTitle(const QString&); private: void DisplayHistory(bool bForward); QStringList m_history; unsigned int m_historyIndex; bool m_bReusedHistory; }; class ConsoleTextEdit : public QTextEdit { Q_OBJECT public: explicit ConsoleTextEdit(QWidget* parent = nullptr); }; class CConsoleSCB : public QWidget { Q_OBJECT public: explicit CConsoleSCB(QWidget* parent = nullptr); ~CConsoleSCB(); static void RegisterViewClass(); void SetInputFocus(); void AddToConsole(const QString& text, bool bNewLine); void FlushText(); void showPopupAndSetTitle(); QSize sizeHint() const override; QSize minimumSizeHint() const override; static CConsoleSCB* GetCreatedInstance(); static void AddToPendingLines(const QString& text, bool bNewLine); // call this function instead of AddToConsole() until an instance of CConsoleSCB exists to prevent messages from getting lost public Q_SLOTS: void OnStyleSettingsChanged(); private Q_SLOTS: void showVariableEditor(); private: QScopedPointer ui; int m_richEditTextLength; Lines m_lines; static Lines s_pendingLines; QList m_colorTable; SEditorSettings::ConsoleColorTheme m_backgroundTheme; }; } // namespace MFC #endif // CRYINCLUDE_EDITOR_CONTROLS_CONSOLESCB_H