https://git.reactos.org/?p=reactos.git;a=commitdiff;h=38e20b638fd5f1dd66903…
commit 38e20b638fd5f1dd6690319e68b3b092145afe30
Author:     Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Mon May 15 01:48:19 2017 +0000
Commit:     Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Oct 24 00:35:52 2018 +0200
    [USETUP] Massage the USETUP interface code.
    - The "intro" page is renamed into the "Welcome" page, because its
corresponding resource indeed is the welcome screen;
    - Because the "setup start" page can only be displayed once, move it out of
the while-loop, and use its result as the initial value of the 'Page' variable.
    - Remove unneeded _PAGE_NUMBER_DEFINED guards;
    - Add a DPRINT in the RepairUpdateFlag case of RegistryPage() (because we don't
implement yet a correct upgrading or repairing of the registry).
    - In InstallIntroPage(), display the page itself only if needed (i.e. after all the
validation checks & repair/update or unattended checks are done). Similar
modifications are done also in DeviceSettingsPage(), SelectPartitionPage()
    - Turn both CheckUnattendedSetup() and UpdateKBLayout() into static functions.
    - Fix the code of ScsiControllerPage() so that it can be compiled if needed, and add a
dummy OemDriverPage().
    svn path=/branches/setup_improvements/; revision=74575
---
 base/setup/usetup/lang/bg-BG.h |   2 +-
 base/setup/usetup/lang/bn-BD.h |   2 +-
 base/setup/usetup/lang/cs-CZ.h |   2 +-
 base/setup/usetup/lang/da-DK.h |   2 +-
 base/setup/usetup/lang/de-DE.h |   2 +-
 base/setup/usetup/lang/el-GR.h |   2 +-
 base/setup/usetup/lang/en-US.h |   2 +-
 base/setup/usetup/lang/es-ES.h |   2 +-
 base/setup/usetup/lang/et-EE.h |   2 +-
 base/setup/usetup/lang/fr-FR.h |   2 +-
 base/setup/usetup/lang/he-IL.h |   2 +-
 base/setup/usetup/lang/it-IT.h |   2 +-
 base/setup/usetup/lang/ja-JP.h |   2 +-
 base/setup/usetup/lang/lt-LT.h |   2 +-
 base/setup/usetup/lang/ms-MY.h |   2 +-
 base/setup/usetup/lang/nl-NL.h |   2 +-
 base/setup/usetup/lang/pl-PL.h |   2 +-
 base/setup/usetup/lang/pt-BR.h |   2 +-
 base/setup/usetup/lang/ro-RO.h |   2 +-
 base/setup/usetup/lang/ru-RU.h |   2 +-
 base/setup/usetup/lang/sk-SK.h |   2 +-
 base/setup/usetup/lang/sq-AL.h |   2 +-
 base/setup/usetup/lang/sv-SE.h |   2 +-
 base/setup/usetup/lang/tr-TR.h |   2 +-
 base/setup/usetup/lang/uk-UA.h |   2 +-
 base/setup/usetup/usetup.c     | 134 +++++++++++++++++++++++++----------------
 base/setup/usetup/usetup.h     |  15 ++---
 27 files changed, 113 insertions(+), 86 deletions(-)
diff --git a/base/setup/usetup/lang/bg-BG.h b/base/setup/usetup/lang/bg-BG.h
index b6366eac4e..803de8a23c 100644
--- a/base/setup/usetup/lang/bg-BG.h
+++ b/base/setup/usetup/lang/bg-BG.h
@@ -1629,7 +1629,7 @@ MUI_PAGE bgBGPages[] =
         bgBGLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         bgBGWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/bn-BD.h b/base/setup/usetup/lang/bn-BD.h
index 5a4d7786e1..145c0e86d0 100644
--- a/base/setup/usetup/lang/bn-BD.h
+++ b/base/setup/usetup/lang/bn-BD.h
@@ -1616,7 +1616,7 @@ MUI_PAGE bnBDPages[] =
         bnBDLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         bnBDWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/cs-CZ.h b/base/setup/usetup/lang/cs-CZ.h
index 4359652d37..10e517619f 100644
--- a/base/setup/usetup/lang/cs-CZ.h
+++ b/base/setup/usetup/lang/cs-CZ.h
@@ -1624,7 +1624,7 @@ MUI_PAGE csCZPages[] =
         csCZLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         csCZWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/da-DK.h b/base/setup/usetup/lang/da-DK.h
