- Enable translations of the language page. Patch by Stefan Fulea.
- Simplified the clear text code.
- Fixed the german language page.
See issue #6637 for more details.
svn path=/trunk/; revision=54502
&Written);
}
+static
+VOID
+CONSOLE_ClearTextXY(IN SHORT x,
+ IN SHORT y,
+ IN SHORT Length)
+{
+ COORD coPos;
+ DWORD Written;
+
+ coPos.X = x;
+ coPos.Y = y;
+
+ FillConsoleOutputCharacterA(StdOutput,
+ ' ',
+ Length,
+ coPos,
+ &Written);
+}
+
VOID
CONSOLE_SetInputTextXY(
IN SHORT x,
&Written);
}
+static
+VOID
+CONSOLE_ClearStatusTextX(IN SHORT x,
+ IN SHORT Length)
+{
+ COORD coPos;
+ DWORD Written;
+
+ coPos.X = x;
+ coPos.Y = yScreen - 1;
+
+ FillConsoleOutputCharacterA(StdOutput,
+ ' ',
+ Length,
+ coPos,
+ &Written);
+}
+
+
VOID
CONSOLE_SetStatusTextAutoFitX(
IN SHORT x,
}
}
+
+VOID
+CONSOLE_ClearStyledText(IN SHORT x,
+ IN SHORT y,
+ IN INT Flags,
+ IN SHORT Length)
+{
+ COORD coPos;
+
+ coPos.X = x;
+ coPos.Y = y;
+
+ if (Flags & TEXT_TYPE_STATUS)
+ {
+ coPos.X = x;
+ coPos.Y = yScreen - 1;
+ }
+ else /* TEXT_TYPE_REGULAR (Default) */
+ {
+ coPos.X = x;
+ coPos.Y = y;
+ }
+
+ if (Flags & TEXT_ALIGN_CENTER)
+ {
+ coPos.X = (xScreen - Length) /2;
+ }
+ else if(Flags & TEXT_ALIGN_RIGHT)
+ {
+ coPos.X = coPos.X - Length;
+
+ if (Flags & TEXT_PADDING_SMALL)
+ {
+ coPos.X -= 1;
+ }
+ else if (Flags & TEXT_PADDING_MEDIUM)
+ {
+ coPos.X -= 2;
+ }
+ else if (Flags & TEXT_PADDING_BIG)
+ {
+ coPos.X -= 3;
+ }
+ }
+ else /* TEXT_ALIGN_LEFT (Default) */
+ {
+ if (Flags & TEXT_PADDING_SMALL)
+ {
+ coPos.X += 1;
+ }
+ else if (Flags & TEXT_PADDING_MEDIUM)
+ {
+ coPos.X += 2;
+ }
+ else if (Flags & TEXT_PADDING_BIG)
+ {
+ coPos.X += 3;
+ }
+ }
+
+ if (Flags & TEXT_TYPE_STATUS)
+ {
+ CONSOLE_ClearStatusTextX(coPos.X, Length);
+ }
+ else /* TEXT_TYPE_REGULAR (Default) */
+ {
+ CONSOLE_ClearTextXY(coPos.X, coPos.Y, Length);
+ }
+}
+
/* EOF */
IN INT Flags,
IN LPCSTR Text);
+VOID
+CONSOLE_ClearStyledText(IN SHORT x,
+ IN SHORT y,
+ IN INT Flags,
+ IN SHORT Length);
+
/* EOF */
static PAGE_NUMBER
LanguagePage(PINPUT_RECORD Ir)
{
+ PWCHAR NewLanguageId;
+ BOOL RefreshPage = FALSE;
+
/* Initialize the computer settings list */
if (LanguageList == NULL)
{
if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_DOWN)) /* DOWN */
{
-#if 0
- SelectedLanguageId = (PWCHAR)GetListEntryUserData(GetCurrentListEntry(LanguageList));
-
- /* Redraw language selection page in native language */
- MUIDisplayPage(LANGUAGE_PAGE);
-#endif
-
ScrollDownGenericList (LanguageList);
+ RefreshPage = TRUE;
}
else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_UP)) /* UP */
{
-#if 0
- SelectedLanguageId = (PWCHAR)GetListEntryUserData(GetCurrentListEntry(LanguageList));
-
- /* Redraw language selection page in native language */
- MUIDisplayPage(LANGUAGE_PAGE);
-#endif
-
ScrollUpGenericList(LanguageList);
+ RefreshPage = TRUE;
}
if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_NEXT)) /* PAGE DOWN */
{
ScrollPageDownGenericList(LanguageList);
+ RefreshPage = TRUE;
}
else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_PRIOR)) /* PAGE UP */
{
ScrollPageUpGenericList(LanguageList);
+ RefreshPage = TRUE;
}
else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
UpdateKBLayout();
}
- // Load the font
+ /* Load the font */
SetConsoleCodePage();
return INTRO_PAGE;
{
/* a-z */
GenericListKeyPress (LanguageList, Ir->Event.KeyEvent.uChar.AsciiChar);
+ RefreshPage = TRUE;
+ }
+
+ if (RefreshPage)
+ {
+ NewLanguageId = (PWCHAR)GetListEntryUserData(GetCurrentListEntry(LanguageList));
+
+ if (SelectedLanguageId != NewLanguageId)
+ {
+ /* Clear the language page */
+ MUIClearPage(LANGUAGE_PAGE);
+
+ SelectedLanguageId = NewLanguageId;
+
+ /* Load the font */
+ SetConsoleCodePage();
+
+ /* Redraw language selection page in native language */
+ MUIDisplayPage(LANGUAGE_PAGE);
+ }
+
+ RefreshPage = FALSE;
}
}
{
8,
10,
- "\x07 Bitte w\84hlen Sie die Sprache, die Sie w\84hrend des Setups verwenden wollen.",
+ "\x07 Bitte w\84hlen Sie die Sprache, die Sie w\84hrend des Setups verwenden",
TEXT_STYLE_NORMAL
},
{
8,
11,
- " Dann dr\81cken Sie ENTER.",
+ "wollen. Dann dr\81cken Sie ENTER.",
TEXT_STYLE_NORMAL
},
{
static
ULONG
-FindLanguageIndex()
+FindLanguageIndex(VOID)
{
ULONG lngIndex = 0;
return LanguageList[lngIndex].MuiLayouts;
}
+VOID
+MUIClearPage(IN ULONG page)
+{
+ const MUI_ENTRY * entry;
+ int index;
+
+ entry = FindMUIEntriesOfPage(page);
+ if (!entry)
+ {
+ PopupError("Error: Failed to find translated page",
+ NULL,
+ NULL,
+ POPUP_WAIT_NONE);
+ return;
+ }
+
+ index = 0;
+ do
+ {
+ CONSOLE_ClearStyledText(entry[index].X,
+ entry[index].Y,
+ entry[index].Flags,
+ strlen(entry[index].Buffer));
+ index++;
+ }
+ while (entry[index].Buffer != NULL);
+}
+
VOID
MUIDisplayPage(IN ULONG page)
{
index = 0;
do
{
- CONSOLE_SetStyledText (
- entry[index].X,
- entry[index].Y,
- entry[index].Flags,
- entry[index].Buffer);
+ CONSOLE_SetStyledText(entry[index].X,
+ entry[index].Y,
+ entry[index].Flags,
+ entry[index].Buffer);
index++;
}
typedef struct
{
PWCHAR FontName;
- PWCHAR SubFontName;
+ PWCHAR SubFontName;
} MUI_SUBFONT;
typedef struct
VOID
MUIDisplayPage (ULONG PageNumber);
+VOID
+MUIClearPage (ULONG PageNumber);
+
VOID
MUIDisplayError (ULONG ErrorNum, PINPUT_RECORD Ir, ULONG WaitEvent);