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
17 #include "ControlCharacter.h"
18 #include "bufferview_funcs.h"
26 using Liason::setMinibuffer;
30 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
31 : ControlConnectBD(lv, d), font_(0), toggleall_(false)
33 d.showLayoutCharacter.connect(slot(this, &ControlCharacter::show));
34 d.setUserFreeFont.connect(slot(this, &ControlCharacter::apply));
38 void ControlCharacter::show()
40 if (!lv_.view()->available()) return;
42 if (font_) delete font_;
43 font_ = new LyXFont(LyXFont::ALL_IGNORE);
45 bc().readOnly(isReadonly());
50 void ControlCharacter::update()
52 if (!lv_.view()->available()) return;
54 if (font_) delete font_;
55 font_ = new LyXFont(LyXFont::ALL_IGNORE);
57 bc().readOnly(isReadonly());
62 void ControlCharacter::hide()
74 void ControlCharacter::apply()
76 if (!lv_.view()->available())
81 ToggleAndShow(lv_.view(), *font_, toggleall_);
82 lv_.view()->setState();
83 lv_.buffer()->markDirty();
84 setMinibuffer(&lv_, _("Character set"));
88 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
90 font_->setFamily(val);
93 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
95 font_->setSeries(val);
98 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
100 font_->setShape(val);
103 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
108 void ControlCharacter::setBar(ControlCharacter::FONT_STATE val)
112 font_->setEmph(LyXFont::IGNORE);
113 font_->setUnderbar(LyXFont::IGNORE);
114 font_->setNoun(LyXFont::IGNORE);
115 font_->setLatex(LyXFont::IGNORE);
119 font_->setEmph(LyXFont::TOGGLE);
122 case UNDERBAR_TOGGLE:
123 font_->setUnderbar(LyXFont::TOGGLE);
127 font_->setNoun(LyXFont::TOGGLE);
131 font_->setLatex(LyXFont::TOGGLE);
135 font_->setEmph(LyXFont::INHERIT);
136 font_->setUnderbar(LyXFont::INHERIT);
137 font_->setNoun(LyXFont::INHERIT);
138 font_->setLatex(LyXFont::INHERIT);
143 void ControlCharacter::setColor(LColor::color val)
154 case LColor::magenta:
156 case LColor::inherit:
157 font_->setColor(val);
166 void ControlCharacter::setLanguage(string const & val)
168 if (val == _("No change"))
169 font_->setLanguage(ignore_language);
171 else if ( val == _("Reset"))
172 font_->setLanguage(lv_.buffer()->params.language);
175 font_->setLanguage(languages.getLanguage(val));
178 void ControlCharacter::setToggleAll(bool t)
184 vector<ControlCharacter::FamilyPair> const getFamilyData()
186 vector<ControlCharacter::FamilyPair> family(5);
188 ControlCharacter::FamilyPair pr;
189 pr.first = _("No change"); pr.second = LyXFont::IGNORE_FAMILY;
191 pr.first = _("Roman"); pr.second = LyXFont::ROMAN_FAMILY;
193 pr.first = _("Sans Serif"); pr.second = LyXFont::SANS_FAMILY;
195 pr.first = _("Typewriter"); pr.second = LyXFont::TYPEWRITER_FAMILY;
197 pr.first = _("Reset"); pr.second = LyXFont::INHERIT_FAMILY;
204 vector<ControlCharacter::SeriesPair> const getSeriesData()
206 vector<ControlCharacter::SeriesPair> series(4);
208 ControlCharacter::SeriesPair pr;
209 pr.first = _("No change"); pr.second = LyXFont::IGNORE_SERIES;
211 pr.first = _("Medium"); pr.second = LyXFont::MEDIUM_SERIES;
213 pr.first = _("Bold"); pr.second = LyXFont::BOLD_SERIES;
215 pr.first = _("Reset"); pr.second = LyXFont::INHERIT_SERIES;
222 vector<ControlCharacter::ShapePair> const getShapeData()
224 vector<ControlCharacter::ShapePair> shape(6);
226 ControlCharacter::ShapePair pr;
227 pr.first = _("No change"); pr.second = LyXFont::IGNORE_SHAPE;
229 pr.first = _("Upright"); pr.second = LyXFont::UP_SHAPE;
231 pr.first = _("Italic"); pr.second = LyXFont::ITALIC_SHAPE;
233 pr.first = _("Slanted"); pr.second = LyXFont::SLANTED_SHAPE;
235 pr.first = _("Small Caps"); pr.second = LyXFont::SMALLCAPS_SHAPE;
237 pr.first = _("Reset"); pr.second = LyXFont::INHERIT_SHAPE;
244 vector<ControlCharacter::SizePair> const getSizeData()
246 vector<ControlCharacter::SizePair> size(14);
248 ControlCharacter::SizePair pr;
249 pr.first = _("No change"); pr.second = LyXFont::IGNORE_SIZE;
251 pr.first = _("Tiny"); pr.second = LyXFont::SIZE_TINY;
253 pr.first = _("Smallest"); pr.second = LyXFont::SIZE_SCRIPT;
255 pr.first = _("Smaller"); pr.second = LyXFont::SIZE_FOOTNOTE;
257 pr.first = _("Small"); pr.second = LyXFont::SIZE_SMALL;
259 pr.first = _("Normal"); pr.second = LyXFont::SIZE_NORMAL;
261 pr.first = _("Large"); pr.second = LyXFont::SIZE_LARGE;
263 pr.first = _("Larger"); pr.second = LyXFont::SIZE_LARGER;
265 pr.first = _("Largest"); pr.second = LyXFont::SIZE_LARGEST;
267 pr.first = _("Huge"); pr.second = LyXFont::SIZE_HUGE;
269 pr.first = _("Huger"); pr.second = LyXFont::SIZE_HUGER;
271 pr.first = _("Increase"); pr.second = LyXFont::INCREASE_SIZE;
273 pr.first = _("Decrease"); pr.second = LyXFont::DECREASE_SIZE;
275 pr.first = _("Reset"); pr.second = LyXFont::INHERIT_SIZE;
282 vector<ControlCharacter::BarPair> const getBarData()
284 vector<ControlCharacter::BarPair> bar(6);
286 ControlCharacter::BarPair pr;
287 pr.first = _("No change"); pr.second = ControlCharacter::IGNORE;
289 pr.first = _("Emph"); pr.second = ControlCharacter::EMPH_TOGGLE;
291 pr.first = _("Underbar"); pr.second = ControlCharacter::UNDERBAR_TOGGLE;
293 pr.first = _("Noun"); pr.second = ControlCharacter::NOUN_TOGGLE;
295 pr.first = _("LaTeX mode"); pr.second = ControlCharacter::LATEX_TOGGLE;
297 pr.first = _("Reset"); pr.second = ControlCharacter::INHERIT;
304 vector<ControlCharacter::ColorPair> const getColorData()
306 vector<ControlCharacter::ColorPair> color(11);
308 ControlCharacter::ColorPair pr;
309 pr.first = _("No change"); pr.second = LColor::ignore;
311 pr.first = _("No color"); pr.second = LColor::none;
313 pr.first = _("Black"); pr.second = LColor::black;
315 pr.first = _("White"); pr.second = LColor::white;
317 pr.first = _("Red"); pr.second = LColor::red;
319 pr.first = _("Green"); pr.second = LColor::green;
321 pr.first = _("Blue"); pr.second = LColor::blue;
323 pr.first = _("Cyan"); pr.second = LColor::cyan;
325 pr.first = _("Magenta"); pr.second = LColor::magenta;
327 pr.first = _("Yellow"); pr.second = LColor::yellow;
329 pr.first = _("Reset"); pr.second = LColor::inherit;
336 vector<string> const getLanguageData()
338 vector<string> langs(languages.size() + 2);
340 langs[0] = _("No change");
341 langs[1] = _("Reset");
343 vector<string>::size_type i = 1;
344 for (Languages::const_iterator cit = languages.begin();
345 cit != languages.end(); ++cit) {
346 langs[++i] = cit->second.lang();