index febfb2b68d..9e1d724f2d 100644
--- a/base/setup/usetup/lang/da-DK.h
+++ b/base/setup/usetup/lang/da-DK.h
@@ -1630,7 +1630,7 @@ MUI_PAGE daDKPages[] =
         daDKLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         daDKWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/de-DE.h b/base/setup/usetup/lang/de-DE.h
index fda98fbce0..afc257b78b 100644
--- a/base/setup/usetup/lang/de-DE.h
+++ b/base/setup/usetup/lang/de-DE.h
@@ -1620,7 +1620,7 @@ MUI_PAGE deDEPages[] =
         deDELanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         deDEWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/el-GR.h b/base/setup/usetup/lang/el-GR.h
index 58e624f0c3..ec8edb65f3 100644
--- a/base/setup/usetup/lang/el-GR.h
+++ b/base/setup/usetup/lang/el-GR.h
@@ -1633,7 +1633,7 @@ MUI_PAGE elGRPages[] =
         elGRLanguagePageEntries
     },
     {
-       START_PAGE,
+       WELCOME_PAGE,
        elGRWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/en-US.h b/base/setup/usetup/lang/en-US.h
index 9f3a6334e5..b8b5665d9c 100644
--- a/base/setup/usetup/lang/en-US.h
+++ b/base/setup/usetup/lang/en-US.h
@@ -1616,7 +1616,7 @@ MUI_PAGE enUSPages[] =
         enUSLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         enUSWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/es-ES.h b/base/setup/usetup/lang/es-ES.h
index e52c7a56ad..5e43233d52 100644
--- a/base/setup/usetup/lang/es-ES.h
+++ b/base/setup/usetup/lang/es-ES.h
@@ -1620,7 +1620,7 @@ MUI_PAGE esESPages[] =
         esESLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         esESWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/et-EE.h b/base/setup/usetup/lang/et-EE.h
index ee47d0ec84..e61b71ae53 100644
--- a/base/setup/usetup/lang/et-EE.h
+++ b/base/setup/usetup/lang/et-EE.h
@@ -1614,7 +1614,7 @@ MUI_PAGE etEEPages[] =
         etEELanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         etEEWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/fr-FR.h b/base/setup/usetup/lang/fr-FR.h
index 51456c43d9..8363184f8c 100644
--- a/base/setup/usetup/lang/fr-FR.h
+++ b/base/setup/usetup/lang/fr-FR.h
@@ -1635,7 +1635,7 @@ MUI_PAGE frFRPages[] =
         frFRLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         frFRWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/he-IL.h b/base/setup/usetup/lang/he-IL.h
index 686ed20ed8..8c3e4ce198 100644
--- a/base/setup/usetup/lang/he-IL.h
+++ b/base/setup/usetup/lang/he-IL.h
@@ -1617,7 +1617,7 @@ MUI_PAGE heILPages[] =
         heILLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         heILWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/it-IT.h b/base/setup/usetup/lang/it-IT.h
index 5ac3a4c8b7..c95073e10d 100644
--- a/base/setup/usetup/lang/it-IT.h
+++ b/base/setup/usetup/lang/it-IT.h
@@ -1623,7 +1623,7 @@ MUI_PAGE itITPages[] =
         itITLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         itITWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/ja-JP.h b/base/setup/usetup/lang/ja-JP.h
index d30be1487d..0cbb7c52e6 100644
--- a/base/setup/usetup/lang/ja-JP.h
+++ b/base/setup/usetup/lang/ja-JP.h
@@ -1618,7 +1618,7 @@ MUI_PAGE jaJPPages[] =
         jaJPLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         jaJPWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/lt-LT.h b/base/setup/usetup/lang/lt-LT.h
index 697b19ff67..86b3bec27b 100644
--- a/base/setup/usetup/lang/lt-LT.h
+++ b/base/setup/usetup/lang/lt-LT.h
@@ -1626,7 +1626,7 @@ MUI_PAGE ltLTPages[] =
         ltLTLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         ltLTWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/ms-MY.h b/base/setup/usetup/lang/ms-MY.h
index 2da4e91f0f..7b76c4f81f 100644
--- a/base/setup/usetup/lang/ms-MY.h
+++ b/base/setup/usetup/lang/ms-MY.h
@@ -1509,7 +1509,7 @@ MUI_PAGE msMYPages[] =
         msMYLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         msMYWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/nl-NL.h b/base/setup/usetup/lang/nl-NL.h
index 9f080ce4c2..cfcc71fce4 100644
--- a/base/setup/usetup/lang/nl-NL.h
+++ b/base/setup/usetup/lang/nl-NL.h
@@ -1644,7 +1644,7 @@ MUI_PAGE nlNLPages[] =
         nlNLLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         nlNLWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/pl-PL.h b/base/setup/usetup/lang/pl-PL.h
index c7c3269097..1849b809fe 100644
--- a/base/setup/usetup/lang/pl-PL.h
+++ b/base/setup/usetup/lang/pl-PL.h
@@ -1627,7 +1627,7 @@ MUI_PAGE plPLPages[] =
         plPLLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         plPLWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/pt-BR.h b/base/setup/usetup/lang/pt-BR.h
index 4372dc3761..0d9f7b3f37 100644
--- a/base/setup/usetup/lang/pt-BR.h
+++ b/base/setup/usetup/lang/pt-BR.h
@@ -1648,7 +1648,7 @@ MUI_PAGE ptBRPages[] =
         ptBRLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         ptBRWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/ro-RO.h b/base/setup/usetup/lang/ro-RO.h
index 422188d7cb..457ba53ba3 100644
--- a/base/setup/usetup/lang/ro-RO.h
+++ b/base/setup/usetup/lang/ro-RO.h
@@ -1670,7 +1670,7 @@ MUI_PAGE roROPages[] =
         roROLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         roROWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/ru-RU.h b/base/setup/usetup/lang/ru-RU.h
index 98f16b0dac..52e9b81da6 100644
--- a/base/setup/usetup/lang/ru-RU.h
+++ b/base/setup/usetup/lang/ru-RU.h
@@ -1617,7 +1617,7 @@ MUI_PAGE ruRUPages[] =
         ruRULanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         ruRUWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/sk-SK.h b/base/setup/usetup/lang/sk-SK.h
index be99ea5586..d44fcb9ac0 100644
--- a/base/setup/usetup/lang/sk-SK.h
+++ b/base/setup/usetup/lang/sk-SK.h
@@ -1628,7 +1628,7 @@ MUI_PAGE skSKPages[] =
         skSKLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         skSKWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/sq-AL.h b/base/setup/usetup/lang/sq-AL.h
index bf157a9bda..13c7c105a9 100644
--- a/base/setup/usetup/lang/sq-AL.h
+++ b/base/setup/usetup/lang/sq-AL.h
@@ -1621,7 +1621,7 @@ MUI_PAGE sqALPages[] =
         sqALLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         sqALWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/sv-SE.h b/base/setup/usetup/lang/sv-SE.h
index 38e766f447..15c3f493a7 100644
--- a/base/setup/usetup/lang/sv-SE.h
+++ b/base/setup/usetup/lang/sv-SE.h
@@ -1624,7 +1624,7 @@ MUI_PAGE svSEPages[] =
         svSELanguagePageEntries
     },
     {
-       START_PAGE,
+       WELCOME_PAGE,
        svSEWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/tr-TR.h b/base/setup/usetup/lang/tr-TR.h
index be2ce60cf5..e61abbbdb3 100644
--- a/base/setup/usetup/lang/tr-TR.h
+++ b/base/setup/usetup/lang/tr-TR.h
@@ -1597,7 +1597,7 @@ MUI_PAGE trTRPages[] =
         trTRLanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         trTRWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/lang/uk-UA.h b/base/setup/usetup/lang/uk-UA.h
index 7f693079b8..12f3ce1bef 100644
--- a/base/setup/usetup/lang/uk-UA.h
+++ b/base/setup/usetup/lang/uk-UA.h
@@ -1624,7 +1624,7 @@ MUI_PAGE ukUAPages[] =
         ukUALanguagePageEntries
     },
     {
-        START_PAGE,
+        WELCOME_PAGE,
         ukUAWelcomePageEntries
     },
     {
diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c
index 3c7eb74de5..eea168791e 100644
--- a/base/setup/usetup/usetup.c
+++ b/base/setup/usetup/usetup.c
@@ -420,7 +420,7 @@ ConfirmQuit(PINPUT_RECORD Ir)
 }
