]> git.lyx.org Git - features.git/commitdiff
next one
authorAndré Pönitz <poenitz@gmx.net>
Sun, 7 Oct 2007 09:47:12 +0000 (09:47 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Sun, 7 Oct 2007 09:47:12 +0000 (09:47 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20809 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/controllers/ControlPrefs.cpp [deleted file]
src/frontends/controllers/ControlPrefs.h [deleted file]
src/frontends/controllers/Makefile.am
src/frontends/qt4/Dialogs.cpp
src/frontends/qt4/GuiPrefs.cpp
src/frontends/qt4/GuiPrefs.h

diff --git a/src/frontends/controllers/ControlPrefs.cpp b/src/frontends/controllers/ControlPrefs.cpp
deleted file mode 100644 (file)
index 2c2c1cd..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * \file ControlPrefs.cpp
- * 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 <config.h>
-
-#include "ControlPrefs.h"
-
-#include "frontend_helpers.h"
-
-#include "BufferList.h"
-#include "gettext.h"
-#include "FuncRequest.h"
-#include "paper.h"
-#include "Color.h"
-
-#include "support/FileFilterList.h"
-
-#include <sstream>
-
-using std::ostringstream;
-using std::pair;
-using std::string;
-using std::vector;
-using lyx::support::FileFilterList;
-
-namespace lyx {
-
-namespace frontend {
-
-
-ControlPrefs::ControlPrefs(Dialog & parent)
-       : Controller(parent),
-         update_screen_font_(false)
-{}
-
-
-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::dispatchParams()
-{
-       ostringstream ss;
-       rc_.write(ss, true);
-       dispatch(FuncRequest(LFUN_LYXRC_APPLY, ss.str())); 
-       // FIXME: these need lfuns
-       // FIXME UNICODE
-       theBufferList().setCurrentAuthor(from_utf8(rc_.user_name), from_utf8(rc_.user_email));
-
-       lyx::formats = formats_;
-
-       theConverters() = converters_;
-       theConverters().update(lyx::formats);
-       theConverters().buildGraph();
-
-       theMovers() = movers_;
-
-       vector<string>::const_iterator it = colors_.begin();
-       vector<string>::const_iterator const end = colors_.end();
-       for (; it != end; ++it)
-               dispatch(FuncRequest(LFUN_SET_COLOR, *it));
-       colors_.clear();
-
-       if (update_screen_font_) {
-               dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
-               update_screen_font_ = false;
-       }
-
-       // The Save button has been pressed
-       if (dialog().isClosing()) {
-               dispatch(FuncRequest(LFUN_PREFERENCES_SAVE));
-       }
-}
-
-
-void ControlPrefs::setColor(Color_color col, string const & hex)
-{
-       colors_.push_back(lcolor.getLyXName(col) + ' ' + hex);
-}
-
-
-void ControlPrefs::updateScreenFonts()
-{
-       update_screen_font_ = true;
-}
-
-
-docstring const ControlPrefs::browsebind(docstring const & file) const
-{
-       return browseLibFile(from_ascii("bind"), file, from_ascii("bind"),
-                            _("Choose bind file"),
-                            FileFilterList(_("LyX bind files (*.bind)")));
-}
-
-
-docstring const ControlPrefs::browseUI(docstring const & file) const
-{
-       return browseLibFile(from_ascii("ui"), file, from_ascii("ui"),
-                            _("Choose UI file"),
-                            FileFilterList(_("LyX UI files (*.ui)")));
-}
-
-
-docstring const ControlPrefs::browsekbmap(docstring const & file) const
-{
-       return browseLibFile(from_ascii("kbd"), file, from_ascii("kmap"),
-                            _("Choose keyboard map"),
-                            FileFilterList(_("LyX keyboard maps (*.kmap)")));
-}
-
-
-docstring const ControlPrefs::browsedict(docstring const & file) const
-{
-       if (lyxrc.use_spell_lib)
-               return browseFile(file,
-                                 _("Choose personal dictionary"),
-                                 FileFilterList(_("*.pws")));
-       else
-               return browseFile(file,
-                                 _("Choose personal dictionary"),
-                                 FileFilterList(_("*.ispell")));
-}
-
-
-docstring const ControlPrefs::browse(docstring const & file,
-                                 docstring const & title) const
-{
-       return browseFile(file, title, FileFilterList(), true);
-}
-
-
-docstring const ControlPrefs::browsedir(docstring const & path,
-                                    docstring const & title) const
-{
-       return browseDir(path, title);
-}
-
-
-// We support less paper sizes than the document dialog
-// Therefore this adjustment is needed.
-PAPER_SIZE ControlPrefs::toPaperSize(int i) const
-{
-       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;
-       }
-}
-
-
-int ControlPrefs::fromPaperSize(PAPER_SIZE papersize) const
-{
-       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
diff --git a/src/frontends/controllers/ControlPrefs.h b/src/frontends/controllers/ControlPrefs.h
deleted file mode 100644 (file)
index 220c2b9..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-// -*- C++ -*-
-/**
- * \file ControlPrefs.h
- * 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.
- */
-
-#ifndef CONTROLPREFS_H
-#define CONTROLPREFS_H
-
-#include "Dialog.h"
-#include "Converter.h"
-#include "Format.h"
-#include "LyXRC.h"
-#include "Mover.h"
-
-#include <string>
-#include <vector>
-
-namespace lyx {
-
-class Color_color;
-
-namespace frontend {
-
-class ControlPrefs : public Controller {
-public:
-       ControlPrefs(Dialog &);
-       ///
-       virtual bool initialiseParams(std::string const &);
-       ///
-       virtual void clearParams() {}
-       ///
-       virtual void dispatchParams();
-       ///
-       virtual bool isBufferDependent() const { return false; }
-
-       LyXRC & rc() { return rc_; }
-       LyXRC const & rc() const { return rc_; }
-
-       Converters & converters() { return converters_; }
-       Converters const & converters() const { return converters_; }
-
-       Formats & formats() { return formats_; }
-       Formats const & formats() const { return formats_; }
-
-       Movers & movers() { return movers_; }
-       Movers const & movers() const { return movers_; }
-
-       /// various file pickers
-       docstring const browsebind(docstring const & file) const;
-       docstring const browseUI(docstring const & file) const;
-       docstring const browsekbmap(docstring const & file) const;
-       docstring const browsedict(docstring const & file) const;
-
-       /// general browse
-       docstring const browse(docstring const & file,
-                                docstring const & title) const;
-
-       /// browse directory
-       docstring const browsedir(docstring const & path,
-                                   docstring const & title) const;
-
-       /// set a color
-       void setColor(Color_color col, std::string const & hex);
-
-       /// update the screen fonts after change
-       void updateScreenFonts();
-
-       /// adjust the prefs paper sizes
-       PAPER_SIZE toPaperSize(int i) const;
-       /// adjust the prefs paper sizes
-       int fromPaperSize(PAPER_SIZE papersize) const;
-
-private:
-       /// temporary lyxrc
-       LyXRC rc_;
-
-       /// temporary converters
-       Converters converters_;
-
-       /// temporary formats
-       Formats formats_;
-
-       /// temporary movers
-       Movers movers_;
-
-       /// A list of colors to be dispatched
-       std::vector<std::string> colors_;
-
-       bool redraw_gui_;
-       bool update_screen_font_;
-};
-
-} // namespace frontend
-} // namespace lyx
-
-#endif // CONTROLPREFS_H
index 2eb984efb673fdd3e6c0324c272eb85a22458e27..e2274e2941f72908cad08968a27184abd5a7a1b4 100644 (file)
@@ -13,7 +13,6 @@ SOURCEFILES = \
        ControlCommandBuffer.cpp \
        ControlMath.cpp \
        ControlParagraph.cpp \
-       ControlPrefs.cpp \
        frontend_helpers.cpp 
 
 HEADERFILES = \
@@ -23,7 +22,6 @@ HEADERFILES = \
        ControlCommandBuffer.h \
        ControlMath.h \
        ControlParagraph.h \
-       ControlPrefs.h \
        frontend_helpers.h
 
 if MONOLITHIC_CONTROLLERS
index 78a7b58abb5f3abefa1d7089fa85395a8531d2fa..f7eef3bf0011b8f31b83250219e445e6996e901e 100644 (file)
@@ -22,7 +22,6 @@
 #include "GuiMathMatrix.h"
 #include "GuiNomencl.h"
 #include "GuiParagraph.h"
-#include "GuiPrefs.h"
 #include "GuiView.h"
 #include "GuiURL.h"
 
@@ -98,7 +97,7 @@ Dialog * createGuiLog(LyXView & lv);
 Dialog * createGuiMath(LyXView & lv);
 Dialog * createGuiNomencl(LyXView & lv);
 Dialog * createGuiNote(LyXView & lv);
-Dialog * createGuiPrefs(LyXView & lv);
+Dialog * createGuiPreferences(LyXView & lv);
 Dialog * createGuiPrint(LyXView & lv);
 Dialog * createGuiRef(LyXView & lv);
 Dialog * createGuiSearch(LyXView & lv);
@@ -190,7 +189,7 @@ Dialog * Dialogs::build(string const & name)
 #endif
        }
        if (name == "prefs")
-               return new GuiPrefsDialog(lyxview_);
+               return createGuiPreferences(lyxview_);
        if (name == "print")
                return createGuiPrint(lyxview_);
        if (name == "ref")
index 29d433a3f1b7cb47a68374e3878e19df99f59c09..fe5330d84d506f6619fed56081f9466e2abc4e0c 100644 (file)
 #include <config.h>
 
 #include "GuiPrefs.h"
-#include "ControlPrefs.h"
 
 #include "qt_helpers.h"
 #include "GuiApplication.h"
 
+#include "BufferList.h"
+#include "Color.h"
 #include "ConverterCache.h"
-#include "Session.h"
 #include "debug.h"
-#include "Color.h"
 #include "Font.h"
-#include "PanelStack.h"
-#include "GuiFontExample.h"
+#include "FuncRequest.h"
 #include "gettext.h"
+#include "GuiFontExample.h"
+#include "PanelStack.h"
+#include "paper.h"
+#include "Session.h"
 
 #include "support/lstrings.h"
 #include "support/os.h"
+#include "support/FileFilterList.h"
 
 #include "frontend_helpers.h"
 
 
 using namespace Ui;
 
-using lyx::support::compare_ascii_no_case;
-using lyx::support::os::external_path;
-using lyx::support::os::external_path_list;
-using lyx::support::os::internal_path;
-using lyx::support::os::internal_path_list;
-
 using std::endl;
-using std::string;
+using std::ostringstream;
 using std::pair;
+using std::string;
 using std::vector;
 
-
 namespace lyx {
 namespace frontend {
 
+using support::compare_ascii_no_case;
+using support::os::external_path;
+using support::os::external_path_list;
+using support::os::internal_path;
+using support::os::internal_path_list;
+using support::FileFilterList;
+
+
 /////////////////////////////////////////////////////////////////////
 //
 // Helpers
@@ -234,7 +239,7 @@ void PrefDate::update(LyXRC const & rc)
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefKeyboard::PrefKeyboard(GuiPrefsDialog * form, QWidget * parent)
+PrefKeyboard::PrefKeyboard(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("Keyboard"), form, parent)
 {
        setupUi(this);
@@ -268,7 +273,7 @@ void PrefKeyboard::update(LyXRC const & rc)
 
 QString PrefKeyboard::testKeymap(QString keymap)
 {
-       return toqstr(form_->controller().browsekbmap(from_utf8(internal_path(fromqstr(keymap)))));
+       return toqstr(form_->browsekbmap(from_utf8(internal_path(fromqstr(keymap)))));
 }
 
 
@@ -305,7 +310,7 @@ void PrefKeyboard::on_keymapCB_toggled(bool keymap)
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefLatex::PrefLatex(GuiPrefsDialog * form, QWidget * parent)
+PrefLatex::PrefLatex(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("LaTeX"), form, parent)
 {
        setupUi(this);
@@ -343,7 +348,7 @@ void PrefLatex::apply(LyXRC & rc) const
        rc.auto_reset_options = latexAutoresetCB->isChecked();
        rc.view_dvi_paper_option = fromqstr(latexDviPaperED->text());
        rc.default_papersize =
-               form_->controller().toPaperSize(latexPaperSizeCO->currentIndex());
+               form_->toPaperSize(latexPaperSizeCO->currentIndex());
 #if defined(__CYGWIN__) || defined(_WIN32)
        rc.windows_style_tex_paths = pathCB->isChecked();
 #endif
@@ -359,7 +364,7 @@ void PrefLatex::update(LyXRC const & rc)
        latexAutoresetCB->setChecked(rc.auto_reset_options);
        latexDviPaperED->setText(toqstr(rc.view_dvi_paper_option));
        latexPaperSizeCO->setCurrentIndex(
-               form_->controller().fromPaperSize(rc.default_papersize));
+               form_->fromPaperSize(rc.default_papersize));
 #if defined(__CYGWIN__) || defined(_WIN32)
        pathCB->setChecked(rc.windows_style_tex_paths);
 #endif
@@ -372,7 +377,7 @@ void PrefLatex::update(LyXRC const & rc)
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefScreenFonts::PrefScreenFonts(GuiPrefsDialog * form, QWidget * parent)
+PrefScreenFonts::PrefScreenFonts(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("Screen fonts"), form, parent)
 {
        setupUi(this);
@@ -464,7 +469,7 @@ void PrefScreenFonts::apply(LyXRC & rc) const
                || rc.sans_font_name != oldrc.sans_font_name
                || rc.typewriter_font_name != oldrc.typewriter_font_name
                || rc.zoom != oldrc.zoom || rc.dpi != oldrc.dpi) {
-               form_->controller().updateScreenFonts();
+               form_->updateScreenFonts();
        }
 }
 
@@ -531,7 +536,7 @@ struct ColorSorter
 
 } // namespace anon
 
-PrefColors::PrefColors(GuiPrefsDialog * form, QWidget * parent)
+PrefColors::PrefColors(GuiPreferences * form, QWidget * parent)
        : PrefModule( _("Colors"), form, parent)
 {
        setupUi(this);
@@ -580,7 +585,7 @@ void PrefColors::apply(LyXRC & /*rc*/) const
 {
        for (unsigned int i = 0; i < lcolors_.size(); ++i)
                if (curcolors_[i] != newcolors_[i])
-                       form_->controller().setColor(lcolors_[i], fromqstr(newcolors_[i]));
+                       form_->setColor(lcolors_[i], fromqstr(newcolors_[i]));
 }
 
 
@@ -700,7 +705,7 @@ void PrefDisplay::update(LyXRC const & rc)
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefPaths::PrefPaths(GuiPrefsDialog * form, QWidget * parent)
+PrefPaths::PrefPaths(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("Paths"), form, parent)
 {
        setupUi(this);
@@ -750,7 +755,7 @@ void PrefPaths::update(LyXRC const & rc)
 
 void PrefPaths::select_templatedir()
 {
-       docstring file(form_->controller().browsedir(
+       docstring file(form_->browsedir(
                from_utf8(internal_path(fromqstr(templateDirED->text()))),
                _("Select a document templates directory")));
        if (!file.empty())
@@ -760,7 +765,7 @@ void PrefPaths::select_templatedir()
 
 void PrefPaths::select_tempdir()
 {
-       docstring file(form_->controller().browsedir(
+       docstring file(form_->browsedir(
                from_utf8(internal_path(fromqstr(tempDirED->text()))),
                _("Select a temporary directory")));
        if (!file.empty())
@@ -770,7 +775,7 @@ void PrefPaths::select_tempdir()
 
 void PrefPaths::select_backupdir()
 {
-       docstring file(form_->controller().browsedir(
+       docstring file(form_->browsedir(
                from_utf8(internal_path(fromqstr(backupDirED->text()))),
                _("Select a backups directory")));
        if (!file.empty())
@@ -780,7 +785,7 @@ void PrefPaths::select_backupdir()
 
 void PrefPaths::select_workingdir()
 {
-       docstring file(form_->controller().browsedir(
+       docstring file(form_->browsedir(
                from_utf8(internal_path(fromqstr(workingDirED->text()))),
                _("Select a document directory")));
        if (!file.empty())
@@ -790,7 +795,7 @@ void PrefPaths::select_workingdir()
 
 void PrefPaths::select_lyxpipe()
 {
-       docstring file(form_->controller().browse(
+       docstring file(form_->browse(
                from_utf8(internal_path(fromqstr(lyxserverDirED->text()))),
                _("Give a filename for the LyX server pipe")));
        if (!file.empty())
@@ -804,7 +809,7 @@ void PrefPaths::select_lyxpipe()
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefSpellchecker::PrefSpellchecker(GuiPrefsDialog * form, QWidget * parent)
+PrefSpellchecker::PrefSpellchecker(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("Spellchecker"), form, parent)
 {
        setupUi(this);
@@ -899,7 +904,7 @@ void PrefSpellchecker::update(LyXRC const & rc)
 
 void PrefSpellchecker::select_dict()
 {
-       docstring file(form_->controller().browsedict(
+       docstring file(form_->browsedict(
                from_utf8(internal_path(fromqstr(persDictionaryED->text())))));
        if (!file.empty())
                persDictionaryED->setText(toqstr(file));
@@ -914,7 +919,7 @@ void PrefSpellchecker::select_dict()
 /////////////////////////////////////////////////////////////////////
 
 
-PrefConverters::PrefConverters(GuiPrefsDialog * form, QWidget * parent)
+PrefConverters::PrefConverters(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("Converters"), form, parent)
 {
        setupUi(this);
@@ -1183,7 +1188,7 @@ std::string FormatPrettynameValidator::str(Formats::const_iterator it) const
 }
 
 
-PrefFileformats::PrefFileformats(GuiPrefsDialog * form, QWidget * parent)
+PrefFileformats::PrefFileformats(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("File formats"), form, parent)
 {
        setupUi(this);
@@ -1560,7 +1565,7 @@ void PrefPrinter::update(LyXRC const & rc)
 //
 /////////////////////////////////////////////////////////////////////
 
-PrefUserInterface::PrefUserInterface(GuiPrefsDialog * form, QWidget * parent)
+PrefUserInterface::PrefUserInterface(GuiPreferences * form, QWidget * parent)
        : PrefModule(_("User interface"), form, parent)
 {
        setupUi(this);
@@ -1650,7 +1655,7 @@ void PrefUserInterface::select_ui()
 {
        docstring const name =
                from_utf8(internal_path(fromqstr(uiFileED->text())));
-       docstring file = form_->controller().browseUI(name);
+       docstring file = form_->browseUI(name);
        if (!file.empty())
                uiFileED->setText(toqstr(file));
 }
@@ -1660,7 +1665,7 @@ void PrefUserInterface::select_bind()
 {
        docstring const name =
                from_utf8(internal_path(fromqstr(bindFileED->text())));
-       docstring file = form_->controller().browsebind(name);
+       docstring file = form_->browsebind(name);
        if (!file.empty())
                bindFileED->setText(toqstr(file));
 }
@@ -1704,16 +1709,16 @@ void PrefIdentity::update(LyXRC const & rc)
 
 /////////////////////////////////////////////////////////////////////
 //
-// GuiPrefsDialog
+// GuiPreferences
 //
 /////////////////////////////////////////////////////////////////////
 
-GuiPrefsDialog::GuiPrefsDialog(LyXView & lv)
-       : GuiDialog(lv, "prefs")
+GuiPreferences::GuiPreferences(LyXView & lv)
+       : GuiDialog(lv, "prefs"), Controller(this), update_screen_font_(false)
 {
        setupUi(this);
        setViewTitle(_("Preferences"));
-       setController(new ControlPrefs(*this));
+       setController(this, false);
 
        QDialog::setModal(false);
 
@@ -1762,13 +1767,7 @@ GuiPrefsDialog::GuiPrefsDialog(LyXView & lv)
 }
 
 
-ControlPrefs & GuiPrefsDialog::controller()
-{
-       return static_cast<ControlPrefs &>(GuiDialog::controller());
-}
-
-
-void GuiPrefsDialog::add(PrefModule * module)
+void GuiPreferences::add(PrefModule * module)
 {
        BOOST_ASSERT(module);
        prefsPS->addPanel(module, module->title());
@@ -1777,20 +1776,20 @@ void GuiPrefsDialog::add(PrefModule * module)
 }
 
 
-void GuiPrefsDialog::closeEvent(QCloseEvent * e)
+void GuiPreferences::closeEvent(QCloseEvent * e)
 {
        slotClose();
        e->accept();
 }
 
 
-void GuiPrefsDialog::change_adaptor()
+void GuiPreferences::change_adaptor()
 {
        changed();
 }
 
 
-void GuiPrefsDialog::apply(LyXRC & rc) const
+void GuiPreferences::apply(LyXRC & rc) const
 {
        size_t end = modules_.size();
        for (size_t i = 0; i != end; ++i)
@@ -1798,7 +1797,7 @@ void GuiPrefsDialog::apply(LyXRC & rc) const
 }
 
 
-void GuiPrefsDialog::updateRc(LyXRC const & rc)
+void GuiPreferences::updateRc(LyXRC const & rc)
 {
        size_t const end = modules_.size();
        for (size_t i = 0; i != end; ++i)
@@ -1806,34 +1805,187 @@ void GuiPrefsDialog::updateRc(LyXRC const & rc)
 }
 
 
-Converters & GuiPrefsDialog::converters()
+void GuiPreferences::applyView()
+{
+       apply(rc());
+}
+
+
+void GuiPreferences::updateContents()
+{
+       updateRc(rc());
+}
+
+
+bool GuiPreferences::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 GuiPreferences::dispatchParams()
+{
+       ostringstream ss;
+       rc_.write(ss, true);
+       dispatch(FuncRequest(LFUN_LYXRC_APPLY, ss.str())); 
+       // FIXME: these need lfuns
+       // FIXME UNICODE
+       theBufferList().setCurrentAuthor(from_utf8(rc_.user_name), from_utf8(rc_.user_email));
+
+       lyx::formats = formats_;
+
+       theConverters() = converters_;
+       theConverters().update(lyx::formats);
+       theConverters().buildGraph();
+
+       theMovers() = movers_;
+
+       vector<string>::const_iterator it = colors_.begin();
+       vector<string>::const_iterator const end = colors_.end();
+       for (; it != end; ++it)
+               dispatch(FuncRequest(LFUN_SET_COLOR, *it));
+       colors_.clear();
+
+       if (update_screen_font_) {
+               dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
+               update_screen_font_ = false;
+       }
+
+       // The Save button has been pressed
+       if (dialog().isClosing()) {
+               dispatch(FuncRequest(LFUN_PREFERENCES_SAVE));
+       }
+}
+
+
+void GuiPreferences::setColor(Color_color col, string const & hex)
+{
+       colors_.push_back(lcolor.getLyXName(col) + ' ' + hex);
+}
+
+
+void GuiPreferences::updateScreenFonts()
+{
+       update_screen_font_ = true;
+}
+
+
+docstring const GuiPreferences::browsebind(docstring const & file) const
+{
+       return browseLibFile(from_ascii("bind"), file, from_ascii("bind"),
+                            _("Choose bind file"),
+                            FileFilterList(_("LyX bind files (*.bind)")));
+}
+
+
+docstring const GuiPreferences::browseUI(docstring const & file) const
+{
+       return browseLibFile(from_ascii("ui"), file, from_ascii("ui"),
+                            _("Choose UI file"),
+                            FileFilterList(_("LyX UI files (*.ui)")));
+}
+
+
+docstring const GuiPreferences::browsekbmap(docstring const & file) const
+{
+       return browseLibFile(from_ascii("kbd"), file, from_ascii("kmap"),
+                            _("Choose keyboard map"),
+                            FileFilterList(_("LyX keyboard maps (*.kmap)")));
+}
+
+
+docstring const GuiPreferences::browsedict(docstring const & file) const
 {
-       return controller().converters();
+       if (lyxrc.use_spell_lib)
+               return browseFile(file,
+                                 _("Choose personal dictionary"),
+                                 FileFilterList(_("*.pws")));
+       else
+               return browseFile(file,
+                                 _("Choose personal dictionary"),
+                                 FileFilterList(_("*.ispell")));
 }
 
 
-Formats & GuiPrefsDialog::formats()
+docstring const GuiPreferences::browse(docstring const & file,
+                                 docstring const & title) const
 {
-       return controller().formats();
+       return browseFile(file, title, FileFilterList(), true);
 }
 
 
-Movers & GuiPrefsDialog::movers()
+docstring const GuiPreferences::browsedir(docstring const & path,
+                                    docstring const & title) const
 {
-       return controller().movers();
+       return browseDir(path, title);
 }
 
 
-void GuiPrefsDialog::applyView()
+// We support less paper sizes than the document dialog
+// Therefore this adjustment is needed.
+PAPER_SIZE GuiPreferences::toPaperSize(int i) const
 {
-       apply(controller().rc());
+       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 GuiPrefsDialog::updateContents()
+
+int GuiPreferences::fromPaperSize(PAPER_SIZE papersize) const
 {
-       updateRc(controller().rc());
+       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;
+       }
 }
 
+
+Dialog * createGuiPreferences(LyXView & lv) { return new GuiPreferences(lv); }
+
+
 } // namespace frontend
 } // namespace lyx
 
index ab199d1f1dd04fb67d175f774ea20106257f37d0..8421fc3bc6f5f3fe5c12f7298f5bddf722780907 100644 (file)
 #define GUIPREFS_H
 
 #include "GuiDialog.h"
-#include "ControlPrefs.h"
+
 #include "Color.h"
-#include "LyXRC.h"
+#include "Converter.h"
 #include "Format.h"
+#include "LyXRC.h"
+#include "Mover.h"
 
 #include "ui_PrefsUi.h"
 
 #include <QDialog>
 #include <QValidator>
 
+#include <string>
 #include <vector>
 
+
 namespace lyx {
 
+class Color_color;
 class Converters;
 class Formats;
 class Movers;
 
 namespace frontend {
 
-class GuiPrefsDialog;
+class GuiPreferences;
 
 class PrefModule : public QWidget
 {
        Q_OBJECT
 public:
        PrefModule(docstring const & t,
-                       GuiPrefsDialog * form = 0, QWidget * parent = 0)
+                       GuiPreferences * form = 0, QWidget * parent = 0)
                : QWidget(parent), title_(t), form_(form)
        {}
 
@@ -67,7 +72,7 @@ public:
 
 protected:
        docstring title_;
-       GuiPrefsDialog * form_;
+       GuiPreferences * form_;
 
 Q_SIGNALS:
        void changed();
@@ -100,7 +105,7 @@ class PrefKeyboard : public PrefModule, public Ui::PrefKeyboardUi
 {
        Q_OBJECT
 public:
-       PrefKeyboard(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefKeyboard(GuiPreferences * form, QWidget * parent = 0);
 
        virtual void apply(LyXRC & rc) const;
        virtual void update(LyXRC const & rc);
@@ -119,7 +124,7 @@ class PrefLatex : public PrefModule, public Ui::PrefLatexUi
 {
        Q_OBJECT
 public:
-       PrefLatex(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefLatex(GuiPreferences * form, QWidget * parent = 0);
 
        virtual void apply(LyXRC & rc) const;
        virtual void update(LyXRC const & rc);
@@ -130,7 +135,7 @@ class PrefScreenFonts : public PrefModule, public Ui::PrefScreenFontsUi
 {
        Q_OBJECT
 public:
-       PrefScreenFonts(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefScreenFonts(GuiPreferences * form, QWidget * parent = 0);
 
        virtual void apply(LyXRC & rc) const;
        virtual void update(LyXRC const & rc);
@@ -146,7 +151,7 @@ class PrefColors : public PrefModule, public Ui::PrefColorsUi
 {
        Q_OBJECT
 public:
-       PrefColors(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefColors(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -181,7 +186,7 @@ class PrefPaths : public PrefModule, public Ui::PrefPathsUi
 {
        Q_OBJECT
 public:
-       PrefPaths(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefPaths(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -200,7 +205,7 @@ class PrefSpellchecker : public PrefModule, public Ui::PrefSpellcheckerUi
 {
        Q_OBJECT
 public:
-       PrefSpellchecker(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefSpellchecker(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -214,7 +219,7 @@ class PrefConverters : public PrefModule, public Ui::PrefConvertersUi
 {
        Q_OBJECT
 public:
-       PrefConverters(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefConverters(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -268,7 +273,7 @@ class PrefFileformats : public PrefModule, public Ui::PrefFileformatsUi
 {
        Q_OBJECT
 public:
-       PrefFileformats(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefFileformats(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -326,7 +331,7 @@ class PrefUserInterface : public PrefModule, public Ui::PrefUi
 {
        Q_OBJECT
 public:
-       PrefUserInterface(GuiPrefsDialog * form, QWidget * parent = 0);
+       PrefUserInterface(GuiPreferences * form, QWidget * parent = 0);
 
        void apply(LyXRC & rc) const;
        void update(LyXRC const & rc);
@@ -349,12 +354,12 @@ public:
        void update(LyXRC const & rc);
 };
 
-///
-class GuiPrefsDialog : public GuiDialog, public Ui::PrefsUi
+
+class GuiPreferences : public GuiDialog, public Ui::PrefsUi, public Controller
 {
        Q_OBJECT
 public:
-       GuiPrefsDialog(LyXView & lv);
+       GuiPreferences(LyXView & lv);
 
        void apply(LyXRC & rc) const;
        void updateRc(LyXRC const & rc);
@@ -367,20 +372,69 @@ public:
        void closeEvent(QCloseEvent * e);
        ///
        void add(PrefModule * module);
-       ///
-       Converters & converters();
-       ///
-       Formats & formats();
-       ///
-       Movers & movers();
        /// parent controller
-       ControlPrefs & controller();
+       Controller & controller() { return *this; }
        /// Apply changes
        void applyView();
        /// update (do we need this?)
        void updateContents();
 
        std::vector<PrefModule *> modules_;
+
+       ///
+       bool initialiseParams(std::string const &);
+       ///
+       void clearParams() {}
+       ///
+       void dispatchParams();
+       ///
+       bool isBufferDependent() const { return false; }
+
+       /// various file pickers
+       docstring const browsebind(docstring const & file) const;
+       docstring const browseUI(docstring const & file) const;
+       docstring const browsekbmap(docstring const & file) const;
+       docstring const browsedict(docstring const & file) const;
+
+       /// general browse
+       docstring const browse(docstring const & file,
+                                docstring const & title) const;
+
+       /// browse directory
+       docstring const browsedir(docstring const & path,
+                                   docstring const & title) const;
+
+       /// set a color
+       void setColor(Color_color col, std::string const & hex);
+
+       /// update the screen fonts after change
+       void updateScreenFonts();
+
+       /// adjust the prefs paper sizes
+       PAPER_SIZE toPaperSize(int i) const;
+       /// adjust the prefs paper sizes
+       int fromPaperSize(PAPER_SIZE papersize) const;
+
+       LyXRC & rc() { return rc_; }
+       Converters & converters() { return converters_; }
+       Formats & formats() { return formats_; }
+       Movers & movers() { return movers_; }
+
+private:
+       /// temporary lyxrc
+       LyXRC rc_;
+       /// temporary converters
+       Converters converters_;
+       /// temporary formats
+       Formats formats_;
+       /// temporary movers
+       Movers movers_;
+
+       /// A list of colors to be dispatched
+       std::vector<std::string> colors_;
+
+       bool redraw_gui_;
+       bool update_screen_font_;
 };