#include "ButtonController.h"
#include <QDialog>
-#include <QObject>
-class QCloseEvent;
-class QShowEvent;
namespace lyx {
namespace frontend {
-/** \c Dialog collects the different parts of a Model-Controller-View
- * split of a generic dialog together.
- */
+/// Base class for historical LyX dialogs.
+/**
+ * \warning New dialogs should use the leaner classes \c DialogView or
+ * \c DockView depending on the intent. Eventually, old dialogs should be
+ * converted to \c DialogView too.
+ */
class GuiDialog : public QDialog, public Dialog
{
Q_OBJECT
/// \param lv is the access point for the dialog to the LyX kernel.
/// \param name is the identifier given to the dialog by its parent
/// container.
- explicit GuiDialog(LyXView & lv, std::string const & name);
- ~GuiDialog();
+ /// \param title is the window title used for decoration.
+ GuiDialog(GuiView & lv, QString const & name, QString const & title);
+
+ virtual QWidget * asQWidget() { return this; }
+ virtual QWidget const * asQWidget() const { return this; }
public Q_SLOTS:
/** \name Buttons
void slotOK();
// Apply button clicked
void slotApply();
+ // AutoApply checkbox clicked
+ void slotAutoApply();
// Close button clicked or closed from WindowManager
void slotClose();
+ ///
+ void closeEvent(QCloseEvent * e);
+
+protected Q_SLOTS:
+ void onBufferViewChanged() {};//override
public:
/** Check whether we may apply our data.
*
* The buttons are disabled if not and (re-)enabled if yes.
*/
- void checkStatus();
void setButtonsValid(bool valid);
/** \name Dialog Components
ButtonController & bc() { return bc_; }
//@}
- void setViewTitle(docstring const & title);
-
-
/// the dialog has changed contents
virtual void changed();
+ virtual void enableView(bool enable);
+
/// default: do nothing
virtual void applyView() {}
/// default: do nothing
virtual void updateContents() {}
- ///
- void closeEvent(QCloseEvent *);\r
- ///\r
- void showEvent(QShowEvent *);\r
-\r
-protected:
- /// Hide the dialog.
- virtual void hideView();
- /// Create the dialog if necessary, update it and display it.
- virtual void showView();
- ///
- virtual bool isVisibleView() const;
+
+public:
/// is the dialog currently valid ?
virtual bool isValid() { return true; }
public:
- /** \name Container Access
- * These methods are publicly accessible because they are invoked
- * by the parent container acting on commands from the LyX kernel.
- */
- //@{
- /// \param data is a string encoding of the data to be displayed.
- /// It is passed to the Controller to be translated into a useable form.
- void showData(std::string const & data);
- void updateData(std::string const & data);
-
- void hide();
-
- /** This function is called, for example, if the GUI colours
- * have been changed.
- */
- void redraw() { redrawView(); }
- //@}
/** When applying, it's useful to know whether the dialog is about
* to close or not (no point refreshing the display for example).
*/
bool isClosing() const { return is_closing_; }
-
- /** \name Dialog Specialization
- * Methods to set the Controller and View and so specialise
- * to a particular dialog.
- */
- //@{
- /// \param ptr is stored and destroyed by \c Dialog.
- void setController(Controller * ptr);
- //@}
-
- /** \name Dialog Components
- * Methods to access the various components making up a dialog.
- */
- //@{
- virtual Controller & controller() { return *controller_; }
- //@}
-
- /** Defaults to nothing. Can be used by the Controller, however, to
- * indicate to the View that something has changed and that the
- * dialog therefore needs updating.
- * \param id identifies what should be updated.
- */
- virtual void partialUpdateView(int /*id*/) {}
-
+
///
- std::string name() const { return name_; }
-
- void apply();
- void redrawView() {}
+ bool needBufferOpen() const { return isBufferDependent(); }
-private:
/// Update the display of the dialog whilst it is still visible.
virtual void updateView();
+private:
ButtonController bc_;
/// are we updating ?
bool updating_;
bool is_closing_;
- /** The Dialog's name is the means by which a dialog identifies
- * itself to the kernel.
- */
- std::string name_;
- Controller * controller_;
- LyXView * lyxview_; // FIXME: replace by moving to constructor
};
+
} // namespace frontend
} // namespace lyx