Prettify usetup a bit, show a warranty page before continuing
installation (not a license agreement, simply a message stating this is
a beta foss product with no warranty), make progressbars have a double
border and change the copy file dialog a bit. Also changed setupldr and
ntoskrnl to have a more unified text-mode look/appearance when
installing. The effect is really nice and the blue screen with gray
status-bar appears as soon as the CD boots and takes you all the way to
usetup without any breakages or black/blue/black/blue fades and
confusing messages. Also, fixed ntoskrnl not to break into KDBG if
/NODEBUG is set.
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/setupldr.c
Modified: trunk/reactos/boot/freeldr/freeldr/ui/ui.c
Modified: trunk/reactos/ntoskrnl/ex/init.c
Modified: trunk/reactos/ntoskrnl/io/driver.c
Modified: trunk/reactos/ntoskrnl/ldr/loader.c
Modified: trunk/reactos/subsys/system/usetup/format.c
Modified: trunk/reactos/subsys/system/usetup/progress.c
Modified: trunk/reactos/subsys/system/usetup/progress.h
Modified: trunk/reactos/subsys/system/usetup/usetup.c
_____
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
--- trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
2005-05-18 17:54:16 UTC (rev 15393)
+++ trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c
2005-05-18 19:08:00 UTC (rev 15394)
@@ -756,6 +756,16 @@
if (!FrLdrLoadDriver(szHalName, 10))
return;
+#if 0
+ /* Load bootvid */
+ strcpy(value, "INBV.DLL");
+ strcpy(szHalName, szBootPath);
+ strcat(szHalName, "SYSTEM32\\");
+ strcat(szHalName, value);
+
+ if (!FrLdrLoadDriver(szHalName, 10))
+ return;
+#endif
/*
* Load the System hive from disk
*/
_____
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/setupldr.c
--- trunk/reactos/boot/freeldr/freeldr/reactos/setupldr.c
2005-05-18 17:54:16 UTC (rev 15393)
+++ trunk/reactos/boot/freeldr/freeldr/reactos/setupldr.c
2005-05-18 19:08:00 UTC (rev 15394)
@@ -34,7 +34,7 @@
#include "registry.h"
-//#define USE_UI
+#define USE_UI
static BOOL
@@ -88,7 +88,7 @@
* Update the status bar with the current file
*/
#ifdef USE_UI
- sprintf(szBuffer, "Reading %s", szShortName);
+ sprintf(szBuffer, "Setup is loading files (%s)", szShortName);
UiDrawStatusText(szBuffer);
#else
printf("Reading %s\n", szShortName);
@@ -155,7 +155,7 @@
* Update the status bar with the current file
*/
#ifdef USE_UI
- sprintf(szBuffer, "Reading %s", szShortName);
+ sprintf(szBuffer, "Setup is loading files (%s)", szShortName);
UiDrawStatusText(szBuffer);
#else
printf("Reading %s\n", szShortName);
@@ -220,7 +220,7 @@
* Update the status bar with the current file
*/
#ifdef USE_UI
- sprintf(szBuffer, "Reading %s", szShortName);
+ sprintf(szBuffer, "Setup is loading files (%s)", szShortName);
UiDrawStatusText(szBuffer);
#else
printf("Reading %s\n", szShortName);
@@ -232,6 +232,7 @@
return(TRUE);
}
+BOOL SetupUiInitialize(VOID);
VOID RunLoader(VOID)
{
@@ -294,7 +295,7 @@
#endif
#ifdef USE_UI
- UiInitialize();
+ SetupUiInitialize();
UiDrawStatusText("");
#endif
_____
Modified: trunk/reactos/boot/freeldr/freeldr/ui/ui.c
--- trunk/reactos/boot/freeldr/freeldr/ui/ui.c 2005-05-18 17:54:16 UTC
(rev 15393)
+++ trunk/reactos/boot/freeldr/freeldr/ui/ui.c 2005-05-18 19:08:00 UTC
(rev 15394)
@@ -27,6 +27,7 @@
#include <inifile.h>
#include <version.h>
#include <video.h>
+#include <reactos/buildno.h>
ULONG UiScreenWidth = 80;
// Screen Width
ULONG UiScreenHeight = 25;
// Screen Height
@@ -197,7 +198,40 @@
UserInterfaceUp = TRUE;
DbgPrint((DPRINT_UI, "UiInitialize() returning TRUE.\n"));
+ return TRUE;
+}
+BOOL SetupUiInitialize(VOID)
+{
+
+ CHAR DisplayModeText[260];
+ ULONG Depth;
+
+
+ DisplayModeText[0] = '\0';
+
+
+ UiDisplayMode = MachVideoSetDisplayMode(DisplayModeText, TRUE);
+ MachVideoGetDisplaySize(&UiScreenWidth, &UiScreenHeight,
&Depth);
+
+ TuiInitialize();
+
+ // Draw the backdrop and fade it in if special effects are
enabled
+ TuiFillArea(0,
+ 0,
+ UiScreenWidth - 1,
+ UiScreenHeight - 2,
+ 0,
+ ATTR(UiBackdropFgColor, UiBackdropBgColor));
+
+ UiStatusBarBgColor = 7;
+ UserInterfaceUp = TRUE;
+
+ TuiDrawText(4, 1, "ReactOS " KERNEL_VERSION_STR " Setup",
ATTR(COLOR_GRAY, UiBackdropBgColor));
+ TuiDrawText(3, 2,
"\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC
D\xCD\xCD\xCD\xCD\xCD\xCD", ATTR(COLOR_GRAY, UiBackdropBgColor));
+
+ DbgPrint((DPRINT_UI, "UiInitialize() returning TRUE.\n"));
+
return TRUE;
}
_____
Modified: trunk/reactos/ntoskrnl/ex/init.c
--- trunk/reactos/ntoskrnl/ex/init.c 2005-05-18 17:54:16 UTC (rev
15393)
+++ trunk/reactos/ntoskrnl/ex/init.c 2005-05-18 19:08:00 UTC (rev
15394)
@@ -29,6 +29,7 @@
extern LIST_ENTRY KiProfileListHead;
extern LIST_ENTRY KiProfileSourceListHead;
extern KSPIN_LOCK KiProfileLock;
+BOOLEAN SetupMode = TRUE;
VOID PspPostInitSystemProcess(VOID);
@@ -258,7 +259,7 @@
inline
VOID
STDCALL
-ParseAndCacheLoadedModules(PBOOLEAN SetupBoot)
+ParseAndCacheLoadedModules(VOID)
{
ULONG i;
PCHAR Name;
@@ -294,7 +295,7 @@
} else if (!_stricmp(Name, "system") || !_stricmp(Name,
"system.hiv")) {
CachedModules[SystemRegistry] = &KeLoaderModules[i];
- *SetupBoot = FALSE;
+ SetupMode = FALSE;
} else if (!_stricmp(Name, "hardware") || !_stricmp(Name,
"hardware.hiv")) {
@@ -369,20 +370,54 @@
p1 = p2;
}
}
+
+VOID
+INIT_FUNCTION
+ExpDisplayNotice(VOID)
+{
+ CHAR str[50];
+
+ if (SetupMode)
+ {
+ HalDisplayString(
+ "\n\n\n ReactOS " KERNEL_VERSION_STR " Setup \n");
+ HalDisplayString(
+ "
\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD
\xCD\xCD\xCD");
+ HalDisplayString(
+ "\xCD\xCD\n");
+ return;
+ }
+
+ HalDisplayString("Starting ReactOS "KERNEL_VERSION_STR" (Build "
+ KERNEL_VERSION_BUILD_STR")\n");
+ HalDisplayString(RES_STR_LEGAL_COPYRIGHT);
+ HalDisplayString("\n\nReactOS is free software, covered by the GNU
General "
+ "Public License, and you\n");
+ HalDisplayString("are welcome to change it and/or distribute copies
of it "
+ "under certain\n");
+ HalDisplayString("conditions. There is absolutely no warranty for "
+ "ReactOS.\n\n");
+ /* Display number of Processors */
+ sprintf(str,
+ "Found %x system processor(s). [%lu MB Memory]\n",
+ (int)KeNumberProcessors,
+ (KeLoaderBlock.MemHigher + 1088)/ 1024);
+ HalDisplayString(str);
+
+}
+
VOID
INIT_FUNCTION
STDCALL
ExpInitializeExecutive(VOID)
{
- CHAR str[50];
UNICODE_STRING EventName;
HANDLE InitDoneEventHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
BOOLEAN NoGuiBoot = FALSE;
BOOLEAN BootLog = FALSE;
ULONG MaxMem = 0;
- BOOLEAN SetupBoot = TRUE;
BOOLEAN ForceAcpiDisable = FALSE;
LARGE_INTEGER Timeout;
HANDLE ProcessHandle;
@@ -413,7 +448,7 @@
MaxMem > 8 ? MaxMem : 4096);
/* Parse the Loaded Modules (by FreeLoader) and cache the ones
we'll need */
- ParseAndCacheLoadedModules(&SetupBoot);
+ ParseAndCacheLoadedModules();
/* Initialize the kernel debugger parameters */
KdInitSystem(0, (PLOADER_PARAMETER_BLOCK)&KeLoaderBlock);
@@ -511,28 +546,13 @@
/* Report all resources used by hal */
HalReportResourceUsage();
-
+
/* Clear the screen to blue */
HalInitSystem(2, (PLOADER_PARAMETER_BLOCK)&KeLoaderBlock);
/* Display version number and copyright/warranty message */
- HalDisplayString("Starting ReactOS "KERNEL_VERSION_STR" (Build "
- KERNEL_VERSION_BUILD_STR")\n");
- HalDisplayString(RES_STR_LEGAL_COPYRIGHT);
- HalDisplayString("\n\nReactOS is free software, covered by the GNU
General "
- "Public License, and you\n");
- HalDisplayString("are welcome to change it and/or distribute copies
of it "
- "under certain\n");
- HalDisplayString("conditions. There is absolutely no warranty for "
- "ReactOS.\n\n");
+ ExpDisplayNotice();
- /* Display number of Processors */
- sprintf(str,
- "Found %d system processor(s). [%lu MB Memory]\n",
- KeNumberProcessors,
- (KeLoaderBlock.MemHigher + 1088)/ 1024);
- HalDisplayString(str);
-
/* Call KD Providers at Phase 2 */
KdInitSystem(2, (PLOADER_PARAMETER_BLOCK)&KeLoaderBlock);
@@ -540,13 +560,13 @@
RtlpInitNls();
/* Import and Load Registry Hives */
- CmInitHives(SetupBoot);
+ CmInitHives(SetupMode);
/* Initialize the time zone information from the registry */
ExpInitTimeZoneInfo();
- /* Enter the kernel debugger before starting up the boot drivers */
- KdbEnter();
+ /* Enter the kernel debugger before starting up the boot drivers */
+ if (KdDebuggerEnabled) KdbEnter();
/* Setup Drivers and Root Device Node */
IoInit2(BootLog);
_____
Modified: trunk/reactos/ntoskrnl/io/driver.c
--- trunk/reactos/ntoskrnl/io/driver.c 2005-05-18 17:54:16 UTC (rev
15393)
+++ trunk/reactos/ntoskrnl/io/driver.c 2005-05-18 19:08:00 UTC (rev
15394)
@@ -18,6 +18,7 @@
/* ke/main.c */
extern LOADER_PARAMETER_BLOCK EXPORTED KeLoaderBlock;
extern ULONG KeTickCount;
+extern BOOLEAN SetupMode;
NTSTATUS
LdrProcessModule(PVOID ModuleLoadBase,
@@ -272,12 +273,23 @@
* Display 'Loading XXX...' message.
*/
-VOID FASTCALL
-IopDisplayLoadingMessage(PWCHAR ServiceName)
+VOID
+FASTCALL
+INIT_FUNCTION
+IopDisplayLoadingMessage(PVOID ServiceName,
+ BOOLEAN Unicode)
{
- CHAR TextBuffer[256];
- sprintf(TextBuffer, "Loading %S...\n", ServiceName);
- HalDisplayString(TextBuffer);
+ if (SetupMode) return;
+ CHAR TextBuffer[256];
+ if (Unicode)
+ {
+ sprintf(TextBuffer, "Loading %S...\n", (PWCHAR)ServiceName);
+ }
+ else
+ {
+ sprintf(TextBuffer, "Loading %s...\n", (PCHAR)ServiceName);
+ }
+ HalDisplayString(TextBuffer);
}
/*
@@ -390,9 +402,9 @@
DPRINT("RtlQueryRegistryValues() failed (Status %x)\n", Status);
return Status;
}
+
+ IopDisplayLoadingMessage(ServiceName->Buffer, TRUE);
- IopDisplayLoadingMessage(ServiceName->Buffer);
-
/*
* Normalize the image path for all later processing.
*/
@@ -1122,7 +1134,6 @@
PDEVICE_NODE DeviceNode;
PDRIVER_OBJECT DriverObject;
NTSTATUS Status;
- CHAR TextBuffer[256];
PCHAR FileNameWithoutPath;
LPWSTR FileExtension;
@@ -1130,12 +1141,10 @@
FileName, ModuleLoadBase, ModuleLength);
/*
- * Display 'Initializing XXX...' message
+ * Display 'Loading XXX...' message
*/
+ IopDisplayLoadingMessage(FileName, FALSE);
- sprintf(TextBuffer, "Initializing %s...\n", FileName);
- HalDisplayString(TextBuffer);
-
/*
* Determine the right device object
*/
@@ -1307,7 +1316,7 @@
{
NTSTATUS Status = STATUS_UNSUCCESSFUL;
- IopDisplayLoadingMessage(Service->ServiceName.Buffer);
+ IopDisplayLoadingMessage(Service->ServiceName.Buffer, TRUE);
Status = ZwLoadDriver(&Service->RegistryPath);
IopBootLog(&Service->ImagePath, NT_SUCCESS(Status) ? TRUE : FALSE);
if (!NT_SUCCESS(Status))
_____
Modified: trunk/reactos/ntoskrnl/ldr/loader.c
--- trunk/reactos/ntoskrnl/ldr/loader.c 2005-05-18 17:54:16 UTC (rev
15393)
+++ trunk/reactos/ntoskrnl/ldr/loader.c 2005-05-18 19:08:00 UTC (rev
15394)
@@ -792,7 +792,7 @@
CPRINT("Failed to allocate a virtual section for driver\n");
return STATUS_UNSUCCESSFUL;
}
- DbgPrint("DriverBase for %wZ: %x\n", FileName, DriverBase);
+ DPRINT("DriverBase for %wZ: %x\n", FileName, DriverBase);
/* Copy headers over */
memcpy(DriverBase, ModuleLoadBase,
PENtHeaders->OptionalHeader.SizeOfHeaders);
_____
Modified: trunk/reactos/subsys/system/usetup/format.c
--- trunk/reactos/subsys/system/usetup/format.c 2005-05-18 17:54:16 UTC
(rev 15393)
+++ trunk/reactos/subsys/system/usetup/format.c 2005-05-18 19:08:00 UTC
(rev 15394)
@@ -107,7 +107,8 @@
ProgressBar = CreateProgressBar (6,
yScreen - 14,
xScreen - 7,
- yScreen - 10);
+ yScreen - 10,
+ "Setup is formatting your disk");
ProgressSetStepCount (ProgressBar, 100);
_____
Modified: trunk/reactos/subsys/system/usetup/progress.c
--- trunk/reactos/subsys/system/usetup/progress.c 2005-05-18
17:54:16 UTC (rev 15393)
+++ trunk/reactos/subsys/system/usetup/progress.c 2005-05-18
19:08:00 UTC (rev 15394)
@@ -84,13 +84,86 @@
&Written);
}
+static VOID
+DrawThickBorder(PPROGRESSBAR Bar)
+{
+ COORD coPos;
+ ULONG Written;
+ SHORT i;
+ /* draw upper left corner */
+ coPos.X = Bar->Left;
+ coPos.Y = Bar->Top + 1;
+ FillConsoleOutputCharacter(0xC9, // '+',
+ 1,
+ coPos,
+ &Written);
+
+ /* draw upper edge */
+ coPos.X = Bar->Left + 1;
+ coPos.Y = Bar->Top + 1;
+ FillConsoleOutputCharacter(0xCD, // '-',
+ Bar->Right - Bar->Left - 1,
+ coPos,
+ &Written);
+
+ /* draw upper right corner */
+ coPos.X = Bar->Right;
+ coPos.Y = Bar->Top + 1;
+ FillConsoleOutputCharacter(0xBB, // '+',
+ 1,
+ coPos,
+ &Written);
+
+ /* draw left and right edge */
+ for (i = Bar->Top + 2; i < Bar->Bottom; i++)
+ {
+ coPos.X = Bar->Left;
+ coPos.Y = i;
+ FillConsoleOutputCharacter(0xBA, // '|',
+ 1,
+ coPos,
+ &Written);
+
+ coPos.X = Bar->Right;
+ FillConsoleOutputCharacter(0xBA, //'|',
+ 1,
+ coPos,
+ &Written);
+ }
+
+ /* draw lower left corner */
+ coPos.X = Bar->Left;
+ coPos.Y = Bar->Bottom;
+ FillConsoleOutputCharacter(0xC8, // '+',
+ 1,
+ coPos,
+ &Written);
+
+ /* draw lower edge */
+ coPos.X = Bar->Left + 1;
+ coPos.Y = Bar->Bottom;
+ FillConsoleOutputCharacter(0xCD, // '-',
+ Bar->Right - Bar->Left - 1,
+ coPos,
+ &Written);
+
+ /* draw lower right corner */
+ coPos.X = Bar->Right;
+ coPos.Y = Bar->Bottom;
+ FillConsoleOutputCharacter(0xBC, // '+',
+ 1,
+ coPos,
+ &Written);
+}
+
static VOID
DrawProgressBar(PPROGRESSBAR Bar)
{
CHAR TextBuffer[8];
COORD coPos;
ULONG Written;
+ PROGRESSBAR BarBorder = *Bar;
/* Print percentage */
sprintf(TextBuffer, "%-3lu%%", Bar->Percent);
@@ -101,7 +174,18 @@
4,
coPos);
+ /* Draw the progress bar border */
DrawBorder(Bar);
+
+ /* Write Text Associated with Bar */
+ SetTextXY(10, 24, Bar->Text);
+
+ /* Draw the progress bar "border" border */
+ BarBorder.Top -= 5;
+ BarBorder.Bottom += 2;
+ BarBorder.Right += 5;
+ BarBorder.Left -= 5;
+ DrawThickBorder(&BarBorder);
/* Draw the bar */
coPos.X = Bar->Left + 1;
@@ -126,7 +210,8 @@
CreateProgressBar(SHORT Left,
SHORT Top,
SHORT Right,
- SHORT Bottom)
+ SHORT Bottom,
+ char* Text)
{
PPROGRESSBAR Bar;
@@ -140,6 +225,7 @@
Bar->Top = Top;
Bar->Right = Right;
Bar->Bottom = Bottom;
+ Bar->Text = Text;
Bar->Width = Bar->Right - Bar->Left + 1;
_____
Modified: trunk/reactos/subsys/system/usetup/progress.h
--- trunk/reactos/subsys/system/usetup/progress.h 2005-05-18
17:54:16 UTC (rev 15393)
+++ trunk/reactos/subsys/system/usetup/progress.h 2005-05-18
19:08:00 UTC (rev 15394)
@@ -42,6 +42,8 @@
ULONG StepCount;
ULONG CurrentStep;
+
+ CHAR *Text;
} PROGRESSBAR, *PPROGRESSBAR;
/* FUNCTIONS
****************************************************************/
@@ -50,7 +52,8 @@
CreateProgressBar(SHORT Left,
SHORT Top,
SHORT Right,
- SHORT Bottom);
+ SHORT Bottom,
+ char* Text);
VOID
DestroyProgressBar(PPROGRESSBAR Bar);
_____
Modified: trunk/reactos/subsys/system/usetup/usetup.c
--- trunk/reactos/subsys/system/usetup/usetup.c 2005-05-18 17:54:16 UTC
(rev 15393)
+++ trunk/reactos/subsys/system/usetup/usetup.c 2005-05-18 19:08:00 UTC
(rev 15394)
@@ -59,6 +59,7 @@
START_PAGE,
INTRO_PAGE,
LICENSE_PAGE,
+ WARNING_PAGE,
INSTALL_INTRO_PAGE,
// SCSI_CONTROLLER_PAGE,
@@ -88,8 +89,6 @@
REPAIR_INTRO_PAGE,
- EMERGENCY_INTRO_PAGE,
-
SUCCESS_PAGE,
QUIT_PAGE,
FLUSH_PAGE,
@@ -710,12 +709,11 @@
SetTextXY(6, 12, "computer and prepares the second part of the
setup.");
SetTextXY(8, 15, "\x07 Press ENTER to install ReactOS.");
- SetTextXY(8, 17, "\x07 Press L to view the licensing terms for
ReactOS.");
- SetTextXY(8, 19, "\x07 Press E to start the emergency console.");
- SetTextXY(8, 21, "\x07 Press R to repair ReactOS.");
- SetTextXY(8, 23, "\x07 Press F3 to quit without installing
ReactOS.");
+ SetTextXY(8, 17, "\x07 Press R to repair ReactOS.");
+ SetTextXY(8, 19, "\x07 Press L to view the ReactOS Licensing Terms
and Conditions");
+ SetTextXY(8, 21, "\x07 Press F3 to quit without installing
ReactOS.");
- SetStatusText(" ENTER = Continue F3 = Quit");
+ SetStatusText(" ENTER = Continue R = Repair F3 = Quit");
if (IsUnattendedSetup)
{
@@ -735,20 +733,19 @@
}
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
{
- return INSTALL_INTRO_PAGE;
+ return WARNING_PAGE;
+ break;
}
- else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'L') /* L
*/
- {
- return LICENSE_PAGE;
- }
- else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'E') /* E
*/
- {
- return EMERGENCY_INTRO_PAGE;
- }
else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'R') /* R
*/
{
return REPAIR_INTRO_PAGE;
+ break;
}
+ else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'L') /* R
*/
+ {
+ return LICENSE_PAGE;
+ break;
+ }
}
return INTRO_PAGE;
@@ -779,61 +776,62 @@
SetTextXY(8, 23, "GNU General Public License with ReactOS please
visit");
SetHighlightedTextXY(8, 25,
"http://www.gnu.org/licenses/licenses.html");
- SetStatusText("ENTER = Continue F3 = Quit");
+ SetStatusText(" ENTER = Return");
while (TRUE)
{
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 INTRO_PAGE;
- }
+ if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
+ {
+ return INTRO_PAGE;
+ break;
+ }
}
return LICENSE_PAGE;
}
+/*
+ * Warning Page
+ * RETURNS
+ * Continues to setup
+ */
static PAGE_NUMBER
-EmergencyIntroPage(PINPUT_RECORD Ir)
+WarningPage(PINPUT_RECORD Ir)
{
- SetTextXY(6, 8, "ReactOS Setup is in an early development phase. It
does not yet");
- SetTextXY(6, 9, "support all the functions of a fully usable setup
application.");
+ SetUnderlinedTextXY(4, 3, " ReactOS " KERNEL_VERSION_STR " Warranty
Statement");
+ SetHighlightedTextXY(6, 8, "Warranty:");
- SetTextXY(6, 12, "The emergency console is not implemented yet.");
+ SetTextXY(8, 11, "This is free software; see the source for copying
conditions.");
+ SetTextXY(8, 12, "There is NO warranty; not even for MERCHANTABILITY
or");
+ SetTextXY(8, 13, "FITNESS FOR A PARTICULAR PURPOSE");
- SetTextXY(8, 15, "\x07 Press ESC to return to the main page.");
+ SetTextXY(8, 15, "For more information on ReactOS, please visit:");
+ SetHighlightedTextXY(8, 16, "http://www.reactos.org");
- SetTextXY(8, 17, "\x07 Press ENTER to reboot your computer.");
+ SetStatusText(" F8 = Continue ESC = Exit");
- SetStatusText(" ESC = Main page ENTER = Reboot");
-
- while(TRUE)
+ while (TRUE)
{
ConInKey(Ir);
- if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
+ if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
+ (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F8)) /* F8 */
{
- return REBOOT_PAGE;
+ return INSTALL_INTRO_PAGE;
+ break;
}
else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) /* ESC
*/
{
- return INTRO_PAGE;
+ return QUIT_PAGE;
}
}
- return REPAIR_INTRO_PAGE;
+ return LICENSE_PAGE;
}
-
static PAGE_NUMBER
RepairIntroPage(PINPUT_RECORD Ir)
{
@@ -842,9 +840,11 @@
SetTextXY(6, 12, "The repair functions are not implemented yet.");
- SetTextXY(8, 15, "\x07 Press ESC to return to the main page.");
+ SetTextXY(8, 15, "\x07 Press R for the Recovery Console.");
+
+ SetTextXY(8, 17, "\x07 Press ESC to return to the main page.");
- SetTextXY(8, 17, "\x07 Press ENTER to reboot your computer.");
+ SetTextXY(8, 19, "\x07 Press ENTER to reboot your computer.");
SetStatusText(" ESC = Main page ENTER = Reboot");
@@ -856,6 +856,10 @@
{
return REBOOT_PAGE;
}
+ else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'R') /* R
*/
+ {
+ return INTRO_PAGE;
+ }
else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) /* ESC
*/
{
@@ -870,6 +874,8 @@
static PAGE_NUMBER
InstallIntroPage(PINPUT_RECORD Ir)
{
+ SetUnderlinedTextXY(4, 3, " ReactOS " KERNEL_VERSION_STR " Setup
");
+
SetTextXY(6, 8, "ReactOS Setup is in an early development phase. It
does not yet");
SetTextXY(6, 9, "support all the functions of a fully usable setup
application.");
@@ -3140,11 +3146,7 @@
case SPFILENOTIFY_STARTCOPY:
/* Display copy message */
- PrintTextXYN(6, 16, 60, "Copying file: %S", (PWSTR)Param1);
-
- PrintTextXYN(6, 18, 60, "File %lu of %lu",
- CopyContext->CompletedOperations + 1,
- CopyContext->TotalOperations);
+ SetStatusText("
\xB3 Copying file: %S", (PWSTR)Param1);
break;
case SPFILENOTIFY_ENDCOPY:
@@ -3164,18 +3166,20 @@
SHORT xScreen;
SHORT yScreen;
- SetStatusText(" Please wait...");
+ SetStatusText("
\xB3 Please wait... ");
- SetTextXY(6, 8, "Copying files");
+ SetTextXY(11, 12, "Please wait while ReactOS Setup copies files to
your ReactOS");
+ SetTextXY(30, 13, "installation folder.");
+ SetTextXY(20, 14, "This may take several minutes to complete.");
- GetScreenSize(&xScreen, &yScreen);
-
+ GetScreenSize(&xScreen, &yScreen);
CopyContext.TotalOperations = 0;
CopyContext.CompletedOperations = 0;
- CopyContext.ProgressBar = CreateProgressBar(6,
- yScreen - 14,
- xScreen - 7,
- yScreen - 10);
+ CopyContext.ProgressBar = CreateProgressBar(13,
+ 26,
+ xScreen - 13,
+ yScreen - 20,
+ "Setup is copying files...");
SetupCommitFileQueue(SetupFileQueue,
DestinationRootPath.Buffer,
@@ -3811,6 +3815,11 @@
case LICENSE_PAGE:
Page = LicensePage(&Ir);
break;
+
+ /* Warning page */
+ case WARNING_PAGE:
+ Page = WarningPage(&Ir);
+ break;
/* Intro page */
case INTRO_PAGE:
@@ -3916,13 +3925,6 @@
Page = RepairIntroPage(&Ir);
break;
-
- /* Emergency pages */
- case EMERGENCY_INTRO_PAGE:
- Page = EmergencyIntroPage(&Ir);
- break;
-
-
case SUCCESS_PAGE:
Page = SuccessPage(&Ir);
break;