// Copyright 2007-2020 David Robillard // SPDX-License-Identifier: GPL-3.0-or-later #ifndef PATCHAGE_TEXTVIEWLOG_HPP #define PATCHAGE_TEXTVIEWLOG_HPP #include "ILog.hpp" #include #include #include namespace Gtk { class TextView; } // namespace Gtk namespace patchage { template class Widget; /// Log that writes colored messages to a Gtk TextView class TextViewLog : public ILog { public: explicit TextViewLog(Widget& text_view); TextViewLog(const TextViewLog&) = delete; TextViewLog& operator=(const TextViewLog&) = delete; TextViewLog(TextViewLog&&) = delete; TextViewLog& operator=(TextViewLog&&) = delete; ~TextViewLog() override = default; void info(const std::string& msg) override; void error(const std::string& msg) override; void warning(const std::string& msg) override; int min_height() const; const Widget& text_view() const { return _text_view; } Widget& text_view() { return _text_view; } private: Glib::RefPtr _error_tag; Glib::RefPtr _warning_tag; Widget& _text_view; }; } // namespace patchage #endif // PATCHAGE_TEXTVIEWLOG_HPP