#include <gtk/gtk.h>
#include "common.h"
+#include "xboard.h"
#include <errno.h>
#include "backend.h"
# define N_(s) s
#endif
-
extern GtkWidget *about;
extern GtkWidget *GUI_Window;
+extern GtkWidget *GUI_Aspect;
+extern GtkWidget *GUI_Menubar;
+extern GtkWidget *GUI_Timer;
+extern GtkWidget *GUI_Buttonbar;
+extern GtkWidget *GUI_Board;
extern char *programVersion;
extern int errorExitStatus;
extern int fromY;
extern int toX;
extern int toY;
+extern int squareSize,lineGap;
+
+gboolean
+ExposeProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ /* do resizing to a fixed aspect ratio */
+ GtkRequisition w;
+ int totalh=0,nw,nh;
+ float ratio;
+ int boardWidth,boardHeight,old,new;
+
+ nw=GTK_WIDGET(object)->allocation.width;
+ nh=GTK_WIDGET(object)->allocation.height;
+
+ old=squareSize;
+ squareSize = nw/(BOARD_WIDTH*1.05+0.05);
+
+ if(old!=squareSize)
+ {
+ lineGap = squareSize*0.05;
+
+ boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);
+ boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
+
+ /* get the height of the menus, etc. and calculate the aspect ratio */
+ gtk_widget_size_request(GTK_WIDGET(GUI_Menubar), &w);
+ totalh += w.height;
+ gtk_widget_size_request(GTK_WIDGET(GUI_Timer), &w);
+ totalh += w.height;
+ gtk_widget_size_request(GTK_WIDGET(GUI_Buttonbar), &w);
+ totalh += w.height;
+
+ ratio = ((float)totalh+boardHeight)/((float)boardWidth) ;
+
+ gtk_widget_set_size_request(GTK_WIDGET(GUI_Board),
+ boardWidth,boardHeight);
+
+ gtk_aspect_frame_set (GTK_ASPECT_FRAME(GUI_Aspect),0,0,ratio,TRUE);
+
+ /* recreate pieces with new size... TODO: keep svg in memory and just recreate pixmap instead of reloading files */
+ CreatePieces();
+ }
+ return FALSE; /* return false, so that other expose events are called too */
+}
void
QuitProc (object, user_data)
ExitEvent(0);
}
+/* Help Menu */
+void InfoProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ char buf[MSG_SIZ];
+ snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &",
+ INFODIR, INFOFILE);
+ system(buf);
+ return;
+}
+
+void ManProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ char buf[MSG_SIZ];
+ snprintf(buf, sizeof(buf), "xterm -e man xboard &");
+ system(buf);
+ return;
+}
+
+void HintProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ HintEvent();
+ return;
+}
+
+void BookProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ BookEvent();
+ return;
+}
+
void AboutProc (object, user_data)
GtkObject *object;
gpointer user_data;
gtk_widget_destroy(about);
}
+/* End Help Menu */
+
void IcsClientProc(object, user_data)
GtkObject *object;
gpointer user_data;
return;
}
+/*
+ * File menu
+ */
+
void LoadNextGameProc(object, user_data)
GtkObject *object;
gpointer user_data;
return;
}
+
+void LoadNextPositionProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ ReloadPosition(1);
+ return;
+}
+
+void LoadPrevPositionProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ ReloadPosition(-1);
+ return;
+}
+
+void ReloadPositionProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ ReloadPosition(0);
+ return;
+}
+
+
+/* End File Menu */
+
void MachineWhiteProc(object, user_data)
GtkObject *object;
gpointer user_data;
return;
}
+/* Option Menu */
+void AutocommProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoComment = !appData.autoComment;
+ return;
+}
+
+void AutoflagProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoCallFlag = !appData.autoCallFlag;
+ return;
+}
+
+void AutoflipProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoFlipView = !appData.autoFlipView;
+ return;
+}
+
+void ShowThinkingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.showThinking = !appData.showThinking;
+ ShowThinkingEvent();
+
+ return;
+}
+
+void HideThinkingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.hideThinkingFromHuman = !appData.hideThinkingFromHuman;
+ ShowThinkingEvent();
+
+ return;
+}
+
+void FlipViewProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ flipView = !flipView;
+ DrawPosition(True, NULL);
+ return;
+}
+
+
gboolean CloseWindowProc(GtkWidget *button)
{
gtk_widget_destroy(gtk_widget_get_toplevel(button));
gpointer user_data;
{
ResetGameEvent();
- AnalysisPopDown();
+ EngineOutputPopDown();
}
void WhiteClockProc(object, user_data)
//see loadgamepopup
f = fopen(filename, "rb");
- if (f == NULL) {
- DisplayError(_("Failed to open file"), errno);
- } else {
- /* TODO add indec */
- (void) LoadGamePopUp(f, 0, filename);
- }
+ if (f == NULL)
+ {
+ DisplayError(_("Failed to open file"), errno);
+ }
+ else
+ {
+ /* TODO add indec */
+ (void) LoadGamePopUp(f, 0, filename);
+ }
g_free (filename);
- }
+ };
+
gtk_widget_destroy (dialog);
ModeHighlight();
+
+ return;
}
return;
}
+void GetMoveListProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.getMoveList = !appData.getMoveList;
+
+ if (appData.getMoveList)
+ {
+ GetMoveListEvent();
+ }
+
+ // gets set automatically? if we set it with set_active we end up in an endless loop switching between 0 and 1
+ // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (object),(gboolean) appData.getMoveList );
+
+ return;
+}