diff --git a/checkin_notes b/checkin_notes index 664396683c..7823330c88 100644 --- a/checkin_notes +++ b/checkin_notes @@ -9329,3 +9329,14 @@ Charlie 18 Nov 2009 boinc.xcodeproj/ project.pbxproj WaitPermissions-Info.plist (Added) + +Rom 18 Nov 2009 + - MGR: Add descriptions for each project as a tooltip and add + an icon for multicore capable projects. + + clientgui/ + ProjectListCtrl.cpp, .h + clientgui/res/ + multicore.xpm (Added) + win_build/ + boincmgr.vcproj diff --git a/clientgui/ProjectListCtrl.cpp b/clientgui/ProjectListCtrl.cpp index 78b4a959f1..de0fa12cd3 100644 --- a/clientgui/ProjectListCtrl.cpp +++ b/clientgui/ProjectListCtrl.cpp @@ -28,6 +28,7 @@ #include "res/externalweblink.xpm" #include "res/nvidiaicon.xpm" #include "res/atiicon.xpm" +#include "res/multicore.xpm" ////@end XPM images @@ -411,7 +412,6 @@ CProjectListCtrl::~CProjectListCtrl( ) delete m_accessible; } } - #endif /*! @@ -421,6 +421,7 @@ CProjectListCtrl::~CProjectListCtrl( ) bool CProjectListCtrl::Create( wxWindow* parent ) { ////@begin CProjectListCtrl member initialisation + m_pTipWindow = NULL; ////@end CProjectListCtrl member initialisation ////@begin CProjectListCtrl creation @@ -437,7 +438,9 @@ bool CProjectListCtrl::Create( wxWindow* parent ) wxMemoryFSHandler::AddFile(wxT("webexternallink.xpm"), wxBitmap(externalweblink_xpm), wxBITMAP_TYPE_XPM); wxMemoryFSHandler::AddFile(wxT("nvidiaicon.xpm"), wxBitmap(nvidiaicon_xpm), wxBITMAP_TYPE_XPM); wxMemoryFSHandler::AddFile(wxT("atiicon.xpm"), wxBitmap(atiicon_xpm), wxBITMAP_TYPE_XPM); + wxMemoryFSHandler::AddFile(wxT("multicore.xpm"), wxBitmap(multicore_xpm), wxBITMAP_TYPE_XPM); ////@end CProjectListCtrl creation + return TRUE; } @@ -486,6 +489,36 @@ void CProjectListCtrl::OnLinkClicked( wxHtmlLinkEvent& event ) void CProjectListCtrl::OnHover( wxHtmlCellEvent& event ) { + wxString buf = wxEmptyString; + wxHtmlCell* cell = NULL; + wxRect rc; + wxPoint p; + unsigned long i = 0; + + // Get which item in the list control this event belongs to. + cell = event.GetCell(); + cell = cell->GetRootCell(); + cell->GetId().ToULong(&i); + + // Determine bounding rect for new tooltip + GetScreenPosition(&p.x, &p.y); + p.y += cell->GetHeight() * i; + + rc.SetPosition(p); + rc.SetHeight(cell->GetHeight()); + rc.SetWidth(cell->GetWidth()); + + // Construct the tooltip text + if (!m_Items[i]->GetOrganization().IsEmpty()) { + buf += m_Items[i]->GetOrganization() + wxT("\n\n"); + } + buf += m_Items[i]->GetDescription(); + + // Display tooltip + if (!m_pTipWindow) { + m_pTipWindow = new wxTipWindow(this, buf, 250, &m_pTipWindow, &rc); + } + event.Skip(); } @@ -495,31 +528,39 @@ wxString CProjectListCtrl::OnGetItem(size_t i) const wxString retval = wxEmptyString; wxString buf = wxEmptyString; - retval += wxT(" "); - retval += wxT(" "); + if (m_Items[i]->IsNvidiaGPUSupported() || m_Items[i]->IsATIGPUSupported()) { + retval += wxT("
"); + } else { + retval += wxT("
"); + } + retval += wxT(""); buf.Printf( - wxT(" "), + wxT(""), m_Items[i]->GetTitle().c_str() ); retval += buf; + if (m_Items[i]->IsMulticoreSupported()) { + retval += wxT(""); + } + if (m_Items[i]->IsNvidiaGPUSupported()) { - retval += wxT(" "); + retval += wxT(""); } if (m_Items[i]->IsATIGPUSupported()) { - retval += wxT(" "); + retval += wxT(""); } buf.Printf( - wxT(" "), + wxT(""), m_Items[i]->GetURL().c_str() ); retval += buf; - retval += wxT(" "); - retval += wxT("
%s%s
"); + retval += wxT(""); + retval += wxT(""); return retval; } diff --git a/clientgui/ProjectListCtrl.h b/clientgui/ProjectListCtrl.h index 9daac63917..e463b420ad 100644 --- a/clientgui/ProjectListCtrl.h +++ b/clientgui/ProjectListCtrl.h @@ -182,6 +182,7 @@ public: private: std::vector m_Items; + wxTipWindow *m_pTipWindow; #ifdef __WXMAC__ CProjectListCtrlAccessible* m_accessible; diff --git a/clientgui/res/externalweblink.xpm b/clientgui/res/externalweblink.xpm index 31829a7f43..63c902ac84 100644 --- a/clientgui/res/externalweblink.xpm +++ b/clientgui/res/externalweblink.xpm @@ -16,26 +16,32 @@ // along with BOINC. If not, see . /* XPM */ -static const char *externalweblink_xpm[] = { +static char *externalweblink_xpm[] = { /* columns rows colors chars-per-pixel */ -"12 12 6 1", -" c #FFFFFF", -"+ c #99CCFF", -"X c #3399CC", -"o c #6699CC", -"O c #0066CC", -". c #0066FF", +"16 16 8 1", +" c None", +"@ c #99D5FF", +"+ c #0055CC", +"o c #33AACC", +". c #0055FF", +"O c #66AACC", +"# c #0080CC", +"X c #0080FF", /* pixels */ -" ", -" ...... ", -" Xo . ", -" .X . ", -" OOOO.+ . ", -" O .+ +X . ", -" O .+ +..o. ", -" O +o+.O X ", -" O +. O ", -" O O ", -" OOOOOOO ", -" " +" ", +" ", +" ", +" ..X... ", +" oO . ", +" .o . ", +" ++++.@ . ", +" + .@ @o . ", +" + .@ @..O. ", +" + @O@.+ o ", +" + @. + ", +" + + ", +" #++++#+ ", +" ", +" ", +" " }; diff --git a/clientgui/res/multicore.xpm b/clientgui/res/multicore.xpm new file mode 100644 index 0000000000..d77fbe024e --- /dev/null +++ b/clientgui/res/multicore.xpm @@ -0,0 +1,130 @@ +// This file is part of BOINC. +// http://boinc.berkeley.edu +// Copyright (C) 2008 University of California +// +// BOINC is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. +// +// BOINC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with BOINC. If not, see . + +/* XPM */ +static char *multicore_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 16 91 1", +"O c Black", +"s c #CACACA", +"p c #2D2D2D", +"A c #3C3C3C", +"W c #4B4B4B", +"- c #080808", +"b c #353535", +" c None", +"^ c #444444", +"4 c #535353", +"5 c #717171", +"+ c #010101", +"R c #101010", +"w c #1F1F1F", +") c #2E2E2E", +"h c #A6A6A6", +"G c #B5B5B5", +"* c #D3D3D3", +"2 c #272727", +"a c #909090", +"% c #020202", +"d c #3E3E3E", +"y c #6B6B6B", +"C c #7A7A7A", +"q c #898989", +"T c #A7A7A7", +"J c #0A0A0A", +"' c #282828", +"6 c #373737", +"U c #464646", +"; c #555555", +"~ c #737373", +"x c #919191", +"r c #A0A0A0", +"Q c #AFAFAF", +"Z c #BEBEBE", +"3 c #030303", +"1 c #121212", +"z c #303030", +"F c #FAFAFA", +"X c #3F3F3F", +"B c #6C6C6C", +"9 c #A8A8A8", +"f c #0B0B0B", +"# c #383838", +"u c #474747", +"= c #040404", +"` c #CECECE", +"v c #131313", +"L c #FBFBFB", +"7 c #404040", +"Y c #4F4F4F", +"D c #0C0C0C", +": c #2A2A2A", +"M c #393939", +"l c #484848", +"K c #575757", +"_ c #757575", +"! c #B1B1B1", +"j c #050505", +"$ c #141414", +"o c #232323", +"g c #323232", +". c #FCFCFC", +"0 c #6E6E6E", +"< c #AAAAAA", +"N c #1C1C1C", +"[ c #3A3A3A", +", c #494949", +"> c #060606", +"/ c #D0D0D0", +"S c #151515", +"i c #333333", +"] c #424242", +"8 c #515151", +"H c #7E7E7E", +"I c #9C9C9C", +"( c #ABABAB", +"} c #C9C9C9", +"@ c #E7E7E7", +"E c #2C2C2C", +"P c #F6F6F6", +"c c #3B3B3B", +"{ c #868686", +"t c #A4A4A4", +"& c #070707", +"e c #E0E0E0", +"V c #252525", +"n c #343434", +"k c #707070", +"m c #8E8E8E", +/* pixels */ +" .XoOOOO+O@ ", +"#$OOOOOO%&O* ", +"OO=-OOOOOO;: ", +"++>OOOOO,<1O ", +"2O=3OO4<=562 ", +"7O+O89O076#q wOe", +"rO4t=yuipasdfO+O", +"ghjkl#zxscvO&O3&", +":zubnmsMNOO-O=j+", +" BVCZASOO3O3=ODO", +"F G HOO&OO&OJOOK", +"LP wIUVO%3OOYTR", +" UE8d%OOW9Jk7", +" 8OQO,!3~^66", +" . /2(jBXn)_`", +" F '6]c[{} " +}; diff --git a/clientgui/res/templates/atiicon.bmp b/clientgui/res/templates/atiicon.bmp new file mode 100644 index 0000000000..81f30f04ff Binary files /dev/null and b/clientgui/res/templates/atiicon.bmp differ diff --git a/clientgui/res/templates/externalweblink.gif b/clientgui/res/templates/externalweblink.gif index d7ac63ecf8..3710374812 100644 Binary files a/clientgui/res/templates/externalweblink.gif and b/clientgui/res/templates/externalweblink.gif differ diff --git a/clientgui/res/templates/multicore.bmp b/clientgui/res/templates/multicore.bmp new file mode 100644 index 0000000000..487e2924f2 Binary files /dev/null and b/clientgui/res/templates/multicore.bmp differ diff --git a/clientgui/res/templates/nvidiaicon.bmp b/clientgui/res/templates/nvidiaicon.bmp new file mode 100644 index 0000000000..b77a0b8f10 Binary files /dev/null and b/clientgui/res/templates/nvidiaicon.bmp differ diff --git a/win_build/boincmgr.vcproj b/win_build/boincmgr.vcproj index 8f4ffdcaf3..1b2df7161c 100644 --- a/win_build/boincmgr.vcproj +++ b/win_build/boincmgr.vcproj @@ -864,6 +864,10 @@ RelativePath="..\clientgui\res\mess.xpm" > + +