]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/frnt_lang.C
Really dull and boring header shit
[lyx.git] / src / frontends / controllers / frnt_lang.C
1 /**
2  * \file frnt_lang.C
3  * Read the file COPYING
4  *
5  * \author Angus Leeming 
6  *
7  * Full author contact details are available in file CREDITS
8  */
9
10 #include <config.h>
11
12 #ifdef __GNUG__
13 #pragma implementation
14 #endif
15
16 #include "frnt_lang.h"
17 #include "gettext.h"
18 #include "language.h"
19 #include <iostream>
20 #include <algorithm>
21
22 using std::vector;
23
24 namespace {
25
26 struct Sorter {
27         bool operator()(frnt::LanguagePair const & lhs,
28                         frnt::LanguagePair const & rhs) const
29         {
30                 return lhs.first < rhs.first;
31         }
32 };
33
34 } // namespace anon
35
36 namespace frnt {
37
38 vector<LanguagePair> const getLanguageData(bool character_dlg)
39 {
40         vector<LanguagePair>::size_type const size = character_dlg ?
41                 languages.size() + 2 : languages.size();
42
43         vector<LanguagePair> langs(size);
44
45         if (character_dlg) {
46                 langs[0].first = _("No change"); langs[0].second = "ignore";
47                 langs[1].first = _("Reset");     langs[1].second = "reset";
48         }
49
50         vector<string>::size_type i = character_dlg ? 2 : 0;
51         for (Languages::const_iterator cit = languages.begin();
52              cit != languages.end(); ++cit) {
53                 langs[i].first  = _(cit->second.display());
54                 langs[i].second = cit->second.lang();
55                 ++i;
56         }
57
58         // Don't sort "ignore" and "reset"
59         vector<LanguagePair>::iterator begin = character_dlg ?
60                 langs.begin() + 2 : langs.begin();
61
62         std::sort(begin, langs.end(), Sorter());
63
64         return langs;
65 }
66
67 } // namespace frnt