mirror of https://github.com/BOINC/boinc.git
Merge branch 'master' of ssh://boinc.berkeley.edu/boinc-v2
This commit is contained in:
commit
9ea1aa0ae8
|
@ -15,12 +15,6 @@
|
|||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// XIdleTime:
|
||||
// Copyright (C) 2011 Universidade Federal de Campina Grande
|
||||
// Initial version: Magnus Henoch
|
||||
// Contributors: Danny Kukawka, Eivind Magnus Hvidevold
|
||||
// LGPL Version of xidletime: https://github.com/rodrigods/xidletime
|
||||
|
||||
// There is a reason that having a file called "cpp.h" that includes config.h
|
||||
// and some of the C++ header files is bad. That reason is because there are
|
||||
// #defines that alter the behiour of the standard C and C++ headers. In
|
||||
|
@ -159,17 +153,6 @@ mach_port_t gEventHandle = NULL;
|
|||
#define _SC_PAGESIZE _SC_PAGE_SIZE
|
||||
#endif
|
||||
|
||||
#if HAVE_DPMS
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/dpms.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_XSS
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/scrnsaver.h>
|
||||
#endif
|
||||
|
||||
|
||||
// The following is intended to be true both on Linux
|
||||
// and Debian GNU/kFreeBSD (see trac #521)
|
||||
//
|
||||
|
@ -1586,7 +1569,7 @@ inline bool device_idle(time_t t, const char *device) {
|
|||
return stat(device, &sbuf) || (sbuf.st_atime < t);
|
||||
}
|
||||
|
||||
static const struct dir_dev {
|
||||
static const struct dir_tty_dev {
|
||||
const char *dir;
|
||||
const char *dev;
|
||||
} tty_patterns[] = {
|
||||
|
@ -1627,7 +1610,6 @@ vector<string> get_tty_list() {
|
|||
} while (tty_patterns[i].dir != NULL);
|
||||
return tty_list;
|
||||
}
|
||||
|
||||
|
||||
inline bool all_tty_idle(time_t t) {
|
||||
static vector<string> tty_list;
|
||||
|
@ -1638,7 +1620,67 @@ inline bool all_tty_idle(time_t t) {
|
|||
for (i=0; i<tty_list.size(); i++) {
|
||||
// ignore errors
|
||||
if (!stat(tty_list[i].c_str(), &sbuf)) {
|
||||
// printf("%s %d %d\n",tty_list[i].c_str(),sbuf.st_atime,t);
|
||||
// printf("tty: %s %d %d\n",tty_list[i].c_str(),sbuf.st_atime,t);
|
||||
if (sbuf.st_atime >= t) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static const struct dir_input_dev {
|
||||
const char *dir;
|
||||
const char *dev;
|
||||
} input_patterns[] = {
|
||||
#ifdef unix
|
||||
{ "/dev/input","event" },
|
||||
{ "/dev/input","mouse" },
|
||||
{ "/dev/input/mice","" },
|
||||
#endif
|
||||
// add other ifdefs here as necessary.
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
vector<string> get_input_list() {
|
||||
// Create a list of all terminal devices on the system.
|
||||
char devname[1024];
|
||||
char fullname[1024];
|
||||
int done,i=0;
|
||||
vector<string> input_list;
|
||||
|
||||
do {
|
||||
DIRREF dev=dir_open(input_patterns[i].dir);
|
||||
if (dev) {
|
||||
do {
|
||||
// get next file
|
||||
done=dir_scan(devname,dev,1024);
|
||||
// does it match our tty pattern? If so, add it to the tty list.
|
||||
if (!done && (strstr(devname,input_patterns[i].dev) == devname)) {
|
||||
// don't add anything starting with .
|
||||
if (devname[0] != '.') {
|
||||
sprintf(fullname,"%s/%s",input_patterns[i].dir,devname);
|
||||
input_list.push_back(fullname);
|
||||
}
|
||||
}
|
||||
} while (!done);
|
||||
dir_close(dev);
|
||||
}
|
||||
i++;
|
||||
} while (input_patterns[i].dir != NULL);
|
||||
return input_list;
|
||||
}
|
||||
|
||||
inline bool all_input_idle(time_t t) {
|
||||
static vector<string> input_list;
|
||||
struct stat sbuf;
|
||||
unsigned int i;
|
||||
|
||||
if (input_list.size()==0) input_list=get_input_list();
|
||||
for (i=0; i<input_list.size(); i++) {
|
||||
// ignore errors
|
||||
if (!stat(input_list[i].c_str(), &sbuf)) {
|
||||
// printf("input: %s %d %d\n",input_list[i].c_str(),sbuf.st_atime,t);
|
||||
if (sbuf.st_atime >= t) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1865,91 +1907,6 @@ bool interrupts_idle(time_t t) {
|
|||
}
|
||||
return last_irq < t;
|
||||
}
|
||||
|
||||
#if HAVE_XSS
|
||||
// Ask the X server for user idle time (using XScreenSaver API)
|
||||
// Return true if the idle time exceeds idle_threshold.
|
||||
//
|
||||
bool xss_idle(long idle_threshold) {
|
||||
static XScreenSaverInfo* xssInfo = NULL;
|
||||
static Display* disp = NULL;
|
||||
static bool error = false;
|
||||
// some X call failed - always return not idle
|
||||
|
||||
if (error) return false;
|
||||
|
||||
long idle_time = 0;
|
||||
|
||||
if (disp == NULL) {
|
||||
disp = XOpenDisplay(NULL);
|
||||
// XOpenDisplay may return NULL if there is no running X
|
||||
// or DISPLAY points to wrong/invalid display
|
||||
//
|
||||
if (disp == NULL) {
|
||||
error = true;
|
||||
return false;
|
||||
}
|
||||
int event_base_return, error_base_return;
|
||||
xssInfo = XScreenSaverAllocInfo();
|
||||
if (!XScreenSaverQueryExtension(
|
||||
disp, &event_base_return, &error_base_return
|
||||
)){
|
||||
error = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
XScreenSaverQueryInfo(disp, DefaultRootWindow(disp), xssInfo);
|
||||
idle_time = xssInfo->idle;
|
||||
|
||||
#if HAVE_DPMS
|
||||
// XIdleTime Detection
|
||||
// See header for location and copywrites.
|
||||
//
|
||||
int dummy;
|
||||
CARD16 standby, suspend, off;
|
||||
CARD16 state;
|
||||
BOOL onoff;
|
||||
|
||||
if (DPMSQueryExtension(disp, &dummy, &dummy)) {
|
||||
if (DPMSCapable(disp)) {
|
||||
DPMSGetTimeouts(disp, &standby, &suspend, &off);
|
||||
DPMSInfo(disp, &state, &onoff);
|
||||
|
||||
if (onoff) {
|
||||
switch (state) {
|
||||
case DPMSModeStandby:
|
||||
// this check is a littlebit paranoid, but be sure
|
||||
if (idle_time < (unsigned) (standby * 1000)) {
|
||||
idle_time += (standby * 1000);
|
||||
}
|
||||
break;
|
||||
case DPMSModeSuspend:
|
||||
if (idle_time < (unsigned) ((suspend + standby) * 1000)) {
|
||||
idle_time += ((suspend + standby) * 1000);
|
||||
}
|
||||
break;
|
||||
case DPMSModeOff:
|
||||
if (idle_time < (unsigned) ((off + suspend + standby) * 1000)) {
|
||||
idle_time += ((off + suspend + standby) * 1000);
|
||||
}
|
||||
break;
|
||||
case DPMSModeOn:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// convert from milliseconds to seconds
|
||||
//
|
||||
idle_time = idle_time / 1000;
|
||||
|
||||
return idle_threshold < idle_time;
|
||||
}
|
||||
#endif // HAVE_XSS
|
||||
#endif // LINUX_LIKE_SYSTEM
|
||||
|
||||
bool HOST_INFO::users_idle(bool check_all_logins, double idle_time_to_run) {
|
||||
|
@ -1976,16 +1933,14 @@ bool HOST_INFO::users_idle(bool check_all_logins, double idle_time_to_run) {
|
|||
}
|
||||
|
||||
// Lets at least check the dev entries which should be correct for
|
||||
// USB mice. The tty check will catch keyboards if they are entering
|
||||
// data into a tty.
|
||||
if (!device_idle(idle_time, "/dev/input/mice")) return false;
|
||||
|
||||
#if HAVE_XSS
|
||||
if (!xss_idle((long)(idle_time_to_run * 60))) {
|
||||
// USB keyboards and mice. If the linux kernel doc is correct it should
|
||||
// also work for bluetooth input devices as well.
|
||||
//
|
||||
// See: https://www.kernel.org/doc/Documentation/input/input.txt
|
||||
//
|
||||
if (!all_input_idle(idle_time)) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
// We should find out which of the following are actually relevant
|
||||
// on which systems (if any)
|
||||
|
|
|
@ -805,12 +805,12 @@ bool CAdvancedFrame::CreateNotebookPage( CBOINCBaseView* pwndNewNotebookPage) {
|
|||
|
||||
pImageList = m_pNotebook->GetImageList();
|
||||
if (!pImageList) {
|
||||
pImageList = new wxImageList(16, 16, true, 0);
|
||||
pImageList = new wxImageList(ADJUSTFORXDPI(16), ADJUSTFORYDPI(16), true, 0);
|
||||
wxASSERT(pImageList != NULL);
|
||||
m_pNotebook->SetImageList(pImageList);
|
||||
}
|
||||
|
||||
iImageIndex = pImageList->Add(wxBitmap(pwndNewNotebookPage->GetViewIcon()));
|
||||
iImageIndex = pImageList->Add(GetScaledBitmapFromXPMData(pwndNewNotebookPage->GetViewIcon()));
|
||||
m_pNotebook->AddPage(pwndNewNotebookPage, pwndNewNotebookPage->GetViewDisplayName(), TRUE, iImageIndex);
|
||||
|
||||
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::CreateNotebookPage - Function End"));
|
||||
|
|
|
@ -71,20 +71,25 @@ CDlgAdvPreferences::CDlgAdvPreferences(wxWindow* parent) : CDlgAdvPreferencesBas
|
|||
int iImageIndex = 0;
|
||||
wxImageList* pImageList = m_Notebook->GetImageList();
|
||||
if (!pImageList) {
|
||||
pImageList = new wxImageList(16, 16, true, 0);
|
||||
pImageList = new wxImageList(ADJUSTFORXDPI(16), ADJUSTFORYDPI(16), true, 0);
|
||||
wxASSERT(pImageList != NULL);
|
||||
m_Notebook->SetImageList(pImageList);
|
||||
}
|
||||
iImageIndex = pImageList->Add(wxBitmap(proj_xpm));
|
||||
iImageIndex = pImageList->Add(GetScaledBitmapFromXPMData(proj_xpm));
|
||||
m_Notebook->SetPageImage(0,iImageIndex);
|
||||
|
||||
iImageIndex = pImageList->Add(wxBitmap(xfer_xpm));
|
||||
iImageIndex = pImageList->Add(GetScaledBitmapFromXPMData(xfer_xpm));
|
||||
m_Notebook->SetPageImage(1,iImageIndex);
|
||||
|
||||
iImageIndex = pImageList->Add(wxBitmap(usage_xpm));
|
||||
iImageIndex = pImageList->Add(GetScaledBitmapFromXPMData(usage_xpm));
|
||||
m_Notebook->SetPageImage(2,iImageIndex);
|
||||
|
||||
#ifdef __WXMSW__
|
||||
wxSize size = wxSize(wxSystemSettings::GetMetric(wxSYS_SMALLICON_X), wxSystemSettings::GetMetric(wxSYS_SMALLICON_Y));
|
||||
iImageIndex = pImageList->Add(pSkinAdvanced->GetApplicationSnoozeIcon()->GetIcon(size, wxIconBundle::FALLBACK_NEAREST_LARGER));
|
||||
#else
|
||||
iImageIndex = pImageList->Add(pSkinAdvanced->GetApplicationSnoozeIcon()->GetIcon(wxSize(16,16)));
|
||||
#endif
|
||||
m_Notebook->SetPageImage(3,iImageIndex);
|
||||
|
||||
//setting warning bitmap
|
||||
|
@ -121,8 +126,9 @@ CDlgAdvPreferences::CDlgAdvPreferences(wxWindow* parent) : CDlgAdvPreferencesBas
|
|||
}
|
||||
#endif
|
||||
|
||||
this->Layout();
|
||||
Layout();
|
||||
Fit();
|
||||
Centre();
|
||||
}
|
||||
|
||||
/* destructor */
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
#include "DlgEventLog.h"
|
||||
#include "AdvancedFrame.h"
|
||||
#include "DlgDiagnosticLogFlags.h"
|
||||
#include <wx/display.h>
|
||||
|
||||
#ifdef __WXMAC__
|
||||
#include <time.h>
|
||||
|
@ -176,8 +175,10 @@ bool CDlgEventLog::Create( wxWindow* parent, wxWindowID id, const wxString& capt
|
|||
#ifdef __WXMSW__
|
||||
// Get the current display space for the current window
|
||||
int iDisplay = wxNOT_FOUND;
|
||||
if ( wxGetApp().GetFrame() != NULL ) iDisplay = wxDisplay::GetFromWindow(wxGetApp().GetFrame());
|
||||
if ( iDisplay == wxNOT_FOUND ) iDisplay = 0;
|
||||
if ( wxGetApp().GetFrame() != NULL )
|
||||
iDisplay = wxDisplay::GetFromWindow(wxGetApp().GetFrame());
|
||||
if ( iDisplay == wxNOT_FOUND )
|
||||
iDisplay = 0;
|
||||
wxDisplay *display = new wxDisplay(iDisplay);
|
||||
wxRect rDisplay = display->GetClientArea();
|
||||
|
||||
|
@ -202,7 +203,6 @@ bool CDlgEventLog::Create( wxWindow* parent, wxWindowID id, const wxString& capt
|
|||
|
||||
delete display;
|
||||
#endif
|
||||
|
||||
#ifdef __WXMAC__
|
||||
// If the user has changed the arrangement of multiple
|
||||
// displays, make sure the window title bar is still on-screen.
|
||||
|
|
|
@ -71,8 +71,6 @@ CDlgItemProperties::CDlgItemProperties(wxWindow* parent) :
|
|||
SetSizer( m_bSizer1 );
|
||||
Layout();
|
||||
|
||||
Centre( wxBOTH );
|
||||
|
||||
m_current_row=0;
|
||||
|
||||
int currentTabView = pFrame->GetCurrentViewPage();
|
||||
|
@ -106,59 +104,87 @@ bool CDlgItemProperties::SaveState() {
|
|||
pConfig->SetPath(m_strBaseConfigLocation);
|
||||
pConfig->Write(wxT("Width"), GetSize().GetWidth());
|
||||
pConfig->Write(wxT("Height"), GetSize().GetHeight());
|
||||
#ifdef __WXMAC__
|
||||
pConfig->Write(wxT("XPos"), GetPosition().x);
|
||||
pConfig->Write(wxT("YPos"), GetPosition().y);
|
||||
#endif
|
||||
|
||||
pConfig->Flush();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* restores former dialog size and (on Mac) position */
|
||||
/* restores former dialog size and position */
|
||||
bool CDlgItemProperties::RestoreState() {
|
||||
wxConfigBase* pConfig = wxConfigBase::Get(FALSE);
|
||||
int iWidth, iHeight;
|
||||
wxConfigBase* pConfig = wxConfigBase::Get(FALSE);
|
||||
wxPoint oTempPoint;
|
||||
wxSize oTempSize;
|
||||
|
||||
wxASSERT(pConfig);
|
||||
if (!pConfig) return false;
|
||||
|
||||
pConfig->SetPath(m_strBaseConfigLocation);
|
||||
|
||||
pConfig->Read(wxT("Width"), &iWidth, wxDefaultCoord);
|
||||
pConfig->Read(wxT("Height"), &iHeight, wxDefaultCoord);
|
||||
pConfig->Read(wxT("YPos"), &oTempPoint.y, wxDefaultCoord);
|
||||
pConfig->Read(wxT("XPos"), &oTempPoint.x, wxDefaultCoord);
|
||||
pConfig->Read(wxT("Width"), &oTempSize.x, wxDefaultCoord);
|
||||
pConfig->Read(wxT("Height"), &oTempSize.y, wxDefaultCoord);
|
||||
|
||||
// Guard against a rare situation where registry values are zero
|
||||
if ((iWidth < 50) && (iWidth != wxDefaultCoord)) iWidth = wxDefaultCoord;
|
||||
if ((iHeight < 50) && (iHeight != wxDefaultCoord)) iHeight = wxDefaultCoord;
|
||||
if ((oTempSize.x < 50) && (oTempSize.x != wxDefaultCoord)) oTempSize.x = wxDefaultCoord;
|
||||
if ((oTempSize.y < 50) && (oTempSize.y != wxDefaultCoord)) oTempSize.y = wxDefaultCoord;
|
||||
|
||||
#ifndef __WXMAC__
|
||||
// Set size to saved values or defaults if no saved values
|
||||
SetSize(iWidth, iHeight);
|
||||
#else
|
||||
int iTop, iLeft;
|
||||
|
||||
pConfig->Read(wxT("YPos"), &iTop, wxDefaultCoord);
|
||||
pConfig->Read(wxT("XPos"), &iLeft, wxDefaultCoord);
|
||||
|
||||
// If either co-ordinate is less then 0 then set it equal to 0 to ensure
|
||||
// it displays on the screen.
|
||||
if ((iLeft < 0) && (iLeft != wxDefaultCoord)) iLeft = 30;
|
||||
if ((iTop < 0) && (iTop != wxDefaultCoord)) iTop = 30;
|
||||
if ((oTempPoint.x < 0) && (oTempPoint.x != wxDefaultCoord)) oTempPoint.x = wxDefaultCoord;
|
||||
if ((oTempPoint.y < 0) && (oTempPoint.y != wxDefaultCoord)) oTempPoint.y = wxDefaultCoord;
|
||||
|
||||
// Set size and position to saved values or defaults if no saved values
|
||||
SetSize(iLeft, iTop, iWidth, iHeight, wxSIZE_USE_EXISTING);
|
||||
SetSize(oTempPoint.x, oTempPoint.y, oTempSize.x, oTempSize.y, wxSIZE_USE_EXISTING);
|
||||
|
||||
// Now make sure window is on screen
|
||||
GetScreenPosition(&iLeft, &iTop);
|
||||
GetSize(&iWidth, &iHeight);
|
||||
oTempPoint = GetScreenPosition();
|
||||
oTempSize = GetSize();
|
||||
|
||||
if (!IsWindowOnScreen(iLeft, iTop, iWidth, iHeight)) {
|
||||
iTop = iLeft = 30;
|
||||
SetSize(iLeft, iTop, iWidth, iHeight, wxSIZE_USE_EXISTING);
|
||||
}
|
||||
#ifdef __WXMSW__
|
||||
// Get the current display space for the current window
|
||||
int iDisplay = wxNOT_FOUND;
|
||||
if ( wxGetApp().GetFrame() != NULL )
|
||||
iDisplay = wxDisplay::GetFromWindow(this);
|
||||
if ( iDisplay == wxNOT_FOUND )
|
||||
iDisplay = 0;
|
||||
wxDisplay *display = new wxDisplay(iDisplay);
|
||||
wxRect rDisplay = display->GetClientArea();
|
||||
|
||||
// Check that the saved height and width is not larger than the displayable space.
|
||||
// If it is, then reduce the size.
|
||||
if ( oTempSize.GetWidth() > rDisplay.width ) oTempSize.SetWidth(rDisplay.width);
|
||||
if ( oTempSize.GetHeight() > rDisplay.height ) oTempSize.SetHeight(rDisplay.height);
|
||||
|
||||
// Check if part of the display was going to be off the screen, if so, center the
|
||||
// display on that axis
|
||||
if ( oTempPoint.x < rDisplay.x ) {
|
||||
oTempPoint.x = rDisplay.x;
|
||||
} else if ( oTempPoint.x + oTempSize.GetWidth() > rDisplay.x + rDisplay.width ) {
|
||||
oTempPoint.x = rDisplay.x + rDisplay.width - oTempSize.GetWidth();
|
||||
}
|
||||
|
||||
if ( oTempPoint.y < rDisplay.y ) {
|
||||
oTempPoint.y = rDisplay.y;
|
||||
} else if ( oTempPoint.y + oTempSize.GetHeight() > rDisplay.y + rDisplay.height ) {
|
||||
oTempPoint.y = rDisplay.y + rDisplay.height - oTempSize.GetHeight();
|
||||
}
|
||||
|
||||
delete display;
|
||||
#endif
|
||||
#ifdef __WXMAC__
|
||||
// If the user has changed the arrangement of multiple
|
||||
// displays, make sure the window title bar is still on-screen.
|
||||
if (!IsWindowOnScreen(oTempPoint.x, oTempPoint.y, oTempSize.GetWidth(), oTempSize.GetHeight())) {
|
||||
oTempPoint.y = oTempPoint.x = 30;
|
||||
}
|
||||
#endif // ! __WXMAC__
|
||||
|
||||
// Set size and position to saved values or defaults if no saved values
|
||||
SetSize(oTempPoint.x, oTempPoint.y, oTempSize.x, oTempSize.y, wxSIZE_USE_EXISTING);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -2672,3 +2672,19 @@ float GetYDPIScaling() {
|
|||
return YDPIScaleFactor;
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO: Choose from multiple size images if provided, else resize the closest one
|
||||
wxBitmap GetScaledBitmapFromXPMData(const char** XPMData) {
|
||||
#ifdef __WXMSW__
|
||||
if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) {
|
||||
wxImage img = wxImage(XPMData);
|
||||
img.Rescale((int) (img.GetWidth()*GetXDPIScaling()),
|
||||
(int) (img.GetHeight()*GetYDPIScaling()),
|
||||
wxIMAGE_QUALITY_BILINEAR
|
||||
);
|
||||
wxBitmap *bm = new wxBitmap(img);
|
||||
return *bm;
|
||||
}
|
||||
#endif
|
||||
return wxBitmap(XPMData);
|
||||
}
|
||||
|
|
|
@ -427,6 +427,8 @@ extern float GetYDPIScaling();
|
|||
#define ADJUSTFORYDPI(y) y
|
||||
#endif
|
||||
|
||||
wxBitmap GetScaledBitmapFromXPMData(const char** XPMData);
|
||||
|
||||
#ifdef SANDBOX
|
||||
#define BOINC_MASTER_GROUP_NAME "boinc_master"
|
||||
#endif
|
||||
|
|
|
@ -100,9 +100,9 @@ EXTRA_DIST = *.h \
|
|||
../lib/error_numbers.h \
|
||||
locale
|
||||
|
||||
boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0`
|
||||
boincmgr_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CXXFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0`
|
||||
boincmgr_LDFLAGS = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) `pkg-config --libs gtk+-2.0` -lnotify
|
||||
boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) $(GTK_CLFAGS)
|
||||
boincmgr_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CXXFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) $(GTK_CFLAGS)
|
||||
boincmgr_LDADD = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) $(GTK_LIBS)
|
||||
|
||||
win_config.h: $(top_srcdir)/config.h
|
||||
grep '#define.*BOINC.*VERSION' $^ > $@
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "BOINCGUIApp.h"
|
||||
#include "BOINCBaseFrame.h"
|
||||
#include "SkinManager.h"
|
||||
#include "MainDocument.h"
|
||||
#include "version.h"
|
||||
|
||||
|
||||
|
@ -152,13 +153,25 @@ bool CSkinImage::SetDefaults(wxString strComponentName, const char** ppDefaultBi
|
|||
bool CSkinImage::Validate() {
|
||||
if (!m_bmpBitmap.Ok()) {
|
||||
if (!m_strDesiredBitmap.IsEmpty()) {
|
||||
m_bmpBitmap = wxBitmap(wxImage(m_strDesiredBitmap, wxBITMAP_TYPE_ANY));
|
||||
wxImage img = wxImage(m_strDesiredBitmap, wxBITMAP_TYPE_ANY);
|
||||
if (img.IsOk()) {
|
||||
#ifdef __WXMSW__
|
||||
// TODO: Choose from multiple size images if provided, else resize the closest one
|
||||
if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) {
|
||||
img.Rescale((int) (img.GetWidth()*GetXDPIScaling()),
|
||||
(int) (img.GetHeight()*GetYDPIScaling()),
|
||||
wxIMAGE_QUALITY_BILINEAR
|
||||
);
|
||||
}
|
||||
#endif
|
||||
m_bmpBitmap = wxBitmap(img);
|
||||
}
|
||||
}
|
||||
if (!m_bmpBitmap.Ok()) {
|
||||
if (show_error_msgs) {
|
||||
fprintf(stderr, "Skin Manager: Failed to load '%s' image. Using default.\n", (const char *)m_strComponentName.mb_str());
|
||||
}
|
||||
m_bmpBitmap = wxBitmap(m_ppDefaultBitmap);
|
||||
m_bmpBitmap = GetScaledBitmapFromXPMData(m_ppDefaultBitmap);
|
||||
wxASSERT(m_bmpBitmap.Ok());
|
||||
}
|
||||
}
|
||||
|
@ -480,7 +493,19 @@ int CSkinAdvanced::Parse(MIOFILE& in) {
|
|||
wxString(strBuffer.c_str(), wxConvUTF8)
|
||||
);
|
||||
if (boinc_file_exists(str.c_str())) {
|
||||
m_bitmapApplicationLogo = wxBitmap(wxImage(str.c_str(), wxBITMAP_TYPE_ANY));
|
||||
wxImage img = wxImage(str.c_str(), wxBITMAP_TYPE_ANY);
|
||||
if (img.IsOk()) {
|
||||
#ifdef __WXMSW__
|
||||
// TODO: Choose from multiple size images if provided, else resize the closest one
|
||||
if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) {
|
||||
img.Rescale((int) (img.GetWidth()*GetXDPIScaling()),
|
||||
(int) (img.GetHeight()*GetYDPIScaling()),
|
||||
wxIMAGE_QUALITY_BILINEAR
|
||||
);
|
||||
}
|
||||
#endif
|
||||
m_bitmapApplicationLogo = wxBitmap(img);
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
|
|
|
@ -828,12 +828,12 @@ CSimpleGUIPanel::CSimpleGUIPanel(wxWindow* parent) :
|
|||
m_projPanel = new CSimpleProjectPanel(this);
|
||||
|
||||
// Box Sizer
|
||||
mainSizer = new wxBoxSizer(wxVERTICAL);
|
||||
mainSizer->AddSpacer(68);
|
||||
mainSizer = new wxBoxSizer(wxVERTICAL);
|
||||
mainSizer->AddSpacer(ADJUSTFORYDPI(68));
|
||||
mainSizer->Add(m_taskPanel, 1, wxLEFT | wxRIGHT | wxEXPAND | wxALIGN_CENTER, SIDEMARGINS);
|
||||
mainSizer->AddSpacer(8);
|
||||
mainSizer->AddSpacer(ADJUSTFORYDPI(8));
|
||||
mainSizer->Add(m_projPanel, 0, wxLEFT | wxRIGHT | wxEXPAND | wxALIGN_CENTER, SIDEMARGINS);
|
||||
mainSizer->AddSpacer(8);
|
||||
mainSizer->AddSpacer(ADJUSTFORYDPI(8));
|
||||
|
||||
wxBoxSizer* buttonsSizer;
|
||||
buttonsSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -864,7 +864,7 @@ CSimpleGUIPanel::CSimpleGUIPanel(wxWindow* parent) :
|
|||
m_HelpButton->SetToolTip(helpTip);
|
||||
|
||||
mainSizer->Add( buttonsSizer, 0, wxLEFT | wxRIGHT | wxEXPAND, 2 * SIDEMARGINS );
|
||||
mainSizer->AddSpacer(10);
|
||||
mainSizer->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
SetSizer(mainSizer);
|
||||
Layout();
|
||||
|
|
|
@ -125,7 +125,7 @@ void CPanelMessages::CreateControls()
|
|||
wxPoint(20, 20), wxDefaultSize, 0
|
||||
);
|
||||
m_FetchingNoticesText->SetBackgroundColour(*wxWHITE);
|
||||
itemFlexGridSizer2->Add(m_FetchingNoticesText, 0, wxEXPAND | wxLEFT | wxRIGHT, 5);
|
||||
itemFlexGridSizer2->Add(m_FetchingNoticesText, 0, wxEXPAND | wxLEFT | wxRIGHT, ADJUSTFORXDPI(5));
|
||||
|
||||
m_NoNoticesText = new wxStaticText(
|
||||
this, wxID_ANY,
|
||||
|
@ -133,24 +133,24 @@ void CPanelMessages::CreateControls()
|
|||
wxPoint(20, 20), wxDefaultSize, 0
|
||||
);
|
||||
m_NoNoticesText->SetBackgroundColour(*wxWHITE);
|
||||
itemFlexGridSizer2->Add(m_NoNoticesText, 0, wxEXPAND | wxLEFT | wxRIGHT, 5);
|
||||
itemFlexGridSizer2->Add(m_NoNoticesText, 0, wxEXPAND | wxLEFT | wxRIGHT, ADJUSTFORXDPI(5));
|
||||
|
||||
|
||||
m_pHtmlListPane = new CNoticeListCtrl(itemDialog1);
|
||||
wxASSERT(m_pHtmlListPane);
|
||||
|
||||
itemFlexGridSizer2->Add(m_pHtmlListPane, 0, wxGROW|wxALL, 5);
|
||||
itemFlexGridSizer2->Add(m_pHtmlListPane, 0, wxGROW|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
wxButton* itemButton44 = new wxButton(itemDialog1, wxID_OK, _("Close"), wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
itemBoxSizer4->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemBoxSizer4->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
#ifdef __WXMAC__ // Don't let Close button overlap window's grow icon
|
||||
itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 12);
|
||||
itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(12));
|
||||
#else
|
||||
itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemFlexGridSizer2->Add(itemBoxSizer4, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
#endif
|
||||
|
||||
itemDialog1->SetSizer(itemFlexGridSizer2);
|
||||
|
|
|
@ -263,7 +263,7 @@ void CPanelPreferences::CreateControls()
|
|||
itemDialog1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(1, 0, 0);
|
||||
itemBoxSizer2->Add(itemFlexGridSizer3, 0, wxGROW|wxALL, 5);
|
||||
itemBoxSizer2->Add(itemFlexGridSizer3, 0, wxGROW|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
CTransparentStaticText* itemStaticText4 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("This dialog controls preferences for this computer only."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
|
@ -280,7 +280,7 @@ void CPanelPreferences::CreateControls()
|
|||
// itemStaticText6->SetFont(wxFont(MEDIUM_FONT, wxSWISS, wxNORMAL, wxBOLD, false, _T("Arial")));
|
||||
itemFlexGridSizer3->Add(itemStaticText6, 0, wxALL, 0);
|
||||
|
||||
itemFlexGridSizer3->AddSpacer(10);
|
||||
itemFlexGridSizer3->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
CTransparentStaticText* itemStaticText7 = new CTransparentStaticText( itemDialog1, wxID_ANY, _("For additional settings, select Computing Preferences in the Advanced View."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
|
@ -289,14 +289,14 @@ void CPanelPreferences::CreateControls()
|
|||
|
||||
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);
|
||||
itemBoxSizer2->Add(itemStaticLine8, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, ADJUSTFORXDPI(20));
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer9 = new wxFlexGridSizer(1, 1, 0, 0);
|
||||
itemFlexGridSizer9->AddGrowableCol(0);
|
||||
itemBoxSizer2->Add(itemFlexGridSizer9, 0, wxGROW|wxALL, 5);
|
||||
itemBoxSizer2->Add(itemFlexGridSizer9, 0, wxGROW|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT, 20);
|
||||
itemBoxSizer2->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT, ADJUSTFORXDPI(20));
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer15 = new wxFlexGridSizer(7, 2, 0, 0);
|
||||
itemFlexGridSizer15->AddGrowableRow(0);
|
||||
|
@ -313,7 +313,7 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemFlexGridSizer15->Add(itemStaticText16, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -321,21 +321,21 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer17->Add(m_WorkBetweenBeginCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer17->Add(itemStaticText19, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer17->Add(m_WorkBetweenEndCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemFlexGridSizer15->Add(itemStaticText21, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer22, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -343,21 +343,21 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer22->Add(m_ConnectBetweenBeginCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer22->Add(itemStaticText24, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer22->Add(m_ConnectBetweenEndCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemFlexGridSizer15->Add(itemStaticText26, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer27 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer27, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -365,16 +365,16 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer27->Add(m_MaxDiskUsageCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer27->Add(itemStaticText29, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(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);
|
||||
itemFlexGridSizer15->Add(itemStaticText30, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer31 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer31, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -382,16 +382,16 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer31->Add(m_MaxCPUUsageCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer31->Add(itemStaticText33, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(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);
|
||||
itemFlexGridSizer15->Add(itemStaticText37, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer38 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer38, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -399,12 +399,12 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer38->Add(m_WorkWhileOnBatteryCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemFlexGridSizer15->Add(itemStaticText40, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer41 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer15->Add(itemBoxSizer41, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 0);
|
||||
|
@ -412,26 +412,26 @@ void CPanelPreferences::CreateControls()
|
|||
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);
|
||||
itemBoxSizer41->Add(m_WorkWhenIdleCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, ADJUSTFORXDPI(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);
|
||||
itemBoxSizer41->Add(itemStaticText43, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, ADJUSTFORXDPI(5));
|
||||
|
||||
wxBoxSizer* itemBoxSizer44 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer44, 0, wxALIGN_RIGHT|wxALL, 5);
|
||||
itemBoxSizer2->Add(itemBoxSizer44, 0, wxALIGN_RIGHT|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
wxButton* itemButton44 = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
itemBoxSizer44->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemBoxSizer44->Add(itemButton44, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
m_btnClear = new wxButton( this, ID_SGPREFERENCESCLEAR, _("Clear"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_btnClear->SetToolTip( _("Clear all local preferences listed above and close the dialog") );
|
||||
|
||||
itemBoxSizer44->Add(m_btnClear, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemBoxSizer44->Add(m_btnClear, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
wxButton* itemButton45 = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer44->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemBoxSizer44->Add(itemButton45, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
|
||||
|
||||
#ifndef __WXMSW__
|
||||
|
@ -445,7 +445,7 @@ void CPanelPreferences::CreateControls()
|
|||
#else
|
||||
wxContextHelpButton* itemButton46 = new wxContextHelpButton(this);
|
||||
#endif
|
||||
itemBoxSizer44->Add(itemButton46, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
itemBoxSizer44->Add(itemButton46, 0, wxALIGN_CENTER_VERTICAL|wxALL, ADJUSTFORXDPI(5));
|
||||
#endif
|
||||
|
||||
// Set validators
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "sg_CustomControls.h"
|
||||
#include "sg_BoincSimpleFrame.h"
|
||||
#include "MainDocument.h"
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -34,7 +35,7 @@
|
|||
#define LARGE_FONT 16
|
||||
#endif
|
||||
|
||||
#define SIDEMARGINS 30
|
||||
#define SIDEMARGINS ADJUSTFORXDPI(30)
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -55,8 +55,6 @@ static wxString tempArray[] = {_T("String1"), _T("String2"), _T("String3"), _T("
|
|||
static wxBitmap bmArray[3];
|
||||
#endif
|
||||
|
||||
#define SIDEMARGINS 30
|
||||
|
||||
CSimpleProjectPanel::CSimpleProjectPanel() {
|
||||
}
|
||||
|
||||
|
@ -87,10 +85,10 @@ CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) :
|
|||
wxBoxSizer* bSizer2;
|
||||
bSizer2 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
bSizer1->AddSpacer(5);
|
||||
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, 5 );
|
||||
bSizer2->Add( m_myProjectsLabel, 0, wxRIGHT, ADJUSTFORXDPI(5) );
|
||||
bSizer2->AddStretchSpacer();
|
||||
|
||||
int addProjectWidth, synchronizeWidth, y;
|
||||
|
@ -102,10 +100,10 @@ CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) :
|
|||
);
|
||||
|
||||
bSizer2->Add( m_TaskAddProjectButton, 0, wxRIGHT | wxEXPAND | wxALIGN_RIGHT, SIDEMARGINS );
|
||||
bSizer1->Add( bSizer2, 0, wxEXPAND | wxTOP | wxLEFT, 10 );
|
||||
bSizer1->Add( bSizer2, 0, wxEXPAND | wxTOP | wxLEFT, ADJUSTFORXDPI(10) );
|
||||
|
||||
#ifndef __WXMAC__
|
||||
bSizer1->AddSpacer(5);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(5));
|
||||
#endif
|
||||
|
||||
#if TESTBIGICONPOPUP
|
||||
|
@ -128,7 +126,7 @@ CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) :
|
|||
bSizer1->Add( m_ProjectSelectionCtrl, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
#ifndef __WXMAC__
|
||||
bSizer1->AddSpacer(8);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(8));
|
||||
#endif
|
||||
|
||||
// Make sure m_TotalCreditValue string is large enough
|
||||
|
@ -139,7 +137,7 @@ CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) :
|
|||
|
||||
bSizer1->Add( m_TotalCreditValue, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(5);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(5));
|
||||
|
||||
wxBoxSizer* bSizer3;
|
||||
bSizer3 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -153,7 +151,7 @@ CSimpleProjectPanel::CSimpleProjectPanel( wxWindow* parent ) :
|
|||
|
||||
bSizer1->Add( bSizer3, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(10);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
this->SetSizer( bSizer1 );
|
||||
this->Layout();
|
||||
|
@ -532,11 +530,29 @@ wxBitmap* CSimpleProjectPanel::GetProjectSpecificBitmap(char* project_url) {
|
|||
|
||||
// Only update it if project specific is found
|
||||
if(boinc_resolve_filename(GetProjectIconLoc(project_url).c_str(), defaultIcnPath, sizeof(defaultIcnPath)) == 0) {
|
||||
wxBitmap* projectBM = new wxBitmap();
|
||||
wxBitmap* projectBM;
|
||||
wxString strIconPath = wxString(defaultIcnPath,wxConvUTF8);
|
||||
if (wxFile::Exists(strIconPath)) {
|
||||
if ( projectBM->LoadFile(strIconPath, wxBITMAP_TYPE_ANY) ) {
|
||||
return projectBM;
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
|
||||
|
||||
#define SORTTASKLIST 1 /* TRUE to sort task selection control alphabetically */
|
||||
#define SLIDESHOWWIDTH 290
|
||||
#define SLIDESHOWHEIGHT 126
|
||||
#define SLIDESHOWWIDTH ADJUSTFORXDPI(290)
|
||||
#define SLIDESHOWHEIGHT ADJUSTFORYDPI(126)
|
||||
#define SLIDESHOWBORDER 1
|
||||
#define HIDEDEFAULTSLIDE 1
|
||||
#define TESTALLDESCRIPTIONS 0
|
||||
|
@ -355,19 +355,21 @@ numSlides = 0;
|
|||
ratio = 1.0;
|
||||
xRatio = (double)SLIDESHOWWIDTH / (double)m_SlideBitmap.GetWidth();
|
||||
yRatio = (double)SLIDESHOWHEIGHT / (double)m_SlideBitmap.GetHeight();
|
||||
if ( xRatio < ratio ) {
|
||||
ratio = xRatio;
|
||||
}
|
||||
ratio = xRatio;
|
||||
if ( yRatio < ratio ) {
|
||||
ratio = yRatio;
|
||||
}
|
||||
if ( ratio < 1.0 ) {
|
||||
if ( (ratio < 0.95) || (ratio > 1.05) ) {
|
||||
wxImage img = m_SlideBitmap.ConvertToImage();
|
||||
img.Rescale((int) (m_SlideBitmap.GetWidth()*ratio), (int) (m_SlideBitmap.GetHeight()*ratio));
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
@ -408,10 +410,10 @@ numSlides = 0;
|
|||
|
||||
if(m_SlideBitmap.Ok())
|
||||
{
|
||||
dc.DrawBitmap(m_SlideBitmap,
|
||||
(w - m_SlideBitmap.GetWidth())/2,
|
||||
(h - m_SlideBitmap.GetHeight())/2
|
||||
);
|
||||
dc.DrawBitmap(m_SlideBitmap,
|
||||
(w - m_SlideBitmap.GetWidth())/2,
|
||||
(h - m_SlideBitmap.GetHeight())/2
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -477,7 +479,7 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
|
||||
m_myTasksLabel = new CTransparentStaticText( this, wxID_ANY, _("Tasks:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_myTasksLabel->Wrap( -1 );
|
||||
bSizer2->Add( m_myTasksLabel, 0, wxRIGHT, 5 );
|
||||
bSizer2->Add( m_myTasksLabel, 0, wxRIGHT, ADJUSTFORXDPI(5) );
|
||||
|
||||
m_TaskSelectionCtrl = new CBOINCBitmapComboBox( this, ID_SGTASKSELECTOR, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
|
||||
// TODO: Might want better wording for Task Selection Combo Box tooltip
|
||||
|
@ -485,16 +487,16 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
m_TaskSelectionCtrl->SetToolTip(str);
|
||||
bSizer2->Add( m_TaskSelectionCtrl, 1, wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->Add( bSizer2, 0, wxEXPAND | wxTOP | wxLEFT, 10 );
|
||||
bSizer1->Add( bSizer2, 0, wxEXPAND | wxTOP | wxLEFT, ADJUSTFORXDPI(10) );
|
||||
|
||||
bSizer1->AddSpacer(5);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(5));
|
||||
|
||||
wxBoxSizer* bSizer3;
|
||||
bSizer3 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_TaskProjectLabel = new CTransparentStaticText( this, wxID_ANY, _("From:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TaskProjectLabel->Wrap( -1 );
|
||||
bSizer3->Add( m_TaskProjectLabel, 0, wxRIGHT, 5 );
|
||||
bSizer3->Add( m_TaskProjectLabel, 0, wxRIGHT, ADJUSTFORXDPI(5) );
|
||||
|
||||
m_TaskProjectName = new CTransparentStaticText( this, wxID_ANY, wxT("SETI@home"), wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE );
|
||||
m_TaskProjectName->Wrap( -1 );
|
||||
|
@ -512,7 +514,7 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
bSizer1->Add( m_TaskApplicationName, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
#endif // SELECTBYRESULTNAME
|
||||
|
||||
bSizer1->AddSpacer(10);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
m_SlideShowArea = new CSlideShowPanel(this);
|
||||
m_SlideShowArea->SetMinSize(wxSize(SLIDESHOWWIDTH+(2*SLIDESHOWBORDER), SLIDESHOWHEIGHT+(2*SLIDESHOWBORDER)));
|
||||
|
@ -520,19 +522,19 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
|
||||
bSizer1->Add( m_SlideShowArea, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(10);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
m_ElapsedTimeValue = new CTransparentStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE );
|
||||
m_ElapsedTimeValue->Wrap( -1 );
|
||||
bSizer1->Add( m_ElapsedTimeValue, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(7);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(7));
|
||||
|
||||
m_TimeRemainingValue = new CTransparentStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE );
|
||||
m_TimeRemainingValue->Wrap( -1 );
|
||||
bSizer1->Add( m_TimeRemainingValue, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(7);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(7));
|
||||
|
||||
wxBoxSizer* bSizer4;
|
||||
bSizer4 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -545,9 +547,9 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
m_ipctDoneX1000 = 100000;
|
||||
m_ProgressBar->SetValue( 100 );
|
||||
GetTextExtent(wxT("0"), &w, &h);
|
||||
m_ProgressBar->SetMinSize(wxSize(245, h));
|
||||
m_ProgressBar->SetMinSize(wxSize(ADJUSTFORXDPI(245), h));
|
||||
m_ProgressBar->SetToolTip(_("This task's progress"));
|
||||
bSizer4->Add( m_ProgressBar, 0, wxRIGHT, 5 );
|
||||
bSizer4->Add( m_ProgressBar, 0, wxRIGHT, ADJUSTFORXDPI(5) );
|
||||
|
||||
m_ProgressValueText = new CTransparentStaticText( this, wxID_ANY, wxT("100.000%"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT | wxST_NO_AUTORESIZE );
|
||||
m_ProgressValueText->Wrap( -1 );
|
||||
|
@ -555,20 +557,20 @@ CSimpleTaskPanel::CSimpleTaskPanel( wxWindow* parent ) :
|
|||
|
||||
bSizer1->Add( bSizer4, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(7);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(7));
|
||||
|
||||
// TODO: Can we determine the longest status string and initialize with it?
|
||||
m_StatusValueText = new CTransparentStaticText( this, wxID_ANY, m_sNoProjectsString, wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE );
|
||||
m_StatusValueText->Wrap( -1 );
|
||||
bSizer1->Add( m_StatusValueText, 0, wxLEFT | wxRIGHT | wxEXPAND, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(7);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(7));
|
||||
|
||||
m_TaskCommandsButton = new CSimpleTaskPopupButton( this, ID_TASKSCOMMANDBUTTON, _("Task Commands"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TaskCommandsButton->SetToolTip(_("Pop up a menu of commands to apply to this task"));
|
||||
bSizer1->Add( m_TaskCommandsButton, 0, wxLEFT | wxRIGHT | wxEXPAND | wxALIGN_CENTER_HORIZONTAL, SIDEMARGINS );
|
||||
|
||||
bSizer1->AddSpacer(10);
|
||||
bSizer1->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
this->SetSizer( bSizer1 );
|
||||
this->Layout();
|
||||
|
|
|
@ -122,6 +122,7 @@
|
|||
#include <wx/snglinst.h>
|
||||
#include <wx/bmpcbox.h>
|
||||
#include <wx/evtloop.h>
|
||||
#include <wx/display.h>
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
52
configure.ac
52
configure.ac
|
@ -115,18 +115,6 @@ AC_ARG_ENABLE(install-headers,
|
|||
[enable_install_headers=${enableval}],
|
||||
[enable_install_headers=yes])
|
||||
|
||||
AC_ARG_ENABLE(xss,
|
||||
AS_HELP_STRING([--disable-xss],
|
||||
[disable building the boinc client with the Xss library]),
|
||||
[enable_xss=${enableval}],
|
||||
[
|
||||
if test $isWIN32 != "yes" ; then
|
||||
enable_xss=yes
|
||||
else
|
||||
enable_xss=no
|
||||
fi
|
||||
])
|
||||
|
||||
AC_ARG_ENABLE(boinczip,
|
||||
AS_HELP_STRING([--enable-boinczip],
|
||||
[enable building the boinc zip library]),
|
||||
|
@ -624,15 +612,6 @@ fi
|
|||
|
||||
AM_CONDITIONAL(BUILD_GRAPHICS_API, [ test "$have_glut" = yes -a "$have_jpeg" = 1])
|
||||
|
||||
dnl check for X screen saver lib
|
||||
if test "$enable_xss" == yes; then
|
||||
AC_CHECK_LIB([Xss], [XScreenSaverAllocInfo], [have_Xss="yes"], [have_Xss="no"])
|
||||
AC_CHECK_HEADER([X11/extensions/scrnsaver.h], [have_Xss="yes"], [have_Xss="no"])
|
||||
if test "$have_Xss" == no; then
|
||||
AC_MSG_WARN([libxss missing, disabling X ScreenSaver user idle detection])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl --------------------------------------------------------------------------------
|
||||
dnl put double-inclusion protection into config.h
|
||||
AH_TOP([
|
||||
|
@ -1029,16 +1008,14 @@ fi
|
|||
|
||||
dnl ---------- libNotify --------------------------------------------------
|
||||
if test "${enable_manager}" = yes ; then
|
||||
pkg_config_args=libnotify
|
||||
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
||||
|
||||
LIBNOTIFY_CFLAGS=`$PKG_CONFIG libnotify --cflags`
|
||||
LIBNOTIFY_LIBS=`$PKG_CONFIG libnotify --libs`
|
||||
|
||||
AC_SUBST(LIBNOTIFY_CFLAGS)
|
||||
AC_SUBST(LIBNOTIFY_LIBS)
|
||||
PKG_CHECK_MODULES(LIBNOTIFY, [libnotify])
|
||||
fi
|
||||
|
||||
|
||||
dnl ---------- GTK2 -------------------------------------------------------
|
||||
if test "${enable_manager}" = yes ; then
|
||||
PKG_CHECK_MODULES(GTK, [gtk+-2.0])
|
||||
fi
|
||||
|
||||
dnl ---------- Sqlite3 ----------------------------------------------------
|
||||
if test "${enable_manager}" = yes ; then
|
||||
AM_PATH_SQLITE3
|
||||
|
@ -1204,19 +1181,6 @@ if test "${ac_cv_func_res_init}" != "yes" ; then
|
|||
fi
|
||||
LIBS=$svlibs
|
||||
|
||||
if (test "$enable_xss" == yes) && (test "$have_Xss" == yes); then
|
||||
SAH_CHECK_LIB([Xext],[DPMSQueryExtension],[
|
||||
AC_DEFINE([HAVE_DPMS],[1],[Define to 1 if you have xcb-dpms library])
|
||||
CLIENTLIBS="${sah_lib_last} ${CLIENTLIBS}"])
|
||||
SAH_CHECK_LIB([Xss],[XScreenSaverAllocInfo],[
|
||||
AC_DEFINE([HAVE_XSS],[1],[Define to 1 if you have xss library])
|
||||
CLIENTLIBS="${sah_lib_last} ${CLIENTLIBS}"])
|
||||
SAH_CHECK_LIB([X11],[XOpenDisplay],[
|
||||
AC_DEFINE([HAVE_X11],[1],[Define to 1 if you have X11 library])
|
||||
CLIENTLIBS="${sah_lib_last} ${CLIENTLIBS}"])
|
||||
echo DEBUG: CLIENTLIBS=${CLIENTLIBS} >&5
|
||||
fi
|
||||
|
||||
SAH_CHECK_LIB([resolv],[res_query],[
|
||||
AC_DEFINE([HAVE_RESOLV],[1],[Define to 1 if you have the resolv library])
|
||||
CLIENTLIBS="${sah_lib_last} ${CLIENTLIBS}"])
|
||||
|
@ -1258,7 +1222,7 @@ AC_ARG_ENABLE(wx-debug,
|
|||
],
|
||||
[enable_wx_debug="no"])
|
||||
|
||||
CLIENTGUILIBS="${WX_LIBS} ${SQLITE3_LIBS} ${GTK_LIBS}"
|
||||
CLIENTGUILIBS="${WX_LIBS} ${SQLITE3_LIBS}"
|
||||
|
||||
if test "${enable_client_release}" = "yes" ; then
|
||||
if test "x${WX_LIBS_STATIC}" = "x" ; then
|
||||
|
|
|
@ -259,6 +259,14 @@ $l70ubuntux64 = array(
|
|||
"type"=>"sea",
|
||||
);
|
||||
|
||||
$a74dev = array(
|
||||
"num"=>"7.4.14",
|
||||
"status"=>"Development Version",
|
||||
"file"=>"boinc_7.4.14.apk",
|
||||
"date"=>"11 Aug 2014",
|
||||
"type"=>"apk",
|
||||
);
|
||||
|
||||
$a73 = array(
|
||||
"num"=>"7.3.7",
|
||||
"status"=>"Recommended Version",
|
||||
|
@ -301,9 +309,9 @@ $mac = array(
|
|||
"dbname" => "x86_64-apple-darwin",
|
||||
"versions"=>array(
|
||||
$m74dev,
|
||||
$m72,
|
||||
$m72,
|
||||
$m70,
|
||||
$m74cdev,
|
||||
$m74cdev,
|
||||
$m72c,
|
||||
$m70c,
|
||||
)
|
||||
|
@ -358,6 +366,7 @@ $androidarm = array(
|
|||
"description"=>"Android version 2.3 and later<br>We recommend that, rather than downloading BOINC from here,</br>you get it from the Google Play Store or the Amazon app store (for Kindle Fire)",
|
||||
"dbname" => "arm-android-linux-gnu",
|
||||
"versions"=>array(
|
||||
$a74dev,
|
||||
$a73,
|
||||
)
|
||||
);
|
||||
|
@ -367,6 +376,7 @@ $androidmips = array(
|
|||
"description"=>"Android version 2.3 and later<br>We recommend that, rather than downloading BOINC from here,</br>you get it from the Google Play Store or the Amazon app store (for Kindle Fire)",
|
||||
"dbname" => "mips-android-linux-gnu",
|
||||
"versions"=>array(
|
||||
$a74dev,
|
||||
$a73,
|
||||
)
|
||||
);
|
||||
|
@ -376,6 +386,7 @@ $androidx86 = array(
|
|||
"description"=>"Android version 2.3 and later<br>We recommend that, rather than downloading BOINC from here,</br>you get it from the Google Play Store or the Amazon app store (for Kindle Fire)",
|
||||
"dbname" => "x86-android-linux-gnu",
|
||||
"versions"=>array(
|
||||
$a74dev,
|
||||
$a73,
|
||||
)
|
||||
);
|
||||
|
|
|
@ -20,8 +20,6 @@ require_once("../inc/util.inc");
|
|||
require_once("../inc/email.inc");
|
||||
require_once("../project/project.inc");
|
||||
|
||||
define('MASTER_URL', $master_url);
|
||||
|
||||
// send an email to admins:
|
||||
// - project forums: everyone in POST_REPORT_EMAILS
|
||||
// - team message board: team founder and admins
|
||||
|
@ -76,7 +74,7 @@ $explanation
|
|||
The content of your post:
|
||||
$post->content
|
||||
|
||||
For assistance with ".PROJECT." go to ".MASTER_URL;
|
||||
For assistance with ".PROJECT." go to ".$master_url;
|
||||
|
||||
$success = send_email($user, $subject, $body);
|
||||
pm_send($user, $user, $subject, $body, false);
|
||||
|
@ -109,7 +107,7 @@ function send_thread_moderation_email(
|
|||
has been $action_name by moderator $moderator->name (ID $moderator->id).
|
||||
$explanation
|
||||
|
||||
For assistance with ".PROJECT." go to ".MASTER_URL;
|
||||
For assistance with ".PROJECT." go to ".$master_url;
|
||||
|
||||
$subject = "THREAD $action REPORT: $thread->title";
|
||||
$success = mail_report_list($forum, $subject, $body);
|
||||
|
@ -157,7 +155,7 @@ $message
|
|||
Contents of the post:
|
||||
$post->content
|
||||
|
||||
For assistance with ".PROJECT." go to ".MASTER_URL;
|
||||
For assistance with ".PROJECT." go to ".$master_url;
|
||||
|
||||
$success = mail_report_list($forum, $subject, $body, true);
|
||||
|
||||
|
|
|
@ -111,7 +111,9 @@ function replace_pre($text, $export) {
|
|||
return preg_replace_callback(
|
||||
"@\[pre\](.*?)\[/pre\]@is",
|
||||
function ($matches) {
|
||||
return "<pre>".remove_br(substr($matches[0], 5, -6))."</pre>";
|
||||
$x = remove_br(substr($matches[0], 5, -6));
|
||||
$x = htmlspecialchars($x);
|
||||
return "<pre>$x</pre>";
|
||||
},
|
||||
$text
|
||||
);
|
||||
|
@ -119,7 +121,9 @@ function replace_pre($text, $export) {
|
|||
return preg_replace_callback(
|
||||
"@\[pre\](.*?)\[/pre\]@is",
|
||||
function ($matches) {
|
||||
return "<div class=\"pre\">".remove_br(substr($matches[0], 5, -6))."</div>";
|
||||
$x = remove_br(substr($matches[0], 5, -6));
|
||||
$x = htmlspecialchars($x);
|
||||
return "<div class=\"pre\">$x</div>";
|
||||
},
|
||||
$text
|
||||
);
|
||||
|
@ -242,16 +246,24 @@ function remove_br($text){
|
|||
}
|
||||
|
||||
// Make links open in new windows.
|
||||
//
|
||||
function externalize_links($text) {
|
||||
// TODO: Convert this to PCRE
|
||||
$i=0;$linkpos=true;
|
||||
while (true){ //Find a link
|
||||
$linkpos=strpos($text,"<a ",$i);
|
||||
$i=0;
|
||||
$linkpos=true;
|
||||
$out = "";
|
||||
while (true){
|
||||
//Find a link
|
||||
//
|
||||
$linkpos=strpos($text, "<a ", $i);
|
||||
if ($linkpos===false) break;
|
||||
$out.= substr($text,$i,$linkpos-$i)."<a target=\"_new\" "; //Replace with target='_new'
|
||||
$i=$linkpos+3;
|
||||
|
||||
//Replace with target='_new'
|
||||
//
|
||||
$out .= substr($text, $i, $linkpos-$i)."<a target=\"_new\" ";
|
||||
$i = $linkpos+3;
|
||||
}
|
||||
$out.=substr($text,$i);
|
||||
$out .= substr($text, $i);
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
|
|
@ -109,6 +109,9 @@ echo "<p>";
|
|||
|
||||
if ($preview == tra("Preview")) {
|
||||
$options = new output_options;
|
||||
if (is_admin($logged_in_user)) {
|
||||
$options->htmlitems = false;
|
||||
}
|
||||
echo "<h2>".tra("Preview")."</h2>\n";
|
||||
echo "<div class=\"pm_preview\">"
|
||||
.output_transform($content, $options)
|
||||
|
|
|
@ -22,7 +22,7 @@ libfcgi_sources = \
|
|||
coproc.cpp \
|
||||
filesys.cpp \
|
||||
hostinfo.cpp \
|
||||
md5.c \
|
||||
md5.cpp \
|
||||
md5_file.cpp \
|
||||
mfile.cpp \
|
||||
miofile.cpp \
|
||||
|
@ -47,7 +47,7 @@ generic_sources = \
|
|||
gui_rpc_client_ops.cpp \
|
||||
gui_rpc_client_print.cpp \
|
||||
hostinfo.cpp \
|
||||
md5.c \
|
||||
md5.cpp \
|
||||
md5_file.cpp \
|
||||
mem_usage.cpp \
|
||||
mfile.cpp \
|
||||
|
|
|
@ -205,10 +205,6 @@ wrapper.o: $(BOINC_SRC)/samples/wrapper/wrapper.cpp
|
|||
%.o: $(BOINC_SRC)/samples/wrapper/%.c
|
||||
$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
|
||||
|
||||
# C-mode file
|
||||
md5.o: $(BOINC_SRC)/lib/md5.c
|
||||
$(CXX) -c $(BOINC_SRC)/lib/md5.c -o md5.o $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
||||
# for boinc_zip. Don't change the order!
|
||||
zip:
|
||||
mkdir -p $@
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -111,7 +111,7 @@
|
|||
DD3E14F70A774397007E0084 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DD3E14FD0A774397007E0084 /* Mac_GUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDA9D3BB09189A8C0060E7A7 /* Mac_GUI.cpp */; };
|
||||
DD3E14FE0A774397007E0084 /* MainDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C41607C5D13E0098A04D /* MainDocument.cpp */; };
|
||||
DD3E14FF0A774397007E0084 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DD3E14FF0A774397007E0084 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DD3E15000A774397007E0084 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DD3E15010A774397007E0084 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
|
||||
DD3E15020A774397007E0084 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
|
||||
|
@ -151,7 +151,7 @@
|
|||
DD407A5307D2FB7C00163EF5 /* diagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BA207C5AE5A0043025C /* diagnostics.cpp */; };
|
||||
DD407A5507D2FB8400163EF5 /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
|
||||
DD407A5807D2FB8D00163EF5 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DD407A5B07D2FBA000163EF5 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DD407A5B07D2FBA000163EF5 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DD407A5D07D2FBA300163EF5 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DD407A5F07D2FBAE00163EF5 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
|
||||
DD407A6207D2FBB300163EF5 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
|
||||
|
@ -295,7 +295,7 @@
|
|||
DD8917A50F3B207E00DE5B1C /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
|
||||
DD8917A70F3B208500DE5B1C /* gui_rpc_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.cpp */; };
|
||||
DD8917AB0F3B209500DE5B1C /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DD8917AE0F3B20B100DE5B1C /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DD8917AE0F3B20B100DE5B1C /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DD8917B00F3B20B500DE5B1C /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DD8917B80F3B20C600DE5B1C /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
|
||||
DD8917BA0F3B20CC00DE5B1C /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
|
||||
|
@ -429,7 +429,7 @@
|
|||
DDD74DC607CF492C0065AC9D /* diagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BA207C5AE5A0043025C /* diagnostics.cpp */; };
|
||||
DDD74DC707CF492D0065AC9D /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
|
||||
DDD74DC807CF492E0065AC9D /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DDD74DCB07CF49310065AC9D /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DDD74DCB07CF49310065AC9D /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DDD74DCC07CF49320065AC9D /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DDD74DCD07CF49330065AC9D /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
|
||||
DDD74DCE07CF49390065AC9D /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
|
||||
|
@ -488,13 +488,13 @@
|
|||
DDFA61860CB3489E0037B88C /* str_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7BF7D70B8E7A9800A009F7 /* str_util.cpp */; };
|
||||
DDFA61890CB348A90037B88C /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD479031AF001018E201A /* util.cpp */; };
|
||||
DDFA618C0CB348C50037B88C /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DDFA618F0CB348E80037B88C /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DDFA618F0CB348E80037B88C /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DDFA61900CB348E90037B88C /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DDFA61920CB349020037B88C /* proxy_info.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BEF07C5B1770043025C /* proxy_info.cpp */; };
|
||||
DDFA61940CB349160037B88C /* prefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BE407C5B1670043025C /* prefs.cpp */; };
|
||||
DDFD5F0F0818F2EE002B23D4 /* gui_rpc_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.cpp */; };
|
||||
DDFD5F270818F329002B23D4 /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
|
||||
DDFD5F280818F33C002B23D4 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.c */; };
|
||||
DDFD5F280818F33C002B23D4 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159562029EB02001F5651B /* md5.cpp */; };
|
||||
DDFD5F290818F346002B23D4 /* md5_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5159564029EB02001F5651B /* md5_file.cpp */; };
|
||||
DDFD5F2A0818F34F002B23D4 /* mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD207C5B1150043025C /* mfile.cpp */; };
|
||||
DDFD5F2B0818F359002B23D4 /* miofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BD507C5B1150043025C /* miofile.cpp */; };
|
||||
|
@ -1175,7 +1175,7 @@
|
|||
DDFE854A0B60CFD0009B43D9 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = ../../../../../System/Library/Frameworks/AppKit.framework; sourceTree = SOURCE_ROOT; };
|
||||
DDFF2AD30A53D4AE002BC19D /* setprojectgrp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = setprojectgrp; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DDFF2AE80A53D599002BC19D /* setprojectgrp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setprojectgrp.cpp; sourceTree = "<group>"; };
|
||||
F5159562029EB02001F5651B /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../lib/md5.c; sourceTree = SOURCE_ROOT; };
|
||||
F5159562029EB02001F5651B /* md5.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = md5.cpp; path = ../lib/md5.cpp; sourceTree = SOURCE_ROOT; };
|
||||
F5159563029EB02001F5651B /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../lib/md5.h; sourceTree = SOURCE_ROOT; };
|
||||
F5159564029EB02001F5651B /* md5_file.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = md5_file.cpp; sourceTree = "<group>"; };
|
||||
F5159565029EB02001F5651B /* md5_file.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5_file.h; path = ../lib/md5_file.h; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -1806,7 +1806,7 @@
|
|||
DD344BB607C5AEEE0043025C /* hostinfo.cpp */,
|
||||
DD344BB707C5AEEE0043025C /* hostinfo.h */,
|
||||
DDA6BCED0BD4546D008F7921 /* mac */,
|
||||
F5159562029EB02001F5651B /* md5.c */,
|
||||
F5159562029EB02001F5651B /* md5.cpp */,
|
||||
F5159563029EB02001F5651B /* md5.h */,
|
||||
F5159564029EB02001F5651B /* md5_file.cpp */,
|
||||
F5159565029EB02001F5651B /* md5_file.h */,
|
||||
|
@ -2828,7 +2828,7 @@
|
|||
DD3E14F70A774397007E0084 /* hostinfo.cpp in Sources */,
|
||||
DD3E14FD0A774397007E0084 /* Mac_GUI.cpp in Sources */,
|
||||
DD3E14FE0A774397007E0084 /* MainDocument.cpp in Sources */,
|
||||
DD3E14FF0A774397007E0084 /* md5.c in Sources */,
|
||||
DD3E14FF0A774397007E0084 /* md5.cpp in Sources */,
|
||||
DD3E15000A774397007E0084 /* md5_file.cpp in Sources */,
|
||||
DD3E15010A774397007E0084 /* mfile.cpp in Sources */,
|
||||
DD3E15020A774397007E0084 /* miofile.cpp in Sources */,
|
||||
|
@ -2927,7 +2927,7 @@
|
|||
DD52C81208B5D44E008D9AA4 /* gui_rpc_client_ops.cpp in Sources */,
|
||||
DD52C81308B5D44F008D9AA4 /* gui_rpc_client_print.cpp in Sources */,
|
||||
DD407A5807D2FB8D00163EF5 /* hostinfo.cpp in Sources */,
|
||||
DD407A5B07D2FBA000163EF5 /* md5.c in Sources */,
|
||||
DD407A5B07D2FBA000163EF5 /* md5.cpp in Sources */,
|
||||
DD407A5D07D2FBA300163EF5 /* md5_file.cpp in Sources */,
|
||||
DD407ABB07D2FC7D00163EF5 /* mem_usage.cpp in Sources */,
|
||||
DD407A5F07D2FBAE00163EF5 /* mfile.cpp in Sources */,
|
||||
|
@ -3075,7 +3075,7 @@
|
|||
DD8917A50F3B207E00DE5B1C /* filesys.cpp in Sources */,
|
||||
DD8917A70F3B208500DE5B1C /* gui_rpc_client.cpp in Sources */,
|
||||
DD8917AB0F3B209500DE5B1C /* hostinfo.cpp in Sources */,
|
||||
DD8917AE0F3B20B100DE5B1C /* md5.c in Sources */,
|
||||
DD8917AE0F3B20B100DE5B1C /* md5.cpp in Sources */,
|
||||
DD8917B00F3B20B500DE5B1C /* md5_file.cpp in Sources */,
|
||||
DD8917B80F3B20C600DE5B1C /* mfile.cpp in Sources */,
|
||||
DD8917BA0F3B20CC00DE5B1C /* miofile.cpp in Sources */,
|
||||
|
@ -3115,7 +3115,7 @@
|
|||
DD73E3B608A07FC600656EB1 /* gui_rpc_client_ops.cpp in Sources */,
|
||||
DDFD5F270818F329002B23D4 /* filesys.cpp in Sources */,
|
||||
DD73E3A708A07CA600656EB1 /* hostinfo.cpp in Sources */,
|
||||
DDFD5F280818F33C002B23D4 /* md5.c in Sources */,
|
||||
DDFD5F280818F33C002B23D4 /* md5.cpp in Sources */,
|
||||
DDFD5F290818F346002B23D4 /* md5_file.cpp in Sources */,
|
||||
DDFD5F2A0818F34F002B23D4 /* mfile.cpp in Sources */,
|
||||
DDFD5F2B0818F359002B23D4 /* miofile.cpp in Sources */,
|
||||
|
@ -3240,7 +3240,7 @@
|
|||
DD73E36E08A0720500656EB1 /* gui_rpc_server_ops.cpp in Sources */,
|
||||
DDD74DC807CF492E0065AC9D /* hostinfo.cpp in Sources */,
|
||||
DD33C70408B5BEDE00768630 /* http_curl.cpp in Sources */,
|
||||
DDD74DCB07CF49310065AC9D /* md5.c in Sources */,
|
||||
DDD74DCB07CF49310065AC9D /* md5.cpp in Sources */,
|
||||
DDD74DCC07CF49320065AC9D /* md5_file.cpp in Sources */,
|
||||
DDD74DCD07CF49330065AC9D /* mfile.cpp in Sources */,
|
||||
DDD74DCE07CF49390065AC9D /* miofile.cpp in Sources */,
|
||||
|
@ -3315,7 +3315,7 @@
|
|||
DDFA61860CB3489E0037B88C /* str_util.cpp in Sources */,
|
||||
DDFA61890CB348A90037B88C /* util.cpp in Sources */,
|
||||
DDFA618C0CB348C50037B88C /* hostinfo.cpp in Sources */,
|
||||
DDFA618F0CB348E80037B88C /* md5.c in Sources */,
|
||||
DDFA618F0CB348E80037B88C /* md5.cpp in Sources */,
|
||||
DDFA61900CB348E90037B88C /* md5_file.cpp in Sources */,
|
||||
DDFA61920CB349020037B88C /* proxy_info.cpp in Sources */,
|
||||
DDFA61940CB349160037B88C /* prefs.cpp in Sources */,
|
||||
|
|
|
@ -35,14 +35,14 @@ def make_uuid():
|
|||
def md5_file(path):
|
||||
"""
|
||||
Return a 16-digit MD5 hex digest of a file's contents
|
||||
Read the file in chunks
|
||||
Read the file in chunks
|
||||
"""
|
||||
|
||||
chunk = 8096
|
||||
|
||||
try:
|
||||
checksum = md5()
|
||||
except NameError:
|
||||
except TypeError:
|
||||
checksum = md5.new()
|
||||
|
||||
fp = open(path, 'r')
|
||||
|
@ -78,6 +78,9 @@ def get_output_file_path(filename):
|
|||
"""
|
||||
config = configxml.default_config()
|
||||
fanout = long(config.config.uldl_dir_fanout)
|
||||
s = md5.new(filename).hexdigest()[1:8]
|
||||
try:
|
||||
s = md5(filename).hexdigest()[1:8]
|
||||
except TypeError:
|
||||
s = md5.new(filename).hexdigest()[1:8]
|
||||
x = long(s, 16)
|
||||
return "%s/%x/%s" % (config.config.upload_dir, x % fanout, filename)
|
||||
return "%s/%x/%s" % (config.config.upload_dir, x % fanout, filename)
|
||||
|
|
|
@ -363,7 +363,7 @@
|
|||
<ClCompile Include="..\lib\gui_rpc_client.cpp" />
|
||||
<ClCompile Include="..\lib\gui_rpc_client_ops.cpp" />
|
||||
<ClCompile Include="..\lib\hostinfo.cpp" />
|
||||
<ClCompile Include="..\lib\md5.c" />
|
||||
<ClCompile Include="..\lib\md5.cpp" />
|
||||
<ClCompile Include="..\lib\md5_file.cpp" />
|
||||
<ClCompile Include="..\lib\mfile.cpp" />
|
||||
<ClCompile Include="..\lib\miofile.cpp" />
|
||||
|
|
|
@ -321,10 +321,7 @@
|
|||
<ClCompile Include="..\lib\filesys.cpp" />
|
||||
<ClCompile Include="..\lib\hostinfo.cpp" />
|
||||
<ClCompile Include="..\lib\idlemon_win.cpp" />
|
||||
<ClCompile Include="..\lib\md5.c">
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
|
||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\md5.cpp" />
|
||||
<ClCompile Include="..\lib\md5_file.cpp" />
|
||||
<ClCompile Include="..\lib\mfile.cpp" />
|
||||
<ClCompile Include="..\lib\miofile.cpp" />
|
||||
|
|
|
@ -924,6 +924,7 @@
|
|||
<col def="S0">Target</col>
|
||||
<col def="I4">ExtendedType</col>
|
||||
<col def="S255">ISComments</col>
|
||||
<row><td>CAAnnounceUpgrade</td><td>1</td><td>NewBinary6</td><td>AnnounceUpgrade</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>1</td><td>NewBinary6</td><td>CleanupOldBinaries</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>1</td><td>NewBinary6</td><td>CreateAcctMgrLoginFile</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>1</td><td>NewBinary6</td><td>CreateBOINCAccounts</td><td/><td/></row>
|
||||
|
@ -4051,6 +4052,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>AllocateRegistrySpace</td><td>NOT Installed</td><td>1563</td><td>AllocateRegistrySpace</td><td/></row>
|
||||
<row><td>AppSearch</td><td/><td>400</td><td>AppSearch</td><td/></row>
|
||||
<row><td>BindImage</td><td/><td>4300</td><td>BindImage</td><td/></row>
|
||||
<row><td>CAAnnounceUpgrade</td><td>VersionNT And REMOVE <> "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>REMOVE <> "ALL"</td><td>796</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>NOT Installed</td><td>6605</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1546</td><td/><td/></row>
|
||||
|
@ -4069,7 +4071,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>CAGrantBOINCProjectsVirtualBoxRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1561</td><td/><td/></row>
|
||||
<row><td>CAGrantBOINCUsersRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1557</td><td/><td/></row>
|
||||
<row><td>CARestorePermissionBOINCData</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>6611</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1002</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCAdminsRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1555</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCMasterRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1548</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCProjectRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1551</td><td/><td/></row>
|
||||
|
@ -4542,6 +4544,7 @@ VwBlAGIAAQBXAEUAQgB4ADgANgA=
|
|||
<row><td>IS_PROGMSG_XML_UPDATE_FILE</td><td>##IDS_PROGMSG_XML_UPDATE_FILE##</td><td/></row>
|
||||
<row><td>InstallChoice</td><td>AR</td><td/></row>
|
||||
<row><td>LAUNCHPROGRAM</td><td>1</td><td/></row>
|
||||
<row><td>MSIRESTARTMANAGERCONTROL</td><td>Disable</td><td/></row>
|
||||
<row><td>Manufacturer</td><td>##COMPANY_NAME##</td><td/></row>
|
||||
<row><td>MsiHiddenProperties</td><td>BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD</td><td/></row>
|
||||
<row><td>MsiLogging</td><td>voicewarmup</td><td/></row>
|
||||
|
|
|
@ -924,6 +924,7 @@
|
|||
<col def="S0">Target</col>
|
||||
<col def="I4">ExtendedType</col>
|
||||
<col def="S255">ISComments</col>
|
||||
<row><td>CAAnnounceUpgrade</td><td>1</td><td>NewBinary6</td><td>AnnounceUpgrade</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>1</td><td>NewBinary6</td><td>CleanupOldBinaries</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>1</td><td>NewBinary6</td><td>CreateAcctMgrLoginFile</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>1</td><td>NewBinary6</td><td>CreateBOINCAccounts</td><td/><td/></row>
|
||||
|
@ -4052,6 +4053,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>AllocateRegistrySpace</td><td>NOT Installed</td><td>1562</td><td>AllocateRegistrySpace</td><td/></row>
|
||||
<row><td>AppSearch</td><td/><td>400</td><td>AppSearch</td><td/></row>
|
||||
<row><td>BindImage</td><td/><td>4300</td><td>BindImage</td><td/></row>
|
||||
<row><td>CAAnnounceUpgrade</td><td>VersionNT And REMOVE <> "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>REMOVE <> "ALL"</td><td>796</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>NOT Installed</td><td>6605</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1546</td><td/><td/></row>
|
||||
|
@ -4070,7 +4072,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>CAGrantBOINCProjectsVirtualBoxRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1560</td><td/><td/></row>
|
||||
<row><td>CAGrantBOINCUsersRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1556</td><td/><td/></row>
|
||||
<row><td>CARestorePermissionBOINCData</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>6611</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1002</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCAdminsRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1554</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCMasterRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1548</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCProjectRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1550</td><td/><td/></row>
|
||||
|
@ -4543,6 +4545,7 @@ VwBlAGIAAQBXAEUAQgB4ADgANgA=
|
|||
<row><td>IS_PROGMSG_XML_UPDATE_FILE</td><td>##IDS_PROGMSG_XML_UPDATE_FILE##</td><td/></row>
|
||||
<row><td>InstallChoice</td><td>AR</td><td/></row>
|
||||
<row><td>LAUNCHPROGRAM</td><td>1</td><td/></row>
|
||||
<row><td>MSIRESTARTMANAGERCONTROL</td><td>Disable</td><td/></row>
|
||||
<row><td>Manufacturer</td><td>##COMPANY_NAME##</td><td/></row>
|
||||
<row><td>MsiHiddenProperties</td><td>BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD</td><td/></row>
|
||||
<row><td>MsiLogging</td><td>voicewarmup</td><td/></row>
|
||||
|
|
|
@ -924,6 +924,7 @@
|
|||
<col def="S0">Target</col>
|
||||
<col def="I4">ExtendedType</col>
|
||||
<col def="S255">ISComments</col>
|
||||
<row><td>CAAnnounceUpgrade</td><td>1</td><td>NewBinary6</td><td>AnnounceUpgrade</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>1</td><td>NewBinary6</td><td>CleanupOldBinaries</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>1</td><td>NewBinary6</td><td>CreateAcctMgrLoginFile</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>1</td><td>NewBinary6</td><td>CreateBOINCAccounts</td><td/><td/></row>
|
||||
|
@ -4050,6 +4051,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>AllocateRegistrySpace</td><td>NOT Installed</td><td>1562</td><td>AllocateRegistrySpace</td><td/></row>
|
||||
<row><td>AppSearch</td><td/><td>400</td><td>AppSearch</td><td/></row>
|
||||
<row><td>BindImage</td><td/><td>4300</td><td>BindImage</td><td/></row>
|
||||
<row><td>CAAnnounceUpgrade</td><td>VersionNT And REMOVE <> "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>REMOVE <> "ALL"</td><td>796</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>NOT Installed</td><td>6605</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1546</td><td/><td/></row>
|
||||
|
@ -4068,7 +4070,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>CAGrantBOINCProjectsVirtualBoxRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1560</td><td/><td/></row>
|
||||
<row><td>CAGrantBOINCUsersRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1556</td><td/><td/></row>
|
||||
<row><td>CARestorePermissionBOINCData</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>6612</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1002</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCAdminsRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1554</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCMasterRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1548</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCProjectRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1550</td><td/><td/></row>
|
||||
|
@ -4541,6 +4543,7 @@ VwBlAGIAAQBXAEUAQgB4ADYANAA=
|
|||
<row><td>IS_PROGMSG_XML_UPDATE_FILE</td><td>##IDS_PROGMSG_XML_UPDATE_FILE##</td><td/></row>
|
||||
<row><td>InstallChoice</td><td>AR</td><td/></row>
|
||||
<row><td>LAUNCHPROGRAM</td><td>1</td><td/></row>
|
||||
<row><td>MSIRESTARTMANAGERCONTROL</td><td>Disable</td><td/></row>
|
||||
<row><td>Manufacturer</td><td>##COMPANY_NAME##</td><td/></row>
|
||||
<row><td>MsiHiddenProperties</td><td>BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD</td><td/></row>
|
||||
<row><td>MsiLogging</td><td>voicewarmup</td><td/></row>
|
||||
|
|
|
@ -924,6 +924,7 @@
|
|||
<col def="S0">Target</col>
|
||||
<col def="I4">ExtendedType</col>
|
||||
<col def="S255">ISComments</col>
|
||||
<row><td>CAAnnounceUpgrade</td><td>1</td><td>NewBinary6</td><td>AnnounceUpgrade</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>1</td><td>NewBinary6</td><td>CleanupOldBinaries</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>1</td><td>NewBinary6</td><td>CreateAcctMgrLoginFile</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>1</td><td>NewBinary6</td><td>CreateBOINCAccounts</td><td/><td/></row>
|
||||
|
@ -4051,6 +4052,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>AllocateRegistrySpace</td><td>NOT Installed</td><td>1562</td><td>AllocateRegistrySpace</td><td/></row>
|
||||
<row><td>AppSearch</td><td/><td>400</td><td>AppSearch</td><td/></row>
|
||||
<row><td>BindImage</td><td/><td>4300</td><td>BindImage</td><td/></row>
|
||||
<row><td>CAAnnounceUpgrade</td><td>VersionNT And REMOVE <> "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CACleanupOldBinaries</td><td>REMOVE <> "ALL"</td><td>796</td><td/><td/></row>
|
||||
<row><td>CACreateAcctMgrLoginFile</td><td>NOT Installed</td><td>6605</td><td/><td/></row>
|
||||
<row><td>CACreateBOINCAccounts</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1546</td><td/><td/></row>
|
||||
|
@ -4069,7 +4071,7 @@ Click Advanced to customize.</td><td>0</td><td/><td>1427879980</td></row>
|
|||
<row><td>CAGrantBOINCProjectsVirtualBoxRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1560</td><td/><td/></row>
|
||||
<row><td>CAGrantBOINCUsersRights</td><td>VersionNT And REMOVE <> "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1556</td><td/><td/></row>
|
||||
<row><td>CARestorePermissionBOINCData</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>6612</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1001</td><td/><td/></row>
|
||||
<row><td>CARestoreSetupState</td><td>VersionNT And REMOVE = "ALL"</td><td>1002</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCAdminsRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1554</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCMasterRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1548</td><td/><td/></row>
|
||||
<row><td>CARevokeBOINCProjectRights</td><td>VersionNT And REMOVE = "ALL" AND ENABLEPROTECTEDAPPLICATIONEXECUTION3 = 1</td><td>1550</td><td/><td/></row>
|
||||
|
@ -4542,6 +4544,7 @@ VwBlAGIAAQBXAEUAQgB4ADYANAA=
|
|||
<row><td>IS_PROGMSG_XML_UPDATE_FILE</td><td>##IDS_PROGMSG_XML_UPDATE_FILE##</td><td/></row>
|
||||
<row><td>InstallChoice</td><td>AR</td><td/></row>
|
||||
<row><td>LAUNCHPROGRAM</td><td>1</td><td/></row>
|
||||
<row><td>MSIRESTARTMANAGERCONTROL</td><td>Disable</td><td/></row>
|
||||
<row><td>Manufacturer</td><td>##COMPANY_NAME##</td><td/></row>
|
||||
<row><td>MsiHiddenProperties</td><td>BOINC_MASTER_PASSWORD;BOINC_PROJECT_PASSWORD</td><td/></row>
|
||||
<row><td>MsiLogging</td><td>voicewarmup</td><td/></row>
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,84 @@
|
|||
// Berkeley Open Infrastructure for Network Computing
|
||||
// http://boinc.berkeley.edu
|
||||
// Copyright (C) 2005 University of California
|
||||
//
|
||||
// This is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation;
|
||||
// either version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This software is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU Lesser General Public License for more details.
|
||||
//
|
||||
// To view the GNU Lesser General Public License visit
|
||||
// http://www.gnu.org/copyleft/lesser.html
|
||||
// or write to the Free Software Foundation, Inc.,
|
||||
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "boinccas.h"
|
||||
#include "CAAnnounceUpgrade.h"
|
||||
|
||||
#define CUSTOMACTION_NAME _T("CAAnnounceUpgrade")
|
||||
#define CUSTOMACTION_PROGRESSTITLE _T("Announce the new BOINC version to all components.")
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function:
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
CAAnnounceUpgrade::CAAnnounceUpgrade(MSIHANDLE hMSIHandle) :
|
||||
BOINCCABase(hMSIHandle, CUSTOMACTION_NAME, CUSTOMACTION_PROGRESSTITLE)
|
||||
{}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function:
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
CAAnnounceUpgrade::~CAAnnounceUpgrade()
|
||||
{
|
||||
BOINCCABase::~BOINCCABase();
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function:
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
UINT CAAnnounceUpgrade::OnExecution()
|
||||
{
|
||||
return SetUpgradeParameters();
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function: AnnounceUpgrade
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
UINT __stdcall AnnounceUpgrade(MSIHANDLE hInstall)
|
||||
{
|
||||
UINT uiReturnValue = 0;
|
||||
|
||||
CAAnnounceUpgrade* pCA = new CAAnnounceUpgrade(hInstall);
|
||||
uiReturnValue = pCA->Execute();
|
||||
delete pCA;
|
||||
|
||||
return uiReturnValue;
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
// Berkeley Open Infrastructure for Network Computing
|
||||
// http://boinc.berkeley.edu
|
||||
// Copyright (C) 2005 University of California
|
||||
//
|
||||
// This is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation;
|
||||
// either version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This software is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU Lesser General Public License for more details.
|
||||
//
|
||||
// To view the GNU Lesser General Public License visit
|
||||
// http://www.gnu.org/copyleft/lesser.html
|
||||
// or write to the Free Software Foundation, Inc.,
|
||||
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
|
||||
#ifndef _CAANNOUNCEUPGRADE_H_
|
||||
#define _CAANNOUNCEUPGRADE_H_
|
||||
|
||||
|
||||
class CAAnnounceUpgrade : public BOINCCABase
|
||||
{
|
||||
public:
|
||||
|
||||
CAAnnounceUpgrade(MSIHANDLE hMSIHandle);
|
||||
~CAAnnounceUpgrade();
|
||||
virtual UINT OnExecution();
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -75,6 +75,20 @@ UINT CADeleteBOINCAccounts::OnExecution()
|
|||
if ( uiReturnValue ) return uiReturnValue;
|
||||
|
||||
|
||||
if (IsUpgrading())
|
||||
{
|
||||
LogMessage(
|
||||
INSTALLMESSAGE_INFO,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_T("Upgrade detected, no need to delete accounts")
|
||||
);
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
// Delete 'boinc_master' account
|
||||
//
|
||||
nasReturnValue = NetUserDel(
|
||||
|
|
|
@ -64,6 +64,21 @@ UINT CADeleteBOINCGroups::OnExecution()
|
|||
{
|
||||
NET_API_STATUS nasReturnValue;
|
||||
|
||||
|
||||
if (IsUpgrading())
|
||||
{
|
||||
LogMessage(
|
||||
INSTALLMESSAGE_INFO,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_T("Upgrade detected, no need to delete groups")
|
||||
);
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
// Delete the 'boinc_admins'
|
||||
//
|
||||
nasReturnValue = NetLocalGroupDel(
|
||||
|
|
|
@ -126,6 +126,66 @@ UINT BOINCCABase::Execute()
|
|||
}
|
||||
|
||||
|
||||
static BOOL IsVersionNewer(const tstring v1, const tstring v2) {
|
||||
int v1_maj=0, v1_min=0, v1_rel=0;
|
||||
int v2_maj=0, v2_min=0, v2_rel=0;
|
||||
|
||||
_stscanf(v1.c_str(), _T("%d.%d.%d"), &v1_maj, &v1_min, &v1_rel);
|
||||
_stscanf(v2.c_str(), _T("%d.%d.%d"), &v2_maj, &v2_min, &v2_rel);
|
||||
|
||||
if (v1_maj > v2_maj) return TRUE;
|
||||
if (v1_maj < v2_maj) return FALSE;
|
||||
if (v1_min > v2_min) return TRUE;
|
||||
if (v1_min < v2_min) return FALSE;
|
||||
if (v1_rel > v2_rel) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function: SetUpgradeParameters
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
UINT BOINCCABase::SetUpgradeParameters()
|
||||
{
|
||||
tstring strCurrentProductVersion;
|
||||
UINT uiReturnValue = 0;
|
||||
|
||||
uiReturnValue = GetProperty( _T("ProductVersion"), strCurrentProductVersion );
|
||||
if ( uiReturnValue ) return uiReturnValue;
|
||||
|
||||
uiReturnValue = SetRegistryValue( _T("UpgradingTo"), strCurrentProductVersion );
|
||||
if ( uiReturnValue ) return uiReturnValue;
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function: IsUpgrading
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
BOOL BOINCCABase::IsUpgrading()
|
||||
{
|
||||
tstring strCurrentProductVersion;
|
||||
tstring strRegistryProductVersion;
|
||||
UINT uiReturnValue = 0;
|
||||
|
||||
uiReturnValue = GetProperty( _T("ProductVersion"), strCurrentProductVersion );
|
||||
if ( uiReturnValue ) return FALSE;
|
||||
|
||||
uiReturnValue = GetRegistryValue( _T("UpgradingTo"), strRegistryProductVersion );
|
||||
if ( uiReturnValue ) return FALSE;
|
||||
|
||||
return IsVersionNewer(strRegistryProductVersion, strCurrentProductVersion);
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Function: OnInitialize
|
||||
|
|
|
@ -49,3 +49,4 @@ EXPORTS
|
|||
RevokeBOINCUsersRights
|
||||
DeleteBOINCGroups
|
||||
DeleteBOINCAccounts
|
||||
AnnounceUpgrade
|
|
@ -48,6 +48,9 @@ public:
|
|||
// Called when we are being executed from the InstallUISequence
|
||||
virtual UINT OnExecution();
|
||||
|
||||
//
|
||||
UINT SetUpgradeParameters();
|
||||
BOOL IsUpgrading();
|
||||
|
||||
// Registry Property Management
|
||||
UINT GetRegistryValue(
|
||||
|
|
Binary file not shown.
|
@ -265,7 +265,7 @@
|
|||
</ClCompile>
|
||||
<ClCompile Include="..\lib\hostinfo.cpp" />
|
||||
<ClCompile Include="..\lib\idlemon_win.cpp" />
|
||||
<ClCompile Include="..\lib\md5.c" />
|
||||
<ClCompile Include="..\lib\md5.cpp" />
|
||||
<ClCompile Include="..\lib\md5_file.cpp" />
|
||||
<ClCompile Include="..\lib\mem_usage.cpp" />
|
||||
<ClCompile Include="..\lib\mfile.cpp">
|
||||
|
|
|
@ -220,7 +220,7 @@
|
|||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\hostinfo.cpp" />
|
||||
<ClCompile Include="..\lib\md5.c" />
|
||||
<ClCompile Include="..\lib\md5.cpp" />
|
||||
<ClCompile Include="..\lib\md5_file.cpp" />
|
||||
<ClCompile Include="..\lib\mem_usage.cpp" />
|
||||
<ClCompile Include="..\lib\mfile.cpp">
|
||||
|
|
Loading…
Reference in New Issue