-VOID
+static VOID
 CheckUnattendedSetup(VOID)
 {
     WCHAR UnattendInfPath[MAX_PATH];
@@ -593,7 +593,7 @@ CheckUnattendedSetup(VOID)
 }
-VOID
+static VOID
 UpdateKBLayout(VOID)
 {
     PGENERIC_LIST_ENTRY ListEntry;
@@ -633,7 +633,7 @@ UpdateKBLayout(VOID)
 /*
  * Displays the LanguagePage.
  *
- * Next pages: IntroPage, QuitPage
+ * Next pages: WelcomePage, QuitPage
  *
  * SIDEEFFECTS
  *  Init SelectedLanguageId
@@ -656,7 +656,7 @@ LanguagePage(PINPUT_RECORD Ir)
         if (LanguageList == NULL)
         {
            PopupError("Setup failed to initialize available translations",
NULL, NULL, POPUP_WAIT_NONE);
-           return INTRO_PAGE;
+           return WELCOME_PAGE;
         }
     }
@@ -670,7 +670,7 @@ LanguagePage(PINPUT_RECORD Ir)
     if (GenericListHasSingleEntry(LanguageList))
     {
         LanguageId = (LANGID)(wcstol(SelectedLanguageId, NULL, 16) & 0xFFFF);
-        return INTRO_PAGE;
+        return WELCOME_PAGE;
     }
     InitGenericListUi(&ListUi, LanguageList);
@@ -734,7 +734,7 @@ LanguagePage(PINPUT_RECORD Ir)
             /* Load the font */
             SetConsoleCodePage();
-            return INTRO_PAGE;
+            return WELCOME_PAGE;
         }
         else if ((Ir->Event.KeyEvent.uChar.AsciiChar > 0x60) &&
(Ir->Event.KeyEvent.uChar.AsciiChar < 0x7b))
         {
@@ -765,7 +765,7 @@ LanguagePage(PINPUT_RECORD Ir)
         }
     }
