linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #02770
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2355: better button sizes; fix file list searching; more icons
------------------------------------------------------------
revno: 2355
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Mon 2010-12-20 18:19:41 +0100
message:
better button sizes; fix file list searching; more icons
added:
res/Cancel.ico
res/Left.ico
res/OK.ico
res/Right.ico
modified:
dwt/include/dwt/widgets/Button.h
dwt/src/widgets/Button.cpp
res/Magnet.ico
win32/DCPlusPlus.rc
win32/DirectoryListingFrame.cpp
win32/DirectoryListingFrame.h
win32/SearchFrame.cpp
win32/SettingsDialog.cpp
win32/WinUtil.cpp
win32/WinUtil.h
win32/resource.h
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dwt/include/dwt/widgets/Button.h'
--- dwt/include/dwt/widgets/Button.h 2010-10-28 20:31:03 +0000
+++ dwt/include/dwt/widgets/Button.h 2010-12-20 17:19:41 +0000
@@ -83,6 +83,9 @@
void create(const Seed& cs = Seed());
+ void setImage(BitmapPtr bitmap);
+ void setImage(IconPtr icon);
+
virtual Point getPreferedSize();
protected:
@@ -94,8 +97,6 @@
friend class ChainingDispatcher;
static const TCHAR windowClass[];
- Point padding;
-
// Contract needed by AspectClickable Aspect class
static Message getClickMessage();
=== modified file 'dwt/src/widgets/Button.cpp'
--- dwt/src/widgets/Button.cpp 2010-02-11 21:44:13 +0000
+++ dwt/src/widgets/Button.cpp 2010-12-20 17:19:41 +0000
@@ -30,6 +30,7 @@
*/
#include <dwt/widgets/Button.h>
+
#include <dwt/CanvasClasses.h>
namespace dwt {
@@ -48,15 +49,28 @@
if(cs.font)
setFont(cs.font);
- padding.x = ::GetSystemMetrics(SM_CYFIXEDFRAME) * 2 + cs.padding.x * 2;
- padding.y = ::GetSystemMetrics(SM_CXFIXEDFRAME) * 2 + cs.padding.y * 2;
+ ::RECT rect = { cs.padding.x, cs.padding.y, cs.padding.x, cs.padding.y };
+ sendMessage(BCM_SETTEXTMARGIN, 0, reinterpret_cast<LPARAM>(&rect));
+}
+
+void Button::setImage(BitmapPtr bitmap) {
+ sendMessage(BM_SETIMAGE, IMAGE_BITMAP, reinterpret_cast<LPARAM>(bitmap->handle()));
+}
+
+void Button::setImage(IconPtr icon) {
+ sendMessage(BM_SETIMAGE, IMAGE_ICON, reinterpret_cast<LPARAM>(icon->handle()));
}
Point Button::getPreferedSize() {
- // TODO Consider icons etc
+ SIZE size = { 0 };
+ if(sendMessage(BCM_GETIDEALSIZE, 0, reinterpret_cast<LPARAM>(&size))) {
+ return Point(size.cx, size.cy);
+ }
+
+ // BCM_GETIDEALSIZE fails on comctrl < 6, so resort to the standard method
UpdateCanvas c(this);
c.selectFont(getFont());
- return c.getTextExtent(getText()) + padding;
+ return c.getTextExtent(getText()) + Point(3, 2) + Point(::GetSystemMetrics(SM_CYFIXEDFRAME) * 2, ::GetSystemMetrics(SM_CXFIXEDFRAME) * 2);
}
}
=== added file 'res/Cancel.ico'
Binary files res/Cancel.ico 1970-01-01 00:00:00 +0000 and res/Cancel.ico 2010-12-20 17:19:41 +0000 differ
=== added file 'res/Left.ico'
Binary files res/Left.ico 1970-01-01 00:00:00 +0000 and res/Left.ico 2010-12-20 17:19:41 +0000 differ
=== modified file 'res/Magnet.ico'
Binary files res/Magnet.ico 2007-02-28 10:10:50 +0000 and res/Magnet.ico 2010-12-20 17:19:41 +0000 differ
=== added file 'res/OK.ico'
Binary files res/OK.ico 1970-01-01 00:00:00 +0000 and res/OK.ico 2010-12-20 17:19:41 +0000 differ
=== added file 'res/Right.ico'
Binary files res/Right.ico 1970-01-01 00:00:00 +0000 and res/Right.ico 2010-12-20 17:19:41 +0000 differ
=== modified file 'win32/DCPlusPlus.rc'
--- win32/DCPlusPlus.rc 2010-12-11 23:50:40 +0000
+++ win32/DCPlusPlus.rc 2010-12-20 17:19:41 +0000
@@ -89,6 +89,10 @@
IDI_LINKS ICON "res/Links.ico"
IDI_REFRESH ICON "res/Refresh.ico"
IDI_SLOTS ICON "res/Slots.ico"
+IDI_OK ICON "res/OK.ico"
+IDI_CANCEL ICON "res/Cancel.ico"
+IDI_LEFT ICON "res/Left.ico"
+IDI_RIGHT ICON "res/Right.ico"
/////////////////////////////////////////////////////////////////////////////
//
=== modified file 'win32/DirectoryListingFrame.cpp'
--- win32/DirectoryListingFrame.cpp 2010-12-19 14:06:31 +0000
+++ win32/DirectoryListingFrame.cpp 2010-12-20 17:19:41 +0000
@@ -234,27 +234,29 @@
cs.caption = T_("Find");
find = addChild(cs);
find->setHelpId(IDH_FILE_LIST_FIND);
+ find->setImage(WinUtil::buttonIcon(IDI_SEARCH));
find->onClicked(std::bind(&DirectoryListingFrame::handleFind, this, FIND_START));
cs.caption = T_("Previous");
findPrev = addChild(cs);
findPrev->setHelpId(IDH_FILE_LIST_PREV);
+ findPrev->setImage(WinUtil::buttonIcon(IDI_LEFT));
findPrev->onClicked(std::bind(&DirectoryListingFrame::handleFind, this, FIND_PREV));
cs.caption = T_("Next");
findNext = addChild(cs);
findNext->setHelpId(IDH_FILE_LIST_NEXT);
+ findNext->setImage(WinUtil::buttonIcon(IDI_RIGHT));
findNext->onClicked(std::bind(&DirectoryListingFrame::handleFind, this, FIND_NEXT));
}
initStatus();
- // This will set the widths correctly
- status->setText(STATUS_FILE_LIST_DIFF, T_("Subtract list"));
- status->setText(STATUS_MATCH_QUEUE, T_("Match queue"));
- status->setText(STATUS_FIND, T_("Find"));
- status->setText(STATUS_PREV, T_("Previous"));
- status->setText(STATUS_NEXT, T_("Next"));
+ status->setSize(STATUS_FILE_LIST_DIFF, listDiff->getPreferedSize().x);
+ status->setSize(STATUS_MATCH_QUEUE, matchQueue->getPreferedSize().x);
+ status->setSize(STATUS_FIND, find->getPreferedSize().x);
+ status->setSize(STATUS_PREV, findPrev->getPreferedSize().x);
+ status->setSize(STATUS_NEXT, findNext->getPreferedSize().x);
treeRoot = dirs->insert(NULL, new ItemInfo(true, dl->getRoot()));
@@ -388,7 +390,7 @@
menu->setTitle(escapeMenu(ii->getText(COLUMN_FILENAME)), WinUtil::fileImages->getIcon(ii->getImage()));
- menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
+ menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
addTargets(menu, ii);
if(ii->type == ItemInfo::FILE) {
@@ -415,7 +417,7 @@
size_t sel = files->countSelected();
menu->setTitle(str(TF_("%1% items") % sel), getParent()->getIcon(this));
- menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
+ menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
addTargets(menu);
addUserCommands(menu);
@@ -428,7 +430,7 @@
menu->setTitle(escapeMenu(ii ? ii->getText(COLUMN_FILENAME) : getText()),
ii ? WinUtil::fileImages->getIcon(ii->getImage()) : getParent()->getIcon(this));
- menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
+ menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
addTargets(menu);
return menu;
}
@@ -850,7 +852,7 @@
}
}
-pair<HTREEITEM, int> DirectoryListingFrame::findFile(const StringSearch& str, bool reverse, HTREEITEM item, int pos) {
+pair<HTREEITEM, int> DirectoryListingFrame::findFile(const StringSearch& str, bool reverse, HTREEITEM item, int pos, vector<HTREEITEM>& collapse) {
// try to match the names currently in the list pane
const int n = files->size();
if(reverse && pos == -1)
@@ -863,24 +865,22 @@
}
// flow to the next directory
+ if(!reverse && dirs->getChild(item) && !dirs->isExpanded(item)) {
+ dirs->expand(item);
+ collapse.push_back(item);
+ }
HTREEITEM next = dirs->getNext(item, reverse ? TVGN_PREVIOUSVISIBLE : TVGN_NEXTVISIBLE);
if(next) {
- HTREEITEM collapse = nullptr;
- if(dirs->getChild(next) && !dirs->isExpanded(next)) {
+ if(reverse && dirs->getChild(next) && !dirs->isExpanded(next)) {
dirs->expand(next);
- collapse = next;
- next = dirs->getNext(item, reverse ? TVGN_PREVIOUSVISIBLE : TVGN_NEXTVISIBLE);
+ collapse.push_back(next);
+ next = dirs->getNext(item, TVGN_PREVIOUSVISIBLE);
}
// refresh the list pane to respect sorting etc
changeDir(dirs->getData(next)->dir);
- auto ret = findFile(str, reverse, next, -1);
-
- if(collapse)
- dirs->collapse(collapse);
-
- return ret;
+ return findFile(str, reverse, next, -1, collapse);
}
return make_pair(nullptr, 0);
@@ -911,8 +911,6 @@
HoldRedraw hold2(dirs);
HoldRedraw hold3(status);
- // Do a search
-
HTREEITEM const oldDir = dirs->getSelected();
auto selectDir = [this, oldDir](HTREEITEM newDir) {
@@ -929,7 +927,10 @@
files->clearSelection();
}
- auto search = findFile(StringSearch(findStr), mode == FIND_PREV, (mode == FIND_START) ? treeRoot : oldDir, files->getSelected());
+ vector<HTREEITEM> collapse;
+ auto search = findFile(StringSearch(findStr), mode == FIND_PREV, (mode == FIND_START) ? treeRoot : oldDir, files->getSelected(), collapse);
+ for(auto i = collapse.cbegin(), iend = collapse.cend(); i != iend; ++i)
+ dirs->collapse(*i);
if(search.first) {
selectDir(search.first);
=== modified file 'win32/DirectoryListingFrame.h'
--- win32/DirectoryListingFrame.h 2010-12-18 16:47:53 +0000
+++ win32/DirectoryListingFrame.h 2010-12-20 17:19:41 +0000
@@ -260,7 +260,7 @@
void updateStatus();
void findFile(FindMode mode);
- pair<HTREEITEM, int> findFile(const StringSearch& str, bool reverse, HTREEITEM item, int pos);
+ pair<HTREEITEM, int> findFile(const StringSearch& str, bool reverse, HTREEITEM item, int pos, vector<HTREEITEM>& collapse);
// MDIChildFrame
void tabMenuImpl(dwt::MenuPtr& menu);
=== modified file 'win32/SearchFrame.cpp'
--- win32/SearchFrame.cpp 2010-12-10 22:16:24 +0000
+++ win32/SearchFrame.cpp 2010-12-20 17:19:41 +0000
@@ -710,7 +710,7 @@
menu->setTitle(checkTTH.hasTTH ? escapeMenu(checkTTH.name) : str(TF_("%1% results") % results->countSelected()),
getParent()->getIcon(this));
- menu->appendItem(T_("&Download"), std::bind(&SearchFrame::handleDownload, this), dwt::IconPtr(), true, true);
+ menu->appendItem(T_("&Download"), std::bind(&SearchFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
addTargetMenu(menu, favoriteDirs, checkTTH);
menu->appendItem(T_("Download whole directory"), std::bind(&SearchFrame::handleDownloadDir, this));
addTargetDirMenu(menu, favoriteDirs);
=== modified file 'win32/SettingsDialog.cpp'
--- win32/SettingsDialog.cpp 2010-12-11 23:50:40 +0000
+++ win32/SettingsDialog.cpp 2010-12-20 17:19:41 +0000
@@ -173,6 +173,7 @@
seed.padding.x = 10;
ButtonPtr button = cur->addChild(seed);
button->setHelpId(IDH_DCPP_HELP);
+ button->setImage(WinUtil::buttonIcon(IDI_HELP));
button->onClicked(std::bind(&SettingsDialog::handleHelp, this, this, IDH_INDEX));
}
=== modified file 'win32/WinUtil.cpp'
--- win32/WinUtil.cpp 2010-12-12 14:58:25 +0000
+++ win32/WinUtil.cpp 2010-12-20 17:19:41 +0000
@@ -639,9 +639,9 @@
}
void WinUtil::addHashItems(const dwt::Menu::ObjectType& menu, const TTHValue& tth, const tstring& filename, int64_t size) {
- menu->appendItem(T_("Search for alternates"), std::bind(&WinUtil::searchHash, tth));
+ menu->appendItem(T_("Search for alternates"), std::bind(&WinUtil::searchHash, tth), menuIcon(IDI_SEARCH));
menu->appendItem(T_("Lookup TTH at Bitzi.com"), std::bind(WinUtil::bitziLink, tth));
- menu->appendItem(T_("Copy magnet link to clipboard"), std::bind(&WinUtil::copyMagnet, tth, filename, size));
+ menu->appendItem(T_("Copy magnet link to clipboard"), std::bind(&WinUtil::copyMagnet, tth, filename, size), menuIcon(IDI_MAGNET));
}
void WinUtil::bitziLink(const TTHValue& aHash) {
@@ -959,6 +959,7 @@
seed.padding.x = 20;
ButtonPtr ok = grid->addChild(seed);
ok->setHelpId(IDH_DCPP_OK);
+ ok->setImage(buttonIcon(IDI_OK));
ok->onClicked(f_ok);
seed.caption = T_("Cancel");
@@ -966,6 +967,7 @@
seed.padding.x = 10;
ButtonPtr cancel = grid->addChild(seed);
cancel->setHelpId(IDH_DCPP_CANCEL);
+ cancel->setImage(buttonIcon(IDI_CANCEL));
cancel->onClicked(f_cancel);
return make_pair(ok, cancel);
=== modified file 'win32/WinUtil.h'
--- win32/WinUtil.h 2010-12-11 23:50:40 +0000
+++ win32/WinUtil.h 2010-12-20 17:19:41 +0000
@@ -220,6 +220,7 @@
/* utility functions to create icons. use these throughout the prog to make it easier to change
sizes globally should the need arise to later on. */
static dwt::IconPtr createIcon(unsigned id, long size);
+ static inline dwt::IconPtr buttonIcon(unsigned id) { return createIcon(id, 16); }
static inline dwt::IconPtr menuIcon(unsigned id) { return createIcon(id, 16); }
static inline dwt::IconPtr statusIcon(unsigned id) { return createIcon(id, 16); }
static inline dwt::IconPtr tabIcon(unsigned id) { return createIcon(id, 16); }
=== modified file 'win32/resource.h'
--- win32/resource.h 2010-08-29 15:42:38 +0000
+++ win32/resource.h 2010-12-20 17:19:41 +0000
@@ -47,6 +47,10 @@
#define IDI_LINKS 139
#define IDI_REFRESH 140
#define IDI_SLOTS 141
+#define IDI_OK 142
+#define IDI_CANCEL 143
+#define IDI_LEFT 144
+#define IDI_RIGHT 145
#define IDB_FOLDERS 151
#define IDB_USERS 154