]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/ControlCharacter.C
Controller-view split of Graphics and Index popups.
[lyx.git] / src / frontends / controllers / ControlCharacter.C
1 /**
2  * \file ControlCharacter.C
3  * Copyright 2001 The LyX Team.
4  * See the file COPYING.
5  *
6  * \author Angus Leeming, a.leeming@.ac.uk
7  */
8
9 #include <vector>
10
11 #ifdef __GNUG__
12 #pragma implementation
13 #endif
14
15 #include <config.h>
16
17 #include "ControlCharacter.h"
18 #include "buffer.h"
19 #include "Dialogs.h"
20 #include "Liason.h"
21 #include "LyXView.h"
22 #include "bufferview_funcs.h" // ToggleAndShow
23
24 using Liason::setMinibuffer;
25 using SigC::slot;
26 using std::vector;
27
28 ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
29         : ControlDialog<ControlConnectBD>(lv, d),
30           font_(0), toggleall_(false)
31 {
32         d_.showLayoutCharacter.connect(slot(this, &ControlCharacter::show));
33         d_.setUserFreeFont.connect(slot(this, &ControlCharacter::apply));
34 }
35
36
37 void ControlCharacter::setParams()
38 {
39         if (font_) delete font_;
40         font_ = new LyXFont(LyXFont::ALL_IGNORE);
41 }
42
43
44 void ControlCharacter::clearParams()
45 {
46         if (font_) {
47                 delete font_;
48                 font_ = 0;
49         }
50 }
51
52
53 void ControlCharacter::apply()
54 {
55         if (!lv_.view()->available())
56                 return;
57    
58         view().apply();
59
60         ToggleAndShow(lv_.view(), *font_, toggleall_);
61         lv_.view()->setState();
62         lv_.buffer()->markDirty();
63         setMinibuffer(&lv_, _("Character set"));
64 }
65
66
67 void ControlCharacter::setFamily(LyXFont::FONT_FAMILY val)
68 {
69         font_->setFamily(val);
70 }
71
72 void ControlCharacter::setSeries(LyXFont::FONT_SERIES val)
73 {
74         font_->setSeries(val);
75 }
76
77 void ControlCharacter::setShape(LyXFont::FONT_SHAPE val)
78 {
79         font_->setShape(val);
80 }
81
82 void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
83 {
84         font_->setSize(val);
85 }
86
87 void ControlCharacter::setBar(character::FONT_STATE val)
88 {
89         switch (val) {
90         case character::IGNORE:
91                 font_->setEmph(LyXFont::IGNORE);
92                 font_->setUnderbar(LyXFont::IGNORE);
93                 font_->setNoun(LyXFont::IGNORE);
94                 font_->setLatex(LyXFont::IGNORE);
95                 break;
96
97         case character::EMPH_TOGGLE:
98                 font_->setEmph(LyXFont::TOGGLE);
99                 break;
100
101         case character::UNDERBAR_TOGGLE:
102                 font_->setUnderbar(LyXFont::TOGGLE);
103                 break;
104
105         case character::NOUN_TOGGLE:
106                 font_->setNoun(LyXFont::TOGGLE);
107                 break;
108
109         case character::LATEX_TOGGLE:
110                 font_->setLatex(LyXFont::TOGGLE);
111                 break;
112
113         case character::INHERIT:
114                 font_->setEmph(LyXFont::INHERIT);
115                 font_->setUnderbar(LyXFont::INHERIT);
116                 font_->setNoun(LyXFont::INHERIT);
117                 font_->setLatex(LyXFont::INHERIT);
118                 break;
119         }
120 }
121
122 void ControlCharacter::setColor(LColor::color val)
123 {
124         switch (val) {
125         case LColor::ignore:
126         case LColor::none:
127         case LColor::black:
128         case LColor::white:
129         case LColor::red:
130         case LColor::green:
131         case LColor::blue:
132         case LColor::cyan:
133         case LColor::magenta:
134         case LColor::yellow:
135         case LColor::inherit:
136                 font_->setColor(val);
137                 break;
138
139         default:
140                 break;
141         }
142 }
143
144         
145 void ControlCharacter::setLanguage(string const & val)
146 {
147         if (val == _("No change"))
148                 font_->setLanguage(ignore_language);
149
150         else if ( val == _("Reset"))
151                 font_->setLanguage(lv_.buffer()->params.language);
152
153         else
154                 font_->setLanguage(languages.getLanguage(val));
155 }
156
157 void ControlCharacter::setToggleAll(bool t)
158 {
159         toggleall_ = t;
160 }