// -*- C++ -*-
-/* This file is part of
- * ======================================================
+/**
+ * \file ControlButtons.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * LyX, The Document Processor
+ * \author Angus Leeming
*
- * Copyright 2001 The LyX Team.
- *
- * ======================================================
- *
- * \file ControlButtonss.h
- * \author Angus Leeming <a.leeming@ic.ac.uk>
+ * Full author contact details are available in file CREDITS.
*
* ControlButtons serves only to control the activation of the Ok, Apply, Cancel
* and Restore buttons on the View dialog.
#ifndef CONTROLBUTTONS_H
#define CONTROLBUTTONS_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-#include "DialogBase.h" // This can go eventually
+#include <boost/utility.hpp>
+#include <boost/scoped_ptr.hpp>
class ViewBase;
-class ButtonControllerBase;
+class ButtonController;
/** Abstract base class for Controllers with a ButtonController.
*/
-class ControlButtons : public DialogBase
-{
+class ControlButtons : boost::noncopyable {
public:
///
ControlButtons();
///
- virtual ~ControlButtons() {}
+ virtual ~ControlButtons();
- /// These functions are called when the controlling buttons are pressed.
+ /** These functions are called by the view when the appropriate buttons
+ * are pressed.
+ */
///
void ApplyButton();
///
///
void RestoreButton();
- /** Allow the view to access the ButtonController. This method must be
- instantiated in a daughter class that creates the actual instance
- of the ButtonController. */
- virtual ButtonControllerBase & bc() = 0;
+ /// Returns the user-specified iconification policy.
+ bool IconifyWithMain() const;
-protected:
+ ///
+ ButtonController & bc();
+
+ ///
+ void setView(ViewBase &);
/** 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_; }
+protected:
+ ///
+ ViewBase & view();
+
/// Get changed parameters and Dispatch them to the kernel.
virtual void apply() = 0;
/// Disconnect signals and hide View.
/// Update dialog before showing it.
virtual void update() = 0;
- /** Allow the Controller to access the View. This method must be
- instantiated in a daughter class that creates the actual instance
- of the View. */
- virtual ViewBase & view() = 0;
-
+ /** This flag can be set by one of the miriad the controller methods
+ to ensure that the dialog is shut down. */
+ bool emergency_exit_;
private:
///
bool is_closing_;
-
+ ///
+ boost::scoped_ptr<ButtonController> bc_ptr_;
+ /// We do not own this pointer.
+ ViewBase * view_ptr_;
};
#endif // CONTROLBUTTONS_H