2 * \file ControlCharacter.C
3 * See the file COPYING.
5 * \author Angus Leeming
7 * Full author contact details are available in file CREDITS
13 #pragma implementation
16 #include "ControlCharacter.h"
19 #include "ButtonControllerBase.h"
22 #include "bufferview_funcs.h" // ToggleAndShow
26 #include "frontends/Liason.h"
27 #include "frontends/LyXView.h"
29 using Liason::setMinibuffer;
32 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
33 : ControlDialogBD(lv, d),
34 font_(0), toggleall_(false)
38 void ControlCharacter::setParams()
40 // Do this the first time only. Used as a flag for whether or not the
41 // view has been built
43 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
45 // so that the user can press Ok
46 if (getFamily() != LyXFont::IGNORE_FAMILY ||
47 getSeries() != LyXFont::IGNORE_SERIES ||
48 getShape() != LyXFont::IGNORE_SHAPE ||
49 getSize() != LyXFont::IGNORE_SIZE ||
50 getBar() != frnt::IGNORE ||
51 getColor() != LColor::ignore ||
52 font_->language() != ignore_language)
57 void ControlCharacter::apply()
59 // Nothing to apply. (Can be called from the Toolbar.)
63 // Apply from the view if it's visible. Otherwise, use the stored values
64 if (bufferIsAvailable())
67 toggleAndShow(bufferview(), *(font_.get()), toggleall_);
68 lv_.view_state_changed();
69 buffer()->markDirty();
70 setMinibuffer(&lv_, _("Character set"));
74 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
77 return LyXFont::IGNORE_FAMILY;
78 return font_->family();
82 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
84 font_->setFamily(val);
88 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
91 return LyXFont::IGNORE_SERIES;
92 return font_->series();
96 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
98 font_->setSeries(val);
102 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
105 return LyXFont::IGNORE_SHAPE;
106 return font_->shape();
110 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
112 font_->setShape(val);
116 LyXFont::FONT_SIZE ControlCharacter::getSize() const
119 return LyXFont::IGNORE_SIZE;
120 return font_->size();
124 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
130 frnt::FONT_STATE ControlCharacter::getBar() const
135 if (font_->emph() == LyXFont::TOGGLE)
136 return frnt::EMPH_TOGGLE;
138 if (font_->underbar() == LyXFont::TOGGLE)
139 return frnt::UNDERBAR_TOGGLE;
141 if (font_->noun() == LyXFont::TOGGLE)
142 return frnt::NOUN_TOGGLE;
144 if (font_->emph() == LyXFont::IGNORE &&
145 font_->underbar() == LyXFont::IGNORE &&
146 font_->noun() == LyXFont::IGNORE)
149 return frnt::INHERIT;
153 void ControlCharacter::setBar(frnt::FONT_STATE val)
157 font_->setEmph(LyXFont::IGNORE);
158 font_->setUnderbar(LyXFont::IGNORE);
159 font_->setNoun(LyXFont::IGNORE);
162 case frnt::EMPH_TOGGLE:
163 font_->setEmph(LyXFont::TOGGLE);
166 case frnt::UNDERBAR_TOGGLE:
167 font_->setUnderbar(LyXFont::TOGGLE);
170 case frnt::NOUN_TOGGLE:
171 font_->setNoun(LyXFont::TOGGLE);
175 font_->setEmph(LyXFont::INHERIT);
176 font_->setUnderbar(LyXFont::INHERIT);
177 font_->setNoun(LyXFont::INHERIT);
183 LColor::color ControlCharacter::getColor() const
186 return LColor::ignore;
188 return font_->color();
192 void ControlCharacter::setColor(LColor::color val)
203 case LColor::magenta:
205 case LColor::inherit:
206 font_->setColor(val);
214 string ControlCharacter::getLanguage() const
216 if (font_.get() && font_->language())
217 return font_->language()->lang();
222 void ControlCharacter::setLanguage(string const & val)
225 font_->setLanguage(ignore_language);
227 else if (val == "reset")
228 font_->setLanguage(buffer()->params.language);
231 font_->setLanguage(languages.getLanguage(val));
235 bool ControlCharacter::getToggleAll() const
241 void ControlCharacter::setToggleAll(bool t)