X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=2857317072282c7499103ce64901918ba8540318;hb=0a3919ff10a347a8d840f75fd2c816efe52e5098;hp=8270d52da0d65c19c0479886408850657635d615;hpb=6f01cd3e57fc068f24d8075c1dbb87ebef635e6a;p=xboard.git diff --git a/xboard.c b/xboard.c index 8270d52..2857317 100644 --- a/xboard.c +++ b/xboard.c @@ -63,6 +63,7 @@ #include #include #include +#include #if !OMIT_SOCKETS # if HAVE_SYS_SOCKET_H @@ -290,6 +291,7 @@ XtAppContext appContext; #else void *shellWidget, *formWidget, *boardWidget, *titleWidget, *dropMenu, *menuBarWidget; void *appContext; +GtkWidget *mainwindow; #endif Option *optList; // contains all widgets of main window char *layoutName; @@ -635,13 +637,7 @@ CatchDeleteWindow (Widget w, String procname) void BoardToTop () { -#ifdef TODO_GTK - Arg args[16]; - XtSetArg(args[0], XtNiconic, False); - XtSetValues(shellWidget, args, 1); - - XtPopup(shellWidget, XtGrabNone); /* Raise if lowered */ -#endif + gtk_window_present(GTK_WINDOW(mainwindow)); } //--------------------------------------------------------------------------------------------------------- @@ -1076,12 +1072,12 @@ main (int argc, char **argv) #ifdef TODO_GTK XSetWindowAttributes window_attributes; Arg args[16]; - Dimension boardWidth, boardHeight, w, h; #else - int boardWidth, boardHeight, w, h; #endif + Dimension boardWidth, boardHeight, w, h; char *p; int forceMono = False; + GError *gtkerror=NULL; srandom(time(0)); // [HGM] book: make random truly random @@ -1099,6 +1095,9 @@ main (int argc, char **argv) exit(0); } + /* set up GTK */ + gtk_init (&argc, &argv); + programName = strrchr(argv[0], '/'); if (programName == NULL) programName = argv[0]; @@ -1106,10 +1105,9 @@ main (int argc, char **argv) programName++; #ifdef ENABLE_NLS - XtSetLanguageProc(NULL, NULL, NULL); - if (appData.debugMode) { - fprintf(debugFP, "locale = %s\n", setlocale(LC_ALL, NULL)); - } +// if (appData.debugMode) { +// fprintf(debugFP, "locale = %s\n", setlocale(LC_ALL, NULL)); +// } bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -1156,6 +1154,12 @@ main (int argc, char **argv) setbuf(debugFP, NULL); } +#if ENABLE_NLS + if (appData.debugMode) { + fprintf(debugFP, "locale = %s\n", setlocale(LC_ALL, NULL)); + } +#endif + /* [HGM,HR] make sure board size is acceptable */ if(appData.NrFiles > BOARD_FILES || appData.NrRanks > BOARD_RANKS ) @@ -1171,6 +1175,16 @@ main (int argc, char **argv) InitPosition(FALSE); #ifdef TODO_GTK + /* GTK */ + builder = gtk_builder_new(); + filename = get_glade_filename ("mainboard.glade"); + if(! gtk_builder_add_from_file (builder, filename, >kerror) ) + { + if(gtkerror) + printf ("Error: %d %s\n",gtkerror->code,gtkerror->message); + } + mainwindow = GTK_WIDGET(gtk_builder_get_object (builder, "mainwindow")); + shellWidget = XtAppInitialize(&appContext, "XBoard", shellOptions, XtNumber(shellOptions), @@ -1225,6 +1239,14 @@ main (int argc, char **argv) DisplayHeight(xDisplay, xScreen) < szd->minScreenSize) { szd++; } +#else + GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(mainwindow)); + guint screenwidth = gdk_screen_get_width(screen); + guint screenheight = gdk_screen_get_height(screen); + while (screenwidth < szd->minScreenSize || + screenheight < szd->minScreenSize) { + szd++; + } #endif if (szd->name == NULL) szd--; appData.boardSize = strdup(szd->name); // [HGM] settings: remember name for saving settings @@ -1452,9 +1474,11 @@ main (int argc, char **argv) // XtSetKeyboardFocus(shellWidget, formWidget); #ifdef TODO_GTK XSetInputFocus(xDisplay, XtWindow(formWidget), RevertToPointerRoot, CurrentTime); - - XtAppMainLoop(appContext); #endif + + /* check for GTK events and process them */ + gtk_main(); + if (appData.debugMode) fclose(debugFP); // [DM] debug return 0; }