3 * \file ControlInset.tmpl
4 * Read the file COPYING
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS
10 * ControlInset is a base class and so these templatised methods will be
11 * instantiated if this file is #included in the derived classes' .C file.
14 #include "ControlInset.h"
16 #include "ButtonControllerBase.h"
18 #include "support/LAssert.h"
20 #include <boost/bind.hpp>
22 template <class Inset, class Params>
23 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
24 : ControlConnectBD(lv, d),
25 inset_(0), params_(0), dialog_built_(false)
29 template <class Inset, class Params>
30 void ControlInset<Inset, Params>::showInset(Inset * inset)
32 if (inset == 0) return; // maybe we should Assert this?
35 show(getParams(*inset));
39 template <class Inset, class Params>
40 void ControlInset<Inset, Params>::createInset(string const & arg)
45 bc().valid(); // so that the user can press Ok
51 template <class Inset, class Params>
52 void ControlInset<Inset, Params>::show(Params const & params)
55 if (params_) delete params_;
57 params_ = new Params(params);
60 if (emergency_exit_) {
70 bc().readOnly(bufferIsReadonly());
75 template <class Inset, class Params>
76 void ControlInset<Inset, Params>::update()
79 if (params_) delete params_;
82 params_ = new Params(getParams(*inset_));
84 params_ = new Params();
86 if (emergency_exit_) {
91 bc().readOnly(bufferIsReadonly());
96 template <class Inset, class Params>
97 void ControlInset<Inset, Params>::hide()
99 emergency_exit_ = false;
106 clearDaughterParams();
114 template <class Inset, class Params>
115 void ControlInset<Inset, Params>::apply()
117 if (bufferIsReadonly())
123 if (params() != getParams(*inset_)) {
124 applyParamsToInset();
127 applyParamsNoInset();
130 if (disconnectOnApply() && !isClosing()) {
131 *params_ = getParams(string());
140 template <class Inset, class Params>
141 Params & ControlInset<Inset, Params>::params()
143 lyx::Assert(params_);
148 template <class Inset, class Params>
149 Params const & ControlInset<Inset, Params>::params() const
151 lyx::Assert(params_);
156 template <class Inset, class Params>
157 Inset * ControlInset<Inset, Params>::inset() const
164 template <class Inset, class Params>
165 void ControlInset<Inset, Params>::updateSlot(bool switched)
174 template <class Inset, class Params>
175 void ControlInset<Inset, Params>::connectInset(Inset * inset)
177 // If connected to another inset, disconnect from it.
185 ih_ = inset->hideDialog.connect(
186 boost::bind(&ControlInset::hide, this));