- Use 'MS Shell Dlg' font in all dialogs.
authorEric Kohl <eric.kohl@reactos.org>
Tue, 3 Aug 2004 13:43:00 +0000 (13:43 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Tue, 3 Aug 2004 13:43:00 +0000 (13:43 +0000)
- Fix some typos in german dialogs.
- Add locale page dialog.
- Store owner name, owner organization and computer name in the registry.

svn path=/trunk/; revision=10366

reactos/lib/syssetup/install.c
reactos/lib/syssetup/resource.h
reactos/lib/syssetup/syssetup.rc
reactos/lib/syssetup/syssetup_Cz.rc
reactos/lib/syssetup/syssetup_De.rc
reactos/lib/syssetup/syssetup_En.rc
reactos/lib/syssetup/wizard.c

index b0ef381..faf0632 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: install.c,v 1.14 2004/07/19 01:33:14 kuehng Exp $
+/* $Id: install.c,v 1.15 2004/08/03 13:43:00 ekohl Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS system libraries
 #include "globals.h"
 #include "resource.h"
 
-// #define NO_GUI
 #define VMWINST
 
+VOID WINAPI CreateCmdLink(VOID);
+
 
 /* GLOBALS ******************************************************************/
 
@@ -63,15 +64,11 @@ DebugPrint(char* fmt,...)
   vsprintf(buffer, fmt, ap);
   va_end(ap);
 
-#ifdef NO_GUI
-  OutputDebugStringA(buffer);
-#else
-  strcat (buffer, "\nRebooting now!");
-  MessageBoxA (NULL,
-              buffer,
-              "ReactOS Setup",
-              MB_OK);
-#endif
+  strcat(buffer, "\nRebooting now!");
+  MessageBoxA(NULL,
+             buffer,
+             "ReactOS Setup",
+             MB_OK);
 }
 
 
@@ -250,38 +247,48 @@ CreateTempDir(LPCWSTR VarName)
   RegCloseKey (hKey);
 }
 
-BOOL ProcessSysSetupInf(void)
-{
 #define SECTIONBUF_SIZE 4096
-       TCHAR *pBuf2;
-       TCHAR pBuf[SECTIONBUF_SIZE];
-       
-       SetLastError(0);
-
-       DWORD dwBufSize = GetPrivateProfileSection(_T("DeviceInfsToInstall"),pBuf,SECTIONBUF_SIZE,_T("Inf\\SYSSETUP.INF"));
-       
-       // fix this first...
-       if(GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
-               return TRUE;
-
-       if(dwBufSize == SECTIONBUF_SIZE-2)
-               return FALSE;
-       if(!dwBufSize)
-               return FALSE;
-       pBuf2=pBuf;
-       while(*pBuf2)
-       {
-               OutputDebugString(_T("Calling Class Installer for "));
-               OutputDebugString(pBuf2);
-               OutputDebugString(_T("\r\n"));
-
-//             Currently unsupported
-//             if(!SetupDiInstallClass(NULL,pBuf2,DI_QUIETINSTALL,NULL))
-//                     return FALSE;
-               pBuf2+=_tcslen(pBuf2)+1;
-       }
 
-       return TRUE;
+BOOL
+ProcessSysSetupInf(VOID)
+{
+  LPTSTR pBuf2;
+  TCHAR szBuf[SECTIONBUF_SIZE];
+  DWORD dwBufSize;
+
+  SetLastError(0);
+
+  dwBufSize = GetPrivateProfileSection(_T("DeviceInfsToInstall"),
+                                      szBuf,
+                                      SECTIONBUF_SIZE,
+                                      _T("Inf\\SYSSETUP.INF"));
+
+  /* fix this first... */
+  if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+    return TRUE;
+
+  if (dwBufSize == SECTIONBUF_SIZE-2)
+    return FALSE;
+
+  if (!dwBufSize)
+    return FALSE;
+
+  pBuf2 = szBuf;
+  while (*pBuf2)
+  {
+    OutputDebugString(_T("Calling Class Installer for "));
+    OutputDebugString(pBuf2);
+    OutputDebugString(_T("\r\n"));
+
+#if 0
+    /* FIXME: Currently unsupported */
+    if (!SetupDiInstallClass(NULL, pBuf2, DI_QUIETINSTALL, NULL))
+      return FALSE;
+#endif
+    pBuf2 += _tcslen(pBuf2) + 1;
+  }
+
+  return TRUE;
 }
 
 
@@ -385,9 +392,8 @@ InstallReactOS (HINSTANCE hInstance)
       DebugPrint("ProcessSysSetupInf() failed!\n");
          return 0;
   }
-#if 1
-  InstallWizard ();
-#endif
+
+  InstallWizard();
 
 #ifdef VMWINST
   RunVMWInstall ();
@@ -401,11 +407,13 @@ InstallReactOS (HINSTANCE hInstance)
   return 0;
 }
 
