void ClientStateIndicator::SetNoActionState(wxString message) { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); Freeze(); stateMessage = message; if ( clientState != CLIENT_STATE_ERROR ) { //Delete Previous state DeletePreviousState(); clientState = CLIENT_STATE_ERROR; i_indBg = new ImageLoader(this); i_indBg->Move(wxPoint(42,74)); i_indBg->LoadImage(*(pSkinSimple->GetStateIndicatorBackgroundImage()->GetBitmap())); i_errorInd = new ImageLoader(this); i_errorInd->Move(wxPoint(rightPosition+24,84)); i_errorInd->LoadImage(*(pSkinSimple->GetErrorIndicatorImage()->GetBitmap())); i_errorInd->Refresh(); } Thaw(); }
void ClientStateIndicator::SetActionState(wxString message) { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); Freeze(); stateMessage = message; if ( clientState != CLIENT_STATE_ACTION ) { //Delete Previous state DeletePreviousState(); clientState = CLIENT_STATE_ACTION; i_indBg = new ImageLoader(this); i_indBg->Move(wxPoint(42,74)); i_indBg->LoadImage(*(pSkinSimple->GetStateIndicatorBackgroundImage()->GetBitmap())); for(int x = 0; x < numOfIndic; x++){ ImageLoader *i_connInd = new ImageLoader(this); i_connInd->Move(wxPoint(rightPosition +(connIndicatorWidth+10) * x,84)); i_connInd->LoadImage(*(pSkinSimple->GetConnectingIndicatorImage()->GetBitmap())); if(x !=0){ i_connInd->Show(false); } m_connIndV.push_back(i_connInd); } //set animation timer for interface if ( !m_connRenderTimer ) { m_connRenderTimer = new wxTimer(this, ID_ANIMATIONRENDERTIMER); } m_connRenderTimer->Start(500); } Thaw(); }
void ClientStateIndicator::SetPausedState(wxString message) { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); Freeze(); stateMessage = message; if ( clientState != CLIENT_STATE_PAUSED ) { //Delete Previous state DeletePreviousState(); clientState = CLIENT_STATE_PAUSED; i_indBg = new ImageLoader(this); i_indBg->Move(wxPoint(42,74)); i_indBg->LoadImage(*(pSkinSimple->GetStateIndicatorBackgroundImage()->GetBitmap())); for(int x = 0; x < numOfIndic; x++){ ImageLoader *i_connInd = new ImageLoader(this); i_connInd->Move(wxPoint(rightPosition +(connIndicatorWidth+10) * x,84)); i_connInd->LoadImage(*(pSkinSimple->GetConnectingIndicatorImage()->GetBitmap())); m_connIndV.push_back(i_connInd); } } Thaw(); }
void CSimpleGUIPanel::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC myDC(this); if (m_bNewNoticeAlert) { wxRect r = m_NoticesButton->GetRect(); if (m_bNoticesButtonIsRed) { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxPen oldPen = myDC.GetPen(); wxBrush oldBrush = myDC.GetBrush(); int oldMode = myDC.GetBackgroundMode(); wxPen bgPen(pSkinSimple->GetNoticeAlertColor(), 3); myDC.SetBackgroundMode(wxSOLID); myDC.SetPen(bgPen); myDC.SetBrush(*wxTRANSPARENT_BRUSH); #ifdef __WXMAC__ r.Inflate(2, 2); myDC.DrawRoundedRectangle(r.x, r.y, r.width, r.height+1, m_iRedRingRadius); #elif defined(__WXMSW__) r.Inflate(3, 3); myDC.DrawRectangle(r.x, r.y, r.width, r.height); #else r.Inflate(3, 3); myDC.DrawRoundedRectangle(r.x, r.y, r.width, r.height, 6); #endif // Restore Mode, Pen and Brush myDC.SetBackgroundMode(oldMode); myDC.SetPen(oldPen); myDC.SetBrush(oldBrush); } } }
void CPanelPreferences::OnEraseBackground( wxEraseEvent& event ) { if (!m_backgroundBitmap) { MakeBackgroundBitmap(); } // Create a buffered device context to reduce flicker wxSize sz = GetClientSize(); wxBufferedDC dc(event.GetDC(), sz, wxBUFFER_CLIENT_AREA); #if TEST_BACKGROUND_WITH_MAGENTA_FILL // Fill the dialog with a magenta color so people can detect when something // is wrong dc.SetBrush(wxBrush(wxColour(255,0,255))); dc.SetPen(wxPen(wxColour(255,0,255))); dc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); #else CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxColour bgColor(*pSkinSimple->GetDialogBackgroundImage()->GetBackgroundColor()); SetBackgroundColour(bgColor); #endif if (m_backgroundBitmap->IsOk()) { dc.DrawBitmap(*m_backgroundBitmap, 0, 0); } }
void CPanelPreferences::OnEraseBackground( wxEraseEvent& event ) { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxMemoryDC memDC; wxCoord w, h, x, y; // Get the desired background bitmap wxBitmap bmp(*pSkinSimple->GetDialogBackgroundImage()->GetBitmap()); // Dialog dimensions wxSize sz = GetClientSize(); // Create a buffered device context to reduce flicker wxBufferedDC dc(event.GetDC(), sz, wxBUFFER_CLIENT_AREA); // bitmap dimensions w = bmp.GetWidth(); h = bmp.GetHeight(); #if TEST_BACKGROUND_WITH_MAGENTA_FILL // Fill the dialog with a magenta color so people can detect when something // is wrong dc.SetBrush(wxBrush(wxColour(255,0,255))); dc.SetPen(wxPen(wxColour(255,0,255))); dc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); #else wxColour bgColor(*pSkinSimple->GetDialogBackgroundImage()->GetBackgroundColor()); SetBackgroundColour(bgColor); #endif // Is the bitmap smaller than the window? if ( (w < sz.x) || (h < sz.y) ) { // Check to see if they need to be rescaled to fit in the window wxImage img = bmp.ConvertToImage(); img.Rescale((int) sz.x, (int) sz.y); // Draw our cool background (centered) dc.DrawBitmap(wxBitmap(img), 0, 0); } else { // Snag the center of the bitmap and use it // for the background image x = wxMax(0, (w - sz.x)/2); y = wxMax(0, (h - sz.y)/2); // Select the desired bitmap into the memory DC so we can take // the center chunk of it. memDC.SelectObject(bmp); // Draw the center chunk on the window dc.Blit(0, 0, w, h, &memDC, x, y, wxCOPY); // Drop the bitmap memDC.SelectObject(wxNullBitmap); } }
void ClientStateIndicator::CreateComponent(){ CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); //Set Background color SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); }
void CProjectsComponent::OnEraseBackground(wxEraseEvent& event){ CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxDC* dc = event.GetDC(); dc->DrawBitmap(*pSkinSimple->GetProjectAreaBackgroundImage()->GetBitmap(), 0, 0); }
void ClientStateIndicator::OnEraseBackground(wxEraseEvent& event){ CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); event.Skip(false); wxDC *dc; dc=event.GetDC(); dc->SetBackground(wxBrush(this->GetBackgroundColour(),wxSOLID)); dc->Clear(); dc->DrawBitmap(*(pSkinSimple->GetWorkunitAreaBackgroundImage()->GetBitmap()), 0, 0); }
wxBitmap* CSimpleProjectPanel::GetProjectSpecificBitmap(char* project_url) { char defaultIcnPath[256]; CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); // Only update if it is project specific is found if(boinc_resolve_filename(GetProjectIconLoc(project_url).c_str(), defaultIcnPath, sizeof(defaultIcnPath)) == 0) { wxBitmap* projectBM = new wxBitmap(); if ( projectBM->LoadFile(wxString(defaultIcnPath,wxConvUTF8), wxBITMAP_TYPE_ANY) ) { return projectBM; } } return pSkinSimple->GetProjectImage()->GetBitmap(); }
wxBitmap* CSimpleProjectPanel::GetProjectSpecificBitmap(char* project_url) { char defaultIcnPath[256]; CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); // Only update it if project specific is found if(boinc_resolve_filename(GetProjectIconLoc(project_url).c_str(), defaultIcnPath, sizeof(defaultIcnPath)) == 0) { wxBitmap* projectBM; wxString strIconPath = wxString(defaultIcnPath,wxConvUTF8); if (wxFile::Exists(strIconPath)) { #ifdef __WXMSW__ if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) { wxImage img = wxImage(strIconPath, wxBITMAP_TYPE_ANY); if (img.IsOk()) { img.Rescale((int) (img.GetWidth()*GetXDPIScaling()), (int) (img.GetHeight()*GetYDPIScaling()), wxIMAGE_QUALITY_BILINEAR ); projectBM = new wxBitmap(img); if (projectBM->IsOk()) { return projectBM; } } } else #endif { projectBM = new wxBitmap(); if ( projectBM->LoadFile(strIconPath, wxBITMAP_TYPE_ANY) ) { return projectBM; } } } } return pSkinSimple->GetProjectImage()->GetBitmap(); }
void CPanelPreferences::CreateControls() { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxASSERT(pSkinAdvanced); wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); wxSize textCtrlSize = getTextCtrlSize(wxT("999.99")); wxSize timeCtrlSize = getTextCtrlSize(wxT("23:59 ")); CPanelPreferences* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); itemDialog1->SetSizer(itemBoxSizer2); m_bUsingLocalPrefs = doesLocalPrefsFileExist(); if (! web_prefs_url->IsEmpty()) { wxStaticBox* topSectionStaticBox = new wxStaticBox(); topSectionStaticBox->SetBackgroundStyle(wxBG_STYLE_TRANSPARENT); topSectionStaticBox->Create(this, -1, wxEmptyString); wxStaticBoxSizer* topSectionSizer = new wxStaticBoxSizer( topSectionStaticBox, wxVERTICAL ); wxBoxSizer* topControlsSizer = new wxBoxSizer( wxHORIZONTAL ); topSectionSizer->Add(topControlsSizer); wxBitmap warningBmp = GetScaledBitmapFromXPMData(warning_xpm); CTransparentStaticBitmap* bmpWarning = new CTransparentStaticBitmap( topSectionStaticBox, wxID_ANY, warningBmp, wxDefaultPosition, wxDefaultSize, 0 ); bmpWarning->SetMinSize( warningBmp.GetSize() ); topControlsSizer->Add( bmpWarning, 0, wxALIGN_CENTER_VERTICAL|wxALL, 0 ); wxBoxSizer* legendSizer = new wxBoxSizer( wxVERTICAL ); if (m_bUsingLocalPrefs) { legendSizer->Add( new CTransparentStaticText( topSectionStaticBox, wxID_ANY, _("Using local preferences.\n" "Click \"Use web prefs\" to use web-based preferences from" ), wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); } else { legendSizer->Add( new CTransparentStaticText( topSectionStaticBox, wxID_ANY, _("Using web-based preferences from"), wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); } legendSizer->Add( new CTransparentHyperlinkCtrl( topSectionStaticBox, wxID_ANY, *web_prefs_url, *web_prefs_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE, wxHyperlinkCtrlNameStr, &m_backgroundBitmap ), 0, wxLEFT, 5 ); if (!m_bUsingLocalPrefs) { legendSizer->Add( new CTransparentStaticText( topSectionStaticBox, wxID_ANY, _("Set values and click Save to use local preferences instead."), wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); } #if 1 topSectionSizer->AddSpacer( 10 ); CTransparentStaticLine* itemStaticLine8 = new CTransparentStaticLine( topSectionStaticBox, wxID_ANY, wxDefaultPosition, wxSize(ADJUSTFORXDPI(300), 1), wxLI_HORIZONTAL|wxNO_BORDER ); itemStaticLine8->SetLineColor(pSkinSimple->GetStaticLineColor()); topSectionSizer->Add(itemStaticLine8, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, ADJUSTFORXDPI(20)); topSectionSizer->AddSpacer( 10 ); CTransparentStaticText* itemStaticText7 = new CTransparentStaticText( topSectionStaticBox, wxID_ANY, _("For additional settings, select Computing Preferences in the Advanced View."), wxDefaultPosition, wxDefaultSize, 0 ); topSectionSizer->Add(itemStaticText7, 0, wxALL, 0); topSectionSizer->AddSpacer( 10 ); #endif topControlsSizer->Add( legendSizer, 1, wxALL, 1 ); m_btnClear = new wxButton( topSectionStaticBox, ID_SGPREFERENCESCLEAR, _("Use web prefs"), wxDefaultPosition, wxDefaultSize, 0 ); m_btnClear->SetToolTip( _("Restore web-based preferences and close the dialog.") ); if (!m_bUsingLocalPrefs) { m_btnClear->Hide(); } topControlsSizer->Add( m_btnClear, 0, wxALIGN_BOTTOM|wxALL, 4 ); #ifdef __WXMAC__ itemBoxSizer2->Add( topSectionSizer, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 10 ); #else itemBoxSizer2->Add( topSectionSizer, 0, wxALL|wxEXPAND, 5 ); #endif } wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer11, 0, wxLEFT, ADJUSTFORXDPI(20)); wxString ProcOnBatteriesTT(_("Check this to suspend computing on portables when running on battery power.")); m_chkProcOnBatteries = new CTransparentCheckBox( itemDialog1, ID_CHKPROCONBATTERIES, _("Suspend when computer is on battery"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxCheckBoxNameStr, &m_backgroundBitmap ); m_chkProcOnBatteries->SetToolTip(ProcOnBatteriesTT); itemBoxSizer11->Add(m_chkProcOnBatteries, 0, wxALL, 5 ); wxString ProcInUseTT(_("Check this to suspend computing and file transfers when you're using the computer.")); m_chkProcInUse = new CTransparentCheckBox( itemDialog1, ID_CHKPROCINUSE, _("Suspend when computer is in use"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxCheckBoxNameStr, &m_backgroundBitmap ); m_chkProcInUse->SetToolTip(ProcInUseTT); itemBoxSizer11->Add(m_chkProcInUse, 0, wxALL, 5 ); // min idle time wxString ProcIdleForTT(_("This determines when the computer is considered 'in use'.")); CTransparentStaticText* staticText24 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("'In use' means mouse/keyboard input in last"), wxDefaultPosition, wxDefaultSize, 0 ); m_txtProcIdleFor = new wxTextCtrl( itemDialog1, ID_TXTPROCIDLEFOR, wxEmptyString, wxDefaultPosition, textCtrlSize, wxTE_RIGHT ); CTransparentStaticText* staticText25 = new CTransparentStaticText(itemDialog1, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 ); addNewRowToSizer(itemBoxSizer11, ProcIdleForTT, staticText24, m_txtProcIdleFor, staticText25); /*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.")); CTransparentStaticText* staticText22 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Use at most"), wxDefaultPosition, wxDefaultSize, 0 ); m_txtProcUseCPUTime = new wxTextCtrl( itemDialog1, ID_TXTPOCUSECPUTIME, wxEmptyString, wxDefaultPosition, textCtrlSize, wxTE_RIGHT ); /*xgettext:no-c-format*/ CTransparentStaticText* staticText23 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("% of CPU time"), wxDefaultPosition, wxDefaultSize, 0 ); addNewRowToSizer(itemBoxSizer11, MaxCPUTimeTT, staticText22, m_txtProcUseCPUTime, staticText23); wxString andString(_("and")); wxString ProcEveryDayTT(_("Compute only during a particular period each day.")); m_chkProcEveryDay = new CTransparentCheckBox( itemDialog1, ID_CHKPROCEVERYDAY, _("Compute only between"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxCheckBoxNameStr, &m_backgroundBitmap ); m_txtProcEveryDayStart = new wxTextCtrl( itemDialog1, ID_TXTPROCEVERYDAYSTART, wxEmptyString, wxDefaultPosition, timeCtrlSize, wxTE_RIGHT ); CTransparentStaticText* staticText26 = new CTransparentStaticText( itemDialog1, wxID_ANY, andString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); m_txtProcEveryDayStop = new wxTextCtrl( itemDialog1, ID_TXTPROCEVERYDAYSTOP, wxEmptyString, wxDefaultPosition, timeCtrlSize, wxTE_RIGHT ); addNewRowToSizer( itemBoxSizer11, ProcEveryDayTT, m_chkProcEveryDay, m_txtProcEveryDayStart, staticText26, m_txtProcEveryDayStop ); wxString NetEveryDayTT(_("Transfer files only during a particular period each day.")); m_chkNetEveryDay = new CTransparentCheckBox( itemDialog1, ID_CHKNETEVERYDAY, _("Transfer files only between"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxCheckBoxNameStr, &m_backgroundBitmap ); m_txtNetEveryDayStart = new wxTextCtrl( itemDialog1, ID_TXTNETEVERYDAYSTART, wxEmptyString, wxDefaultPosition, timeCtrlSize, 0 ); CTransparentStaticText* staticText37 = new CTransparentStaticText( itemDialog1, wxID_ANY, andString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); m_txtNetEveryDayStop = new wxTextCtrl( itemDialog1, ID_TXTNETEVERYDAYSTOP, wxEmptyString, wxDefaultPosition, timeCtrlSize, 0 ); addNewRowToSizer(itemBoxSizer11, NetEveryDayTT, m_chkNetEveryDay, m_txtNetEveryDayStart, staticText37, m_txtNetEveryDayStop); wxString DiskMaxSpaceTT = wxEmptyString; DiskMaxSpaceTT.Printf(_("Limit the total amount of disk space used by %s."), pSkinAdvanced->GetApplicationShortName().c_str()); m_chkDiskMaxSpace = new CTransparentCheckBox ( itemDialog1, ID_CHKDISKMAXSPACE, _("Use no more than"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxCheckBoxNameStr, &m_backgroundBitmap ); m_txtDiskMaxSpace = new wxTextCtrl( itemDialog1, ID_TXTDISKMAXSPACE,wxEmptyString, wxDefaultPosition, getTextCtrlSize(wxT("9999.99")), wxTE_RIGHT ); CTransparentStaticText* staticText41 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("GB of disk space"), wxDefaultPosition, wxDefaultSize, 0 ); addNewRowToSizer(itemBoxSizer11, DiskMaxSpaceTT, m_chkDiskMaxSpace, m_txtDiskMaxSpace, staticText41); wxBoxSizer* itemBoxSizer44 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer44, 0, wxALIGN_RIGHT|wxALL, ADJUSTFORXDPI(5)); wxButton* itemButton44 = new wxButton( itemDialog1, wxID_OK, _("Save"), wxDefaultPosition, wxDefaultSize, 0 ); itemButton44->SetToolTip( _("Save all values and close the dialog.") ); if (m_bUsingLocalPrefs) { itemButton44->SetDefault(); } itemBoxSizer44->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5)); wxButton* itemButton45 = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); itemButton45->SetToolTip( _("Close the dialog without saving.") ); if (!m_bUsingLocalPrefs) { itemButton45->SetDefault(); } itemBoxSizer44->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5)); #ifndef __WXMSW__ #ifdef __WXMAC__ wxButton* itemButton46 = new wxButton( this, ID_SIMPLE_HELP, _("Help"), wxDefaultPosition, wxDefaultSize, 0 ); #ifdef wxUSE_TOOLTIPS wxString helpTip; helpTip.Printf(_("Get help with %s"), pSkinAdvanced->GetApplicationShortName().c_str()); itemButton46->SetToolTip(helpTip); #endif #else wxContextHelpButton* itemButton46 = new wxContextHelpButton(this); #endif itemBoxSizer44->Add(itemButton46, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5)); #endif // Set validators m_vTimeValidator = new wxTextValidator(wxFILTER_INCLUDE_CHAR_LIST); m_vTimeValidator->SetCharIncludes(wxT("0123456789:")); m_txtProcIdleFor->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_txtProcEveryDayStart->SetValidator(*m_vTimeValidator); m_txtProcEveryDayStop->SetValidator(*m_vTimeValidator); m_txtProcUseCPUTime->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_txtNetEveryDayStart->SetValidator(*m_vTimeValidator); m_txtNetEveryDayStop->SetValidator(*m_vTimeValidator); m_txtDiskMaxSpace->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); ////@end CPanelPreferences content construction }
void CSimpleTaskPanel::UpdateTaskSelectionList(bool reskin) { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - Function Begin")); int i, j, count, newIcon; TaskSelectionData *selData; RESULT* result; RESULT* ctrlResult; PROJECT* project; std::vector<bool>is_alive; bool needRefresh = false; wxString resname; CMainDocument* pDoc = wxGetApp().GetDocument(); CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); static bool bAlreadyRunning = false; wxASSERT(pDoc); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); if (bAlreadyRunning) { return; } bAlreadyRunning = true; count = m_TaskSelectionCtrl->GetCount(); // Mark all inactive (this lets us loop only once) for (i=0; i<count; ++i) { is_alive.push_back(false); } // First update existing entries and add new ones for(i = 0; i < (int) pDoc->results.results.size(); i++) { bool found = false; result = pDoc->result(i); // only check tasks that are active if ( result == NULL || !result->active_task ) { continue; } resname = wxEmptyString; #if SELECTBYRESULTNAME resname = wxString::FromUTF8(result->name); #else // SELECTBYRESULTNAME GetApplicationAndProjectNames(result, &resname, NULL); #endif // SELECTBYRESULTNAME // loop through the items already in Task Selection Control to find this result count = m_TaskSelectionCtrl->GetCount(); for(j = 0; j < count; ++j) { selData = (TaskSelectionData*)m_TaskSelectionCtrl->GetClientData(j); if (!strcmp(result->name, selData->result_name) && !strcmp(result->project_url, selData->project_url) ) { selData->result = result; found = true; is_alive.at(j) = true; break; // skip out of this loop } } // if it isn't currently in the list then we have a new one! lets add it if (!found) { int alphaOrder; for(j = 0; j < count; ++j) { alphaOrder = (m_TaskSelectionCtrl->GetString(j)).CmpNoCase(resname); #if SORTTASKLIST if (alphaOrder > 0) { break; // Insert the new item here (sorted by item label) } #endif // wxComboBox and wxBitmapComboBox have bugs on Windows when multiple // entries have identical text, so add enough spaces to make each // entry's text unique. if (alphaOrder == 0) { resname.Append((const wxChar *)wxT(" ")); #if !SORTTASKLIST j = -1; // If not sorted, check new name from start for duplicate #endif } } selData = new TaskSelectionData; selData->result = result; strncpy(selData->result_name, result->name, sizeof(selData->result_name)); strncpy(selData->project_url, result->project_url, sizeof(selData->project_url)); selData->dotColor = -1; FindSlideShowFiles(selData); project = pDoc->state.lookup_project(result->project_url); if (project) { selData->project_files_downloaded_time = project->project_files_downloaded_time; } else { selData->project_files_downloaded_time = 0.0; } #if SORTTASKLIST if (j < count) { std::vector<bool>::iterator iter = is_alive.begin(); m_TaskSelectionCtrl->Insert(resname, wxNullBitmap, j, (void*)selData); is_alive.insert(iter+j, true); if (j <= m_CurrentTaskSelection) { ++m_CurrentTaskSelection; m_TaskSelectionCtrl->SetSelection(m_CurrentTaskSelection); } } else #endif { m_TaskSelectionCtrl->Append(resname, wxNullBitmap, (void*)selData); is_alive.push_back(true); } ++count; } // End if (!found) } // End for (i) loop // Check items in descending order so deletion won't change indexes of items yet to be checked for(j = count-1; j >=0; --j) { if(!is_alive.at(j)) { wxLogTrace(wxT("Function Status"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - Task '%d' no longer alive"), j); selData = (TaskSelectionData*)m_TaskSelectionCtrl->GetClientData(j); wxLogTrace(wxT("Function Status"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - selData '%p' "), selData); wxLogTrace(wxT("Function Status"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - result_name '%s' "), selData->result_name); selData->slideShowFileNames.Clear(); wxLogTrace(wxT("Function Status"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - Deleting selData")); delete selData; wxLogTrace(wxT("Function Status"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - Deleting control data")); // Indicate to Delete() we have cleaned up the Selection Data m_TaskSelectionCtrl->SetClientData(j, NULL); m_TaskSelectionCtrl->Delete(j); if (j == m_CurrentTaskSelection) { int newCount = m_TaskSelectionCtrl->GetCount(); if (m_CurrentTaskSelection < newCount) { // Select the next item if one exists m_TaskSelectionCtrl->SetSelection(m_CurrentTaskSelection); } else if (newCount > 0) { // Select the previous item if one exists m_CurrentTaskSelection = newCount-1; m_TaskSelectionCtrl->SetSelection(m_CurrentTaskSelection); } else { m_CurrentTaskSelection = -1; m_TaskSelectionCtrl->SetSelection(wxNOT_FOUND); } m_bStableTaskInfoChanged = true; needRefresh = true; } else if (j < m_CurrentTaskSelection) { --m_CurrentTaskSelection; m_TaskSelectionCtrl->SetSelection(m_CurrentTaskSelection); } } } if ((m_CurrentTaskSelection >= 0) && !m_bStableTaskInfoChanged) { selData = (TaskSelectionData*)m_TaskSelectionCtrl->GetClientData(m_CurrentTaskSelection); project = pDoc->state.lookup_project(selData->project_url); if ( project && (project->project_files_downloaded_time > selData->project_files_downloaded_time) ) { FindSlideShowFiles(selData); selData->project_files_downloaded_time = project->project_files_downloaded_time; } } count = m_TaskSelectionCtrl->GetCount(); for(j = 0; j < count; ++j) { selData = (TaskSelectionData*)m_TaskSelectionCtrl->GetClientData(j); ctrlResult = selData->result; if (Suspended() || ctrlResult->suspended_via_gui || ctrlResult->project_suspended_via_gui) { newIcon = suspendedIcon; } else if (isRunning(ctrlResult)) { newIcon = runningIcon; } else if (ctrlResult->scheduler_state == CPU_SCHED_PREEMPTED) { newIcon = waitingIcon; } else { newIcon = suspendedIcon; } if (reskin || (newIcon != selData->dotColor)) { switch (newIcon) { case runningIcon: m_TaskSelectionCtrl->SetItemBitmap(j, *pSkinSimple->GetWorkunitRunningImage()->GetBitmap()); break; case waitingIcon: m_TaskSelectionCtrl->SetItemBitmap(j, *pSkinSimple->GetWorkunitWaitingImage()->GetBitmap()); break; case suspendedIcon: m_TaskSelectionCtrl->SetItemBitmap(j, *pSkinSimple->GetWorkunitSuspendedImage()->GetBitmap()); break; } selData->dotColor = newIcon; needRefresh = true; } } if (needRefresh) { m_TaskSelectionCtrl->Refresh(); } bAlreadyRunning = false; wxLogTrace(wxT("Function Start/End"), wxT("CSimpleTaskPanel::UpdateTaskSelectionList - Function End")); }
void CSlideShowPanel::AdvanceSlideShow(bool changeSlide, bool reload) { double xRatio, yRatio, ratio; unsigned int i; wxString s; TaskSelectionData* selData = ((CSimpleTaskPanel*)GetParent())->GetTaskSelectionData(); if (selData == NULL) return; if (reload) { m_bCurrentSlideIsDefault = false; selData->lastSlideShown = -1; } int numSlides = (int)selData->slideShowFileNames.size(); #if TESTALLDESCRIPTIONS // For testing numSlides = 0; #endif if (numSlides <= 0) { #if HIDEDEFAULTSLIDE if (!reload) { return; } wxRect r = GetRect(); wxBitmap backgroundBitmap = ((CSimpleTaskPanel*)GetParent())->GetBackgroundBmp().GetSubBitmap(r); wxWindowDC dc(this); dc.DrawBitmap(backgroundBitmap, 0, 0); // Force redraws if text unchanged; hide all if not in all-projects list m_institution->Show(false); m_scienceArea->Show(false); m_description->Show(false); Enable( false ); if (!m_bGotAllProjectsList) { CMainDocument* pDoc = wxGetApp().GetDocument(); wxASSERT(pDoc); pDoc->rpc.get_all_projects_list(m_AllProjectsList); m_bGotAllProjectsList = true; } for (i=0; i<m_AllProjectsList.projects.size(); i++) { if (!strcmp(m_AllProjectsList.projects[i]->url.c_str(), selData->project_url)) { s = wxString(m_AllProjectsList.projects[i]->home.c_str(), wxConvUTF8); m_institution->SetLabel(wxGetTranslation(s)); s = wxString(m_AllProjectsList.projects[i]->specific_area.c_str(), wxConvUTF8); m_scienceArea->SetLabel(wxGetTranslation(s)); s = wxString(m_AllProjectsList.projects[i]->description.c_str(), wxConvUTF8); m_description->SetValue(wxGetTranslation(s)); m_institution->Show(true); m_scienceArea->Show(true); m_description->Show(true); Enable( true ); m_description->Enable(); this->Layout(); break; } } return; #else // HIDEDEFAULTSLIDE SetBackgroundColour(*wxBLACK); if (m_bCurrentSlideIsDefault) return; CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); m_SlideBitmap = *pSkinSimple->GetWorkunitAnimationImage()->GetBitmap(); if (m_SlideBitmap.Ok()) { m_bCurrentSlideIsDefault = true; } #endif // HIDEDEFAULTSLIDE } else { #if HIDEDEFAULTSLIDE m_institution->Show(false); m_scienceArea->Show(false); m_description->Show(false); Enable( false ); #endif // HIDEDEFAULTSLIDE // TODO: Should we allow slide show to advance if task is not running? int newSlide = selData->lastSlideShown; if (selData->dotColor == runningIcon) { // Advance only if running if (changeSlide) { if (++newSlide >= numSlides) { newSlide = 0; } } } if (newSlide < 0) { newSlide = 0; } if (selData->lastSlideShown != newSlide) { // Don't update if only one slide selData->lastSlideShown = newSlide; wxBitmap *bm = new wxBitmap(); bm->LoadFile(selData->slideShowFileNames[newSlide], wxBITMAP_TYPE_ANY); if (bm->Ok()) { m_SlideBitmap = *bm; delete bm; m_bCurrentSlideIsDefault = false; } } } if (m_SlideBitmap.Ok()) { // Check to see if they need to be rescaled to fit in the window ratio = 1.0; xRatio = ((double) GetSize().GetWidth() - (2*SLIDESHOWBORDER))/((double) m_SlideBitmap.GetWidth()); yRatio = ((double) GetSize().GetHeight() - (2*SLIDESHOWBORDER))/((double) m_SlideBitmap.GetHeight()); if ( xRatio < ratio ) { ratio = xRatio; } if ( yRatio < ratio ) { ratio = yRatio; } if ( ratio < 1.0 ) { wxImage img = m_SlideBitmap.ConvertToImage(); img.Rescale((int) (m_SlideBitmap.GetWidth()*ratio), (int) (m_SlideBitmap.GetHeight()*ratio)); wxBitmap *bm = new wxBitmap(img); m_SlideBitmap = *bm; delete bm; } Refresh(); } }
CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) : CSimplePanelBase( parent ) { wxSize sz; wxString str = wxEmptyString; wxWindowDC dc(this); m_UsingAccountManager = -1; // Force action the first time m_CurrentSelectedProjectURL[0] = '\0'; m_sAddProjectString = _("Add Project"); m_sSynchronizeString = _("Synchronize"); m_sTotalWorkDoneString = _("Work done for this project"); m_sAddProjectToolTip = _("Volunteer for any or all of 30+ projects in many areas of science"); m_sSynchronizeToolTip = _("Synchronize projects with account manager system"); m_GotBGBitMap = false; // Can't be made until parent has been laid out. SetForegroundColour(*wxBLACK); wxBoxSizer* bSizer1; bSizer1 = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* bSizer2; bSizer2 = new wxBoxSizer( wxHORIZONTAL ); bSizer1->AddSpacer(ADJUSTFORYDPI(5)); m_myProjectsLabel = new CTransparentStaticText( this, wxID_ANY, _("Projects:"), wxDefaultPosition, wxDefaultSize, 0 ); m_myProjectsLabel->Wrap( -1 ); bSizer2->Add( m_myProjectsLabel, 0, wxRIGHT, ADJUSTFORXDPI(5) ); bSizer2->AddStretchSpacer(); int addProjectWidth, synchronizeWidth, y; GetTextExtent(m_sAddProjectString, &addProjectWidth, &y); GetTextExtent(m_sSynchronizeString, &synchronizeWidth, &y); m_TaskAddProjectButton = new CTransparentButton( this, ID_ADDROJECTBUTTON, (addProjectWidth > synchronizeWidth) ? m_sAddProjectString : m_sSynchronizeString, wxDefaultPosition, wxDefaultSize, 0 ); bSizer2->Add( m_TaskAddProjectButton, 0, wxRIGHT | wxEXPAND | wxALIGN_RIGHT, SIDEMARGINS ); bSizer1->Add( bSizer2, 0, wxEXPAND | wxTOP | wxLEFT, ADJUSTFORXDPI(10) ); #ifndef __WXMAC__ bSizer1->AddSpacer(ADJUSTFORYDPI(5)); #endif #if TESTBIGICONPOPUP m_ProjectSelectionCtrl = new CBOINCBitmapComboBox( this, ID_SGPROJECTSELECTOR, wxT(""), wxDefaultPosition, wxSize(-1, 42), 4, tempArray, wxCB_READONLY ); CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); bmArray[0] = *pSkinSimple->GetProjectImage()->GetBitmap(); m_ProjectSelectionCtrl->SetItemBitmap(0, bmArray[0]); bmArray[1] = wxBitmap((const char**)sah_40_xpm); m_ProjectSelectionCtrl->SetItemBitmap(1, bmArray[1]); bmArray[2] = wxBitmap((const char**)einstein_icon_xpm); m_ProjectSelectionCtrl->SetItemBitmap(3, bmArray[2]); // m_ProjectSelectionCtrl->SetStringSelection(tempArray[1]); m_ProjectSelectionCtrl->SetSelection(1); #else m_ProjectSelectionCtrl = new CBOINCBitmapComboBox( this, ID_SGPROJECTSELECTOR, wxT(""), wxDefaultPosition, wxSize(-1, 42), 0, NULL, wxCB_READONLY); #endif // TODO: Might want better wording for Project Selection Combo Box tooltip str = _("Select a project to access with the controls below"); m_ProjectSelectionCtrl->SetToolTip(str); bSizer1->Add( m_ProjectSelectionCtrl, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS ); #ifndef __WXMAC__ bSizer1->AddSpacer(ADJUSTFORYDPI(8)); #endif // Make sure m_TotalCreditValue string is large enough m_fDisplayedCredit = 9999999999.99; str.Printf(wxT("%s: %.0f"), m_sTotalWorkDoneString.c_str(), m_fDisplayedCredit); m_TotalCreditValue = new CTransparentStaticText( this, wxID_ANY, str, wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE ); m_TotalCreditValue->Wrap( -1 ); bSizer1->Add( m_TotalCreditValue, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS ); bSizer1->AddSpacer(ADJUSTFORYDPI(5)); wxBoxSizer* bSizer3; bSizer3 = new wxBoxSizer( wxHORIZONTAL ); m_ProjectWebSitesButton = new CSimpleProjectWebSitesPopupButton( this, ID_PROJECTWEBSITESBUTTON, _("Project Web Pages"), wxDefaultPosition, wxDefaultSize, 0 ); bSizer3->Add( m_ProjectWebSitesButton, 0, wxEXPAND | wxALIGN_LEFT, 0 ); bSizer3->AddStretchSpacer(); m_ProjectCommandsButton = new CSimpleProjectCommandPopupButton( this, ID_PROJECTCOMMANDBUTTON, _("Project Commands"), wxDefaultPosition, wxDefaultSize, 0 ); bSizer3->Add( m_ProjectCommandsButton, 0, wxEXPAND | wxALIGN_RIGHT, 0 ); bSizer1->Add( bSizer3, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS ); bSizer1->AddSpacer(ADJUSTFORYDPI(10)); // Temporarily insert a dummy entry so sizer can // get correct height of m_ProjectSelectionCtrl CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxBitmap* defaultBM = pSkinSimple->GetProjectImage()->GetBitmap(); m_ProjectSelectionCtrl->Insert("", *defaultBM, 0, (void*)NULL); this->SetSizer( bSizer1 ); this->Layout(); // Remove the dummy entry m_ProjectSelectionCtrl->Delete(0); m_TaskAddProjectButton->SetToolTip(wxEmptyString); m_TaskAddProjectButton->Disable(); }
void CProjectsComponent::CreateComponent() { Freeze(); CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); //Set Background color SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); //Static content in my Projects section // add project button wxToolTip *ttAddProject = new wxToolTip(_("Volunteer for any or all of 30+ projects in many areas of science")); btnAddProj=new wxBitmapButton( this, ID_WIZARDATTACH, *pSkinSimple->GetAttachProjectButton()->GetBitmap(), wxPoint(214,7), wxSize(81,18), wxBU_AUTODRAW ); if ( pSkinSimple->GetAttachProjectButton()->GetBitmapClicked() != NULL ) { btnAddProj->SetBitmapSelected( *pSkinSimple->GetAttachProjectButton()->GetBitmapClicked() ); } btnAddProj->SetToolTip(ttAddProject); // syncronize button, hidden by default. wxToolTip *ttSynchronize = new wxToolTip(_("Synchronize projects with account manager system")); btnSynchronize=new wxBitmapButton( this, ID_WIZARDUPDATE, *pSkinSimple->GetSynchronizeButton()->GetBitmap(), wxPoint(214,7), wxSize(81,18), wxBU_AUTODRAW ); if ( pSkinSimple->GetSynchronizeButton()->GetBitmapClicked() != NULL ) { btnSynchronize->SetBitmapSelected( *pSkinSimple->GetSynchronizeButton()->GetBitmapClicked() ); } btnSynchronize->SetToolTip(ttSynchronize); btnSynchronize->Show(false); /// Help wxToolTip *ttHelp = new wxToolTip(_("Get help with BOINC")); btnHelp=new wxBitmapButton( this, ID_SIMPLE_HELP, *pSkinSimple->GetHelpButton()->GetBitmap(), wxPoint(300,7), wxSize( (*pSkinSimple->GetHelpButton()->GetBitmap()).GetWidth(), (*pSkinSimple->GetHelpButton()->GetBitmap()).GetHeight() ), wxBU_AUTODRAW ); if ( pSkinSimple->GetHelpButton()->GetBitmapClicked() != NULL ) { btnHelp->SetBitmapSelected( *pSkinSimple->GetHelpButton()->GetBitmapClicked() ); } btnHelp->SetToolTip(ttHelp); /// Line lnMyProjTop = new CTransparentStaticLine(this, wxID_ANY, wxPoint(29,29),wxSize(292,1)); lnMyProjTop->SetLineColor(pSkinSimple->GetStaticLineColor()); //// Arrow Btns btnArwLeft = new wxBitmapButton( this, -1, *pSkinSimple->GetLeftArrowButton()->GetBitmap(), wxPoint(29,47), wxSize(20,20), wxBU_AUTODRAW ); if ( pSkinSimple->GetLeftArrowButton()->GetBitmapClicked() != NULL ) { btnArwLeft->SetBitmapSelected(*pSkinSimple->GetLeftArrowButton()->GetBitmapClicked()); } btnArwLeft->Show(false);//on creation this one is always false btnArwRight = new wxBitmapButton( this, -1, *pSkinSimple->GetRightArrowButton()->GetBitmap(), wxPoint(301,47), wxSize(20,20), wxBU_AUTODRAW ); if ( pSkinSimple->GetRightArrowButton()->GetBitmapClicked() != NULL ) { btnArwRight->SetBitmapSelected(*pSkinSimple->GetRightArrowButton()->GetBitmapClicked()); } btnArwRight->Show(false); // //// Messages Play Pause Btns wxToolTip *ttMessages = new wxToolTip(_("Open a window to view messages")); btnMessages = new CLinkButton( this, ID_SIMPLE_MESSAGES, *pSkinSimple->GetMessagesLink()->GetBitmap(), wxPoint(11,86), wxSize(70,20), wxBU_AUTODRAW ); btnMessages->SetToolTip(ttMessages); wxToolTip *ttAlertMessages = new wxToolTip(_("Open a window to view messages")); btnAlertMessages = new CLinkButton( this, ID_SIMPLE_MESSAGES_ALERT, *(pSkinSimple->GetMessagesAlertLink()->GetBitmap()), wxPoint(11,86), wxSize(70,20), wxBU_AUTODRAW ); btnAlertMessages->SetToolTip(ttAlertMessages); btnAlertMessages->Show(false); //spacer w_sp1 = new wxWindow(this,-1,wxPoint(83,91),wxSize(2,11)); i_spacer1 = new ImageLoader(w_sp1); i_spacer1->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); // pause btn wxToolTip *ttPause = new wxToolTip(_("Stop all activity")); btnPause = new CLinkButton( this, ID_SIMPLE_SUSPEND, *pSkinSimple->GetSuspendLink()->GetBitmap(), wxPoint(85,86), wxSize(59,20), wxBU_AUTODRAW ); btnPause->SetToolTip(ttPause); // resume btn wxToolTip *ttResume = new wxToolTip(_("Resume activity")); btnResume = new CLinkButton( this, ID_SIMPLE_RESUME, *(pSkinSimple->GetResumeLink()->GetBitmap()), wxPoint(85,86), wxSize(59,20), wxBU_AUTODRAW ); btnResume->SetToolTip(ttResume); //spacer w_sp2 = new wxWindow(this,-1,wxPoint(144,91),wxSize(2,11)); i_spacer2 = new ImageLoader(w_sp2); i_spacer2->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); // Pref Btn wxToolTip *ttPreferences = new wxToolTip(_("Open a window to set your preferences")); btnPreferences = new CLinkButton( this, ID_SIMPLE_PREFERENCES, *(pSkinSimple->GetPreferencesLink()->GetBitmap()), wxPoint(149,86), wxSize(81,20), wxBU_AUTODRAW ); btnPreferences->SetToolTip(ttPreferences); //spacer w_sp3 = new wxWindow(this,-1,wxPoint(230,91),wxSize(2,11)); i_spacer3 = new ImageLoader(w_sp3); i_spacer3->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); // Advanced View wxToolTip *ttAdvView = new wxToolTip(_("Switch to the BOINC advanced view")); btnAdvancedView = new CLinkButton( this, ID_CHANGEGUI, *(pSkinSimple->GetAdvancedLink()->GetBitmap()), wxPoint(233,86), wxSize(101,20), wxBU_AUTODRAW ); btnAdvancedView->SetToolTip(ttAdvView); /// Line lnMyProjBtm = new CTransparentStaticLine(this, wxID_ANY, wxPoint(29,83),wxSize(292,1)); lnMyProjBtm->SetLineColor(pSkinSimple->GetStaticLineColor()); Thaw(); }
void CProjectsComponent::ReskinInterface() { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); //Set Background color only SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); //right button btnArwRight->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnArwRight->SetBitmapLabel(*(pSkinSimple->GetRightArrowButton()->GetBitmap())); btnArwRight->SetBitmapSelected(*(pSkinSimple->GetRightArrowButton()->GetBitmapClicked())); //left button btnArwLeft->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnArwLeft->SetBitmapLabel(*(pSkinSimple->GetLeftArrowButton()->GetBitmap())); btnArwLeft->SetBitmapSelected(*(pSkinSimple->GetLeftArrowButton()->GetBitmapClicked())); // add project btn btnAddProj->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnAddProj->SetBitmapLabel(*(pSkinSimple->GetAttachProjectButton()->GetBitmap())); btnAddProj->SetBitmapSelected(*(pSkinSimple->GetAttachProjectButton()->GetBitmapClicked())); // synchronize btn btnSynchronize->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnSynchronize->SetBitmapLabel(*(pSkinSimple->GetSynchronizeButton()->GetBitmap())); btnSynchronize->SetBitmapSelected(*(pSkinSimple->GetSynchronizeButton()->GetBitmapClicked())); // help btn btnHelp->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnHelp->SetBitmapLabel(*(pSkinSimple->GetHelpButton()->GetBitmap())); btnHelp->SetBitmapSelected(*(pSkinSimple->GetHelpButton()->GetBitmapClicked())); // messages btn btnMessages->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnMessages->SetBitmapLabel(*(pSkinSimple->GetMessagesLink()->GetBitmap())); btnMessages->SetBitmapSelected(*(pSkinSimple->GetMessagesLink()->GetBitmap())); // alert messages btn btnAlertMessages->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnAlertMessages->SetBitmapLabel(*(pSkinSimple->GetMessagesAlertLink()->GetBitmap())); btnAlertMessages->SetBitmapSelected(*(pSkinSimple->GetMessagesAlertLink()->GetBitmap())); // pause btn btnPause->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnPause->SetBitmapLabel(*(pSkinSimple->GetSuspendLink()->GetBitmap())); btnPause->SetBitmapSelected(*(pSkinSimple->GetSuspendLink()->GetBitmap())); // resume btn btnResume->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnResume->SetBitmapLabel(*(pSkinSimple->GetResumeLink()->GetBitmap())); btnResume->SetBitmapSelected(*(pSkinSimple->GetResumeLink()->GetBitmap())); // preferences btn btnPreferences->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnPreferences->SetBitmapLabel(*(pSkinSimple->GetPreferencesLink()->GetBitmap())); btnPreferences->SetBitmapSelected(*(pSkinSimple->GetPreferencesLink()->GetBitmap())); // advance view btn btnAdvancedView->SetBackgroundColour(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); btnAdvancedView->SetBitmapLabel(*(pSkinSimple->GetAdvancedLink()->GetBitmap())); btnAdvancedView->SetBitmapSelected(*(pSkinSimple->GetAdvancedLink()->GetBitmap())); //set line colors lnMyProjTop->SetLineColor(pSkinSimple->GetStaticLineColor()); lnMyProjBtm->SetLineColor(pSkinSimple->GetStaticLineColor()); // spacers i_spacer1->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); i_spacer2->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); i_spacer2->LoadImage(*(pSkinSimple->GetSpacerImage()->GetBitmap())); // Rebuild stat menus and reload icons for(int m = 0; m < (int)m_statProjects.size(); m++){ StatImageLoader *i_statImage = m_statProjects.at(m); i_statImage->LoadImage(); i_statImage->RebuildMenu(); } }
void CPanelMessages::CreateControls() { CPanelMessages* itemDialog1 = this; CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxFlexGridSizer* itemFlexGridSizer2 = new wxFlexGridSizer(2, 1, 0, 0); itemFlexGridSizer2->AddGrowableRow(0); itemFlexGridSizer2->AddGrowableCol(0); itemDialog1->SetSizer(itemFlexGridSizer2); m_pList = new CSGUIListCtrl(this, ID_SIMPLE_MESSAGESVIEW, DEFAULT_LIST_MULTI_SEL_FLAGS); itemFlexGridSizer2->Add(m_pList, 0, wxGROW|wxALL, 5); wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL); #ifdef __WXMAC__ // Don't let Close button overlap window's grow icon itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 12); #else itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5); #endif #ifdef wxUSE_CLIPBOARD wxBitmapButton* itemButton1 = new wxBitmapButton( this, ID_COPYAll, *pSkinSimple->GetCopyAllButton()->GetBitmap(), wxDefaultPosition, wxSize( (*pSkinSimple->GetCopyAllButton()->GetBitmap()).GetWidth(), (*pSkinSimple->GetCopyAllButton()->GetBitmap()).GetHeight() ), wxBU_AUTODRAW ); if ( pSkinSimple->GetCopyAllButton()->GetBitmapClicked() != NULL ) { itemButton1->SetBitmapSelected(*pSkinSimple->GetCopyAllButton()->GetBitmapClicked()); } itemButton1->SetHelpText( _("Copy all the messages to the clipboard.") ); #if wxUSE_TOOLTIPS itemButton1->SetToolTip( _("Copy all the messages to the clipboard.") ); #endif itemBoxSizer4->Add(itemButton1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxBitmapButton* itemButton2 = new wxBitmapButton( this, ID_COPYSELECTED, *pSkinSimple->GetCopyButton()->GetBitmap(), wxDefaultPosition, wxSize( (*pSkinSimple->GetCopyButton()->GetBitmap()).GetWidth(), (*pSkinSimple->GetCopyButton()->GetBitmap()).GetHeight() ), wxBU_AUTODRAW ); if ( pSkinSimple->GetCopyButton()->GetBitmapClicked() != NULL ) { itemButton2->SetBitmapSelected(*pSkinSimple->GetCopyButton()->GetBitmapClicked()); } itemButton2->SetHelpText( #ifdef __WXMAC__ _("Copy the selected messages to the clipboard. You can select multiple messages by holding down the shift or command key while clicking on messages.") #else _("Copy the selected messages to the clipboard. You can select multiple messages by holding down the shift or control key while clicking on messages.") #endif ); #if wxUSE_TOOLTIPS itemButton2->SetToolTip( #ifdef __WXMAC__ _("Copy the selected messages to the clipboard. You can select multiple messages by holding down the shift or command key while clicking on messages.") #else _("Copy the selected messages to the clipboard. You can select multiple messages by holding down the shift or control key while clicking on messages.") #endif ); #endif itemBoxSizer4->Add(itemButton2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #endif wxBitmapButton* itemBitmapButton44 = new wxBitmapButton( this, wxID_OK, *pSkinSimple->GetCloseButton()->GetBitmap(), wxDefaultPosition, wxSize( (*pSkinSimple->GetCloseButton()->GetBitmap()).GetWidth(), (*pSkinSimple->GetCloseButton()->GetBitmap()).GetHeight() ), wxBU_AUTODRAW ); if ( pSkinSimple->GetCloseButton()->GetBitmapClicked() != NULL ) { itemBitmapButton44->SetBitmapSelected(*pSkinSimple->GetCloseButton()->GetBitmapClicked()); } itemBoxSizer4->Add(itemBitmapButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #ifndef __WXMSW__ #ifdef __WXMAC__ wxBitmapButton* itemButton45 = new wxBitmapButton( this, ID_SIMPLE_HELP, *pSkinSimple->GetHelpButton()->GetBitmap(), wxDefaultPosition, wxSize( (*pSkinSimple->GetHelpButton()->GetBitmap()).GetWidth(), (*pSkinSimple->GetHelpButton()->GetBitmap()).GetHeight() ), wxBU_AUTODRAW ); if ( pSkinSimple->GetHelpButton()->GetBitmapClicked() != NULL ) { itemButton45->SetBitmapSelected(*pSkinSimple->GetHelpButton()->GetBitmapClicked()); } #ifdef wxUSE_TOOLTIPS itemButton45->SetToolTip(new wxToolTip(_("Get help with BOINC"))); #endif itemBoxSizer4->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #else wxContextHelpButton* itemButton45 = new wxContextHelpButton(this); itemBoxSizer4->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #endif #endif }
// Create a background bitmap simulating partial transparency void CSimplePanelBase::MakeBGBitMap() { wxRect r; wxBitmap rawBmp; wxBitmap whiteBmp; wxImage bgImage; wxImage whiteImage; register unsigned char *bgImagePixels; register unsigned char *whitePixels; register int i, j, k; CSimpleGUIPanel* backgroundPanel = (CSimpleGUIPanel*)GetParent(); wxPen bgPen(*wxWHITE, 1, wxTRANSPARENT); wxBrush bgBrush(*wxWHITE); CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); int white_weight = pSkinSimple->GetPanelOpacity(); int image_weight = MAX_OPACITY - white_weight; // Workaround for CSimpleGUIPanel not reliably getting // Paint or EraseBackground events under Linux #if (!(defined(__WXMSW_) || defined(__WXMAC__))) backgroundPanel->SetBackgroundBitmap(); #endif GetPosition(&r.x, &r.y); GetSize(&r.width, &r.height); wxBitmap *bgBmp(backgroundPanel->GetBackgroundBitMap()); wxRect bgRect(0, 0, bgBmp->GetWidth(), bgBmp->GetHeight()); if (bgRect.Contains(r)) { rawBmp = bgBmp->GetSubBitmap(r); } else { fprintf(stderr, "SimpleGUI background image is too small\n"); rawBmp = wxBitmap(r.width, r.height); wxMemoryDC dc(rawBmp); wxPen rawPen(*wxBLACK, 1, wxTRANSPARENT); wxBrush rawBrush(*wxBLACK); dc.SetBackgroundMode(wxSOLID); dc.SetPen(rawPen); dc.SetBrush(rawBrush); dc.DrawRectangle(0, 0, r.width, r.height); } whiteBmp = wxBitmap(r.width, r.height); wxMemoryDC dc(whiteBmp); dc.SetBackgroundMode(wxSOLID); dc.SetPen(bgPen); dc.SetBrush(bgBrush); dc.DrawRoundedRectangle(0, 0, r.width, r.height, RECTANGLERADIUS); bgImage = rawBmp.ConvertToImage(); bgImagePixels = bgImage.GetData(); // RGBRGBRGB... whiteImage = whiteBmp.ConvertToImage(); whitePixels = whiteImage.GetData(); // RGBRGBRGB... for (i=0; i<r.width; ++i) { for (j=0; j<r.height; ++j) { if (*whitePixels) { k = (((unsigned int)*bgImagePixels * image_weight) + ((unsigned int)*whitePixels++ * white_weight)); *bgImagePixels++ = k / MAX_OPACITY; k = (((unsigned int)*bgImagePixels * image_weight) + ((unsigned int)*whitePixels++ * white_weight)); *bgImagePixels++ = k / MAX_OPACITY; k = (((unsigned int)*bgImagePixels * image_weight) + ((unsigned int)*whitePixels++ * white_weight)); *bgImagePixels++ = k / MAX_OPACITY; } else { bgImagePixels += 3; whitePixels += 3; } } } m_TaskPanelBGBitMap = wxBitmap(bgImage); m_GotBGBitMap = true; }
void CPanelPreferences::MakeBackgroundBitmap() { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxMemoryDC memDC; wxCoord w, h, x, y; // Get the desired background bitmap wxBitmap bmp(*pSkinSimple->GetDialogBackgroundImage()->GetBitmap()); // Dialog dimensions wxSize sz = GetClientSize(); m_backgroundBitmap = new wxBitmap(sz); wxMemoryDC dc(*m_backgroundBitmap); // bitmap dimensions w = bmp.GetWidth(); h = bmp.GetHeight(); // Is the bitmap smaller than the window? if ( (w < sz.x) || (h < sz.y) ) { // Check to see if they need to be rescaled to fit in the window wxImage img = bmp.ConvertToImage(); img.Rescale((int) sz.x, (int) sz.y); // Draw our cool background (enlarged and centered) dc.DrawBitmap(wxBitmap(img), 0, 0); } else { switch(pSkinSimple->GetDialogBackgroundImage()->GetHorizontalAnchor()) { case BKGD_ANCHOR_HORIZ_LEFT: default: x = 0; break; case BKGD_ANCHOR_HORIZ_CENTER: x = (w - sz.x) / 2; break; case BKGD_ANCHOR_HORIZ_RIGHT: x = w - sz.x; break; } switch(pSkinSimple->GetDialogBackgroundImage()->GetVerticalAnchor()) { case BKGD_ANCHOR_VERT_TOP: default: y = 0; break; case BKGD_ANCHOR_VERT_CENTER: y = (h - sz.y) /2; break; case BKGD_ANCHOR_VERT_BOTTOM: y = h - sz.y; break; } // Select the desired bitmap into the memory DC so we can take // the desired chunk of it. memDC.SelectObject(bmp); // Draw the desired chunk on the window dc.Blit(0, 0, sz.x, sz.y, &memDC, x, y, wxCOPY); // Drop the bitmap memDC.SelectObject(wxNullBitmap); } }
void CSimpleGUIPanel::SetBackgroundBitmap() { wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::SetBackgroundBitmap - Function Start")); CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxColour bgColor(*pSkinSimple->GetBackgroundImage()->GetBackgroundColor()); SetBackgroundColour(bgColor); wxRect panelRect = GetRect(); m_bmpBg = wxBitmap(panelRect.width, panelRect.height); wxMemoryDC dc(m_bmpBg); wxBrush bgBrush(bgColor); dc.SetBackground(bgBrush); dc.Clear(); #ifdef __WXMAC__ // Work around an apparent bug in wxMemoryDC::Clear() in wxCarbon 2.9.4 // TODO: remove this when the wxCarbon bug is fixed dc.SetBrush(bgBrush); wxPen bgPen(bgColor); dc.SetPen(bgPen); dc.DrawRectangle(panelRect); #endif int srcX, srcY, destX, destY, h, w; wxBitmap* srcBmp = pSkinSimple->GetBackgroundImage()->GetBitmap(); wxSize srcSize = srcBmp->GetSize(); switch(pSkinSimple->GetBackgroundImage()->GetHorizontalAnchor()) { case BKGD_ANCHOR_HORIZ_LEFT: default: srcX = 0; destX = 0; break; case BKGD_ANCHOR_HORIZ_CENTER: if (panelRect.width < srcSize.GetWidth()) { srcX = (srcSize.GetWidth() - panelRect.width) / 2; destX = 0; } else { srcX = 0; destX = (panelRect.width - srcSize.GetWidth()) / 2; } break; case BKGD_ANCHOR_HORIZ_RIGHT: if (panelRect.width < srcSize.GetWidth()) { srcX = (srcSize.GetWidth() - panelRect.width); destX = 0; } else { srcX = 0; destX = (panelRect.width - srcSize.GetWidth()); } break; } w = wxMin(panelRect.width, srcSize.GetWidth()); switch(pSkinSimple->GetBackgroundImage()->GetVerticalAnchor()) { case BKGD_ANCHOR_VERT_TOP: default: srcY = 0; destY = 0; break; case BKGD_ANCHOR_VERT_CENTER: if (panelRect.height < srcSize.GetHeight()) { srcY = (srcSize.GetHeight() - panelRect.height) / 2; destY = 0; } else { srcY = 0; destY = (panelRect.height - srcSize.GetHeight()) / 2; } break; case BKGD_ANCHOR_VERT_BOTTOM: if (panelRect.height < srcSize.GetHeight()) { srcY = (srcSize.GetHeight() - panelRect.height); destY = 0; } else { srcY = 0; destY = (panelRect.height - srcSize.GetHeight()); } break; } h = wxMin(panelRect.height, srcSize.GetHeight()); wxMemoryDC srcDC(*srcBmp); dc.Blit(destX, destY, w, h, &srcDC, srcX, srcY, wxCOPY); // dc.DrawBitmap(*pSkinSimple->GetBackgroundImage()->GetBitmap(), 0, 0, false); wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::SetBackgroundBitmap - Function End")); }
void CPanelPreferences::CreateControls() { CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); wxASSERT(pSkinAdvanced); wxASSERT(wxDynamicCast(pSkinAdvanced, CSkinAdvanced)); CPanelPreferences* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); itemDialog1->SetSizer(itemBoxSizer2); wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(1, 1, 0, 0); itemBoxSizer2->Add(itemFlexGridSizer3, 0, wxGROW|wxALL, 5); CTransparentStaticText* itemStaticText4 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Skin"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText4->SetFont(wxFont(LARGE_FONT, wxSWISS, wxNORMAL, wxBOLD, false, _T("Arial"))); itemFlexGridSizer3->Add(itemStaticText4, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer5, 0, wxALIGN_LEFT|wxLEFT|wxBOTTOM, 20); CTransparentStaticText* itemStaticText6 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Skin:"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText6->SetFont(wxFont(TINY_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); wxString* m_SkinSelectorCtrlStrings = NULL; m_SkinSelectorCtrl = new wxComboBox( itemDialog1, ID_SKINSELECTOR, _T(""), wxDefaultPosition, wxSize(-1, -1), 0, m_SkinSelectorCtrlStrings, wxCB_READONLY ); itemBoxSizer5->Add(m_SkinSelectorCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); CTransparentStaticLine* itemStaticLine8 = new CTransparentStaticLine( itemDialog1, wxID_ANY, wxDefaultPosition, wxSize(300, 1), wxLI_HORIZONTAL|wxNO_BORDER ); itemStaticLine8->SetLineColor(pSkinSimple->GetStaticLineColor()); itemBoxSizer2->Add(itemStaticLine8, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 20); wxFlexGridSizer* itemFlexGridSizer9 = new wxFlexGridSizer(1, 1, 0, 0); itemFlexGridSizer9->AddGrowableCol(0); itemBoxSizer2->Add(itemFlexGridSizer9, 0, wxGROW|wxALL, 5); CTransparentStaticText* itemStaticText10 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Preferences"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT ); itemStaticText10->SetFont(wxFont(LARGE_FONT, wxSWISS, wxNORMAL, wxBOLD, false, _T("Arial"))); itemFlexGridSizer9->Add(itemStaticText10, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT, 20); wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer11->Add(itemBoxSizer12, 0, wxALIGN_LEFT|wxALL, 0); m_CustomizePreferencesCtrl = new wxCheckBox( itemDialog1, ID_CUSTOMIZEPREFERENCES, wxT(""), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); m_CustomizePreferencesCtrl->SetValue(false); itemBoxSizer12->Add(m_CustomizePreferencesCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); CTransparentStaticTextAssociate* itemStaticText14 = new CTransparentStaticTextAssociate( itemDialog1, wxID_ANY, _("I want to customize my preferences for this computer only."), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText14->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText14->AssociateWindow(m_CustomizePreferencesCtrl); itemBoxSizer12->Add(itemStaticText14, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText15 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Customized Preferences"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText15->SetFont(wxFont(MEDIUM_FONT, wxSWISS, wxNORMAL, wxBOLD, false, _T("Arial"))); itemBoxSizer11->Add(itemStaticText15, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5); wxFlexGridSizer* itemFlexGridSizer15 = new wxFlexGridSizer(7, 2, 0, 0); itemFlexGridSizer15->AddGrowableRow(0); itemFlexGridSizer15->AddGrowableRow(1); itemFlexGridSizer15->AddGrowableRow(2); itemFlexGridSizer15->AddGrowableRow(3); itemFlexGridSizer15->AddGrowableRow(4); itemFlexGridSizer15->AddGrowableRow(5); itemFlexGridSizer15->AddGrowableRow(6); itemFlexGridSizer15->AddGrowableCol(0); itemFlexGridSizer15->AddGrowableCol(1); itemBoxSizer11->Add(itemFlexGridSizer15, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 0); CTransparentStaticText* itemStaticText16 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Do work only between:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText16->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText16->Wrap(250); itemFlexGridSizer15->Add(itemStaticText16, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0); wxString* m_WorkBetweenBeginCtrlStrings = NULL; m_WorkBetweenBeginCtrl = new wxComboBox( itemDialog1, ID_WORKBETWEENBEGIN, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_WorkBetweenBeginCtrlStrings, wxCB_READONLY ); m_WorkBetweenBeginCtrl->Enable(false); itemBoxSizer17->Add(m_WorkBetweenBeginCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText19 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("and"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText19->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer17->Add(itemStaticText19, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxString* m_WorkBetweenEndCtrlStrings = NULL; m_WorkBetweenEndCtrl = new wxComboBox( itemDialog1, ID_WORKBETWEENEND, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_WorkBetweenEndCtrlStrings, wxCB_READONLY ); m_WorkBetweenEndCtrl->Enable(false); itemBoxSizer17->Add(m_WorkBetweenEndCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText21 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Connect to internet only between:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText21->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText21->Wrap(250); itemFlexGridSizer15->Add(itemStaticText21, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer22, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0); wxString* m_ConnectBetweenBeginCtrlStrings = NULL; m_ConnectBetweenBeginCtrl = new wxComboBox( itemDialog1, ID_CONNECTBETWEENBEGIN, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_ConnectBetweenBeginCtrlStrings, wxCB_READONLY ); m_ConnectBetweenBeginCtrl->Enable(false); itemBoxSizer22->Add(m_ConnectBetweenBeginCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText24 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("and"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText24->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer22->Add(itemStaticText24, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxString* m_ConnectBetweenEndCtrlStrings = NULL; m_ConnectBetweenEndCtrl = new wxComboBox( itemDialog1, ID_CONNECTBETWEENEND, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_ConnectBetweenEndCtrlStrings, wxCB_READONLY ); m_ConnectBetweenEndCtrl->Enable(false); itemBoxSizer22->Add(m_ConnectBetweenEndCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText26 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Use no more than:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText26->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText26->Wrap(250); itemFlexGridSizer15->Add(itemStaticText26, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer27 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer27, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0); wxString* m_MaxDiskUsageCtrlStrings = NULL; m_MaxDiskUsageCtrl = new wxComboBox( itemDialog1, ID_MAXDISKUSAGE, _T(""), wxDefaultPosition, wxSize(-1, -1), 0, m_MaxDiskUsageCtrlStrings, wxCB_READONLY ); m_MaxDiskUsageCtrl->Enable(false); itemBoxSizer27->Add(m_MaxDiskUsageCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText29 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("of disk space"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText29->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer27->Add(itemStaticText29, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); CTransparentStaticText* itemStaticText30 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Use no more than:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText30->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText30->Wrap(250); itemFlexGridSizer15->Add(itemStaticText30, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer31 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer31, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0); wxString* m_MaxCPUUsageCtrlStrings = NULL; m_MaxCPUUsageCtrl = new wxComboBox( itemDialog1, ID_MAXCPUUSAGE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_MaxCPUUsageCtrlStrings, wxCB_READONLY ); m_MaxCPUUsageCtrl->Enable(false); itemBoxSizer31->Add(m_MaxCPUUsageCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText33 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("of the processor"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText33->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer31->Add(itemStaticText33, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); CTransparentStaticText* itemStaticText37 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Do work while on battery?"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText37->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText37->Wrap(250); itemFlexGridSizer15->Add(itemStaticText37, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer38 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer38, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0); m_WorkWhileOnBatteryCtrl = new wxCheckBox( itemDialog1, ID_WORKWHILEONBATTERY, _T(""), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); m_WorkWhileOnBatteryCtrl->SetValue(false); m_WorkWhileOnBatteryCtrl->Enable(false); itemBoxSizer38->Add(m_WorkWhileOnBatteryCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText40 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("Do work after idle for:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); itemStaticText40->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemStaticText40->Wrap(250); itemFlexGridSizer15->Add(itemStaticText40, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer41 = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer15->Add(itemBoxSizer41, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0); wxString* m_WorkWhenIdleCtrlStrings = NULL; m_WorkWhenIdleCtrl = new wxComboBox( itemDialog1, ID_WORKWHENIDLE, _T(""), wxDefaultPosition, wxSize(-1, -1), 0, m_WorkWhenIdleCtrlStrings, wxCB_READONLY ); m_WorkWhenIdleCtrl->Enable(false); itemBoxSizer41->Add(m_WorkWhenIdleCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); CTransparentStaticText* itemStaticText43 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 ); itemStaticText43->SetFont(wxFont(SMALL_FONT, wxSWISS, wxNORMAL, wxNORMAL, false, _T("Arial"))); itemBoxSizer41->Add(itemStaticText43, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* itemBoxSizer44 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer44, 0, wxALIGN_RIGHT|wxALL, 5); wxButton* itemButton44 = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 ); itemBoxSizer44->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* itemButton45 = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); itemBoxSizer44->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #ifndef __WXMSW__ #ifdef __WXMAC__ wxButton* itemButton46 = new wxButton( this, ID_SIMPLE_HELP, _("Help"), wxDefaultPosition, wxDefaultSize, 0 ); #ifdef wxUSE_TOOLTIPS wxString helpTip; helpTip.Printf(_("Get help with %s"), pSkinAdvanced->GetApplicationShortName().c_str()); itemButton46->SetToolTip(helpTip); #endif #else wxContextHelpButton* itemButton46 = new wxContextHelpButton(this); #endif itemBoxSizer44->Add(itemButton46, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #endif // Set validators m_SkinSelectorCtrl->SetValidator( wxGenericValidator(& m_strSkinSelector) ); m_CustomizePreferencesCtrl->SetValidator( wxGenericValidator(& m_bCustomizedPreferences) ); m_WorkBetweenBeginCtrl->SetValidator( wxGenericValidator(& m_strWorkBetweenBegin) ); m_WorkBetweenEndCtrl->SetValidator( wxGenericValidator(& m_strWorkBetweenEnd) ); m_ConnectBetweenBeginCtrl->SetValidator( wxGenericValidator(& m_strConnectBetweenBegin) ); m_ConnectBetweenEndCtrl->SetValidator( wxGenericValidator(& m_strConnectBetweenEnd) ); m_MaxDiskUsageCtrl->SetValidator( wxGenericValidator(& m_strMaxDiskUsage) ); m_MaxCPUUsageCtrl->SetValidator( wxGenericValidator(& m_strMaxCPUUsage) ); m_WorkWhileOnBatteryCtrl->SetValidator( wxGenericValidator(& m_bWorkWhileOnBattery) ); m_WorkWhenIdleCtrl->SetValidator( wxGenericValidator(& m_strWorkWhenIdle) ); ////@end CPanelPreferences content construction }
void CSlideShowPanel::AdvanceSlideShow(bool changeSlide, bool reload) { double xRatio, yRatio, ratio; TaskSelectionData* selData = ((CSimpleTaskPanel*)GetParent())->GetTaskSelectionData(); if (selData == NULL) return; if (reload) { m_bCurrentSlideIsDefault = false; selData->lastSlideShown = -1; } int numSlides = (int)selData->slideShowFileNames.size(); #if TESTALLDESCRIPTIONS // For testing numSlides = 0; #endif if (numSlides <= 0) { #if HIDEDEFAULTSLIDE if (!reload) { return; } wxRect r = GetRect(); wxBitmap backgroundBitmap = ((CSimpleTaskPanel*)GetParent())->GetBackgroundBmp().GetSubBitmap(r); wxWindowDC dc(this); dc.DrawBitmap(backgroundBitmap, 0, 0); // Force redraws if text unchanged; hide all if not in all-projects list m_description->Show(false); Enable( false ); if (!m_bGotAllProjectsList) { CMainDocument* pDoc = wxGetApp().GetDocument(); wxASSERT(pDoc); pDoc->rpc.get_all_projects_list(m_AllProjectsList); m_bGotAllProjectsList = true; } SetDescriptionText(); return; #else // HIDEDEFAULTSLIDE SetBackgroundColour(*wxBLACK); if (m_bCurrentSlideIsDefault) return; CSkinSimple* pSkinSimple = wxGetApp().GetSkinManager()->GetSimple(); wxASSERT(pSkinSimple); wxASSERT(wxDynamicCast(pSkinSimple, CSkinSimple)); m_SlideBitmap = *pSkinSimple->GetWorkunitAnimationImage()->GetBitmap(); if (m_SlideBitmap.Ok()) { m_bCurrentSlideIsDefault = true; } #endif // HIDEDEFAULTSLIDE } else { #if HIDEDEFAULTSLIDE m_description->Show(false); Enable( false ); #endif // HIDEDEFAULTSLIDE // TODO: Should we allow slide show to advance if task is not running? int newSlide = selData->lastSlideShown; if (selData->dotColor == runningIcon) { // Advance only if running if (changeSlide) { if (++newSlide >= numSlides) { newSlide = 0; } } } if (newSlide < 0) { newSlide = 0; } if (selData->lastSlideShown != newSlide) { // Don't update if only one slide selData->lastSlideShown = newSlide; wxBitmap *bm = new wxBitmap(); bm->LoadFile(selData->slideShowFileNames[newSlide], wxBITMAP_TYPE_ANY); if (bm->Ok()) { m_SlideBitmap = *bm; delete bm; m_bCurrentSlideIsDefault = false; } } } if (m_SlideBitmap.Ok()) { // Check to see if they need to be rescaled to fit in the window ratio = 1.0; xRatio = (double)SLIDESHOWWIDTH / (double)m_SlideBitmap.GetWidth(); yRatio = (double)SLIDESHOWHEIGHT / (double)m_SlideBitmap.GetHeight(); ratio = xRatio; if ( yRatio < ratio ) { ratio = yRatio; } if ( (ratio < 0.95) || (ratio > 1.05) ) { wxImage img = m_SlideBitmap.ConvertToImage(); img.Rescale((int) (m_SlideBitmap.GetWidth()*ratio), (int) (m_SlideBitmap.GetHeight()*ratio), (ratio > 1.0) ? wxIMAGE_QUALITY_BILINEAR : wxIMAGE_QUALITY_BOX_AVERAGE ); wxBitmap *bm = new wxBitmap(img); m_SlideBitmap = *bm; delete bm; } Refresh(); } }