From dccbc9aa0f6cc3920e5c05314dfe5fefe6ec2048 Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Mon, 9 Jan 2006 14:03:13 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=9200 --- checkin_notes | 38 + client/win/boinc_cli.rc | 41 +- client/win/boinc_cmd.rc | 41 +- client/win/boinc_dll.rc | 41 +- client/win/boinc_ss.rc | 73 +- clientgui/AccountInfoPage.cpp | 1 + clientgui/BOINCBaseView.cpp | 84 ++ clientgui/BOINCBaseView.h | 6 + clientgui/BOINCGUIApp.cpp | 12 + clientgui/BOINCGUIApp.rc | 46 +- clientgui/DlgAbout.cpp | 12 +- clientgui/DlgAbout.h | 2 +- clientgui/MainFrame.cpp | 10 +- clientgui/ViewMessages.cpp | 3 +- clientgui/ViewProjects.cpp | 66 +- clientgui/ViewResources.cpp | 3 +- clientgui/ViewStatistics.cpp | 3 +- clientgui/ViewTransfers.cpp | 5 +- clientgui/ViewWork.cpp | 63 +- clientgui/ViewWork.h | 2 + win_build/cpdnbbc.sln | 63 ++ win_build/cpdnbbc_boinc_cli_curl.vcproj | 907 ++++++++++++++++++ win_build/cpdnbbc_boinc_dll.vcproj | 226 +++++ win_build/cpdnbbc_boinc_ss.vcproj | 329 +++++++ win_build/cpdnbbc_boinccmd.vcproj | 215 +++++ win_build/cpdnbbc_boincmgr_curl.vcproj | 760 +++++++++++++++ win_build/installerv2/.cvsignore | 3 +- win_build/installerv2/CPDNBBC.ism | Bin 0 -> 205848 bytes .../CPDNBBC/Climate Change Experiment.url | 5 + .../redist/CPDNBBC/project_init.xml | 4 + 30 files changed, 2963 insertions(+), 101 deletions(-) create mode 100644 win_build/cpdnbbc.sln create mode 100644 win_build/cpdnbbc_boinc_cli_curl.vcproj create mode 100644 win_build/cpdnbbc_boinc_dll.vcproj create mode 100644 win_build/cpdnbbc_boinc_ss.vcproj create mode 100644 win_build/cpdnbbc_boinccmd.vcproj create mode 100644 win_build/cpdnbbc_boincmgr_curl.vcproj create mode 100644 win_build/installerv2/CPDNBBC.ism create mode 100644 win_build/installerv2/redist/CPDNBBC/Climate Change Experiment.url create mode 100644 win_build/installerv2/redist/CPDNBBC/project_init.xml diff --git a/checkin_notes b/checkin_notes index f22c363c6b..decea9c652 100755 --- a/checkin_notes +++ b/checkin_notes @@ -202,3 +202,41 @@ Bruce 9 Jan 2006 inc/ user.inc +Rom 9 Jan 2006 (HEAD) + - Initial CPDN/BBC branded client + + client/win/ + boinc_cli.rc + boinc_cmd.rc + boinc_dll.rc + boinc_ss.rc + clientgui/ + AccountInfoPage.cpp + BOINCBaseView.cpp, .h + BOINCGUIApp.cpp + BOINCGUIApp.rc + DlgAbout.cpp, .h + MainFrame.cpp + ViewMessages.cpp + ViewProjects.cpp + ViewResources.cpp + ViewStatistics.cpp + ViewTransfers.cpp + ViewWork.cpp, .h + win_build/ + cpdnbbc.sln (added) + cpdnbbc_boinc_cli_curl.vcproj (added) + cpdnbbc_boinc_dll.vcproj (added) + cpdnbbc_boinc_ss.vcproj (added) + cpdnbbc_boinccmd.vcproj (added) + cpdnbbc_boincmgr_curl.vcproj (added) + win_build/installerv2/ + CPDNBBC.ism (added) + win_build/installerv2/redist/CPDNBBC/ + Climate Change Experiment.url (added) + project_init.xml + +Rom 9 Jan 2006 (HEAD) + - Tag for 5.3.9 release, all platforms + boinc_core_release_5_3_9 + diff --git a/client/win/boinc_cli.rc b/client/win/boinc_cli.rc index c7d448c453..449604f59a 100644 --- a/client/win/boinc_cli.rc +++ b/client/win/boinc_cli.rc @@ -62,7 +62,7 @@ END // Version // -#ifdef _GRIDREPUBLIC +#if defined (_GRIDREPUBLIC) VS_VERSION_INFO VERSIONINFO FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 @@ -85,7 +85,7 @@ BEGIN VALUE "FileDescription", "GridRepublic client" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_cli" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc_cli.exe" VALUE "ProductName", "BOINC core client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" @@ -97,6 +97,41 @@ BEGIN END END +#elif defined(_CPDNBBC) + +VS_VERSION_INFO VERSIONINFO + FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + PRODUCTVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "ClimatePrediction.net" + VALUE "FileDescription", "ClimatePrediction.net client" + VALUE "FileVersion", BOINC_VERSION_STRING "\0" + VALUE "InternalName", "boinc_cli" + VALUE "LegalCopyright", "© 2003-2006 University of California" + VALUE "OriginalFilename", "boinc_cli.exe" + VALUE "ProductName", "CPDNBBC core client" + VALUE "ProductVersion", BOINC_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + #else VS_VERSION_INFO VERSIONINFO @@ -120,7 +155,7 @@ BEGIN VALUE "FileDescription", "BOINC client" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_cli" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc_cli.exe" VALUE "ProductName", "BOINC client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" diff --git a/client/win/boinc_cmd.rc b/client/win/boinc_cmd.rc index 1bc2fc7867..fabbab3cbd 100644 --- a/client/win/boinc_cmd.rc +++ b/client/win/boinc_cmd.rc @@ -62,7 +62,7 @@ END // Version // -#ifdef _GRIDREPUBLIC +#if defined(_GRIDREPUBLIC) VS_VERSION_INFO VERSIONINFO FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 @@ -85,7 +85,7 @@ BEGIN VALUE "FileDescription", "GridRepublic Command Line Interface" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_cli" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc_cli.exe" VALUE "ProductName", "BOINC core client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" @@ -97,6 +97,41 @@ BEGIN END END +#elif defined(_CPDNBBC) + +VS_VERSION_INFO VERSIONINFO + FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + PRODUCTVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "ClimatePrediction.net" + VALUE "FileDescription", "CPDNBBC Command Line Interface" + VALUE "FileVersion", BOINC_VERSION_STRING "\0" + VALUE "InternalName", "boinc_cli" + VALUE "LegalCopyright", "© 2003-2006 University of California" + VALUE "OriginalFilename", "boinc_cli.exe" + VALUE "ProductName", "CPDBBBC core client" + VALUE "ProductVersion", BOINC_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + #else VS_VERSION_INFO VERSIONINFO @@ -120,7 +155,7 @@ BEGIN VALUE "FileDescription", "BOINC Command Line Interface" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_cli" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc_cli.exe" VALUE "ProductName", "BOINC core client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" diff --git a/client/win/boinc_dll.rc b/client/win/boinc_dll.rc index c80f87860d..be0cf5bb2e 100644 --- a/client/win/boinc_dll.rc +++ b/client/win/boinc_dll.rc @@ -62,7 +62,7 @@ END // Version // -#ifdef _GRIDREPUBLIC +#if defined(_GRIDREPUBLIC) VS_VERSION_INFO VERSIONINFO FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 @@ -85,7 +85,7 @@ BEGIN VALUE "FileDescription", "GridRepublic Input Monitor" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_dll" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc.dll" VALUE "ProductName", "BOINC Core Client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" @@ -97,6 +97,41 @@ BEGIN END END +#elif defined(_CPDNBBC) + +VS_VERSION_INFO VERSIONINFO + FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + PRODUCTVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "ClimatePrediction.net" + VALUE "FileDescription", "CPDNBBC Input Monitor" + VALUE "FileVersion", BOINC_VERSION_STRING "\0" + VALUE "InternalName", "boinc_dll" + VALUE "LegalCopyright", "© 2003-2006 University of California" + VALUE "OriginalFilename", "boinc.dll" + VALUE "ProductName", "CPDNBBC Core Client" + VALUE "ProductVersion", BOINC_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + #else VS_VERSION_INFO VERSIONINFO @@ -120,7 +155,7 @@ BEGIN VALUE "FileDescription", "BOINC Input Monitor" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boinc_dll" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boinc.dll" VALUE "ProductName", "BOINC Core Client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" diff --git a/client/win/boinc_ss.rc b/client/win/boinc_ss.rc index 6e69362a8d..9e6ab10f2f 100755 --- a/client/win/boinc_ss.rc +++ b/client/win/boinc_ss.rc @@ -61,7 +61,7 @@ END // // Version // -#ifdef _GRIDREPUBLIC +#if defined(_GRIDREPUBLIC) VS_VERSION_INFO VERSIONINFO FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 @@ -96,6 +96,41 @@ BEGIN END END +#elif defined(_CPDNBBC) + +VS_VERSION_INFO VERSIONINFO + FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + PRODUCTVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "ClimatePrediction.net" + VALUE "FileDescription", "CPDNBBC Screensaver" + VALUE "FileVersion", BOINC_VERSION_STRING "\0" + VALUE "InternalName", "boinc_ss" + VALUE "LegalCopyright", "© 2003-2006 University of California" + VALUE "OriginalFilename", "boinc.scr" + VALUE "ProductName", "CPDNBBC Core Client" + VALUE "ProductVersion", BOINC_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + #else VS_VERSION_INFO VERSIONINFO @@ -185,7 +220,7 @@ IDB_BOINCSPLAT BITMAP "res\\boinc.bmp" // String Table // -#ifdef _GRIDREPUBLIC +#if defined(_GRIDREPUBLIC) STRINGTABLE BEGIN @@ -203,7 +238,26 @@ BEGIN "GridRepublic system status:\n\n" IDS_ERR_BOINCSCREENSAVERLOADING "GridRepublic screensaver loading" - IDS_ERR_OUTOFMEMORY "Not enough memory." +END + +#elif defined(_CPDNBBC) + +STRINGTABLE +BEGIN + IDS_ERR_GENERIC "There was an unspecified problem\nwith the Climate Change Experiment screensaver." + IDS_ERR_BOINCNOTDETECTED + "Climate Change Experiment is not running.\n\nPlease launch Climate Change Experiment to display graphics." + IDS_ERR_BOINCNOTDETECTEDSTARTUP + "Climate Change Experiment is not running.\n(Automatic Startup not detected)\n\nWe recommend running Climate Change Experiment at startup;\nplease reinstall Climate Change Experiment and select this option." + IDS_ERR_BOINCSUSPENDED "Climate Change Experiment is currently suspended." + IDS_ERR_BOINCNOAPPSEXECUTING + "Climate Change Experiment is currently idle." + IDS_ERR_BOINCNOAPPSEXECUTINGNOPROJECTSDETECTED + "Climate Change Experiment is not attached to any projects.\nYou can attach to projects using\nthe Climate Change Experiment website." + IDS_ERR_BOINCNOGRAPHICSAPPSEXECUTING + "Climate Change Experiment system status:\n\n" + IDS_ERR_BOINCSCREENSAVERLOADING + "Climate Change Experiment screensaver loading" END #else @@ -224,23 +278,32 @@ BEGIN "BOINC system status:\n\n" IDS_ERR_BOINCSCREENSAVERLOADING "BOINC screensaver loading" - IDS_ERR_OUTOFMEMORY "Not enough memory." END #endif STRINGTABLE BEGIN + IDS_ERR_OUTOFMEMORY "Not enough memory." IDS_ERR_NOPREVIEW "No preview available" END -#ifdef _GRIDREPUBLIC + + +#if defined(_GRIDREPUBLIC) STRINGTABLE BEGIN IDS_DESCRIPTION "GridRepublic" END +#elif defined(_CPDNBBC) + +STRINGTABLE +BEGIN + IDS_DESCRIPTION "Climate Change Experiment" +END + #else STRINGTABLE diff --git a/clientgui/AccountInfoPage.cpp b/clientgui/AccountInfoPage.cpp index 11cb9d8f5c..2008735702 100644 --- a/clientgui/AccountInfoPage.cpp +++ b/clientgui/AccountInfoPage.cpp @@ -76,6 +76,7 @@ bool CAccountInfoPage::Create( CBOINCBaseWizard* parent ) { ////@begin CAccountInfoPage member initialisation + m_AccountManagerInformation = NULL; m_AccountCreateCtrl = NULL; m_AccountUseExistingCtrl = NULL; m_AccountEmailAddressStaticCtrl = NULL; diff --git a/clientgui/BOINCBaseView.cpp b/clientgui/BOINCBaseView.cpp index 38a6cf9054..c0cf7857f8 100644 --- a/clientgui/BOINCBaseView.cpp +++ b/clientgui/BOINCBaseView.cpp @@ -27,6 +27,7 @@ #include "BOINCBaseView.h" #include "BOINCTaskCtrl.h" #include "BOINCListCtrl.h" +#include "Events.h" #include "res/boinc.xpm" @@ -393,13 +394,96 @@ void CBOINCBaseView::EmptyTasks() { } +void CBOINCBaseView::PreUpdateSelection(){ + if (m_pListPane) { + if ((m_pListPane->GetSelectedItemCount() == 0) && + (m_pListPane->GetItemCount() >= 1)) { + + long desiredstate = wxLIST_STATE_FOCUSED | wxLIST_STATE_SELECTED; + m_pListPane->SetItemState(0, desiredstate, desiredstate); + } + } +} + + void CBOINCBaseView::UpdateSelection(){ +} + + +void CBOINCBaseView::PostUpdateSelection(){ wxASSERT(m_pTaskPane); m_pTaskPane->UpdateControls(); Layout(); } +void CBOINCBaseView::UpdateWebsiteSelection(long lControlGroup, PROJECT* project){ + unsigned int i; + CTaskItemGroup* pGroup = NULL; + CTaskItem* pItem = NULL; + CMainDocument* pDoc = wxGetApp().GetDocument(); + + wxASSERT(pDoc); + wxASSERT(wxDynamicCast(pDoc, CMainDocument)); + wxASSERT(m_pTaskPane); + wxASSERT(m_pListPane); + + // Update the websites list + // + if (m_bForceUpdateSelection) { + if (m_TaskGroups.size() > 1) { + + // Delete task group, objects, and controls. + pGroup = m_TaskGroups[lControlGroup]; + + 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 ); + } + + // If something is selected create the tasks and controls + if (m_pListPane->GetSelectedItemCount()) { + if (project) { + // 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++) { + 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; + } + +} + + bool CBOINCBaseView::_EnsureLastItemVisible() { return EnsureLastItemVisible(); } diff --git a/clientgui/BOINCBaseView.h b/clientgui/BOINCBaseView.h index 2f8d0b3bb4..f316c093ae 100644 --- a/clientgui/BOINCBaseView.h +++ b/clientgui/BOINCBaseView.h @@ -31,6 +31,8 @@ class CBOINCTaskCtrl; class CBOINCListCtrl; +class PROJECT; + class CTaskItem : wxObject { public: @@ -130,7 +132,11 @@ protected: virtual void EmptyTasks(); + virtual void PreUpdateSelection(); virtual void UpdateSelection(); + virtual void PostUpdateSelection(); + + virtual void UpdateWebsiteSelection(long lControlGroup, PROJECT* project); bool _EnsureLastItemVisible(); virtual bool EnsureLastItemVisible(); diff --git a/clientgui/BOINCGUIApp.cpp b/clientgui/BOINCGUIApp.cpp index 06b46a353f..0bb57e34f6 100644 --- a/clientgui/BOINCGUIApp.cpp +++ b/clientgui/BOINCGUIApp.cpp @@ -87,6 +87,18 @@ bool CBrandingScheme::OnInit( wxConfigBase *pConfig ) { wxT("Together we are building the most powerful computer in the world;\n" "Together anything is possible!"); break; + case 2: + // Running as a CPDNBBC client. + m_strApplicationName = wxT("Climate Change Experiment Manager"); + m_iconApplicationIcon = wxIcon(boinc_xpm); + m_bitmapApplicationLogo = wxBitmap(boincsm_xpm); + m_strCompanyName = wxT("ClimatePrediction.net"); + m_strCompanyWebsite = wxT("http://climateprediction.net/"); + m_strProjectName = wxT("Climate Change Experiment"); + m_bitmapAPWizardLogo = wxBitmap(attachprojectwizard_xpm); + m_bitmapAMWizardLogo = wxBitmap(attachprojectwizard_xpm); + m_strAMWizardAttachMessage = wxEmptyString; + break; default: // Running in native mode without any branding m_strApplicationName = wxT("BOINC Manager"); diff --git a/clientgui/BOINCGUIApp.rc b/clientgui/BOINCGUIApp.rc index b6d69fd92c..07b10330e6 100644 --- a/clientgui/BOINCGUIApp.rc +++ b/clientgui/BOINCGUIApp.rc @@ -106,7 +106,7 @@ END // Version // -#ifdef _GRIDREPUBLIC +#if defined(_GRIDREPUBLIC) VS_VERSION_INFO VERSIONINFO FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 @@ -129,7 +129,7 @@ BEGIN VALUE "FileDescription", "GridRepublic for Windows" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "gridrepublic" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "gridrepublic.exe" VALUE "ProductName", "BOINC core client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" @@ -141,6 +141,42 @@ BEGIN END END +#elif defined(_CPDNBBC) + + +VS_VERSION_INFO VERSIONINFO + FILEVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + PRODUCTVERSION BOINC_MAJOR_VERSION,BOINC_MINOR_VERSION,BOINC_RELEASE,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "ClimatePrediction.net" + VALUE "FileDescription", "CPDNBBC Manager for Windows" + VALUE "FileVersion", BOINC_VERSION_STRING "\0" + VALUE "InternalName", "boincmgr" + VALUE "LegalCopyright", "© 2003-2006 University of California" + VALUE "OriginalFilename", "boincmgr.exe" + VALUE "ProductName", "CPDNBBC core client" + VALUE "ProductVersion", BOINC_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + #else VS_VERSION_INFO VERSIONINFO @@ -160,13 +196,13 @@ BEGIN BEGIN BLOCK "040904b0" BEGIN - VALUE "CompanyName", "Space Sciences Laboratory, U.C. Berkeley" + VALUE "CompanyName", "Space Sciences Laboratory" VALUE "FileDescription", "BOINC Manager for Windows" VALUE "FileVersion", BOINC_VERSION_STRING "\0" VALUE "InternalName", "boincmgr" - VALUE "LegalCopyright", "Copyright © 2003-2005 University of California" + VALUE "LegalCopyright", "© 2003-2006 University of California" VALUE "OriginalFilename", "boincmgr.exe" - VALUE "ProductName", "BOINC core client" + VALUE "ProductName", "CPDNBBC core client" VALUE "ProductVersion", BOINC_VERSION_STRING "\0" END END diff --git a/clientgui/DlgAbout.cpp b/clientgui/DlgAbout.cpp index adc26d0a84..03e92a2f34 100644 --- a/clientgui/DlgAbout.cpp +++ b/clientgui/DlgAbout.cpp @@ -79,15 +79,10 @@ bool CDlgAbout::Create(wxWindow* parent, wxWindowID id, const wxString& caption, m_AboutBOINCURLCtrl = NULL; ////@end CDlgAbout member initialisation -////@begin CDlgAbout creation SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); - GetSizer()->Fit(this); - GetSizer()->SetSizeHints(this); - Centre(); -////@end CDlgAbout creation // Change the various dialog items for the branded manager // @@ -115,6 +110,11 @@ bool CDlgAbout::Create(wxWindow* parent, wxWindowID id, const wxString& caption, wxGetApp().GetBrand()->GetCompanyWebsite().c_str() ); } + + GetSizer()->Fit(this); + GetSizer()->SetSizeHints(this); + Centre(); + return TRUE; } @@ -161,7 +161,7 @@ void CDlgAbout::CreateControls() { itemFlexGridSizer7->Add(itemStaticText10, 0, wxALIGN_RIGHT|wxALIGN_TOP|wxLEFT|wxRIGHT, 5); wxStaticText* itemStaticText11 = new wxStaticText; - itemStaticText11->Create( itemDialog1, wxID_STATIC, _("(C) 2005 University of California at Berkeley.\nAll Rights Reserved."), wxDefaultPosition, wxDefaultSize, 0 ); + itemStaticText11->Create( itemDialog1, wxID_STATIC, _("(C) 2003-2006 University of California at Berkeley.\nAll Rights Reserved."), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer7->Add(itemStaticText11, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); m_AboutBOINCSloganCtrl = new wxStaticText; diff --git a/clientgui/DlgAbout.h b/clientgui/DlgAbout.h index c5f330f72b..94db42f436 100644 --- a/clientgui/DlgAbout.h +++ b/clientgui/DlgAbout.h @@ -51,7 +51,7 @@ class wxHyperLink; #define SYMBOL_CDLGABOUT_STYLE wxDEFAULT_DIALOG_STYLE #define SYMBOL_CDLGABOUT_TITLE _("About BOINC Manager") #define SYMBOL_CDLGABOUT_IDNAME ID_DIALOG -#define SYMBOL_CDLGABOUT_SIZE wxSize(400, 300) +#define SYMBOL_CDLGABOUT_SIZE wxSize(-1, -1) #define SYMBOL_CDLGABOUT_POSITION wxDefaultPosition #define ID_ABOUTBOINCLINK 10031 ////@end control identifiers diff --git a/clientgui/MainFrame.cpp b/clientgui/MainFrame.cpp index 09e66f1277..9c98659905 100644 --- a/clientgui/MainFrame.cpp +++ b/clientgui/MainFrame.cpp @@ -1399,6 +1399,7 @@ void CMainFrame::OnConnect(CMainFrameEvent&) { CWizardAccountManager* pAMWizard = NULL; wxString strName = wxEmptyString; wxString strURL = wxEmptyString; + bool bCachedCredentials = false; ACCT_MGR_INFO ami; PROJECT_INIT_STATUS pis; @@ -1417,10 +1418,13 @@ void CMainFrame::OnConnect(CMainFrameEvent&) { pDoc->rpc.get_project_init_status(pis); strName = pis.name.c_str(); strURL = pis.url.c_str(); - if (pis.url.length() && pis.has_account_key) { - pAPWizard->Run(strName, strURL, true); + bCachedCredentials = pis.url.length() && pis.has_account_key; + if (pAPWizard->Run(strName, strURL, bCachedCredentials)) { + // If successful, display the work tab + m_pNotebook->SetSelection(ID_LIST_WORKVIEW - ID_LIST_BASE); } else { - pAPWizard->Run(strName, strURL, false); + // If failure, display the messages tab + m_pNotebook->SetSelection(ID_LIST_MESSAGESVIEW - ID_LIST_BASE); } } diff --git a/clientgui/ViewMessages.cpp b/clientgui/ViewMessages.cpp index d8f93f7b5d..2946abdbea 100644 --- a/clientgui/ViewMessages.cpp +++ b/clientgui/ViewMessages.cpp @@ -279,7 +279,8 @@ bool CViewMessages::EnsureLastItemVisible() { void CViewMessages::UpdateSelection() { - CBOINCBaseView::UpdateSelection(); + CBOINCBaseView::PreUpdateSelection(); + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewProjects.cpp b/clientgui/ViewProjects.cpp index 9200cd33c8..219856eb47 100644 --- a/clientgui/ViewProjects.cpp +++ b/clientgui/ViewProjects.cpp @@ -533,15 +533,18 @@ wxInt32 CViewProjects::UpdateCache(long item, long column, wxString& strNewData) void CViewProjects::UpdateSelection() { - unsigned int i; CTaskItemGroup* pGroup = NULL; - CTaskItem* pItem = NULL; PROJECT* project = NULL; CMainDocument* pDoc = wxGetApp().GetDocument(); wxASSERT(pDoc); wxASSERT(wxDynamicCast(pDoc, CMainDocument)); wxASSERT(m_pTaskPane); + wxASSERT(m_pListPane); + + + CBOINCBaseView::PreUpdateSelection(); + // Update the tasks static box buttons // @@ -575,65 +578,14 @@ void CViewProjects::UpdateSelection() { } m_pTaskPane->EnableTask(pGroup->m_Tasks[BTN_RESET]); m_pTaskPane->EnableTask(pGroup->m_Tasks[BTN_DETACH]); + + CBOINCBaseView::UpdateWebsiteSelection(GRP_WEBSITES, project); + } else { m_pTaskPane->DisableTaskGroupTasks(pGroup); } - // Update the websites list - // - if (m_bForceUpdateSelection) { - if (m_TaskGroups.size() > 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]; - } - pGroup->m_Tasks.clear(); - delete pGroup; - - pGroup = NULL; - - m_TaskGroups.erase( m_TaskGroups.begin() + 1 ); - } - - // If something is selected create the tasks and controls - if (m_pListPane->GetSelectedItemCount()) { - project = pDoc->project(m_pListPane->GetFirstSelected()); - if (project) { - // 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++) { - 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; - } - - CBOINCBaseView::UpdateSelection(); + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewResources.cpp b/clientgui/ViewResources.cpp index 5be7e08dd6..65a200cbfe 100644 --- a/clientgui/ViewResources.cpp +++ b/clientgui/ViewResources.cpp @@ -198,7 +198,8 @@ wxInt32 CViewResources::UpdateCache(long item, long column, wxString& strNewData void CViewResources::UpdateSelection() { - CBOINCBaseView::UpdateSelection(); + CBOINCBaseView::PreUpdateSelection(); + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewStatistics.cpp b/clientgui/ViewStatistics.cpp index 76a8bc426b..1725b0f797 100644 --- a/clientgui/ViewStatistics.cpp +++ b/clientgui/ViewStatistics.cpp @@ -922,7 +922,8 @@ void CViewStatistics::OnListRender( wxTimerEvent& WXUNUSED(event) ) { void CViewStatistics::UpdateSelection() { - CBOINCBaseView::UpdateSelection(); + CBOINCBaseView::PreUpdateSelection(); + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewTransfers.cpp b/clientgui/ViewTransfers.cpp index ca1eddc2f0..bba257cf81 100644 --- a/clientgui/ViewTransfers.cpp +++ b/clientgui/ViewTransfers.cpp @@ -354,13 +354,16 @@ wxInt32 CViewTransfers::UpdateCache(long item, long column, wxString& strNewData void CViewTransfers::UpdateSelection() { CTaskItemGroup* pGroup = m_TaskGroups[0]; + + CBOINCBaseView::PreUpdateSelection(); + if (m_pListPane->GetSelectedItemCount()) { m_pTaskPane->EnableTaskGroupTasks(pGroup); } else { m_pTaskPane->DisableTaskGroupTasks(pGroup); } - CBOINCBaseView::UpdateSelection(); + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewWork.cpp b/clientgui/ViewWork.cpp index 34fa9566c0..686c0fe7c7 100644 --- a/clientgui/ViewWork.cpp +++ b/clientgui/ViewWork.cpp @@ -42,10 +42,14 @@ #define COLUMN_REPORTDEADLINE 6 #define COLUMN_STATUS 7 +// groups that contain buttons +#define GRP_TASKS 0 +#define GRP_WEBSITES 1 + // buttons in the "tasks" area -#define BTN_SUSPEND 0 -#define BTN_GRAPHICS 1 -#define BTN_ABORT 2 +#define BTN_GRAPHICS 0 +#define BTN_SUSPEND 1 +#define BTN_ABORT 2 CWork::CWork() { @@ -70,6 +74,7 @@ BEGIN_EVENT_TABLE (CViewWork, CBOINCBaseView) EVT_BUTTON(ID_TASK_WORK_SUSPEND, CViewWork::OnWorkSuspend) EVT_BUTTON(ID_TASK_WORK_SHOWGRAPHICS, CViewWork::OnWorkShowGraphics) EVT_BUTTON(ID_TASK_WORK_ABORT, CViewWork::OnWorkAbort) + EVT_CUSTOM_RANGE(wxEVT_COMMAND_BUTTON_CLICKED, ID_TASK_PROJECT_WEB_PROJDEF_MIN, ID_TASK_PROJECT_WEB_PROJDEF_MAX, CViewWork::OnProjectWebsiteClicked) EVT_LIST_ITEM_SELECTED(ID_LIST_WORKVIEW, CViewWork::OnListSelected) EVT_LIST_ITEM_DESELECTED(ID_LIST_WORKVIEW, CViewWork::OnListDeselected) END_EVENT_TABLE () @@ -96,16 +101,16 @@ CViewWork::CViewWork(wxNotebook* pNotebook) : m_TaskGroups.push_back( pGroup ); pItem = new CTaskItem( - _("Suspend"), - _("Suspend work for this result."), - ID_TASK_WORK_SUSPEND + _("Show graphics"), + _("Show application graphics in a window."), + ID_TASK_WORK_SHOWGRAPHICS ); pGroup->m_Tasks.push_back( pItem ); pItem = new CTaskItem( - _("Show graphics"), - _("Show application graphics in a window."), - ID_TASK_WORK_SHOWGRAPHICS + _("Suspend"), + _("Suspend work for this result."), + ID_TASK_WORK_SUSPEND ); pGroup->m_Tasks.push_back( pItem ); @@ -277,6 +282,32 @@ void CViewWork::OnWorkAbort( wxCommandEvent& WXUNUSED(event) ) { } +void CViewWork::OnProjectWebsiteClicked( wxEvent& event ) { + wxLogTrace(wxT("Function Start/End"), wxT("CViewWork::OnProjectWebsiteClicked - Function Begin")); + + CMainFrame* pFrame = wxGetApp().GetFrame(); + + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CMainFrame)); + wxASSERT(m_pTaskPane); + wxASSERT(m_pListPane); + + pFrame->UpdateStatusText(_("Launching browser...")); + + int website_task_index = event.GetId() - ID_TASK_PROJECT_WEB_PROJDEF_MIN; + pFrame->ExecuteBrowserLink( + m_TaskGroups[1]->m_Tasks[website_task_index]->m_strWebSiteLink + ); + + pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); + + wxLogTrace(wxT("Function Start/End"), wxT("CViewWork::OnProjectWebsiteClicked - Function End")); +} + + wxInt32 CViewWork::GetDocCount() { CMainDocument* pDoc = wxGetApp().GetDocument(); @@ -433,15 +464,21 @@ wxInt32 CViewWork::UpdateCache(long item, long column, wxString& strNewData) { void CViewWork::UpdateSelection() { CTaskItemGroup* pGroup = NULL; + RESULT* result = NULL; + PROJECT* project = NULL; CMainDocument* pDoc = wxGetApp().GetDocument(); wxASSERT(NULL != pDoc); wxASSERT(wxDynamicCast(pDoc, CMainDocument)); wxASSERT(NULL != m_pTaskPane); + + CBOINCBaseView::PreUpdateSelection(); + + pGroup = m_TaskGroups[0]; if (m_pListPane->GetSelectedItemCount()) { - RESULT* result = pDoc->result(m_pListPane->GetFirstSelected()); + result = pDoc->result(m_pListPane->GetFirstSelected()); m_pTaskPane->EnableTask(pGroup->m_Tasks[BTN_SUSPEND]); if (result) { if (result->suspended_via_gui) { @@ -460,9 +497,15 @@ void CViewWork::UpdateSelection() { } } m_pTaskPane->EnableTask(pGroup->m_Tasks[BTN_ABORT]); + + project = pDoc->state.lookup_project(result->project_url); + CBOINCBaseView::UpdateWebsiteSelection(GRP_WEBSITES, project); + } else { m_pTaskPane->DisableTaskGroupTasks(pGroup); } + + CBOINCBaseView::PostUpdateSelection(); } diff --git a/clientgui/ViewWork.h b/clientgui/ViewWork.h index b4eac60827..9936ea8b7d 100644 --- a/clientgui/ViewWork.h +++ b/clientgui/ViewWork.h @@ -62,6 +62,8 @@ public: void OnWorkShowGraphics( wxCommandEvent& event ); void OnWorkAbort( wxCommandEvent& event ); + void OnProjectWebsiteClicked( wxEvent& event ); + protected: std::vector m_WorkCache; diff --git a/win_build/cpdnbbc.sln b/win_build/cpdnbbc.sln new file mode 100644 index 0000000000..9b30095d11 --- /dev/null +++ b/win_build/cpdnbbc.sln @@ -0,0 +1,63 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libboinc", "libboinc.vcproj", "{E8F6BD7E-461A-4733-B7D8-37B09A099ED8}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boincmgr", "cpdnbbc_boincmgr_curl.vcproj", "{06113715-AC51-4E91-8B9D-C987CABE0920}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc", "cpdnbbc_boinc_cli_curl.vcproj", "{C04F0FCC-BB5D-4627-8656-6173B28BD69E}" + ProjectSection(ProjectDependencies) = postProject + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8} = {E8F6BD7E-461A-4733-B7D8-37B09A099ED8} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc_dll", "cpdnbbc_boinc_dll.vcproj", "{B06280CB-82A4-46DE-8956-602643078BDF}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc_ss", "cpdnbbc_boinc_ss.vcproj", "{4A2C5963-6A8D-4CA1-A312-C3D749B2EA81}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boinc_cmd", "cpdnbbc_boinccmd.vcproj", "{8F37E1F3-3A68-4A1D-9579-A1210BDD055E}" + ProjectSection(ProjectDependencies) = postProject + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8} = {E8F6BD7E-461A-4733-B7D8-37B09A099ED8} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}.Debug.ActiveCfg = Debug|Win32 + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}.Debug.Build.0 = Debug|Win32 + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}.Release.ActiveCfg = Release|Win32 + {E8F6BD7E-461A-4733-B7D8-37B09A099ED8}.Release.Build.0 = Release|Win32 + {06113715-AC51-4E91-8B9D-C987CABE0920}.Debug.ActiveCfg = Debug|Win32 + {06113715-AC51-4E91-8B9D-C987CABE0920}.Debug.Build.0 = Debug|Win32 + {06113715-AC51-4E91-8B9D-C987CABE0920}.Release.ActiveCfg = Release|Win32 + {06113715-AC51-4E91-8B9D-C987CABE0920}.Release.Build.0 = Release|Win32 + {C04F0FCC-BB5D-4627-8656-6173B28BD69E}.Debug.ActiveCfg = Debug|Win32 + {C04F0FCC-BB5D-4627-8656-6173B28BD69E}.Debug.Build.0 = Debug|Win32 + {C04F0FCC-BB5D-4627-8656-6173B28BD69E}.Release.ActiveCfg = Release|Win32 + {C04F0FCC-BB5D-4627-8656-6173B28BD69E}.Release.Build.0 = Release|Win32 + {B06280CB-82A4-46DE-8956-602643078BDF}.Debug.ActiveCfg = Debug|Win32 + {B06280CB-82A4-46DE-8956-602643078BDF}.Debug.Build.0 = Debug|Win32 + {B06280CB-82A4-46DE-8956-602643078BDF}.Release.ActiveCfg = Release|Win32 + {B06280CB-82A4-46DE-8956-602643078BDF}.Release.Build.0 = Release|Win32 + {4A2C5963-6A8D-4CA1-A312-C3D749B2EA81}.Debug.ActiveCfg = Debug|Win32 + {4A2C5963-6A8D-4CA1-A312-C3D749B2EA81}.Debug.Build.0 = Debug|Win32 + {4A2C5963-6A8D-4CA1-A312-C3D749B2EA81}.Release.ActiveCfg = Release|Win32 + {4A2C5963-6A8D-4CA1-A312-C3D749B2EA81}.Release.Build.0 = Release|Win32 + {8F37E1F3-3A68-4A1D-9579-A1210BDD055E}.Debug.ActiveCfg = Debug|Win32 + {8F37E1F3-3A68-4A1D-9579-A1210BDD055E}.Debug.Build.0 = Debug|Win32 + {8F37E1F3-3A68-4A1D-9579-A1210BDD055E}.Release.ActiveCfg = Release|Win32 + {8F37E1F3-3A68-4A1D-9579-A1210BDD055E}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/win_build/cpdnbbc_boinc_cli_curl.vcproj b/win_build/cpdnbbc_boinc_cli_curl.vcproj new file mode 100644 index 0000000000..c6fd3b75ad --- /dev/null +++ b/win_build/cpdnbbc_boinc_cli_curl.vcproj @@ -0,0 +1,907 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win_build/cpdnbbc_boinc_dll.vcproj b/win_build/cpdnbbc_boinc_dll.vcproj new file mode 100644 index 0000000000..20375fb3a0 --- /dev/null +++ b/win_build/cpdnbbc_boinc_dll.vcproj @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win_build/cpdnbbc_boinc_ss.vcproj b/win_build/cpdnbbc_boinc_ss.vcproj new file mode 100644 index 0000000000..a02a11c09a --- /dev/null +++ b/win_build/cpdnbbc_boinc_ss.vcproj @@ -0,0 +1,329 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win_build/cpdnbbc_boinccmd.vcproj b/win_build/cpdnbbc_boinccmd.vcproj new file mode 100644 index 0000000000..a6e471f8bd --- /dev/null +++ b/win_build/cpdnbbc_boinccmd.vcproj @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win_build/cpdnbbc_boincmgr_curl.vcproj b/win_build/cpdnbbc_boincmgr_curl.vcproj new file mode 100644 index 0000000000..af746f580d --- /dev/null +++ b/win_build/cpdnbbc_boincmgr_curl.vcproj @@ -0,0 +1,760 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win_build/installerv2/.cvsignore b/win_build/installerv2/.cvsignore index feae9ec361..bfd5b35c43 100644 --- a/win_build/installerv2/.cvsignore +++ b/win_build/installerv2/.cvsignore @@ -3,4 +3,5 @@ BOINCService BOINCRM GridRepublic boinc.pvk -boinc.spc \ No newline at end of file +boinc.spc +CPDNBBC \ No newline at end of file diff --git a/win_build/installerv2/CPDNBBC.ism b/win_build/installerv2/CPDNBBC.ism new file mode 100644 index 0000000000000000000000000000000000000000..103a250c7268e02a5f3277b13788b0b5805a4b8d GIT binary patch literal 205848 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 literal 0 HcmV?d00001 diff --git a/win_build/installerv2/redist/CPDNBBC/Climate Change Experiment.url b/win_build/installerv2/redist/CPDNBBC/Climate Change Experiment.url new file mode 100644 index 0000000000..981a272d37 --- /dev/null +++ b/win_build/installerv2/redist/CPDNBBC/Climate Change Experiment.url @@ -0,0 +1,5 @@ +[InternetShortcut] +URL=http://www.climateprediction.net/ +Modified=70048B5B1D15C60153 +IconIndex=0 +IconFile=C:\Program Files\Climate Change Experiment\cpdnbbcmgr.exe diff --git a/win_build/installerv2/redist/CPDNBBC/project_init.xml b/win_build/installerv2/redist/CPDNBBC/project_init.xml new file mode 100644 index 0000000000..6c74a6f98f --- /dev/null +++ b/win_build/installerv2/redist/CPDNBBC/project_init.xml @@ -0,0 +1,4 @@ + + http://www.climateprediction.net/ + Climate Change Experiment +