From 595d3f9c96933dae59737d75cf2a6ac23accda62 Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Fri, 22 Jul 2005 20:19:58 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=6756 --- checkin_notes | 10 +++++ clientgui/BOINCBaseView.cpp | 4 ++ clientgui/BOINCBaseView.h | 2 + clientgui/BOINCTaskCtrl.cpp | 23 +++++++----- clientgui/BOINCTaskCtrl.h | 4 +- clientgui/ViewProjects.cpp | 74 +++++++++++++++++++------------------ 6 files changed, 70 insertions(+), 47 deletions(-) diff --git a/checkin_notes b/checkin_notes index 91d649b760..b6a6dca670 100755 --- a/checkin_notes +++ b/checkin_notes @@ -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 diff --git a/clientgui/BOINCBaseView.cpp b/clientgui/BOINCBaseView.cpp index f259b8b197..289fa76f01 100644 --- a/clientgui/BOINCBaseView.cpp +++ b/clientgui/BOINCBaseView.cpp @@ -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(); diff --git a/clientgui/BOINCBaseView.h b/clientgui/BOINCBaseView.h index 8221494d22..494415ca31 100644 --- a/clientgui/BOINCBaseView.h +++ b/clientgui/BOINCBaseView.h @@ -142,6 +142,8 @@ protected: bool m_bProcessingTaskRenderEvent; bool m_bProcessingListRenderEvent; + bool m_bForceUpdateSelection; + CBOINCTaskCtrl* m_pTaskPane; CBOINCListCtrl* m_pListPane; }; diff --git a/clientgui/BOINCTaskCtrl.cpp b/clientgui/BOINCTaskCtrl.cpp index 7ed7c41fe9..65630ef6dc 100644 --- a/clientgui/BOINCTaskCtrl.cpp +++ b/clientgui/BOINCTaskCtrl.cpp @@ -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; } diff --git a/clientgui/BOINCTaskCtrl.h b/clientgui/BOINCTaskCtrl.h index a040e5a9e6..7a3bff776f 100644 --- a/clientgui/BOINCTaskCtrl.h +++ b/clientgui/BOINCTaskCtrl.h @@ -54,9 +54,9 @@ public: private: - CBOINCBaseView* m_pParent; + CBOINCBaseView* m_pParent; - wxBoxSizer* m_pBoxSizer; + wxBoxSizer* m_pSizer; }; diff --git a/clientgui/ViewProjects.cpp b/clientgui/ViewProjects.cpp index e63d8dc828..3b7d523466 100644 --- a/clientgui/ViewProjects.cpp +++ b/clientgui/ViewProjects.cpp @@ -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; im_Tasks.size(); i++) { - delete pGroup->m_Tasks[i]; + m_pTaskPane->DeleteTaskGroupAndTasks(pGroup); + for (i=0; im_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;(igui_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;(igui_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();