Author: mkupfer Date: Tue Nov 11 04:26:02 2008 New Revision: 37286
URL: http://svn.reactos.org/svn/reactos?rev=37286&view=rev Log: - set selected setup type (install/repair) when selecting next property sheet - get device data (computer, display, keyboard) from txtsetup.sif - set selected devices when selecting next property sheet - fix Englisch and German device property sheet
Modified: trunk/reactos/base/setup/reactos/lang/de-DE.rc trunk/reactos/base/setup/reactos/lang/en-US.rc trunk/reactos/base/setup/reactos/reactos.c
Modified: trunk/reactos/base/setup/reactos/lang/de-DE.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/lang/de-... ============================================================================== --- trunk/reactos/base/setup/reactos/lang/de-DE.rc [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/lang/de-DE.rc [iso-8859-1] Tue Nov 11 04:26:02 2008 @@ -43,11 +43,11 @@ BEGIN CONTROL "Device settings", IDC_STATIC, "Button", BS_GROUPBOX, 10,0,297,172 LTEXT "Computer:", IDC_STATIC, 20,15, 80, 10 - CONTROL "", IDC_COMPUTER, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 15, 150, 80 + CONTROL "", IDC_COMPUTER, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 15, 150, 80 LTEXT "Display:", IDC_STATIC, 20,35, 80, 10 - CONTROL "", IDC_DISPLAY, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 35, 150, 80 + CONTROL "", IDC_DISPLAY, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 35, 150, 80 LTEXT "Keyboard:", IDC_STATIC, 20,55, 80, 10 - CONTROL "", IDC_KEYBOARD, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 55, 150, 80 + CONTROL "", IDC_KEYBOARD, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 55, 150, 80 LTEXT "Click Next setup of the installation device.", IDC_STATIC, 10, 180 ,277, 20 END
Modified: trunk/reactos/base/setup/reactos/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/lang/en-... ============================================================================== --- trunk/reactos/base/setup/reactos/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/lang/en-US.rc [iso-8859-1] Tue Nov 11 04:26:02 2008 @@ -43,11 +43,11 @@ BEGIN CONTROL "Device settings", IDC_STATIC, "Button", BS_GROUPBOX, 10,0,297,172 LTEXT "Computer:", IDC_STATIC, 20,15, 80, 10 - CONTROL "", IDC_COMPUTER, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 15, 150, 80 + CONTROL "", IDC_COMPUTER, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 15, 150, 80 LTEXT "Display:", IDC_STATIC, 20,35, 80, 10 - CONTROL "", IDC_DISPLAY, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 35, 150, 80 + CONTROL "", IDC_DISPLAY, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 35, 150, 80 LTEXT "Keyboard:", IDC_STATIC, 20,55, 80, 10 - CONTROL "", IDC_KEYBOARD, "ComboBox", WS_TABSTOP | CBS_DROPDOWNLIST , 100, 55, 150, 80 + CONTROL "", IDC_KEYBOARD, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST , 100, 55, 150, 80 LTEXT "Click Next setup of the installation device.", IDC_STATIC, 10, 180 ,277, 20 END
Modified: trunk/reactos/base/setup/reactos/reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/reactos.... ============================================================================== --- trunk/reactos/base/setup/reactos/reactos.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/reactos.c [iso-8859-1] Tue Nov 11 04:26:02 2008 @@ -26,7 +26,6 @@ */
#include <windows.h> -#include <windowsx.h> #include <commctrl.h> #include <tchar.h> #include <setupapi.h> @@ -42,7 +41,6 @@ { TCHAR LangId[9]; TCHAR LangName[128]; - LONG DefaultKBLayout; } LANG, *PLANG;
typedef struct _KBLAYOUT @@ -51,6 +49,14 @@ TCHAR LayoutName[128]; TCHAR DllName[128]; } KBLAYOUT, *PKBLAYOUT; + + +// generic entries with simple 1:1 mapping +typedef struct _GENENTRY +{ + TCHAR Id[24]; + TCHAR Value[128]; +} GENENTRY, *PGENENTRY;
struct { @@ -64,14 +70,23 @@ LONG SelectedLangId; // selected language (table index) LONG SelectedKBLayout; // selected keyboard layout (table index) WCHAR InstallationDirectory[MAX_PATH]; // installation directory on hdd + LONG SelectedComputer; // selected computer type (table index) + LONG SelectedDisplay; // selected display type (table index) + LONG SelectedKeyboard; // selected keyboard type (table index) BOOLEAN RepairUpdateFlag; // flag for update/repair an installed reactos // txtsetup.sif data LONG DefaultLang; // default language (table index) - LONG DefaultKBLayout; // default keyboard layout (table index) PLANG pLanguages; LONG LangCount; + LONG DefaultKBLayout; // default keyboard layout (table index) PKBLAYOUT pKbLayouts; LONG KbLayoutCount; + PGENENTRY pComputers; + LONG CompCount; + PGENENTRY pDisplays; + LONG DispCount; + PGENENTRY pKeyboards; + LONG KeybCount; } SetupData;
typedef struct _IMGINFO @@ -201,9 +216,8 @@
switch (lpnm->code) { - case PSN_SETACTIVE: // Only "Finish" for closing the App - PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_FINISH); - //PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT); + case PSN_SETACTIVE: + PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT); break; default: break; @@ -388,6 +402,10 @@ case PSN_QUERYCANCEL: SetWindowLong(hwndDlg, DWL_MSGRESULT,MessageBox(GetParent(hwndDlg), abort_msg, abort_title, MB_YESNO | MB_ICONQUESTION) != IDYES); return TRUE; + case PSN_WIZNEXT: // set the selected data + + SetupData.RepairUpdateFlag = !(SendMessage(GetDlgItem(hwndDlg, IDC_INSTALL),BM_GETCHECK,(WPARAM)0,(LPARAM)0) == BST_CHECKED); + return TRUE; default: break; } @@ -406,6 +424,9 @@ WPARAM wParam, LPARAM lParam) { + LONG i; + LRESULT tindex; + HWND hList; switch (uMsg) { case WM_INITDIALOG: @@ -425,6 +446,27 @@ (WPARAM)hTitleFont, (LPARAM)TRUE);*/ } + hList = GetDlgItem(hwndDlg, IDC_COMPUTER); + for (i=0; i< SetupData.CompCount;i++) + { + tindex = SendMessage(hList,CB_ADDSTRING,(WPARAM)0,(LPARAM)SetupData.pComputers[i].Value); + SendMessage(hList,CB_SETITEMDATA,tindex,i); + } + SendMessage(hList,CB_SETCURSEL,0,0); // set first as default + hList = GetDlgItem(hwndDlg, IDC_DISPLAY); + for (i=0; i< SetupData.DispCount;i++) + { + tindex = SendMessage(hList,CB_ADDSTRING,(WPARAM)0,(LPARAM)SetupData.pDisplays[i].Value); + SendMessage(hList,CB_SETITEMDATA,tindex,i); + } + SendMessage(hList,CB_SETCURSEL,0,0); // set first as default + hList = GetDlgItem(hwndDlg, IDC_KEYBOARD); + for (i=0; i< SetupData.KeybCount;i++) + { + tindex = SendMessage(hList,CB_ADDSTRING,(WPARAM)0,(LPARAM)SetupData.pKeyboards[i].Value); + SendMessage(hList,CB_SETITEMDATA,tindex,i); + } + SendMessage(hList,CB_SETCURSEL,0,0); // set first as default break; case WM_NOTIFY: { @@ -438,7 +480,27 @@ case PSN_QUERYCANCEL: SetWindowLong(hwndDlg, DWL_MSGRESULT,MessageBox(GetParent(hwndDlg), abort_msg, abort_title, MB_YESNO | MB_ICONQUESTION) != IDYES); return TRUE; - default: + case PSN_WIZNEXT: // set the selected data + hList =GetDlgItem(hwndDlg, IDC_COMPUTER); + tindex = SendMessage(hList,CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + if (tindex != CB_ERR) + { + SetupData.SelectedComputer = SendMessage(hList,CB_GETITEMDATA, (WPARAM)tindex, (LPARAM)0); + } + hList =GetDlgItem(hwndDlg, IDC_DISPLAY); + tindex = SendMessage(hList,CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + if (tindex != CB_ERR) + { + SetupData.SelectedDisplay = SendMessage(hList,CB_GETITEMDATA, (WPARAM)tindex, (LPARAM)0); + } + hList =GetDlgItem(hwndDlg, IDC_KEYBOARD); + tindex = SendMessage(hList,CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + if (tindex != CB_ERR) + { + SetupData.SelectedKeyboard = SendMessage(hList,CB_GETITEMDATA, (WPARAM)tindex, (LPARAM)0); + } + return TRUE; + default: break; } break; @@ -632,7 +694,6 @@ //TCHAR szValue[MAX_PATH]; DWORD LineLength; LONG Count; - //HKEY hKey;
GetModuleFileNameW(NULL,szPath,MAX_PATH); ch = strrchrW(szPath,L'\'); @@ -647,7 +708,6 @@ Count = SetupGetLineCount(hTxtsetupSif, _T("Language")); if (Count > 0) { - // TODO: alloc memory for all entries and read entries SetupData.pLanguages = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LANG) * Count); if (SetupData.pLanguages != NULL) { @@ -668,7 +728,6 @@ Count = SetupGetLineCount(hTxtsetupSif, _T("KeyboardLayout")); if (Count > 0) { - // TODO: alloc memory for all entries and read entries SetupData.pKbLayouts = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(KBLAYOUT) * Count); if (SetupData.pKbLayouts != NULL) { @@ -707,6 +766,66 @@ SetupData.DefaultLang = Count; break; } + } + // get computers list + Count = SetupGetLineCount(hTxtsetupSif, _T("Computer")); + if (Count > 0) + { + SetupData.pComputers = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GENENTRY) * Count); + if (SetupData.pComputers != NULL) + { + SetupData.CompCount = Count; + Count = 0; + if (SetupFindFirstLine(hTxtsetupSif, _T("Computer"), + NULL,&InfContext)) + do + { + SetupGetStringField(&InfContext, 0, SetupData.pComputers[Count].Id, sizeof(SetupData.pComputers[Count].Id) / sizeof(TCHAR), &LineLength); + SetupGetStringField(&InfContext, 1, SetupData.pComputers[Count].Value, sizeof(SetupData.pComputers[Count].Value) / sizeof(TCHAR), &LineLength); + ++Count; + } + while (SetupFindNextLine(&InfContext, &InfContext) && Count < SetupData.CompCount); + } + } + // get display list + Count = SetupGetLineCount(hTxtsetupSif, _T("Display")); + if (Count > 0) + { + SetupData.pDisplays = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GENENTRY) * Count); + if (SetupData.pDisplays != NULL) + { + SetupData.DispCount = Count; + Count = 0; + if (SetupFindFirstLine(hTxtsetupSif, _T("Display"), + NULL,&InfContext)) + do + { + SetupGetStringField(&InfContext, 0, SetupData.pDisplays[Count].Id, sizeof(SetupData.pDisplays[Count].Id) / sizeof(TCHAR), &LineLength); + SetupGetStringField(&InfContext, 1, SetupData.pDisplays[Count].Value, sizeof(SetupData.pDisplays[Count].Value) / sizeof(TCHAR), &LineLength); + ++Count; + } + while (SetupFindNextLine(&InfContext, &InfContext) && Count < SetupData.DispCount); + } + } + // get keyboard list + Count = SetupGetLineCount(hTxtsetupSif, _T("Keyboard")); + if (Count > 0) + { + SetupData.pKeyboards = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GENENTRY) * Count); + if (SetupData.pKeyboards != NULL) + { + SetupData.KeybCount = Count; + Count = 0; + if (SetupFindFirstLine(hTxtsetupSif, _T("Keyboard"), + NULL,&InfContext)) + do + { + SetupGetStringField(&InfContext, 0, SetupData.pKeyboards[Count].Id, sizeof(SetupData.pKeyboards[Count].Id) / sizeof(TCHAR), &LineLength); + SetupGetStringField(&InfContext, 1, SetupData.pKeyboards[Count].Value, sizeof(SetupData.pKeyboards[Count].Value) / sizeof(TCHAR), &LineLength); + ++Count; + } + while (SetupFindNextLine(&InfContext, &InfContext) && Count < SetupData.KeybCount); + } } SetupCloseInfFile(hTxtsetupSif); }