From 32878db98d650f12e98b0b8f6bc992ead79c099b Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Thu, 21 Oct 2004 14:29:59 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=4374 --- clientgui/Events.h | 7 +- clientgui/MainDocument.cpp | 155 ++++++++++++++++++----- clientgui/MainDocument.h | 14 +-- clientgui/MainFrame.cpp | 247 +++++++++++++++++++++++-------------- clientgui/MainFrame.h | 18 +-- clientgui/ViewMessages.cpp | 1 + clientgui/ViewProjects.cpp | 17 ++- clientgui/ViewWork.cpp | 21 ++-- 8 files changed, 319 insertions(+), 161 deletions(-) diff --git a/clientgui/Events.h b/clientgui/Events.h index ea64481443..6e5f5e4b53 100644 --- a/clientgui/Events.h +++ b/clientgui/Events.h @@ -21,6 +21,9 @@ // Revision History: // // $Log$ +// Revision 1.11 2004/10/21 14:29:58 rwalton +// *** empty log message *** +// // Revision 1.10 2004/09/25 21:33:22 rwalton // *** empty log message *** // @@ -41,8 +44,8 @@ #define ID_STATUSBAR 6000 -#define ID_COMMANDSATTACHPROJECT 6001 -#define ID_TOOLSOPTIONS 6002 +#define ID_TOOLSOPTIONS 6001 +#define ID_FRAMENOTEBOOK 6002 #define ID_FRAMETASKRENDERTIMER 6003 #define ID_FRAMELISTRENDERTIMER 6004 #define ID_LIST_PROJECTSVIEW 6005 diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp index 6aa16902a0..947ba8afc9 100644 --- a/clientgui/MainDocument.cpp +++ b/clientgui/MainDocument.cpp @@ -442,43 +442,98 @@ wxInt32 CMainDocument::ProjectAttach( wxString& strURL, wxString& strAccountKey } -wxInt32 CMainDocument::ProjectDetach( wxString& strURL ) +wxInt32 CMainDocument::ProjectDetach( wxInt32 iIndex ) { - PROJECT p; - p.master_url = strURL; - return rpc.project_op(p, wxT("detach")); + PROJECT* pProject = NULL; + wxInt32 iRetVal = -1; + + if ( project_status.projects.size() != 0 ) + pProject = project_status.projects.at( iIndex ); + + if ( NULL != pProject ) + iRetVal = rpc.project_op( (*pProject), wxT("detach") ); + + return iRetVal; } -wxInt32 CMainDocument::ProjectUpdate( wxString& strURL ) +wxInt32 CMainDocument::ProjectUpdate( wxInt32 iIndex ) { - PROJECT p; - p.master_url = strURL; - return rpc.project_op(p, wxT("update")); + PROJECT* pProject = NULL; + wxInt32 iRetVal = -1; + + if ( project_status.projects.size() != 0 ) + pProject = project_status.projects.at( iIndex ); + + if ( NULL != pProject ) + iRetVal = rpc.project_op( (*pProject), wxT("update") ); + + return iRetVal; } -wxInt32 CMainDocument::ProjectReset( wxString& strURL ) +wxInt32 CMainDocument::ProjectReset( wxInt32 iIndex ) { - PROJECT p; - p.master_url = strURL; - return rpc.project_op(p, wxT("reset")); + PROJECT* pProject = NULL; + wxInt32 iRetVal = -1; + + if ( project_status.projects.size() != 0 ) + pProject = project_status.projects.at( iIndex ); + + if ( NULL != pProject ) + iRetVal = rpc.project_op( (*pProject), wxT("reset") ); + + return iRetVal; } -wxInt32 CMainDocument::ProjectSuspend( wxString& strURL ) +wxInt32 CMainDocument::ProjectSuspend( wxInt32 iIndex ) { - PROJECT p; - p.master_url = strURL; - return rpc.project_op(p, wxT("suspend")); + PROJECT* pProject = NULL; + PROJECT* pStateProject = NULL; + wxInt32 iRetVal = -1; + + if ( project_status.projects.size() != 0 ) + pProject = project_status.projects.at( iIndex ); + + if ( NULL != pProject ) + { + iRetVal = rpc.project_op( (*pProject), wxT("suspend") ); + if ( 0 == iRetVal ) + { + pProject->suspended_via_gui = true; + pStateProject = state.lookup_project( pProject->master_url ); + if ( NULL != pStateProject ) + pStateProject->suspended_via_gui = true; + } + } + + return iRetVal; } -wxInt32 CMainDocument::ProjectResume( wxString& strURL ) +wxInt32 CMainDocument::ProjectResume( wxInt32 iIndex ) { - PROJECT p; - p.master_url = strURL; - return rpc.project_op(p, wxT("resume")); + PROJECT* pProject = NULL; + PROJECT* pStateProject = NULL; + wxInt32 iRetVal = -1; + + if ( project_status.projects.size() != 0 ) + pProject = project_status.projects.at( iIndex ); + + if ( NULL != pProject ) + { + iRetVal = rpc.project_op( (*pProject), wxT("resume") ); + if ( 0 == iRetVal ) + { + pProject->suspended_via_gui = false; + pStateProject = state.lookup_project( pProject->master_url ); + if ( NULL != pStateProject ) + pStateProject->suspended_via_gui = false; + } + } + + return iRetVal; } @@ -784,25 +839,57 @@ bool CMainDocument::IsWorkSuspended(wxInt32 iIndex) } -wxInt32 CMainDocument::WorkSuspend( wxString& strProjectURL, wxString& strResultName ) +wxInt32 CMainDocument::WorkSuspend( wxInt32 iIndex ) { - PROJECT p; - RESULT r; - p.master_url = strProjectURL; - r.name = strResultName; - r.project = &p; - return rpc.result_op(r, wxT("suspend")); + RESULT* pResult = NULL; + RESULT* pStateResult = NULL; + wxInt32 iRetVal = 0; + + if ( results.results.size() != 0 ) + pResult = results.results.at( iIndex ); + + if ( NULL != pResult ) + { + pStateResult = state.lookup_result( pResult->project_url, pResult->name ); + if ( NULL != pStateResult ) + { + iRetVal = rpc.result_op( (*pStateResult), wxT("suspend") ); + if ( 0 == iRetVal ) + { + pResult->suspended_via_gui = true; + pStateResult->suspended_via_gui = true; + } + } + } + + return iRetVal; } -wxInt32 CMainDocument::WorkResume( wxString& strProjectURL, wxString& strResultName ) +wxInt32 CMainDocument::WorkResume( wxInt32 iIndex ) { - PROJECT p; - RESULT r; - p.master_url = strProjectURL; - r.name = strResultName; - r.project = &p; - return rpc.result_op(r, wxT("resume")); + RESULT* pResult = NULL; + RESULT* pStateResult = NULL; + wxInt32 iRetVal = 0; + + if ( results.results.size() != 0 ) + pResult = results.results.at( iIndex ); + + if ( NULL != pResult ) + { + pStateResult = state.lookup_result( pResult->project_url, pResult->name ); + if ( NULL != pStateResult ) + { + iRetVal = rpc.result_op( (*pStateResult), wxT("resume") ); + if ( 0 == iRetVal ) + { + pResult->suspended_via_gui = false; + pStateResult->suspended_via_gui = false; + } + } + } + + return iRetVal; } diff --git a/clientgui/MainDocument.h b/clientgui/MainDocument.h index 5aa3c6792c..762e252764 100644 --- a/clientgui/MainDocument.h +++ b/clientgui/MainDocument.h @@ -113,11 +113,11 @@ public: bool IsProjectRPCPending(wxInt32 iIndex); wxInt32 ProjectAttach( wxString& strURL, wxString& strAccountKey ); - wxInt32 ProjectDetach( wxString& strURL ); - wxInt32 ProjectUpdate( wxString& strURL ); - wxInt32 ProjectReset( wxString& strURL ); - wxInt32 ProjectSuspend( wxString& strURL ); - wxInt32 ProjectResume( wxString& strURL ); + wxInt32 ProjectDetach( wxInt32 iIndex ); + wxInt32 ProjectUpdate( wxInt32 iIndex ); + wxInt32 ProjectReset( wxInt32 iIndex ); + wxInt32 ProjectSuspend( wxInt32 iIndex ); + wxInt32 ProjectResume( wxInt32 iIndex ); // @@ -148,8 +148,8 @@ public: bool IsWorkReadyToReport(wxInt32 iIndex); bool IsWorkSuspended(wxInt32 iIndex); - wxInt32 WorkSuspend( wxString& strProjectURL, wxString& strResultName ); - wxInt32 WorkResume( wxString& strProjectURL, wxString& strResultName ); + wxInt32 WorkSuspend( wxInt32 iIndex ); + wxInt32 WorkResume( wxInt32 iIndex ); wxInt32 WorkShowGraphics( wxString& strProjectURL, wxString& strResultName, bool bFullScreen ); wxInt32 WorkAbort( wxString& strProjectURL, wxString& strResultName ); diff --git a/clientgui/MainFrame.cpp b/clientgui/MainFrame.cpp index 32ddccd9d6..6097a18cc4 100644 --- a/clientgui/MainFrame.cpp +++ b/clientgui/MainFrame.cpp @@ -49,6 +49,7 @@ BEGIN_EVENT_TABLE (CMainFrame, wxFrame) EVT_MENU(ID_TOOLSOPTIONS, CMainFrame::OnToolsOptions) EVT_MENU(wxID_ABOUT, CMainFrame::OnAbout) EVT_IDLE(CMainFrame::OnIdle) + EVT_NOTEBOOK_PAGE_CHANGED(ID_FRAMENOTEBOOK, CMainFrame::OnNotebookSelectionChanged) EVT_LIST_CACHE_HINT(wxID_ANY, CMainFrame::OnListCacheHint) EVT_LIST_ITEM_SELECTED(wxID_ANY, CMainFrame::OnListSelected) EVT_LIST_ITEM_DESELECTED(wxID_ANY, CMainFrame::OnListDeselected) @@ -91,7 +92,7 @@ CMainFrame::CMainFrame(wxString strTitle) : RestoreState(); - m_PostCreateInitializationCompleted = false; + m_bPostCreateInitializationCompleted = false; } @@ -181,7 +182,7 @@ bool CMainFrame::CreateNotebook() wxTAB_TRAVERSAL|wxCLIP_CHILDREN|wxNO_BORDER); // initialize notebook - m_pNotebook = new wxNotebook(pPanel, -1, wxDefaultPosition, wxDefaultSize, + m_pNotebook = new wxNotebook(pPanel, ID_FRAMENOTEBOOK, wxDefaultPosition, wxDefaultSize, wxNB_FIXEDWIDTH|wxCLIP_CHILDREN); wxNotebookSizer *pNotebookSizer = new wxNotebookSizer(m_pNotebook); @@ -497,9 +498,9 @@ void CMainFrame::OnIdle(wxIdleEvent& event) if ( NULL != pDoc ) { wxASSERT(wxDynamicCast(pDoc, CMainDocument)); - if ( false == m_PostCreateInitializationCompleted ) + if ( false == m_bPostCreateInitializationCompleted ) { - m_PostCreateInitializationCompleted = true; + m_bPostCreateInitializationCompleted = true; pDoc->OnInit(); } @@ -510,138 +511,202 @@ void CMainFrame::OnIdle(wxIdleEvent& event) } +void CMainFrame::OnNotebookSelectionChanged( wxNotebookEvent& event ) +{ + if ( (-1 != event.GetSelection()) && IsShown() ) + { + wxWindow* pwndNotebookPage; + wxTimerEvent timerEvent; + + wxASSERT(NULL != m_pNotebook); + + + pwndNotebookPage = m_pNotebook->GetPage( event.GetSelection() ); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), timerEvent); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), timerEvent); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), timerEvent); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), timerEvent); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), timerEvent); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), timerEvent); + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), timerEvent); + } + } + + event.Skip(); +} + + void CMainFrame::OnListCacheHint( wxListEvent& event ) { - wxWindow* pwndNotebookPage; + if ( IsShown() ) + { + wxWindow* pwndNotebookPage; - wxASSERT(NULL != m_pNotebook); + wxASSERT(NULL != m_pNotebook); - pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); - wxASSERT(NULL != pwndNotebookPage); - wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); - if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); - } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { - FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireListOnCacheHintEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + } } + + event.Skip(); } void CMainFrame::OnListSelected( wxListEvent& event ) { - wxWindow* pwndNotebookPage; + if ( IsShown() ) + { + wxWindow* pwndNotebookPage; - wxASSERT(NULL != m_pNotebook); + wxASSERT(NULL != m_pNotebook); - pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); - wxASSERT(NULL != pwndNotebookPage); - wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); - if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); - } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { - FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireListOnSelectedEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + } } + + event.Skip(); } void CMainFrame::OnListDeselected( wxListEvent& event ) { - wxWindow* pwndNotebookPage; + if ( IsShown() ) + { + wxWindow* pwndNotebookPage; - wxASSERT(NULL != m_pNotebook); + wxASSERT(NULL != m_pNotebook); - pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); - wxASSERT(NULL != pwndNotebookPage); - wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); - if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); - } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { - FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireListOnDeselectedEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + } } + + event.Skip(); } void CMainFrame::OnListPanelRender ( wxTimerEvent &event ) { - wxWindow* pwndNotebookPage; + if ( IsShown() ) + { + wxWindow* pwndNotebookPage; - wxASSERT(NULL != m_pNotebook); + wxASSERT(NULL != m_pNotebook); - pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); - wxASSERT(NULL != pwndNotebookPage); - wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); - if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); - } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { - FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireListPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + } } + + event.Skip(); } void CMainFrame::OnTaskPanelRender ( wxTimerEvent &event ) { - wxWindow* pwndNotebookPage; + if ( IsShown() ) + { + wxWindow* pwndNotebookPage; - wxASSERT(NULL != m_pNotebook); + wxASSERT(NULL != m_pNotebook); - pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); - wxASSERT(NULL != pwndNotebookPage); - wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); + pwndNotebookPage = m_pNotebook->GetPage(m_pNotebook->GetSelection()); + wxASSERT(NULL != pwndNotebookPage); + wxASSERT(wxDynamicCast(pwndNotebookPage, CBOINCBaseView)); - if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); - } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); - } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { - FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + if (wxDynamicCast(pwndNotebookPage, CViewProjects)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewProjects), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewWork)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewWork), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewTransfers)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewTransfers), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewMessages)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewMessages), event); + } else if (wxDynamicCast(pwndNotebookPage, CViewResources)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CViewResources), event); + } else if (wxDynamicCast(pwndNotebookPage, CBOINCBaseView)) { + FireTaskPanelRenderEvent(wxDynamicCast(pwndNotebookPage, CBOINCBaseView), event); + } } + + event.Skip(); } @@ -669,13 +734,13 @@ void CMainFrame::FireListOnDeselectedEvent( T pPage, wxListEvent& event ) template < class T > void CMainFrame::FireListPanelRenderEvent( T pPage, wxTimerEvent& event ) { - pPage->OnListRender(event); + pPage->OnListRender( event ); } template < class T > void CMainFrame::FireTaskPanelRenderEvent( T pPage, wxTimerEvent& event ) { - pPage->OnTaskRender(event); + pPage->OnTaskRender( event ); } diff --git a/clientgui/MainFrame.h b/clientgui/MainFrame.h index dd18797236..61fd5c469b 100644 --- a/clientgui/MainFrame.h +++ b/clientgui/MainFrame.h @@ -42,20 +42,22 @@ public: bool UpdateStatusbar( const wxString& strStatusbarText ); - void OnExit(wxCommandEvent& event); - void OnClose(wxCloseEvent& event); + void OnExit( wxCommandEvent& event ); + void OnClose( wxCloseEvent& event ); - void OnToolsOptions(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); + void OnToolsOptions( wxCommandEvent& event ); + void OnAbout( wxCommandEvent& event ); - void OnIdle (wxIdleEvent& event); + void OnIdle ( wxIdleEvent& event ); + + void OnNotebookSelectionChanged( wxNotebookEvent& event ); void OnListCacheHint( wxListEvent& event ); void OnListSelected( wxListEvent& event ); void OnListDeselected( wxListEvent& event ); - void OnListPanelRender(wxTimerEvent& event); - void OnTaskPanelRender(wxTimerEvent& event); + void OnListPanelRender( wxTimerEvent& event ); + void OnTaskPanelRender( wxTimerEvent& event ); private: @@ -65,7 +67,7 @@ private: wxTimer* m_pFrameTaskPanelRenderTimer; wxTimer* m_pFrameListPanelRenderTimer; - bool m_PostCreateInitializationCompleted; + bool m_bPostCreateInitializationCompleted; bool CreateMenu(); diff --git a/clientgui/ViewMessages.cpp b/clientgui/ViewMessages.cpp index 779a8cbd63..0a202d7b9c 100644 --- a/clientgui/ViewMessages.cpp +++ b/clientgui/ViewMessages.cpp @@ -83,6 +83,7 @@ CViewMessages::CViewMessages(wxNotebook* pNotebook) : { m_bProcessingTaskRenderEvent = false; m_bProcessingListRenderEvent = false; + m_bItemSelected = false; wxASSERT(NULL != m_pTaskPane); wxASSERT(NULL != m_pListPane); diff --git a/clientgui/ViewProjects.cpp b/clientgui/ViewProjects.cpp index 697cb95b43..f5086c49be 100644 --- a/clientgui/ViewProjects.cpp +++ b/clientgui/ViewProjects.cpp @@ -131,6 +131,7 @@ CViewProjects::CViewProjects(wxNotebook* pNotebook) : { m_bProcessingTaskRenderEvent = false; m_bProcessingListRenderEvent = false; + m_bItemSelected = false; wxASSERT(NULL != m_pTaskPane); wxASSERT(NULL != m_pListPane); @@ -401,7 +402,6 @@ void CViewProjects::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) { iProjectIndex = m_pListPane->GetFirstSelected(); pDoc->GetProjectProjectName(iProjectIndex, strProjectName); - pDoc->GetProjectProjectURL(iProjectIndex, strURL); strMessage.Printf( _("Are you sure you wish to detach from project '%s'?"), @@ -417,7 +417,7 @@ void CViewProjects::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) if ( wxYES == iAnswer ) { pDoc->ProjectDetach( - strURL + iProjectIndex ); } } @@ -425,7 +425,6 @@ void CViewProjects::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) { iProjectIndex = m_pListPane->GetFirstSelected(); pDoc->GetProjectProjectName(iProjectIndex, strProjectName); - pDoc->GetProjectProjectURL(iProjectIndex, strURL); strMessage.Printf( _("Are you sure you wish to reset project '%s'?"), @@ -441,35 +440,32 @@ void CViewProjects::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) if ( wxYES == iAnswer ) { pDoc->ProjectReset( - strURL + iProjectIndex ); } } else if ( link.GetHref() == LINK_TASKUPDATE ) { iProjectIndex = m_pListPane->GetFirstSelected(); - pDoc->GetProjectProjectURL(iProjectIndex, strURL); pDoc->ProjectUpdate( - strURL + iProjectIndex ); } else if ( link.GetHref() == LINK_TASKSUSPEND ) { iProjectIndex = m_pListPane->GetFirstSelected(); - pDoc->GetProjectProjectURL(iProjectIndex, strURL); pDoc->ProjectSuspend( - strURL + iProjectIndex ); } else if ( link.GetHref() == LINK_TASKRESUME ) { iProjectIndex = m_pListPane->GetFirstSelected(); - pDoc->GetProjectProjectURL(iProjectIndex, strURL); pDoc->ProjectResume( - strURL + iProjectIndex ); } else if ( link.GetHref() == SECTION_WEB ) @@ -496,6 +492,7 @@ void CViewProjects::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) m_bTipsHeaderHidden ? m_bTipsHeaderHidden = false : m_bTipsHeaderHidden = true; UpdateSelection(); + m_pListPane->Refresh(); } diff --git a/clientgui/ViewWork.cpp b/clientgui/ViewWork.cpp index 393f347713..672a94a0c9 100644 --- a/clientgui/ViewWork.cpp +++ b/clientgui/ViewWork.cpp @@ -97,6 +97,7 @@ CViewWork::CViewWork(wxNotebook* pNotebook) : { m_bProcessingTaskRenderEvent = false; m_bProcessingListRenderEvent = false; + m_bItemSelected = false; wxASSERT(NULL != m_pTaskPane); wxASSERT(NULL != m_pListPane); @@ -348,23 +349,17 @@ void CViewWork::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) else if ( link.GetHref() == LINK_TASKSUSPEND ) { iProjectIndex = m_pListPane->GetFirstSelected(); - pDoc->GetWorkProjectURL(iProjectIndex, strProjectURL); - pDoc->GetWorkName(iProjectIndex, strResultName); pDoc->WorkSuspend( - strProjectURL, - strResultName + iProjectIndex ); } else if ( link.GetHref() == LINK_TASKRESUME ) { iProjectIndex = m_pListPane->GetFirstSelected(); - pDoc->GetWorkProjectURL(iProjectIndex, strProjectURL); - pDoc->GetWorkName(iProjectIndex, strResultName); pDoc->WorkResume( - strProjectURL, - strResultName + iProjectIndex ); } else if ( link.GetHref() == LINK_TASKSHOWGRAPHICS ) @@ -408,6 +403,7 @@ void CViewWork::OnTaskLinkClicked( const wxHtmlLinkInfo& link ) m_bTipsHeaderHidden ? m_bTipsHeaderHidden = false : m_bTipsHeaderHidden = true; UpdateSelection(); + m_pListPane->Refresh(); } @@ -727,7 +723,14 @@ wxInt32 CViewWork::FormatStatus( wxInt32 item, wxString& strBuffer ) const } else if ( CMainDocument::CPU_SCHED_PREEMPTED == iSchedulerState ) { - strBuffer = _("Paused"); + if ( pDoc->IsWorkSuspended(item) ) + { + strBuffer = _("Suspended"); + } + else + { + strBuffer = _("Paused"); + } } else if ( CMainDocument::CPU_SCHED_UNINITIALIZED == iSchedulerState ) {