new developer release
[xboard.git] / interface.c
1 #include "config.h"
2
3 #include <stdio.h>
4 #include <ctype.h>
5 #include <signal.h>
6 #include <errno.h>
7 #include <sys/types.h>
8 #include <sys/stat.h>
9 #include <pwd.h>
10
11 #include <gtk/gtk.h>
12 #include <gdk-pixbuf/gdk-pixbuf.h>
13
14 #include "common.h"
15 #include "frontend.h"
16 #include "backend.h"
17 #include "moves.h"
18 #include "xboard.h"
19 #include "childio.h"
20 #include "xgamelist.h"
21 #include "xhistory.h"
22 #include "xedittags.h"
23 #include "gettext.h"
24 #include "callback.h"
25
26 #ifdef ENABLE_NLS
27 # define  _(s) gettext (s)
28 # define N_(s) gettext_noop (s)
29 #else
30 # define  _(s) (s)
31 # define N_(s)  s
32 #endif
33
34 extern GtkWidget *GUI_Window;
35
36
37 GdkPixbuf *load_pixbuf(char *filename,int size)
38 {
39   GdkPixbuf *image;
40
41   if(size)
42     image = gdk_pixbuf_new_from_file_at_size(filename,size,size,NULL);
43   else
44     image = gdk_pixbuf_new_from_file(filename,NULL);
45   
46   if(image == NULL)
47     {
48       fprintf(stderr,_("Error: couldn't load file: %s\n"),filename);
49       exit(1);
50     }
51   return image;
52 }
53
54 void
55 FileNamePopUp(label, def, proc, openMode)
56      char *label;
57      char *def;
58      FileProc proc;
59      char *openMode;
60 {
61   /* TODO:
62    *   implement look for certain file types
63    *   use save/load button depending on what function is calling
64    */
65
66   GtkWidget *dialog;
67
68   dialog = gtk_file_chooser_dialog_new (label,
69                                         GTK_WINDOW(GUI_Window),
70                                         GTK_FILE_CHOOSER_ACTION_OPEN,
71                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
72                                         GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
73                                         NULL);
74   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
75     {
76       char *filename;
77       FILE *f;
78
79       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
80
81       //see loadgamepopup
82       f = fopen(filename, openMode);
83       if (f == NULL) 
84         {
85           DisplayError(_("Failed to open file"), errno);
86         }
87       else 
88         {
89           /* TODO add indec */
90           (*proc)(f, 0, filename);
91         }
92       g_free (filename);
93     };
94   
95   gtk_widget_destroy (dialog);
96   ModeHighlight();
97   
98   return;
99
100 }