* 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
- * Allan Rae
*======================================================*/
/* FormTabular.h
* FormTabular Interface Class
#ifndef FORMTABULAR_H
#define FORMTABULAR_H
-#include "DialogBase.h"
-#ifdef SIGC_CXX_NAMESPACES
-using SigC::Connection;
+#include <boost/smart_ptr.hpp>
+
+#ifdef __GNUG__
+#pragma interface
#endif
-class LyXView;
-class Dialogs;
+#include "FormInset.h"
+
class InsetTabular;
struct FD_form_tabular;
struct FD_form_tabular_options;
struct FD_form_column_options;
struct FD_form_cell_options;
struct FD_form_longtable_options;
-struct FD_form_create_tabular;
/** This class provides an XForms implementation of the FormTabular Dialog.
The tabular dialog allows users to set/save their tabular.
*/
-class FormTabular : public DialogBase {
+class FormTabular : public FormInset {
public:
- /**@name Constructors and Destructors */
- //@{
- /// #FormTabular x(LyXFunc ..., Dialogs ...);#
- FormTabular(LyXView *, Dialogs *);
- ///
- ~FormTabular();
- //@}
-
- /**@name Real per-instance Callback Methods */
- //@{
- static int WMHideCB(FL_FORM *, void *);
- static void CloseCB(FL_OBJECT *, long);
- static void OKCB(FL_OBJECT *, long);
- static void CancelCB(FL_OBJECT *, long);
- static void ApplyCB(FL_OBJECT *, long);
- static void InputCB(FL_OBJECT *, long);
- //@}
+ /// #FormTabular x(LyXFunc ..., Dialogs ...);#
+ FormTabular(LyXView *, Dialogs *);
private:
- FormTabular() {}
- FormTabular(FormTabular &) : DialogBase() {}
-
- /**@name Slot Methods */
- //@{
- /// Create the dialog if necessary, update it and display it.
- void show();
- void show_create();
- void showInset(InsetTabular *);
- /// Hide the dialog.
- void hide();
- void hide_create();
- void hideInset(InsetTabular *);
- /// Update the dialog.
- void update();
- void updateInset(InsetTabular *);
- bool local_update(bool);
- //@}
-
- /**@name Dialog internal methods */
- //@{
- /// Apply from dialog
- void apply_create();
- /// Build the dialog
- void build();
- ///
- void SetTabularOptions(FL_OBJECT *, long);
- ///
- FD_form_tabular * build_tabular();
- ///
- FD_form_tabular_options * build_tabular_options();
- ///
- FD_form_column_options * build_column_options();
- ///
- FD_form_cell_options * build_cell_options();
- ///
- FD_form_longtable_options * build_longtable_options();
- ///
- FD_form_create_tabular * build_create_tabular();
- ///
- /// Explicitly free the dialog.
- void free();
- //@}
+ /// 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();
+ /// Disconnect signals. Also perform any necessary housekeeping.
+ virtual void disconnect();
+
+ /// Slot launching dialog to an existing inset
+ void showInset(InsetTabular *);
+ /// Slot launching dialog to an existing inset
+ void updateInset(InsetTabular *);
+ /// Update dialog before showing it
+ virtual void update();
+ /// Build the dialog
+ virtual void build();
+ /// Filter the inputs
+ virtual bool input(FL_OBJECT *, long);
+ /// Pointer to the actual instantiation of the xforms form
+ virtual FL_FORM * form() const;
+ ///
+ virtual int checkLongtableOptions(FL_OBJECT *, string &);
- /**@name Private Data */
- //@{
- /// Real GUI implementation.
- FD_form_tabular * dialog_;
- ///
- FD_form_tabular_options * tabular_options_;
- ///
- FD_form_column_options * column_options_;
- ///
- FD_form_cell_options * cell_options_;
- ///
- FD_form_longtable_options * longtable_options_;
- ///
- FD_form_create_tabular * create_tabular_;
- ///
- /// Which LyXView do we belong to?
- LyXView * lv_;
- Dialogs * d_;
- /// Update connection.
- Connection u_;
- /// Hide connection.
- Connection h_;
- //@}
- InsetTabular * inset_;
- int actCell_;
+ /// Fdesign generated methods
+ FD_form_tabular * build_tabular();
+ ///
+ FD_form_tabular_options * build_tabular_options();
+ ///
+ FD_form_column_options * build_column_options();
+ ///
+ FD_form_cell_options * build_cell_options();
+ ///
+ FD_form_longtable_options * build_longtable_options();
+
+ /// Real GUI implementation.
+ boost::scoped_ptr<FD_form_tabular> dialog_;
+ ///
+ boost::scoped_ptr<FD_form_tabular_options> tabular_options_;
+ ///
+ boost::scoped_ptr<FD_form_column_options> column_options_;
+ ///
+ boost::scoped_ptr<FD_form_cell_options> cell_options_;
+ ///
+ boost::scoped_ptr<FD_form_longtable_options> longtable_options_;
+
+ /// pointer to the inset passed through showInset
+ InsetTabular * inset_;
+ ///
+ int actCell_;
+ /// The ButtonController
+ ButtonController<OkCancelReadOnlyPolicy, xformsBC> bc_;
+ /// if we are applying stuff during a close of the dialog
+ bool closing_;
};
+
+inline
+xformsBC & FormTabular::bc()
+{
+ return bc_;
+}
#endif