]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormPreferences.h
try this for distinguishing inner and outer tabs
[lyx.git] / src / frontends / xforms / FormPreferences.h
index dee26afaf2cf9386520b3ad24816432f1475f090..928f826f0e426ba9e1dacba0b88fd8459ce0df73 100644 (file)
 #ifndef FORMPREFERENCES_H
 #define FORMPREFERENCES_H
 
-#include <utility> // for pair
-
-#include "FormBase.h"
-#include "Color.h"
-#include "LString.h"
-
 #ifdef __GNUG_
 #pragma interface
 #endif
 
+#include <utility> // pair
+#include "FormBase.h"
+#include "Color.h" // NamedColor
+#include "xform_helpers.h" // XformColor
+
 class Combox;
-class Command;
 class Dialogs;
-class Format;
 class LyXView;
+class RGBColor;
 struct FD_form_colors;
 struct FD_form_converters;
 struct FD_form_formats;
@@ -62,14 +60,18 @@ public:
                              FL_Coord, FL_Coord, int, void *);
 
 private:
+       /// Connect signals etc. Set form's max size.
+       virtual void connect();
+       /// Disconnect signals. Also perform any necessary housekeeping.
+       virtual void disconnect();
        /** Redraw the form (on receipt of a Signal indicating, for example,
            that the xform colours have been re-mapped). */
        virtual void redraw();
        /// Update the dialog.
        virtual void update();
-       ///
+       /// Hide the dialog.
        virtual void hide();
-       /// OK from dialog
+       /// OK (Save) from dialog
        virtual void ok();
        /// Apply from dialog
        virtual void apply();
@@ -77,48 +79,25 @@ private:
        virtual bool input(FL_OBJECT *, long);
        /// Build the dialog
        virtual void build();
-       /// control which feedback message is output
-       void feedback( FL_OBJECT * );
-       /// The handler for the preemptive feedback
-       void Feedback(FL_OBJECT *, int);
-       ///
+       /// Pointer to the actual instantiation of xform's form.
        virtual FL_FORM * form() const;
+       /// control which feedback message is output
+       void feedback(FL_OBJECT *);
 
-       /** Helper functions available to the various tab folders.
-        */
-
-       ///
-       bool WriteableDir( string const & );
-       ///
-       bool ReadableDir( string const & );
-       ///
-       bool WriteableFile( string const &, string const & = string() );
-       ///
-       bool ReadableFile( string const &, string const & = string() );
-       ///
-       void setPreHandler( FL_OBJECT * ) const;
-       ///
+               /// 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 & );
-
-       /** title: filedlg title, pattern: *.ps etc
-           extra buttons on filedlg: dir1 = (name, dir), dir2 = (name, dir)
+       /** Launch a file dialog and modify input if it returns a new file.
+           For an explanation of the various parameters, see xform_helpers.h.
         */
+       void browse( FL_OBJECT * input,
+                    string const & title, string const & pattern, 
+                    std::pair<string,string> const & dir1,
+                    std::pair<string,string> const & dir2 );
        
-       ///
-       bool browse(FL_OBJECT * input,
-                   string const & title, string const & pattern, 
-                   std::pair<string,string> const & dir1 //=
-                   //std::pair<string,string>()
-                   ,
-                   std::pair<string,string> const & dir2 //=
-                   //std::pair<string,string>()
-               );
-       /// called from browse()
-       string const browseFile( string const & filename,
-                                string const & title, string const & pattern, 
-                                std::pair<string,string> const & dir1,
-                                std::pair<string,string> const & dir2 ) const;
-
        /// Type definitions from the fdesign produced header file.
        FD_form_preferences * build_preferences();
        ///
@@ -159,7 +138,7 @@ private:
        /// Outputs tabfolder
        FD_form_outer_tab * outputs_tab_;
        /// Spellchecker, language stuff, etc
-       FD_form_outer_tab * usage_tab_;
+       FD_form_outer_tab * 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. */
@@ -170,6 +149,12 @@ private:
 
        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 ) : parent_(p), dialog_(0) {}
                ///
@@ -183,9 +168,10 @@ private:
                ///
                string const feedback(FL_OBJECT const * const) const;
                ///
-               bool input(FL_OBJECT const * const);
+               void input(FL_OBJECT const * const);
                ///
-               void update();
+               void update() { LoadBrowserLyX(); }
+               
                /// Flag whether Xforms colors have changed since last file save
                bool modifiedXformPrefs;
 
@@ -193,30 +179,29 @@ private:
                ///
                void AdjustVal( int, int, double ) const;
                ///
-               bool BrowserLyX() const;
+               void InputBrowserLyX() const;
                ///
-               bool BrowserX11() const;
+               void InputHSV();
                ///
-               bool Database();
+               void InputRGB();
                ///
                void LoadBrowserLyX();
                ///
-               bool LoadBrowserX11(string const &) const;
-               ///
-               bool Modify() const;
+               void Modify();
                ///
-               bool RGB() const;
+               void SwitchColorSpace() const;
                ///
-               int SearchEntry(RGBColor const &) const;
+               string const X11hexname(RGBColor const &) const;
 
                ///
                FormPreferences & parent_;
                ///
                FD_form_colors * dialog_;
-               /// A vector of RGB colors and associated name.
-               static std::vector<X11Color> colorDB;
-               /// A vector of xform RGB colors and associated name.
-               static std::vector<XformColor> xformColorDB;
+
+               /// A vector of LyX LColor GUI name and associated RGB color.
+               std::vector<NamedColor> lyxColorDB;
+               /// A vector of xform color ID, RGB colors and associated name.
+               std::vector<XformColor> xformColorDB;
        };
        ///
        friend class Colors;
@@ -225,7 +210,7 @@ private:
        class Converters {
        public:
                ///
-               Converters( FormPreferences &  p ) : parent_(p), dialog_(0) {}
+               Converters( FormPreferences & p ) : parent_(p), dialog_(0) {}
                ///
                ~Converters();
                ///
@@ -565,7 +550,6 @@ private:
        ///
        friend class SpellChecker;
 
-       
        /** The tab folders.
         */
        
@@ -593,6 +577,25 @@ private:
        ScreenFonts screen_fonts_;
        ///
        SpellChecker spellchecker_;
+
+       /** 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;
+       };
+
 };
 
 #endif