X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormPreferences.h;h=2dcb6c4190d4c5d4f282470c30c2bc7ef6c0dc1f;hb=2c3af1475e2a408f725b5eea93583ee13e3d09cc;hp=0f8e806681494919ee409accc7dc7e6c5457194a;hpb=f2eaff9f309a4e797c7ad3ddea1b7da6e76c6be2;p=lyx.git diff --git a/src/frontends/xforms/FormPreferences.h b/src/frontends/xforms/FormPreferences.h index 0f8e806681..2dcb6c4190 100644 --- a/src/frontends/xforms/FormPreferences.h +++ b/src/frontends/xforms/FormPreferences.h @@ -5,9 +5,9 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. + * Copyright 1995-2001 The LyX Team. * - * This file copyright 1999-2000 + * This file copyright 1999-2001 * Allan Rae *======================================================*/ /* FormPreferences.h @@ -17,28 +17,36 @@ #ifndef FORMPREFERENCES_H #define FORMPREFERENCES_H -#include "FormBase.h" +#include // pair +#include #ifdef __GNUG_ #pragma interface #endif -class LyXView; +#include "FormBaseDeprecated.h" +#include "Color.h" // NamedColor +#include "xforms_helpers.h" // XformColor + +class Combox; class Dialogs; -struct FD_form_colours; +class LyXView; +class RGBColor; +struct FD_form_colors; +struct FD_form_converters; struct FD_form_formats; struct FD_form_inputs_misc; struct FD_form_interface; struct FD_form_language; struct FD_form_lnf_misc; -struct FD_form_outer_tab; +struct FD_form_inner_tab; struct FD_form_outputs_misc; struct FD_form_paths; struct FD_form_preferences; struct FD_form_printer; struct FD_form_screen_fonts; -struct FD_form_spellchecker; -class Combox; +struct FD_form_spelloptions; + /** This class provides an XForms implementation of the FormPreferences Dialog. The preferences dialog allows users to set/save their preferences. @@ -48,20 +56,22 @@ public: /// #FormPreferences x(LyXFunc ..., Dialogs ...);# FormPreferences(LyXView *, Dialogs *); /// - ~FormPreferences(); - /// - static void ComboLanguageCB(int, void *, Combox *); - /// - static void FeedbackCB(FL_OBJECT *, long); - /// - void feedbackPost(FL_OBJECT *, int); + static int FeedbackCB(FL_OBJECT *, int, + FL_Coord, FL_Coord, int, void *); private: + /// Pointer to the actual instantiation of the ButtonController. + virtual xformsBC & bc(); + /** Redraw the form (on receipt of a Signal indicating, for example, + that the xforms colours have been re-mapped). */ + virtual void redraw(); /// Update the dialog. virtual void update(); - /// + /// show the spellchecker tab + void showSpellPref(); + /// Hide the dialog. virtual void hide(); - /// OK from dialog + /// OK (Save) from dialog virtual void ok(); /// Apply from dialog virtual void apply(); @@ -69,136 +79,33 @@ private: virtual bool input(FL_OBJECT *, long); /// Build the dialog virtual void build(); - /// control which feedback message is output - void feedback( FL_OBJECT * ); - /// + /// Pointer to the actual instantiation of the xforms form. virtual FL_FORM * form() const; - /// - void applyColours() const; - /// - void applyFormats() const; - /// - void applyInputsMisc() const; - /// - void applyInterface() const; - /// - void applyLanguage() const; - /// - void applyLnFmisc() const; - /// - void applyOutputsMisc() const; - /// - void applyPaths(); // not const because calls updatePaths! - /// - void applyPrinter() const; - /// - void applyScreenFonts() const; - /// - void applySpellChecker(); // not const because calls updateSpellChecker! - /// - void buildColours(); - /// - bool loadColourBrowser( string const & ); - /// - int searchColourEntry(std::vector const & ) const; - /// - void buildFormats(); - /// - void buildInputsMisc(); - /// - void buildInterface(); - /// - void buildLanguage(); - /// - void addLanguages( Combox & ) const; - /// - void buildLnFmisc(); - /// - void buildOutputsMisc(); - /// - void buildPaths(); - /// - void buildPrinter(); - /// - void buildScreenFonts(); - /// - void buildSpellchecker(); - /// - string feedbackColours(FL_OBJECT const * const) const; - /// - string feedbackFormats( FL_OBJECT const * const ) const; - /// - string feedbackInputsMisc(FL_OBJECT const * const) const; - /// - string feedbackInterface(FL_OBJECT const * const) const; - /// - string feedbackLanguage(FL_OBJECT const * const) const; - /// - string feedbackLnFmisc(FL_OBJECT const * const) const; - /// - string feedbackOutputsMisc(FL_OBJECT const * const) const; - /// - string feedbackPaths(FL_OBJECT const * const) const; - /// - string feedbackPrinter(FL_OBJECT const * const) const; - /// - string feedbackScreenFonts(FL_OBJECT const * const) const; - /// - string feedbackSpellChecker(FL_OBJECT const * const) const; - /// - bool inputColours(FL_OBJECT const * const); - /// - bool inputFormats( FL_OBJECT const * const ); - /// - bool inputLanguage(FL_OBJECT const * const); - /// - bool inputPaths(FL_OBJECT const * const); - /// - bool inputScreenFonts(); - /// - bool inputSpellChecker(FL_OBJECT const * const); - /// - void updateColours(); - /// - void updateColoursBrowser( int ); - /// - void updateColoursRGB(); - /// - void updateFormats(); - /// - void updateInputsMisc(); - /// - void updateInterface(); - /// - void updateLanguage(); - /// - void updateLnFmisc(); - /// - void updateOutputsMisc(); - /// - void updatePaths(); - /// - void updatePrinter(); - /// - void updateScreenFonts(); - /// - void updateSpellChecker(); - - /// - bool WriteableDir( string const & ) const; - /// - bool ReadableDir( string const & ) const; - /// - bool WriteableFile( string const &, string const & = string() ) const; - /// - void setPostHandler( FL_OBJECT * ) const; + /// control which feedback message is output + void feedback(FL_OBJECT *); - /// + /// Set the preemptive handler for each FL_OBJECT. + static void setPreHandler(FL_OBJECT *); + /// The preemptive handler for feedback messages. + void Feedback(FL_OBJECT *, int); + /// Print a warning message and set warning flag. + void printWarning(string const &); + /** Launch a file dialog and modify input if it returns a new file. + For an explanation of the various parameters, see xforms_helpers.h. + */ + void browse(FL_OBJECT * input, + string const & title, string const & pattern, + std::pair const & dir1= std::make_pair(string(),string()), + std::pair const & dir2 = std::make_pair(string(),string())); + + /// Fdesign generated methods FD_form_preferences * build_preferences(); /// - FD_form_outer_tab * build_outer_tab(); + FD_form_inner_tab * build_inner_tab(); + /// + FD_form_colors * build_colors(); /// - FD_form_colours * build_colours(); + FD_form_converters * build_converters(); /// FD_form_formats * build_formats(); /// @@ -218,48 +125,460 @@ private: /// FD_form_screen_fonts * build_screen_fonts(); /// - FD_form_spellchecker * build_spellchecker(); + FD_form_spelloptions * build_spelloptions(); /// Real GUI implementation. - FD_form_preferences * dialog_; - /// Outputs tabfolder - FD_form_outer_tab * outputs_tab_; - /// HCI configuration - FD_form_outer_tab * look_n_feel_tab_; + boost::scoped_ptr dialog_; + /// Converters tabfolder + boost::scoped_ptr converters_tab_; /// reLyX and other import/input stuff - FD_form_outer_tab * inputs_tab_; + boost::scoped_ptr inputs_tab_; + /// HCI configuration + boost::scoped_ptr look_n_feel_tab_; + /// Outputs tabfolder + boost::scoped_ptr outputs_tab_; /// Spellchecker, language stuff, etc - FD_form_outer_tab * usage_tab_; + boost::scoped_ptr lang_opts_tab_; + + /** Flag whether a warning has been posted to the text window. + If so, don't redraw the window when the mouse leaves an object. */ + bool warningPosted; + + /** Each tab folder is encapsulated in its own class. + */ + + class Colors { + public: + /// + enum GuiColors { + GUI_COLOR_CHOICE = FL_FREE_COL1, + GUI_COLOR_HUE_DIAL = FL_FREE_COL2, + GUI_COLOR_CURSOR = FL_FREE_COL3 + }; + /// + Colors(FormPreferences & p); + /// + FD_form_colors const * dialog(); + /// + void apply(); // not const as modifies modifiedXformsPrefs. + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + void input(FL_OBJECT const * const); + /// + void update() { LoadBrowserLyX(); } + + /// Flag whether Xforms colors have changed since last file save + bool modifiedXformsPrefs; + + private: + /// + void AdjustVal(int, int, double) const; + /// + void InputBrowserLyX() const; + /// + void InputHSV(); + /// + void InputRGB(); + /// + void LoadBrowserLyX(); + /// + void Modify(); + /// + void SwitchColorSpace() const; + /// + string const X11hexname(RGBColor const &) const; + + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + + /// A vector of LyX LColor GUI name and associated RGB color. + std::vector lyxColorDB; + /// A vector of xforms color ID, RGB colors and associated name. + std::vector xformsColorDB; + }; + /// + friend class Colors; + + /// + class Converters { + public: + /// + Converters(FormPreferences & p); + /// + FD_form_converters const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + /// + void UpdateBrowser(); + /// + void UpdateChoices() const; + + private: + /// + bool Add(); + /// + bool Browser(); + /// + bool erase(); + /// + bool Input(); + /// + string const GetFrom() const; + /// + string const GetTo() const; + + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class Converters; + /// - FD_form_colours * colours_; + class Formats { + public: + /// + Formats(FormPreferences & p); + /// + FD_form_formats const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + + private: + /// + bool Add(); + /// + bool Browser(); + /// + void UpdateBrowser(); + /// + bool erase(); + /// + bool Input(); + + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; /// - FD_form_formats * formats_; + friend class Formats; + /// - FD_form_inputs_misc * inputs_misc_; + class InputsMisc { + public: + /// + InputsMisc(FormPreferences & p); + /// + FD_form_inputs_misc const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class InputsMisc; + + /// + class Interface { + public: + /// + Interface(FormPreferences & p); + /// + FD_form_interface const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class Interface; + /// - FD_form_interface * interface_; + class Language { + public: + /// + Language(FormPreferences & p); + /// + FD_form_language const * dialog(); + /// + void apply(); // not const because calls update() + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + /// + static void ComboCB(int, void *, Combox *); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + /// + boost::scoped_ptr combo_default_lang; + }; + /// + friend class Language; + + /// + class LnFmisc { + public: + /// + LnFmisc(FormPreferences & p); + /// + FD_form_lnf_misc const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class LnFmisc; + /// - FD_form_language * language_; + class OutputsMisc { + public: + /// + OutputsMisc(FormPreferences & p); + /// + FD_form_outputs_misc const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class OutputsMisc; + /// - FD_form_lnf_misc * lnf_misc_; + class Paths { + public: + /// + Paths(FormPreferences & p); + /// + FD_form_paths const * dialog(); + /// + void apply(); + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class Paths; + /// - FD_form_outputs_misc * outputs_misc_; + class Printer { + public: + /// + Printer(FormPreferences & p); + /// + FD_form_printer const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class Printer; + + /// + class ScreenFonts { + public: + /// + ScreenFonts(FormPreferences & p); + /// + FD_form_screen_fonts const * dialog(); + /// + void apply() const; + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(); + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class ScreenFonts; + + /// + class SpellOptions { + public: + /// + SpellOptions(FormPreferences & p); + /// + FD_form_spelloptions const * dialog(); + /// + void apply(); // not const because calls update()! + /// + void build(); + /// + string const feedback(FL_OBJECT const * const) const; + /// + bool input(FL_OBJECT const * const); + /// + void update(); + + private: + /// + FormPreferences & parent_; + /// + boost::scoped_ptr dialog_; + }; + /// + friend class SpellOptions; + + /** The tab folders. + */ + /// - FD_form_paths * paths_; + Colors colors_; /// - FD_form_printer * printer_; + Converters converters_; /// - FD_form_screen_fonts * screen_fonts_; + InputsMisc inputs_misc_; /// - FD_form_spellchecker * spellchecker_; + Formats formats_; /// - Combox * combo_default_lang; + Interface interface_; /// - Combox * combo_kbmap_1; + Language language_; /// - Combox * combo_kbmap_2; + LnFmisc lnf_misc_; /// - FL_OBJECT * feedbackObj; + OutputsMisc outputs_misc_; + /// + Paths paths_; + /// + Printer printer_; + /// + ScreenFonts screen_fonts_; + /// + SpellOptions spelloptions_; + + /** A couple of helper structs to enable colors to be sorted by name + and by color */ + /// + struct SortColorsByName { + /// + int operator()(NamedColor const & a, NamedColor const & b) const + { return (a.getname() < b.getname()); } + }; + /// + struct SortColorsByColor { + /// + SortColorsByColor(RGBColor c) : col(c) {} + /// + int operator()(RGBColor const &, RGBColor const &) const; + /// + RGBColor col; + }; + /// The ButtonController + ButtonController bc_; }; + +inline +xformsBC & FormPreferences::bc() +{ + return bc_; +} + #endif