-    return INTRO_PAGE;
+    return WELCOME_PAGE;
 }
@@ -930,7 +930,7 @@ SetupStartPage(PINPUT_RECORD Ir)
 /*
- * Displays the IntroPage.
+ * Displays the WelcomePage.
  *
  * Next pages:
  *  InstallIntroPage (default)
@@ -942,9 +942,9 @@ SetupStartPage(PINPUT_RECORD Ir)
  *   Number of the next page.
  */
 static PAGE_NUMBER
-IntroPage(PINPUT_RECORD Ir)
+WelcomePage(PINPUT_RECORD Ir)
 {
-    MUIDisplayPage(START_PAGE);
+    MUIDisplayPage(WELCOME_PAGE);
     while (TRUE)
     {
@@ -972,7 +972,7 @@ IntroPage(PINPUT_RECORD Ir)
         }
     }
-    return INTRO_PAGE;
+    return WELCOME_PAGE;
 }
@@ -980,7 +980,7 @@ IntroPage(PINPUT_RECORD Ir)
  * Displays the License page.
  *
  * Next page:
- *  IntroPage (default)
+ *  WelcomePage (default)
  *
  * RETURNS
  *   Number of the next page.
@@ -996,7 +996,7 @@ LicensePage(PINPUT_RECORD Ir)
         if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)  /* ENTER */
         {
-            return INTRO_PAGE;
+            return WELCOME_PAGE;
         }
     }
@@ -1041,7 +1041,7 @@ RepairIntroPage(PINPUT_RECORD Ir)
         else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
                  (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE))  /* ESC */
         {
-            return INTRO_PAGE;
+            return WELCOME_PAGE;
         }
     }
