From 30725acc5804faa02c7121ca7593136edc61bd73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Sun, 7 Oct 2007 09:47:12 +0000 Subject: [PATCH] next one git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20809 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/controllers/ControlPrefs.cpp | 210 ---------------- src/frontends/controllers/ControlPrefs.h | 102 -------- src/frontends/controllers/Makefile.am | 2 - src/frontends/qt4/Dialogs.cpp | 5 +- src/frontends/qt4/GuiPrefs.cpp | 274 ++++++++++++++++----- src/frontends/qt4/GuiPrefs.h | 102 ++++++-- 6 files changed, 293 insertions(+), 402 deletions(-) delete mode 100644 src/frontends/controllers/ControlPrefs.cpp delete mode 100644 src/frontends/controllers/ControlPrefs.h diff --git a/src/frontends/controllers/ControlPrefs.cpp b/src/frontends/controllers/ControlPrefs.cpp deleted file mode 100644 index 2c2c1cdb7c..0000000000 --- a/src/frontends/controllers/ControlPrefs.cpp +++ /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 - -#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 - -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::const_iterator it = colors_.begin(); - vector::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 index 220c2b90c2..0000000000 --- a/src/frontends/controllers/ControlPrefs.h +++ /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 -#include - -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 colors_; - - bool redraw_gui_; - bool update_screen_font_; -}; - -} // namespace frontend -} // namespace lyx - -#endif // CONTROLPREFS_H diff --git a/src/frontends/controllers/Makefile.am b/src/frontends/controllers/Makefile.am index 2eb984efb6..e2274e2941 100644 --- a/src/frontends/controllers/Makefile.am +++ b/src/frontends/controllers/Makefile.am @@ -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 diff --git a/src/frontends/qt4/Dialogs.cpp b/src/frontends/qt4/Dialogs.cpp index 78a7b58abb..f7eef3bf00 100644 --- a/src/frontends/qt4/Dialogs.cpp +++ b/src/frontends/qt4/Dialogs.cpp @@ -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") diff --git a/src/frontends/qt4/GuiPrefs.cpp b/src/frontends/qt4/GuiPrefs.cpp index 29d433a3f1..fe5330d84d 100644 --- a/src/frontends/qt4/GuiPrefs.cpp +++ b/src/frontends/qt4/GuiPrefs.cpp @@ -11,22 +11,25 @@ #include #include "GuiPrefs.h" -#include "ControlPrefs.h" #include "qt_helpers.h" #include "GuiApplication.h" -#include "ConverterCache.h" -#include "Session.h" -#include "debug.h" +#include "BufferList.h" #include "Color.h" +#include "ConverterCache.h" +#include "debug.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" @@ -50,21 +53,23 @@ 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(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() { - return controller().converters(); + apply(rc()); } -Formats & GuiPrefsDialog::formats() +void GuiPreferences::updateContents() { - return controller().formats(); + updateRc(rc()); } -Movers & GuiPrefsDialog::movers() +bool GuiPreferences::initialiseParams(std::string const &) { - return controller().movers(); + rc_ = lyxrc; + formats_ = lyx::formats; + converters_ = theConverters(); + converters_.update(formats_); + movers_ = theMovers(); + colors_.clear(); + update_screen_font_ = false; + + return true; } -void GuiPrefsDialog::applyView() +void GuiPreferences::dispatchParams() { - apply(controller().rc()); + 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::const_iterator it = colors_.begin(); + vector::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 GuiPrefsDialog::updateContents() + +void GuiPreferences::setColor(Color_color col, string const & hex) { - updateRc(controller().rc()); + 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 +{ + if (lyxrc.use_spell_lib) + return browseFile(file, + _("Choose personal dictionary"), + FileFilterList(_("*.pws"))); + else + return browseFile(file, + _("Choose personal dictionary"), + FileFilterList(_("*.ispell"))); +} + + +docstring const GuiPreferences::browse(docstring const & file, + docstring const & title) const +{ + return browseFile(file, title, FileFilterList(), true); +} + + +docstring const GuiPreferences::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 GuiPreferences::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 GuiPreferences::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; + } +} + + +Dialog * createGuiPreferences(LyXView & lv) { return new GuiPreferences(lv); } + + } // namespace frontend } // namespace lyx diff --git a/src/frontends/qt4/GuiPrefs.h b/src/frontends/qt4/GuiPrefs.h index ab199d1f1d..8421fc3bc6 100644 --- a/src/frontends/qt4/GuiPrefs.h +++ b/src/frontends/qt4/GuiPrefs.h @@ -13,10 +13,12 @@ #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" @@ -39,24 +41,27 @@ #include #include +#include #include + 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 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 colors_; + + bool redraw_gui_; + bool update_screen_font_; };