From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2201) id DF46F3858422; Fri, 1 Oct 2021 13:14:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DF46F3858422 To: cygwin-apps-cvs@sourceware.org Subject: [setup - the official Cygwin setup program] branch master, updated. release_2.909-16-g6ddcf16b X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 62ab80bfc963d9841b30790ba3ad70ff88e8c3bb X-Git-Newrev: 6ddcf16baab947863d1750d452057fc151e73b7f Message-Id: <20211001131435.DF46F3858422@sourceware.org> Date: Fri, 1 Oct 2021 13:14:35 +0000 (GMT) From: Jon TURNEY X-BeenThere: cygwin-apps-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin-apps git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Oct 2021 13:14:36 -0000 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=6ddcf16baab947863d1750d452057fc151e73b7f commit 6ddcf16baab947863d1750d452057fc151e73b7f Author: Jon Turney Date: Mon May 10 16:39:37 2021 +0100 Move column header strings to string table resource https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=f7711c51c965bcf685392332d092f474c27cb58f commit f7711c51c965bcf685392332d092f474c27cb58f Author: Jon Turney Date: Mon May 10 15:18:24 2021 +0100 Move view mode strings to string table resource https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=35ee780b29a05a8189ef7cba5bac0ff514ad481c commit 35ee780b29a05a8189ef7cba5bac0ff514ad481c Author: Jon Turney Date: Mon May 10 15:36:39 2021 +0100 Use package action strings from resources for column width Use the package action strings from string table resource for computing the column width. (This should have been done as part of f34a20e7, but we didn't notice the strings were also duplicated here.) This requires a bit of enhancement to ListView::noteColumnWidth() to work for wstrings as well. Diff: --- ListView.cc | 29 +++++++++++++++++++++++++---- ListView.h | 5 +++-- PickView.cc | 29 ++++++++++++++++------------- PickView.h | 2 +- choose.cc | 17 +++++++++-------- res.rc | 13 +++++++++++++ resource.h | 13 +++++++++++++ 7 files changed, 80 insertions(+), 28 deletions(-) diff --git a/ListView.cc b/ListView.cc index 9966fbd9..dc420e2c 100644 --- a/ListView.cc +++ b/ListView.cc @@ -108,18 +108,20 @@ ListView::initColumns(HeaderList headers_) headers = headers_; // create the columns - LVCOLUMN lvc; + LVCOLUMNW lvc; lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; int i; for (i = 0; headers[i].text != 0; i++) { + std::wstring h = LoadStringW(headers[i].text); + lvc.iSubItem = i; - lvc.pszText = const_cast (headers[i].text); + lvc.pszText = const_cast (h.c_str()); lvc.cx = 100; lvc.fmt = headers[i].fmt; - ListView_InsertColumn(hWndListView, i, &lvc); + SendMessage(hWndListView, LVM_INSERTCOLUMNW, i, (LPARAM)&lvc); } // now do some width calculations @@ -149,8 +151,23 @@ ListView::noteColumnWidthStart() } } +// wrappers to help instantiations of the noteColumnWidth() template call the +// right version of GetTextExtentPoint32 +#undef GetTextExtentPoint32 + +static BOOL GetTextExtentPoint32(HDC hdc, LPCSTR lpString, int c, LPSIZE psizl) +{ + return GetTextExtentPoint32A(hdc, lpString, c, psizl); +} + +static BOOL GetTextExtentPoint32(HDC hdc, LPCWSTR lpString, int c, LPSIZE psizl) +{ + return GetTextExtentPoint32W(hdc, lpString, c, psizl); +} + +template void -ListView::noteColumnWidth(int col_num, const std::string& string) +ListView::noteColumnWidth(int col_num, const T& string) { SIZE s = { 0, 0 }; @@ -173,6 +190,10 @@ ListView::noteColumnWidth(int col_num, const std::string& string) headers[col_num].width = width; } +// explicit instantiation +template void ListView::noteColumnWidth(int col_num, const std::string& string); +template void ListView::noteColumnWidth(int col_num, const std::wstring& wstring); + void ListView::noteColumnWidthEnd() { diff --git a/ListView.h b/ListView.h index d6a5e32f..8c43fcc7 100644 --- a/ListView.h +++ b/ListView.h @@ -56,7 +56,7 @@ class ListView class Header { public: - const char *text; + unsigned int text; // resource id of header text int fmt; ControlType type; int width; @@ -67,7 +67,8 @@ class ListView void init(HWND parent, int id, HeaderList headers); void noteColumnWidthStart(); - void noteColumnWidth(int col_num, const std::string& string); + template + void noteColumnWidth(int col_num, const T& string); void noteColumnWidthEnd(); void resizeColumns(void); diff --git a/PickView.cc b/PickView.cc index ac07687a..c961b9f2 100644 --- a/PickView.cc +++ b/PickView.cc @@ -96,25 +96,25 @@ PickView::getViewMode () return view_mode; } -const char * +unsigned int PickView::mode_caption (views mode) { switch (mode) { case views::PackageFull: - return "Full"; + return IDS_VIEW_FULL; case views::PackagePending: - return "Pending"; + return IDS_VIEW_PENDING; case views::PackageKeeps: - return "Up To Date"; + return IDS_VIEW_UPTODATE; case views::PackageSkips: - return "Not Installed"; + return IDS_VIEW_NOTINSTALLED; case views::PackageUserPicked: - return "Picked"; + return IDS_VIEW_PICKED; case views::Category: - return "Category"; + return IDS_VIEW_CATEGORY; default: - return ""; + return 0; } } @@ -238,7 +238,7 @@ PickView::init_headers (void) // width of the 'src' checkbox column just needs to accommodate the // column name - listview->noteColumnWidth (srctick_col, ""); + listview->noteColumnWidth (srctick_col, std::string("")); // (In category view) accommodate the width of each category name packagedb db; @@ -295,11 +295,14 @@ PickView::init_headers (void) } } - // ensure that the new_col is wide enough for all the labels - const char *captions[] = { "Uninstall", "Skip", "Reinstall", "Retrieve", - "Source", "Keep", NULL }; + // also ensure that new_col is wide enough for all the action labels + unsigned int captions[] = { + IDS_ACTION_UNINSTALL, IDS_ACTION_SKIP, IDS_ACTION_REINSTALL, + IDS_ACTION_RETRIEVE, IDS_ACTION_SOURCE, IDS_ACTION_KEEP, + IDS_ACTION_UNKNOWN, 0 + }; for (int i = 0; captions[i]; i++) - listview->noteColumnWidth (new_col, captions[i]); + listview->noteColumnWidth (new_col, LoadStringW(captions[i])); listview->noteColumnWidthEnd(); listview->resizeColumns(); diff --git a/PickView.h b/PickView.h index 2db0562c..1e14a74e 100644 --- a/PickView.h +++ b/PickView.h @@ -46,7 +46,7 @@ public: views getViewMode (); void init(views _mode, ListView *_listview, Window *parent); void build_category_tree(); - static const char *mode_caption (views mode); + static unsigned int mode_caption (views mode); void setObsolete (bool doit); void refresh(); void init_headers (); diff --git a/choose.cc b/choose.cc index 51d7197e..44148283 100644 --- a/choose.cc +++ b/choose.cc @@ -131,13 +131,13 @@ ChooserPage::~ChooserPage () } static ListView::Header pkg_headers[] = { - {"Package", LVCFMT_LEFT, ListView::ControlType::text}, - {"Current", LVCFMT_LEFT, ListView::ControlType::text}, - {"New", LVCFMT_LEFT, ListView::ControlType::popup}, - {"Src?", LVCFMT_LEFT, ListView::ControlType::checkbox}, - {"Categories", LVCFMT_LEFT, ListView::ControlType::text}, - {"Size", LVCFMT_RIGHT, ListView::ControlType::text}, - {"Description", LVCFMT_LEFT, ListView::ControlType::text}, + {IDS_COLUMN_PACKAGE, LVCFMT_LEFT, ListView::ControlType::text}, + {IDS_COLUMN_CURRENT, LVCFMT_LEFT, ListView::ControlType::text}, + {IDS_COLUMN_NEW, LVCFMT_LEFT, ListView::ControlType::popup}, + {IDS_COLUMN_SOURCE, LVCFMT_LEFT, ListView::ControlType::checkbox}, + {IDS_COLUMN_CATEGORIES, LVCFMT_LEFT, ListView::ControlType::text}, + {IDS_COLUMN_SIZE, LVCFMT_RIGHT, ListView::ControlType::text}, + {IDS_COLUMN_DESCR, LVCFMT_LEFT, ListView::ControlType::text}, {0} }; @@ -262,7 +262,8 @@ ChooserPage::OnInit () view <= (int)PickView::views::Category; view++) { - SendMessage(viewlist, CB_ADDSTRING, 0, (LPARAM)PickView::mode_caption((PickView::views)view)); + std::wstring mode = LoadStringW(PickView::mode_caption((PickView::views)view)); + SendMessageW(viewlist, CB_ADDSTRING, 0, (LPARAM)mode.c_str()); } if (source == IDC_SOURCE_DOWNLOAD) diff --git a/res.rc b/res.rc index 5fc8f243..c3d075ef 100644 --- a/res.rc +++ b/res.rc @@ -628,4 +628,17 @@ BEGIN IDS_ACTION_RETRIEVE "Retrieve" IDS_ACTION_UNKNOWN "Unknown" IDS_ACTION_SOURCE "Source" + IDS_VIEW_FULL "Full" + IDS_VIEW_PENDING "Pending" + IDS_VIEW_UPTODATE "Up To Date" + IDS_VIEW_NOTINSTALLED "Not Installed" + IDS_VIEW_PICKED "Picked" + IDS_VIEW_CATEGORY "Category" + IDS_COLUMN_PACKAGE "Package" + IDS_COLUMN_CURRENT "Current" + IDS_COLUMN_NEW "New" + IDS_COLUMN_SOURCE "Src?" + IDS_COLUMN_CATEGORIES "Categories" + IDS_COLUMN_SIZE "Size" + IDS_COLUMN_DESCR "Description" END diff --git a/resource.h b/resource.h index f377e572..463cfafa 100644 --- a/resource.h +++ b/resource.h @@ -63,6 +63,19 @@ #define IDS_ACTION_RETRIEVE 163 #define IDS_ACTION_UNKNOWN 164 #define IDS_ACTION_SOURCE 165 +#define IDS_VIEW_FULL 166 +#define IDS_VIEW_PENDING 167 +#define IDS_VIEW_UPTODATE 168 +#define IDS_VIEW_NOTINSTALLED 169 +#define IDS_VIEW_PICKED 170 +#define IDS_VIEW_CATEGORY 171 +#define IDS_COLUMN_PACKAGE 172 +#define IDS_COLUMN_CURRENT 173 +#define IDS_COLUMN_NEW 174 +#define IDS_COLUMN_SOURCE 175 +#define IDS_COLUMN_CATEGORIES 176 +#define IDS_COLUMN_SIZE 177 +#define IDS_COLUMN_DESCR 178 // Dialogs