+
 /*
  * @unimplemented
  */
-DWORD STDCALL SetupChangeFontSize(HANDLE HWindow,
-                                  LPCWSTR lpszFontSize)
+DWORD STDCALL
+SetupChangeFontSize(HANDLE hWnd,
+                    LPCWSTR lpszFontSize)
 {
-  return(FALSE);
+  return FALSE;
 }
index 616a6e9..9a896bf 100644 (file)
@@ -19,6 +19,9 @@
 #ifndef RESOURCE_H
 #define RESOURCE_H
 
+#define IDB_WATERMARK                  100
+#define IDB_HEADER                     101
+
 #define IDC_STATIC                     -1
 
 #define IDD_WELCOMEPAGE                        1000
 #define IDC_ADMINPASSWORD1             1006
 #define IDC_ADMINPASSWORD2             1007
 
+#define IDD_LOCALEPAGE                 1008
+#define IDC_LOCALETEXT                 1009
+#define IDC_CUSTOMLOCALE               1010
+#define IDC_LAYOUTTEXT                 1011
+#define IDC_CUSTOMLAYOUT               1012
 
 #define IDD_FINISHPAGE                 1050
 
index 1d50951..7e5f379 100644 (file)
@@ -37,6 +37,12 @@ BEGIN
     END
 END
 
