MGR: Fix sizes of task panes and buttons, ellipsing button text if needed

svn path=/trunk/boinc/; revision=25150
This commit is contained in:
Charlie Fenton 2012-01-25 12:30:44 +00:00
parent 8f1069ed4e
commit db9d7c60fe
2 changed files with 8 additions and 7 deletions

View File

@ -139,7 +139,7 @@ wxInt32 CBOINCTaskCtrl::UpdateTask( CTaskItem* pItem, wxString strName, wxString
} }
pItem->m_strName = strName; pItem->m_strName = strName;
pItem->m_strNameEllipsed = pItem->m_strName; pItem->m_strNameEllipsed = pItem->m_strName;
EllipseStringIfNeeded(pItem->m_strNameEllipsed, pItem->m_pButton); EllipseStringIfNeeded(pItem->m_strNameEllipsed);
pItem->m_strDescription = strDescription; pItem->m_strDescription = strDescription;
pItem->m_pButton->SetLabel( pItem->m_strNameEllipsed ); pItem->m_pButton->SetLabel( pItem->m_strNameEllipsed );
pItem->m_pButton->SetHelpText( strDescription ); pItem->m_pButton->SetHelpText( strDescription );
@ -188,8 +188,9 @@ wxInt32 CBOINCTaskCtrl::UpdateControls() {
if (!pItem->m_pButton) { if (!pItem->m_pButton) {
pItem->m_pButton = new wxButton; pItem->m_pButton = new wxButton;
pItem->m_strNameEllipsed = pItem->m_strName; pItem->m_strNameEllipsed = pItem->m_strName;
EllipseStringIfNeeded(pItem->m_strNameEllipsed, pItem->m_pButton); EllipseStringIfNeeded(pItem->m_strNameEllipsed);
pItem->m_pButton->Create(this, pItem->m_iEventID, pItem->m_strNameEllipsed, wxDefaultPosition, wxSize(TASKBUTTONWIDTH, -1), 0); pItem->m_pButton->Create(this, pItem->m_iEventID, pItem->m_strNameEllipsed, wxDefaultPosition, wxSize(TASKBUTTONWIDTH, -1), 0);
pItem->m_pButton->SetLabel( pItem->m_strNameEllipsed );
pItem->m_pButton->SetHelpText(pItem->m_strDescription); pItem->m_pButton->SetHelpText(pItem->m_strDescription);
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
pItem->m_pButton->SetToolTip(pItem->m_strName + wxT(": ") + pItem->m_strDescription); pItem->m_pButton->SetToolTip(pItem->m_strName + wxT(": ") + pItem->m_strDescription);
@ -251,23 +252,23 @@ bool CBOINCTaskCtrl::OnRestoreState(wxConfigBase* pConfig) {
} }
void CBOINCTaskCtrl::EllipseStringIfNeeded(wxString& s, wxWindow *win) { void CBOINCTaskCtrl::EllipseStringIfNeeded(wxString& s) {
int w, h; int w, h;
int maxWidth = TASKBUTTONWIDTH - 10; int maxWidth = TASKBUTTONWIDTH - 10;
win->GetTextExtent(s, &w, &h); GetTextExtent(s, &w, &h);
// Adapted from ellipis code in wxRendererGeneric::DrawHeaderButtonContents() // Adapted from ellipis code in wxRendererGeneric::DrawHeaderButtonContents()
if (w > maxWidth) { if (w > maxWidth) {
int ellipsisWidth; int ellipsisWidth;
win->GetTextExtent( wxT("..."), &ellipsisWidth, NULL); GetTextExtent( wxT("..."), &ellipsisWidth, NULL);
if (ellipsisWidth > maxWidth) { if (ellipsisWidth > maxWidth) {
s.Clear(); s.Clear();
w = 0; w = 0;
} else { } else {
do { do {
s.Truncate( s.length() - 1 ); s.Truncate( s.length() - 1 );
win->GetTextExtent( s, &w, &h); GetTextExtent( s, &w, &h);
} while (((w + ellipsisWidth) > maxWidth) && s.length() ); } while (((w + ellipsisWidth) > maxWidth) && s.length() );
s.append( wxT("...") ); s.append( wxT("...") );
} }

View File

@ -50,7 +50,7 @@ public:
virtual bool OnSaveState( wxConfigBase* pConfig ); virtual bool OnSaveState( wxConfigBase* pConfig );
virtual bool OnRestoreState( wxConfigBase* pConfig ); virtual bool OnRestoreState( wxConfigBase* pConfig );
void EllipseStringIfNeeded( wxString& s, wxWindow *win ); void EllipseStringIfNeeded( wxString& s );
private: private: