Index: choose.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/choose.cc,v retrieving revision 2.142 diff -p -b -u -r2.142 choose.cc --- choose.cc 9 Sep 2005 19:52:51 -0000 2.142 +++ choose.cc 12 Mar 2006 08:04:37 -0000 @@ -66,18 +66,40 @@ extern ThreeBarProgressPage Progress; Sizing information. */ static ControlAdjuster::ControlInfo ChooserControlsInfo[] = { - {IDC_CHOOSE_KEEP, CP_RIGHT, CP_TOP}, - {IDC_CHOOSE_PREV, CP_RIGHT, CP_TOP}, - {IDC_CHOOSE_CURR, CP_RIGHT, CP_TOP}, - {IDC_CHOOSE_EXP, CP_RIGHT, CP_TOP}, + {IDC_SELECTION_LABEL, CP_LEFT, CP_TOP}, + {IDC_CHOOSE_KEEP, CP_LEFT, CP_TOP}, + {IDC_CHOOSE_PREV, CP_LEFT, CP_TOP}, + {IDC_CHOOSE_CURR, CP_LEFT, CP_TOP}, + {IDC_CHOOSE_EXP, CP_LEFT, CP_TOP}, {IDC_CHOOSE_VIEW, CP_RIGHT, CP_TOP}, + {IDC_CHOOSE_VIEW_LABEL, CP_RIGHT, CP_TOP}, {IDC_LISTVIEW_POS, CP_RIGHT, CP_TOP}, - {IDC_CHOOSE_VIEWCAPTION, CP_RIGHT, CP_TOP}, {IDC_CHOOSE_LIST, CP_STRETCH, CP_STRETCH}, {IDC_CHOOSE_HIDE, CP_LEFT, CP_BOTTOM}, {0, CP_LEFT, CP_TOP} }; +/* + Combo box to view mode conversions. + */ + +#define VIEWMODE_NAME_MAX 60 +#define DEFAULT_VIEWMODE_NDX 0 + +static struct { + ULONG name_id; + const PickView::views mode; + TCHAR name_string[VIEWMODE_NAME_MAX]; +} ChooserViewModes [] = { + { IDS_VIEWMODE_CATEGORY, PickView::views::Category, { "Category" } }, + { IDS_VIEWMODE_FULL, PickView::views::PackageFull, { "Full" } }, + { IDS_VIEWMODE_PARTIAL, PickView::views::Package, { "Partial" } }, + { IDS_VIEWMODE_UP_TO_DATE, PickView::views::PackageKeeps, { "UpToDate" } }, + { IDS_VIEWMODE_NOT_INSTALLED, PickView::views::PackageSkips, { "UnInstalled" } }, +}; + +static const int NumChooserViewModes = sizeof (ChooserViewModes) / sizeof (ChooserViewModes[0]); + ChooserPage::ChooserPage () { sizeProcessor.AddControlInfo (ChooserControlsInfo); @@ -96,14 +118,22 @@ ChooserPage::createListview () chooser->Show(SW_SHOW); chooser->defaultTrust (TRUST_CURR); - chooser->setViewMode (PickView::views::Category); - if (!SetDlgItemText (GetHWND (), IDC_CHOOSE_VIEWCAPTION, chooser->mode_caption ())) - log (LOG_BABBLE) << "Failed to set View button caption %ld" << - GetLastError () << endLog; for_each (db.packages.begin(), db.packages.end(), bind2nd(mem_fun(&packagemeta::set_requirements), chooser->deftrust)); /* FIXME: do we need to init the desired fields ? */ - static int ta[] = { IDC_CHOOSE_KEEP, IDC_CHOOSE_PREV, IDC_CHOOSE_CURR, IDC_CHOOSE_EXP, 0 }; - rbset (GetHWND (), ta, IDC_CHOOSE_CURR); + combobox = GetDlgItem (IDC_CHOOSE_VIEW); + SendMessage (combobox, CB_RESETCONTENT, 0, 0); + for (int n = 0; n < NumChooserViewModes; n++) + { + LoadString (GetInstance (), ChooserViewModes[n].name_id, + &ChooserViewModes[n].name_string[0], VIEWMODE_NAME_MAX); + DWORD j = SendMessage (combobox, CB_ADDSTRING, 0, + (LPARAM) &ChooserViewModes[n].name_string[0]); + SendMessage (combobox, CB_SETITEMDATA, j, (LPARAM)n); + } + // Default view mode selection is first entry in combobox. + SendMessage (combobox, CB_SETCURSEL, DEFAULT_VIEWMODE_NDX, 0); + DWORD ndx = SendMessage (combobox, CB_GETITEMDATA, DEFAULT_VIEWMODE_NDX, 0); + chooser->setViewMode(ChooserViewModes[ndx].mode); } /* TODO: review ::overrides for possible consolidation */ @@ -253,6 +283,21 @@ ChooserPage::changeTrust(trusts aTrust) bool ChooserPage::OnMessageCmd (int id, HWND hwndctl, UINT code) { + if (id == IDC_CHOOSE_VIEW) + { + switch (code) + { + case CBN_SELENDOK: + DWORD sel = SendMessage (combobox, CB_GETCURSEL, 0, 0); + DWORD index = SendMessage (combobox, CB_GETITEMDATA, sel, 0); + chooser->setViewMode(ChooserViewModes[index].mode); + // handled + return true; + } + // not handled + return false; + } + if (code != BN_CLICKED) { // Not a click notification, we don't care. @@ -262,33 +307,21 @@ ChooserPage::OnMessageCmd (int id, HWND switch (id) { case IDC_CHOOSE_KEEP: - if (IsButtonChecked (id)) keepClicked(); break; case IDC_CHOOSE_PREV: - if (IsButtonChecked (id)) changeTrust (TRUST_PREV); break; case IDC_CHOOSE_CURR: - if (IsButtonChecked (id)) changeTrust (TRUST_CURR); break; case IDC_CHOOSE_EXP: - if (IsButtonChecked (id)) changeTrust (TRUST_TEST); break; - case IDC_CHOOSE_VIEW: - chooser->cycleViewMode (); - if (!SetDlgItemText - (GetHWND (), IDC_CHOOSE_VIEWCAPTION, chooser->mode_caption ())) - log (LOG_BABBLE) << "Failed to set View button caption " << - GetLastError () << endLog; - break; - case IDC_CHOOSE_HIDE: chooser->setObsolete (!IsButtonChecked (id)); break; Index: choose.h =================================================================== RCS file: /cvs/cygwin-apps/setup/choose.h,v retrieving revision 2.36 diff -p -b -u -r2.36 choose.h --- choose.h 21 May 2005 23:04:02 -0000 2.36 +++ choose.h 12 Mar 2006 08:04:37 -0000 @@ -53,6 +53,7 @@ public: void logResults(); void setPrompt(char const *aPrompt); PickView *chooser; + HWND combobox; }; #endif /* SETUP_CHOOSE_H */ Index: res.rc =================================================================== RCS file: /cvs/cygwin-apps/setup/res.rc,v retrieving revision 2.70 diff -p -b -u -r2.70 res.rc --- res.rc 10 Mar 2006 17:18:20 -0000 2.70 +++ res.rc 12 Mar 2006 08:04:37 -0000 @@ -311,15 +311,14 @@ STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHI CAPTION "Cygwin Setup - Select Packages" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "&Keep",IDC_CHOOSE_KEEP,"Button",BS_AUTORADIOBUTTON | - WS_GROUP | WS_TABSTOP,99,30,30,14 - CONTROL "&Prev",IDC_CHOOSE_PREV,"Button",BS_AUTORADIOBUTTON , - 134,30,27,14 - CONTROL "&Curr",IDC_CHOOSE_CURR,"Button",BS_AUTORADIOBUTTON , - 169,30,25,14 - CONTROL "E&xp",IDC_CHOOSE_EXP,"Button",BS_AUTORADIOBUTTON , - 204,30,25,14 - PUSHBUTTON "&View",IDC_CHOOSE_VIEW,239,30,26,14,WS_GROUP + PUSHBUTTON "&Keep",IDC_CHOOSE_KEEP,67,31,21,13,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Prev",IDC_CHOOSE_PREV,89,31,21,13, WS_TABSTOP + PUSHBUTTON "&Curr",IDC_CHOOSE_CURR,111,31,21,13, WS_TABSTOP + PUSHBUTTON "E&xp",IDC_CHOOSE_EXP,133,31,21,13, WS_TABSTOP + LTEXT "Set selection to...",IDC_SELECTION_LABEL,9,33,56,8 + LTEXT "&View:",IDC_CHOOSE_VIEW_LABEL,187,32,18,8 + COMBOBOX IDC_CHOOSE_VIEW,209,31,102,96,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, 317,1 CONTROL "",IDC_LISTVIEW_POS,"Static",SS_BLACKFRAME | NOT @@ -331,7 +330,6 @@ BEGIN IDC_CHOOSE_INST_TEXT,21,9,239,16,NOT WS_GROUP LTEXT "Select Packages",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP - LTEXT "",IDC_CHOOSE_VIEWCAPTION,270,33,40,10 END IDD_PREREQ DIALOG DISCARDABLE 0, 0, 317, 179 @@ -479,4 +477,13 @@ BEGIN "with names that begin with '_'. Such packages are usually empty " "placeholders for packages that have been removed or renamed, or are " "infrastructure packages that are handled automatically." -END + IDS_VIEWMODE_CATEGORY "Category" + IDS_VIEWMODE_FULL "Full" + IDS_VIEWMODE_PARTIAL "Partial" + IDS_VIEWMODE_UP_TO_DATE "Up To Date" + IDS_VIEWMODE_NOT_INSTALLED "Not Installed" + + + + + END Index: resource.h =================================================================== RCS file: /cvs/cygwin-apps/setup/resource.h,v retrieving revision 2.33 diff -p -b -u -r2.33 resource.h --- resource.h 10 Mar 2006 17:18:20 -0000 2.33 +++ resource.h 12 Mar 2006 08:04:37 -0000 @@ -31,6 +31,11 @@ #define IDS_TRUSTEXP_TOOLTIP 128 #define IDS_VIEWBUTTON_TOOLTIP 129 #define IDS_HIDEOBS_TOOLTIP 130 +#define IDS_VIEWMODE_CATEGORY 131 +#define IDS_VIEWMODE_FULL 132 +#define IDS_VIEWMODE_PARTIAL 133 +#define IDS_VIEWMODE_UP_TO_DATE 134 +#define IDS_VIEWMODE_NOT_INSTALLED 135 // Dialogs @@ -121,7 +126,7 @@ #define IDC_DLS_PPROGRESS_TEXT 544 #define IDC_DLS_IPROGRESS_TEXT 545 #define IDC_CHOOSE_INST_TEXT 546 -#define IDC_CHOOSE_VIEWCAPTION 547 +#define IDC_CHOOSE_VIEW_LABEL 547 #define IDC_CHOOSE_LISTHEADER 548 #define IDC_INS_BL_PACKAGE 549 #define IDC_INS_BL_TOTAL 550 @@ -155,3 +160,4 @@ #define IDC_PREREQ_CHECK 578 #define IDC_DROP_MIRRORS 579 #define IDC_DROP_NOWARN 580 +#define IDC_SELECTION_LABEL 581