2 * \file ControlCharacter.C
3 * Copyright 2001 The LyX Team.
4 * See the file COPYING.
6 * \author Angus Leeming, a.leeming@.ac.uk
12 #pragma implementation
18 #include "ButtonControllerBase.h"
19 #include "ControlCharacter.h"
24 #include "bufferview_funcs.h" // ToggleAndShow
28 using Liason::setMinibuffer;
32 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
33 : ControlDialog<ControlConnectBD>(lv, d),
34 font_(0), toggleall_(false)
36 d_.showLayoutCharacter.connect(slot(this, &ControlCharacter::show));
37 d_.setUserFreeFont.connect(slot(this, &ControlCharacter::apply));
41 void ControlCharacter::setParams()
43 // Do this the first time only. Used as a flag for whether or not the
44 // view has been built
46 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
48 // so that the user can press Ok
49 if (getFamily() != LyXFont::IGNORE_FAMILY ||
50 getSeries() != LyXFont::IGNORE_SERIES ||
51 getShape() != LyXFont::IGNORE_SHAPE ||
52 getSize() != LyXFont::IGNORE_SIZE ||
53 getBar() != character::IGNORE ||
54 getColor() != LColor::ignore ||
55 font_->language() != ignore_language)
60 void ControlCharacter::apply()
62 // Nothing to apply. (Can be called from the Toolbar.)
66 // Apply from the view if it's visible. Otherwise, use the stored values
67 if (lv_.view()->available())
70 ToggleAndShow(lv_.view(), *(font_.get()), toggleall_);
71 lv_.view()->setState();
72 lv_.buffer()->markDirty();
73 setMinibuffer(&lv_, _("Character set"));
77 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
80 return font_->family();
81 return LyXFont::IGNORE_FAMILY;
84 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
86 font_->setFamily(val);
89 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
92 return font_->series();
93 return LyXFont::IGNORE_SERIES;
96 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
98 font_->setSeries(val);
101 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
104 return font_->shape();
105 return LyXFont::IGNORE_SHAPE;
108 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
110 font_->setShape(val);
113 LyXFont::FONT_SIZE ControlCharacter::getSize() const
116 return font_->size();
117 return LyXFont::IGNORE_SIZE;
120 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
125 character::FONT_STATE ControlCharacter::getBar() const
128 if (font_->emph() != LyXFont::IGNORE)
129 return character::EMPH_TOGGLE;
131 else if (font_->underbar() != LyXFont::IGNORE)
132 return character::UNDERBAR_TOGGLE;
134 else if (font_->noun() != LyXFont::IGNORE)
135 return character::NOUN_TOGGLE;
137 else if (font_->latex() != LyXFont::IGNORE)
138 return character::LATEX_TOGGLE;
140 return character::IGNORE;
143 void ControlCharacter::setBar(character::FONT_STATE val)
146 case character::IGNORE:
147 font_->setEmph(LyXFont::IGNORE);
148 font_->setUnderbar(LyXFont::IGNORE);
149 font_->setNoun(LyXFont::IGNORE);
150 font_->setLatex(LyXFont::IGNORE);
153 case character::EMPH_TOGGLE:
154 font_->setEmph(LyXFont::TOGGLE);
157 case character::UNDERBAR_TOGGLE:
158 font_->setUnderbar(LyXFont::TOGGLE);
161 case character::NOUN_TOGGLE:
162 font_->setNoun(LyXFont::TOGGLE);
165 case character::LATEX_TOGGLE:
166 font_->setLatex(LyXFont::TOGGLE);
169 case character::INHERIT:
170 font_->setEmph(LyXFont::INHERIT);
171 font_->setUnderbar(LyXFont::INHERIT);
172 font_->setNoun(LyXFont::INHERIT);
173 font_->setLatex(LyXFont::INHERIT);
178 LColor::color ControlCharacter::getColor() const
180 LColor::color col = LColor::ignore;
183 switch (font_->color()) {
192 case LColor::magenta:
194 case LColor::inherit:
197 col = font_->color();
205 void ControlCharacter::setColor(LColor::color val)
216 case LColor::magenta:
218 case LColor::inherit:
219 font_->setColor(val);
227 string ControlCharacter::getLanguage() const
229 if (font_.get() && font_->language())
230 return font_->language()->lang();
231 return _("No change");
235 void ControlCharacter::setLanguage(string const & val)
237 if (val == _("No change"))
238 font_->setLanguage(ignore_language);
240 else if ( val == _("Reset"))
241 font_->setLanguage(lv_.buffer()->params.language);
244 font_->setLanguage(languages.getLanguage(val));
248 bool ControlCharacter::getToggleAll() const
253 void ControlCharacter::setToggleAll(bool t)