X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLColor.C;h=d445f313b257639c36119a7046538d99eb14a8de;hb=98c966c64594611e469313314abd1e59524adb4a;hp=9d64bf612256d2a032f64d9b18f874000c2d1a00;hpb=db0716f6669599f9b6293f77223cd017810295ca;p=lyx.git diff --git a/src/LColor.C b/src/LColor.C index 9d64bf6122..d445f313b2 100644 --- a/src/LColor.C +++ b/src/LColor.C @@ -1,10 +1,9 @@ -// -*- C++ -*- /* This file is part of * ====================================================== - * + * * LyX, The Document Processor - * - * Copyright 1998-2000 The LyX Team + * + * Copyright 1998-2001 The LyX Team * *======================================================*/ @@ -22,6 +21,7 @@ #include "gettext.h" #include "support/lstrings.h" +using std::endl; void LColor::fill(LColor::color col, string const & gui, string const & latex, string const & x11, @@ -35,80 +35,98 @@ void LColor::fill(LColor::color col, string const & gui, infotab[col] = in; } +struct ColorEntry { + LColor::color lcolor; + char const * guiname; + char const * latexname; + char const * x11name; + char const * lyxname; +}; + LColor::LColor() { // LColor::color, gui, latex, x11, lyx - fill(none, _("none"), "none", "black", "none"); - fill(black, _("black"), "black", "black", "black"); - fill(white, _("white"), "white", "white", "white"); - fill(red, _("red"), "red", "red", "red"); - fill(green, _("green"), "green", "green", "green"); - fill(blue, _("blue"), "blue", "blue", "blue"); - fill(cyan, _("cyan"), "cyan", "cyan", "cyan"); - fill(magenta, _("magenta"), "magenta", "magenta", "magenta"); - fill(yellow, _("yellow"), "yellow", "yellow", "yellow"); - fill(background, _("background"), "background", "linen", "background"); - fill(foreground, _("foreground"), "foreground", "black", "foreground"); - fill(selection, _("selection"), "selection", "LightBlue", "selection"); - fill(latex, _("latex"), "latex", "DarkRed", "latex"); - fill(floats, _("floats"), "floats", "red", "floats"); - fill(note, _("note"), "note", "black", "note"); - fill(notebg, _("note background"), "notebg", "yellow", "notebg"); - fill(noteframe, _("note frame"), "noteframe", "black", "noteframe"); - fill(command, _("command-inset"), "command", "black", "command"); - fill(commandbg, _("command-inset background"), "commandbg", "grey80", "commandbg"); - fill(commandframe, _("inset frame"), "commandframe", "black", "commandframe"); - fill(accent, _("accent"), "accent", "black", "accent"); - fill(accentbg, _("accent background"), "accentbg", "offwhite", "accentbg"); - fill(accentframe, _("accent frame"), "accentframe", "linen", "accentframe"); - fill(minipageline, _("minipage line"), "minipageline", "violet", "minipageline"); - fill(special, _("special char"), "special", "RoyalBlue", "special"); - fill(math, _("math"), "math", "DarkBlue", "math"); - fill(mathbg, _("math background"), "mathbg", "AntiqueWhite", "mathbg"); - fill(mathframe, _("math frame"), "mathframe", "Magenta", "mathframe"); - fill(mathcursor, _("math cursor"), "mathcursor", "black", "mathcursor"); - fill(mathline, _("math line"), "mathline", "Blue", "mathline"); - fill(footnote, _("footnote"), "footnote", "DarkRed", "footnote"); - fill(footnotebg, _("footnote background"), "footnotebg", "grey40", "footnotebg"); - fill(footnoteframe, _("footnote frame"), "footnoteframe", "IndianRed", "footnoteframe"); - fill(ert, _("ert"), "ert", "DarkRed", "ert"); - fill(inset, _("inset"), "inset", "black", "inset"); - fill(insetbg, _("inset background"), "insetbg", "grey40", "insetbg"); - fill(insetframe, _("inset frame"), "insetframe", "IndianRed", "insetframe"); - fill(error, _("error"), "error", "Red", "error"); - fill(eolmarker, _("end-of-line marker"), "eolmarker", "Brown", "eolmarker"); - fill(appendixline, _("appendix line"), "appendixline", "Brown", "appendixline"); - fill(vfillline, _("vfill line"), "vfillline", "Brown", "vfillline"); - fill(topline, _("top/bottom line"), "topline", "Brown", "topline"); - fill(tableline, _("table line"), "tableline", "black", "tableline"); - fill(bottomarea, _("bottom area"), "bottomarea", "grey40", "bottomarea"); - fill(pagebreak, _("page break"), "pagebreak", "RoyalBlue", "pagebreak"); - fill(top, _("top of button"), "top", "grey80", "top"); - fill(bottom, _("bottom of button"), "bottom", "grey40", "bottom"); - fill(left, _("left of button"), "left", "grey80", "left"); - fill(right, _("right of button"), "right", "grey40", "right"); - fill(buttonbg, _("button background"), "buttonbg", "grey60", "buttonbg"); - fill(inherit, _("inherit"), "inherit", "black", "inherit"); - fill(ignore, _("ignore"), "ignore", "black", "ignore"); + ColorEntry items[] = { + { none, N_("none"), "none", "black", "none" }, + { black, N_("black"), "black", "black", "black" }, + { white, N_("white"), "white", "white", "white" }, + { red, N_("red"), "red", "red", "red" }, + { green, N_("green"), "green", "green", "green" }, + { blue, N_("blue"), "blue", "blue", "blue" }, + { cyan, N_("cyan"), "cyan", "cyan", "cyan" }, + { magenta, N_("magenta"), "magenta", "magenta", "magenta" }, + { yellow, N_("yellow"), "yellow", "yellow", "yellow" }, + { cursor, N_("cursor"), "cursor", "black", "cursor" }, + { background, N_("background"), "background", "linen", "background" }, + { foreground, N_("text"), "foreground", "black", "foreground" }, + { selection, N_("selection"), "selection", "LightBlue", "selection" }, + { latex, N_("latex text"), "latex", "DarkRed", "latex" }, + { note, N_("note"), "note", "yellow", "note" }, + { notebg, N_("note background"), "notebg", "yellow", "notebg" }, + { depthbar, N_("depth bar"), "depthbar", "IndianRed", "depthbar" }, + { language, N_("language"), "language", "Blue", "language" }, + { command, N_("command inset"), "command", "black", "command" }, + { commandbg, N_("command inset background"), "commandbg", "azure", "commandbg" }, + { commandframe, N_("command inset frame"), "commandframe", "black", "commandframe" }, + { special, N_("special character"), "special", "RoyalBlue", "special" }, + { math, N_("math"), "math", "DarkBlue", "math" }, + { mathbg, N_("math background"), "mathbg", "linen", "mathbg" }, + { graphicsbg, N_("graphics background"), "graphicsbg", "linen", "graphicsbg" }, + { mathmacrobg, N_("Math macro background"), "mathmacrobg", "linen", "mathmacrobg" }, + { mathframe, N_("math frame"), "mathframe", "Magenta", "mathframe" }, + { mathcursor, N_("math cursor"), "mathcursor", "black", "mathcursor" }, + { mathline, N_("math line"), "mathline", "Blue", "mathline" }, + { captionframe, N_("caption frame"), "captionframe", "DarkRed", "captionframe" }, + { collapsable, N_("collapsable inset text"), "collapsable", "DarkRed", "collapsable" }, + { collapsableframe, N_("collapsable inset frame"), "collapsableframe", "IndianRed", "collapsableframe" }, + { insetbg, N_("inset background"), "insetbg", "grey80", "insetbg" }, + { insetframe, N_("inset frame"), "insetframe", "IndianRed", "insetframe" }, + { error, N_("LaTeX error"), "error", "Red", "error" }, + { eolmarker, N_("end-of-line marker"), "eolmarker", "Brown", "eolmarker" }, + { appendixline, N_("appendix line"), "appendixline", "Brown", "appendixline" }, + { added_space, N_("added space markers"), "added_space", "Brown", "added_space" }, + { topline, N_("top/bottom line"), "topline", "Brown", "topline" }, + { tabularline, N_("tabular line"), "tabularline", "black", + "tabularline" }, + { tabularonoffline, N_("tabular on/off line"), "tabularonoffline", + "LightSteelBlue", "tabularonoffline" }, + { bottomarea, N_("bottom area"), "bottomarea", "grey40", "bottomarea" }, + { pagebreak, N_("page break"), "pagebreak", "RoyalBlue", "pagebreak" }, + { top, N_("top of button"), "top", "grey90", "top" }, + { bottom, N_("bottom of button"), "bottom", "grey60", "bottom" }, + { left, N_("left of button"), "left", "grey90", "left" }, + { right, N_("right of button"), "right", "grey60", "right" }, + { buttonbg, N_("button background"), "buttonbg", "grey80", "buttonbg" }, + { inherit, N_("inherit"), "inherit", "black", "inherit" }, + { ignore, N_("ignore"), "ignore", "black", "ignore" }, + { ignore, 0, 0, 0, 0 } + }; + + int i = 0; + while (items[i].guiname) { + fill(items[i].lcolor, items[i].guiname, items[i].latexname, + items[i].x11name, items[i].lyxname); + ++i; + } } -string LColor::getGUIName(LColor::color c) const +string const LColor::getGUIName(LColor::color c) const { InfoTab::const_iterator ici = infotab.find(c); if (ici != infotab.end()) - return (*ici).second.guiname; + return _(ici->second.guiname); return "none"; } -string LColor::getX11Name(LColor::color c) const +string const LColor::getX11Name(LColor::color c) const { InfoTab::const_iterator ici = infotab.find(c); - if (ici != infotab.end()) - return (*ici).second.x11name; + if (ici != infotab.end()) + return ici->second.x11name; lyxerr << "LyX internal error: Missing color" " entry in LColor.C for " << int(c) << '\n'; @@ -117,20 +135,20 @@ string LColor::getX11Name(LColor::color c) const } -string LColor::getLaTeXName(LColor::color c) const +string const LColor::getLaTeXName(LColor::color c) const { InfoTab::const_iterator ici = infotab.find(c); if (ici != infotab.end()) - return (*ici).second.latexname; + return ici->second.latexname; return "black"; } -string LColor::getLyXName(LColor::color c) const +string const LColor::getLyXName(LColor::color c) const { InfoTab::const_iterator ici = infotab.find(c); if (ici != infotab.end()) - return (*ici).second.lyxname; + return ici->second.lyxname; return "black"; } @@ -139,34 +157,55 @@ void LColor::setColor(LColor::color col, string const & x11name) { InfoTab::iterator iti = infotab.find(col); if (iti != infotab.end()) { - (*iti).second.x11name = x11name; + iti->second.x11name = x11name; return; } lyxerr << "LyX internal error: color and such.\n"; - Assert(false); + lyx::Assert(false); +} + + +bool LColor::setColor(string const & lyxname, string const & x11name) +{ + color col = getFromLyXName (lyxname); + + // "inherit" is returned for colors not in the database + // (and anyway should not be redefined) + if (col == inherit || col == ignore) { + lyxerr << "Color " << lyxname << " is undefined or may not be" + " redefined" << endl; + return false; + } + setColor (col, x11name); + return true; } LColor::color LColor::getFromGUIName(string const & guiname) const { InfoTab::const_iterator ici = infotab.begin(); - for (; ici != infotab.end(); ++ici) { - if (!compare_no_case((*ici).second.guiname, guiname)) - return (*ici).first; + InfoTab::const_iterator end = infotab.end(); + for (; ici != end; ++ici) { + if (!compare_no_case(_(ici->second.guiname), guiname)) + return ici->first; } - return LColor::ignore; + return LColor::inherit; } LColor::color LColor::getFromLyXName(string const & lyxname) const { + InfoTab::const_iterator ici = infotab.begin(); - for (; ici != infotab.end(); ++ici) { - if (!compare_no_case((*ici).second.lyxname, lyxname)) - return (*ici).first; + InfoTab::const_iterator end = infotab.end(); + for (; ici != end; ++ici) { + if (!compare_no_case(ici->second.lyxname, lyxname)) + return ici->first; } - return LColor::ignore; + return LColor::inherit; } // The evil global LColor instance LColor lcolor; +// An equally evil global system LColor instance +LColor system_lcolor;