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