*** empty log message ***

svn path=/trunk/boinc/; revision=6756
This commit is contained in:
Rom Walton 2005-07-22 20:19:58 +00:00
parent 7f446ee2db
commit 595d3f9c96
6 changed files with 70 additions and 47 deletions

View File

@ -9442,3 +9442,13 @@ Charlie 22 July 2005
HowToBuildBOINC_XCode.rtf
boinc.pbproj/
project.pbxproj
Rom 22 July 2005
- Enable scrollbars on the task pane
- Only redraw the website buttons when a selection change event has
occurred with the list pane.
clientgui/
BOINCBaseView.cpp, .h
BOINCTaskCtrl.cpp, .h
ViewProjects.cpp

View File

@ -44,6 +44,8 @@ CBOINCBaseView::CBOINCBaseView(wxNotebook* pNotebook, wxString strName) :
m_bProcessingTaskRenderEvent = false;
m_bProcessingListRenderEvent = false;
m_bForceUpdateSelection = true;
//
// Setup View
//
@ -253,6 +255,7 @@ bool CBOINCBaseView::OnRestoreState(wxConfigBase* pConfig) {
void CBOINCBaseView::OnListSelected(wxListEvent& event) {
wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseView::OnListSelected - Function Begin"));
m_bForceUpdateSelection = true;
UpdateSelection();
event.Skip();
@ -263,6 +266,7 @@ void CBOINCBaseView::OnListSelected(wxListEvent& event) {
void CBOINCBaseView::OnListDeselected(wxListEvent& event) {
wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseView::OnListDeselected - Function Begin"));
m_bForceUpdateSelection = true;
UpdateSelection();
event.Skip();

View File

@ -142,6 +142,8 @@ protected:
bool m_bProcessingTaskRenderEvent;
bool m_bProcessingListRenderEvent;
bool m_bForceUpdateSelection;
CBOINCTaskCtrl* m_pTaskPane;
CBOINCListCtrl* m_pListPane;
};

View File

@ -26,7 +26,7 @@
#include "BOINCTaskCtrl.h"
IMPLEMENT_DYNAMIC_CLASS(CBOINCTaskCtrl, wxPanel)
IMPLEMENT_DYNAMIC_CLASS(CBOINCTaskCtrl, wxScrolledWindow)
CBOINCTaskCtrl::CBOINCTaskCtrl() {}
@ -36,9 +36,11 @@ CBOINCTaskCtrl::CBOINCTaskCtrl(CBOINCBaseView* pView, wxWindowID iTaskWindowID,
wxScrolledWindow(pView, iTaskWindowID, wxDefaultPosition, wxSize(200, -1), iTaskWindowFlags)
{
m_pParent = pView;
m_pBoxSizer = NULL;
m_pSizer = NULL;
EnableScrolling(true, false);
EnableScrolling(true, true);
SetVirtualSize( 200, 1000 );
SetScrollRate( 10, 10 );
}
@ -54,7 +56,7 @@ wxInt32 CBOINCTaskCtrl::DeleteTaskGroupAndTasks( CTaskItemGroup* pGroup ) {
DeleteTask(pGroup, pItem);
}
if (pGroup->m_pStaticBoxSizer) {
m_pBoxSizer->Detach(pGroup->m_pStaticBoxSizer);
m_pSizer->Detach(pGroup->m_pStaticBoxSizer);
pGroup->m_pStaticBoxSizer->Detach(pGroup->m_pStaticBox);
delete pGroup->m_pStaticBox;
@ -150,8 +152,8 @@ wxInt32 CBOINCTaskCtrl::UpdateControls() {
bCreateMainSizer = !GetSizer();
if (bCreateMainSizer) {
SetAutoLayout(TRUE);
m_pBoxSizer = new wxBoxSizer(wxVERTICAL);
m_pBoxSizer->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
m_pSizer = new wxBoxSizer( wxVERTICAL );
m_pSizer->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
}
@ -161,7 +163,7 @@ wxInt32 CBOINCTaskCtrl::UpdateControls() {
if (!pGroup->m_pStaticBoxSizer) {
pGroup->m_pStaticBox = new wxStaticBox(this, wxID_ANY, pGroup->m_strName);
pGroup->m_pStaticBoxSizer = new wxStaticBoxSizer(pGroup->m_pStaticBox, wxVERTICAL);
m_pBoxSizer->Add(pGroup->m_pStaticBoxSizer, 0, wxEXPAND|wxALL, 5);
m_pSizer->Add(pGroup->m_pStaticBoxSizer, 0, wxEXPAND|wxALL, 5);
}
}
@ -182,12 +184,13 @@ wxInt32 CBOINCTaskCtrl::UpdateControls() {
}
}
if (bCreateMainSizer) {
SetSizer(m_pBoxSizer);
SetSizer(m_pSizer);
}
Layout();
// Force update layout and scrollbars, since nothing we do here
// necessarily generates a size event which would do it for us.
FitInside();
return 0;
}

View File

@ -54,9 +54,9 @@ public:
private:
CBOINCBaseView* m_pParent;
CBOINCBaseView* m_pParent;
wxBoxSizer* m_pBoxSizer;
wxBoxSizer* m_pSizer;
};

View File

@ -654,51 +654,55 @@ void CViewProjects::UpdateSelection() {
// Update the websites list
//
if (m_TaskGroups.size() > 1) {
if (m_bForceUpdateSelection) {
if (m_TaskGroups.size() > 1) {
// Delete task group, objects, and controls.
pGroup = m_TaskGroups[1];
// Delete task group, objects, and controls.
pGroup = m_TaskGroups[1];
m_pTaskPane->DeleteTaskGroupAndTasks(pGroup);
for (i=0; i<pGroup->m_Tasks.size(); i++) {
delete pGroup->m_Tasks[i];
m_pTaskPane->DeleteTaskGroupAndTasks(pGroup);
for (i=0; i<pGroup->m_Tasks.size(); i++) {
delete pGroup->m_Tasks[i];
}
pGroup->m_Tasks.clear();
delete pGroup;
pGroup = NULL;
m_TaskGroups.erase( m_TaskGroups.begin() + 1 );
}
pGroup->m_Tasks.clear();
delete pGroup;
pGroup = NULL;
// If something is selected create the tasks and controls
if (m_pListPane->GetSelectedItemCount()) {
project = pDoc->project(m_pListPane->GetFirstSelected());
m_TaskGroups.erase( m_TaskGroups.begin() + 1 );
}
// Create the web sites task group
pGroup = new CTaskItemGroup( _("Web sites") );
m_TaskGroups.push_back( pGroup );
// If something is selected create the tasks and controls
if (m_pListPane->GetSelectedItemCount()) {
project = pDoc->project(m_pListPane->GetFirstSelected());
// Create the web sites task group
pGroup = new CTaskItemGroup( _("Web sites") );
m_TaskGroups.push_back( pGroup );
// Default project url
pItem = new CTaskItem(
project->project_name.c_str(),
wxT(""),
project->master_url.c_str(),
ID_TASK_PROJECT_WEB_PROJDEF_MIN
);
pGroup->m_Tasks.push_back(pItem);
// Project defined urls
for (i=0;(i<project->gui_urls.size())&&(i<=ID_TASK_PROJECT_WEB_PROJDEF_MAX);i++) {
// Default project url
pItem = new CTaskItem(
project->gui_urls[i].name.c_str(),
project->gui_urls[i].description.c_str(),
project->gui_urls[i].url.c_str(),
ID_TASK_PROJECT_WEB_PROJDEF_MIN + 1 + i
project->project_name.c_str(),
wxT(""),
project->master_url.c_str(),
ID_TASK_PROJECT_WEB_PROJDEF_MIN
);
pGroup->m_Tasks.push_back(pItem);
// Project defined urls
for (i=0;(i<project->gui_urls.size())&&(i<=ID_TASK_PROJECT_WEB_PROJDEF_MAX);i++) {
pItem = new CTaskItem(
project->gui_urls[i].name.c_str(),
project->gui_urls[i].description.c_str(),
project->gui_urls[i].url.c_str(),
ID_TASK_PROJECT_WEB_PROJDEF_MIN + 1 + i
);
pGroup->m_Tasks.push_back(pItem);
}
}
m_bForceUpdateSelection = false;
}
m_pTaskPane->UpdateControls();