- MGR: Fix a long standing bug where the project list control

for the account manager info page and the project info page
        was not consuming available screen space.  Previously
        we hacked around it by setting an explicit size.
        
        Note: this works on Windows, I don't yet know about Mac and
          Linux.
          
    clientgui/
        AccountManagerInfoPage.cpp, .h
        ProjectInfoPage.cpp
        ProjectListCtrl.cpp, .h

svn path=/branches/boinc_core_release_6_8/; revision=18468
This commit is contained in:
Rom Walton 2009-06-19 18:03:10 +00:00
parent af51ccdefd
commit facf56c1bb
6 changed files with 114 additions and 84 deletions

View File

@ -5766,3 +5766,17 @@ Rom 19 June 2009
UnavailablePage.cpp
WelcomePage.cpp, .h
WizardAttachProject.cpp
Rom 19 June 2009
- MGR: Fix a long standing bug where the project list control
for the account manager info page and the project info page
was not consuming available screen space. Previously
we hacked around it by setting an explicit size.
Note: this works on Windows, I don't yet know about Mac and
Linux.
clientgui/
AccountManagerInfoPage.cpp, .h
ProjectInfoPage.cpp
ProjectListCtrl.cpp, .h

View File

@ -25,6 +25,7 @@
#include "mfile.h"
#include "miofile.h"
#include "parse.h"
#include "str_util.h"
#include "error_numbers.h"
#include "wizardex.h"
#include "error_numbers.h"
@ -60,6 +61,7 @@ BEGIN_EVENT_TABLE( CAccountManagerInfoPage, wxWizardPageEx )
END_EVENT_TABLE()
/*!
* CAccountManagerInfoPage constructors
*/
@ -73,8 +75,9 @@ CAccountManagerInfoPage::CAccountManagerInfoPage( CBOINCBaseWizard* parent )
Create( parent );
}
/*!
* CProjectInfoPage creator
* CAccountManagerInfoPage creator
*/
bool CAccountManagerInfoPage::Create( CBOINCBaseWizard* parent )
@ -98,8 +101,9 @@ bool CAccountManagerInfoPage::Create( CBOINCBaseWizard* parent )
return TRUE;
}
/*!
* Control creation for CProjectInfoPage
* Control creation for CAccountManagerInfoPage
*/
void CAccountManagerInfoPage::CreateControls()
@ -125,7 +129,7 @@ void CAccountManagerInfoPage::CreateControls()
itemBoxSizer24->Add(itemFlexGridSizer3, 1, wxGROW|wxALL, 5);
m_pProjectListCtrl = new CProjectListCtrl;
m_pProjectListCtrl->Create( itemWizardPage23, wxSize(250,155) );
m_pProjectListCtrl->Create( itemWizardPage23 );
itemFlexGridSizer3->Add(m_pProjectListCtrl, 0, wxGROW|wxRIGHT, 10);
wxFlexGridSizer* itemFlexGridSizer11 = new wxFlexGridSizer(2, 1, 0, 0);
@ -153,21 +157,87 @@ void CAccountManagerInfoPage::CreateControls()
////@end CAccountManagerInfoPage content construction
}
/*!
* Gets the previous page.
*/
wxWizardPageEx* CAccountManagerInfoPage::GetPrev() const
{
return PAGE_TRANSITION_BACK;
}
/*!
* Gets the next page.
*/
wxWizardPageEx* CAccountManagerInfoPage::GetNext() const
{
if (CHECK_CLOSINGINPROGRESS()) {
// Cancel Event Detected
return PAGE_TRANSITION_NEXT(ID_COMPLETIONERRORPAGE);
} else {
return PAGE_TRANSITION_NEXT(ID_ACCOUNTMANAGERPROPERTIESPAGE);
}
return NULL;
}
/*!
* Should we show tooltips?
*/
bool CAccountManagerInfoPage::ShowToolTips()
{
return TRUE;
}
/*!
* Get bitmap resources
*/
wxBitmap CAccountManagerInfoPage::GetBitmapResource( const wxString& WXUNUSED(name) )
{
// Bitmap retrieval
////@begin CAccountManagerInfoPage bitmap retrieval
return wxNullBitmap;
////@end CAccountManagerInfoPage bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon CAccountManagerInfoPage::GetIconResource( const wxString& WXUNUSED(name) )
{
// Icon retrieval
////@begin CAccountManagerInfoPage icon retrieval
return wxNullIcon;
////@end CAccountManagerInfoPage icon retrieval
}
/*!
* wxEVT_WIZARD_PAGE_CHANGED event handler for ID_PROJECTINFOPAGE
*/
void CAccountManagerInfoPage::OnPageChanged( wxWizardExEvent& event ) {
if (event.GetDirection() == false) return;
wxLogTrace(wxT("Function Start/End"), wxT("CAccountManagerInfoPage::OnPageChanged - Function Begin"));
unsigned int i;
CMainDocument* pDoc = wxGetApp().GetDocument();
unsigned int i;
ALL_PROJECTS_LIST pl;
CMainDocument* pDoc = wxGetApp().GetDocument();
wxASSERT(m_pTitleStaticCtrl);
wxASSERT(m_pDescriptionStaticCtrl);
wxASSERT(m_pProjectUrlStaticCtrl);
wxASSERT(m_pProjectUrlCtrl);
m_pTitleStaticCtrl->SetLabel(
_("Choose an account manager")
);
@ -181,13 +251,19 @@ void CAccountManagerInfoPage::OnPageChanged( wxWizardExEvent& event ) {
// Populate the virtual list control with project information
//
if (!m_bAccountManagerListPopulated) {
pDoc->rpc.get_all_projects_list(m_pl);
for (i=0; i<m_pl.account_managers.size(); i++) {
m_bAccountManagerListPopulated = false;
pDoc->rpc.get_all_projects_list(pl);
for (i=0; i<pl.account_managers.size(); i++) {
wxLogTrace(
wxT("Function Status"),
wxT("CAccountManagerInfoPage::OnPageChanged - Name: '%s', URL: '%s', Supported: '%d'"),
wxString(pl.account_managers[i]->name.c_str(), wxConvUTF8),
wxString(pl.account_managers[i]->url.c_str(), wxConvUTF8),
true
);
m_pProjectListCtrl->Append(
wxString(m_pl.account_managers[i]->name.c_str(), wxConvUTF8),
wxString(m_pl.account_managers[i]->url.c_str(), wxConvUTF8),
wxString(pl.account_managers[i]->name.c_str(), wxConvUTF8),
wxString(pl.account_managers[i]->url.c_str(), wxConvUTF8),
true
);
}
@ -195,9 +271,10 @@ void CAccountManagerInfoPage::OnPageChanged( wxWizardExEvent& event ) {
}
Layout();
Fit();
m_pProjectListCtrl->Layout();
FitInside();
m_pProjectListCtrl->SetFocus();
wxLogTrace(wxT("Function Start/End"), wxT("CAccountManagerInfoPage::OnPageChanged - Function End"));
}
/*!
@ -225,61 +302,3 @@ void CAccountManagerInfoPage::OnAccountManagerSelectionChanged( ProjectListCtrlE
void CAccountManagerInfoPage::OnCancel( wxWizardExEvent& event ) {
PROCESS_CANCELEVENT(event);
}
/*!
* Gets the previous page.
*/
wxWizardPageEx* CAccountManagerInfoPage::GetPrev() const
{
return PAGE_TRANSITION_BACK;
}
/*!
* Gets the next page.
*/
wxWizardPageEx* CAccountManagerInfoPage::GetNext() const
{
if (CHECK_CLOSINGINPROGRESS()) {
// Cancel Event Detected
return PAGE_TRANSITION_NEXT(ID_COMPLETIONERRORPAGE);
} else {
return PAGE_TRANSITION_NEXT(ID_ACCOUNTMANAGERPROPERTIESPAGE);
}
return NULL;
}
/*!
* Should we show tooltips?
*/
bool CAccountManagerInfoPage::ShowToolTips()
{
return TRUE;
}
/*!
* Get bitmap resources
*/
wxBitmap CAccountManagerInfoPage::GetBitmapResource( const wxString& WXUNUSED(name) )
{
// Bitmap retrieval
////@begin CAccountManagerInfoPage bitmap retrieval
return wxNullBitmap;
////@end CAccountManagerInfoPage bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon CAccountManagerInfoPage::GetIconResource( const wxString& WXUNUSED(name) )
{
// Icon retrieval
////@begin CAccountManagerInfoPage icon retrieval
return wxNullIcon;
////@end CAccountManagerInfoPage icon retrieval
}

View File

@ -91,8 +91,7 @@ public:
wxTextCtrl* m_pProjectUrlCtrl;
wxString m_strProjectURL;
////@end CAccountManagerInfoPage member variables
bool m_bAccountManagerListPopulated;
ALL_PROJECTS_LIST m_pl;
bool m_bAccountManagerListPopulated;
};
#endif // _WIZ_ACCOUNTMANAGERINFOPAGE_H_

View File

@ -77,7 +77,7 @@ CProjectInfoPage::CProjectInfoPage( CBOINCBaseWizard* parent )
/*!
* WizardPage creator
* CProjectInfoPage creator
*/
bool CProjectInfoPage::Create( CBOINCBaseWizard* parent )
@ -129,7 +129,7 @@ void CProjectInfoPage::CreateControls()
itemBoxSizer24->Add(itemFlexGridSizer3, 1, wxGROW|wxALL, 5);
m_pProjectListCtrl = new CProjectListCtrl;
m_pProjectListCtrl->Create( itemWizardPage23, wxSize(250,155) );
m_pProjectListCtrl->Create( itemWizardPage23 );
itemFlexGridSizer3->Add(m_pProjectListCtrl, 0, wxGROW|wxRIGHT, 10);
wxFlexGridSizer* itemFlexGridSizer11 = new wxFlexGridSizer(2, 1, 0, 0);
@ -225,7 +225,6 @@ wxIcon CProjectInfoPage::GetIconResource( const wxString& WXUNUSED(name) )
void CProjectInfoPage::OnPageChanged( wxWizardExEvent& event ) {
if (event.GetDirection() == false) return;
wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnPageChanged - Function Begin"));
unsigned int i, j, k;
@ -245,7 +244,7 @@ void CProjectInfoPage::OnPageChanged( wxWizardExEvent& event ) {
_("Choose a project")
);
m_pDescriptionStaticCtrl->SetLabel(
_("To choose a project, click its name or type its URL below.")
_("To choose a project, click its name or\ntype its URL below.")
);
m_pProjectUrlStaticCtrl->SetLabel(
_("Project &URL:")
@ -291,8 +290,7 @@ void CProjectInfoPage::OnPageChanged( wxWizardExEvent& event ) {
}
Layout();
Fit();
m_pProjectListCtrl->Layout();
FitInside();
m_pProjectListCtrl->SetFocus();
wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnPageChanged - Function End"));

View File

@ -61,23 +61,23 @@ CProjectListCtrl::CProjectListCtrl( )
{
}
CProjectListCtrl::CProjectListCtrl( wxWindow* parent, wxSize size )
CProjectListCtrl::CProjectListCtrl( wxWindow* parent )
{
Create( parent, size );
Create( parent );
}
/*!
* CProjectList creator
*/
bool CProjectListCtrl::Create( wxWindow* parent, wxSize size )
bool CProjectListCtrl::Create( wxWindow* parent )
{
////@begin CProjectListCtrl member initialisation
m_pMainSizer = NULL;
////@end CProjectListCtrl member initialisation
////@begin CProjectListCtrl creation
wxScrolledWindow::Create( parent, wxID_ANY, wxDefaultPosition, size, wxSUNKEN_BORDER );
wxScrolledWindow::Create( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER );
SetExtraStyle( wxWS_EX_BLOCK_EVENTS );
SetMinSize(GetSize());

View File

@ -47,10 +47,10 @@ public:
/// Constructors
CProjectListCtrl( );
CProjectListCtrl( wxWindow* parent, wxSize theSize );
CProjectListCtrl( wxWindow* parent );
/// Creation
bool Create( wxWindow* parent, wxSize theSize );
bool Create( wxWindow* parent );
/// Creates the controls and sizers
void CreateControls();