X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fdebug.C;h=bbf67f0fe52f35b20d7b6a4a5ed5b649c599a250;hb=024275f0690b41634e26dabe8758e3dc6cd31ee2;hp=ff4bdc7c48b4af01ea8525293e0798bcfcabf113;hpb=e7401bd8f2310213b4b765c01676459f37adb530;p=lyx.git diff --git a/src/debug.C b/src/debug.C index ff4bdc7c48..bbf67f0fe5 100644 --- a/src/debug.C +++ b/src/debug.C @@ -1,24 +1,37 @@ -/* This file is part of -* ====================================================== -* -* LyX, The Document Processor -* -* Copyright 1999-2000 The LyX Team. -* -* ====================================================== */ - -#ifdef __GNUG__ -#pragma implementation -#endif +/** + * \file debug.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * + * Full author contact details are available in file CREDITS. + */ #include + #include "debug.h" +#include "gettext.h" + +#include "support/convert.h" +#include "support/lstrings.h" +#include #include -using std::ostream; + +namespace lyx { + +using support::ascii_lowercase; +using support::bformat; +using support::isStrInt; + using std::setw; -using std::endl; +using std::string; +using std::ostream; + +namespace { struct error_item { Debug::type level; @@ -26,56 +39,59 @@ struct error_item { char const * desc; }; -static error_item errorTags[] = { - { Debug::NONE, "none", "No debugging message"}, - { Debug::INFO, "info", "General information"}, - { Debug::INIT, "init", "Program initialisation"}, - { Debug::KEY, "key", "Keyboard events handling"}, - { Debug::GUI, "gui", "GUI handling"}, - { Debug::PARSER, "parser", "Lyxlex grammer parser"}, - { Debug::LYXRC, "lyxrc", "Configuration files reading"}, - { Debug::KBMAP, "kbmap", "Custom keyboard definition"}, - { Debug::LATEX, "latex", "LaTeX generation/execution"}, - { Debug::MATHED, "mathed", "Math editor"}, - { Debug::FONT, "font", "Font handling"}, - { Debug::TCLASS, "tclass", "Textclass files reading"}, - { Debug::LYXVC, "lyxvc", "Version control"}, - { Debug::LYXSERVER, "lyxserver", "External control interface"}, - { Debug::ROFF, "roff", "Keep *roff temporary files"}, - { Debug::ACTION, "action", "User commands"}, - { Debug::LYXLEX, "lyxlex", "The LyX Lexxer"}, - { Debug::DEPEND, "depend", "Dependency information"}, - { Debug::INSETS, "insets", "LyX Insets"}, - { Debug::ANY, "any", "All debugging messages"} + +error_item errorTags[] = { + { Debug::NONE, "none", N_("No debugging message")}, + { Debug::INFO, "info", N_("General information")}, + { Debug::INIT, "init", N_("Program initialisation")}, + { Debug::KEY, "key", N_("Keyboard events handling")}, + { Debug::GUI, "gui", N_("GUI handling")}, + { Debug::PARSER, "parser", N_("Lyxlex grammar parser")}, + { Debug::LYXRC, "lyxrc", N_("Configuration files reading")}, + { Debug::KBMAP, "kbmap", N_("Custom keyboard definition")}, + { Debug::LATEX, "latex", N_("LaTeX generation/execution")}, + { Debug::MATHED, "mathed", N_("Math editor")}, + { Debug::FONT, "font", N_("Font handling")}, + { Debug::TCLASS, "tclass", N_("Textclass files reading")}, + { Debug::LYXVC, "lyxvc", N_("Version control")}, + { Debug::LYXSERVER, "lyxserver", N_("External control interface")}, + { Debug::ROFF, "roff", N_("Keep *roff temporary files")}, + { Debug::ACTION, "action", N_("User commands")}, + { Debug::LYXLEX, "lyxlex", N_("The LyX Lexxer")}, + { Debug::DEPEND, "depend", N_("Dependency information")}, + { Debug::INSETS, "insets", N_("LyX Insets")}, + { Debug::FILES, "files", N_("Files used by LyX")}, + { Debug::WORKAREA, "workarea", N_("Workarea events")}, + { Debug::INSETTEXT, "insettext", N_("Insettext/tabular messages")}, + { Debug::GRAPHICS, "graphics", N_("Graphics conversion and loading")}, + { Debug::CHANGES, "changes", N_("Change tracking")}, + { Debug::EXTERNAL, "external", N_("External template/inset messages")}, + { Debug::PAINTING, "painting", N_("RowPainter profiling")}, + { Debug::DEBUG, "debug", N_("Developers' general debug messages")}, + { Debug::ANY, "any", N_("All debugging messages")} }; -static const int numErrorTags = sizeof(errorTags)/sizeof(error_item); +int const numErrorTags = sizeof(errorTags)/sizeof(error_item); - -Debug::type const Debug::ANY = Debug::type( - Debug::INFO | Debug::INIT | Debug::KEY | Debug::GUI | - Debug::PARSER | Debug::LYXRC | Debug::KBMAP | Debug::LATEX | - Debug::MATHED | Debug::FONT | Debug::TCLASS | Debug::LYXVC | - Debug::LYXSERVER | Debug::ROFF | Debug::ACTION | Debug::LYXLEX | - Debug::DEPEND | Debug::INSETS); +} // namespace anon -Debug::type Debug::value(string const & val) +lyx_debug_trait::type lyx_debug_trait::value(string const & val) { type l = Debug::NONE; string v(val); while (!v.empty()) { - string::size_type st = v.find(','); - string tmp(lowercase(v.substr(0, st))); + string::size_type const st = v.find(','); + string const tmp(ascii_lowercase(v.substr(0, st))); if (tmp.empty()) break; // Is it a number? - if (isStrInt(tmp)) - l |= static_cast(strToInt(tmp)); + if (isStrInt(tmp)) + l |= static_cast(convert(tmp)); else // Search for an explicit name - for (int i = 0 ; i < numErrorTags ; ++i) + for (int i = 0 ; i < numErrorTags ; ++i) if (tmp == errorTags[i].name) { l |= errorTags[i].level; break; @@ -87,23 +103,35 @@ Debug::type Debug::value(string const & val) } -void Debug::showLevel(ostream & o, Debug::type level) +void lyx_debug_trait::showLevel(ostream & os, lyx_debug_trait::type level) { // Show what features are traced - for (int i = 0 ; i < numErrorTags ; ++i) + for (int i = 0; i < numErrorTags ; ++i) { if (errorTags[i].level != Debug::ANY && errorTags[i].level != Debug::NONE - && errorTags[i].level & level) - o << "Debugging `" << errorTags[i].name - << "' (" << errorTags[i].desc << ')' << endl; + && errorTags[i].level & level) { + // avoid to_utf8(_(...)) re-entrance problem + docstring const s = _(errorTags[i].desc); + os << to_utf8(bformat(_("Debugging `%1$s' (%2$s)"), + from_utf8(errorTags[i].name), s)) + << '\n'; + } + } + os.flush(); } -void Debug::showTags(ostream & os) +void lyx_debug_trait::showTags(ostream & os) { - for (int i = 0 ; i < numErrorTags ; ++i) - os << setw(7) << errorTags[i].level - << setw(10) << errorTags[i].name - << " " << errorTags[i].desc << '\n'; + for (int i = 0; i < numErrorTags ; ++i) + os << setw(10) << static_cast(errorTags[i].level) + << setw(13) << errorTags[i].name + << " " << to_utf8(_(errorTags[i].desc)) << '\n'; os.flush(); } + + +LyXErr lyxerr; + + +} // namespace lyx