]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormGraphics.h
Herbert's and my fixes to the graphics inset.
[lyx.git] / src / frontends / xforms / FormGraphics.h
index 8bc15e66d4291b4165a8d8115f3b743202818ef2..db5fccd4b320e7f36f800700d040e68594360cd8 100644 (file)
 // -*- C++ -*-
-/* FormGraphics.h
- * FormGraphics Interface Class
+/**
+ * \file FormGraphics.h
+ * Copyright 2000-2001 the LyX Team
+ * Read the file COPYING
  *
- * This file is part of
- * ====================================================== 
- *
- *           LyX, The Document Processor
- *
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
- *
- * ======================================================
+ * \author Baruch Even, baruch.even@writeme.com
+ * \author Herbert Voss, voss@lyx.org
  */
 
 #ifndef FORMGRAPHICS_H
 #define FORMGRAPHICS_H
 
-#include "LString.h"
-#include "frontends/DialogBase.h"
-#include "RadioButtonGroup.h"
-#include <boost/utility.hpp>
-#include "ButtonController.h"
-#include "ButtonPolicies.h"
+#include <boost/smart_ptr.hpp>
 
 #ifdef __GNUG__
 #pragma interface
-#endif 
+#endif
 
-// Forward declarations for classes we use only as pointers.
-class Dialogs;
-class LyXView;
-class InsetGraphics;
+#include "FormBase.h"
+#include "RadioButtonGroup.h"
 
+class ControlGraphics;
 struct FD_form_graphics;
+struct FD_form_file;
+struct FD_form_lyxview;
+struct FD_form_size;
+struct FD_form_bbox;
+struct FD_form_special;
 
-/** This class provides an XForms implementation of the FormGraphics Dialog.
- *
- *  @Author Baruch Even <baruch.even@writeme.com>
+/** This class provides an XForms implementation of the Graphics Dialog.
  */
-class FormGraphics: public DialogBase, public noncopyable {
+class FormGraphics : public FormCB<ControlGraphics, FormDB<FD_form_graphics> > {
 public:
-       /// #FormGraphics x(LyXFunc ..., Dialogs ...);#
-       FormGraphics(LyXView *, Dialogs *);
-       ///
-       ~FormGraphics();
-       ///
-       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);
+       FormGraphics(ControlGraphics &);
 
 private:
-       /// 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
-       };
-
-       /// 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();
 
-       /// Apply the changes to the inset.
-       void apply();
-       /// 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();
+       /** Redraw the form (on receipt of a Signal indicating, for example,
+           that the xforms colours have been re-mapped). */
+       virtual void redraw();
+       /// Set the Params variable for the Controller.
+       virtual void apply();
+       /// Build the dialog.
+       virtual void build();
+       /// Update dialog before/whilst showing it.
+       virtual void update();
+       /// Update the BoundingBox info.
+       void updateBB(string const & filename, string const & bb_inset); 
+       /// Filter the inputs on callback from xforms
+       virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
 
-       /// Build the dialog
-       void build();
-       ///
+       /// 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);
+       ///
+       FD_form_file * build_file();
+       ///
+       FD_form_lyxview * build_lyxview();
+       ///
+       FD_form_size * build_size();
+       ///
+       FD_form_bbox * build_bbox();
+       ///
+       FD_form_special * build_special();
 
        /// 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.
-       */
-       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;
+       boost::scoped_ptr<FD_form_file> file_;
        ///
-       RadioButtonGroup heightButtons;
+       boost::scoped_ptr<FD_form_lyxview> lyxview_;
        ///
-       RadioButtonGroup displayButtons;
-       /// Controls the actions of the buttons.
-       ButtonController * bc_;
-
-       /// 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;
+       boost::scoped_ptr<FD_form_size> size_;
+       ///
+       boost::scoped_ptr<FD_form_bbox> bbox_;
+       ///
+       boost::scoped_ptr<FD_form_special> special_;
 };
 
-#endif 
+#endif  // FORMGRAPHICS_H