@@ -1063,8 +1063,6 @@ RepairIntroPage(PINPUT_RECORD Ir)
 static PAGE_NUMBER
 InstallIntroPage(PINPUT_RECORD Ir)
 {
-    MUIDisplayPage(INSTALL_INTRO_PAGE);
-
     if (RepairUpdateFlag)
     {
         //return SELECT_PARTITION_PAGE;
@@ -1072,9 +1070,9 @@ InstallIntroPage(PINPUT_RECORD Ir)
     }
     if (IsUnattendedSetup)
-    {
         return SELECT_PARTITION_PAGE;
-    }
+
+    MUIDisplayPage(INSTALL_INTRO_PAGE);
     while (TRUE)
     {
@@ -1103,19 +1101,20 @@ InstallIntroPage(PINPUT_RECORD Ir)
 static PAGE_NUMBER
 ScsiControllerPage(PINPUT_RECORD Ir)
 {
-    SetTextXY(6, 8, "Setup detected the following mass storage devices:");
+    // MUIDisplayPage(SCSI_CONTROLLER_PAGE);
+
+    CONSOLE_SetTextXY(6, 8, "Setup detected the following mass storage
devices:");
     /* FIXME: print loaded mass storage driver descriptions */
 #if 0
-    SetTextXY(8, 10, "TEST device");
+    CONSOLE_SetTextXY(8, 10, "TEST device");
 #endif
-
-    SetStatusText("   ENTER = Continue   F3 = Quit");
+    CONSOLE_SetStatusText("   ENTER = Continue   F3 = Quit");
     while (TRUE)
     {
-        ConInKey(Ir);
+        CONSOLE_ConInKey(Ir);
         if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
             (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
@@ -1133,6 +1132,38 @@ ScsiControllerPage(PINPUT_RECORD Ir)
     return SCSI_CONTROLLER_PAGE;
 }
+
+static PAGE_NUMBER
+OemDriverPage(PINPUT_RECORD Ir)
+{
+    // MUIDisplayPage(OEM_DRIVER_PAGE);
+
+    CONSOLE_SetTextXY(6, 8, "This is the OEM driver page!");
+
+    /* FIXME: Implement!! */
+
+    CONSOLE_SetStatusText("   ENTER = Continue   F3 = Quit");
+
+    while (TRUE)
+    {
+        CONSOLE_ConInKey(Ir);
+
+        if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
+            (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
+        {
+            if (ConfirmQuit(Ir) == TRUE)
+                return QUIT_PAGE;
+
+            break;
+        }
+        else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
+        {
+            return DEVICE_SETTINGS_PAGE;
+        }
+    }
+
+    return OEM_DRIVER_PAGE;
+}
 #endif
@@ -1161,7 +1192,6 @@ static PAGE_NUMBER
 DeviceSettingsPage(PINPUT_RECORD Ir)
 {
     static ULONG Line = 16;
-    MUIDisplayPage(DEVICE_SETTINGS_PAGE);
     /* Initialize the computer settings list */
     if (ComputerList == NULL)
@@ -1208,20 +1238,20 @@ DeviceSettingsPage(PINPUT_RECORD Ir)
         }
     }
-    MUIDisplayPage(DEVICE_SETTINGS_PAGE);
+    if (RepairUpdateFlag)
+        return SELECT_PARTITION_PAGE;
+    // if (IsUnattendedSetup)
+        // return SELECT_PARTITION_PAGE;
-    CONSOLE_SetTextXY(25, 11, GetListEntryText(GetCurrentListEntry((ComputerList))));
-    CONSOLE_SetTextXY(25, 12, GetListEntryText(GetCurrentListEntry((DisplayList))));
-    CONSOLE_SetTextXY(25, 13, GetListEntryText(GetCurrentListEntry((KeyboardList))));
-    CONSOLE_SetTextXY(25, 14, GetListEntryText(GetCurrentListEntry((LayoutList))));
+    MUIDisplayPage(DEVICE_SETTINGS_PAGE);
-    CONSOLE_InvertTextXY(24, Line, 48, 1);
+    CONSOLE_SetTextXY(25, 11, GetListEntryText(GetCurrentListEntry(ComputerList)));
+    CONSOLE_SetTextXY(25, 12, GetListEntryText(GetCurrentListEntry(DisplayList)));
+    CONSOLE_SetTextXY(25, 13, GetListEntryText(GetCurrentListEntry(KeyboardList)));
+    CONSOLE_SetTextXY(25, 14, GetListEntryText(GetCurrentListEntry(LayoutList)));
-    if (RepairUpdateFlag)
-    {
-        return SELECT_PARTITION_PAGE;
-    }
+    CONSOLE_InvertTextXY(24, Line, 48, 1);
     while (TRUE)
     {
@@ -1509,8 +1539,6 @@ SelectPartitionPage(PINPUT_RECORD Ir)
     PARTLIST_UI ListUi;
     ULONG Error;
-    MUIDisplayPage(SELECT_PARTITION_PAGE);
-
     if (PartitionList == NULL)
     {
         PartitionList = CreatePartitionList();
@@ -1530,6 +1558,8 @@ SelectPartitionPage(PINPUT_RECORD Ir)
         FormatState = Start;
     }
+    MUIDisplayPage(SELECT_PARTITION_PAGE);
+
     InitPartitionListUi(&ListUi, PartitionList,
                         2,
                         23,
@@ -3180,9 +3210,8 @@ CheckFileSystemPage(PINPUT_RECORD Ir)
 }
-static
-VOID
-BuildInstallPaths(PWCHAR InstallDir,
+static VOID
+BuildInstallPaths(PWSTR InstallDir,
                   PDISKENTRY DiskEntry,
                   PPARTENTRY PartEntry)
 {
@@ -4033,6 +4062,8 @@ RegistryPage(PINPUT_RECORD Ir)
     if (RepairUpdateFlag)
     {
+        // FIXME!
+        DPRINT1("FIXME: Updating / repairing the registry is NOT implemented
yet!\n");
         return SUCCESS_PAGE;
     }
@@ -4872,37 +4903,36 @@ RunUSetup(VOID)
     /* Hide the cursor */
     CONSOLE_SetCursorType(TRUE, FALSE);
-    Page = START_PAGE;
+    /* Global Initialization page */
+    CONSOLE_ClearScreen();
+    CONSOLE_Flush();
+    Page = SetupStartPage(&Ir);
+
     while (Page != REBOOT_PAGE && Page != RECOVERY_PAGE)
     {
         CONSOLE_ClearScreen();
         CONSOLE_Flush();
-        //CONSOLE_SetUnderlinedTextXY(4, 3, " ReactOS " KERNEL_VERSION_STR
" Setup ");
-        //CONSOLE_Flush();
+        // CONSOLE_SetUnderlinedTextXY(4, 3, " ReactOS " KERNEL_VERSION_STR
" Setup ");
+        // CONSOLE_Flush();
         switch (Page)
         {
-            /* Start page */
-            case START_PAGE:
-                Page = SetupStartPage(&Ir);
-                break;
-
             /* Language page */
             case LANGUAGE_PAGE:
                 Page = LanguagePage(&Ir);
                 break;
+            /* Welcome page */
+            case WELCOME_PAGE:
+                Page = WelcomePage(&Ir);
+                break;
+
             /* License page */
             case LICENSE_PAGE:
                 Page = LicensePage(&Ir);
                 break;
-            /* Intro page */
-            case INTRO_PAGE:
-                Page = IntroPage(&Ir);
-                break;
-
             /* Install pages */
             case INSTALL_INTRO_PAGE:
                 Page = InstallIntroPage(&Ir);
diff --git a/base/setup/usetup/usetup.h b/base/setup/usetup/usetup.h
index 97ac61a63e..2f548b57bc 100644
--- a/base/setup/usetup/usetup.h
+++ b/base/setup/usetup/usetup.h
@@ -102,17 +102,17 @@ extern BOOLEAN InfGetStringField(PINFCONTEXT Context,
 #define SetupGetMultiSzFieldW InfGetMultiSzField
 #define SetupGetStringFieldW InfGetStringField
-#ifndef _PAGE_NUMBER_DEFINED
-#define _PAGE_NUMBER_DEFINED
 typedef enum _PAGE_NUMBER
 {
-    START_PAGE,
     LANGUAGE_PAGE,
-    INTRO_PAGE,
+    WELCOME_PAGE,
     LICENSE_PAGE,
     INSTALL_INTRO_PAGE,
 //    SCSI_CONTROLLER_PAGE,
+//    OEM_DRIVER_PAGE,
+
+    REPAIR_INTRO_PAGE,
     DEVICE_SETTINGS_PAGE,
     COMPUTER_SETTINGS_PAGE,
@@ -140,15 +140,12 @@ typedef enum _PAGE_NUMBER
     BOOT_LOADER_HARDDISK_MBR_PAGE,
     BOOT_LOADER_HARDDISK_VBR_PAGE,
-    REPAIR_INTRO_PAGE,
-
     SUCCESS_PAGE,
     QUIT_PAGE,
     FLUSH_PAGE,
-    REBOOT_PAGE,               /* virtual page */
-    RECOVERY_PAGE,             /* virtual page */
+    REBOOT_PAGE,    /* Virtual page */
+    RECOVERY_PAGE,  /* Virtual page */
 } PAGE_NUMBER, *PPAGE_NUMBER;
-#endif
 #define POPUP_WAIT_NONE    0
 #define POPUP_WAIT_ANY_KEY 1