diff --git a/clientgui/AdvancedFrame.cpp b/clientgui/AdvancedFrame.cpp index 2aec41e3a2..16229fc2be 100644 --- a/clientgui/AdvancedFrame.cpp +++ b/clientgui/AdvancedFrame.cpp @@ -171,10 +171,10 @@ BEGIN_EVENT_TABLE (CAdvancedFrame, CBOINCBaseFrame) EVT_MENU_RANGE(ID_ADVNOTICESVIEW, ID_ADVRESOURCEUSAGEVIEW, CAdvancedFrame::OnChangeView) EVT_MENU(ID_CHANGEGUI, CAdvancedFrame::OnChangeGUI) // Tools - EVT_MENU(ID_WIZARDATTACHPROJECT, CAdvancedFrame::OnWizardAttachProject) - EVT_MENU(ID_WIZARDATTACHACCOUNTMANAGER, CAdvancedFrame::OnWizardUpdate) - EVT_MENU(ID_WIZARDUPDATE, CAdvancedFrame::OnWizardUpdate) - EVT_MENU(ID_WIZARDDETACH, CAdvancedFrame::OnWizardDetach) + EVT_MENU(ID_WIZARDATTACHPROJECT, CBOINCBaseFrame::OnWizardAttachProject) + EVT_MENU(ID_WIZARDATTACHACCOUNTMANAGER, CBOINCBaseFrame::OnWizardUpdate) + EVT_MENU(ID_WIZARDUPDATE, CBOINCBaseFrame::OnWizardUpdate) + EVT_MENU(ID_WIZARDDETACH, CBOINCBaseFrame::OnWizardDetach) // Activity EVT_MENU_RANGE(ID_ADVACTIVITYRUNALWAYS, ID_ADVACTIVITYSUSPEND, CAdvancedFrame::OnActivitySelection) EVT_MENU_RANGE(ID_ADVACTIVITYGPUALWAYS, ID_ADVACTIVITYGPUSUSPEND, CAdvancedFrame::OnGPUSelection) @@ -238,7 +238,7 @@ CAdvancedFrame::CAdvancedFrame(wxString title, wxIconBundle* icons, wxPoint posi SetIcons(*icons); // Create UI elements - wxCHECK_RET(CreateMenu(), _T("Failed to create menu bar.")); + wxCHECK_RET(CreateMenus(), _T("Failed to create menu bar.")); wxCHECK_RET(CreateNotebook(), _T("Failed to create notebook.")); wxCHECK_RET(CreateStatusbar(), _T("Failed to create status bar.")); @@ -291,15 +291,11 @@ CAdvancedFrame::~CAdvancedFrame() { wxCHECK_RET(DeleteNotebook(), _T("Failed to delete notebook.")); } - if (m_pMenubar) { - wxCHECK_RET(DeleteMenu(), _T("Failed to delete menu bar.")); - } - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::~CAdvancedFrame - Function End")); } -bool CAdvancedFrame::CreateMenu() { +bool CAdvancedFrame::CreateMenus() { wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::CreateMenu - Function Begin")); CMainDocument* pDoc = wxGetApp().GetDocument(); @@ -873,14 +869,6 @@ bool CAdvancedFrame::CreateStatusbar() { return true; } - -bool CAdvancedFrame::DeleteMenu() { - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::DeleteMenu - Function Begin")); - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::DeleteMenu - Function End")); - return true; -} - - bool CAdvancedFrame::DeleteNotebook() { wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::DeleteNotebook - Function Begin")); @@ -1156,152 +1144,6 @@ void CAdvancedFrame::OnChangeGUI(wxCommandEvent& WXUNUSED(event)) { } -void CAdvancedFrame::OnWizardAttachProject( wxCommandEvent& WXUNUSED(event) ) { - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardAttachProject - Function Begin")); - - CMainDocument* pDoc = wxGetApp().GetDocument(); - - wxASSERT(pDoc); - wxASSERT(wxDynamicCast(pDoc, CMainDocument)); - - if (!pDoc->IsUserAuthorized()) { - return; - } - - if (pDoc->IsConnected()) { - - // Stop all timers so that the wizard is the only thing doing anything - StopTimers(); - - CWizardAttach* pWizard = new CWizardAttach(this); - - pWizard->Run( - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - false, - false - ); - - if (pWizard) { - pWizard->Destroy(); - } - - DeleteMenu(); - CreateMenu(); - - // Restart timers to continue normal operations. - StartTimers(); - - pDoc->ForceCacheUpdate(); - FireRefreshView(); - } else { - ShowNotCurrentlyConnectedAlert(); - } - - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardAttachProject - Function End")); -} - - -void CAdvancedFrame::OnWizardUpdate(wxCommandEvent& WXUNUSED(event)) { - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardUpdate - Function Begin")); - - CMainDocument* pDoc = wxGetApp().GetDocument(); - - wxASSERT(pDoc); - wxASSERT(wxDynamicCast(pDoc, CMainDocument)); - - if (!pDoc->IsUserAuthorized()) - return; - - if (pDoc->IsConnected()) { - // Stop all timers so that the wizard is the only thing doing anything - StopTimers(); - - CWizardAttach* pWizard = new CWizardAttach(this); - - pWizard->SyncToAccountManager(); - - if (pWizard) - pWizard->Destroy(); - - DeleteMenu(); - CreateMenu(); - pDoc->ForceCacheUpdate(); - FireRefreshView(); - ResetReminderTimers(); - - // Restart timers to continue normal operations. - StartTimers(); - } else { - ShowNotCurrentlyConnectedAlert(); - } - - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardUpdate - Function End")); -} - - -void CAdvancedFrame::OnWizardDetach(wxCommandEvent& WXUNUSED(event)) { - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardDetach - Function Begin")); - - CMainDocument* pDoc = wxGetApp().GetDocument(); - CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); - wxInt32 iAnswer = 0; - wxString strTitle = wxEmptyString; - wxString strMessage = wxEmptyString; - ACCT_MGR_INFO ami; - - wxASSERT(pDoc); - wxASSERT(wxDynamicCast(pDoc, CMainDocument)); - wxASSERT(pSkinAdvanced); - wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); - - if (!pDoc->IsUserAuthorized()) - return; - - if (pDoc->IsConnected()) { - - pDoc->rpc.acct_mgr_info(ami); - - strTitle.Printf( - _("%s - Stop using %s"), - pSkinAdvanced->GetApplicationName().c_str(), - wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() - ); - strMessage.Printf( - _("If you stop using %s,\nyou'll keep all your current projects,\nbut you'll have to manage projects manually.\n\nDo you want to stop using %s?"), - wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str(), - wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() - ); - - iAnswer = wxGetApp().SafeMessageBox( - strMessage, - strTitle, - wxYES_NO | wxICON_QUESTION, - this - ); - - if (wxYES == iAnswer) { - pDoc->rpc.acct_mgr_rpc("", "", "", false); - } - - DeleteMenu(); - CreateMenu(); - pDoc->ForceCacheUpdate(); - FireRefreshView(); - - } else { - ShowNotCurrentlyConnectedAlert(); - } - - wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnWizardDetach - Function End")); -} - - void CAdvancedFrame::OnActivitySelection(wxCommandEvent& event) { wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnActivitySelection - Function Begin")); @@ -1965,8 +1807,7 @@ void CAdvancedFrame::OnConnect(CFrameEvent& WXUNUSED(event)) { // Update the menus // - DeleteMenu(); - CreateMenu(); + CreateMenus(); // Restart timers to continue normal operations. // @@ -2125,17 +1966,6 @@ void CAdvancedFrame::OnNotebookSelectionChanged(wxNotebookEvent& event) { wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnNotebookSelectionChanged - Function End")); } - -void CAdvancedFrame::ResetReminderTimers() { -#ifdef __WXMSW__ - wxASSERT(m_pDialupManager); - wxASSERT(wxDynamicCast(m_pDialupManager, CBOINCDialUpManager)); - - m_pDialupManager->ResetReminderTimers(); -#endif -} - - void CAdvancedFrame::UpdateActivityModeControls( CC_STATUS& status ) { wxMenuBar* pMenuBar = GetMenuBar(); wxASSERT(pMenuBar); @@ -2333,7 +2163,7 @@ void CAdvancedFrame::UpdateRefreshTimerInterval() { void CAdvancedFrame::StartTimers() { wxASSERT(m_pRefreshStateTimer); wxASSERT(m_pFrameRenderTimer); - CBOINCBaseFrame::StartTimers(); + CBOINCBaseFrame::StartTimersBase(); m_pRefreshStateTimer->Start(); m_pFrameRenderTimer->Start(); } @@ -2342,7 +2172,7 @@ void CAdvancedFrame::StartTimers() { void CAdvancedFrame::StopTimers() { wxASSERT(m_pRefreshStateTimer); wxASSERT(m_pFrameRenderTimer); - CBOINCBaseFrame::StopTimers(); + CBOINCBaseFrame::StopTimersBase(); m_pRefreshStateTimer->Stop(); m_pFrameRenderTimer->Stop(); } diff --git a/clientgui/AdvancedFrame.h b/clientgui/AdvancedFrame.h index 4ec98883d8..0be874df18 100644 --- a/clientgui/AdvancedFrame.h +++ b/clientgui/AdvancedFrame.h @@ -62,10 +62,6 @@ public: void OnChangeView( wxCommandEvent& event ); void OnChangeGUI( wxCommandEvent& event ); - void OnWizardAttachProject( wxCommandEvent& event ); - void OnWizardUpdate( wxCommandEvent& event ); - void OnWizardDetach( wxCommandEvent& event ); - void OnActivitySelection( wxCommandEvent& event ); void OnGPUSelection( wxCommandEvent& event ); void OnNetworkSelection( wxCommandEvent& event ); @@ -100,8 +96,6 @@ public: void OnConnect( CFrameEvent& event ); void OnNotification( CFrameEvent& event ); - void ResetReminderTimers(); - bool RestoreState(); bool SaveState(); wxNotebook* GetNotebook(); @@ -127,8 +121,7 @@ private: wxString m_strBaseTitle; - bool CreateMenu(); - bool DeleteMenu(); + bool CreateMenus(); bool CreateNotebook(); bool RepopulateNotebook(); diff --git a/clientgui/BOINCBaseFrame.cpp b/clientgui/BOINCBaseFrame.cpp index 6943eaa4d9..ba47df3dea 100644 --- a/clientgui/BOINCBaseFrame.cpp +++ b/clientgui/BOINCBaseFrame.cpp @@ -36,7 +36,9 @@ #include "Events.h" #include "DlgEventLog.h" #include "DlgSelectComputer.h" - +#include "wizardex.h" +#include "BOINCBaseWizard.h" +#include "WizardAttach.h" DEFINE_EVENT_TYPE(wxEVT_FRAME_ALERT) DEFINE_EVENT_TYPE(wxEVT_FRAME_CONNECT) @@ -702,7 +704,7 @@ void CBOINCBaseFrame::ShowNotCurrentlyConnectedAlert() { } -void CBOINCBaseFrame::StartTimers() { +void CBOINCBaseFrame::StartTimersBase() { wxASSERT(m_pAlertPollTimer); wxASSERT(m_pPeriodicRPCTimer); wxASSERT(m_pDocumentPollTimer); @@ -712,7 +714,7 @@ void CBOINCBaseFrame::StartTimers() { } -void CBOINCBaseFrame::StopTimers() { +void CBOINCBaseFrame::StopTimersBase() { wxASSERT(m_pAlertPollTimer); wxASSERT(m_pPeriodicRPCTimer); wxASSERT(m_pDocumentPollTimer); @@ -901,3 +903,150 @@ void CFrameAlertEvent::ProcessResponse(const int response) const { } } +// bring up the attach-project dialog +// +void CBOINCBaseFrame::OnWizardAttachProject( wxCommandEvent& WXUNUSED(event) ) { + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardAttachProject - Function Begin")); + + CMainDocument* pDoc = wxGetApp().GetDocument(); + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + + if (!pDoc->IsUserAuthorized()) { + return; + } + + if (pDoc->IsConnected()) { + + // Stop all timers so that the wizard is the only thing doing anything + StopTimers(); + + CWizardAttach* pWizard = new CWizardAttach(this); + + pWizard->Run( + wxEmptyString, + wxEmptyString, + wxEmptyString, + wxEmptyString, + wxEmptyString, + wxEmptyString, + wxEmptyString, + false, + false + ); + + pWizard->Destroy(); + + // Restart timers to continue normal operations. + StartTimers(); + + pDoc->ForceCacheUpdate(); + FireRefreshView(); + } else { + ShowNotCurrentlyConnectedAlert(); + } + + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardAttachProject - Function End")); +} + + +void CBOINCBaseFrame::OnWizardUpdate(wxCommandEvent& WXUNUSED(event)) { + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardUpdate - Function Begin")); + + CMainDocument* pDoc = wxGetApp().GetDocument(); + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + + if (!pDoc->IsUserAuthorized()) + return; + + if (pDoc->IsConnected()) { + // Stop all timers so that the wizard is the only thing doing anything + StopTimers(); + + CWizardAttach* pWizard = new CWizardAttach(this); + + pWizard->SyncToAccountManager(); + pWizard->Destroy(); + + CreateMenus(); + pDoc->ForceCacheUpdate(); + FireRefreshView(); + ResetReminderTimers(); + + // Restart timers to continue normal operations. + StartTimers(); + } else { + ShowNotCurrentlyConnectedAlert(); + } + + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardUpdate - Function End")); +} + +// detach from account manager +// +void CBOINCBaseFrame::OnWizardDetach(wxCommandEvent& WXUNUSED(event)) { + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardDetach - Function Begin")); + + CMainDocument* pDoc = wxGetApp().GetDocument(); + CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); + wxInt32 iAnswer = 0; + wxString strTitle = wxEmptyString; + wxString strMessage = wxEmptyString; + ACCT_MGR_INFO ami; + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + wxASSERT(pSkinAdvanced); + wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); + + if (!pDoc->IsUserAuthorized()) { + return; + } + + if (pDoc->IsConnected()) { + pDoc->rpc.acct_mgr_info(ami); + + strTitle.Printf( + _("%s - Stop using %s"), + pSkinAdvanced->GetApplicationName().c_str(), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() + ); + strMessage.Printf( + _("If you stop using %s,\nyou'll keep all your current projects,\nbut you'll have to manage projects manually.\n\nDo you want to stop using %s?"), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str(), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() + ); + + iAnswer = wxGetApp().SafeMessageBox( + strMessage, + strTitle, + wxYES_NO | wxICON_QUESTION, + this + ); + + if (wxYES == iAnswer) { + pDoc->rpc.acct_mgr_rpc("", "", "", false); + } + + CreateMenus(); + pDoc->ForceCacheUpdate(); + FireRefreshView(); + + } else { + ShowNotCurrentlyConnectedAlert(); + } + + wxLogTrace(wxT("Function Start/End"), wxT("CBOINCBaseFrame::OnWizardDetach - Function End")); +} + +void CBOINCBaseFrame::ResetReminderTimers() { +#ifdef __WXMSW__ + wxASSERT(m_pDialupManager); + wxASSERT(wxDynamicCast(m_pDialupManager, CBOINCDialUpManager)); + + m_pDialupManager->ResetReminderTimers(); +#endif +} diff --git a/clientgui/BOINCBaseFrame.h b/clientgui/BOINCBaseFrame.h index fa7cfaf25c..d5952b17c2 100644 --- a/clientgui/BOINCBaseFrame.h +++ b/clientgui/BOINCBaseFrame.h @@ -15,6 +15,9 @@ // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see . +// CBOINCBaseFrame: Base class for the 2 variants of the main window, +// CBOINCAdvancedFrame and CBOINCSimpleFrame + #ifndef BOINC_BOINCBASEFRAME_H #define BOINC_BOINCBASEFRAME_H @@ -22,7 +25,6 @@ #pragma interface "BOINCBaseFrame.cpp" #endif - class CFrameEvent; class CFrameAlertEvent; class CBOINCDialUpManager; @@ -32,7 +34,6 @@ enum FrameAlertEventType { AlertProcessResponse }; - class CBOINCBaseFrame : public wxFrame { DECLARE_DYNAMIC_CLASS( CBOINCBaseFrame ) @@ -64,6 +65,10 @@ public: virtual void OnCloseWindow( wxCommandEvent& event ); virtual void OnExit( wxCommandEvent& event ); + void OnWizardAttachProject( wxCommandEvent& event ); + void OnWizardUpdate( wxCommandEvent& event ); + void OnWizardDetach( wxCommandEvent& event ); + int GetCurrentViewPage(); wxString GetDialupConnectionName() { return m_strNetworkDialupConnectionName; } void SetDialupConnectionName(wxString val) { m_strNetworkDialupConnectionName = val; } @@ -83,8 +88,10 @@ public: void ShowDaemonStartFailedAlert(); void ShowNotCurrentlyConnectedAlert(); - virtual void StartTimers(); - virtual void StopTimers(); + void StartTimersBase(); + void StopTimersBase(); + virtual void StartTimers() {} + virtual void StopTimers() {} virtual void UpdateRefreshTimerInterval(); void ShowAlert( @@ -99,6 +106,8 @@ public: virtual bool RestoreState(); virtual bool SaveState(); + virtual bool CreateMenus(){return true;} + void ResetReminderTimers(); protected: diff --git a/clientgui/sg_BoincSimpleFrame.cpp b/clientgui/sg_BoincSimpleFrame.cpp index d0e95a6dca..0b76dfb671 100644 --- a/clientgui/sg_BoincSimpleFrame.cpp +++ b/clientgui/sg_BoincSimpleFrame.cpp @@ -48,6 +48,7 @@ #include "DlgAbout.h" #include "DlgOptions.h" #include "DlgDiagnosticLogFlags.h" +#include "AdvancedFrame.h" #ifdef __WXMAC__ @@ -70,6 +71,7 @@ IMPLEMENT_DYNAMIC_CLASS(CSimpleFrame, CBOINCBaseFrame) BEGIN_EVENT_TABLE(CSimpleFrame, CBOINCBaseFrame) EVT_SIZE(CSimpleFrame::OnSize) EVT_MENU_OPEN(CSimpleFrame::OnMenuOpening) + // View EVT_MENU(ID_CHANGEGUI, CSimpleFrame::OnChangeGUI) EVT_MENU(ID_SGDEFAULTSKINSELECTOR, CSimpleFrame::OnSelectDefaultSkin) EVT_MENU_RANGE(ID_SGFIRSTSKINSELECTOR, ID_LASTSGSKINSELECTOR, CSimpleFrame::OnSelectSkin) @@ -80,7 +82,12 @@ BEGIN_EVENT_TABLE(CSimpleFrame, CBOINCBaseFrame) EVT_MENU(ID_PREFERENCES, CSimpleFrame::OnPreferences) EVT_MENU(ID_SGOPTIONS, CSimpleFrame::OnOptions) EVT_MENU(ID_SGDIAGNOSTICLOGFLAGS, CSimpleFrame::OnDiagnosticLogFlags) - EVT_MENU(ID_WIZARDATTACHPROJECT, CSimpleFrame::OnProjectsAttachToProject) + // Tools + EVT_MENU(ID_WIZARDATTACHPROJECT, CBOINCBaseFrame::OnWizardAttachProject) + EVT_MENU(ID_WIZARDATTACHACCOUNTMANAGER, CBOINCBaseFrame::OnWizardUpdate) + EVT_MENU(ID_WIZARDUPDATE, CBOINCBaseFrame::OnWizardUpdate) + EVT_MENU(ID_WIZARDDETACH, CBOINCBaseFrame::OnWizardDetach) + // Help EVT_MENU(ID_HELPBOINC, CSimpleFrame::OnHelpBOINC) EVT_MENU(ID_HELPBOINCMANAGER, CSimpleFrame::OnHelpBOINC) EVT_MENU(ID_HELPBOINCWEBSITE, CSimpleFrame::OnHelpBOINC) @@ -103,19 +110,35 @@ CSimpleFrame::CSimpleFrame() { CSimpleFrame::CSimpleFrame(wxString title, wxIconBundle* icons, wxPoint position, wxSize size) : CBOINCBaseFrame((wxFrame *)NULL, ID_SIMPLEFRAME, title, position, size, - wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN) + wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN + ) { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame:: - Overloaded Constructor Function Begin")); - // Initialize Application SetIcons(*icons); - - CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); + CreateMenus(); + dlgMsgsPtr = NULL; + m_pBackgroundPanel = new CSimpleGUIPanel(this); + RestoreState(); +} + +bool CSimpleFrame::CreateMenus() { + ACCT_MGR_INFO ami; wxString strMenuName; wxString strMenuDescription; + bool is_acct_mgr_detected = false; + CMainDocument* pDoc = wxGetApp().GetDocument(); + + CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); + wxASSERT(pDoc); wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); + if (pDoc->IsConnected()) { + pDoc->rpc.acct_mgr_info(ami); + is_acct_mgr_detected = ami.acct_mgr_url.size() ? true : false; + } + // File menu wxMenu *menuFile = new wxMenu; @@ -206,11 +229,46 @@ CSimpleFrame::CSimpleFrame(wxString title, wxIconBundle* icons, wxPoint position // Tools menu wxMenu *menuTools = new wxMenu; - menuTools->Append( - ID_WIZARDATTACHPROJECT, - _("&Add project..."), - _("Add a project") - ); + if (!is_acct_mgr_detected) { + menuTools->Append( + ID_WIZARDATTACHPROJECT, + _("&Add project..."), + _("Add a project") + ); + menuTools->Append( + ID_WIZARDATTACHACCOUNTMANAGER, + _("&Use account manager..."), + _("Use an account manager to control this computer.") + ); + } else { + strMenuName.Printf( + _("&Synchronize with %s"), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() + ); + strMenuDescription.Printf( + _("Get current settings from %s"), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() + ); + menuTools->Append( + ID_WIZARDUPDATE, + strMenuName, + strMenuDescription + ); + menuTools->Append( + ID_WIZARDATTACHPROJECT, + _("&Add project..."), + _("Add a project") + ); + strMenuName.Printf( + _("S&top using %s..."), + wxString(ami.acct_mgr_name.c_str(), wxConvUTF8).c_str() + ); + menuTools->Append( + ID_WIZARDDETACH, + strMenuName, + _("Remove this computer from account manager control.") + ); + } menuTools->AppendSeparator(); menuTools->Append( ID_EVENTLOG, @@ -342,12 +400,7 @@ CSimpleFrame::CSimpleFrame(wxString title, wxIconBundle* icons, wxPoint position m_pAccelTable = new wxAcceleratorTable(3, m_Shortcuts); SetAcceleratorTable(*m_pAccelTable); - - dlgMsgsPtr = NULL; - - m_pBackgroundPanel = new CSimpleGUIPanel(this); - - RestoreState(); + return true; } @@ -729,45 +782,6 @@ void CSimpleFrame::OnRefreshView(CFrameEvent& WXUNUSED(event)) { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnRefreshView - Function End")); } - -void CSimpleFrame::OnProjectsAttachToProject(wxCommandEvent& WXUNUSED(event)) { - wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnProjectsAttachToProject - Function Begin")); - - CMainDocument* pDoc = wxGetApp().GetDocument(); - - wxASSERT(pDoc); - wxASSERT(wxDynamicCast(pDoc, CMainDocument)); - - if (!pDoc->IsUserAuthorized()) - return; - - if (pDoc->IsConnected()) { - - CWizardAttach* pWizard = new CWizardAttach(this); - - pWizard->Run( - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxEmptyString, - false, - false - ); - - if (pWizard) - pWizard->Destroy(); - - } else { - ShowNotCurrentlyConnectedAlert(); - } - - wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnProjectsAttachToProject - Function End")); -} - - void CSimpleFrame::OnConnect(CFrameEvent& WXUNUSED(event)) { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnConnect - Function Begin")); @@ -897,6 +911,10 @@ void CSimpleFrame::OnConnect(CFrameEvent& WXUNUSED(event)) { m_pBackgroundPanel->UpdateProjectView(); } + // Update the menus + // + CreateMenus(); + wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnConnect - Function End")); } @@ -1138,19 +1156,17 @@ void CSimpleGUIPanel::ReskinInterface() { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::ReskinInterface - Function End")); } - void CSimpleGUIPanel::OnProjectsAttachToProject(wxCommandEvent& event) { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::OnProjectsAttachToProject - Function Begin")); CSimpleFrame* pFrame = wxDynamicCast(GetParent(), CSimpleFrame); wxASSERT(pFrame); - pFrame->OnProjectsAttachToProject(event); + pFrame->OnWizardAttachProject(event); - wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::OnProjectsAttachToProject - Function End")); + wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::OnProjectsAttachToProject - Function End")); } - // called from CSimpleFrame::OnRefreshView() void CSimpleGUIPanel::OnFrameRender() { CMainDocument* pDoc = wxGetApp().GetDocument(); diff --git a/clientgui/sg_BoincSimpleFrame.h b/clientgui/sg_BoincSimpleFrame.h index 02309cb3ed..ba1950b30b 100644 --- a/clientgui/sg_BoincSimpleFrame.h +++ b/clientgui/sg_BoincSimpleFrame.h @@ -91,7 +91,8 @@ private: }; -// Define a new frame +// Simple view frame +// class CSimpleFrame : public CBOINCBaseFrame { DECLARE_DYNAMIC_CLASS(CSimpleFrame) @@ -117,8 +118,6 @@ public: void OnCheckVersion( wxCommandEvent& event ); void OnReportBug( wxCommandEvent& event ); - void OnProjectsAttachToProject(wxCommandEvent& event); - void OnConnect(CFrameEvent& event ); void OnReloadSkin( CFrameEvent& event ); void OnRefreshView( CFrameEvent& event ); @@ -133,6 +132,14 @@ public: bool RestoreState(); void OnMove(wxMoveEvent& event); + void StartTimers() { + StartTimersBase(); + } + void StopTimers() { + StopTimersBase(); + } + bool CreateMenus(); + protected: virtual int _GetCurrentViewPage();