*** empty log message ***

svn path=/trunk/boinc/; revision=11890
This commit is contained in:
David Anderson 2007-01-17 18:13:33 +00:00
parent b68d10ee59
commit afb1d21d9a
11 changed files with 1607 additions and 1 deletions

View File

@ -685,3 +685,20 @@ David 17 Jan 2007
ViewWork.cpp
ViewWorkGrid.cpp
sg_ViewTabPage.cpp
David 17 Jan 2007
- core client: reset 5-minute timer for network activity
is user explicitly changes network mode
- Manager: initial checkin of Advanced Prefs dialog
(from Frank Weiler)
client/
gui_rpc_server_ops.C
clientgui/
AdvancedFrame.cpp,h
DlgAdvPreferences.cpp,h
DlgAdvPreferencesBase.cpp,h
Events.h
sg_ViewTabPage.cpp
win_build/
boincmgr_curl.vcproj

View File

@ -301,6 +301,11 @@ static void handle_set_network_mode(char* buf, MIOFILE& fout) {
fout.printf("<error>Missing mode</error>\n");
return;
}
// user is turning network on/off explicitly,
// so disable the "5 minute grace period" mechanism
//
gstate.gui_rpcs.time_of_last_rpc_needing_network = 0;
gstate.network_mode.set(mode, duration);
fout.printf("<success/>\n");
}

View File

