From 8c9a41db9607938ee0de942e44bc2abb9d75e269 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 17 Jan 2016 19:20:47 +0000 Subject: [PATCH] [USERINIT] Add two dialogs that are shown when the LiveCD is booted. The first dialog is used to select the language and keyboard layout. The second dialog is used to either start the shell or the GUI installer. Language and keyboard layout selection are still work in progress. svn path=/trunk/; revision=70607 --- reactos/base/system/userinit/CMakeLists.txt | 10 +- reactos/base/system/userinit/lang/bg-BG.rc | 41 +- reactos/base/system/userinit/lang/cs-CZ.rc | 41 +- reactos/base/system/userinit/lang/de-DE.rc | 41 +- reactos/base/system/userinit/lang/el-GR.rc | 41 +- reactos/base/system/userinit/lang/en-US.rc | 41 +- reactos/base/system/userinit/lang/es-ES.rc | 41 +- reactos/base/system/userinit/lang/fr-FR.rc | 41 +- reactos/base/system/userinit/lang/he-IL.rc | 41 +- reactos/base/system/userinit/lang/hu-HU.rc | 41 +- reactos/base/system/userinit/lang/id-ID.rc | 41 +- reactos/base/system/userinit/lang/it-IT.rc | 41 +- reactos/base/system/userinit/lang/ja-JP.rc | 41 +- reactos/base/system/userinit/lang/lt-LT.rc | 41 +- reactos/base/system/userinit/lang/nl-NL.rc | 41 +- reactos/base/system/userinit/lang/no-NO.rc | 41 +- reactos/base/system/userinit/lang/pl-PL.rc | 41 +- reactos/base/system/userinit/lang/pt-BR.rc | 41 +- reactos/base/system/userinit/lang/ro-RO.rc | 41 +- reactos/base/system/userinit/lang/ru-RU.rc | 41 +- reactos/base/system/userinit/lang/sk-SK.rc | 41 +- reactos/base/system/userinit/lang/sq-AL.rc | 41 +- reactos/base/system/userinit/lang/sv-SE.rc | 42 +- reactos/base/system/userinit/lang/th-TH.rc | 41 +- reactos/base/system/userinit/lang/tr-TR.rc | 41 +- reactos/base/system/userinit/lang/uk-UA.rc | 41 +- reactos/base/system/userinit/lang/zh-CN.rc | 41 +- reactos/base/system/userinit/lang/zh-TW.rc | 41 +- reactos/base/system/userinit/livecd.c | 530 ++++++++++++++++++ .../base/system/userinit/res/rosbitmap.bmp | Bin 0 -> 164750 bytes reactos/base/system/userinit/resource.h | 31 +- reactos/base/system/userinit/userinit.c | 83 ++- reactos/base/system/userinit/userinit.h | 74 +++ reactos/base/system/userinit/userinit.rc | 5 + 34 files changed, 1787 insertions(+), 54 deletions(-) create mode 100644 reactos/base/system/userinit/livecd.c create mode 100644 reactos/base/system/userinit/res/rosbitmap.bmp create mode 100644 reactos/base/system/userinit/userinit.h diff --git a/reactos/base/system/userinit/CMakeLists.txt b/reactos/base/system/userinit/CMakeLists.txt index 52354f37f79..f7fedae1c50 100644 --- a/reactos/base/system/userinit/CMakeLists.txt +++ b/reactos/base/system/userinit/CMakeLists.txt @@ -1,6 +1,12 @@ -add_executable(userinit userinit.c userinit.rc) +list(APPEND SOURCE + livecd.c + userinit.c + userinit.h) + +add_executable(userinit ${SOURCE} userinit.rc) target_link_libraries(userinit wine) set_module_type(userinit win32gui UNICODE) -add_importlibs(userinit user32 advapi32 shell32 msvcrt kernel32 ntdll) +add_importlibs(userinit user32 gdi32 advapi32 shell32 msvcrt kernel32 ntdll) +add_pch(userinit userinit.h SOURCE) add_cd_file(TARGET userinit DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/system/userinit/lang/bg-BG.rc b/reactos/base/system/userinit/lang/bg-BG.rc index 68a6344670a..01c5ee12668 100644 --- a/reactos/base/system/userinit/lang/bg-BG.rc +++ b/reactos/base/system/userinit/lang/bg-BG.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Приложението userinit не успя да пусне обвивката!\n" + IDS_SHELL_FAIL "Приложението userinit не успя да пусне обвивката!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/cs-CZ.rc b/reactos/base/system/userinit/lang/cs-CZ.rc index 19c326796b5..a298b1bcf44 100644 --- a/reactos/base/system/userinit/lang/cs-CZ.rc +++ b/reactos/base/system/userinit/lang/cs-CZ.rc @@ -5,7 +5,46 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Aplikace Userinit selhala při spouštění uživatelského rozhraní!\n" + IDS_SHELL_FAIL "Aplikace Userinit selhala při spouštění uživatelského rozhraní!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/de-DE.rc b/reactos/base/system/userinit/lang/de-DE.rc index 9e21b7cb7e6..cf62fc27bb0 100644 --- a/reactos/base/system/userinit/lang/de-DE.rc +++ b/reactos/base/system/userinit/lang/de-DE.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit konnte die Shell nicht starten!\n" + IDS_SHELL_FAIL "Userinit konnte die Shell nicht starten!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/el-GR.rc b/reactos/base/system/userinit/lang/el-GR.rc index f314a19a52b..33bbb5bffa9 100644 --- a/reactos/base/system/userinit/lang/el-GR.rc +++ b/reactos/base/system/userinit/lang/el-GR.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_GREEK, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "H Userinit δε μπόρεσε να εκκινήσει το κέλυφος!\n" + IDS_SHELL_FAIL "H Userinit δε μπόρεσε να εκκινήσει το κέλυφος!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/en-US.rc b/reactos/base/system/userinit/lang/en-US.rc index 124c1345f14..29ea36a4451 100644 --- a/reactos/base/system/userinit/lang/en-US.rc +++ b/reactos/base/system/userinit/lang/en-US.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit failed to start the shell!\n" + IDS_SHELL_FAIL "Userinit failed to start the shell!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/es-ES.rc b/reactos/base/system/userinit/lang/es-ES.rc index 8d72784d3dc..86866aca3b3 100644 --- a/reactos/base/system/userinit/lang/es-ES.rc +++ b/reactos/base/system/userinit/lang/es-ES.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit no pudo iniciar el shell con éxito!\n" + IDS_SHELL_FAIL "Userinit no pudo iniciar el shell con éxito!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/fr-FR.rc b/reactos/base/system/userinit/lang/fr-FR.rc index b8c911fbb28..b9e4439fa3e 100644 --- a/reactos/base/system/userinit/lang/fr-FR.rc +++ b/reactos/base/system/userinit/lang/fr-FR.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit a échoué lors du chargement de l'interface (shell) !\n" + IDS_SHELL_FAIL "Userinit a échoué lors du chargement de l'interface (shell) !\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/he-IL.rc b/reactos/base/system/userinit/lang/he-IL.rc index b157adf432f..7c2337bc8ea 100644 --- a/reactos/base/system/userinit/lang/he-IL.rc +++ b/reactos/base/system/userinit/lang/he-IL.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit נכשל להפעיל את הממשק!\n" + IDS_SHELL_FAIL "Userinit נכשל להפעיל את הממשק!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/hu-HU.rc b/reactos/base/system/userinit/lang/hu-HU.rc index a982a48d449..49e0b82b3f5 100644 --- a/reactos/base/system/userinit/lang/hu-HU.rc +++ b/reactos/base/system/userinit/lang/hu-HU.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Az Userinit nem tudja elindítani a rendszert!\n" + IDS_SHELL_FAIL "Az Userinit nem tudja elindítani a rendszert!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/id-ID.rc b/reactos/base/system/userinit/lang/id-ID.rc index 6b2b07c385c..cc85013e2e9 100644 --- a/reactos/base/system/userinit/lang/id-ID.rc +++ b/reactos/base/system/userinit/lang/id-ID.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit gagal untuk memulai shell!\n" + IDS_SHELL_FAIL "Userinit gagal untuk memulai shell!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/it-IT.rc b/reactos/base/system/userinit/lang/it-IT.rc index f1de80cf0be..fbb85be7bab 100644 --- a/reactos/base/system/userinit/lang/it-IT.rc +++ b/reactos/base/system/userinit/lang/it-IT.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit non ha potuto avviare l'ambiente(shell)!\n" + IDS_SHELL_FAIL "Userinit non ha potuto avviare l'ambiente(shell)!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/ja-JP.rc b/reactos/base/system/userinit/lang/ja-JP.rc index 0a2784bfaab..742da74be07 100644 --- a/reactos/base/system/userinit/lang/ja-JP.rc +++ b/reactos/base/system/userinit/lang/ja-JP.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit はシェルを開始できませんでした!\n" + IDS_SHELL_FAIL "Userinit はシェルを開始できませんでした!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/lt-LT.rc b/reactos/base/system/userinit/lang/lt-LT.rc index 6b11f338762..31db3118b25 100644 --- a/reactos/base/system/userinit/lang/lt-LT.rc +++ b/reactos/base/system/userinit/lang/lt-LT.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit nepavyko paleisti aplinkos!\n" + IDS_SHELL_FAIL "Userinit nepavyko paleisti aplinkos!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/nl-NL.rc b/reactos/base/system/userinit/lang/nl-NL.rc index e558f0d1e47..22cae1ede24 100644 --- a/reactos/base/system/userinit/lang/nl-NL.rc +++ b/reactos/base/system/userinit/lang/nl-NL.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit kon de shell niet starten!\n" + IDS_SHELL_FAIL "Userinit kon de shell niet starten!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/no-NO.rc b/reactos/base/system/userinit/lang/no-NO.rc index 410a57c8ede..eaacdabd804 100644 --- a/reactos/base/system/userinit/lang/no-NO.rc +++ b/reactos/base/system/userinit/lang/no-NO.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit mislykket å starte skall!\n" + IDS_SHELL_FAIL "Userinit mislykket å starte skall!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/pl-PL.rc b/reactos/base/system/userinit/lang/pl-PL.rc index 1a43b59995e..69214b2f3ed 100644 --- a/reactos/base/system/userinit/lang/pl-PL.rc +++ b/reactos/base/system/userinit/lang/pl-PL.rc @@ -7,7 +7,46 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Nie powiodło się uruchomienie powłoki przez userinit!\n" + IDS_SHELL_FAIL "Nie powiodło się uruchomienie powłoki przez userinit!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/pt-BR.rc b/reactos/base/system/userinit/lang/pt-BR.rc index 28efc9a0c01..1b7681d049c 100644 --- a/reactos/base/system/userinit/lang/pt-BR.rc +++ b/reactos/base/system/userinit/lang/pt-BR.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit falhou ao tentar iniciar o shell!\n" + IDS_SHELL_FAIL "Userinit falhou ao tentar iniciar o shell!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/ro-RO.rc b/reactos/base/system/userinit/lang/ro-RO.rc index 05af69b5d6b..088234b7c52 100644 --- a/reactos/base/system/userinit/lang/ro-RO.rc +++ b/reactos/base/system/userinit/lang/ro-RO.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit a eșuat în lansarea interfeței!\n" + IDS_SHELL_FAIL "Userinit a eșuat în lansarea interfeței!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/ru-RU.rc b/reactos/base/system/userinit/lang/ru-RU.rc index d0e0699a46d..20c52c6c9e6 100644 --- a/reactos/base/system/userinit/lang/ru-RU.rc +++ b/reactos/base/system/userinit/lang/ru-RU.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Ошибка запуска оболочки при инициализации пользовательского сеанса!\n" + IDS_SHELL_FAIL "Ошибка запуска оболочки при инициализации пользовательского сеанса!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/sk-SK.rc b/reactos/base/system/userinit/lang/sk-SK.rc index 30330a23f8a..111d089ac7d 100644 --- a/reactos/base/system/userinit/lang/sk-SK.rc +++ b/reactos/base/system/userinit/lang/sk-SK.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL, "Userinit zlyhal pri spúšťaní shellu!\n" + IDS_SHELL_FAIL "Userinit zlyhal pri spúšťaní shellu!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/sq-AL.rc b/reactos/base/system/userinit/lang/sq-AL.rc index 926538aeacd..c7dc91e8ebe 100644 --- a/reactos/base/system/userinit/lang/sq-AL.rc +++ b/reactos/base/system/userinit/lang/sq-AL.rc @@ -4,7 +4,46 @@ LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit dështuar për të filluar shell'in!\n" + IDS_SHELL_FAIL "Userinit dështuar për të filluar shell'in!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/sv-SE.rc b/reactos/base/system/userinit/lang/sv-SE.rc index d726d99e783..8a881f80376 100644 --- a/reactos/base/system/userinit/lang/sv-SE.rc +++ b/reactos/base/system/userinit/lang/sv-SE.rc @@ -1,7 +1,47 @@ /* Translated by David Nordenberg */ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL + +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit misslyckades att starta användargränssnittet!\n" + IDS_SHELL_FAIL "Userinit misslyckades att starta användargränssnittet!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/th-TH.rc b/reactos/base/system/userinit/lang/th-TH.rc index 1fe161e8ba3..77edf8166c2 100644 --- a/reactos/base/system/userinit/lang/th-TH.rc +++ b/reactos/base/system/userinit/lang/th-TH.rc @@ -1,6 +1,45 @@ LANGUAGE LANG_THAI, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "ค่าผู้ใช้ผิดพลาดในตอนเข้าสู่ชั้นสถานะ!\n" + IDS_SHELL_FAIL "ค่าผู้ใช้ผิดพลาดในตอนเข้าสู่ชั้นสถานะ!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/tr-TR.rc b/reactos/base/system/userinit/lang/tr-TR.rc index c1959d3778e..6dc635b444a 100644 --- a/reactos/base/system/userinit/lang/tr-TR.rc +++ b/reactos/base/system/userinit/lang/tr-TR.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit, kabuğu başlatmada başarısız oldu!\n" + IDS_SHELL_FAIL "Userinit, kabuğu başlatmada başarısız oldu!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/uk-UA.rc b/reactos/base/system/userinit/lang/uk-UA.rc index cd0d3927f52..3d67608c5fc 100644 --- a/reactos/base/system/userinit/lang/uk-UA.rc +++ b/reactos/base/system/userinit/lang/uk-UA.rc @@ -8,7 +8,46 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit не вдалося запустити оболонку!\n" + IDS_SHELL_FAIL "Userinit не вдалося запустити оболонку!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/zh-CN.rc b/reactos/base/system/userinit/lang/zh-CN.rc index 29b14a251c8..e846a7ef973 100644 --- a/reactos/base/system/userinit/lang/zh-CN.rc +++ b/reactos/base/system/userinit/lang/zh-CN.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit 无法启动外壳!\n" + IDS_SHELL_FAIL "Userinit 无法启动外壳!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/lang/zh-TW.rc b/reactos/base/system/userinit/lang/zh-TW.rc index 4df150ac909..3b628179234 100644 --- a/reactos/base/system/userinit/lang/zh-TW.rc +++ b/reactos/base/system/userinit/lang/zh-TW.rc @@ -2,7 +2,46 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL +IDD_LOCALEPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_LOCALELOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + RTEXT "Language:", IDC_STATIC, 20, 109, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LANGUAGELIST, 132, 107, 176, 142, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + RTEXT "Keyboard layout:", IDC_STATIC, 20, 132, 106, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + COMBOBOX IDC_LAYOUTLIST, 132, 130, 176, 81, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Select your language and keyboard layout and click Next to continue.", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + DEFPUSHBUTTON "&Next", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "ReactOS LiveCD" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "IDB_LOGO", IDC_STARTLOGO, "Static", WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, 18, 0, 290, 99 + DEFPUSHBUTTON "Run ReactOS &Live CD", IDC_RUN, 71, 102, 175, 21 + PUSHBUTTON "&Install ReactOS", IDC_INSTALL, 71, 130, 175, 21 + + LTEXT "", IDC_STATIC, 7, 152, 300, 8 + + GROUPBOX "", IDC_STATIC, 0, 165, 317, 1 + PUSHBUTTON "&Previous", IDOK, 205, 172, 50, 14 + PUSHBUTTON "&Cancel", IDCANCEL, 260, 172, 50, 14 +END + STRINGTABLE BEGIN - STRING_USERINIT_FAIL "Userinit 無法啟動外殼!\n" + IDS_SHELL_FAIL "Userinit 無法啟動外殼!\n" + IDS_INSTALLER_FAIL "Userinit failed to start the installer!\n" +END + +STRINGTABLE +BEGIN + IDS_SPAIN "Spanish (Spain)" END diff --git a/reactos/base/system/userinit/livecd.c b/reactos/base/system/userinit/livecd.c new file mode 100644 index 00000000000..4d8b623caf9 --- /dev/null +++ b/reactos/base/system/userinit/livecd.c @@ -0,0 +1,530 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Userinit Logon Application + * FILE: base/system/userinit/livecd.c + * PROGRAMMERS: Eric Kohl + */ + +#include "userinit.h" + +HWND hList; +HWND hLocaleList; +BOOL bSpain = FALSE; + +static VOID +InitImageInfo(PIMGINFO ImgInfo) +{ + BITMAP bitmap; + + ZeroMemory(ImgInfo, sizeof(*ImgInfo)); + + ImgInfo->hBitmap = LoadImage(hInstance, + MAKEINTRESOURCE(IDB_ROSLOGO), + IMAGE_BITMAP, + 0, + 0, + LR_DEFAULTCOLOR); + + if (ImgInfo->hBitmap != NULL) + { + GetObject(ImgInfo->hBitmap, sizeof(BITMAP), &bitmap); + + ImgInfo->cxSource = bitmap.bmWidth; + ImgInfo->cySource = bitmap.bmHeight; + } +} + + +BOOL +IsLiveCD(VOID) +{ + HKEY ControlKey = NULL; + LPWSTR SystemStartOptions = NULL; + LPWSTR CurrentOption, NextOption; /* Pointers into SystemStartOptions */ + LONG rc; + BOOL ret = FALSE; + + TRACE("IsLiveCD()\n"); + + rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, + REGSTR_PATH_CURRENT_CONTROL_SET, + 0, + KEY_QUERY_VALUE, + &ControlKey); + if (rc != ERROR_SUCCESS) + { + WARN("RegOpenKeyEx() failed with error %lu\n", rc); + goto cleanup; + } + + rc = ReadRegSzKey(ControlKey, L"SystemStartOptions", &SystemStartOptions); + if (rc != ERROR_SUCCESS) + { + WARN("ReadRegSzKey() failed with error %lu\n", rc); + goto cleanup; + } + + /* Check for CONSOLE switch in SystemStartOptions */ + CurrentOption = SystemStartOptions; + while (CurrentOption) + { + NextOption = wcschr(CurrentOption, L' '); + if (NextOption) + *NextOption = L'\0'; + if (_wcsicmp(CurrentOption, L"MININT") == 0) + { + TRACE("Found 'MININT' boot option\n"); + ret = TRUE; + goto cleanup; + } + CurrentOption = NextOption ? NextOption + 1 : NULL; + } + +cleanup: + if (ControlKey != NULL) + RegCloseKey(ControlKey); + HeapFree(GetProcessHeap(), 0, SystemStartOptions); + + TRACE("IsLiveCD() returning %d\n", ret); + + return ret; +} + + +static BOOL CALLBACK +LocalesEnumProc(LPTSTR lpLocale) +{ + LCID lcid; + WCHAR lang[255]; + INT index; + BOOL bNoShow = FALSE; + + lcid = wcstoul(lpLocale, NULL, 16); + + /* Display only languages with installed support */ + if (!IsValidLocale(lcid, LCID_INSTALLED)) + return TRUE; + + if (lcid == MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH), SORT_DEFAULT) || + lcid == MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN), SORT_DEFAULT)) + { + if (bSpain == FALSE) + { + LoadStringW(hInstance, IDS_SPAIN, lang, 255); + bSpain = TRUE; + } + else + { + bNoShow = TRUE; + } + } + else + { + GetLocaleInfoW(lcid, LOCALE_SLANGUAGE, lang, sizeof(lang)/sizeof(WCHAR)); + } + + if (bNoShow == FALSE) + { + index = SendMessageW(hList, + CB_ADDSTRING, + 0, + (LPARAM)lang); + + SendMessageW(hList, + CB_SETITEMDATA, + index, + (LPARAM)lcid); + } + + return TRUE; +} + + +static VOID +CreateLanguagesList(HWND hwnd) +{ + WCHAR langSel[255]; + + hList = hwnd; + bSpain = FALSE; + EnumSystemLocalesW(LocalesEnumProc, LCID_SUPPORTED); + + /* Select current locale */ + /* or should it be System and not user? */ + GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_SLANGUAGE, langSel, sizeof(langSel)/sizeof(WCHAR)); + + SendMessageW(hList, + CB_SELECTSTRING, + -1, + (LPARAM)langSel); +} + + +static +VOID +InitializeDefaultUserLocale( + PLCID pNewLcid) +{ + WCHAR szBuffer[80]; + PWSTR ptr; + HKEY hLocaleKey; + DWORD ret; + DWORD dwSize; + LCID lcid; + INT i; + + struct {LCTYPE LCType; PWSTR pValue;} LocaleData[] = { + /* Number */ + {LOCALE_SDECIMAL, L"sDecimal"}, + {LOCALE_STHOUSAND, L"sThousand"}, + {LOCALE_SNEGATIVESIGN, L"sNegativeSign"}, + {LOCALE_SPOSITIVESIGN, L"sPositiveSign"}, + {LOCALE_SGROUPING, L"sGrouping"}, + {LOCALE_SLIST, L"sList"}, + {LOCALE_SNATIVEDIGITS, L"sNativeDigits"}, + {LOCALE_INEGNUMBER, L"iNegNumber"}, + {LOCALE_IDIGITS, L"iDigits"}, + {LOCALE_ILZERO, L"iLZero"}, + {LOCALE_IMEASURE, L"iMeasure"}, + {LOCALE_IDIGITSUBSTITUTION, L"NumShape"}, + + /* Currency */ + {LOCALE_SCURRENCY, L"sCurrency"}, + {LOCALE_SMONDECIMALSEP, L"sMonDecimalSep"}, + {LOCALE_SMONTHOUSANDSEP, L"sMonThousandSep"}, + {LOCALE_SMONGROUPING, L"sMonGrouping"}, + {LOCALE_ICURRENCY, L"iCurrency"}, + {LOCALE_INEGCURR, L"iNegCurr"}, + {LOCALE_ICURRDIGITS, L"iCurrDigits"}, + + /* Time */ + {LOCALE_STIMEFORMAT, L"sTimeFormat"}, + {LOCALE_STIME, L"sTime"}, + {LOCALE_S1159, L"s1159"}, + {LOCALE_S2359, L"s2359"}, + {LOCALE_ITIME, L"iTime"}, + {LOCALE_ITIMEMARKPOSN, L"iTimePrefix"}, + {LOCALE_ITLZERO, L"iTLZero"}, + + /* Date */ + {LOCALE_SLONGDATE, L"sLongDate"}, + {LOCALE_SSHORTDATE, L"sShortDate"}, + {LOCALE_SDATE, L"sDate"}, + {LOCALE_IFIRSTDAYOFWEEK, L"iFirstDayOfWeek"}, + {LOCALE_IFIRSTWEEKOFYEAR, L"iFirstWeekOfYear"}, + {LOCALE_IDATE, L"iDate"}, + {LOCALE_ICALENDARTYPE, L"iCalendarType"}, + + /* Misc */ + {LOCALE_SCOUNTRY, L"sCountry"}, + {LOCALE_SLANGUAGE, L"sLanguage"}, + {LOCALE_ICOUNTRY, L"iCountry"}, + {0, NULL}}; + + ret = RegOpenKeyExW(HKEY_USERS, + L".DEFAULT\\Control Panel\\International", + 0, + KEY_READ | KEY_WRITE, + &hLocaleKey); + if (ret != ERROR_SUCCESS) + { + return; + } + + if (pNewLcid == NULL) + { + dwSize = 9 * sizeof(WCHAR); + ret = RegQueryValueExW(hLocaleKey, + L"Locale", + NULL, + NULL, + (PBYTE)szBuffer, + &dwSize); + if (ret != ERROR_SUCCESS) + goto done; + + lcid = (LCID)wcstoul(szBuffer, &ptr, 16); + if (lcid == 0) + goto done; + } + else + { + lcid = *pNewLcid; + + swprintf(szBuffer, L"%08lx", lcid); + RegSetValueExW(hLocaleKey, + L"Locale", + 0, + REG_SZ, + (PBYTE)szBuffer, + (wcslen(szBuffer) + 1) * sizeof(WCHAR)); + } + + i = 0; + while (LocaleData[i].pValue != NULL) + { + if (GetLocaleInfo(lcid, + LocaleData[i].LCType | LOCALE_NOUSEROVERRIDE, + szBuffer, + sizeof(szBuffer) / sizeof(WCHAR))) + { + RegSetValueExW(hLocaleKey, + LocaleData[i].pValue, + 0, + REG_SZ, + (PBYTE)szBuffer, + (wcslen(szBuffer) + 1) * sizeof(WCHAR)); + } + + i++; + } + +done: + RegCloseKey(hLocaleKey); +} + + +VOID +CenterWindow(HWND hWnd) +{ + HWND hWndParent; + RECT rcParent; + RECT rcWindow; + + hWndParent = GetParent(hWnd); + if (hWndParent == NULL) + hWndParent = GetDesktopWindow(); + + GetWindowRect(hWndParent, &rcParent); + GetWindowRect(hWnd, &rcWindow); + + SetWindowPos(hWnd, + HWND_TOP, + ((rcParent.right - rcParent.left) - (rcWindow.right - rcWindow.left)) / 2, + ((rcParent.bottom - rcParent.top) - (rcWindow.bottom - rcWindow.top)) / 2, + 0, + 0, + SWP_NOSIZE); +} + + +static +VOID +OnDrawItem( + LPDRAWITEMSTRUCT lpDrawItem, + PSTATE pState, + UINT uCtlID) +{ + HDC hdcMem; + LONG left; + + if (lpDrawItem->CtlID == uCtlID) + { + /* position image in centre of dialog */ + left = (lpDrawItem->rcItem.right - pState->ImageInfo.cxSource) / 2; + + hdcMem = CreateCompatibleDC(lpDrawItem->hDC); + if (hdcMem != NULL) + { + SelectObject(hdcMem, pState->ImageInfo.hBitmap); + BitBlt(lpDrawItem->hDC, + left, + lpDrawItem->rcItem.top, + lpDrawItem->rcItem.right - lpDrawItem->rcItem.left, + lpDrawItem->rcItem.bottom - lpDrawItem->rcItem.top, + hdcMem, + 0, + 0, + SRCCOPY); + DeleteDC(hdcMem); + } + } +} + + +static +INT_PTR +CALLBACK +LocaleDlgProc( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + PSTATE pState; + + /* Retrieve pointer to the state */ + pState = (PSTATE)GetWindowLongPtr (hwndDlg, GWL_USERDATA); + + switch (uMsg) + { + case WM_INITDIALOG: + /* Save pointer to the global state */ + pState = (PSTATE)lParam; + SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pState); + + /* Center the dialog window */ + CenterWindow (hwndDlg); + CreateLanguagesList(GetDlgItem(hwndDlg, IDC_LANGUAGELIST)); + + EnableWindow(GetDlgItem(hwndDlg, IDCANCEL), FALSE); + return FALSE; + + case WM_DRAWITEM: + OnDrawItem((LPDRAWITEMSTRUCT)lParam, + pState, + IDC_LOCALELOGO); + return TRUE; + + case WM_COMMAND: + if (HIWORD(wParam) == BN_CLICKED) + { + switch (LOWORD(wParam)) + { + case IDOK: + { + LCID NewLcid; + INT iCurSel; + + iCurSel = SendDlgItemMessageW(hwndDlg, + IDC_LANGUAGELIST, + CB_GETCURSEL, + 0, + 0); + if (iCurSel == CB_ERR) + break; + + NewLcid = SendDlgItemMessageW(hwndDlg, + IDC_LANGUAGELIST, + CB_GETITEMDATA, + iCurSel, + 0); + if (NewLcid == (LCID)CB_ERR) + break; + + SetThreadLocale(NewLcid); + InitializeDefaultUserLocale(&NewLcid); + } + + pState->NextPage = STARTPAGE; + EndDialog(hwndDlg, 0); + break; + + default: + break; + } + } + break; + + default: + break; + } + + return FALSE; +} + + +static +INT_PTR +CALLBACK +StartDlgProc( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + PSTATE pState; + + /* Retrieve pointer to the state */ + pState = (PSTATE)GetWindowLongPtr (hwndDlg, GWL_USERDATA); + + switch (uMsg) + { + case WM_INITDIALOG: + /* Save pointer to the state */ + pState = (PSTATE)lParam; + SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pState); + + /* Center the dialog window */ + CenterWindow(hwndDlg); + + EnableWindow(GetDlgItem(hwndDlg, IDCANCEL), FALSE); + return FALSE; + + case WM_DRAWITEM: + OnDrawItem((LPDRAWITEMSTRUCT)lParam, + pState, + IDC_STARTLOGO); + return TRUE; + + case WM_COMMAND: + if (HIWORD(wParam) == BN_CLICKED) + { + switch (LOWORD(wParam)) + { + case IDC_RUN: + pState->NextPage = DONE; + pState->Run = SHELL; + EndDialog(hwndDlg, 0); + break; + + case IDC_INSTALL: + pState->NextPage = DONE; + pState->Run = INSTALLER; + EndDialog(hwndDlg, 0); + break; + + case IDOK: + pState->NextPage = LOCALEPAGE; + EndDialog(hwndDlg, 0); + break; + + default: + break; + } + } + break; + + default: + break; + } + + return FALSE; +} + + +VOID +RunLiveCD( + PSTATE pState) +{ + InitImageInfo(&pState->ImageInfo); + + while (pState->NextPage != DONE) + { + switch (pState->NextPage) + { + case LOCALEPAGE: + DialogBoxParam(hInstance, + MAKEINTRESOURCE(IDD_LOCALEPAGE), + NULL, + LocaleDlgProc, + (LPARAM)pState); + break; + + case STARTPAGE: + DialogBoxParam(hInstance, + MAKEINTRESOURCE(IDD_STARTPAGE), + NULL, + StartDlgProc, + (LPARAM)pState); + break; + + default: + break; + } + } + + DeleteObject(pState->ImageInfo.hBitmap); +} + +/* EOF */ diff --git a/reactos/base/system/userinit/res/rosbitmap.bmp b/reactos/base/system/userinit/res/rosbitmap.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8a94a6ec9dff917db3ab166e9857e2a9d96d2d37 GIT binary patch literal 164750 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૨$9^m9 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%0DxCTsVY8S161 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "resource.h" - -WINE_DEFAULT_DEBUG_CHANNEL(userinit); +#include "userinit.h" #define CMP_MAGIC 0x01234567 /* GLOBALS ******************************************************************/ +HINSTANCE hInstance; + + /* FUNCTIONS ****************************************************************/ -static LONG +LONG ReadRegSzKey( IN HKEY hKey, IN LPCWSTR pszKey, - OUT LPWSTR* pValue) + OUT LPWSTR *pValue) { LONG rc; DWORD dwType; @@ -382,7 +367,7 @@ VOID StartShell(VOID) if (!TryToStartShell(Shell)) { WARN("Failed to start default shell %s\n", debugstr_w(Shell)); - LoadString( GetModuleHandle(NULL), STRING_USERINIT_FAIL, szMsg, sizeof(szMsg) / sizeof(szMsg[0])); + LoadString( GetModuleHandle(NULL), IDS_SHELL_FAIL, szMsg, sizeof(szMsg) / sizeof(szMsg[0])); MessageBox(0, szMsg, NULL, 0); } } @@ -548,6 +533,27 @@ NotifyLogon(VOID) WARN("LoadLibrary() failed with error %lu\n", GetLastError()); } +static +VOID +StartInstaller(VOID) +{ + WCHAR Shell[MAX_PATH]; + WCHAR szMsg[RC_STRING_MAX_SIZE]; + + if (GetWindowsDirectory(Shell, MAX_PATH - 12)) + wcscat(Shell, L"\\reactos.exe"); + else + wcscpy(Shell, L"reactos.exe"); + + if (!TryToStartShell(Shell)) + { + ERR("Failed to start the installer: %s\n", debugstr_w(Shell)); + LoadStringW(GetModuleHandle(NULL), IDS_INSTALLER_FAIL, szMsg, sizeof(szMsg) / sizeof(szMsg[0])); + MessageBoxW(0, szMsg, NULL, 0); + } +} + + #ifdef _MSC_VER #pragma warning(disable : 4100) #endif /* _MSC_VER */ @@ -558,9 +564,38 @@ wWinMain(IN HINSTANCE hInst, IN LPWSTR lpszCmdLine, IN int nCmdShow) { + STATE State; + + hInstance = hInst; + SetUserSettings(); - StartShell(); - NotifyLogon(); + + if (IsLiveCD()) + { + State.NextPage = LOCALEPAGE; + State.Run = SHELL; + } + else + { + State.NextPage = DONE; + State.Run = SHELL; + } + + if (State.NextPage != DONE) + { + RunLiveCD(&State); + } + + if (State.Run == SHELL) + { + StartShell(); + NotifyLogon(); + } + else if (State.Run == INSTALLER) + { + StartInstaller(); + } + return 0; } diff --git a/reactos/base/system/userinit/userinit.h b/reactos/base/system/userinit/userinit.h new file mode 100644 index 00000000000..60d431065e2 --- /dev/null +++ b/reactos/base/system/userinit/userinit.h @@ -0,0 +1,74 @@ +/* + */ + +#ifndef __USERINIT_H__ +#define __USERINIT_H__ + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +WINE_DEFAULT_DEBUG_CHANNEL(userinit); + +#include "resource.h" + + +typedef enum +{ + LOCALEPAGE, + STARTPAGE, + DONE +} PAGESTATE; + +typedef enum +{ + SHELL, + INSTALLER +} RUN; + +typedef struct _IMGINFO +{ + HBITMAP hBitmap; + INT cxSource; + INT cySource; +} IMGINFO, *PIMGINFO; + +typedef struct +{ + PAGESTATE NextPage; + RUN Run; + IMGINFO ImageInfo; +} STATE, *PSTATE; + + +extern HINSTANCE hInstance; + +LONG +ReadRegSzKey( + IN HKEY hKey, + IN LPCWSTR pszKey, + OUT LPWSTR *pValue); + +BOOL +IsLiveCD(VOID); + + +VOID +RunLiveCD( + PSTATE State); + +#endif /* __USERINIT_H__ */ diff --git a/reactos/base/system/userinit/userinit.rc b/reactos/base/system/userinit/userinit.rc index dc3636aa4c1..65eb27e387e 100644 --- a/reactos/base/system/userinit/userinit.rc +++ b/reactos/base/system/userinit/userinit.rc @@ -1,4 +1,5 @@ #include +#include #include "resource.h" @@ -7,6 +8,10 @@ #define REACTOS_STR_ORIGINAL_FILENAME "userinit.dll" #include +/* Bitmaps */ +IDB_ROSLOGO BITMAP "res/rosbitmap.bmp" + + /* UTF-8 */ #pragma code_page(65001)