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 "ButtonControllerBase.h"
18 #include "frontends/LyXView.h"
19 #include "insets/insetfloat.h"
20 #include "insets/insetgraphics.h"
21 #include "support/LAssert.h"
23 #include <boost/bind.hpp>
25 template <class Inset, class Params>
26 ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)
27 : ControlConnectBD(lv, d),
28 inset_(0), params_(0), dialog_built_(false)
32 template <class Inset, class Params>
33 void ControlInset<Inset, Params>::showInset(Inset * inset)
35 if (inset == 0) return; // maybe we should Assert this?
38 show(getParams(*inset));
42 template <class Inset, class Params>
43 void ControlInset<Inset, Params>::createInset(string const & arg)
48 bc().valid(); // so that the user can press Ok
54 template <class Inset, class Params>
55 void ControlInset<Inset, Params>::show(Params const & params)
58 if (params_) delete params_;
60 params_ = new Params(params);
63 if (emergency_exit_) {
73 bc().readOnly(isReadonly());
78 template <class Inset, class Params>
79 void ControlInset<Inset, Params>::update()
82 if (params_) delete params_;
85 params_ = new Params(getParams(*inset_));
87 params_ = new Params();
89 if (emergency_exit_) {
94 bc().readOnly(isReadonly());
99 template <class Inset, class Params>
100 void ControlInset<Inset, Params>::hide()
102 emergency_exit_ = false;
109 clearDaughterParams();
117 template <class Inset, class Params>
118 void ControlInset<Inset, Params>::apply()
120 if (lv_.buffer()->isReadonly())
126 if (params() != getParams(*inset_)) {
127 applyParamsToInset();
130 applyParamsNoInset();
133 if (disconnectOnApply() && !isClosing()) {
134 *params_ = getParams(string());
143 template <class Inset, class Params>
144 Params & ControlInset<Inset, Params>::params()
146 lyx::Assert(params_);
151 template <class Inset, class Params>
152 Params const & ControlInset<Inset, Params>::params() const
154 lyx::Assert(params_);
159 template <class Inset, class Params>
160 Inset * ControlInset<Inset, Params>::inset() const
167 template <class Inset, class Params>
168 void ControlInset<Inset, Params>::updateSlot(bool switched)
177 template <class Inset, class Params>
178 void ControlInset<Inset, Params>::connectInset(Inset * inset)
180 // If connected to another inset, disconnect from it.
188 ih_ = inset->hideDialog.connect(
189 boost::bind(&ControlInset::hide, this));