+ 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<FD_form_interface> dialog_;
+ };
+ ///
+ friend class 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<FD_form_language> dialog_;
+ ///
+ boost::scoped_ptr<Combox> 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<FD_form_lnf_misc> dialog_;
+ };
+ ///
+ friend class LnFmisc;
+
+ ///
+ 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<FD_form_outputs_misc> dialog_;
+ };
+ ///
+ friend class OutputsMisc;
+
+ ///
+ 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<FD_form_paths> dialog_;
+ };
+ ///
+ friend class Paths;
+
+ ///
+ 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<FD_form_printer> 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<FD_form_screen_fonts> 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<FD_form_spelloptions> dialog_;
+ };
+ ///
+ friend class SpellOptions;
+
+ /** The tab folders.
+ */
+
+ ///
+ Colors colors_;
+ ///
+ Converters converters_;
+ ///
+ InputsMisc inputs_misc_;
+ ///
+ Formats formats_;
+ ///
+ Interface interface_;
+ ///
+ Language language_;
+ ///
+ LnFmisc lnf_misc_;
+ ///
+ 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<PreferencesPolicy, xformsBC> bc_;