From c80c4f41d8df34d0910f6340037e454a2789a03c Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Thu, 2 Feb 2006 12:32:21 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=9385 --- checkin_notes | 9 ++ clientgui/BOINCGUIApp.cpp | 4 +- clientgui/Events.h | 4 +- clientgui/MainFrame.cpp | 249 +++++++++++++++++++++-------- clientgui/MainFrame.h | 2 + clientgui/WizardAccountManager.cpp | 18 ++- clientgui/WizardAccountManager.h | 5 +- 7 files changed, 220 insertions(+), 71 deletions(-) diff --git a/checkin_notes b/checkin_notes index 66fae489e4..f852f4618e 100755 --- a/checkin_notes +++ b/checkin_notes @@ -1372,3 +1372,12 @@ Rom 2 Feb 2006 ProjectProcessingPage.cpp lib/ gui_rpc_client.h + +Rom 2 Feb 2006 + - Setup new menu layout + + clientgui/ + BOINCGUIApp.cpp + Events.h + MainFrame.cpp, .h + WizardAccountManager.cpp, .h diff --git a/clientgui/BOINCGUIApp.cpp b/clientgui/BOINCGUIApp.cpp index 75c17d597c..a164dd93b5 100644 --- a/clientgui/BOINCGUIApp.cpp +++ b/clientgui/BOINCGUIApp.cpp @@ -112,11 +112,11 @@ bool CBrandingScheme::OnInit( wxConfigBase *pConfig ) { switch (iBrandId) { case 1: // Running as a GridRepublic client. - m_strApplicationName = wxT("GridRepublic Manager"); + m_strApplicationName = wxT("GridRepublic Desktop"); m_iconApplicationIcon = wxIcon(gridrepublic_xpm); m_bitmapApplicationLogo = wxBitmap(gridrepublic_xpm); m_strCompanyName = wxT("GridRepublic"); - m_strCompanyWebsite = wxT("http://www.gridrepublic.com/"); + m_strCompanyWebsite = wxT("http://www.gridrepublic.org/"); m_strProjectName = wxT("GridRepublic"); m_strAPWizardTitle = wxEmptyString; m_bDefaultTabSpecified = false; diff --git a/clientgui/Events.h b/clientgui/Events.h index 365e2cef8e..9d023d3fec 100644 --- a/clientgui/Events.h +++ b/clientgui/Events.h @@ -35,7 +35,7 @@ #define ID_FILENETWORKRUNALWAYS 6012 #define ID_FILENETWORKRUNBASEDONPREPERENCES 6013 #define ID_FILENETWORKSUSPEND 6014 -#define ID_COMMADSRETRYCOMMUNICATIONS 6015 +#define ID_COMMANDSRETRYCOMMUNICATIONS 6015 #define ID_FILERUNBENCHMARKS 6016 #define ID_FILESELECTCOMPUTER 6017 #define ID_PROJECTSATTACHACCOUNTMANAGER 6018 @@ -49,6 +49,8 @@ #define ID_TB_NETWORKRUNALWAYS 6026 #define ID_TB_NETWORKRUNBASEDONPREPERENCES 6027 #define ID_TB_NETWORKSUSPEND 6028 +#define ID_TOOLSAMUPDATENOW 6029 +#define ID_ADVANCEDAMDEFECT 6030 #define ID_LIST_BASE 7000 #define ID_LIST_PROJECTSVIEW 7000 #define ID_LIST_WORKVIEW 7001 diff --git a/clientgui/MainFrame.cpp b/clientgui/MainFrame.cpp index e76c1a57db..7ad166c292 100644 --- a/clientgui/MainFrame.cpp +++ b/clientgui/MainFrame.cpp @@ -159,8 +159,10 @@ BEGIN_EVENT_TABLE (CMainFrame, wxFrame) EVT_MENU_RANGE(ID_FILEACTIVITYRUNALWAYS, ID_FILEACTIVITYSUSPEND, CMainFrame::OnActivitySelection) EVT_MENU_RANGE(ID_FILENETWORKRUNALWAYS, ID_FILENETWORKSUSPEND, CMainFrame::OnNetworkSelection) EVT_MENU(ID_PROJECTSATTACHACCOUNTMANAGER, CMainFrame::OnProjectsAttachToAccountManager) + EVT_MENU(ID_TOOLSAMUPDATENOW, CMainFrame::OnAccountManagerUpdate) + EVT_MENU(ID_ADVANCEDAMDEFECT, CMainFrame::OnAccountManagerDetach) EVT_MENU(ID_PROJECTSATTACHPROJECT, CMainFrame::OnProjectsAttachToProject) - EVT_MENU(ID_COMMADSRETRYCOMMUNICATIONS, CMainFrame::OnCommandsRetryCommunications) + EVT_MENU(ID_COMMANDSRETRYCOMMUNICATIONS, CMainFrame::OnCommandsRetryCommunications) EVT_MENU(ID_OPTIONSOPTIONS, CMainFrame::OnOptionsOptions) EVT_HELP(ID_FRAME, CMainFrame::OnHelp) EVT_MENU(ID_HELPBOINCMANAGER, CMainFrame::OnHelpBOINCManager) @@ -320,26 +322,24 @@ CMainFrame::~CMainFrame() { bool CMainFrame::CreateMenu() { - wxString strMenuName; - wxString strMenuDescription; - wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::CreateMenu - Function Begin")); + CMainDocument* pDoc = wxGetApp().GetDocument(); + ACCT_MGR_INFO ami; + bool is_acct_mgr_detected = false; + wxString strMenuName; + wxString strMenuDescription; + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + + // Account managers have a different menu arrangement + pDoc->rpc.acct_mgr_info(ami); + is_acct_mgr_detected = ami.acct_mgr_url.size() ? true : false; + // File menu wxMenu *menuFile = new wxMenu; - // %s is the project name - // i.e. 'BOINC', 'GridRepublic' - strMenuDescription.Printf( - _("Connect to another computer running %s"), - wxGetApp().GetBrand()->GetProjectName().c_str() - ); - menuFile->Append( - ID_FILESELECTCOMPUTER, - _("Select computer..."), - strMenuDescription - ); - // %s is the application name // i.e. 'BOINC Manager', 'GridRepublic Manager' strMenuDescription.Printf( @@ -352,77 +352,113 @@ bool CMainFrame::CreateMenu() { strMenuDescription ); - // Commands menu - wxMenu *menuCommands = new wxMenu; + // Tools menu + wxMenu *menuTools = new wxMenu; - menuCommands->AppendRadioItem( + if (!is_acct_mgr_detected) { + menuTools->Append( + ID_PROJECTSATTACHPROJECT, + _("Attach to &project"), + _("Attach to a project to begin processing work") + ); + menuTools->Append( + ID_PROJECTSATTACHACCOUNTMANAGER, + _("&Account manager"), + _("Attach to an account manager") + ); + } else { + menuTools->Append( + ID_TOOLSAMUPDATENOW, + _("&Update now"), + _("Reterive the latest settings from the account manager") + ); + } + + // Activity menu + wxMenu *menuActivity = new wxMenu; + + menuActivity->AppendRadioItem( ID_FILEACTIVITYRUNALWAYS, _("&Run always"), _("Does work regardless of preferences") ); - menuCommands->AppendRadioItem( + menuActivity->AppendRadioItem( ID_FILEACTIVITYRUNBASEDONPREPERENCES, _("Run based on &preferences"), _("Does work according to your preferences") ); - menuCommands->AppendRadioItem( + menuActivity->AppendRadioItem( ID_FILEACTIVITYSUSPEND, _("&Suspend"), _("Stops work regardless of preferences") ); - menuCommands->AppendSeparator(); + menuActivity->AppendSeparator(); - menuCommands->AppendRadioItem( + menuActivity->AppendRadioItem( ID_FILENETWORKRUNALWAYS, _("&Network activity always available"), _("Does network activity regardless of preferences") ); - menuCommands->AppendRadioItem( + menuActivity->AppendRadioItem( ID_FILENETWORKRUNBASEDONPREPERENCES, _("Network activity based on &preferences"), _("Does network activity according to your preferences") ); - menuCommands->AppendRadioItem( + menuActivity->AppendRadioItem( ID_FILENETWORKSUSPEND, _("&Network activity suspended"), _("Stops BOINC network activity") ); - menuCommands->AppendSeparator(); - - menuCommands->Append( - ID_COMMADSRETRYCOMMUNICATIONS, - _("Retry &communications"), - _("Report completed work, get latest credit, " - "get latest preferences, and possibly get more work.") - ); - menuCommands->Append( - ID_FILERUNBENCHMARKS, - _("Run &benchmarks"), - _("Runs BOINC CPU benchmarks") - ); - - // Projects menu - wxMenu *menuProjects = new wxMenu; - menuProjects->Append( - ID_PROJECTSATTACHPROJECT, - _("Attach to &project"), - _("Attach to a project to begin processing work") - ); - menuProjects->Append( - ID_PROJECTSATTACHACCOUNTMANAGER, - _("&Account manager"), - _("Attach to an account manager") - ); - - // Options menu - wxMenu *menuOptions = new wxMenu; - menuOptions->Append( + // Advanced menu + wxMenu *menuAdvanced = new wxMenu; + menuAdvanced->Append( ID_OPTIONSOPTIONS, _("&Options"), _("Configure GUI options and proxy settings") ); + // %s is the project name + // i.e. 'BOINC', 'GridRepublic' + strMenuDescription.Printf( + _("Connect to another computer running %s"), + wxGetApp().GetBrand()->GetProjectName().c_str() + ); + menuAdvanced->Append( + ID_FILESELECTCOMPUTER, + _("Select computer..."), + strMenuDescription + ); + menuAdvanced->Append( + ID_FILERUNBENCHMARKS, + _("Run CPU &benchmarks"), + _("Runs BOINC CPU benchmarks") + ); + menuAdvanced->Append( + ID_COMMANDSRETRYCOMMUNICATIONS, + _("Retry &communications"), + _("Report completed work, get latest credit, " + "get latest preferences, and possibly get more work.") + ); + if (is_acct_mgr_detected) { + // %s is the application name + // i.e. 'BOINC Manager', 'GridRepublic Manager' + strMenuName.Printf( + _("&Defect from %s"), + ami.acct_mgr_name.c_str() + ); + menuAdvanced->Append( + ID_ADVANCEDAMDEFECT, + strMenuName, + _("Remove client from account manager control.") + ); + menuAdvanced->Append( + ID_PROJECTSATTACHPROJECT, + _("Attach to &project"), + _("Attach to a project to begin processing work") + ); + } + // Help menu wxMenu *menuHelp = new wxMenu; @@ -484,22 +520,27 @@ bool CMainFrame::CreateMenu() { _("&File") ); m_pMenubar->Append( - menuCommands, - _("&Commands") + menuTools, + _("&Tools") ); m_pMenubar->Append( - menuProjects, - _("&Projects") + menuActivity, + _("&Activity") ); m_pMenubar->Append( - menuOptions, - _("&Options") + menuAdvanced, + _("A&dvanced") ); m_pMenubar->Append( menuHelp, _("&Help") ); + + wxMenuBar* m_pOldMenubar = GetMenuBar(); SetMenuBar(m_pMenubar); + if (m_pOldMenubar) { + delete m_pOldMenubar; + } wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::CreateMenu - Function End")); return true; @@ -589,7 +630,6 @@ bool CMainFrame::CreateStatusbar() { bool CMainFrame::DeleteMenu() { wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::DeleteMenu - Function Begin")); - wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::DeleteMenu - Function End")); return true; } @@ -1077,7 +1117,7 @@ void CMainFrame::OnProjectsAttachToAccountManager(wxCommandEvent& WXUNUSED(event CWizardAccountManager* pWizard = new CWizardAccountManager(this); - pWizard->Run(); + pWizard->Run(ACCOUNTMANAGER_ATTACH); if (pWizard) pWizard->Destroy(); @@ -1096,6 +1136,86 @@ void CMainFrame::OnProjectsAttachToAccountManager(wxCommandEvent& WXUNUSED(event } +void CMainFrame::OnAccountManagerUpdate(wxCommandEvent& WXUNUSED(event)) { + wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::OnAccountManagerUpdate - Function Begin")); + + CMainDocument* pDoc = wxGetApp().GetDocument(); + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + +#ifdef __WXMAC__ + if (!Mac_Authorize()) + return; +#endif + + if (pDoc->IsConnected()) { + m_pRefreshStateTimer->Stop(); + m_pFrameRenderTimer->Stop(); + m_pFrameListPanelRenderTimer->Stop(); + m_pDocumentPollTimer->Stop(); + + CWizardAccountManager* pWizard = new CWizardAccountManager(this); + + pWizard->Run(ACCOUNTMANAGER_UPDATE); + + if (pWizard) + pWizard->Destroy(); + + FireRefreshView(); + + m_pRefreshStateTimer->Start(); + m_pFrameRenderTimer->Start(); + m_pFrameListPanelRenderTimer->Start(); + m_pDocumentPollTimer->Start(); + } else { + ShowNotCurrentlyConnectedAlert(); + } + + wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::OnAccountManagerUpdate - Function End")); +} + + +void CMainFrame::OnAccountManagerDetach(wxCommandEvent& WXUNUSED(event)) { + wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::OnAccountManagerDetach - Function Begin")); + + CMainDocument* pDoc = wxGetApp().GetDocument(); + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + +#ifdef __WXMAC__ + if (!Mac_Authorize()) + return; +#endif + + if (pDoc->IsConnected()) { + m_pRefreshStateTimer->Stop(); + m_pFrameRenderTimer->Stop(); + m_pFrameListPanelRenderTimer->Stop(); + m_pDocumentPollTimer->Stop(); + + CWizardAccountManager* pWizard = new CWizardAccountManager(this); + + pWizard->Run(ACCOUNTMANAGER_DETACH); + + if (pWizard) + pWizard->Destroy(); + + FireRefreshView(); + + m_pRefreshStateTimer->Start(); + m_pFrameRenderTimer->Start(); + m_pFrameListPanelRenderTimer->Start(); + m_pDocumentPollTimer->Start(); + } else { + ShowNotCurrentlyConnectedAlert(); + } + + wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::OnAccountManagerDetach - Function End")); +} + + void CMainFrame::OnProjectsAttachToProject( wxCommandEvent& WXUNUSED(event) ) { wxLogTrace(wxT("Function Start/End"), wxT("CMainFrame::OnProjectsAttachToProject - Function Begin")); @@ -1436,6 +1556,9 @@ void CMainFrame::OnConnect(CMainFrameEvent&) { wxASSERT(pDoc); wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + // Update the menus + DeleteMenu(); + CreateMenu(); // Only present one of the wizards if no projects are currently // detected. diff --git a/clientgui/MainFrame.h b/clientgui/MainFrame.h index 139b8685a3..fb7efe76a4 100644 --- a/clientgui/MainFrame.h +++ b/clientgui/MainFrame.h @@ -73,6 +73,8 @@ public: void OnCommandsRetryCommunications( wxCommandEvent& event ); void OnProjectsAttachToAccountManager( wxCommandEvent& event ); + void OnAccountManagerUpdate( wxCommandEvent& event ); + void OnAccountManagerDetach( wxCommandEvent& event ); void OnProjectsAttachToProject( wxCommandEvent& event ); void OnOptionsOptions( wxCommandEvent& event ); diff --git a/clientgui/WizardAccountManager.cpp b/clientgui/WizardAccountManager.cpp index b4c18a0dae..616d31439b 100644 --- a/clientgui/WizardAccountManager.cpp +++ b/clientgui/WizardAccountManager.cpp @@ -242,7 +242,7 @@ void CWizardAccountManager::CreateControls() * Runs the wizard. */ -bool CWizardAccountManager::Run() { +bool CWizardAccountManager::Run(int action) { ACCT_MGR_INFO ami; CMainDocument* pDoc = wxGetApp().GetDocument(); @@ -276,10 +276,20 @@ bool CWizardAccountManager::Run() { m_bCredentialsCached = ami.have_credentials; } - if ( ami.acct_mgr_url.size() && !ami.have_credentials && m_AccountManagerPropertiesPage) { + if ( ami.acct_mgr_url.size() && !ami.have_credentials) { return RunWizard(m_AccountManagerPropertiesPage); - } else if ( ami.acct_mgr_url.size() && ami.have_credentials && m_AccountManagerStatusPage) { - return RunWizard(m_AccountManagerStatusPage); + } else if ( ami.acct_mgr_url.size() && ami.have_credentials && (action == ACCOUNTMANAGER_UPDATE)) { + IsAccountManagerUpdateWizard = true; + IsAccountManagerRemoveWizard = false; + return RunWizard(m_AccountManagerProcessingPage); + } else if ( ami.acct_mgr_url.size() && ami.have_credentials && (action == ACCOUNTMANAGER_DETACH)) { + IsAccountManagerUpdateWizard = false; + IsAccountManagerRemoveWizard = true; + m_AccountManagerInfoPage->SetProjectURL(wxEmptyString); + m_AccountInfoPage->SetAccountEmailAddress(wxEmptyString); + m_AccountInfoPage->SetAccountPassword(wxEmptyString); + m_bCredentialsCached = false; + return RunWizard(m_AccountManagerProcessingPage); } else if (m_WelcomePage) { return RunWizard(m_WelcomePage); } diff --git a/clientgui/WizardAccountManager.h b/clientgui/WizardAccountManager.h index 75debd4aef..e46b2312e5 100644 --- a/clientgui/WizardAccountManager.h +++ b/clientgui/WizardAccountManager.h @@ -35,6 +35,9 @@ class CAccountManagerPropertiesPage; class CAccountManagerProcessingPage; ////@end forward declarations +#define ACCOUNTMANAGER_ATTACH 0 +#define ACCOUNTMANAGER_UPDATE 1 +#define ACCOUNTMANAGER_DETACH 2 /*! * CWizardAccountManager class declaration @@ -66,7 +69,7 @@ public: ////@begin CWizardAccountManager member function declarations /// Runs the wizard. - bool Run(); + bool Run(int action = ACCOUNTMANAGER_ATTACH); /// Retrieves bitmap resources wxBitmap GetBitmapResource( const wxString& name );