]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormBase.h
try this for distinguishing inner and outer tabs
[lyx.git] / src / frontends / xforms / FormBase.h
index 3eca8ca3ede88863cc09cd8c198ddaccd67770c1..1cf0f693b1531b3836b376cac5136841247370b0 100644 (file)
 
 #include "DialogBase.h"
 #include "LString.h"
-#include <boost/utility.hpp>
 #include FORMS_H_LOCATION
 #include "ButtonController.h"
 #include "gettext.h"
+#include <sigc++/signal_system.h>
 
 class Buffer;
 class Dialogs;
@@ -28,10 +28,12 @@ class LyXView;
 #endif
 
 /** This class is an XForms GUI base class.
-    It is meant to be used solely as the parent class to FormBaseBI and FormBaseBD
+    It is meant to be used solely as the parent class to FormBaseBI
+    and FormBaseBD.
     @author Angus Leeming
  */
-class FormBase : public DialogBase, public noncopyable {
+
+class FormBase : public DialogBase {
 public:
        /// Callback functions
        static  int WMHideCB(FL_FORM *, void *);
@@ -47,16 +49,21 @@ public:
        static void RestoreCB(FL_OBJECT *, long);
 
 protected: // methods
-       /** Constructor.
-           #FormBase(lv, d, _("DialogName"), BUFFER_DEPENDENT, new ButtonPolicy)#
-        */
+       ///
        FormBase(LyXView *, Dialogs *, string const &,
                 ButtonPolicy *, char const *, char const *);
        ///
        virtual ~FormBase();
 
+       /** Redraw the form (on receipt of a Signal indicating, for example,
+           that the xform colors have been re-mapped).
+           Must be virtual because dialogs with tabbed folders will need to
+           redraw the form for each tab.
+       */
+       virtual void redraw();
+
        /// Create the dialog if necessary, update it and display it.
-       void show();
+       virtual void show();
        /// Hide the dialog.
        virtual void hide();
        /// Update the dialog.
@@ -64,13 +71,13 @@ protected: // methods
        /// Connect signals. Also perform any necessary initialisation.
        virtual void connect();
        /// Disconnect signals. Also perform any necessary housekeeping.
-       virtual void disconnect() = 0;
+       virtual void disconnect();
        /// Build the dialog
        virtual void build() = 0;
        /** Filter the inputs on callback from xforms
            Return true if inputs are valid.
         */
-       virtual bool input( FL_OBJECT *, long ) {
+       virtual bool input( FL_OBJECT *, long) {
                return true;
        }
        /// Apply from dialog (modify or create inset)
@@ -102,10 +109,14 @@ protected: // methods
        Dialogs * d_;
        /// Hide connection.
        Connection h_;
+       /// Redraw connection.
+       Connection r_;
        /// dialog title, displayed by WM.
        string title;
+private:
        ///
        ButtonPolicy * bp_;
+public:
        /// Overcome a dumb xforms sizing bug
        mutable int minw_;
        ///
@@ -121,14 +132,12 @@ class FormBaseBI : public FormBase {
 protected:
        /// Constructor
        FormBaseBI(LyXView *, Dialogs *, string const &,
-                  ButtonPolicy * bp = new OkApplyCancelPolicy,
+                  ButtonPolicy * bp,
                   char const * close = N_("Close"),
                   char const * cancel = N_("Cancel"));
 
        /// Connect signals
        virtual void connect();
-       /// Disconnect signals
-       virtual void disconnect();
 };
 
 
@@ -138,7 +147,7 @@ class FormBaseBD : public FormBase {
 protected:
        /// Constructor
        FormBaseBD(LyXView *, Dialogs *, string const &,
-                  ButtonPolicy * bp = new OkApplyCancelReadOnlyPolicy,
+                  ButtonPolicy * bp,
                   char const * close = N_("Close"),
                   char const * cancel = N_("Cancel"));