Author: ekohl Date: Sat Nov 26 18:27:42 2011 New Revision: 54502
URL: http://svn.reactos.org/svn/reactos?rev=54502&view=rev Log: [USETUP] - 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.
Modified: trunk/reactos/base/setup/usetup/interface/consup.c trunk/reactos/base/setup/usetup/interface/consup.h trunk/reactos/base/setup/usetup/interface/usetup.c trunk/reactos/base/setup/usetup/lang/de-DE.h trunk/reactos/base/setup/usetup/mui.c trunk/reactos/base/setup/usetup/mui.h
Modified: trunk/reactos/base/setup/usetup/interface/consup.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/interface... ============================================================================== --- trunk/reactos/base/setup/usetup/interface/consup.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/interface/consup.c [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -269,6 +269,25 @@ &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, @@ -430,6 +449,25 @@ coPos, &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( @@ -670,4 +708,74 @@ } }
+ +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 */
Modified: trunk/reactos/base/setup/usetup/interface/consup.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/interface... ============================================================================== --- trunk/reactos/base/setup/usetup/interface/consup.h [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/interface/consup.h [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -186,4 +186,10 @@ IN INT Flags, IN LPCSTR Text);
+VOID +CONSOLE_ClearStyledText(IN SHORT x, + IN SHORT y, + IN INT Flags, + IN SHORT Length); + /* EOF */
Modified: trunk/reactos/base/setup/usetup/interface/usetup.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/interface... ============================================================================== --- trunk/reactos/base/setup/usetup/interface/usetup.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/interface/usetup.c [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -608,6 +608,9 @@ static PAGE_NUMBER LanguagePage(PINPUT_RECORD Ir) { + PWCHAR NewLanguageId; + BOOL RefreshPage = FALSE; + /* Initialize the computer settings list */ if (LanguageList == NULL) { @@ -637,36 +640,26 @@ 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 */ @@ -685,7 +678,7 @@ UpdateKBLayout(); }
- // Load the font + /* Load the font */ SetConsoleCodePage();
return INTRO_PAGE; @@ -694,6 +687,28 @@ { /* 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; } }
Modified: trunk/reactos/base/setup/usetup/lang/de-DE.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/lang/de-D... ============================================================================== --- trunk/reactos/base/setup/usetup/lang/de-DE.h [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/lang/de-DE.h [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -24,13 +24,13 @@ { 8, 10, - "\x07 Bitte whlen Sie die Sprache, die Sie whrend des Setups verwenden wollen.", + "\x07 Bitte whlen Sie die Sprache, die Sie whrend des Setups verwenden", TEXT_STYLE_NORMAL }, { 8, 11, - " Dann drcken Sie ENTER.", + "wollen. Dann drcken Sie ENTER.", TEXT_STYLE_NORMAL }, {
Modified: trunk/reactos/base/setup/usetup/mui.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/mui.c?rev... ============================================================================== --- trunk/reactos/base/setup/usetup/mui.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/mui.c [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -40,7 +40,7 @@
static ULONG -FindLanguageIndex() +FindLanguageIndex(VOID) { ULONG lngIndex = 0;
@@ -124,7 +124,7 @@ }
VOID -MUIDisplayPage(IN ULONG page) +MUIClearPage(IN ULONG page) { const MUI_ENTRY * entry; int index; @@ -142,11 +142,38 @@ index = 0; do { - CONSOLE_SetStyledText ( - entry[index].X, - entry[index].Y, - entry[index].Flags, - entry[index].Buffer); + 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) +{ + 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_SetStyledText(entry[index].X, + entry[index].Y, + entry[index].Flags, + entry[index].Buffer);
index++; }
Modified: trunk/reactos/base/setup/usetup/mui.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/mui.h?rev... ============================================================================== --- trunk/reactos/base/setup/usetup/mui.h [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/mui.h [iso-8859-1] Sat Nov 26 18:27:42 2011 @@ -29,7 +29,7 @@ typedef struct { PWCHAR FontName; - PWCHAR SubFontName; + PWCHAR SubFontName; } MUI_SUBFONT;
typedef struct @@ -55,6 +55,9 @@
VOID MUIDisplayPage (ULONG PageNumber); + +VOID +MUIClearPage (ULONG PageNumber);
VOID MUIDisplayError (ULONG ErrorNum, PINPUT_RECORD Ir, ULONG WaitEvent);