french translation for usetup
[reactos.git] / reactos / base / setup / usetup / mui.c
1 #include "usetup.h"
2 #include "errorcode.h"
3 #include "mui.h"
4
5 #include "lang/en-US.h"
6 #include "lang/de-DE.h"
7 #include "lang/es-ES.h"
8 #include "lang/fr-FR.h"
9 #include "lang/ru-RU.h"
10 #include "lang/sv-SE.h"
11 #include "lang/uk-UA.h"
12
13 static MUI_LANGUAGE LanguageList[] =
14 {
15 {
16 "English (USA)",
17 enUSPages
18 },
19 {
20 "French (France)",
21 frFRPages
22 },
23 {
24 "German",
25 deDEPages
26 },
27 {
28 "Russian",
29 ruRUPages
30 },
31 {
32 "Spanish",
33 esESPages
34 },
35 {
36 "Swedish",
37 svSEPages
38 },
39 {
40 "Ukrainian",
41 ukUAPages
42 },
43 {
44 NULL,
45 NULL
46 }
47 };
48
49 static ULONG SelectedLanguage = 0;
50
51 extern
52 VOID
53 PopupError(PCHAR Text,
54 PCHAR Status,
55 PINPUT_RECORD Ir,
56 ULONG WaitEvent);
57
58
59 PGENERIC_LIST
60 MUICreateLanguageList()
61 {
62 PGENERIC_LIST List;
63 ULONG Index;
64
65 List = CreateGenericList();
66 if (List == NULL)
67 {
68 return NULL;
69 }
70
71 Index = 0;
72
73 do
74 {
75 AppendGenericListEntry(List, LanguageList[Index].LanguageDescriptor, (PVOID)Index, (Index == 0 ? TRUE : FALSE));
76 Index++;
77 }while(LanguageList[Index].MuiPages && LanguageList[Index].LanguageDescriptor);
78
79 return List;
80 }
81
82 BOOLEAN
83 MUISelectLanguage(ULONG LanguageIndex)
84 {
85 SelectedLanguage = LanguageIndex;
86 return TRUE;
87 }
88
89
90 static
91 MUI_ENTRY *
92 findMUIEntriesOfPage(ULONG PageNumber, MUI_PAGE * Pages)
93 {
94 ULONG Index = 0;
95 do
96 {
97 if (Pages[Index].Number == PageNumber)
98 {
99 return Pages[Index].MuiEntry;
100 }
101 Index++;
102 }while(Pages[Index].MuiEntry != NULL);
103 return NULL;
104 }
105
106 VOID
107 MUIDisplayPage(ULONG pg)
108 {
109 MUI_ENTRY * entry;
110 int index;
111 int flags;
112
113 entry = findMUIEntriesOfPage(pg, LanguageList[SelectedLanguage].MuiPages);
114 if (!entry)
115 {
116 PopupError("Error: Failed to find translated page",
117 NULL,
118 NULL,
119 POPUP_WAIT_NONE);
120 return;
121 }
122
123 index = 0;
124 do
125 {
126 flags = entry[index].Flags;
127 switch(flags)
128 {
129 case TEXT_NORMAL:
130 CONSOLE_SetTextXY(entry[index].X, entry[index].Y, entry[index].Buffer);
131 break;
132 case TEXT_HIGHLIGHT:
133 CONSOLE_SetHighlightedTextXY(entry[index].X, entry[index].Y, entry[index].Buffer);
134 break;
135 case TEXT_UNDERLINE:
136 CONSOLE_SetUnderlinedTextXY(entry[index].X, entry[index].Y, entry[index].Buffer);
137 break;
138 case TEXT_STATUS:
139 CONSOLE_SetStatusText(entry[index].Buffer);
140 break;
141 default:
142 break;
143 }
144 index++;
145 }while(entry[index].Buffer != NULL);
146 }
147
148 VOID
149 MUIDisplayError(ULONG ErrorNum, PINPUT_RECORD Ir, ULONG WaitEvent)
150 {
151 if (ErrorNum >= ERROR_LAST_ERROR_CODE)
152 {
153 PopupError("invalid error number provided",
154 "press enter to continue",
155 Ir,
156 POPUP_WAIT_ENTER);
157
158 return;
159 }
160
161 PopupError(enUSErrorEntries[ErrorNum].ErrorText,
162 enUSErrorEntries[ErrorNum].ErrorStatus,
163 Ir,
164 WaitEvent);
165 }