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
24 #include "frontends/LyXView.h"
26 using Liason::setMinibuffer;
29 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
30 : ControlDialogBD(lv, d),
31 font_(0), toggleall_(false)
35 void ControlCharacter::setParams()
37 // Do this the first time only. Used as a flag for whether or not the
38 // view has been built
40 font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
42 // so that the user can press Ok
43 if (getFamily() != LyXFont::IGNORE_FAMILY ||
44 getSeries() != LyXFont::IGNORE_SERIES ||
45 getShape() != LyXFont::IGNORE_SHAPE ||
46 getSize() != LyXFont::IGNORE_SIZE ||
47 getBar() != frnt::IGNORE ||
48 getColor() != LColor::ignore ||
49 font_->language() != ignore_language)
54 void ControlCharacter::apply()
56 // Nothing to apply. (Can be called from the Toolbar.)
60 // Apply from the view if it's visible. Otherwise, use the stored values
61 if (bufferIsAvailable())
64 toggleAndShow(bufferview(), *(font_.get()), toggleall_);
65 lv_.view_state_changed();
66 buffer()->markDirty();
67 setMinibuffer(&lv_, _("Character set"));
71 LyXFont::FONT_FAMILY ControlCharacter::getFamily() const
74 return LyXFont::IGNORE_FAMILY;
75 return font_->family();
79 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
81 font_->setFamily(val);
85 LyXFont::FONT_SERIES ControlCharacter::getSeries() const
88 return LyXFont::IGNORE_SERIES;
89 return font_->series();
93 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
95 font_->setSeries(val);
99 LyXFont::FONT_SHAPE ControlCharacter::getShape() const
102 return LyXFont::IGNORE_SHAPE;
103 return font_->shape();
107 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
109 font_->setShape(val);
113 LyXFont::FONT_SIZE ControlCharacter::getSize() const
116 return LyXFont::IGNORE_SIZE;
117 return font_->size();
121 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
127 frnt::FONT_STATE ControlCharacter::getBar() const
132 if (font_->emph() == LyXFont::TOGGLE)
133 return frnt::EMPH_TOGGLE;
135 if (font_->underbar() == LyXFont::TOGGLE)
136 return frnt::UNDERBAR_TOGGLE;
138 if (font_->noun() == LyXFont::TOGGLE)
139 return frnt::NOUN_TOGGLE;
141 if (font_->emph() == LyXFont::IGNORE &&
142 font_->underbar() == LyXFont::IGNORE &&
143 font_->noun() == LyXFont::IGNORE)
146 return frnt::INHERIT;
150 void ControlCharacter::setBar(frnt::FONT_STATE val)
154 font_->setEmph(LyXFont::IGNORE);
155 font_->setUnderbar(LyXFont::IGNORE);
156 font_->setNoun(LyXFont::IGNORE);
159 case frnt::EMPH_TOGGLE:
160 font_->setEmph(LyXFont::TOGGLE);
163 case frnt::UNDERBAR_TOGGLE:
164 font_->setUnderbar(LyXFont::TOGGLE);
167 case frnt::NOUN_TOGGLE:
168 font_->setNoun(LyXFont::TOGGLE);
172 font_->setEmph(LyXFont::INHERIT);
173 font_->setUnderbar(LyXFont::INHERIT);
174 font_->setNoun(LyXFont::INHERIT);
180 LColor::color ControlCharacter::getColor() const
183 return LColor::ignore;
185 return font_->color();
189 void ControlCharacter::setColor(LColor::color val)
200 case LColor::magenta:
202 case LColor::inherit:
203 font_->setColor(val);
211 string ControlCharacter::getLanguage() const
213 if (font_.get() && font_->language())
214 return font_->language()->lang();
219 void ControlCharacter::setLanguage(string const & val)
222 font_->setLanguage(ignore_language);
224 else if (val == "reset")
225 font_->setLanguage(buffer()->params.language);
228 font_->setLanguage(languages.getLanguage(val));
232 bool ControlCharacter::getToggleAll() const
238 void ControlCharacter::setToggleAll(bool t)