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"
18 #include "ButtonControllerBase.h"
21 #include "bufferview_funcs.h" // ToggleAndShow
25 #include "frontends/Liason.h"
26 #include "frontends/LyXView.h"
28 using Liason::setMinibuffer;
31 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
32 : ControlDialogBD(lv, d),
33 font_(0), toggleall_(false)
37 void ControlCharacter::setParams()
39 // Do this the first time only. Used as a flag for whether or not the
40 // view has been built
42 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
44 // so that the user can press Ok
45 if (getFamily() != LyXFont::IGNORE_FAMILY ||
46 getSeries() != LyXFont::IGNORE_SERIES ||
47 getShape() != LyXFont::IGNORE_SHAPE ||
48 getSize() != LyXFont::IGNORE_SIZE ||
49 getBar() != frnt::IGNORE ||
50 getColor() != LColor::ignore ||
51 font_->language() != ignore_language)
56 void ControlCharacter::apply()
58 // Nothing to apply. (Can be called from the Toolbar.)
62 // Apply from the view if it's visible. Otherwise, use the stored values
63 if (bufferIsAvailable())
66 toggleAndShow(bufferview(), *(font_.get()), toggleall_);
67 lv_.view_state_changed();
68 buffer()->markDirty();
69 setMinibuffer(&lv_, _("Character set"));
73 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
76 return LyXFont::IGNORE_FAMILY;
77 return font_->family();
81 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
83 font_->setFamily(val);
87 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
90 return LyXFont::IGNORE_SERIES;
91 return font_->series();
95 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
97 font_->setSeries(val);
101 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
104 return LyXFont::IGNORE_SHAPE;
105 return font_->shape();
109 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
111 font_->setShape(val);
115 LyXFont::FONT_SIZE ControlCharacter::getSize() const
118 return LyXFont::IGNORE_SIZE;
119 return font_->size();
123 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
129 frnt::FONT_STATE ControlCharacter::getBar() const
134 if (font_->emph() == LyXFont::TOGGLE)
135 return frnt::EMPH_TOGGLE;
137 if (font_->underbar() == LyXFont::TOGGLE)
138 return frnt::UNDERBAR_TOGGLE;
140 if (font_->noun() == LyXFont::TOGGLE)
141 return frnt::NOUN_TOGGLE;
143 if (font_->emph() == LyXFont::IGNORE &&
144 font_->underbar() == LyXFont::IGNORE &&
145 font_->noun() == LyXFont::IGNORE)
148 return frnt::INHERIT;
152 void ControlCharacter::setBar(frnt::FONT_STATE val)
156 font_->setEmph(LyXFont::IGNORE);
157 font_->setUnderbar(LyXFont::IGNORE);
158 font_->setNoun(LyXFont::IGNORE);
161 case frnt::EMPH_TOGGLE:
162 font_->setEmph(LyXFont::TOGGLE);
165 case frnt::UNDERBAR_TOGGLE:
166 font_->setUnderbar(LyXFont::TOGGLE);
169 case frnt::NOUN_TOGGLE:
170 font_->setNoun(LyXFont::TOGGLE);
174 font_->setEmph(LyXFont::INHERIT);
175 font_->setUnderbar(LyXFont::INHERIT);
176 font_->setNoun(LyXFont::INHERIT);
182 LColor::color ControlCharacter::getColor() const
185 return LColor::ignore;
187 return font_->color();
191 void ControlCharacter::setColor(LColor::color val)
202 case LColor::magenta:
204 case LColor::inherit:
205 font_->setColor(val);
213 string ControlCharacter::getLanguage() const
215 if (font_.get() && font_->language())
216 return font_->language()->lang();
221 void ControlCharacter::setLanguage(string const & val)
224 font_->setLanguage(ignore_language);
226 else if (val == "reset")
227 font_->setLanguage(buffer()->params.language);
230 font_->setLanguage(languages.getLanguage(val));
234 bool ControlCharacter::getToggleAll() const
240 void ControlCharacter::setToggleAll(bool t)