/** * \file ControlPrefs.C * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author John Levon * * Full author contact details are available in file CREDITS. */ #include #include "ControlPrefs.h" #include "helper_funcs.h" #include "ViewBase.h" #include "bufferlist.h" #include "gettext.h" #include "funcrequest.h" #include "LColor.h" #include "frontends/Dialogs.h" #include "frontends/LyXView.h" #include "support/filetools.h" #include "support/globbing.h" #include "support/path_defines.h" #include "support/std_sstream.h" #include using lyx::support::AddName; using lyx::support::FileFilterList; using lyx::support::system_lyxdir; using lyx::support::user_lyxdir; using std::ostringstream; using std::pair; using std::string; using std::vector; extern BufferList bufferlist; ControlPrefs::ControlPrefs(LyXView & lv, Dialogs & d) : ControlDialogBI(lv, d), redraw_gui_(false), update_screen_font_(false) {} void ControlPrefs::setParams() { rc_ = lyxrc; formats_ = ::formats; converters_ = ::converters; converters_.update(formats_); colors_.clear(); redraw_gui_ = false; update_screen_font_ = false; } void ControlPrefs::apply() { view().apply(); ostringstream ss; rc_.write(ss); lv_.dispatch(FuncRequest(LFUN_LYXRC_APPLY, ss.str())); // FIXME: these need lfuns bufferlist.setCurrentAuthor(rc_.user_name, rc_.user_email); ::formats = formats_; ::converters = converters_; ::converters.update(::formats); ::converters.buildGraph(); vector::const_iterator it = colors_.begin(); vector::const_iterator const end = colors_.end(); for (; it != end; ++it) lv_.dispatch(FuncRequest(LFUN_SET_COLOR, *it)); colors_.clear(); if (redraw_gui_) { lv_.getDialogs().redrawGUI(); redraw_gui_ = false; } if (update_screen_font_) { lv_.dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); update_screen_font_ = false; } // The Save button has been pressed if (isClosing()) { lv_.dispatch(FuncRequest(LFUN_SAVEPREFERENCES)); } } void ControlPrefs::redrawGUI() { redraw_gui_ = true; } void ControlPrefs::setColor(LColor_color col, string const & hex) { colors_.push_back(lcolor.getLyXName(col) + ' ' + hex); } void ControlPrefs::updateScreenFonts() { update_screen_font_ = true; } string const ControlPrefs::browsebind(string const & file) const { pair dir1(_("System Bind|#S#s"), AddName(system_lyxdir(), "bind")); pair dir2(_("User Bind|#U#u"), AddName(user_lyxdir(), "bind")); return browseFile(file, _("Choose bind file"), FileFilterList("*.bind"), false, dir1, dir2); } string const ControlPrefs::browseUI(string const & file) const { pair const dir1(_("Sys UI|#S#s"), AddName(system_lyxdir(), "ui")); pair const dir2(_("User UI|#U#u"), AddName(user_lyxdir(), "ui")); return browseFile(file, _("Choose UI file"), FileFilterList("*.ui"), false, dir1, dir2); } string const ControlPrefs::browsekbmap(string const & file) const { pair dir(_("Key maps|#K#k"), AddName(system_lyxdir(), "kbd")); return browseFile(file, _("Choose keyboard map"), FileFilterList("*.kmap"), false, dir); } string const ControlPrefs::browsedict(string const & file) const { return browseFile(file, _("Choose personal dictionary"), FileFilterList("*.ispell")); } string const ControlPrefs::browse(string const & file, string const & title) const { return browseFile(file, title, FileFilterList(), true); } string const ControlPrefs::browsedir(string const & path, string const & title) const { return browseDir(path, title); }