2 * \file ControlCharacter.C
3 * Copyright 2001 The LyX Team.
4 * See the file COPYING.
6 * \author Angus Leeming, a.leeming@ic.ac.uk
12 #pragma implementation
15 #include "ControlCharacter.h"
17 #include "ButtonControllerBase.h"
21 #include "bufferview_funcs.h" // ToggleAndShow
24 #include "BufferView.h"
26 #include "frontends/LyXView.h"
28 #include <boost/bind.hpp>
32 using Liason::setMinibuffer;
36 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
37 : ControlDialogBD(lv, d),
38 font_(0), toggleall_(false)
40 d_.showCharacter = boost::bind(&ControlCharacter::show, this);
41 d_.setUserFreeFont = boost::bind(&ControlCharacter::apply, this);
45 void ControlCharacter::setParams()
47 // Do this the first time only. Used as a flag for whether or not the
48 // view has been built
50 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
52 // so that the user can press Ok
53 if (getFamily() != LyXFont::IGNORE_FAMILY ||
54 getSeries() != LyXFont::IGNORE_SERIES ||
55 getShape() != LyXFont::IGNORE_SHAPE ||
56 getSize() != LyXFont::IGNORE_SIZE ||
57 getBar() != frnt::IGNORE ||
58 getColor() != LColor::ignore ||
59 font_->language() != ignore_language)
64 void ControlCharacter::apply()
66 // Nothing to apply. (Can be called from the Toolbar.)
70 // Apply from the view if it's visible. Otherwise, use the stored values
71 if (lv_.view()->available())
74 toggleAndShow(lv_.view(), *(font_.get()), toggleall_);
75 lv_.view()->setState();
76 lv_.buffer()->markDirty();
77 setMinibuffer(&lv_, _("Character set"));
81 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
84 return LyXFont::IGNORE_FAMILY;
85 return font_->family();
89 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
91 font_->setFamily(val);
95 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
98 return LyXFont::IGNORE_SERIES;
99 return font_->series();
103 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
105 font_->setSeries(val);
109 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
112 return LyXFont::IGNORE_SHAPE;
113 return font_->shape();
117 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
119 font_->setShape(val);
123 LyXFont::FONT_SIZE ControlCharacter::getSize() const
126 return LyXFont::IGNORE_SIZE;
127 return font_->size();
131 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
137 frnt::FONT_STATE ControlCharacter::getBar() const
142 if (font_->emph() == LyXFont::TOGGLE)
143 return frnt::EMPH_TOGGLE;
145 if (font_->underbar() == LyXFont::TOGGLE)
146 return frnt::UNDERBAR_TOGGLE;
148 if (font_->noun() == LyXFont::TOGGLE)
149 return frnt::NOUN_TOGGLE;
151 if (font_->emph() == LyXFont::IGNORE &&
152 font_->underbar() == LyXFont::IGNORE &&
153 font_->noun() == LyXFont::IGNORE)
156 return frnt::INHERIT;
160 void ControlCharacter::setBar(frnt::FONT_STATE val)
164 font_->setEmph(LyXFont::IGNORE);
165 font_->setUnderbar(LyXFont::IGNORE);
166 font_->setNoun(LyXFont::IGNORE);
169 case frnt::EMPH_TOGGLE:
170 font_->setEmph(LyXFont::TOGGLE);
173 case frnt::UNDERBAR_TOGGLE:
174 font_->setUnderbar(LyXFont::TOGGLE);
177 case frnt::NOUN_TOGGLE:
178 font_->setNoun(LyXFont::TOGGLE);
182 font_->setEmph(LyXFont::INHERIT);
183 font_->setUnderbar(LyXFont::INHERIT);
184 font_->setNoun(LyXFont::INHERIT);
190 LColor::color ControlCharacter::getColor() const
193 return LColor::ignore;
195 return font_->color();
199 void ControlCharacter::setColor(LColor::color val)
210 case LColor::magenta:
212 case LColor::inherit:
213 font_->setColor(val);
221 string ControlCharacter::getLanguage() const
223 if (font_.get() && font_->language())
224 return font_->language()->lang();
229 void ControlCharacter::setLanguage(string const & val)
232 font_->setLanguage(ignore_language);
234 else if (val == "reset")
235 font_->setLanguage(lv_.buffer()->params.language);
238 font_->setLanguage(languages.getLanguage(val));
242 bool ControlCharacter::getToggleAll() const
248 void ControlCharacter::setToggleAll(bool t)