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"
14 #include "support/LAssert.h"
18 template <class Inset, class Params>
19 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
20 : ControlConnectBD(lv, d),
21 inset_(0), ih_(0), params_(0), dialog_built_(false)
25 template <class Inset, class Params>
26 void ControlInset<Inset, Params>::showInset(Inset * inset)
28 if (inset == 0) return; // maybe we should Assert this?
31 show(getParams(*inset));
35 template <class Inset, class Params>
36 void ControlInset<Inset, Params>::createInset(string const & arg)
41 bc().valid(); // so that the user can press Ok
47 template <class Inset, class Params>
48 void ControlInset<Inset, Params>::show(Params const & params)
51 if (params_) delete params_;
53 params_ = new Params(params);
56 if (emergency_exit_) {
66 bc().readOnly(isReadonly());
71 template <class Inset, class Params>
72 void ControlInset<Inset, Params>::update()
75 if (params_) delete params_;
78 params_ = new Params(getParams(*inset_));
80 params_ = new Params();
82 if (emergency_exit_) {
87 bc().readOnly(isReadonly());
92 template <class Inset, class Params>
93 void ControlInset<Inset, Params>::hide()
95 emergency_exit_ = false;
102 clearDaughterParams();
110 template <class Inset, class Params>
111 void ControlInset<Inset, Params>::apply()
113 if (lv_.buffer()->isReadonly())
119 if (params() != getParams(*inset_)) {
120 applyParamsToInset();
123 applyParamsNoInset();
126 if (disconnectOnApply() && !isClosing()) {
127 *params_ = getParams(string());
136 template <class Inset, class Params>
137 Params & ControlInset<Inset, Params>::params()
139 lyx::Assert(params_);
144 template <class Inset, class Params>
145 Params const & ControlInset<Inset, Params>::params() const
147 lyx::Assert(params_);
152 template <class Inset, class Params>
153 Inset * ControlInset<Inset, Params>::inset() const
160 template <class Inset, class Params>
161 void ControlInset<Inset, Params>::updateSlot(bool switched)
170 template <class Inset, class Params>
171 void ControlInset<Inset, Params>::connectInset(Inset * inset)
173 // If connected to another inset, disconnect from it.
181 ih_ = inset->hideDialog.connect(
182 SigC::slot(this, &ControlInset::hide));