]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/ControlPrefs.C
* mover.h
[lyx.git] / src / frontends / controllers / ControlPrefs.C
1 /**
2  * \file ControlPrefs.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author John Levon
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "ControlPrefs.h"
14
15 #include "helper_funcs.h"
16 #include "Kernel.h"
17
18 #include "bufferlist.h"
19 #include "gettext.h"
20 #include "funcrequest.h"
21 #include "paper.h"
22 #include "LColor.h"
23
24 #include "support/filefilterlist.h"
25
26 #include <sstream>
27
28 using lyx::docstring;
29
30 using std::ostringstream;
31 using std::pair;
32 using std::string;
33 using std::vector;
34 using lyx::support::FileFilterList;
35
36 namespace lyx {
37
38 namespace frontend {
39
40
41 ControlPrefs::ControlPrefs(Dialog & parent)
42         : Dialog::Controller(parent),
43           update_screen_font_(false)
44 {}
45
46
47 bool ControlPrefs::initialiseParams(std::string const &)
48 {
49         rc_ = lyxrc;
50         formats_ = lyx::formats;
51         converters_ = theConverters();
52         converters_.update(formats_);
53         movers_ = theMovers();
54         colors_.clear();
55         update_screen_font_ = false;
56
57         return true;
58 }
59
60
61 void ControlPrefs::dispatchParams()
62 {
63         ostringstream ss;
64         rc_.write(ss, true);
65         kernel().dispatch(FuncRequest(LFUN_LYXRC_APPLY, ss.str()));
66
67         // FIXME: these need lfuns
68         // FIXME UNICODE
69         theBufferList().setCurrentAuthor(from_utf8(rc_.user_name), from_utf8(rc_.user_email));
70
71         lyx::formats = formats_;
72
73         theConverters() = converters_;
74         theConverters().update(lyx::formats);
75         theConverters().buildGraph();
76
77         theMovers() = movers_;
78
79         vector<string>::const_iterator it = colors_.begin();
80         vector<string>::const_iterator const end = colors_.end();
81         for (; it != end; ++it)
82                 kernel().dispatch(FuncRequest(LFUN_SET_COLOR, *it));
83         colors_.clear();
84
85         if (update_screen_font_) {
86                 kernel().dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
87                 update_screen_font_ = false;
88         }
89
90         // The Save button has been pressed
91         if (dialog().isClosing()) {
92                 kernel().dispatch(FuncRequest(LFUN_PREFERENCES_SAVE));
93         }
94 }
95
96
97 void ControlPrefs::setColor(LColor_color col, string const & hex)
98 {
99         colors_.push_back(lcolor.getLyXName(col) + ' ' + hex);
100 }
101
102
103 void ControlPrefs::updateScreenFonts()
104 {
105         update_screen_font_ = true;
106 }
107
108
109 docstring const ControlPrefs::browsebind(docstring const & file) const
110 {
111         return browseLibFile(lyx::from_ascii("bind"), file, lyx::from_ascii("bind"),
112                              _("Choose bind file"),
113                              FileFilterList(_("LyX bind files (*.bind)")));
114 }
115
116
117 docstring const ControlPrefs::browseUI(docstring const & file) const
118 {
119         return browseLibFile(lyx::from_ascii("ui"), file, lyx::from_ascii("ui"),
120                              _("Choose UI file"),
121                              FileFilterList(_("LyX UI files (*.ui)")));
122 }
123
124
125 docstring const ControlPrefs::browsekbmap(docstring const & file) const
126 {
127         return browseLibFile(lyx::from_ascii("kbd"), file, lyx::from_ascii("kmap"),
128                              _("Choose keyboard map"),
129                              FileFilterList(_("LyX keyboard maps (*.kmap)")));
130 }
131
132
133 docstring const ControlPrefs::browsedict(docstring const & file) const
134 {
135         return browseFile(file,
136                           _("Choose personal dictionary"),
137                           FileFilterList(_("*.ispell")));
138 }
139
140
141 docstring const ControlPrefs::browse(docstring const & file,
142                                   docstring const & title) const
143 {
144         return browseFile(file, title, FileFilterList(), true);
145 }
146
147
148 docstring const ControlPrefs::browsedir(docstring const & path,
149                                      docstring const & title) const
150 {
151         return browseDir(path, title);
152 }
153
154
155 // We support less paper sizes than the document dialog
156 // Therefore this adjustment is needed.
157 PAPER_SIZE const ControlPrefs::toPaperSize(int i) const
158 {
159         switch (i) {
160         case 0:
161                 return PAPER_DEFAULT;
162         case 1:
163                 return PAPER_USLETTER;
164         case 2:
165                 return PAPER_USLEGAL;
166         case 3:
167                 return PAPER_USEXECUTIVE;
168         case 4:
169                 return PAPER_A3;
170         case 5:
171                 return PAPER_A4;
172         case 6:
173                 return PAPER_A5;
174         case 7:
175                 return PAPER_B5;
176         default:
177                 // should not happen
178                 return PAPER_DEFAULT;
179         }
180 }
181
182
183 int const ControlPrefs::fromPaperSize(PAPER_SIZE papersize) const
184 {
185         switch (papersize) {
186         case PAPER_DEFAULT:
187                 return 0;
188         case PAPER_USLETTER:
189                 return 1;
190         case PAPER_USLEGAL:
191                 return 2;
192         case PAPER_USEXECUTIVE:
193                 return 3;
194         case PAPER_A3:
195                 return 4;
196         case PAPER_A4:
197                 return 5;
198         case PAPER_A5:
199                 return 6;
200         case PAPER_B5:
201                 return 7;
202         default:
203                 // should not happen
204                 return 0;
205         }
206 }
207
208 } // namespace frontend
209 } // namespace lyx