+
+/* Bitmaps */
+IDB_WATERMARK BITMAP "res/watermark.bmp"
+IDB_HEADER    BITMAP "res/header.bmp"
+
+
 /*
  * Everything specific to any language goes in one of the specific
  * files. Note that you can and may override resources which also have
index 434bf4c..ee2898b 100644 (file)
@@ -21,7 +21,7 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
 IDD_WELCOMEPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Welcome to the ReactOS Setup Wizard.", IDC_STATIC, 115, 9, 189, 31
     LTEXT "This wizard installs ReactOS on your computer. The wizard "\
@@ -34,7 +34,7 @@ END
 IDD_OWNERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Type your full name and the name of your company or organization.",
           IDC_STATIC, 54, 7, 242, 21
@@ -48,7 +48,7 @@ END
 IDD_COMPUTERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Type a name for your computer that is 63 characters or less. "\
           "If you are on a network, your computer name must be unique.",
@@ -67,10 +67,31 @@ BEGIN
 END
 
 
+IDD_LOCALEPAGE DIALOG DISCARDABLE  0, 0, 317, 143
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "ReactOS Setup"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "The system locale should match the language of the applications "\
+          "you want to use. The user locale controls how numbers, "\
+          "currencies, and dates appear.", IDC_STATIC, 53, 7, 253, 20
+    LTEXT "<locale text>", IDC_LOCALETEXT, 53, 29, 250, 16
+    LTEXT "To change system or user locale settings, click Customize.",
+          IDC_STATIC, 53, 60, 184, 8
+    PUSHBUTTON "&Customize...", IDC_CUSTOMLOCALE, 245, 57, 50, 14
+    LTEXT "The keyboard layout controls the characters that appear when you type.",
+          IDC_STATIC, 53, 86, 253, 8
+    LTEXT "<layout text>", IDC_LAYOUTTEXT, 53, 100, 250, 16
+    LTEXT "To change the keyboard layout, click Customize.",
+          IDC_STATIC, 53, 126, 184, 8
+    PUSHBUTTON "C&ustomize...", IDC_CUSTOMLAYOUT, 245, 122, 50, 14
+END
+
+
 IDD_FINISHPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Completing ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Completing the ReactOS Setup Wizard",IDC_STATIC,115,9,195,37
     LTEXT "You have successfully completed ReactOS Setup.\n\n" \
index 250ba5f..f253c8e 100644 (file)
@@ -23,20 +23,20 @@ LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
 IDD_WELCOMEPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Willkommen zu den Setup-Assistent von ReactOS.", IDC_STATIC, 115, 9, 189, 31
-    LTEXT "Dieser Assistent wird ReactOS auf Ihren Computer installieren. "\
-          "Der Assistent benötigt ein paar Informationenn um ReactOS "\
+    LTEXT "Dieser Assistent wird ReactOS auf Ihrem Computer installieren. "\
+          "Der Assistent benötigt ein paar Informationen um ReactOS "\
           "zu installieren.", IDC_STATIC, 115, 50, 189, 100
-    LTEXT "Klicken Sie auf Weiter um forzufahren.", IDC_STATIC, 115, 160, 189, 31
+    LTEXT "Klicken Sie auf Weiter um fortzufahren.", IDC_STATIC, 115, 160, 189, 31
 END
 
 
 IDD_OWNERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Geben Sie ihren Namen und ihre Firma oder Organization ein.",
           IDC_STATIC, 54, 7, 242, 21
@@ -50,17 +50,17 @@ END
 IDD_COMPUTERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Geben sie einen Computernamen ein, der höchstens 63 Zeichen lang ist. "\
-          "Wenn Sie um Netzwerk sind muss dieser Name einmalig sein.",
+          "Wenn Sie im Netzwerk sind muss dieser Name einmalig sein.",
           IDC_STATIC, 54, 7, 250, 24
     LTEXT "&Computername:", IDC_STATIC, 54, 38, 75, 8
     EDITTEXT IDC_COMPUTERNAME, 132, 35, 163, 14, WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | ES_UPPERCASE
-    LTEXT "Das Setup wird einen Administratorkonto erstellen. "\
-          "Benutzen Sie ihn, wenn Sie vollen Zugriff auf Ihren Computer benötigen .",
+    LTEXT "Das Setup wird ein Administratorkonto erstellen. "\
+          "Benutzen Sie es, wenn Sie vollen Zugriff auf Ihren Computer benötigen.",
           IDC_STATIC, 54, 57, 250, 25
-    LTEXT "Geben Sie ein Passwort für das Administratorkonto ein, das höchstens 14 Zeichen lang ist",
+    LTEXT "Geben Sie ein Passwort für das Administratorkonto ein, das höchstens 14 Zeichen lang ist.",
           IDC_STATIC, 54, 87, 250, 8
     LTEXT "&Administrator Passwort:", IDC_STATIC, 54, 104, 75, 8
     EDITTEXT IDC_ADMINPASSWORD1, 132, 101, 172, 14, WS_VISIBLE | WS_TABSTOP | ES_PASSWORD
@@ -69,15 +69,36 @@ BEGIN
 END
 
 
+IDD_LOCALEPAGE DIALOG DISCARDABLE  0, 0, 317, 143
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "ReactOS Setup"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "The system locale should match the language of the applications "\
+          "you want to use. The user locale controls how numbers, "\
+          "currencies, and dates appear.", IDC_STATIC, 53, 7, 253, 20
+    LTEXT "<locale text>", IDC_LOCALETEXT, 53, 29, 250, 16
+    LTEXT "To change system or user locale settings, click Customize.",
+          IDC_STATIC, 53, 60, 184, 8
+    PUSHBUTTON "&Customize...", IDC_CUSTOMLOCALE, 245, 57, 50, 14
+    LTEXT "The keyboard layout controls the characters that appear when you type.",
+          IDC_STATIC, 53, 86, 253, 8
+    LTEXT "<layout text>", IDC_LAYOUTTEXT, 53, 100, 250, 16
+    LTEXT "To change the keyboard layout, click Customize.",
+          IDC_STATIC, 53, 126, 184, 8
+    PUSHBUTTON "C&ustomize...", IDC_CUSTOMLAYOUT, 245, 122, 50, 14
+END
+
+
 IDD_FINISHPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Fertigstellung des ReactOS Setups"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Fertigstellung des ReactOS Setup Assistenten",IDC_STATIC,115,9,195,37
     LTEXT "Das ReactOS Setup wurde erfolgreich fertiggestellt.\n\n" \
           "Wenn Sie auf Fertig klicken, wird der Computer neu gestartet.", IDC_STATIC, 115, 58, 195, 100
-    LTEXT "Entfernen Sie die CD wenn vorhanden. Danach klicken Sie "\
+    LTEXT "Entfernen Sie die CD, wenn vorhanden. Danach klicken Sie "\
           "auf Fertig, um den Computer neu zu starten.", IDC_STATIC, 115, 160, 195, 31
 END
 
@@ -89,8 +110,8 @@ FONT 8, "MS Shell Dlg"
 BEGIN
    LTEXT "Die Installation von ReactOS wurde erfolgreich fertiggestellt.", IDC_STATIC, 13, 12, 212, 16
    LTEXT "Um fortzufahren muss Ihr Computer neu gesratet werden. "\
-         "Der Computer wird in 15 Minuten automatisch neu gestartet oder wenn Sie auch den "\
-         "Neustart Button klicken.", IDC_STATIC, 13, 33, 212, 32
+         "Der Computer wird in 15 Minuten automatisch neu gestartet oder wenn Sie auf "\
+         "Neustart klicken.", IDC_STATIC, 13, 33, 212, 32
 /*   GROUPBOX "", -1, 7, 3, 231, 106 */
    CONTROL "", IDC_RESTART_PROGRESS, "msctls_progress32", PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 13, 70, 212, 8 
    PUSHBUTTON "&Neustart", IDOK, 98, 87, 50, 14
