================================================================================== Limitations of the current framework: - Codes the translated state only for TranslatedNotification as part of the type. - Does not code the intended recipient (user, developer, ...) Problems: - Some errors are intended for developers, some errors may only be intended for users, if, for example, there is another developer error which already contains all the information. The current framework may lead to information duplication or to showing to the user developer information, which is perceived as annoying. - Logs shall be in English (report view), while every message to the user (UI) shall be translated. The current framework can only differentiate where to report based on subscription (legacy logs do not subscribe to notifications), and for notifications, whether it is translated or not depends on the type. It is not possible to code errors or warnings that are already translated. Solution: - To extend the ILogger interface with additional metainformation, indicating the intended recipient (User, Developer, All), and the content of the message (translated, untranslated, untranslatable). The latter is useful for dynamic strings that won't find a match in the translation framework. Bonus: - This extended version allows to do away with translatednotification, as now any message can be independently marked as translated or untranslated or untraslatable. - It is now possible to provide the right icon of severity (error, warning, info), even when it is only user intended and already translated.
63 lines
2.7 KiB
C++
63 lines
2.7 KiB
C++
/***************************************************************************
|
|
* Copyright (c) 2004 Jürgen Riegel <juergen.riegel@web.de> *
|
|
* *
|
|
* This file is part of the FreeCAD CAx development system. *
|
|
* *
|
|
* This library is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU Library General Public *
|
|
* License as published by the Free Software Foundation; either *
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
* *
|
|
* This library is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU Library General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Library General Public *
|
|
* License along with this library; see the file COPYING.LIB. If not, *
|
|
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
|
* Suite 330, Boston, MA 02111-1307, USA *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
|
|
#ifndef GUI_GUICONSOLE_H
|
|
#define GUI_GUICONSOLE_H
|
|
|
|
|
|
#include <Base/Console.h>
|
|
|
|
namespace Gui {
|
|
|
|
/** The console window class
|
|
* This class opens a console window when instantiated
|
|
* and redirects the stdio streams to it as long it exists.
|
|
* This is for Windows only!
|
|
* After instantiation it automatically registers itself at
|
|
* the FCConsole class and gets all the FCConsoleObserver
|
|
* messages. The class must not used directly! Only the
|
|
* FCConsole class is allowed!
|
|
* @see FCConsole
|
|
* \author Jürgen Riegel
|
|
*/
|
|
class GuiExport GUIConsole :public Base::ILogger
|
|
{
|
|
public:
|
|
/// Constructor
|
|
GUIConsole();
|
|
/// Destructor
|
|
~GUIConsole() override;
|
|
void SendLog(const std::string& notifiername, const std::string& msg, Base::LogStyle level,
|
|
Base::IntendedRecipient recipient, Base::ContentType content) override;
|
|
const char* Name() override {return "GUIConsole";}
|
|
|
|
protected:
|
|
static const unsigned int s_nMaxLines;
|
|
static unsigned int s_nRefCount;
|
|
};
|
|
|
|
} // namespace Gui
|
|
|
|
#endif // GUI_GUICONSOLE_H
|
|
|