From 45a38ae48ee3843c76fa27c8bc91f2c36f67a2c3 Mon Sep 17 00:00:00 2001 From: Garux Date: Thu, 15 Mar 2018 01:18:16 +0300 Subject: [PATCH] * introduce globalWarningStream() --- include/itextstream.h | 8 ++++++++ include/modulesystem.h | 2 ++ radiant/console.cpp | 14 ++++++++++++++ radiant/console.h | 1 + radiant/main.cpp | 1 + radiant/server.cpp | 3 +++ 6 files changed, 29 insertions(+) diff --git a/include/itextstream.h b/include/itextstream.h index 7d69c7b5..53e61b68 100644 --- a/include/itextstream.h +++ b/include/itextstream.h @@ -96,6 +96,14 @@ inline TextOutputStream& globalOutputStream(){ return GlobalOutputStream::instance().getOutputStream(); } +class WarningStreamHolder : public OutputStreamHolder {}; +typedef Static GlobalWarningStream; + +/// \brief Returns the global warning stream. Used to display warning messages to the user. +inline TextOutputStream& globalWarningStream(){ + return GlobalWarningStream::instance().getOutputStream(); +} + class ErrorStreamHolder : public OutputStreamHolder {}; typedef Static GlobalErrorStream; diff --git a/include/modulesystem.h b/include/modulesystem.h index d3578ac4..a9a76dec 100644 --- a/include/modulesystem.h +++ b/include/modulesystem.h @@ -67,6 +67,7 @@ virtual void setError( bool error ) = 0; virtual bool getError() const = 0; virtual TextOutputStream& getOutputStream() = 0; +virtual TextOutputStream& getWarningStream() = 0; virtual TextOutputStream& getErrorStream() = 0; virtual DebugMessageHandler& getDebugMessageHandler() = 0; @@ -99,6 +100,7 @@ inline ModuleServer& globalModuleServer(){ inline void initialiseModule( ModuleServer& server ){ GlobalErrorStream::instance().setOutputStream( server.getErrorStream() ); + GlobalWarningStream::instance().setOutputStream( server.getWarningStream() ); GlobalOutputStream::instance().setOutputStream( server.getOutputStream() ); GlobalDebugMessageHandler::instance().setHandler( server.getDebugMessageHandler() ); GlobalModuleServer::instance().set( server ); diff --git a/radiant/console.cpp b/radiant/console.cpp index 2e08e3a5..189a456b 100644 --- a/radiant/console.cpp +++ b/radiant/console.cpp @@ -253,12 +253,26 @@ std::size_t write( const char* buffer, std::size_t length ){ } }; +class SysPrintWarningStream : public TextOutputStream +{ +public: +std::size_t write( const char* buffer, std::size_t length ){ + return Sys_Print( SYS_WRN, buffer, length ); +} +}; + SysPrintOutputStream g_outputStream; TextOutputStream& getSysPrintOutputStream(){ return g_outputStream; } +SysPrintWarningStream g_warningStream; + +TextOutputStream& getSysPrintWarningStream(){ + return g_warningStream; +} + SysPrintErrorStream g_errorStream; TextOutputStream& getSysPrintErrorStream(){ diff --git a/radiant/console.h b/radiant/console.h index 38e479fd..0323f4e8 100644 --- a/radiant/console.h +++ b/radiant/console.h @@ -33,6 +33,7 @@ std::size_t Sys_Print( int level, const char* buf, std::size_t length ); class TextOutputStream; TextOutputStream& getSysPrintOutputStream(); +TextOutputStream& getSysPrintWarningStream(); TextOutputStream& getSysPrintErrorStream(); typedef struct _GtkWidget GtkWidget; diff --git a/radiant/main.cpp b/radiant/main.cpp index 8d60d5ce..55e33696 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -322,6 +322,7 @@ typedef Static GlobalPopupDebugMessageHandler; void streams_init(){ GlobalErrorStream::instance().setOutputStream( getSysPrintErrorStream() ); + GlobalWarningStream::instance().setOutputStream( getSysPrintWarningStream() ); GlobalOutputStream::instance().setOutputStream( getSysPrintOutputStream() ); } diff --git a/radiant/server.cpp b/radiant/server.cpp index aad08221..ff168e5c 100644 --- a/radiant/server.cpp +++ b/radiant/server.cpp @@ -52,6 +52,9 @@ bool getError() const { TextOutputStream& getOutputStream(){ return globalOutputStream(); } +TextOutputStream& getWarningStream(){ + return globalWarningStream(); +} TextOutputStream& getErrorStream(){ return globalErrorStream(); }