@ -58,6 +58,7 @@
#include "BOINCBaseWizard.h"
#include "WizardAttachProject.h"
#include "WizardAccountManager.h"
#include "DlgAdvPreferences.h"
#ifdef __WXMAC__
#include "mac/MacGUI.pch"
#endif
@ -174,6 +175,7 @@ BEGIN_EVENT_TABLE (CAdvancedFrame, CBOINCBaseFrame)
EVT_MENU(ID_PROJECTSATTACHPROJECT, CAdvancedFrame::OnProjectsAttachToProject)
EVT_MENU(ID_COMMANDSRETRYCOMMUNICATIONS, CAdvancedFrame::OnCommandsRetryCommunications)
EVT_MENU(ID_OPTIONSOPTIONS, CAdvancedFrame::OnOptionsOptions)
EVT_MENU(ID_ADVPREFSDLG, CAdvancedFrame::OnDlgPreferences)
EVT_HELP(wxID_ANY, CAdvancedFrame::OnHelp)
EVT_MENU(ID_HELPBOINCMANAGER, CAdvancedFrame::OnHelpBOINCManager)
EVT_MENU(ID_HELPBOINC, CAdvancedFrame::OnHelpBOINCWebsite)
@ -415,6 +417,12 @@ bool CAdvancedFrame::CreateMenu() {
_("&Options..."),
_("Configure GUI options and proxy settings")
);
menuAdvanced->Append(
ID_ADVPREFSDLG,
_("&Preferences..."),
_("Configure local preferences")
);
// %s is the project name
// i.e. 'BOINC', 'GridRepublic'
strMenuDescription.Printf(
@ -1268,6 +1276,13 @@ void CAdvancedFrame::OnCommandsRetryCommunications( wxCommandEvent& WXUNUSED(eve
}
void CAdvancedFrame::OnDlgPreferences(wxCommandEvent& WXUNUSED(event)) {
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnDlgPreferences - Function Begin"));
CDlgAdvPreferences dlg(this);
dlg.ShowModal();
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnDlgPreferences - Function End"));
}
void CAdvancedFrame::OnOptionsOptions(wxCommandEvent& WXUNUSED(event)) {
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnOptionsOptions - Function Begin"));

View File

@ -72,6 +72,7 @@ public:
void OnProjectsAttachToProject( wxCommandEvent& event );
void OnOptionsOptions( wxCommandEvent& event );
void OnDlgPreferences( wxCommandEvent& event );
void OnHelp( wxHelpEvent& event );
void OnHelpBOINCManager( wxCommandEvent& event );

View File

@ -0,0 +1,705 @@
// Berkeley Open Infrastructure for Network Computing
// http://boinc.berkeley.edu
// Copyright (C) 2005 University of California
//
// This is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation;
// either version 2.1 of the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// To view the GNU Lesser General Public License visit
// http://www.gnu.org/copyleft/lesser.html
// or write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma implementation "DlgAdvPreferences.h"
#endif
#include "stdwx.h"
#include "DlgAdvPreferences.h"
#include "res/usage.xpm"
#include "res/xfer.xpm"
#include "res/proj.xpm"
#include "BOINCGUIApp.h"
#include "MainDocument.h"
#include "SkinManager.h"
#include "hyperlink.h"
IMPLEMENT_DYNAMIC_CLASS(CDlgAdvPreferences, wxDialog)
BEGIN_EVENT_TABLE(CDlgAdvPreferences, wxDialog)
EVT_COMMAND_RANGE(20000,21000,wxEVT_COMMAND_CHECKBOX_CLICKED,CDlgAdvPreferences::OnHandleCommandEvent)
EVT_COMMAND_RANGE(20000,21000,wxEVT_COMMAND_RADIOBUTTON_SELECTED,CDlgAdvPreferences::OnHandleCommandEvent)
EVT_COMMAND_RANGE(20000,21000,wxEVT_COMMAND_TEXT_UPDATED,CDlgAdvPreferences::OnHandleCommandEvent)
//buttons
EVT_BUTTON(wxID_OK,CDlgAdvPreferences::OnOK)
EVT_BUTTON(wxID_HELP,CDlgAdvPreferences::OnHelp)
END_EVENT_TABLE()
/* Constructor */
CDlgAdvPreferences::CDlgAdvPreferences(wxWindow* parent) : CDlgAdvPreferencesBase(parent) {
m_bInInit=false;
m_bDataChanged=false;
m_arrTabPageIds.Add(ID_TABPAGE_PROC);
m_arrTabPageIds.Add(ID_TABPAGE_NET);
m_arrTabPageIds.Add(ID_TABPAGE_DISK);
//setting tab page images (not handled by generated code)
int iImageIndex = 0;
wxImageList* pImageList = m_Notebook->GetImageList();
if (!pImageList) {
pImageList = new wxImageList(16, 16, true, 0);
wxASSERT(pImageList != NULL);
m_Notebook->SetImageList(pImageList);
}
iImageIndex = pImageList->Add(wxBitmap(proj_xpm));
m_Notebook->SetPageImage(0,iImageIndex);
iImageIndex = pImageList->Add(wxBitmap(xfer_xpm));
m_Notebook->SetPageImage(1,iImageIndex);
iImageIndex = pImageList->Add(wxBitmap(usage_xpm));
m_Notebook->SetPageImage(2,iImageIndex);
// init special tooltips
SetSpecialTooltips();
//setting the validators for correct input handling
SetValidators();
//read in settings and initialisze controls
ReadPreferenceSettings();
//
RestoreState();
}
/* destructor */
CDlgAdvPreferences::~CDlgAdvPreferences() {
SaveState();
}
/* set validators for input filtering purposes only */
void CDlgAdvPreferences::SetValidators() {
//proc page
m_txtProcIdleFor->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtProcSwitchEvery->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtProcUseProcessors->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtProcUseCPUTime->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
//net page
m_txtNetConnectInterval->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtNetDownloadRate->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtNetUploadRate->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
//disk and memory page
m_txtDiskMaxSpace->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtDiskLeastFree->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtDiskMaxOfTotal->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtDiskWriteToDisk->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtDiskMaxSwap->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtMemoryMaxInUse->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_txtMemoryMaxOnIdle->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
}
/* some controls share the same tooltip, set them here */
void CDlgAdvPreferences::SetSpecialTooltips() {
m_txtProcMonday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcTuesday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcWednesday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcThursday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcFriday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcSaturday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
m_txtProcSunday->SetToolTip(TXT_PROC_TIME_TOOLTIP);
//
m_txtNetMonday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetTuesday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetWednesday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetThursday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetFriday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetSaturday->SetToolTip(TXT_NET_TIME_TOOLTIP);
m_txtNetSunday->SetToolTip(TXT_NET_TIME_TOOLTIP);
}
/* saves selected tab page */
bool CDlgAdvPreferences::SaveState() {
wxString strBaseConfigLocation = wxString(wxT("/DlgAdvPreferences/"));
wxConfigBase* pConfig = wxConfigBase::Get(FALSE);
wxASSERT(pConfig);
if (!pConfig) return false;
pConfig->SetPath(strBaseConfigLocation);
pConfig->Write(wxT("CurrentPage"),m_Notebook->GetSelection());
return true;
}
/* restores former selected tab page */
bool CDlgAdvPreferences::RestoreState() {
wxString strBaseConfigLocation = wxString(wxT("/DlgAdvPreferences/"));
wxConfigBase* pConfig = wxConfigBase::Get(FALSE);
int iCurrentPage;
wxASSERT(pConfig);
if (!pConfig) return false;
pConfig->SetPath(strBaseConfigLocation);
pConfig->Read(wxT("CurrentPage"), &iCurrentPage,0);
m_Notebook->SetSelection(iCurrentPage);
return true;
}
/* read preferences from core client and initialize control values */
void CDlgAdvPreferences::ReadPreferenceSettings() {
m_bInInit=true;//prevent dialog handlers from doing anything
CMainDocument* pDoc = wxGetApp().GetDocument();
wxString buffer;
wxASSERT(pDoc);
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
//get currently global prefs from core client
prefs = pDoc->state.global_prefs;
//override the global prefs with values in global_prefs_override.xml, if this file exists
//mask.clear();
//pDoc->rpc.get_global_prefs_override_struct(prefs, mask);
// ######### proc usage page
// do work between
m_rbtProcEveryDay->SetValue(true);
buffer.Printf(wxT("%02d:00"),prefs.start_hour);
*m_txtProcEveryDayStart << buffer;
buffer.Printf(wxT("%02d:00"),prefs.end_hour);
*m_txtProcEveryDayStop << buffer;
// on batteries
m_chkProcOnBatteries->SetValue(prefs.run_on_batteries);
// in use
m_chkProcInUse->SetValue(prefs.run_if_user_active);
// idle for X minutes
buffer.Printf(wxT("%.2f"),prefs.idle_time_to_run);
*m_txtProcIdleFor << buffer;
// siwtch every X minutes
buffer.Printf(wxT("%.2f"),prefs.cpu_scheduling_period_minutes);
*m_txtProcSwitchEvery << buffer;
// max cpus
buffer.Printf(wxT("%d"),prefs.max_cpus);
*m_txtProcUseProcessors << buffer;
//cpu limit
buffer.Printf(wxT("%.2f"),prefs.cpu_usage_limit);
*m_txtProcUseCPUTime << buffer;
// ######### net usage page
// use network between
m_rbtNetEveryDay->SetValue(true);
buffer.Printf(wxT("%02d:00"),prefs.net_start_hour);
*m_txtNetEveryDayStart << buffer;
buffer.Printf(wxT("%02d:00"),prefs.net_end_hour);
*m_txtNetEveryDayStop << buffer;
// connection interval
buffer.Printf(wxT("%01.4f"),prefs.work_buf_min_days);
*m_txtNetConnectInterval << buffer;
//download rate
buffer.Printf(wxT("%.2f"),prefs.max_bytes_sec_down / 1024);
*m_txtNetDownloadRate << buffer;
// upload rate
buffer.Printf(wxT("%.2f"),prefs.max_bytes_sec_up / 1024);
*m_txtNetUploadRate << buffer;
// skip image verification
m_chkNetSkipImageVerification->SetValue(prefs.dont_verify_images);
// confirm before connect
m_chkNetConfirmBeforeConnect->SetValue(prefs.confirm_before_connecting);
// disconnect when done
m_chkNetDisconnectWhenDone->SetValue(prefs.hangup_if_dialed);
// ######### disk and memory usage page
//max space used
buffer.Printf(wxT("%.2f"),prefs.disk_max_used_gb);
*m_txtDiskMaxSpace << buffer;
// min free
buffer.Printf(wxT("%.2f"),prefs.disk_min_free_gb);
*m_txtDiskLeastFree << buffer;
// max used percentage
buffer.Printf(wxT("%.2f"),prefs.disk_max_used_pct);
*m_txtDiskMaxOfTotal << buffer;
// write to disk every X seconds
buffer.Printf(wxT("%.0f"),prefs.disk_interval);
*m_txtDiskWriteToDisk << buffer;
// max swap space (virtual memory)
buffer.Printf(wxT("%.2f"),prefs.vm_max_used_frac*100.0);
*m_txtDiskMaxSwap << buffer;
// max VM used
buffer.Printf(wxT("%.2f"),prefs.ram_max_used_busy_frac*100.0);
*m_txtMemoryMaxInUse << buffer;
// max VM idle
buffer.Printf(wxT("%.2f"),prefs.ram_max_used_idle_frac*100.0);
*m_txtMemoryMaxOnIdle << buffer;
// suspend to memory
m_chkMemoryWhileSuspended->SetValue(prefs.leave_apps_in_memory);
m_bInInit=false;
//update control states
this->UpdateControlStates();
}
/* write overridden preferences to disk (global_prefs_override.xml) */
bool CDlgAdvPreferences::SavePreferencesSettings() {
bool ret=false;
//check if something changed
if(m_bDataChanged) {
double td;
long tl;
mask.clear();
//something was changed, take a closer look if and what exactly has changed
//proc page
if(m_chkProcOnBatteries->GetValue()!= prefs.run_on_batteries) {
ret=true;
prefs.run_on_batteries=m_chkProcOnBatteries->GetValue();
mask.run_on_batteries=true;
}
//
if(m_chkProcInUse->GetValue()!= prefs.run_if_user_active) {
ret=true;
prefs.run_if_user_active=m_chkProcInUse->GetValue();
mask.run_if_user_active=true;
}
//
if(m_txtProcIdleFor->IsEnabled()) {
m_txtProcIdleFor->GetValue().ToLong(&tl);
if(tl!=prefs.idle_time_to_run) {
ret=true;
prefs.idle_time_to_run=tl;
mask.idle_time_to_run=true;
}
}
//
if(m_txtProcEveryDayStart->IsEnabled()) {
m_txtProcEveryDayStart->GetValue().ToLong(&tl);
if(tl != prefs.start_hour) {
ret=true;
prefs.start_hour=tl;
mask.start_hour = true;
}
}
//
if(m_txtProcEveryDayStop->IsEnabled()) {
m_txtProcEveryDayStop->GetValue().ToLong(&tl);
if(tl != prefs.end_hour) {
ret=true;
prefs.end_hour=tl;
mask.end_hour = true;
}
}
//
m_txtProcSwitchEvery->GetValue().ToDouble(&td);
if(td!=prefs.cpu_scheduling_period_minutes) {
ret=true;
prefs.cpu_scheduling_period_minutes=td;
mask.cpu_scheduling_period_minutes=true;
}
//
m_txtProcUseProcessors->GetValue().ToLong(&tl);
if(tl!=prefs.max_cpus) {
ret=true;
prefs.max_cpus=tl;;
mask.max_cpus=true;
}
//
m_txtProcUseCPUTime->GetValue().ToDouble(&td);
if(td!=prefs.cpu_usage_limit) {
ret=true;
prefs.cpu_usage_limit=td;
mask.cpu_usage_limit=true;
}
// network page
m_txtNetConnectInterval->GetValue().ToDouble(&td);
if(td!=prefs.work_buf_min_days) {
ret=true;
prefs.work_buf_min_days=td;
mask.work_buf_min_days=true;
}
//
m_txtNetDownloadRate->GetValue().ToDouble(&td);
td = td * 1024;
if(td != prefs.max_bytes_sec_down) {
ret=true;
prefs.max_bytes_sec_down=td;
mask.max_bytes_sec_down=true;
}
//
m_txtNetUploadRate->GetValue().ToDouble(&td);
td = td * 1024;
if(td != prefs.max_bytes_sec_up) {
ret=true;
prefs.max_bytes_sec_up=td;
mask.max_bytes_sec_up=true;
}
//
if(m_chkNetSkipImageVerification->GetValue() != prefs.dont_verify_images) {
ret=true;
prefs.dont_verify_images=m_chkNetSkipImageVerification->GetValue();
mask.dont_verify_images=true;
}
//
if(m_chkNetConfirmBeforeConnect->GetValue() != prefs.confirm_before_connecting) {
ret=true;
prefs.confirm_before_connecting= m_chkNetConfirmBeforeConnect->GetValue();
mask.confirm_before_connecting=true;
}
//
if(m_chkNetDisconnectWhenDone->GetValue() != prefs.hangup_if_dialed) {
ret=true;
prefs.hangup_if_dialed= m_chkNetDisconnectWhenDone->GetValue();
mask.hangup_if_dialed=true;
}
//
if(m_txtNetEveryDayStart->IsEnabled()) {
m_txtNetEveryDayStart->GetValue().ToLong(&tl);
if(tl != prefs.net_start_hour) {
ret=true;
prefs.net_start_hour=tl;
mask.net_start_hour = true;
}
}
//
if(m_txtNetEveryDayStop->IsEnabled()) {
m_txtNetEveryDayStop->GetValue().ToLong(&tl);
if(tl != prefs.net_end_hour) {
ret=true;
prefs.net_end_hour=tl;
mask.net_end_hour = true;
}
}
//disk usage
m_txtDiskMaxSpace->GetValue().ToDouble(&td);
if(td != prefs.disk_max_used_gb) {
ret=true;
prefs.disk_max_used_gb=td;
mask.disk_max_used_gb=true;
}
//
m_txtDiskLeastFree->GetValue().ToDouble(&td);
if(td != prefs.disk_min_free_gb) {
ret=true;
prefs.disk_min_free_gb=td;
mask.disk_min_free_gb=true;
}
//
m_txtDiskMaxOfTotal->GetValue().ToDouble(&td);
if(td != prefs.disk_max_used_pct) {
ret=true;
prefs.disk_max_used_pct=td;
mask.disk_max_used_pct=true;
}
//
m_txtDiskWriteToDisk->GetValue().ToDouble(&td);
if(td != prefs.disk_interval) {
ret=true;
prefs.disk_interval=td;
mask.disk_interval=true;
}
//
m_txtDiskMaxSwap->GetValue().ToDouble(&td);
td = td / 100.0 ;
if(td != prefs.vm_max_used_frac) {
ret=true;
prefs.vm_max_used_frac=td;
mask.vm_max_used_frac=true;
}
//Memory
m_txtMemoryMaxInUse->GetValue().ToDouble(&td);
td = td / 100.0;
if(td != prefs.ram_max_used_busy_frac) {
ret=true;
prefs.ram_max_used_busy_frac=td;
mask.ram_max_used_busy_frac=true;
}
//
m_txtMemoryMaxOnIdle->GetValue().ToDouble(&td);
td = td / 100.0;
if(td != prefs.ram_max_used_idle_frac) {
ret=true;
prefs.ram_max_used_idle_frac=td;
mask.ram_max_used_idle_frac=true;
}
//
if(m_chkMemoryWhileSuspended->GetValue() != prefs.leave_apps_in_memory) {
ret = true;
prefs.leave_apps_in_memory = m_chkMemoryWhileSuspended->GetValue();
mask.leave_apps_in_memory=true;
}
}
return ret;
}
/* set state of control depending on other control's state */
void CDlgAdvPreferences::UpdateControlStates() {
//proc usage page
if(m_rbtProcEveryDay->GetValue()) {
m_panelProcSpecialTimes->Disable();
m_txtProcEveryDayStart->Enable();
m_txtProcEveryDayStop->Enable();
}
else {
m_panelProcSpecialTimes->Enable();
m_txtProcEveryDayStart->Disable();
m_txtProcEveryDayStop->Disable();
}
m_txtProcIdleFor->Enable(!m_chkProcInUse->IsChecked());
m_txtProcMonday->Enable(m_chkProcMonday->IsChecked());
m_txtProcTuesday->Enable(m_chkProcTuesday->IsChecked());
m_txtProcWednesday->Enable(m_chkProcWednesday->IsChecked());
m_txtProcThursday->Enable(m_chkProcThursday->IsChecked());
m_txtProcFriday->Enable(m_chkProcFriday->IsChecked());
m_txtProcSaturday->Enable(m_chkProcSaturday->IsChecked());
m_txtProcSunday->Enable(m_chkProcSunday->IsChecked());
//net usage page
if(m_rbtNetEveryDay->GetValue()) {
m_panelNetSpecialTimes->Disable();
m_txtNetEveryDayStart->Enable();
m_txtNetEveryDayStop->Enable();
}
else {
m_panelNetSpecialTimes->Enable();
m_txtNetEveryDayStart->Disable();
m_txtNetEveryDayStop->Disable();
}
m_txtNetMonday->Enable(m_chkNetMonday->IsChecked());
m_txtNetTuesday->Enable(m_chkNetTuesday->IsChecked());
m_txtNetWednesday->Enable(m_chkNetWednesday->IsChecked());
m_txtNetThursday->Enable(m_chkNetThursday->IsChecked());
m_txtNetFriday->Enable(m_chkNetFriday->IsChecked());
m_txtNetSaturday->Enable(m_chkNetSaturday->IsChecked());
m_txtNetSunday->Enable(m_chkNetSunday->IsChecked());
}
/* validates the entered informations */
bool CDlgAdvPreferences::ValidateInput() {
wxString buffer;
//proc page
if(m_txtProcIdleFor->IsEnabled()) {
buffer = m_txtProcIdleFor->GetValue();
if(!IsValidFloatValue(buffer)) {
ShowErrorMessage(m_txtProcIdleFor);
return false;
}
}
if(m_txtProcEveryDayStart->IsEnabled()) {
buffer = m_txtProcEveryDayStart->GetValue();
if(!IsValidTimeValue(buffer)) {
ShowErrorMessage(m_txtProcEveryDayStart);
return false;
}
}
if(m_txtProcEveryDayStop->IsEnabled()) {
buffer = m_txtProcEveryDayStop->GetValue();
if(!IsValidTimeValue(buffer)) {
ShowErrorMessage(m_txtProcEveryDayStop);
return false;
}
}
//all text ctrls in proc special time panel
if(m_panelProcSpecialTimes->IsEnabled()) {
wxWindowList children = m_panelProcSpecialTimes->GetChildren();
wxWindowListNode* node = children.GetFirst();
while(node) {
if(node->GetData()->IsKindOf(CLASSINFO(wxTextCtrl))) {
wxTextCtrl* txt = wxDynamicCast(node->GetData(),wxTextCtrl);
if(txt) {
if(txt->IsEnabled()) {
buffer = txt->GetValue();
if(!IsValidTimeIntervalValue(buffer)) {
ShowErrorMessage(txt);
return false;
}
}
}
}
node = node->GetNext();
}
}
//net page
if(m_txtNetEveryDayStart->IsEnabled()) {
buffer = m_txtNetEveryDayStart->GetValue();
if(!IsValidTimeValue(buffer)) {
ShowErrorMessage(m_txtNetEveryDayStart);
return false;
}
}
if(m_txtNetEveryDayStop->IsEnabled()) {
buffer = m_txtNetEveryDayStop->GetValue();
if(!IsValidTimeValue(buffer)) {
ShowErrorMessage(m_txtNetEveryDayStop);
return false;
}
}
//all text ctrls in net special time panel
if(m_panelNetSpecialTimes->IsEnabled()) {
wxWindowList children = m_panelNetSpecialTimes->GetChildren();
wxWindowListNode* node = children.GetFirst();
while(node) {
if(node->GetData()->IsKindOf(CLASSINFO(wxTextCtrl))) {
wxTextCtrl* txt = wxDynamicCast(node->GetData(),wxTextCtrl);
if(txt) {
if(txt->IsEnabled()) {
buffer = txt->GetValue();
if(!IsValidTimeIntervalValue(buffer)) {
ShowErrorMessage(txt);
return false;
}
}//if(txt->IsEnabled())
}//if(txt)
}//if(node->GetData()
node = node->GetNext();
}
}
return true;
}
/* ensures that the page whioch contains txtCtrl is selected */
bool CDlgAdvPreferences::EnsureTabPageVisible(wxTextCtrl* txtCtrl) {
wxWindow* parent = txtCtrl->GetParent();
wxASSERT(parent);
int parentid = parent->GetId();
int index = m_arrTabPageIds.Index(parentid);
if(index == wxNOT_FOUND) {
//some controls are containe din a additional panel, so look at its parent
parent = parent->GetParent();
wxASSERT(parent);
parentid = parent->GetId();
index = m_arrTabPageIds.Index(parentid);
if(index == wxNOT_FOUND) {
//this should never happen
return false;
}
}
m_Notebook->SetSelection(index);
return true;
}
/* show an error message and set the focus to the control that caused the error */
void CDlgAdvPreferences::ShowErrorMessage(wxTextCtrl* errorCtrl) {
wxASSERT(this->EnsureTabPageVisible(errorCtrl));
errorCtrl->SetFocus();
//
wxMessageBox(_("invalid value detected"),_("Validation Error"),wxOK | wxCENTRE | wxICON_ERROR,this);
}
/* checks if ch is a valid character for float values */
bool CDlgAdvPreferences::IsValidFloatChar(const wxChar& ch) {
//don't accept the e
return wxIsdigit(ch) || ch=='.' || ch==',' || ch=='+' || ch=='-';
}
/* checks if ch is a valid character for time values */
bool CDlgAdvPreferences::IsValidTimeChar(const wxChar& ch) {
return wxIsdigit(ch) || ch==':';
}
/* checks if ch is a valid character for time interval values */
bool CDlgAdvPreferences::IsValidTimeIntervalChar(const wxChar& ch) {
return IsValidTimeChar(ch) || ch=='-';
}
/* checks if the value contains a valid float */
bool CDlgAdvPreferences::IsValidFloatValue(const wxString& value) {
for(unsigned int i=0; i < value.Length();i++) {
if(!IsValidFloatChar(value[i])) {
return false;
}
}
//all chars are valid, now what is with the value as a whole ?
double td;
if(!value.ToDouble(&td)) {
return false;
}
return true;
}
/* checks if the value is a valid time */
bool CDlgAdvPreferences::IsValidTimeValue(const wxString& value) {
for(unsigned int i=0; i < value.Length();i++) {
if(!IsValidTimeChar(value[i])) {
return false;
}
}
//all chars are valid, now what is with the value as a whole ?
wxDateTime dt;
const wxChar* stopChar = dt.ParseFormat(value,wxT("%H:%M"));
if(stopChar==NULL) {//conversion failed
return false;
}
return true;
}
/* checks if the value is a valid time interval, format HH:MM-HH:MM */
bool CDlgAdvPreferences::IsValidTimeIntervalValue(const wxString& value) {
for(unsigned int i=0; i < value.Length();i++) {
if(!IsValidTimeIntervalChar(value[i])) {
return false;
}
}
//all chars are valid, now what is with the value as a whole ?
//check for -
if(value.Find('-')<0) {
return false;
}
//split up into start and stop
wxString start = value.BeforeFirst('-');
wxString stop = value.AfterFirst('-');
//validate start and stop parts
if(!IsValidTimeValue(start) || !IsValidTimeValue(stop)) {
return false;
}
//ensure that start is lower than stop
wxDateTime dtStart,dtStop;
dtStart.ParseFormat(start,wxT("%H:%M"));
dtStop.ParseFormat(stop,wxT("%H:%M"));
if(dtStart>=dtStop) {
return false;
}
return true;
}
// ------------ Event handlers starts here
// -------- generic command handler
// handles all control command events
void CDlgAdvPreferences::OnHandleCommandEvent(wxCommandEvent& ev) {
ev.Skip();
if(!m_bInInit) {
m_bDataChanged=true;
}
UpdateControlStates();
}
// ---- command buttons handlers
// handles OK button clicked
void CDlgAdvPreferences::OnOK(wxCommandEvent& ev) {
CMainDocument* pDoc = wxGetApp().GetDocument();
wxASSERT(pDoc);
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
if(!ValidateInput()) {
return;
}
if(SavePreferencesSettings()) {
pDoc->rpc.set_global_prefs_override_struct(prefs,mask);
pDoc->rpc.read_global_prefs_override();
//force update to pDoc->state.global_prefs member
pDoc->ForceCacheUpdate();
}
ev.Skip();
}
// handles Help button clicked
void CDlgAdvPreferences::OnHelp(wxCommandEvent& ev) {
wxString url = wxGetApp().GetSkinManager()->GetAdvanced()->GetCompanyWebsite();
url += wxT("/prefs.php");//this seems not the right url, but which instead ?
wxHyperLink::ExecuteLink(url);
ev.Skip();
}

View File

@ -0,0 +1,69 @@
// Berkeley Open Infrastructure for Network Computing
// http://boinc.berkeley.edu
// Copyright (C) 2005 University of California
//
// This is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation;
// either version 2.1 of the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// To view the GNU Lesser General Public License visit
// http://www.gnu.org/copyleft/lesser.html
// or write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
#ifndef _DLGADVPREFERENCES_H_
#define _DLGADVPREFERENCES_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "DlgAdvPreferences.cpp"
#endif
#include "DlgAdvPreferencesBase.h"
#include "prefs.h"
#define TXT_PROC_TIME_TOOLTIP _("specify work start and stop hours in format HH:MM-HH:MM\nstart must be lower than stop")
#define TXT_NET_TIME_TOOLTIP _("specify network usage start and stop hours in format HH:MM-HH:MM\nstart must be lower than stop")
class CDlgAdvPreferences : public CDlgAdvPreferencesBase {
DECLARE_DYNAMIC_CLASS( CDlgAdvPreferences )
DECLARE_EVENT_TABLE()
void ReadPreferenceSettings();
bool SavePreferencesSettings();
void UpdateControlStates();
void SetSpecialTooltips();
bool SaveState();
bool RestoreState();
bool ValidateInput();
void SetValidators();
bool IsValidFloatChar(const wxChar& ch);
bool IsValidFloatValue(const wxString& value);
bool IsValidTimeChar(const wxChar& ch);
bool IsValidTimeValue(const wxString& value);
bool IsValidTimeIntervalChar(const wxChar& ch);
bool IsValidTimeIntervalValue(const wxString& value);
void ShowErrorMessage(wxTextCtrl* errorCtrl);
bool EnsureTabPageVisible(wxTextCtrl* txtCtrl);
public:
CDlgAdvPreferences(wxWindow* parent=NULL);//to act as standard constructor set a default value
virtual ~CDlgAdvPreferences();
//generic event handler
void OnHandleCommandEvent(wxCommandEvent& ev);
//
void OnOK(wxCommandEvent& event);
void OnHelp(wxCommandEvent& event);
private:
GLOBAL_PREFS prefs;
GLOBAL_PREFS_MASK mask;
bool m_bDataChanged;
bool m_bInInit;
wxArrayInt m_arrTabPageIds;
};
#endif // _DLGADVPREFERENCES_H_

View File

@ -0,0 +1,575 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 13 2006)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif //__BORLANDC__
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif //WX_PRECOMP
#include "DlgAdvPreferencesBase.h"
///////////////////////////////////////////////////////////////////////////
CDlgAdvPreferencesBase::CDlgAdvPreferencesBase( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
this->Centre( wxBOTH );
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxVERTICAL );
m_panelControls = new wxPanel( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panelControls->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxVERTICAL );
m_Notebook = new wxNotebook( m_panelControls, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxNB_FLAT|wxNB_TOP );
m_Notebook->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
m_panelProcessor = new wxPanel( m_Notebook, ID_TABPAGE_PROC, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panelProcessor->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizer4;
sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( m_panelProcessor, -1, _("when do work") ), wxVERTICAL );
m_chkProcOnBatteries = new wxCheckBox( m_panelProcessor, ID_CHKPROCONBATTERIES, _("while computer is on batteries"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcOnBatteries->SetToolTip( wxT("check this, if you want that this host does work while it runs on batteries") );
sbSizer4->Add( m_chkProcOnBatteries, 0, wxALL, 5 );
m_chkProcInUse = new wxCheckBox( m_panelProcessor, ID_CHKPROCINUSE, _("while computer is in use"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcInUse->SetToolTip( wxT("check this, if work should be done while you are working at this host") );
sbSizer4->Add( m_chkProcInUse, 0, wxALL, 5 );
wxFlexGridSizer* fgSizer5;
fgSizer5 = new wxFlexGridSizer( 2, 4, 0, 0 );
fgSizer5->AddGrowableCol( 3 );
fgSizer5->SetFlexibleDirection( wxHORIZONTAL );
fgSizer5->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText26 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("only if computer is idle for"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer5->Add( m_staticText26, 0, wxALL, 5 );
m_txtProcIdleFor = new wxTextCtrl( m_panelProcessor, ID_TXTPROCIDLEFOR, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtProcIdleFor->SetToolTip( wxT("work is done after this amount of minutes idle time (no mouse movement and/or keyboard input)") );
fgSizer5->Add( m_txtProcIdleFor, 0, wxALL, 5 );
m_staticText27 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer5->Add( m_staticText27, 0, wxALL, 5 );
m_staticText28 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer5->Add( m_staticText28, 0, wxALL, 5 );
sbSizer4->Add( fgSizer5, 0, wxEXPAND, 5 );
bSizer7->Add( sbSizer4, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizer91;
sbSizer91 = new wxStaticBoxSizer( new wxStaticBox( m_panelProcessor, -1, _("work time restrictions") ), wxVERTICAL );
wxBoxSizer* bSizer111;
bSizer111 = new wxBoxSizer( wxHORIZONTAL );
m_rbtProcEveryDay = new wxRadioButton( m_panelProcessor, ID_RBTPROCEVERYDAY, _("every day between hours of"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
m_rbtProcEveryDay->SetToolTip( wxT("sets worktime restrictions for every day of the week\n(no restrictions if values are equal)") );
bSizer111->Add( m_rbtProcEveryDay, 0, wxALL, 5 );
m_txtProcEveryDayStart = new wxTextCtrl( m_panelProcessor, ID_TXTPROCEVERYDAYSTART, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtProcEveryDayStart->SetToolTip( wxT("start work at this time") );
bSizer111->Add( m_txtProcEveryDayStart, 0, wxALL, 5 );
m_staticText25 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("and"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
bSizer111->Add( m_staticText25, 0, wxALL|wxEXPAND, 5 );
m_txtProcEveryDayStop = new wxTextCtrl( m_panelProcessor, ID_TXTPROCEVERYDAYSTOP, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtProcEveryDayStop->SetToolTip( wxT("stop work at this time") );
bSizer111->Add( m_txtProcEveryDayStop, 0, wxALL, 5 );
sbSizer91->Add( bSizer111, 0, wxEXPAND, 5 );
m_rbtProcSpecialTimes = new wxRadioButton( m_panelProcessor, ID_RBTPROCSPECIALTIMES, _("as specified here:"), wxDefaultPosition, wxDefaultSize, 0);
m_rbtProcSpecialTimes->SetToolTip( wxT("set special work time restrictions for checked days") );
sbSizer91->Add( m_rbtProcSpecialTimes, 0, wxALL, 5 );
m_panelProcSpecialTimes = new wxPanel( m_panelProcessor, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
m_panelProcSpecialTimes->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
wxBoxSizer* bSizer11;
bSizer11 = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer6;
fgSizer6 = new wxFlexGridSizer( 4, 4, 0, 0 );
fgSizer6->SetFlexibleDirection( wxHORIZONTAL );
fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_chkProcMonday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCMONDAY, _("Monday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcMonday->SetToolTip( wxT("check this, if you want that work is done on monday") );
fgSizer6->Add( m_chkProcMonday, 0, wxALL, 5 );
m_txtProcMonday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCMONDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcMonday, 0, wxALL, 5 );
m_chkProcTuesday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCTUESDAY, _("Tuesday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcTuesday->SetToolTip( wxT("check this, if you want that work is done on tuesday") );
fgSizer6->Add( m_chkProcTuesday, 0, wxALL, 5 );
m_txtProcTuesday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCTUESDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcTuesday, 0, wxALL, 5 );
m_chkProcWednesday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCWEDNESDAY, _("Wednesday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcWednesday->SetToolTip( wxT("check this, if you want that work is done on wednesday") );
fgSizer6->Add( m_chkProcWednesday, 0, wxALL, 5 );
m_txtProcWednesday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCWEDNESDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcWednesday, 0, wxALL, 5 );
m_chkProcThursday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCTHURSDAY, _("Thursday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcThursday->SetToolTip( wxT("check this, if you want that work is done on thursday") );
fgSizer6->Add( m_chkProcThursday, 0, wxALL, 5 );
m_txtProcThursday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCTHURSDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcThursday, 0, wxALL, 5 );
m_chkProcFriday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCFRIDAY, _("Friday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcFriday->SetToolTip( wxT("check this, if you want that work is done on friday") );
fgSizer6->Add( m_chkProcFriday, 0, wxALL, 5 );
m_txtProcFriday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCFRIDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcFriday, 0, wxALL, 5 );
m_chkProcSaturday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCSATURDAY, _("Saturday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcSaturday->SetToolTip( wxT("check this, if you want that work is done on saturday") );
fgSizer6->Add( m_chkProcSaturday, 0, wxALL, 5 );
m_txtProcSaturday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCSATURDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcSaturday, 0, wxALL, 5 );
m_chkProcSunday = new wxCheckBox( m_panelProcSpecialTimes, ID_CHKPROCSUNDAY, _("Sunday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcSunday->SetToolTip( wxT("check this, if you want that work is done on sunday") );
fgSizer6->Add( m_chkProcSunday, 0, wxALL, 5 );
m_txtProcSunday = new wxTextCtrl( m_panelProcSpecialTimes, ID_TXTPROCSUNDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer6->Add( m_txtProcSunday, 0, wxALL, 5 );
bSizer11->Add( fgSizer6, 1, wxEXPAND, 5 );
m_panelProcSpecialTimes->SetSizer( bSizer11 );
m_panelProcSpecialTimes->Layout();
bSizer11->Fit( m_panelProcSpecialTimes );
sbSizer91->Add( m_panelProcSpecialTimes, 1, wxEXPAND | wxALL, 5 );
bSizer7->Add( sbSizer91, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizer3;
sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( m_panelProcessor, -1, _("other options") ), wxVERTICAL );
wxFlexGridSizer* fgSizer3;
fgSizer3 = new wxFlexGridSizer( 3, 3, 0, 0 );
fgSizer3->AddGrowableCol( 2 );
fgSizer3->SetFlexibleDirection( wxHORIZONTAL );
fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText18 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("switch between applications between every"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizer3->Add( m_staticText18, 0, wxALL|wxEXPAND, 5 );
m_txtProcSwitchEvery = new wxTextCtrl( m_panelProcessor, ID_TXTPROCSWITCHEVERY, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizer3->Add( m_txtProcSwitchEvery, 0, wxALL, 5 );
m_staticText19 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer3->Add( m_staticText19, 0, wxALL, 5 );
m_staticText20 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("on multiprocessor systems, use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizer3->Add( m_staticText20, 0, wxALL|wxEXPAND, 5 );
m_txtProcUseProcessors = new wxTextCtrl( m_panelProcessor, ID_TXTPROCUSEPROCESSORS, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizer3->Add( m_txtProcUseProcessors, 0, wxALL, 5 );
m_staticText21 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("processors"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer3->Add( m_staticText21, 0, wxALL, 5 );
m_staticText22 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizer3->Add( m_staticText22, 0, wxALL|wxEXPAND, 5 );
m_txtProcUseCPUTime = new wxTextCtrl( m_panelProcessor, ID_TXTPOCUSECPUTIME, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizer3->Add( m_txtProcUseCPUTime, 0, wxALL, 5 );
m_staticText23 = new wxStaticText( m_panelProcessor, ID_DEFAULT, _("% CPU time"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer3->Add( m_staticText23, 0, wxALL, 5 );
sbSizer3->Add( fgSizer3, 1, wxEXPAND, 5 );
bSizer7->Add( sbSizer3, 1, wxEXPAND, 5 );
m_panelProcessor->SetSizer( bSizer7 );
m_panelProcessor->Layout();
bSizer7->Fit( m_panelProcessor );
m_Notebook->AddPage( m_panelProcessor, _("processor usage"), false );
m_panelNetwork = new wxPanel( m_Notebook, ID_TABPAGE_NET, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panelNetwork->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
wxBoxSizer* bSizer12;
bSizer12 = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizer8;
sbSizer8 = new wxStaticBoxSizer( new wxStaticBox( m_panelNetwork, -1, _("general options") ), wxVERTICAL );
wxFlexGridSizer* fgSizer7;
fgSizer7 = new wxFlexGridSizer( 3, 3, 0, 0 );
fgSizer7->AddGrowableCol( 2 );
fgSizer7->SetFlexibleDirection( wxHORIZONTAL );
fgSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText30 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("connect about every"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText30, 0, wxALL, 5 );
m_txtNetConnectInterval = new wxTextCtrl( m_panelNetwork, ID_TXTNETCONNECTINTERVAL, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtNetConnectInterval->SetToolTip( wxT("specify the connect-to-server frequency\n(this influences the amount of work is requested from projects)") );
fgSizer7->Add( m_txtNetConnectInterval, 0, wxALL, 5 );
m_staticText31 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("days"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText31, 0, wxALL, 5 );
m_staticText32 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("maximum download rate"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText32, 0, wxALL, 5 );
m_txtNetDownloadRate = new wxTextCtrl( m_panelNetwork, ID_TXTNETDOWNLOADRATE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizer7->Add( m_txtNetDownloadRate, 0, wxALL, 5 );
m_staticText33 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("KBytes/second"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText33, 0, wxALL, 5 );
m_staticText34 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("maximum upload rate"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText34, 0, wxALL, 5 );
m_txtNetUploadRate = new wxTextCtrl( m_panelNetwork, ID_TXTNETUPLOADRATE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizer7->Add( m_txtNetUploadRate, 0, wxALL, 5 );
m_staticText35 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("KBytes/second"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer7->Add( m_staticText35, 0, wxALL, 5 );
m_chkNetSkipImageVerification = new wxCheckBox( m_panelNetwork, ID_CHKNETSKIPIMAGEVERIFICATION, _("skip image file verification"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetSkipImageVerification->SetToolTip( wxT("check this only if your internet provider modifies image files") );
fgSizer7->Add( m_chkNetSkipImageVerification, 0, wxALL, 5 );
sbSizer8->Add( fgSizer7, 1, wxEXPAND, 5 );
bSizer12->Add( sbSizer8, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizer7;
sbSizer7 = new wxStaticBoxSizer( new wxStaticBox( m_panelNetwork, -1, _("connect options") ), wxVERTICAL );
m_chkNetConfirmBeforeConnect = new wxCheckBox( m_panelNetwork, ID_CHKNETCONFIRMBEFORECONNECT, _("confirm before connecting to internet"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetConfirmBeforeConnect->SetToolTip( wxT("if checked, a confirmation dialog is displayed before trying to connect to the internet") );
sbSizer7->Add( m_chkNetConfirmBeforeConnect, 0, wxALL, 5 );
m_chkNetDisconnectWhenDone = new wxCheckBox( m_panelNetwork, ID_CHKNETDISCONNECTWHENDONE, _("disconnect when done"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetDisconnectWhenDone->SetToolTip( wxT("if checked, BOINC hangs up when netwrok transfer is done\n(only relevant for dialup-connection)") );
sbSizer7->Add( m_chkNetDisconnectWhenDone, 0, wxALL, 5 );
bSizer12->Add( sbSizer7, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizer9;
sbSizer9 = new wxStaticBoxSizer( new wxStaticBox( m_panelNetwork, -1, _("usage restrictions") ), wxVERTICAL );
wxBoxSizer* bSizer14;
bSizer14 = new wxBoxSizer( wxHORIZONTAL );
m_rbtNetEveryDay = new wxRadioButton( m_panelNetwork, ID_RBTNETEVERYDAY, _("use network only between the hours of"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
m_rbtNetEveryDay->SetToolTip( wxT("sets network usage restriction for every day of the week") );
bSizer14->Add( m_rbtNetEveryDay, 0, wxALL, 5 );
m_txtNetEveryDayStart = new wxTextCtrl( m_panelNetwork, ID_TXTNETEVERYDAYSTART, _(""), wxDefaultPosition, wxSize( 50,-1 ), 0 );
m_txtNetEveryDayStart->SetToolTip( wxT("network usage start hour") );
bSizer14->Add( m_txtNetEveryDayStart, 0, wxALL, 5 );
m_staticText37 = new wxStaticText( m_panelNetwork, ID_DEFAULT, _("and"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer14->Add( m_staticText37, 0, wxALL, 5 );
m_txtNetEveryDayStop = new wxTextCtrl( m_panelNetwork, ID_TXTNETEVERYDAYSTOP, _(""), wxDefaultPosition, wxSize( 50,-1 ), 0 );
m_txtNetEveryDayStop->SetToolTip( wxT("network usage stop hour") );
bSizer14->Add( m_txtNetEveryDayStop, 0, wxALL, 5 );
sbSizer9->Add( bSizer14, 1, wxEXPAND, 5 );
m_rbtNetSpecialTimes = new wxRadioButton( m_panelNetwork, ID_RBTNETSPECIALTIMES, _("use network only as specified here:"), wxDefaultPosition, wxDefaultSize, 0);
m_rbtNetSpecialTimes->SetToolTip( wxT("sets special network usage restrictions for checked days") );
sbSizer9->Add( m_rbtNetSpecialTimes, 0, wxALL, 5 );
m_panelNetSpecialTimes = new wxPanel( m_panelNetwork, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
m_panelNetSpecialTimes->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
m_panelNetSpecialTimes->SetToolTip( wxT("use network on thursday") );
wxBoxSizer* bSizer15;
bSizer15 = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer8;
fgSizer8 = new wxFlexGridSizer( 4, 4, 0, 0 );
fgSizer8->SetFlexibleDirection( wxHORIZONTAL );
fgSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_chkNetMonday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETMONDAY, _("Monday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetMonday->SetToolTip( wxT("use network on monday") );
fgSizer8->Add( m_chkNetMonday, 0, wxALL, 5 );
m_txtNetMonday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETMONDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetMonday, 0, wxALL, 5 );
m_chkNetTuesday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETTUESDAY, _("Tuesday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetTuesday->SetToolTip( wxT("use network on tuesday") );
fgSizer8->Add( m_chkNetTuesday, 0, wxALL, 5 );
m_txtNetTuesday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETTUESDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetTuesday, 0, wxALL, 5 );
m_chkNetWednesday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETWEDNESDAY, _("Wednesday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetWednesday->SetToolTip( wxT("use network on wednesday") );
fgSizer8->Add( m_chkNetWednesday, 0, wxALL, 5 );
m_txtNetWednesday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETWEDNESDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetWednesday, 0, wxALL, 5 );
m_chkNetThursday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETTHURSDAY, _("Thursday"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_chkNetThursday, 0, wxALL, 5 );
m_txtNetThursday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETTHURSDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetThursday, 0, wxALL, 5 );
m_chkNetFriday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETFRIDAY, _("Friday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetFriday->SetToolTip( wxT("use network on friday") );
fgSizer8->Add( m_chkNetFriday, 0, wxALL, 5 );
m_txtNetFriday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETFRIDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetFriday, 0, wxALL, 5 );
m_chkNetSaturday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETSATURDAY, _("Saturday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetSaturday->SetToolTip( wxT("use network on saturday") );
fgSizer8->Add( m_chkNetSaturday, 0, wxALL, 5 );
m_txtNetSaturday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETSATURDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetSaturday, 0, wxALL, 5 );
m_chkNetSunday = new wxCheckBox( m_panelNetSpecialTimes, ID_CHKNETSUNDAY, _("Sunday"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetSunday->SetToolTip( wxT("use network on sunday") );
fgSizer8->Add( m_chkNetSunday, 0, wxALL, 5 );
m_txtNetSunday = new wxTextCtrl( m_panelNetSpecialTimes, ID_TXTNETSUNDAY, _(""), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer8->Add( m_txtNetSunday, 0, wxALL, 5 );
bSizer15->Add( fgSizer8, 0, wxEXPAND, 5 );
m_panelNetSpecialTimes->SetSizer( bSizer15 );
m_panelNetSpecialTimes->Layout();
bSizer15->Fit( m_panelNetSpecialTimes );
sbSizer9->Add( m_panelNetSpecialTimes, 0, wxEXPAND | wxALL, 5 );
bSizer12->Add( sbSizer9, 0, wxEXPAND, 5 );
m_panelNetwork->SetSizer( bSizer12 );
m_panelNetwork->Layout();
bSizer12->Fit( m_panelNetwork );
m_Notebook->AddPage( m_panelNetwork, _("network usage"), false );
m_panelDiskAndMemory = new wxPanel( m_Notebook, ID_TABPAGE_DISK, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panelDiskAndMemory->SetExtraStyle( wxWS_EX_VALIDATE_RECURSIVELY );
wxBoxSizer* bSizer25;
bSizer25 = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizerDiskUsage;
sbSizerDiskUsage = new wxStaticBoxSizer( new wxStaticBox( m_panelDiskAndMemory, -1, _("disk usage") ), wxVERTICAL );
wxFlexGridSizer* fgSizerDiskUsage;
fgSizerDiskUsage = new wxFlexGridSizer( 5, 3, 0, 0 );
fgSizerDiskUsage->AddGrowableCol( 2 );
fgSizerDiskUsage->SetFlexibleDirection( wxHORIZONTAL );
fgSizerDiskUsage->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText40 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerDiskUsage->Add( m_staticText40, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxSpace = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTDISKMAXSPACE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtDiskMaxSpace->SetToolTip( wxT("the maximum amount diskspace used by BOINC (in Gigabytes)") );
fgSizerDiskUsage->Add( m_txtDiskMaxSpace, 0, wxALL, 5 );
m_staticText41 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("Gigabytes disk space"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerDiskUsage->Add( m_staticText41, 0, wxALL, 5 );
m_staticText42 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("leave at least"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerDiskUsage->Add( m_staticText42, 0, wxALL|wxEXPAND, 5 );
m_txtDiskLeastFree = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTDISKLEASTFREE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtDiskLeastFree->SetToolTip( wxT("BOINC leaves at least this amount of diskspace free (in Gigagytes)") );
fgSizerDiskUsage->Add( m_txtDiskLeastFree, 0, wxALL, 5 );
m_staticText43 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("Gigabytes disk space free"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerDiskUsage->Add( m_staticText43, 0, wxALL, 5 );
m_staticText44 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerDiskUsage->Add( m_staticText44, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxOfTotal = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTDISKMAXOFTOTAL, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
m_txtDiskMaxOfTotal->SetToolTip( wxT("BOINC uses at most this percentage of total diskspace") );
fgSizerDiskUsage->Add( m_txtDiskMaxOfTotal, 0, wxALL, 5 );
m_staticText45 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("% of total disk space"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerDiskUsage->Add( m_staticText45, 0, wxALL, 5 );
m_staticText46 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("write to disk at most every"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerDiskUsage->Add( m_staticText46, 0, wxALL|wxEXPAND, 5 );
m_txtDiskWriteToDisk = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTDISKWRITETODISK, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizerDiskUsage->Add( m_txtDiskWriteToDisk, 0, wxALL, 5 );
m_staticText47 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("seconds"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerDiskUsage->Add( m_staticText47, 0, wxALL, 5 );
m_staticText48 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerDiskUsage->Add( m_staticText48, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxSwap = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTDISKWRITETODISK, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizerDiskUsage->Add( m_txtDiskMaxSwap, 0, wxALL, 5 );
m_staticText49 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("% of page file (swap space)"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerDiskUsage->Add( m_staticText49, 0, wxALL, 5 );
sbSizerDiskUsage->Add( fgSizerDiskUsage, 1, wxEXPAND, 5 );
bSizer25->Add( sbSizerDiskUsage, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizerMemoryUsage;
sbSizerMemoryUsage = new wxStaticBoxSizer( new wxStaticBox( m_panelDiskAndMemory, -1, _("memory usage") ), wxVERTICAL );
wxFlexGridSizer* fgSizerMemoryUsage;
fgSizerMemoryUsage = new wxFlexGridSizer( 3, 3, 0, 0 );
fgSizerMemoryUsage->AddGrowableCol( 2 );
fgSizerMemoryUsage->SetFlexibleDirection( wxHORIZONTAL );
fgSizerMemoryUsage->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText50 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerMemoryUsage->Add( m_staticText50, 0, wxALL|wxEXPAND, 5 );
m_txtMemoryMaxInUse = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTMEMORYMAXINUSE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizerMemoryUsage->Add( m_txtMemoryMaxInUse, 0, wxALL, 5 );
m_staticText51 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("% when computer is in use"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerMemoryUsage->Add( m_staticText51, 0, wxALL, 5 );
m_staticText52 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
fgSizerMemoryUsage->Add( m_staticText52, 0, wxALL|wxEXPAND, 5 );
m_txtMemoryMaxOnIdle = new wxTextCtrl( m_panelDiskAndMemory, ID_TXTMEMORYMAXONIDLE, _(""), wxDefaultPosition, wxSize( 50,-1 ), wxTE_RIGHT );
fgSizerMemoryUsage->Add( m_txtMemoryMaxOnIdle, 0, wxALL, 5 );
m_staticText53 = new wxStaticText( m_panelDiskAndMemory, ID_DEFAULT, _("% when computer is idle"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerMemoryUsage->Add( m_staticText53, 0, wxALL, 5 );
sbSizerMemoryUsage->Add( fgSizerMemoryUsage, 1, wxEXPAND, 5 );
m_chkMemoryWhileSuspended = new wxCheckBox( m_panelDiskAndMemory, ID_CHKMEMORYWHILESUSPENDED, _("leave applications in memory while suspended"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkMemoryWhileSuspended->SetToolTip( wxT("if checked, suspended work units leave in memory") );
sbSizerMemoryUsage->Add( m_chkMemoryWhileSuspended, 0, wxALL, 5 );
bSizer25->Add( sbSizerMemoryUsage, 0, wxALL|wxEXPAND, 5 );
m_panelDiskAndMemory->SetSizer( bSizer25 );
m_panelDiskAndMemory->Layout();
bSizer25->Fit( m_panelDiskAndMemory );
m_Notebook->AddPage( m_panelDiskAndMemory, _("disk and memory usage"), true );
bSizer3->Add( m_Notebook, 3, wxEXPAND | wxALL, 5 );
m_panelControls->SetSizer( bSizer3 );
m_panelControls->Layout();
bSizer3->Fit( m_panelControls );
bSizer1->Add( m_panelControls, 1, wxEXPAND | wxALL, 5 );
m_panelButtons = new wxPanel( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bSizer5;
bSizer5 = new wxBoxSizer( wxHORIZONTAL );
m_btnOK = new wxButton( m_panelButtons, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnOK->SetToolTip( wxT("save all changes and close the dialog") );
bSizer5->Add( m_btnOK, 0, wxALL, 5 );
m_btnCancel = new wxButton( m_panelButtons, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnCancel->SetToolTip( wxT("close the dialog without saving changed values") );
bSizer5->Add( m_btnCancel, 0, wxALL, 5 );
m_btnHelp = new wxButton( m_panelButtons, wxID_HELP, _("Help"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnHelp->SetToolTip( wxT("shows the preferences web page") );
bSizer5->Add( m_btnHelp, 0, wxALL, 5 );
m_panelButtons->SetSizer( bSizer5 );
m_panelButtons->Layout();
bSizer5->Fit( m_panelButtons );
bSizer1->Add( m_panelButtons, 0, wxALIGN_CENTER|wxALL, 5 );
this->SetSizer( bSizer1 );
this->Layout();
}

View File

@ -0,0 +1,202 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 13 2006)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __DlgAdvPreferencesBase__
#define __DlgAdvPreferencesBase__
// Define WX_GCH in order to support precompiled headers with GCC compiler.
// You have to create the header "wx_pch.h" and include all files needed
// for compile your gui inside it.
// Then, compile it and place the file "wx_pch.h.gch" into the same
// directory that "wx_pch.h".
#ifdef WX_GCH
#include <wx_pch.h>
#else
#include <wx/wx.h>
#endif
#include <wx/button.h>
#include <wx/notebook.h>
#include <wx/panel.h>
#include <wx/radiobut.h>
///////////////////////////////////////////////////////////////////////////
#define ID_DEFAULT wxID_ANY // Default
#define ID_CHKMEMORYWHILESUSPENDED 20000
#define ID_CHKNETCONFIRMBEFORECONNECT 20001
#define ID_CHKNETDISCONNECTWHENDONE 20002
#define ID_CHKNETFRIDAY 20003
#define ID_CHKNETMONDAY 20004
#define ID_CHKNETSATURDAY 20005
#define ID_CHKNETSKIPIMAGEVERIFICATION 20006
#define ID_CHKNETSUNDAY 20007
#define ID_CHKNETTHURSDAY 20008
#define ID_CHKNETTUESDAY 20009
#define ID_CHKNETWEDNESDAY 20010
#define ID_CHKPROCFRIDAY 20011
#define ID_CHKPROCINUSE 20012
#define ID_CHKPROCMONDAY 20013
#define ID_CHKPROCONBATTERIES 20014
#define ID_CHKPROCSATURDAY 20015
#define ID_CHKPROCSUNDAY 20016
#define ID_CHKPROCTHURSDAY 20017
#define ID_CHKPROCTUESDAY 20018
#define ID_CHKPROCWEDNESDAY 20019
#define ID_DLGADVPREFS 20020
#define ID_RBTNETEVERYDAY 20021
#define ID_RBTNETSPECIALTIMES 20022
#define ID_RBTPROCEVERYDAY 20023
#define ID_RBTPROCSPECIALTIMES 20024
#define ID_TABPAGE_DISK 20025
#define ID_TABPAGE_NET 20026
#define ID_TABPAGE_PROC 20027
#define ID_TXTDISKLEASTFREE 20028
#define ID_TXTDISKMAXOFTOTAL 20029
#define ID_TXTDISKMAXSPACE 20030
#define ID_TXTDISKWRITETODISK 20031
#define ID_TXTMEMORYMAXINUSE 20032
#define ID_TXTMEMORYMAXONIDLE 20033
#define ID_TXTNETCONNECTINTERVAL 20034
#define ID_TXTNETDOWNLOADRATE 20035
#define ID_TXTNETEVERYDAYSTART 20036
#define ID_TXTNETEVERYDAYSTOP 20037
#define ID_TXTNETFRIDAY 20038
#define ID_TXTNETMONDAY 20039
#define ID_TXTNETSATURDAY 20040
#define ID_TXTNETSUNDAY 20041
#define ID_TXTNETTHURSDAY 20042
#define ID_TXTNETTUESDAY 20043
#define ID_TXTNETUPLOADRATE 20044
#define ID_TXTNETWEDNESDAY 20045
#define ID_TXTPOCUSECPUTIME 20046
#define ID_TXTPROCEVERYDAYSTART 20047
#define ID_TXTPROCEVERYDAYSTOP 20048
#define ID_TXTPROCFRIDAY 20049
#define ID_TXTPROCIDLEFOR 20050
#define ID_TXTPROCMONDAY 20051
#define ID_TXTPROCSATURDAY 20052
#define ID_TXTPROCSUNDAY 20053
#define ID_TXTPROCSWITCHEVERY 20054
#define ID_TXTPROCTHURSDAY 20055
#define ID_TXTPROCTUESDAY 20056
#define ID_TXTPROCUSEPROCESSORS 20057
#define ID_TXTPROCWEDNESDAY 20058
/**
* Class CDlgAdvPreferencesBase
*/
class CDlgAdvPreferencesBase : public wxDialog
{
private:
protected:
wxPanel* m_panelControls;
wxNotebook* m_Notebook;
wxPanel* m_panelProcessor;
wxCheckBox* m_chkProcOnBatteries;
wxCheckBox* m_chkProcInUse;
wxStaticText* m_staticText26;
wxTextCtrl* m_txtProcIdleFor;
wxStaticText* m_staticText27;
wxStaticText* m_staticText28;
wxRadioButton* m_rbtProcEveryDay;
wxTextCtrl* m_txtProcEveryDayStart;
wxStaticText* m_staticText25;
wxTextCtrl* m_txtProcEveryDayStop;
wxRadioButton* m_rbtProcSpecialTimes;
wxPanel* m_panelProcSpecialTimes;
wxCheckBox* m_chkProcMonday;
wxTextCtrl* m_txtProcMonday;
wxCheckBox* m_chkProcTuesday;
wxTextCtrl* m_txtProcTuesday;
wxCheckBox* m_chkProcWednesday;
wxTextCtrl* m_txtProcWednesday;
wxCheckBox* m_chkProcThursday;
wxTextCtrl* m_txtProcThursday;
wxCheckBox* m_chkProcFriday;
wxTextCtrl* m_txtProcFriday;
wxCheckBox* m_chkProcSaturday;
wxTextCtrl* m_txtProcSaturday;
wxCheckBox* m_chkProcSunday;
wxTextCtrl* m_txtProcSunday;
wxStaticText* m_staticText18;
wxTextCtrl* m_txtProcSwitchEvery;
wxStaticText* m_staticText19;
wxStaticText* m_staticText20;
wxTextCtrl* m_txtProcUseProcessors;
wxStaticText* m_staticText21;
wxStaticText* m_staticText22;
wxTextCtrl* m_txtProcUseCPUTime;
wxStaticText* m_staticText23;
wxPanel* m_panelNetwork;
wxStaticText* m_staticText30;
wxTextCtrl* m_txtNetConnectInterval;
wxStaticText* m_staticText31;
wxStaticText* m_staticText32;
wxTextCtrl* m_txtNetDownloadRate;
wxStaticText* m_staticText33;
wxStaticText* m_staticText34;
wxTextCtrl* m_txtNetUploadRate;
wxStaticText* m_staticText35;
wxCheckBox* m_chkNetSkipImageVerification;
wxCheckBox* m_chkNetConfirmBeforeConnect;
wxCheckBox* m_chkNetDisconnectWhenDone;
wxRadioButton* m_rbtNetEveryDay;
wxTextCtrl* m_txtNetEveryDayStart;
wxStaticText* m_staticText37;
wxTextCtrl* m_txtNetEveryDayStop;
wxRadioButton* m_rbtNetSpecialTimes;
wxPanel* m_panelNetSpecialTimes;
wxCheckBox* m_chkNetMonday;
wxTextCtrl* m_txtNetMonday;
wxCheckBox* m_chkNetTuesday;
wxTextCtrl* m_txtNetTuesday;
wxCheckBox* m_chkNetWednesday;
wxTextCtrl* m_txtNetWednesday;
wxCheckBox* m_chkNetThursday;
wxTextCtrl* m_txtNetThursday;
wxCheckBox* m_chkNetFriday;
wxTextCtrl* m_txtNetFriday;
wxCheckBox* m_chkNetSaturday;
wxTextCtrl* m_txtNetSaturday;
wxCheckBox* m_chkNetSunday;
wxTextCtrl* m_txtNetSunday;
wxPanel* m_panelDiskAndMemory;
wxStaticText* m_staticText40;
wxTextCtrl* m_txtDiskMaxSpace;
wxStaticText* m_staticText41;
wxStaticText* m_staticText42;
wxTextCtrl* m_txtDiskLeastFree;
wxStaticText* m_staticText43;
wxStaticText* m_staticText44;
wxTextCtrl* m_txtDiskMaxOfTotal;
wxStaticText* m_staticText45;
wxStaticText* m_staticText46;
wxTextCtrl* m_txtDiskWriteToDisk;
wxStaticText* m_staticText47;
wxStaticText* m_staticText48;
wxTextCtrl* m_txtDiskMaxSwap;
wxStaticText* m_staticText49;
wxStaticText* m_staticText50;
wxTextCtrl* m_txtMemoryMaxInUse;
wxStaticText* m_staticText51;
wxStaticText* m_staticText52;
wxTextCtrl* m_txtMemoryMaxOnIdle;
wxStaticText* m_staticText53;
wxCheckBox* m_chkMemoryWhileSuspended;
wxPanel* m_panelButtons;
wxButton* m_btnOK;
wxButton* m_btnCancel;
wxButton* m_btnHelp;
public:
CDlgAdvPreferencesBase( wxWindow* parent, int id = -1, wxString title = wxT("BOINC Manager - Preferences"), wxPoint pos = wxDefaultPosition, wxSize size = wxSize( 603,561 ), int style = wxDEFAULT_DIALOG_STYLE );
};
#endif //__DlgAdvPreferencesBase__

View File

@ -54,6 +54,7 @@
#define ID_REFRESHMESSAGESTIMER 6030
#define ID_ACTIVITYMENUSEPARATOR 6031
#define ID_FILECLOSEWINDOW 6032
#define ID_ADVPREFSDLG 6033
#define ID_SIMPLEFRAME 6100
#define ID_SIMPLEMESSAGECHECKTIMER 6101
#define ID_SIMPLE_ATTACHTOPROJECT 6600

View File

@ -111,7 +111,7 @@ void CViewTabPage::CreatePage()
if (resState->app->user_friendly_name.size()) {
projectFrName = wxString(resState->app->user_friendly_name.c_str(), wxConvUTF8);
} else {
projectFrName = wxString(resState->wup->avp->name.c_str(), wxConvUTF8);
projectFrName = wxString(resState->wup->avp->app_name.c_str(), wxConvUTF8);
}
} else {
projName = wxString("Not Available", wxConvUTF8 );

View File

@ -1671,6 +1671,22 @@
RelativePath="..\clientgui\DlgAbout.h"
>
</File>
<File
RelativePath="..\clientgui\DlgAdvPreferences.cpp"
>
</File>
<File
RelativePath="..\clientgui\DlgAdvPreferences.h"
>
</File>
<File
RelativePath="..\clientgui\DlgAdvPreferencesBase.cpp"
>
</File>
<File
RelativePath="..\clientgui\DlgAdvPreferencesBase.h"
>
</File>
<File
RelativePath="..\clientgui\DlgOptions.cpp"
>