index 379470b..45049ff 100644 (file)
@@ -23,7 +23,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
 IDD_WELCOMEPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Welcome to the ReactOS Setup Wizard.", IDC_STATIC, 115, 9, 189, 31
     LTEXT "This wizard installs ReactOS on your computer. The wizard "\
@@ -36,7 +36,7 @@ END
 IDD_OWNERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Type your full name and the name of your company or organization.",
           IDC_STATIC, 54, 7, 242, 21
@@ -50,7 +50,7 @@ END
 IDD_COMPUTERPAGE DIALOG DISCARDABLE  0, 0, 317, 143
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Type a name for your computer that is 63 characters or less. "\
           "If you are on a network, your computer name must be unique.",
@@ -69,10 +69,31 @@ BEGIN
 END
 
 
+IDD_LOCALEPAGE DIALOG DISCARDABLE  0, 0, 317, 143
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "ReactOS Setup"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "The system locale should match the language of the applications "\
+          "you want to use. The user locale controls how numbers, "\
+          "currencies, and dates appear.", IDC_STATIC, 53, 7, 253, 20
+    LTEXT "<locale text>", IDC_LOCALETEXT, 53, 29, 250, 16
+    LTEXT "To change system or user locale settings, click Customize.",
+          IDC_STATIC, 53, 60, 184, 8
+    PUSHBUTTON "&Customize...", IDC_CUSTOMLOCALE, 245, 57, 50, 14
+    LTEXT "The keyboard layout controls the characters that appear when you type.",
+          IDC_STATIC, 53, 86, 253, 8
+    LTEXT "<layout text>", IDC_LAYOUTTEXT, 53, 100, 250, 16
+    LTEXT "To change the keyboard layout, click Customize.",
+          IDC_STATIC, 53, 126, 184, 8
+    PUSHBUTTON "C&ustomize...", IDC_CUSTOMLAYOUT, 245, 122, 50, 14
+END
+
+
 IDD_FINISHPAGE DIALOG DISCARDABLE  0, 0, 317, 193
 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Completing ReactOS Setup"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
 BEGIN
     LTEXT "Completing the ReactOS Setup Wizard",IDC_STATIC,115,9,195,37
     LTEXT "You have successfully completed ReactOS Setup.\n\n" \
