// -*- C++ -*-
-/* FormGraphics.h
- * FormGraphics Interface Class
+/**
+ * \file FormGraphics.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * This file is part of
- * ======================================================
+ * \author Baruch Even
+ * \author Herbert Voß
*
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
- *
- * This file Copyright 2000
- * Baruch Even
- * ======================================================
+ * Full author contact details are available in file CREDITS.
*/
#ifndef FORMGRAPHICS_H
#define FORMGRAPHICS_H
-#include <config.h>
-#include "LString.h"
-#include "frontends/DialogBase.h"
-//#include "form_graphics.h"
-#include "RadioButtonGroup.h"
+#include "FormDialogView.h"
+#include <boost/scoped_ptr.hpp>
+#include <vector>
-#ifdef __GNUG__
-#pragma interface
-#endif
+namespace lyx {
+namespace frontend {
-class Dialogs;
-// same arguement as in Dialogs.h s/LyX/UI/
-class LyXView;
-class InsetGraphics;
+class CheckedPath;
+class ControlGraphics;
+struct FD_graphics;
+struct FD_graphics_file;
+struct FD_graphics_bbox;
+struct FD_graphics_extra;
-struct FD_form_graphics;
-
-/** This class provides an XForms implementation of the FormGraphics Dialog.
+/** This class provides an XForms implementation of the Graphics Dialog.
*/
-class FormGraphics: public DialogBase {
+class FormGraphics
+ : public FormController<ControlGraphics, FormView<FD_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(Dialog &);
private:
- ///
- FormGraphics()
- : widthButtons(5), heightButtons(4), displayButtons(4) {}
- //
- FormGraphics(FormGraphics const &) : DialogBase() {}
-
- /// 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();
- //@}
- /**@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();
- ///
- 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);
+ /** 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(std::string const & filename, std::string const & bb_inset);
+ /// Filter the inputs on callback from xforms
+ virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
+
+ // Accessor to checker owned by the button controller.
+ CheckedPath * file_checker_;
- /**@name 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.
- */
- 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_graphics_file> file_;
///
- RadioButtonGroup heightButtons;
+ boost::scoped_ptr<FD_graphics_bbox> bbox_;
///
- 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;
- //@}
+ boost::scoped_ptr<FD_graphics_extra> extra_;
+ /// Store the LaTeX names for the rotation origins.
+ std::vector<std::string> origins_;
};
-#endif
-
+} // namespace frontend
+} // namespace lyx
+#endif // FORMGRAPHICS_H