]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormDocument.h
Change the semantics of 'none' and 'auto' viewers/editors: 'none' means now
[lyx.git] / src / frontends / xforms / FormDocument.h
index bf888b76d94b9998f1bbedfdbb0fce4441f38a31..429d036e796c9bda8e74cbcdba8b2ef5f34322f3 100644 (file)
 // -*- C++ -*-
-/* This file is part of
- * ======================================================
- * 
- *           LyX, The Document Processor
- *      
- *           Copyright (C) 2000 The LyX Team.
+/**
+ * \file FormDocument.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           @author Jürgen Vigna
+ * \author Jürgen Vigna
  *
- *======================================================*/
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef FORM_DOCUMENT_H
 #define FORM_DOCUMENT_H
 
-#include <vector>
-#include <boost/smart_ptr.hpp>
+#include "FormDialogView.h"
+#include "BranchList.h"
 
-#ifdef __GNUG_
-#pragma interface
-#endif
+#include <boost/scoped_ptr.hpp>
 
-#include "FormBaseDeprecated.h"
+#include "lyx_forms.h"
+#include <vector>
 
-class Combox;
 class BufferParams;
 
-struct FD_form_tabbed_document;
-struct FD_form_doc_paper;
-struct FD_form_doc_class;
-struct FD_form_doc_language;
-struct FD_form_doc_options;
-struct FD_form_doc_bullet;
-
-/** This class provides an XForms implementation of the FormDocument Popup.
-    The table-layout-form here changes values for latex-tabulars
-    @author Jürgen Vigna
+namespace lyx {
+namespace frontend {
+
+class ControlDocument;
+class FormColorpicker;
+struct FD_document;
+struct FD_document_paper;
+struct FD_document_class;
+struct FD_document_language;
+struct FD_document_options;
+struct FD_document_bullet;
+struct FD_document_branch;
+
+/** This class provides an XForms implementation of the FormDocument dialog.
+ *  The table-layout-form here changes values for latex-tabulars
  */
-class FormDocument : public FormBaseBD {
+class FormDocument
+       : public FormController<ControlDocument, FormView<FD_document> > {
 public:
-       /// #FormDocument x(Communicator ..., Popups ...);#
-       FormDocument(LyXView *, Dialogs *);
-       ///
-       static void ComboInputCB(int, void *, Combox *);
+       FormDocument(Dialog &);
 private:
-       ///
-       enum State {
-               ///
-               INPUT,
-               ///
-               CHECKCHOICECLASS,
-               ///
-               CHOICEBULLETSIZE,
-               ///
-               INPUTBULLETLATEX,
-               ///
-               BULLETDEPTH1,
-               ///
-               BULLETDEPTH2,
-               ///
-               BULLETDEPTH3,
-               ///
-               BULLETDEPTH4,
-               ///
-               BULLETPANEL1,
-               ///
-               BULLETPANEL2,
-               ///
-               BULLETPANEL3,
-               ///
-               BULLETPANEL4,
-               ///
-               BULLETPANEL5,
-               ///
-               BULLETPANEL6,
-               ///
-               BULLETBMTABLE
-       };
-       /// 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();
        /// Build the dialog
        virtual void build();
        /// Filter the inputs
-       virtual bool input( FL_OBJECT *, long );
-       /// Update the popup.
+       virtual ButtonPolicy::SMInput input( FL_OBJECT *, long);
+       /// Update the dialog.
        virtual void update();
-       /// Apply from popup
+       /// Apply from dialog
        virtual void apply();
-       /// Cancel from popup
-       virtual void cancel();
-
-       ///
-       virtual FL_FORM * form() const;
 
        ///
-       bool CheckDocumentInput(FL_OBJECT * ob, long);
+       void branch_input(FL_OBJECT *);
        ///
        void ChoiceBulletSize(FL_OBJECT * ob, long);
        ///
        void InputBulletLaTeX(FL_OBJECT * ob, long);
        ///
-       void BulletDepth(FL_OBJECT * ob, State);
+       void BulletDepth(FL_OBJECT * ob);
        ///
-       void BulletPanel(FL_OBJECT * ob, State);
+       void BulletPanel(FL_OBJECT * ob);
        ///
        void BulletBMTable(FL_OBJECT * ob, long);
        ///
-       void checkMarginValues();
-       ///
        void checkReadOnly();
        ///
-       void CheckChoiceClass(FL_OBJECT * ob, long);
+       void CheckChoiceClass();
        ///
        void UpdateLayoutDocument(BufferParams const & params);
+       ///
+       void UpdateClassParams(BufferParams const & params);
 
        ///
        void paper_update(BufferParams const &);
@@ -126,43 +86,39 @@ private:
        void options_update(BufferParams const &);
        ///
        void bullets_update(BufferParams const &);
-
-       ///
-       void paper_apply();
-       ///
-       bool class_apply();
-       ///
-       bool language_apply();
-       ///
-       bool options_apply();
        ///
-       void bullets_apply();
+       void branch_update(BufferParams const &);
 
-       /// Typedefinitions from the fdesign produced Header file
-       FD_form_tabbed_document * build_tabbed_document();
        ///
-       FD_form_doc_paper * build_doc_paper();
+       void paper_apply(BufferParams &);
        ///
-       FD_form_doc_class * build_doc_class();
+       bool class_apply(BufferParams &);
        ///
-       FD_form_doc_language * build_doc_language();
+       bool language_apply(BufferParams &);
        ///
-       FD_form_doc_options * build_doc_options();
+       void options_apply(BufferParams &);
        ///
-       FD_form_doc_bullet * build_doc_bullet();
+       void bullets_apply(BufferParams &);
+       ///
+       void branch_apply(BufferParams &);
+
+       void rebuild_all_branches_browser();
+       void rebuild_selected_branches_browser();
 
        /// Real GUI implementation.
-       boost::scoped_ptr<FD_form_tabbed_document> dialog_;
+       boost::scoped_ptr<FD_document_paper>    paper_;
+       ///
+       boost::scoped_ptr<FD_document_class>    class_;
        ///
-       boost::scoped_ptr<FD_form_doc_paper>       paper_;
+       boost::scoped_ptr<FD_document_language> language_;
        ///
-       boost::scoped_ptr<FD_form_doc_class>       class_;
+       boost::scoped_ptr<FD_document_options>  options_;
        ///
-       boost::scoped_ptr<FD_form_doc_language>    language_;
+       boost::scoped_ptr<FD_document_bullet>   bullets_;
        ///
-       boost::scoped_ptr<FD_form_doc_options>     options_;
+       boost::scoped_ptr<FD_document_branch>   branch_;
        ///
-       boost::scoped_ptr<FD_form_doc_bullet>      bullets_;
+       boost::scoped_ptr<FormColorpicker> picker_;
        ///
        int ActCell;
        ///
@@ -174,18 +130,12 @@ private:
        ///
        FL_OBJECT * fbullet;
        ///
-       boost::scoped_ptr<Combox> combo_language;
-       ///
-       boost::scoped_ptr<Combox> combo_doc_class;
-       /// The ButtonController
-       ButtonController<NoRepeatedApplyReadOnlyPolicy, xformsBC> bc_;
+       std::vector<std::string> lang_;
+       /// Contains all legal branches for this doc
+       BranchList branchlist_;
 };
 
-
-inline
-xformsBC & FormDocument::bc()
-{
-       return bc_;
-}
+} // namespace frontend
+} // namespace lyx
 
 #endif