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"
16 #include "support/LAssert.h"
19 template <class Inset, class Params>
20 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
21 : ControlConnectBD(lv, d),
22 inset_(0), params_(0), dialog_built_(false)
26 template <class Inset, class Params>
27 void ControlInset<Inset, Params>::showInset(Inset * inset)
29 if (inset == 0) return; // maybe we should Assert this?
32 show(getParams(*inset));
36 template <class Inset, class Params>
37 void ControlInset<Inset, Params>::createInset(string const & arg)
42 bc().valid(); // so that the user can press Ok
48 template <class Inset, class Params>
49 void ControlInset<Inset, Params>::show(Params const & params)
52 if (params_) delete params_;
54 params_ = new Params(params);
57 if (emergency_exit_) {
67 bc().readOnly(isReadonly());
72 template <class Inset, class Params>
73 void ControlInset<Inset, Params>::update()
76 if (params_) delete params_;
79 params_ = new Params(getParams(*inset_));
81 params_ = new Params();
83 if (emergency_exit_) {
88 bc().readOnly(isReadonly());
93 template <class Inset, class Params>
94 void ControlInset<Inset, Params>::hide()
96 emergency_exit_ = false;
103 clearDaughterParams();
111 template <class Inset, class Params>
112 void ControlInset<Inset, Params>::apply()
114 if (lv_.buffer()->isReadonly())
120 if (params() != getParams(*inset_)) {
121 applyParamsToInset();
124 applyParamsNoInset();
127 if (disconnectOnApply() && !isClosing()) {
128 *params_ = getParams(string());
137 template <class Inset, class Params>
138 Params & ControlInset<Inset, Params>::params()
140 lyx::Assert(params_);
145 template <class Inset, class Params>
146 Params const & ControlInset<Inset, Params>::params() const
148 lyx::Assert(params_);
153 template <class Inset, class Params>
154 Inset * ControlInset<Inset, Params>::inset() const
161 template <class Inset, class Params>
162 void ControlInset<Inset, Params>::updateSlot(bool switched)
171 template <class Inset, class Params>
172 void ControlInset<Inset, Params>::connectInset(Inset * inset)
174 // If connected to another inset, disconnect from it.
182 ih_ = inset->hideDialog.connect(
183 boost::bind(&ControlInset::hide, this));