#include <config.h>
-
-#include <utility>
-
#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 "support/path_defines.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 BufferList bufferlist;
+#include <sstream>
-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<string,string> dir1(name, dir);
+ theMovers() = movers_;
+
+ vector<string>::const_iterator it = colors_.begin();
+ vector<string>::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<string,string> 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<string,string> dir1(name, dir);
-
- dir = AddName(user_lyxdir(), "ui");
- // FIXME: stupid name
- name = _("User UI|#U#u");
- pair<string,string> 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<string, string> 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