#include "gettext.h"
#include "draw.h"
-#ifdef __APPLE__
+#ifdef OSXAPP
# include <gtkmacintegration/gtkosxapplication.h>
// prevent pathname of positional file argument provided by OS X being be mistaken for option name
// (price is that we won't recognize Windows option format anymore).
void update_ics_width P(());
int CopyMemoProc P(());
static gboolean EventProc P((GtkWidget *widget, GdkEvent *event, gpointer g));
+static int FindLogo P((char *place, char *name, char *buf));
#ifdef TODO_GTK
#if ENABLE_NLS
return gdk_pixbuf_new_from_file(buf, NULL);
}
-#ifdef __APPLE__
+#ifdef OSXAPP
static char clickedFile[MSG_SIZ];
static int suppress;
/* set up GTK */
gtk_init (&argc, &argv);
-#ifdef __APPLE__
+#ifdef OSXAPP
{ // prepare to catch OX OpenFile signal, which will tell us the clicked file
char *path = gtkosx_application_get_bundle_path();
#ifdef ENABLE_NLS
snprintf(localeDir, MSG_SIZ, "%s/share/locale", res_path); // redefine locale dir for OSX bundle
#endif
theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
- strncpy(dataDir, path, MSG_SIZ);
snprintf(masterSettings, MSG_SIZ, "%s/Contents/Resources/etc/xboard.conf", path);
- snprintf(svgDir, MSG_SIZ, "%s/Contents/Resources/share/xboard/themes/default", path);
+ snprintf(dataDir, MSG_SIZ, "%s/Contents/Resources/share/xboard", path);
+ snprintf(svgDir, MSG_SIZ, "%s/themes/default", dataDir);
suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends signal even if name was already argv[1]!
g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL);
// we must call application ready before we can get the signal,
layoutName = "normalLayout";
}
+ if(appData.logoSize) appData.logoSize = boardWidth/4-3;
wpMain.width = -1; // prevent popup sizes window
optList = BoardPopUp(squareSize, lineGap, (void*)
#ifdef TODO_GTK
if(appData.logoSize)
{ // locate and read user logo
- char buf[MSG_SIZ];
- snprintf(buf, MSG_SIZ, "%s/%s.png", appData.logoDir, UserName());
+ char buf[MSG_SIZ], name[MSG_SIZ];
+ snprintf(name, MSG_SIZ, "/home/%s", UserName());
+ if(!FindLogo(name, ".logo", buf))
+ FindLogo(appData.logoDir, name + 6, buf);
ASSIGN(userLogo, buf);
}
void
ManProc ()
{ // called from menu
-#ifdef __APPLE__
+#ifdef OSXAPP
char buf[MSG_SIZ];
snprintf(buf, MSG_SIZ, "%s ./man.command", appData.sysOpen);
system(buf);
GdkPixbuf *pm = *clockIcons[color];
if (mainwindowIcon != pm) {
mainwindowIcon = pm;
-#ifdef __APPLE__
+#ifdef OSXAPP
gtkosx_application_set_dock_icon_pixbuf(theApp, mainwindowIcon);
#else
gtk_window_set_icon(GTK_WINDOW(shellWidget), mainwindowIcon);
#endif
+static int
+FindLogo (char *place, char *name, char *buf)
+{ // check if file exists in given place
+ FILE *f;
+ if(!place) return 0;
+ snprintf(buf, MSG_SIZ, "%s/%s.png", place, name);
+ if(*place && strcmp(place, ".") && (f = fopen(buf, "r")) ) {
+ fclose(f);
+ return 1;
+ }
+ return 0;
+}
+
static void
LoadLogo (ChessProgramState *cps, int n, Boolean ics)
{
char buf[MSG_SIZ], *logoName = buf;
- FILE *f;
if(appData.logo[n][0]) {
logoName = appData.logo[n];
} else if(appData.autoLogo) {
if(ics) { // [HGM] logo: in ICS mode second can be used for ICS
sprintf(buf, "%s/%s.png", appData.logoDir, appData.icsHost);
- } else { // engine; look in engine-dir (if any) first
- snprintf(buf, MSG_SIZ, "%s/logo.png", appData.directory[n]);
- if(appData.directory[n] && appData.directory[n][0]
- && strcmp(appData.directory[n], ".") && (f = fopen(buf, "r")) )
- fclose(f);
- else // no engine dir or no logo.png in it: look in logo dir
- if(appData.logoDir && appData.logoDir[0])
- sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy);
+ } else { // engine; cascade
+ if(!FindLogo(appData.logoDir, cps->tidy, buf) && // first try user log folder
+ !FindLogo(appData.directory[n], "logo", buf) && // then engine directory
+ !FindLogo("/usr/local/share/games/plugins/logos", cps->tidy, buf) ) // then system folders
+ FindLogo("/usr/share/games/plugins/logos", cps->tidy, buf);
}
}
if(logoName[0])