2 /* This file is part of
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 2000 The LyX Team.
9 * ======================================================
11 * \author Angus Leeming <a.leeming@ic.ac.uk>
24 #include <boost/smart_ptr.hpp>
32 #include "ButtonPolicies.h"
33 #include "ControlButtons.h"
37 /** This class is an Qt2 GUI base class.
39 class Qt2Base : public QObject, public ViewBC<qt2BC>
44 Qt2Base(ControlButtons &, const QString &);
50 virtual void build() = 0;
53 /// Create the dialog if necessary, update it and display it.
57 // dialog closed from WM
60 // Apply button clicked
66 // Cancel button clicked
69 // Restore button clicked
73 /// Pointer to the actual instantiation of xform's form
74 virtual QDialog* form() const = 0;
75 /** Filter the inputs on callback from xforms
76 Return true if inputs are valid. */
77 virtual ButtonPolicy::SMInput input(QWidget*, long);
80 /// dialog title, displayed by WM.
85 template <class Dialog>
86 class Qt2DB: public Qt2Base
90 Qt2DB(ControlButtons &, const QString&);
91 /// Pointer to the actual instantiation of the Qt dialog
92 virtual QDialog* form() const;
93 /// Real GUI implementation.
94 boost::scoped_ptr<Dialog> dialog_;
98 template <class Dialog>
99 Qt2DB<Dialog>::Qt2DB(ControlButtons & c, const QString& t)
104 template <class Dialog>
105 QDialog* Qt2DB<Dialog>::form() const
107 return dialog_.get();
111 template <class Controller, class Base>
112 class Qt2CB: public Base
116 Qt2CB(ControlButtons &, const QString&);
117 /// The parent controller
118 Controller & controller() const;
122 template <class Controller, class Base>
123 Qt2CB<Controller, Base>::Qt2CB(ControlButtons & c, const QString& t)
128 template <class Controller, class Base>
129 Controller & Qt2CB<Controller, Base>::controller() const
131 return static_cast<Controller &>(controller_);
132 //return dynamic_cast<Controller &>(controller_);