MGR: continue updating Advanced Preferences dialog to new specification: make tooltips the same as new web prefs, try to apply each tooltip to all parts of its referenced item (checkbox, static text, textedit field, etc.) but tooltips are not yet working reliably.

This commit is contained in:
Charlie Fenton 2015-02-26 05:31:59 -08:00
parent 7f9f74abdb
commit 4370ca5f1d
2 changed files with 134 additions and 69 deletions

View File

@ -182,16 +182,13 @@ void CDlgAdvPreferences::SetValidators() {
/* some controls share the same tooltip, set them here */
void CDlgAdvPreferences::SetSpecialTooltips() {
wxString procDaysChkTT(_("Set this checkbox to specify work start and stop times for this day only"));
wxString procDaysTimeTT( _("specify work start and stop times in format HH:MM"));
wxString netDaysChkTT(_("Set this checkbox to specify times when data tranfer is permitted for this day only"));
wxString netDaysTimeTT(_("specify times when data tranfer is permitted in format HH:MM"));
wxString procDaysTimeTT(_("On this day each week, compute only during these hours."));
wxString netDaysTimeTT(_("On this day each week, transfer files only during these hours."));
for (int i=0; i<7; ++i) {
procDayChks[i]->SetToolTip(procDaysChkTT);
procDayChks[i]->SetToolTip(procDaysTimeTT);
procDayStartTxts[i]->SetToolTip(procDaysTimeTT);
procDayStopTxts[i]->SetToolTip(procDaysTimeTT);
netDayChks[i]->SetToolTip(netDaysChkTT);
netDayChks[i]->SetToolTip(netDaysTimeTT);
netDayStartTxts[i]->SetToolTip(netDaysTimeTT);
netDayStopTxts[i]->SetToolTip(netDaysTimeTT);
}

View File

@ -108,11 +108,11 @@ CDlgAdvPreferencesBase::CDlgAdvPreferencesBase( wxWindow* parent, int id, wxStri
topControlsSizer->Add( staticText321, 1, wxALL, 1 );
m_btnClear = new wxButton( topControlsStaticBox, ID_BTN_CLEAR, _("Clear"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnClear->SetToolTip( _("clear all local preferences and close the dialog") );
m_btnClear->SetToolTip( _("Clear all local preferences and close the dialog.") );
#endif
m_btnClear = new wxButton( topControlsStaticBox, ID_BTN_CLEAR, _("Use web prefs"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnClear->SetToolTip( _("restore web-based preferences and close the dialog") );
m_btnClear->SetToolTip( _("Restore web-based preferences and close the dialog.") );
if (!usingLocalPrefs) {
m_btnClear->Hide();
}
@ -153,18 +153,18 @@ CDlgAdvPreferencesBase::CDlgAdvPreferencesBase( wxWindow* parent, int id, wxStri
wxBoxSizer* buttonSizer = new wxBoxSizer( wxHORIZONTAL );
m_btnOK = new wxButton( m_panelButtons, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnOK->SetToolTip( _("save all values and close the dialog") );
m_btnOK->SetToolTip( _("Save all values and close the dialog.") );
m_btnOK->SetDefault();
buttonSizer->Add( m_btnOK, 0, wxALL, 5 );
m_btnCancel = new wxButton( m_panelButtons, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnCancel->SetToolTip( _("close the dialog without saving") );
m_btnCancel->SetToolTip( _("Close the dialog without saving.") );
buttonSizer->Add( m_btnCancel, 0, wxALL, 5 );
m_btnHelp = new wxButton( m_panelButtons, ID_HELPBOINC, _("Help"), wxDefaultPosition, wxDefaultSize, 0 );
m_btnHelp->SetToolTip( _("shows the preferences web page") );
m_btnHelp->SetToolTip( _("Shows the preferences web page.") );
buttonSizer->Add( m_btnHelp, 0, wxALL, 5 );
@ -179,6 +179,9 @@ CDlgAdvPreferencesBase::CDlgAdvPreferencesBase( wxWindow* parent, int id, wxStri
wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
{
CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced();
wxASSERT(pSkinAdvanced);
wxSize textCtrlSize = getTextCtrlSize(wxT("999.99"));
wxPanel* processorTab = new wxPanel( notebook, ID_TABPAGE_PROC, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
@ -195,8 +198,8 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
usageLimitsGridSizer->SetFlexibleDirection( wxHORIZONTAL );
usageLimitsGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxString MaxCPUPctTT(_("Example: 50% means use 4 cores on an 8-core CPU"));
/*xgettext:no-c-format*/
wxString MaxCPUPctTT(_("Keep some CPUs free for other applications. Example: 75% means use 6 cores on an 8-core CPU."));
wxStaticText* staticText20 = new wxStaticText(
usageLimitsStaticBox, ID_DEFAULT, _("Use at most"), wxDefaultPosition, wxDefaultSize, 0 );
staticText20->SetToolTip(MaxCPUPctTT);
@ -211,7 +214,8 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
staticText21->SetToolTip(MaxCPUPctTT);
usageLimitsGridSizer->Add( staticText21, 0, wxALL, 5 );
wxString MaxCPUTimeTT(_("Suspend/resume computing every few seconds to reduce CPU temperature and energy usage. Example: 75% means compute for 3 seconds, wait for 1."));
/*xgettext:no-c-format*/
wxString MaxCPUTimeTT(_("Suspend/resume computing every few seconds to reduce CPU temperature and energy usage. Example: 75% means compute for 3 seconds, wait for 1 second, and repeat."));
wxStaticText* staticText22 = new wxStaticText(
usageLimitsStaticBox, ID_DEFAULT, _("Use at most"), wxDefaultPosition, wxDefaultSize, 0 );
staticText22->SetToolTip(MaxCPUTimeTT);
@ -239,7 +243,7 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
_("Suspend when computer is on battery"), wxDefaultPosition, wxDefaultSize, 0
);
m_chkProcOnBatteries->SetToolTip(
_("check this if you don't want this computer to do work while it runs on batteries")
_("Check this to suspend computing on portables when running on battery power.")
);
suspendComputingBoxSizer->Add( m_chkProcOnBatteries, 0, wxALL, 5 );
@ -248,7 +252,7 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
_("Suspend when computer is in use"), wxDefaultPosition, wxDefaultSize, 0
);
m_chkProcInUse->SetToolTip(
_("check this if you don't want this computer to do work when you're using it")
_("Check this to suspend computing and file transfers when you're using the computer.")
);
suspendComputingBoxSizer->Add( m_chkProcInUse, 0, wxALL, 5 );
@ -257,7 +261,7 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
_("Suspend GPU computing when computer is in use"), wxDefaultPosition, wxDefaultSize, 0
);
m_chkGPUProcInUse->SetToolTip(
_("check this if you don't want your GPU to do work when you're using the computer")
_("Check this to suspend GPU computing when you're using the computer.")
);
suspendComputingBoxSizer->Add( m_chkGPUProcInUse, 0, wxALL, 5 );
@ -266,15 +270,15 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
procIdleSizer->AddGrowableCol( 3 );
procIdleSizer->SetFlexibleDirection( wxHORIZONTAL );
procIdleSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxString ProcIdleForTT(_("do work only after you haven't used the computer for this number of minutes"));
wxString ProcIdleForTT(_("This determines when the computer is considered 'in use'."));
wxStaticText* staticText24 = new wxStaticText(
suspendComputingStaticBox, ID_DEFAULT,
_("'In use' means mouse/keyboard input in last"),
wxDefaultPosition, wxDefaultSize, 0
);
procIdleSizer->Add(staticText24, 0, wxALL, 5 );
staticText24->SetToolTip(ProcIdleForTT);
procIdleSizer->Add(staticText24, 0, wxALL, 5 );
m_txtProcIdleFor = new wxTextCtrl(
suspendComputingStaticBox, ID_TXTPROCIDLEFOR, wxT(""), wxDefaultPosition, getTextCtrlSize(wxT("999.99")), wxTE_RIGHT
@ -297,11 +301,12 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
maxLoadSizer->SetFlexibleDirection( wxHORIZONTAL );
maxLoadSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxString MaxLoadTT(_("suspend work if processor usage exceeds this level"));
wxString MaxLoadCheckBoxText = wxEmptyString;
MaxLoadCheckBoxText.Printf(_("Suspend when non-%s CPU usage is above"), pSkinAdvanced->GetApplicationShortName().c_str());
wxString MaxLoadTT(_("Suspend computing when your computer is busy running other programs."));
m_chkMaxLoad = new wxCheckBox(
suspendComputingStaticBox, ID_CHKMAXLOAD,
_("Suspend when non-BOINC CPU usage is above"), wxDefaultPosition, wxDefaultSize, 0
);
suspendComputingStaticBox, ID_CHKMAXLOAD, MaxLoadCheckBoxText, wxDefaultPosition, wxDefaultSize, 0);
m_chkMaxLoad->SetToolTip(MaxLoadTT);
maxLoadSizer->Add( m_chkMaxLoad, 0, wxALL, 5 );
m_txtMaxLoad = new wxTextCtrl(
@ -311,8 +316,8 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
maxLoadSizer->Add( m_txtMaxLoad, 0, wxALL, 1 );
wxStaticText* staticText26 = new wxStaticText( suspendComputingStaticBox, ID_DEFAULT, _("percent"),
wxDefaultPosition, wxDefaultSize, 0 );
maxLoadSizer->Add(staticText26, 0, wxALL, 5 );
staticText26->SetToolTip(MaxLoadTT);
maxLoadSizer->Add(staticText26, 0, wxALL, 5 );
suspendComputingBoxSizer->Add( maxLoadSizer, 0, wxEXPAND, 5);
@ -333,33 +338,33 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
miscProcGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
// buffer sizes
wxString NetConnectIntervalTT(_("Try to maintain enough tasks to keep busy for this many days"));
wxString NetConnectIntervalTT(_("Store at least enough tasks to keep the computer busy for this long."));
wxStaticText* staticText30 = new wxStaticText(
miscProcStaticBox, ID_DEFAULT,
_("Store at least"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT
);
miscProcGridSizer->Add( staticText30, 0, wxALL|wxEXPAND, 5 );
staticText30->SetToolTip(NetConnectIntervalTT);
miscProcGridSizer->Add( staticText30, 0, wxALL|wxEXPAND, 5 );
m_txtNetConnectInterval = new wxTextCtrl(
miscProcStaticBox, ID_TXTNETCONNECTINTERVAL, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT
);
miscProcGridSizer->Add( m_txtNetConnectInterval, 0, wxALL, 1 );
m_txtNetConnectInterval->SetToolTip(NetConnectIntervalTT);
miscProcGridSizer->Add( m_txtNetConnectInterval, 0, wxALL, 1 );
wxStaticText* staticText31 = new wxStaticText(
miscProcStaticBox, ID_DEFAULT, _("days of work"), wxDefaultPosition, wxDefaultSize, 0
);
miscProcGridSizer->Add( staticText31, 0, wxALL, 5 );
staticText31->SetToolTip(NetConnectIntervalTT);
miscProcGridSizer->Add( staticText31, 0, wxALL, 5 );
wxString NetAdditionalDaysTT(_("In addition, maintain enough tasks for up to this many days"));
wxString NetAdditionalDaysTT(_("Store additional tasks above the minimum level. Determines how much work is requested when contacting a project."));
wxStaticText* staticText331 = new wxStaticText(
miscProcStaticBox, ID_DEFAULT,
_("Store up to an additional"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT
);
miscProcGridSizer->Add( staticText331, 0, wxALL|wxEXPAND, 5 );
staticText331->SetToolTip(NetAdditionalDaysTT);
miscProcGridSizer->Add( staticText331, 0, wxALL|wxEXPAND, 5 );
m_txtNetAdditionalDays = new wxTextCtrl(
miscProcStaticBox, ID_TXTNETADDITIONALDAYS, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT
@ -370,36 +375,38 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
wxBoxSizer* workBufAdditonalDaysSizer = new wxBoxSizer( wxHORIZONTAL );
wxStaticText* staticText341 = new wxStaticText( miscProcStaticBox, ID_DEFAULT, _("days of work"), wxDefaultPosition, wxDefaultSize, 0 );
workBufAdditonalDaysSizer->Add( staticText341, 0, 0, 0 );
staticText341->SetToolTip(NetAdditionalDaysTT);
workBufAdditonalDaysSizer->Add( staticText341, 0, 0, 0 );
miscProcGridSizer->Add( workBufAdditonalDaysSizer, 0, wxALL, 5 );
wxString ProcSwitchEveryTT(_("If you run several projects, BOINC may switch between them this often"));
wxString ProcSwitchEveryTT = wxEmptyString;
ProcSwitchEveryTT.Printf(_("If you run several projects, %s may switch between them this often."), pSkinAdvanced->GetApplicationShortName().c_str());
wxStaticText* staticText18 = new wxStaticText( miscProcStaticBox, ID_DEFAULT, _("Switch between tasks every"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
miscProcGridSizer->Add( staticText18, 0, wxALL|wxEXPAND, 5 );
staticText18->SetToolTip(ProcSwitchEveryTT);
miscProcGridSizer->Add( staticText18, 0, wxALL|wxEXPAND, 5 );
m_txtProcSwitchEvery = new wxTextCtrl( miscProcStaticBox, ID_TXTPROCSWITCHEVERY, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
miscProcGridSizer->Add( m_txtProcSwitchEvery, 0, wxALL, 1 );
m_txtProcSwitchEvery->SetToolTip(ProcSwitchEveryTT);
miscProcGridSizer->Add( m_txtProcSwitchEvery, 0, wxALL, 1 );
wxStaticText* staticText19 = new wxStaticText( miscProcStaticBox, ID_DEFAULT, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
miscProcGridSizer->Add( staticText19, 0, wxALL, 5 );
staticText19->SetToolTip(ProcSwitchEveryTT);
miscProcGridSizer->Add( staticText19, 0, wxALL, 5 );
wxString DiskWriteToDiskTT(_("This controls how often tasks save their state to disk, so that they can be restarted later"));
wxString DiskWriteToDiskTT(_("This controls how often tasks save their state to disk, so that they can be restarted later."));
wxStaticText* staticText46 = new wxStaticText( miscProcStaticBox, ID_DEFAULT, _("Request tasks to checkpoint at most every"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
miscProcGridSizer->Add( staticText46, 0, wxALL|wxEXPAND, 5 );
staticText46->SetToolTip(DiskWriteToDiskTT);
miscProcGridSizer->Add( staticText46, 0, wxALL|wxEXPAND, 5 );
m_txtDiskWriteToDisk = new wxTextCtrl( miscProcStaticBox, ID_TXTDISKWRITETODISK, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
miscProcGridSizer->Add( m_txtDiskWriteToDisk, 0, wxALL, 1 );
m_txtDiskWriteToDisk->SetToolTip(DiskWriteToDiskTT);
miscProcGridSizer->Add( m_txtDiskWriteToDisk, 0, wxALL, 1 );
wxStaticText* staticText47 = new wxStaticText( miscProcStaticBox, ID_DEFAULT, _("seconds"), wxDefaultPosition, wxDefaultSize, 0 );
miscProcGridSizer->Add( staticText47, 0, wxALL, 5 );
staticText47->SetToolTip(DiskWriteToDiskTT);
miscProcGridSizer->Add( staticText47, 0, wxALL, 5 );
miscProcBoxSizer->Add( miscProcGridSizer, 0, wxEXPAND, 1 );
miscProcBoxSizer->AddSpacer(1); // Ensure staticText22 is fully visible on Mac
@ -415,6 +422,9 @@ wxPanel* CDlgAdvPreferencesBase::createProcessorTab(wxNotebook* notebook)
wxPanel* CDlgAdvPreferencesBase::createNetworkTab(wxNotebook* notebook)
{
CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced();
wxASSERT(pSkinAdvanced);
wxSize textCtrlSize = getTextCtrlSize(wxT("9999.99"));
wxPanel* networkTab = new wxPanel( notebook, ID_TABPAGE_NET, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
@ -432,42 +442,57 @@ wxPanel* CDlgAdvPreferencesBase::createNetworkTab(wxNotebook* notebook)
// upload/download rates
wxString NetDownloadRateTT(_("Limit the download rate of file transfers."));
m_chkNetDownloadRate = new wxCheckBox( networkUsageLimitsStaticBox, ID_CHKNETDOWNLOADRATE, _("Limit download rate to"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetDownloadRate-> SetToolTip(NetDownloadRateTT);
networkUsageLimitsGridSizer->Add( m_chkNetDownloadRate, 0, wxALL, 5 );
m_txtNetDownloadRate = new wxTextCtrl( networkUsageLimitsStaticBox, ID_TXTNETDOWNLOADRATE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtNetDownloadRate-> SetToolTip(NetDownloadRateTT);
networkUsageLimitsGridSizer->Add( m_txtNetDownloadRate, 0, wxALL, 1 );
wxStaticText* staticText33 = new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, _("Kbytes/second"), wxDefaultPosition, wxDefaultSize, 0 );
staticText33-> SetToolTip(NetDownloadRateTT);
networkUsageLimitsGridSizer->Add( staticText33, 0, wxALL, 5 );
wxString NetUploadRateTT(_("Limit the upload rate of file transfers."));
m_chkNetUploadRate = new wxCheckBox( networkUsageLimitsStaticBox, ID_CHKNETUPLOADRATE, _("Limit upload rate to"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetUploadRate-> SetToolTip(NetUploadRateTT);
networkUsageLimitsGridSizer->Add( m_chkNetUploadRate, 0, wxALL, 5 );
m_txtNetUploadRate = new wxTextCtrl( networkUsageLimitsStaticBox, ID_TXTNETUPLOADRATE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtNetUploadRate-> SetToolTip(NetUploadRateTT);
networkUsageLimitsGridSizer->Add( m_txtNetUploadRate, 0, wxALL, 1 );
wxStaticText* staticText35 = new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, _("Kbytes/second"), wxDefaultPosition, wxDefaultSize, 0 );
staticText35-> SetToolTip(NetUploadRateTT);
networkUsageLimitsGridSizer->Add( staticText35, 0, wxALL, 5 );
// long-term quota
wxString daily_xfer_limitTT = wxEmptyString;
daily_xfer_limitTT.Printf(_("Example: %s should transfer at most 2000 MB of data every 30 days."), pSkinAdvanced->GetApplicationShortName().c_str());
m_chk_daily_xfer_limit = new wxCheckBox( networkUsageLimitsStaticBox, ID_CHKDAILYXFERLIMIT, _("Limit usage to"), wxDefaultPosition, wxDefaultSize, 0 );
m_chk_daily_xfer_limit-> SetToolTip(daily_xfer_limitTT);
networkUsageLimitsGridSizer->Add( m_chk_daily_xfer_limit, 0, wxALL, 5 );
m_txt_daily_xfer_limit_mb = new wxTextCtrl( networkUsageLimitsStaticBox, ID_TXTNETDOWNLOADRATE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txt_daily_xfer_limit_mb-> SetToolTip(daily_xfer_limitTT);
networkUsageLimitsGridSizer->Add( m_txt_daily_xfer_limit_mb, 0, wxALL, 1 );
wxBoxSizer* networkTransferLimitSizer = new wxBoxSizer( wxHORIZONTAL );
wxStaticText* staticText_daily_xfer2 = new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, _("Mbytes every"), wxDefaultPosition, wxDefaultSize, 0 );
staticText_daily_xfer2-> SetToolTip(daily_xfer_limitTT);
networkTransferLimitSizer->Add( staticText_daily_xfer2, 0, wxALL, 5 );
m_txt_daily_xfer_period_days = new wxTextCtrl( networkUsageLimitsStaticBox, ID_TXTNETUPLOADRATE, wxT(""), wxDefaultPosition, getTextCtrlSize(wxT("999.99")), wxTE_RIGHT );
m_txt_daily_xfer_period_days-> SetToolTip(daily_xfer_limitTT);
networkTransferLimitSizer->Add( m_txt_daily_xfer_period_days, 0, wxALL, 1 );
wxStaticText* staticText_daily_xfer4 = new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, _("days"), wxDefaultPosition, wxDefaultSize, 0 );
staticText_daily_xfer4-> SetToolTip(daily_xfer_limitTT);
networkTransferLimitSizer->Add( staticText_daily_xfer4, 0, wxALL, 5 );
networkUsageLimitsGridSizer->Add( networkTransferLimitSizer, 0, wxALL, 0 );
@ -475,7 +500,7 @@ wxPanel* CDlgAdvPreferencesBase::createNetworkTab(wxNotebook* notebook)
networkUsageLimitsBoxSizer->Add( networkUsageLimitsGridSizer, 0, wxEXPAND, 1 );
networkUsageLimitsBoxSizer->Add(
new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, wxT("See also \"suspend when computer is in use\" in the \"Computing\" section."), wxDefaultPosition, wxDefaultSize, 0),
new wxStaticText( networkUsageLimitsStaticBox, ID_DEFAULT, wxT("See also \"Suspend when computer is in use\" in the \"Computing\" section."), wxDefaultPosition, wxDefaultSize, 0),
0, wxALL, 5
);
networkUsageLimitsBoxSizer->Add(
@ -489,22 +514,19 @@ wxPanel* CDlgAdvPreferencesBase::createNetworkTab(wxNotebook* notebook)
wxStaticBoxSizer* connectOptionsSizer = new wxStaticBoxSizer( connectOptionsStaticBox, wxVERTICAL );
makeStaticBoxLabelItalic(connectOptionsStaticBox);
wxString NetSkipImageVerificationTT = wxEmptyString;
NetSkipImageVerificationTT.Printf(_("Check this only if your Internet provider modifies image files. Skipping verification reduces the security of %s."), pSkinAdvanced->GetApplicationShortName().c_str());
m_chkNetSkipImageVerification = new wxCheckBox( connectOptionsStaticBox, ID_CHKNETSKIPIMAGEVERIFICATION, _("Skip data verification for image files"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetSkipImageVerification->SetToolTip( _("check this if your Internet provider modifies image files") );
m_chkNetSkipImageVerification->SetToolTip(NetSkipImageVerificationTT);
connectOptionsSizer->Add( m_chkNetSkipImageVerification, 0, wxALL, 5 );
m_chkNetConfirmBeforeConnect = new wxCheckBox( connectOptionsStaticBox, ID_CHKNETCONFIRMBEFORECONNECT, _("Confirm before connecting to Internet"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetConfirmBeforeConnect->SetToolTip( _("if checked, a confirmation dialog will be displayed before trying to connect to the Internet") );
m_chkNetConfirmBeforeConnect->SetToolTip( _("Useful only if you have a modem, ISDN or VPN connection.") );
connectOptionsSizer->Add( m_chkNetConfirmBeforeConnect, 0, wxALL, 5 );
m_chkNetDisconnectWhenDone = new wxCheckBox( connectOptionsStaticBox, ID_CHKNETDISCONNECTWHENDONE, _("Disconnect when done"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetDisconnectWhenDone->SetToolTip( _("if checked, BOINC hangs up when network usage is done\n(only relevant for dialup-connection)") );
m_chkNetDisconnectWhenDone->SetToolTip( _("Useful only if you have a modem, ISDN or VPN connection.") );
connectOptionsSizer->Add( m_chkNetDisconnectWhenDone, 0, wxALL, 5 );
networkTabSizer->Add( connectOptionsSizer, 0, wxEXPAND, 1 );
@ -518,6 +540,9 @@ wxPanel* CDlgAdvPreferencesBase::createNetworkTab(wxNotebook* notebook)
wxPanel* CDlgAdvPreferencesBase::createDiskAndMemoryTab(wxNotebook* notebook)
{
CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced();
wxASSERT(pSkinAdvanced);
wxSize textCtrlSize = getTextCtrlSize(wxT("9999.99"));
wxPanel* diskMemoryTab = new wxPanel( notebook, ID_TABPAGE_DISK, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
@ -529,7 +554,9 @@ wxPanel* CDlgAdvPreferencesBase::createDiskAndMemoryTab(wxNotebook* notebook)
wxStaticBoxSizer* diskUsageBoxSizer = new wxStaticBoxSizer( diskUsageStaticBox, wxVERTICAL );
makeStaticBoxLabelItalic(diskUsageStaticBox);
diskUsageBoxSizer->Add(new wxStaticText( diskUsageStaticBox, -1, _("BOINC will use the most restrictive of these three settings:"), wxDefaultPosition, wxDefaultSize, 0),
wxString MostRestrictiveText = wxEmptyString;
MostRestrictiveText.Printf(_("%s will use the most restrictive of these three settings:"), pSkinAdvanced->GetApplicationShortName().c_str());
diskUsageBoxSizer->Add(new wxStaticText( diskUsageStaticBox, -1, MostRestrictiveText, wxDefaultPosition, wxDefaultSize, 0),
0, wxALL, 5
);
@ -538,37 +565,48 @@ wxPanel* CDlgAdvPreferencesBase::createDiskAndMemoryTab(wxNotebook* notebook)
diskUsageGridSizer->SetFlexibleDirection( wxHORIZONTAL );
diskUsageGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxString DiskMaxSpaceTT = wxEmptyString;
DiskMaxSpaceTT.Printf(_("Limit the total amount of disk space used by %s."), pSkinAdvanced->GetApplicationShortName().c_str());
m_chkDiskMaxSpace = new wxCheckBox (
diskUsageStaticBox, ID_CHKDISKMAXSPACE, _("Use no more than"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
m_chkDiskMaxSpace->SetToolTip(DiskMaxSpaceTT);
diskUsageGridSizer->Add( m_chkDiskMaxSpace, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxSpace = new wxTextCtrl( diskUsageStaticBox, ID_TXTDISKMAXSPACE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtDiskMaxSpace->SetToolTip( _("the maximum disk space used by BOINC (in Gigabytes)") );
m_txtDiskMaxSpace->SetToolTip(DiskMaxSpaceTT);
diskUsageGridSizer->Add( m_txtDiskMaxSpace, 0, wxALL, 1 );
wxStaticText* staticText41 = new wxStaticText( diskUsageStaticBox, ID_DEFAULT, _("Gigabytes"), wxDefaultPosition, wxDefaultSize, 0 );
staticText41->SetToolTip(DiskMaxSpaceTT);
diskUsageGridSizer->Add( staticText41, 0, wxALL, 5 );
wxString DiskLeastFreeTT = wxEmptyString;
DiskLeastFreeTT.Printf(_("Limit disk usage to leave this much free space on the volume where %s stores data."), pSkinAdvanced->GetApplicationShortName().c_str());
m_chkDiskLeastFree = new wxCheckBox (
diskUsageStaticBox, ID_CHKDISKLEASTFREE, _("Leave at least"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
m_chkDiskLeastFree->SetToolTip(DiskLeastFreeTT);
diskUsageGridSizer->Add( m_chkDiskLeastFree, 0, wxALL|wxEXPAND, 5 );
m_txtDiskLeastFree = new wxTextCtrl( diskUsageStaticBox, ID_TXTDISKLEASTFREE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtDiskLeastFree->SetToolTip( _("BOINC leaves at least this amount of disk space free (in Gigabytes)") );
m_txtDiskLeastFree->SetToolTip(DiskLeastFreeTT);
diskUsageGridSizer->Add( m_txtDiskLeastFree, 0, wxALL, 1 );
wxStaticText* staticText43 = new wxStaticText( diskUsageStaticBox, ID_DEFAULT, _("Gigabytes free"), wxDefaultPosition, wxDefaultSize, 0 );
staticText43->SetToolTip(DiskLeastFreeTT);
diskUsageGridSizer->Add( staticText43, 0, wxALL, 5 );
wxString DiskMaxOfTotalTT = wxEmptyString;
DiskMaxOfTotalTT.Printf(_("Limit the percentage of disk space used by %s on the volume where it stores data."), pSkinAdvanced->GetApplicationShortName().c_str());
m_chkDiskMaxOfTotal = new wxCheckBox (
diskUsageStaticBox, ID_CHKDISKMAXOFTOTAL, _("Use no more than"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
m_chkDiskMaxOfTotal->SetToolTip(DiskMaxOfTotalTT);
diskUsageGridSizer->Add( m_chkDiskMaxOfTotal, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxOfTotal = new wxTextCtrl( diskUsageStaticBox, ID_TXTDISKMAXOFTOTAL, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtDiskMaxOfTotal->SetToolTip( _("BOINC uses at most this percentage of total disk space") );
m_txtDiskMaxOfTotal->SetToolTip(DiskMaxOfTotalTT);
diskUsageGridSizer->Add( m_txtDiskMaxOfTotal, 0, wxALL, 1 );
/*xgettext:no-c-format*/
@ -587,41 +625,59 @@ wxPanel* CDlgAdvPreferencesBase::createDiskAndMemoryTab(wxNotebook* notebook)
memoryUsageGridSizer->SetFlexibleDirection( wxHORIZONTAL );
memoryUsageGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxString MemoryMaxInUseTT = wxEmptyString;
MemoryMaxInUseTT.Printf(_("Limit the memory used by %s when you're using the computer."), pSkinAdvanced->GetApplicationShortName().c_str());
wxStaticText* staticText50 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("When computer is in use, use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
staticText50->SetToolTip(MemoryMaxInUseTT);
memoryUsageGridSizer->Add( staticText50, 0, wxALL|wxEXPAND, 5 );
textCtrlSize = getTextCtrlSize(wxT("100.00"));
m_txtMemoryMaxInUse = new wxTextCtrl( memoryUsageStaticBox, ID_TXTMEMORYMAXINUSE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtMemoryMaxInUse->SetToolTip(MemoryMaxInUseTT);
memoryUsageGridSizer->Add( m_txtMemoryMaxInUse, 0, wxALL, 1 );
/*xgettext:no-c-format*/
wxStaticText* staticText51 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
staticText51->SetToolTip(MemoryMaxInUseTT);
memoryUsageGridSizer->Add( staticText51, 0, wxALL, 5 );
wxString MemoryMaxOnIdleTT = wxEmptyString;
MemoryMaxOnIdleTT.Printf(_("Limit the memory used by %s when you're not using the computer."), pSkinAdvanced->GetApplicationShortName().c_str());
wxStaticText* staticText52 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("When computer is not in use, use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
staticText52->SetToolTip(MemoryMaxOnIdleTT);
memoryUsageGridSizer->Add( staticText52, 0, wxALL|wxEXPAND, 5 );
m_txtMemoryMaxOnIdle = new wxTextCtrl( memoryUsageStaticBox, ID_TXTMEMORYMAXONIDLE, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtMemoryMaxOnIdle->SetToolTip(MemoryMaxOnIdleTT);
memoryUsageGridSizer->Add( m_txtMemoryMaxOnIdle, 0, wxALL, 1 );
/*xgettext:no-c-format*/
wxStaticText* staticText53 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
staticText53->SetToolTip(MemoryMaxOnIdleTT);
memoryUsageGridSizer->Add( staticText53, 0, wxALL, 5 );
wxString DiskMaxSwapTT = wxEmptyString;
DiskMaxSwapTT.Printf(_("Limit the swap space (page file) used by %s."), pSkinAdvanced->GetApplicationShortName().c_str());
wxStaticText* staticText48 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("Page/swap file: use at most"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
staticText48->SetToolTip(DiskMaxSwapTT);
memoryUsageGridSizer->Add( staticText48, 0, wxALL|wxEXPAND, 5 );
m_txtDiskMaxSwap = new wxTextCtrl( memoryUsageStaticBox, ID_TXTDISKWRITETODISK, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtDiskMaxSwap->SetToolTip(DiskMaxSwapTT);
memoryUsageGridSizer->Add( m_txtDiskMaxSwap, 0, wxALL, 1 );
/*xgettext:no-c-format*/
wxStaticText* staticText49 = new wxStaticText( memoryUsageStaticBox, ID_DEFAULT, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
staticText49->SetToolTip(DiskMaxSwapTT);
memoryUsageGridSizer->Add( staticText49, 0, wxALL, 5 );
memoryUsageBoxSizer->Add( memoryUsageGridSizer, 0, wxEXPAND, 1 );
m_chkMemoryWhileSuspended = new wxCheckBox( memoryUsageStaticBox, ID_CHKMEMORYWHILESUSPENDED, _("Leave non-GPU tasks in memory while suspended"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkMemoryWhileSuspended->SetToolTip( _("if checked, suspended work units are left in memory") );
m_chkMemoryWhileSuspended->SetToolTip( _("If checked, suspended tasks stay in memory, and resume with no work lost. If unchecked, suspended tasks are removed from memory, and resume from their last checkpoint.") );
memoryUsageBoxSizer->Add( m_chkMemoryWhileSuspended, 0, wxALL, 5 );
@ -653,20 +709,24 @@ wxPanel* CDlgAdvPreferencesBase::createDailySchedulesTab(wxNotebook* notebook)
wxBoxSizer* cpuTimesEveryDaySizer = new wxBoxSizer( wxHORIZONTAL );
wxString ProcEveryDayTT(_("Compute only during a particular range of hours each day."));
m_chkProcEveryDay = new wxCheckBox(
computingTimesStaticBox, ID_CHKPROCEVERYDAY,
_("Compute only between"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkProcEveryDay->SetToolTip(ProcEveryDayTT);
// m_chkProcEveryDay->SetToolTip(_("Compute only during a particular range of hours each day."));
cpuTimesEveryDaySizer->Add( m_chkProcEveryDay, 0, wxLEFT|wxRIGHT, 5 );
m_txtProcEveryDayStart = new wxTextCtrl( computingTimesStaticBox, ID_TXTPROCEVERYDAYSTART, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtProcEveryDayStart->SetToolTip( _("allow work starting at this time") );
m_txtProcEveryDayStart->SetToolTip(ProcEveryDayTT);
cpuTimesEveryDaySizer->Add( m_txtProcEveryDayStart, 0, wxLEFT|wxRIGHT, 1 );
wxStaticText* staticText25 = new wxStaticText( computingTimesStaticBox, ID_DEFAULT, _("and"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
staticText25->SetToolTip(ProcEveryDayTT);
cpuTimesEveryDaySizer->Add( staticText25, 0, wxLEFT|wxRIGHT, 5 );
m_txtProcEveryDayStop = new wxTextCtrl( computingTimesStaticBox, ID_TXTPROCEVERYDAYSTOP, wxT(""), wxDefaultPosition, textCtrlSize, wxTE_RIGHT );
m_txtProcEveryDayStop->SetToolTip( _("stop allowing work at this time") );
m_txtProcEveryDayStop->SetToolTip(ProcEveryDayTT);
cpuTimesEveryDaySizer->Add( m_txtProcEveryDayStop, 0, wxLEFT|wxRIGHT, 1 );
computingTimesStaticBoxSizer->Add( cpuTimesEveryDaySizer, 0, wxLEFT|wxRIGHT, 1 );
@ -675,15 +735,18 @@ wxPanel* CDlgAdvPreferencesBase::createDailySchedulesTab(wxNotebook* notebook)
wxStaticBoxSizer* procSpecialTimesStaticBoxSizer = new wxStaticBoxSizer(procSpecialTimesStaticBox, wxVERTICAL);
makeStaticBoxLabelItalic(procSpecialTimesStaticBox);
wxStaticText* staticText36 = new wxStaticText( procSpecialTimesStaticBox, ID_DEFAULT, _("Selected days will override the \"Every day\" times above"), wxDefaultPosition, wxDefaultSize, 0 );
wxStaticText* staticText36 = new wxStaticText( procSpecialTimesStaticBox, ID_DEFAULT, _("Override the \"Every day\" times above on the days selected below:"), wxDefaultPosition, wxDefaultSize, 0 );
procSpecialTimesStaticBoxSizer->Add( staticText36, 0, wxALL, 0 );
procSpecialTimesStaticBox->SetToolTip(_("On each selected \"override\" day, ignore the \"Every day\" times above and suspend if the time is outside the range shown for that day"));
procSpecialTimesStaticBoxSizer->AddSpacer(3);
// procSpecialTimesStaticBox->SetToolTip(_("On each selected \"override\" day, ignore the \"Every day\" times above and suspend if the time is outside the range shown for that day"));
wxFlexGridSizer* procDaysSizer = new wxFlexGridSizer( 4, 9, 0, 0 );
procDaysSizer->SetFlexibleDirection( wxHORIZONTAL );
procDaysSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
// Tooltips for Day-of-Week overrides are set in CDlgAdvPreferences::SetSpecialTooltips()
m_chkProcMonday = new wxCheckBox( procSpecialTimesStaticBox, ID_CHKPROCMONDAY, _("Monday"), wxDefaultPosition, wxDefaultSize, 0 );
procDaysSizer->Add( m_chkProcMonday, 0, wxLEFT, 5 );
@ -765,20 +828,22 @@ wxPanel* CDlgAdvPreferencesBase::createDailySchedulesTab(wxNotebook* notebook)
wxBoxSizer* networkTimesEveryDaySizer = new wxBoxSizer( wxHORIZONTAL );
wxString NetEveryDayTT(_("Transfer files only during a particular range of hours each day."));
m_chkNetEveryDay = new wxCheckBox(
networkTimesStaticBox, ID_CHKNETEVERYDAY, _("Tranfer files only between"), wxDefaultPosition, wxDefaultSize, 0 );
m_chkNetEveryDay->SetToolTip(NetEveryDayTT);
networkTimesEveryDaySizer->Add( m_chkNetEveryDay, 0, wxLEFT|wxRIGHT, 5 );
m_txtNetEveryDayStart = new wxTextCtrl( networkTimesStaticBox, ID_TXTNETEVERYDAYSTART, wxT(""), wxDefaultPosition, textCtrlSize, 0 );
m_txtNetEveryDayStart->SetToolTip( _("allow file tranfers starting at this time") );
m_txtNetEveryDayStart->SetToolTip(NetEveryDayTT);
networkTimesEveryDaySizer->Add( m_txtNetEveryDayStart, 0, wxLEFT|wxRIGHT, 1 );
wxStaticText* staticText37 = new wxStaticText( networkTimesStaticBox, ID_DEFAULT, _("and"), wxDefaultPosition, wxDefaultSize, 0 );
staticText37->SetToolTip(NetEveryDayTT);
networkTimesEveryDaySizer->Add( staticText37, 0, wxLEFT|wxRIGHT, 5 );
m_txtNetEveryDayStop = new wxTextCtrl( networkTimesStaticBox, ID_TXTNETEVERYDAYSTOP, wxT(""), wxDefaultPosition, textCtrlSize, 0 );
m_txtNetEveryDayStop->SetToolTip( _("stop allowing file tranfers at this time") );
m_txtNetEveryDayStop->SetToolTip(NetEveryDayTT);
networkTimesEveryDaySizer->Add( m_txtNetEveryDayStop, 0, wxLEFT|wxRIGHT, 1 );
networkTimesBoxSizer->Add( networkTimesEveryDaySizer, 0, wxLEFT|wxRIGHT, 1 );
@ -787,11 +852,14 @@ wxPanel* CDlgAdvPreferencesBase::createDailySchedulesTab(wxNotebook* notebook)
wxStaticBoxSizer* netSpecialTimesStaticBoxSizer = new wxStaticBoxSizer(netSpecialTimesStaticBox, wxVERTICAL);
makeStaticBoxLabelItalic(netSpecialTimesStaticBox);
wxStaticText* staticText39 = new wxStaticText( netSpecialTimesStaticBox, ID_DEFAULT, _("Selected days will override the \"Every day\" times above"), wxDefaultPosition, wxDefaultSize, 0 );
wxStaticText* staticText39 = new wxStaticText( netSpecialTimesStaticBox, ID_DEFAULT, _("Override the \"Every day\" times above on the days selected below:"), wxDefaultPosition, wxDefaultSize, 0 );
netSpecialTimesStaticBoxSizer->Add( staticText39, 0, wxALL, 0 );
netSpecialTimesStaticBox->SetToolTip(_("On each selected \"override\" day, ignore the \"Every day\" times above and suspend if the time is outside the range shown for that day"));
netSpecialTimesStaticBoxSizer->AddSpacer(3);
// netSpecialTimesStaticBox->SetToolTip(_("On each selected \"override\" day, ignore the \"Every day\" times above and suspend if the time is outside the range shown for that day"));
// Tooltips for Day-of-Week overrides are set in CDlgAdvPreferences::SetSpecialTooltips()
wxFlexGridSizer* netDaysGridSizer = new wxFlexGridSizer( 4, 9, 0, 0 );
netDaysGridSizer->SetFlexibleDirection( wxHORIZONTAL );
netDaysGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );