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>
22 #include <boost/smart_ptr.hpp>
30 #include "ButtonPolicies.h"
31 #include "ControlButtons.h"
35 /** This class is an Qt2 GUI base class.
37 class Qt2Base : public QObject, public ViewBC<qt2BC>
42 Qt2Base(ControlButtons &, const QString &);
48 virtual void build() = 0;
51 /// Create the dialog if necessary, update it and display it.
55 // dialog closed from WM
58 // Apply button clicked
64 // Cancel button clicked
67 // Restore button clicked
71 /// Pointer to the actual instantiation of xform's form
72 virtual QDialog* form() const = 0;
73 /** Filter the inputs on callback from xforms
74 Return true if inputs are valid. */
75 virtual ButtonPolicy::SMInput input(QWidget*, long);
78 /// dialog title, displayed by WM.
83 template <class Dialog>
84 class Qt2DB: public Qt2Base
88 Qt2DB(ControlButtons &, const QString&);
89 /// Pointer to the actual instantiation of the Qt dialog
90 virtual QDialog* form() const;
91 /// Real GUI implementation.
92 boost::scoped_ptr<Dialog> dialog_;
96 template <class Dialog>
97 Qt2DB<Dialog>::Qt2DB(ControlButtons & c, const QString& t)
102 template <class Dialog>
103 QDialog* Qt2DB<Dialog>::form() const
105 return dialog_.get();
109 template <class Controller, class Base>
110 class Qt2CB: public Base
114 Qt2CB(ControlButtons &, const QString&);
115 /// The parent controller
116 Controller & controller() const;
120 template <class Controller, class Base>
121 Qt2CB<Controller, Base>::Qt2CB(ControlButtons & c, const QString& t)
126 template <class Controller, class Base>
127 Controller & Qt2CB<Controller, Base>::controller() const
129 return static_cast<Controller &>(controller_);
130 //return dynamic_cast<Controller &>(controller_);