]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormGraphics.h
try this for distinguishing inner and outer tabs
[lyx.git] / src / frontends / xforms / FormGraphics.h
index b2642cc129c4093feb4f575a6c26d1df19da7fc7..6c42fbbab810c57cd9d884bdd1a6eb8d0065abc5 100644 (file)
  *           Copyright 1995 Matthias Ettrich
  *           Copyright 1995-2000 The LyX Team.
  *
- *           This file Copyright 2000
- *           Baruch Even
  * ======================================================
  */
 
 #ifndef FORMGRAPHICS_H
 #define FORMGRAPHICS_H
 
-#include <config.h>
 #include "LString.h"
-#include "frontends/DialogBase.h"
-//#include "form_graphics.h"
 #include "RadioButtonGroup.h"
+#include "ButtonPolicies.h"
+#include "FormInset.h"
 
 #ifdef __GNUG__
 #pragma interface
-#endif
+#endif 
 
-class Dialogs;
-// same arguement as in Dialogs.h s/LyX/UI/
-class LyXView;
+// Forward declarations for classes we use only as pointers.
 class InsetGraphics;
 
 struct FD_form_graphics;
 
 /** This class provides an XForms implementation of the FormGraphics Dialog.
+ *
+ *  @Author Baruch Even <baruch.even@writeme.com>
  */
-class FormGraphics: public DialogBase {
+class FormGraphics : public FormInset {
 public:
-       /**@name Constructors and Destructors */
-       //@{
        /// #FormGraphics x(LyXFunc ..., Dialogs ...);#
        FormGraphics(LyXView *, Dialogs *);
        ///
        ~FormGraphics();
-       //@}
-
-       /**@name Real per-instance Callback Methods */
-       //@{
-       static  int WMHideCB(FL_FORM *, void *);
-       static void OKCB(FL_OBJECT *, long);
-    static void ApplyCB(FL_OBJECT *, long);
-    static void CancelCB(FL_OBJECT *, long);
-    static void BrowseCB(FL_OBJECT *, long);
-    static void AdvancedOptionsCB(FL_OBJECT *, long);
-    static void InputCB(FL_OBJECT *, long);
-       //@}
 
 private:
-       FormGraphics() : widthButtons(5), heightButtons(4), displayButtons(4) {}
-       FormGraphics(FormGraphics &) : DialogBase() {}
-       
-    /**@name Define enum constants */
-    //@{ 
-    /// The maximum digits for the image width (cm, inch, percent)
-    enum { WIDTH_MAXDIGITS = 3 }; 
-    /// The maximum digits for the image height (cm, inch, percent)
-    enum { HEIGHT_MAXDIGITS = 3 };
-    /// The maximum characters in the rotation angle (minus sign and 3 digits)
-    enum { ROTATE_MAXCHARS = 4 };
-    /// The maximum characters in a filename.
-    enum { FILENAME_MAXCHARS = 1024 };
-    //@}
-
-    
-       /**@name Slot Methods */
-       //@{
-       /// Save the active inset and show the dialog.
-       void showDialog(InsetGraphics * inset);
-       /// Create the dialog if necessary, update it and display it.
-    void show();
-       /// Hide the dialog.
-       void hide();
-       /// Update the dialog
-       void update();
-       //@}
+       /// The maximum digits for the image width (cm, inch, percent)
+       enum {
+           ///
+           WIDTH_MAXDIGITS = 3
+       };
+       /// The maximum digits for the image height (cm, inch, percent)
+       enum {
+           ///
+           HEIGHT_MAXDIGITS = 3
+       };
+       /// The maximum characters in the rotation angle (minus sign and 3 digits)
+       enum {
+           ///
+           ROTATE_MAXCHARS = 4
+       };
+       /// The maximum characters in a filename.
+       enum {
+           ///
+           FILENAME_MAXCHARS = 1024
+       };
+       ///
+       enum State {
+               ///
+               CHECKINPUT,
+               ///
+               BROWSE,
+               ///
+               ADVANCEDINPUT
+       };
 
-    /**@name Callback methods */
-    //@{
-    /// Apply the changes to the inset.
-    void apply();
-    /// Verify that the input is correct. If not disable ok/apply buttons.
-    void input();
-    /// Open the file browse dialog to select an image file.
-    void browse();
        /// Build the dialog
-       //@}
-       
-    void build();
-       ///
+       virtual void build();
+       /// Filter the inputs
+       virtual bool input( FL_OBJECT *, long );
+       /// Update the popup.
+       virtual void update();
+       /// Apply from popup
+       virtual void apply();
+
+       /// Disconnect signals. Also perform any necessary housekeeping.
+       virtual void disconnect();
+
+       /// Save the active inset and show the dialog.
+       void showDialog(InsetGraphics *);
+       /// Verify that the input is correct. If not disable ok/apply buttons.
+       bool checkInput();
+       /// Open the file browse dialog to select an image file.
+       void browse();
+
+       /// Pointer to the actual instantiation of the xform's form
+       virtual FL_FORM * form() const;
+       /// Fdesign generated method
        FD_form_graphics * build_graphics();
-       /// Explicitly free the dialog.
-       void free();
-    /// Display a file browser dialog and return the file chosen.
-    string browseFile(string const & filename);
 
-       /**@name Private Data */
-       //@{
        /// Real GUI implementation.
        FD_form_graphics * dialog_;
-       /** Which LyXFunc do we use?
-           We could modify Dialogs to have a visible LyXFunc* instead and
-           save a couple of bytes per dialog.
-       */
-       LyXView * lv_;
-       /** Which Dialogs do we belong to?
-           Used so we can get at the signals we have to connect to.
+       /** Which Inset do we belong to?
+          Used to set and update data to/from the inset.
        */
-       Dialogs * d_;
-    /** Which Inset do we belong to?
-     *  Used to set and update data to/from the inset.
-     */
-    InsetGraphics * inset_;
-    /// The radio buttons groups
-    RadioButtonGroup widthButtons;
-    RadioButtonGroup heightButtons;
-    RadioButtonGroup displayButtons;
-
-    /// Inset Hide connection, connected to the calling inset hide signal.
-    Connection ih_;
-       /// Hide connection.
-       Connection h_;
-    /// Update connection.
-    Connection u_;
-    /// Last used figure path
-    string last_image_path;
-       //@}
-
+       InsetGraphics * inset_;
+       /// The radio buttons groups
+       RadioButtonGroup widthButtons;
+       ///
+       RadioButtonGroup heightButtons;
+       ///
+       RadioButtonGroup displayButtons;
+       /// Last used figure path
+       string last_image_path;
 };
 
-#endif
-
-
+#endif