index bab00a7..677b934 100644 (file)
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: wizard.c,v 1.4 2004/06/17 21:23:50 kuehng Exp $
+/* $Id: wizard.c,v 1.5 2004/08/03 13:43:00 ekohl Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS system libraries
  * PURPOSE:           System setup
  * FILE:              lib/syssetup/wizard.c
- * PROGRAMER:         Eric Kohl (ekohl@rz-online.de)
+ * PROGRAMER:         Eric Kohl
  */
 
 /* INCLUDES *****************************************************************/
@@ -125,37 +125,33 @@ WelcomeDlgProc(HWND hwndDlg,
 }
 
 
-INT_PTR CALLBACK
+BOOL CALLBACK
 OwnerPageDlgProc(HWND hwndDlg,
                  UINT uMsg,
                  WPARAM wParam,
                  LPARAM lParam)
 {
-  PSETUPDATA SetupData;
-
-  /* Retrieve pointer to the global setup data */
-  SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+  TCHAR OwnerName[51];
+  TCHAR OwnerOrganization[51];
+  HKEY hKey;
+  LPNMHDR lpnm;
 
   switch (uMsg)
     {
       case WM_INITDIALOG:
         {
-          /* Save pointer to the global setup data */
-          SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
-          SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
-
           SendDlgItemMessage(hwndDlg, IDC_OWNERNAME, EM_LIMITTEXT, 50, 0);
           SendDlgItemMessage(hwndDlg, IDC_OWNERORGANIZATION, EM_LIMITTEXT, 50, 0);
 
-                 /* set focus to owner name */
-                 SetFocus(GetDlgItem(hwndDlg,IDC_OWNERNAME));
+          /* Set focus to owner name */
+          SetFocus(GetDlgItem(hwndDlg, IDC_OWNERNAME));
         }
         break;
 
 
       case WM_NOTIFY:
         {
-          LPNMHDR lpnm = (LPNMHDR)lParam;
+          lpnm = (LPNMHDR)lParam;
 
           switch (lpnm->code)
             {
@@ -165,16 +161,44 @@ OwnerPageDlgProc(HWND hwndDlg,
                 break;
 
               case PSN_WIZNEXT:
-                if (GetDlgItemText(hwndDlg, IDC_OWNERNAME, SetupData->OwnerName, 50) == 0)
+                OwnerName[0] = 0;
+                if (GetDlgItemText(hwndDlg, IDC_OWNERNAME, OwnerName, 50) == 0)
                 {
-                  MessageBox (hwndDlg,
-                              _T("Setup cannot continue until you enter your name."),
-                              _T("ReactOS Setup"),
-                              MB_ICONERROR | MB_OK);
+                  MessageBox(hwndDlg,
+                             _T("Setup cannot continue until you enter your name."),
+                             _T("ReactOS Setup"),
+                             MB_ICONERROR | MB_OK);
                   SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
                   return TRUE;
                 }
-                GetDlgItemText(hwndDlg, IDC_OWNERORGANIZATION, SetupData->OwnerOrganization, 50);
+
+                OwnerOrganization[0] = 0;
+                GetDlgItemText(hwndDlg, IDC_OWNERORGANIZATION, OwnerOrganization, 50);
+
+                RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                             _T("Software\\Microsoft\\Windows NT\\CurrentVersion"),
+                             0,
+                             KEY_ALL_ACCESS,
+                             &hKey);
+                /* FIXME: check error code */
+
+                RegSetValueEx(hKey,
+                              _T("RegisteredOwner"),
+                              0,
+                              REG_SZ,
+                              OwnerName,
+                              (_tcslen(OwnerName) + 1) * sizeof(TCHAR));
+                /* FIXME: check error code */
+
+                RegSetValueEx(hKey,
+                              _T("RegisteredOrganization"),
+                              0,
+                              REG_SZ,
+                              OwnerOrganization,
+                              (_tcslen(OwnerOrganization) + 1) * sizeof(TCHAR));
+                /* FIXME: check error code */
+
+                RegCloseKey(hKey);
                 break;
 
               default:
@@ -197,41 +221,37 @@ ComputerPageDlgProc(HWND hwndDlg,
                     WPARAM wParam,
                     LPARAM lParam)
 {
-  PSETUPDATA SetupData;
+  TCHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
   TCHAR Password1[15];
   TCHAR Password2[15];
-
-  /* Retrieve pointer to the global setup data */
-  SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+  DWORD Length;
+  LPNMHDR lpnm;
 
   switch (uMsg)
     {
       case WM_INITDIALOG:
         {
-          DWORD Length;
-
-          /* Save pointer to the global setup data */
-          SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
-          SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
-
           /* Retrieve current computer name */
           Length = MAX_COMPUTERNAME_LENGTH + 1;
-          GetComputerNameA(SetupData->ComputerName, &Length);
+          GetComputerName(ComputerName, &Length);
 
           /* Display current computer name */
-          SetDlgItemTextA(hwndDlg, IDC_COMPUTERNAME, SetupData->ComputerName);
+          SetDlgItemText(hwndDlg, IDC_COMPUTERNAME, ComputerName);
 
           /* Set text limits */
           SendDlgItemMessage(hwndDlg, IDC_COMPUTERNAME, EM_LIMITTEXT, 64, 0);
           SendDlgItemMessage(hwndDlg, IDC_ADMINPASSWORD1, EM_LIMITTEXT, 14, 0);
           SendDlgItemMessage(hwndDlg, IDC_ADMINPASSWORD2, EM_LIMITTEXT, 14, 0);
+
+          /* Set focus to computer name */
+          SetFocus(GetDlgItem(hwndDlg, IDC_COMPUTERNAME));
         }
         break;
 
 
       case WM_NOTIFY:
         {
-          LPNMHDR lpnm = (LPNMHDR)lParam;
+          lpnm = (LPNMHDR)lParam;
 
           switch (lpnm->code)
             {
@@ -241,35 +261,96 @@ ComputerPageDlgProc(HWND hwndDlg,
                 break;
 
               case PSN_WIZNEXT:
-                if (GetDlgItemText(hwndDlg, IDC_COMPUTERNAME, SetupData->ComputerName, 64) == 0)
+                if (GetDlgItemText(hwndDlg, IDC_COMPUTERNAME, ComputerName, 64) == 0)
                 {
-                  MessageBox (hwndDlg,
-                              _T("Setup cannot continue until you enter the name of your computer."),
-                              _T("ReactOS Setup"),
-                              MB_ICONERROR | MB_OK);
+                  MessageBox(hwndDlg,
+                             _T("Setup cannot continue until you enter the name of your computer."),
+                             _T("ReactOS Setup"),
+                             MB_ICONERROR | MB_OK);
                   SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
                   return TRUE;
                 }
 
                 /* FIXME: check computer name for invalid characters */
 
+                if (!SetComputerName(ComputerName))
+                {
+                  MessageBox(hwndDlg,
+                             _T("Setup failed to set the computer name."),
+                             _T("ReactOS Setup"),
+                             MB_ICONERROR | MB_OK);
+                  SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
+                  return TRUE;
+                }
+
                 /* Check admin passwords */
                 GetDlgItemText(hwndDlg, IDC_ADMINPASSWORD1, Password1, 15);
                 GetDlgItemText(hwndDlg, IDC_ADMINPASSWORD2, Password2, 15);
-                if (_tcscmp (Password1, Password2))
+                if (_tcscmp(Password1, Password2))
                 {
-                  MessageBox (hwndDlg,
-                              _T("The passwords you entered do not match. Please enter "\
-                                 "the desired password again."),
-                              _T("ReactOS Setup"),
-                              MB_ICONERROR | MB_OK);
+                  MessageBox(hwndDlg,
+                             _T("The passwords you entered do not match. Please enter "\
+                                "the desired password again."),
+                             _T("ReactOS Setup"),
+                             MB_ICONERROR | MB_OK);
                   SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
                   return TRUE;
                 }
 
                 /* FIXME: check password for invalid characters */
 
-                _tcscpy (SetupData->AdminPassword, Password1);
+                /* FIXME: Set admin password */
+                break;
+
+              default:
+                break;
+            }
+        }
+        break;
+
+      default:
+        break;
+    }
+
+  return FALSE;
+}
+
+
+BOOL CALLBACK
+LocalePageDlgProc(HWND hwndDlg,
+                  UINT uMsg,
+                  WPARAM wParam,
+                  LPARAM lParam)
+{
+  PSETUPDATA SetupData;
+
+  /* Retrieve pointer to the global setup data */
+  SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+
+  switch (uMsg)
+    {
+      case WM_INITDIALOG:
+        {
+          /* Save pointer to the global setup data */
+          SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+          SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
+
+        }
+        break;
+
+
+      case WM_NOTIFY:
+        {
+          LPNMHDR lpnm = (LPNMHDR)lParam;
+
+          switch (lpnm->code)
+            {
+              case PSN_SETACTIVE:
+                /* Enable the Back and Next buttons */
+                PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+                break;
+
+              case PSN_WIZNEXT:
                 break;
 
               default:
@@ -332,20 +413,20 @@ FinishDlgProc(HWND hwndDlg,
 
 
 VOID
-InstallWizard (VOID)
+InstallWizard(VOID)
 {
   PROPSHEETHEADER psh;
-  HPROPSHEETPAGE ahpsp[4];
+  HPROPSHEETPAGE ahpsp[5];
   PROPSHEETPAGE psp;
 //  SHAREDWIZDATA wizdata;
 
   /* Clear setup data */
-  ZeroMemory (&SetupData, sizeof(SETUPDATA));
+  ZeroMemory(&SetupData, sizeof(SETUPDATA));
 
   /* Create the Welcome page */
   ZeroMemory (&psp, sizeof(PROPSHEETPAGE));
   psp.dwSize = sizeof(PROPSHEETPAGE);
-  psp.dwFlags = PSP_DEFAULT; // | PSP_HIDEHEADER;
+  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
   psp.hInstance = hDllInstance;
   psp.lParam = (LPARAM)&SetupData;
   psp.pfnDlgProc = WelcomeDlgProc;
@@ -354,38 +435,46 @@ InstallWizard (VOID)
 
   /* Create the Owner page */
   psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
-//  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE2);
-//  psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
+//  psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE1);
+//  psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE1);
   psp.pszTemplate = MAKEINTRESOURCE(IDD_OWNERPAGE);
   psp.pfnDlgProc = OwnerPageDlgProc;
   ahpsp[1] = CreatePropertySheetPage(&psp);
 
   /* Create the Computer page */
   psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
-//    psp.pszHeaderTitle =    MAKEINTRESOURCE(IDS_TITLE1);
-//    psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE1);
+//  psp.pszHeaderTitle =    MAKEINTRESOURCE(IDS_TITLE2);
+//  psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
   psp.pfnDlgProc = ComputerPageDlgProc;
   psp.pszTemplate = MAKEINTRESOURCE(IDD_COMPUTERPAGE);
   ahpsp[2] = CreatePropertySheetPage(&psp);
 
 
+  /* Create the Locale page */
+  psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
+//  psp.pszHeaderTitle =    MAKEINTRESOURCE(IDS_TITLE2);
+//  psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
+  psp.pfnDlgProc = LocalePageDlgProc;
+  psp.pszTemplate = MAKEINTRESOURCE(IDD_LOCALEPAGE);
+  ahpsp[3] = CreatePropertySheetPage(&psp);
+
 
   /* Create the Finish page */
-  psp.dwFlags = PSP_DEFAULT; // | PSP_HIDEHEADER;
+  psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
   psp.pfnDlgProc = FinishDlgProc;
   psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
-  ahpsp[3] = CreatePropertySheetPage(&psp);
+  ahpsp[4] = CreatePropertySheetPage(&psp);
 
   /* Create the property sheet */
   psh.dwSize = sizeof(PROPSHEETHEADER);
-  psh.dwFlags = PSH_WIZARD; //PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
+  psh.dwFlags = PSH_WIZARD; //97 | PSH_WATERMARK | PSH_HEADER;
   psh.hInstance = hDllInstance;
   psh.hwndParent = NULL;
-  psh.nPages = 4;
+  psh.nPages = 5;
   psh.nStartPage = 0;
   psh.phpage = ahpsp;
-//  psh.pszbmWatermark =    MAKEINTRESOURCE(IDB_WATERMARK);
-//  psh.pszbmHeader =       MAKEINTRESOURCE(IDB_BANNER);
+//  psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
+//  psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
 
   /* Display the wizard */
   PropertySheet(&psh);