3 * \file ControlInset.tmpl
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Angus Leeming
9 * Full author contact details are available in file CREDITS
11 * ControlInset is a base class and so these templatised methods will be
12 * instantiated if this file is #included in the derived classes' .C file.
15 #include "ControlInset.h"
17 #include "ButtonControllerBase.h"
19 #include "support/LAssert.h"
21 #include <boost/bind.hpp>
23 template <class Inset, class Params>
24 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
25 : ControlConnectBD(lv, d),
26 inset_(0), params_(0), dialog_built_(false)
30 template <class Inset, class Params>
31 void ControlInset<Inset, Params>::showInset(Inset * inset)
33 if (inset == 0) return; // maybe we should Assert this?
36 show(getParams(*inset));
40 template <class Inset, class Params>
41 void ControlInset<Inset, Params>::createInset(string const & arg)
46 bc().valid(); // so that the user can press Ok
52 template <class Inset, class Params>
53 void ControlInset<Inset, Params>::show(Params const & params)
56 if (params_) delete params_;
58 params_ = new Params(params);
61 if (emergency_exit_) {
71 bc().readOnly(bufferIsReadonly());
76 template <class Inset, class Params>
77 void ControlInset<Inset, Params>::update()
80 if (params_) delete params_;
83 params_ = new Params(getParams(*inset_));
85 params_ = new Params();
87 if (emergency_exit_) {
92 bc().readOnly(bufferIsReadonly());
97 template <class Inset, class Params>
98 void ControlInset<Inset, Params>::hide()
100 emergency_exit_ = false;
107 clearDaughterParams();
115 template <class Inset, class Params>
116 void ControlInset<Inset, Params>::apply()
118 if (bufferIsReadonly())
124 if (params() != getParams(*inset_)) {
125 applyParamsToInset();
128 applyParamsNoInset();
131 if (disconnectOnApply() && !isClosing()) {
132 *params_ = getParams(string());
141 template <class Inset, class Params>
142 Params & ControlInset<Inset, Params>::params()
144 lyx::Assert(params_);
149 template <class Inset, class Params>
150 Params const & ControlInset<Inset, Params>::params() const
152 lyx::Assert(params_);
157 template <class Inset, class Params>
158 Inset * ControlInset<Inset, Params>::inset() const
165 template <class Inset, class Params>
166 void ControlInset<Inset, Params>::updateSlot(bool switched)
175 template <class Inset, class Params>
176 void ControlInset<Inset, Params>::connectInset(Inset * inset)
178 // If connected to another inset, disconnect from it.
186 ih_ = inset->hideDialog.connect(
187 boost::bind(&ControlInset::hide, this));