3 * \file ControlInset.tmpl
4 * Copyright 2002 the LyX Team
5 * Read the file COPYING
7 * \author Angus Leeming <a.leeming@ic.ac.uk>
9 * ControlInset is a base class and so these templatised methods will be
10 * instantiated if this file is #included in the derived classes' .C file.
13 #include "ControlInset.h"
17 #include "frontends/LyXView.h"
18 #include "support/LAssert.h"
19 #include <boost/bind.hpp>
21 template <class Inset, class Params>
22 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
23 : ControlConnectBD(lv, d),
24 inset_(0), params_(0), dialog_built_(false)
28 template <class Inset, class Params>
29 void ControlInset<Inset, Params>::showInset(Inset * inset)
31 if (inset == 0) return; // maybe we should Assert this?
34 show(getParams(*inset));
38 template <class Inset, class Params>
39 void ControlInset<Inset, Params>::createInset(string const & arg)
44 bc().valid(); // so that the user can press Ok
50 template <class Inset, class Params>
51 void ControlInset<Inset, Params>::show(Params const & params)
54 if (params_) delete params_;
56 params_ = new Params(params);
59 if (emergency_exit_) {
69 bc().readOnly(isReadonly());
74 template <class Inset, class Params>
75 void ControlInset<Inset, Params>::update()
78 if (params_) delete params_;
81 params_ = new Params(getParams(*inset_));
83 params_ = new Params();
85 if (emergency_exit_) {
90 bc().readOnly(isReadonly());
95 template <class Inset, class Params>
96 void ControlInset<Inset, Params>::hide()
98 emergency_exit_ = false;
105 clearDaughterParams();
113 template <class Inset, class Params>
114 void ControlInset<Inset, Params>::apply()
116 if (lv_.buffer()->isReadonly())
122 if (params() != getParams(*inset_)) {
123 applyParamsToInset();
126 applyParamsNoInset();
129 if (disconnectOnApply() && !isClosing()) {
130 *params_ = getParams(string());
139 template <class Inset, class Params>
140 Params & ControlInset<Inset, Params>::params()
142 lyx::Assert(params_);
147 template <class Inset, class Params>
148 Params const & ControlInset<Inset, Params>::params() const
150 lyx::Assert(params_);
155 template <class Inset, class Params>
156 Inset * ControlInset<Inset, Params>::inset() const
163 template <class Inset, class Params>
164 void ControlInset<Inset, Params>::updateSlot(bool switched)
173 template <class Inset, class Params>
174 void ControlInset<Inset, Params>::connectInset(Inset * inset)
176 // If connected to another inset, disconnect from it.
184 ih_ = inset->hideDialog.connect(
185 boost::bind(&ControlInset::hide, this));