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"
20 #include "bufferview_funcs.h" // ToggleAndShow
23 #include "BufferView.h"
25 #include "frontends/LyXView.h"
27 using Liason::setMinibuffer;
30 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
31 : ControlDialogBD(lv, d),
32 font_(0), toggleall_(false)
36 void ControlCharacter::setParams()
38 // Do this the first time only. Used as a flag for whether or not the
39 // view has been built
41 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
43 // so that the user can press Ok
44 if (getFamily() != LyXFont::IGNORE_FAMILY ||
45 getSeries() != LyXFont::IGNORE_SERIES ||
46 getShape() != LyXFont::IGNORE_SHAPE ||
47 getSize() != LyXFont::IGNORE_SIZE ||
48 getBar() != frnt::IGNORE ||
49 getColor() != LColor::ignore ||
50 font_->language() != ignore_language)
55 void ControlCharacter::apply()
57 // Nothing to apply. (Can be called from the Toolbar.)
61 // Apply from the view if it's visible. Otherwise, use the stored values
62 if (lv_.view()->available())
65 toggleAndShow(lv_.view().get(), *(font_.get()), toggleall_);
66 lv_.view_state_changed();
67 lv_.buffer()->markDirty();
68 setMinibuffer(&lv_, _("Character set"));
72 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
75 return LyXFont::IGNORE_FAMILY;
76 return font_->family();
80 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
82 font_->setFamily(val);
86 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
89 return LyXFont::IGNORE_SERIES;
90 return font_->series();
94 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
96 font_->setSeries(val);
100 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
103 return LyXFont::IGNORE_SHAPE;
104 return font_->shape();
108 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
110 font_->setShape(val);
114 LyXFont::FONT_SIZE ControlCharacter::getSize() const
117 return LyXFont::IGNORE_SIZE;
118 return font_->size();
122 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
128 frnt::FONT_STATE ControlCharacter::getBar() const
133 if (font_->emph() == LyXFont::TOGGLE)
134 return frnt::EMPH_TOGGLE;
136 if (font_->underbar() == LyXFont::TOGGLE)
137 return frnt::UNDERBAR_TOGGLE;
139 if (font_->noun() == LyXFont::TOGGLE)
140 return frnt::NOUN_TOGGLE;
142 if (font_->emph() == LyXFont::IGNORE &&
143 font_->underbar() == LyXFont::IGNORE &&
144 font_->noun() == LyXFont::IGNORE)
147 return frnt::INHERIT;
151 void ControlCharacter::setBar(frnt::FONT_STATE val)
155 font_->setEmph(LyXFont::IGNORE);
156 font_->setUnderbar(LyXFont::IGNORE);
157 font_->setNoun(LyXFont::IGNORE);
160 case frnt::EMPH_TOGGLE:
161 font_->setEmph(LyXFont::TOGGLE);
164 case frnt::UNDERBAR_TOGGLE:
165 font_->setUnderbar(LyXFont::TOGGLE);
168 case frnt::NOUN_TOGGLE:
169 font_->setNoun(LyXFont::TOGGLE);
173 font_->setEmph(LyXFont::INHERIT);
174 font_->setUnderbar(LyXFont::INHERIT);
175 font_->setNoun(LyXFont::INHERIT);
181 LColor::color ControlCharacter::getColor() const
184 return LColor::ignore;
186 return font_->color();
190 void ControlCharacter::setColor(LColor::color val)
201 case LColor::magenta:
203 case LColor::inherit:
204 font_->setColor(val);
212 string ControlCharacter::getLanguage() const
214 if (font_.get() && font_->language())
215 return font_->language()->lang();
220 void ControlCharacter::setLanguage(string const & val)
223 font_->setLanguage(ignore_language);
225 else if (val == "reset")
226 font_->setLanguage(lv_.buffer()->params.language);
229 font_->setLanguage(languages.getLanguage(val));
233 bool ControlCharacter::getToggleAll() const
239 void ControlCharacter::setToggleAll(bool t)