X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fcontrollers%2FControlPrefs.C;h=7addfccd0616d1ed5f76ec21c8c8a96ddcb7f748;hb=76bac515268e2830054c5dd9796e3d4c3a6d0584;hp=ed442139e54797d1eafd3fdc55005f1a5b4ab7c5;hpb=92d522b7f1be6046adcac062c558bbf0bf021612;p=lyx.git diff --git a/src/frontends/controllers/ControlPrefs.C b/src/frontends/controllers/ControlPrefs.C index ed442139e5..7addfccd06 100644 --- a/src/frontends/controllers/ControlPrefs.C +++ b/src/frontends/controllers/ControlPrefs.C @@ -5,155 +5,210 @@ * * \author John Levon * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include - -#include - #include "ControlPrefs.h" -#include "ViewBase.h" -#include "frontends/LyXView.h" -#include "bufferlist.h" #include "helper_funcs.h" +#include "Kernel.h" + +#include "bufferlist.h" #include "gettext.h" -#include "support/filetools.h" -#include "frontends/Dialogs.h" -#include "converter.h" -#include "format.h" -#include "debug.h" +#include "funcrequest.h" +#include "paper.h" +#include "LColor.h" + +#include "support/filefilterlist.h" -extern string system_lyxdir; -extern string user_lyxdir; -extern BufferList bufferlist; +#include -using namespace lyx::support; +using lyx::docstring; -using std::endl; +using std::ostringstream; using std::pair; +using std::string; +using std::vector; +using lyx::support::FileFilterList; + +namespace lyx { + +namespace frontend { -ControlPrefs::ControlPrefs(LyXView & lv, Dialogs & d) - : ControlDialogBI(lv, d) + +ControlPrefs::ControlPrefs(Dialog & parent) + : Dialog::Controller(parent), + update_screen_font_(false) {} -void ControlPrefs::setParams() +bool ControlPrefs::initialiseParams(std::string const &) { rc_ = lyxrc; + formats_ = lyx::formats; + converters_ = theConverters(); + converters_.update(formats_); + movers_ = theMovers(); + colors_.clear(); + update_screen_font_ = false; + + return true; } -void ControlPrefs::apply() +void ControlPrefs::dispatchParams() { - view().apply(); - lyxrc = rc_; + ostringstream ss; + rc_.write(ss, true); + kernel().dispatch(FuncRequest(LFUN_LYXRC_APPLY, ss.str())); - bufferlist.setCurrentAuthor(rc_.user_name, rc_.user_email); + // FIXME: these need lfuns + // FIXME UNICODE + theBufferList().setCurrentAuthor(from_utf8(rc_.user_name), from_utf8(rc_.user_email)); - // The Save button has been pressed - if (isClosing()) { - lv_.dispatch(FuncRequest(LFUN_SAVEPREFERENCES)); - } -} + lyx::formats = formats_; + theConverters() = converters_; + theConverters().update(lyx::formats); + theConverters().buildGraph(); -string const ControlPrefs::browsebind(string const & file) -{ - string dir = AddName(system_lyxdir, "bind"); - // FIXME: stupid name - string name = _("System Bind|#S#s"); - pair dir1(name, dir); + theMovers() = movers_; + + vector::const_iterator it = colors_.begin(); + vector::const_iterator const end = colors_.end(); + for (; it != end; ++it) + kernel().dispatch(FuncRequest(LFUN_SET_COLOR, *it)); + colors_.clear(); - dir = AddName(user_lyxdir, "bind"); - // FIXME: stupid name - name = _("User Bind|#U#u"); - pair dir2(name, dir); + if (update_screen_font_) { + kernel().dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); + update_screen_font_ = false; + } - return browseFile(file, _("Choose bind file"), "*.bind", false, dir1, dir2); + // The Save button has been pressed + if (dialog().isClosing()) { + kernel().dispatch(FuncRequest(LFUN_PREFERENCES_SAVE)); + } } -string const ControlPrefs::browseUI(string const & file) +void ControlPrefs::setColor(LColor_color col, string const & hex) { - string dir = AddName(system_lyxdir, "ui"); - // FIXME: stupid name - string name = _("Sys UI|#S#s"); - pair dir1(name, dir); - - dir = AddName(user_lyxdir, "ui"); - // FIXME: stupid name - name = _("User UI|#U#u"); - pair dir2(name, dir); - - return browseFile(file, _("Choose UI file"), "*.ui", false, dir1, dir2); + colors_.push_back(lcolor.getLyXName(col) + ' ' + hex); } -string const ControlPrefs::browsekbmap(string const & file) +void ControlPrefs::updateScreenFonts() { - string const dir = AddName(system_lyxdir, "kbd"); - string const name = _("Key maps|#K#k"); - pair dir1(name, dir); - - return browseFile(file, _("Choose keyboard map"), "*.kmap", false, dir1); + update_screen_font_ = true; } -string const ControlPrefs::browsedict(string const & file) +docstring const ControlPrefs::browsebind(docstring const & file) const { - return browseFile(file, _("Choose personal dictionary"), "*.ispell"); + return browseLibFile(lyx::from_ascii("bind"), file, lyx::from_ascii("bind"), + _("Choose bind file"), + FileFilterList(_("LyX bind files (*.bind)"))); } -string const ControlPrefs::browse(string const & file, string const & title) +docstring const ControlPrefs::browseUI(docstring const & file) const { - return browseFile(file, title, "*", true); + return browseLibFile(lyx::from_ascii("ui"), file, lyx::from_ascii("ui"), + _("Choose UI file"), + FileFilterList(_("LyX UI files (*.ui)"))); } -string const ControlPrefs::browsedir(string const & path, string const & title) +docstring const ControlPrefs::browsekbmap(docstring const & file) const { - return browseDir(path, title); + return browseLibFile(lyx::from_ascii("kbd"), file, lyx::from_ascii("kmap"), + _("Choose keyboard map"), + FileFilterList(_("LyX keyboard maps (*.kmap)"))); } -void ControlPrefs::redrawGUI() +docstring const ControlPrefs::browsedict(docstring const & file) const { - // we must be sure to get the new values first - lyxrc = rc_; - - lv_.getDialogs().redrawGUI(); + if (lyxrc.use_spell_lib) + return browseFile(file, + _("Choose personal dictionary"), + FileFilterList(_("*.pws"))); + else + return browseFile(file, + _("Choose personal dictionary"), + FileFilterList(_("*.ispell"))); } -void ControlPrefs::setColor(LColor::color col, string const & hex) +docstring const ControlPrefs::browse(docstring const & file, + docstring const & title) const { - string const s = lcolor.getLyXName(col) + ' ' + hex; - lv_.dispatch(FuncRequest(LFUN_SET_COLOR, s)); + return browseFile(file, title, FileFilterList(), true); } -void ControlPrefs::updateScreenFonts() +docstring const ControlPrefs::browsedir(docstring const & path, + docstring const & title) const { - // we must be sure to get the new values first - lyxrc = rc_; - - lv_.dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); + return browseDir(path, title); } -void ControlPrefs::setConverters(Converters const & conv) +// We support less paper sizes than the document dialog +// Therefore this adjustment is needed. +PAPER_SIZE const ControlPrefs::toPaperSize(int i) const { - converters = conv; - converters.update(formats); - converters.buildGraph(); + switch (i) { + case 0: + return PAPER_DEFAULT; + case 1: + return PAPER_USLETTER; + case 2: + return PAPER_USLEGAL; + case 3: + return PAPER_USEXECUTIVE; + case 4: + return PAPER_A3; + case 5: + return PAPER_A4; + case 6: + return PAPER_A5; + case 7: + return PAPER_B5; + default: + // should not happen + return PAPER_DEFAULT; + } } -void ControlPrefs::setFormats(Formats const & form) +int const ControlPrefs::fromPaperSize(PAPER_SIZE papersize) const { - formats = form; + switch (papersize) { + case PAPER_DEFAULT: + return 0; + case PAPER_USLETTER: + return 1; + case PAPER_USLEGAL: + return 2; + case PAPER_USEXECUTIVE: + return 3; + case PAPER_A3: + return 4; + case PAPER_A4: + return 5; + case PAPER_A5: + return 6; + case PAPER_B5: + return 7; + default: + // should not happen + return 0; + } } + +} // namespace frontend +} // namespace lyx