3 #include "constantstrings.h"
4 #include "wordblox_resource.c"
15 /* slot for drawing the puzzle */
16 gboolean
on_puzzle_area_draw (GtkWidget
*widget
, cairo_t
*cr
, gpointer data
)
18 /* if a puzzle is loaded */
19 if (app_data
.is_loaded
== true)
21 GdkRGBA colorfore
, colorback
;
22 gdk_rgba_parse (&colorfore
, "#000000");
23 gdk_rgba_parse (&colorback
, "#ffffff");
24 cairo_set_line_width (cr
, 3);
26 /* set the size of the drawing area */
27 gtk_widget_set_size_request (widget
, app_data
.puzzle
.grid_size
*30+5,
28 app_data
.puzzle
.grid_size
*30+5);
31 for (int i
= 0; i
< app_data
.puzzle
.grid_size
; i
++)
33 for (int j
= 0; j
< app_data
.puzzle
.grid_size
; j
++)
35 cairo_rectangle (cr
, j
*30+5, i
*30+5, 30, 30);
36 gdk_cairo_set_source_rgba (cr
, &colorfore
);
39 /* if it is not a blank grid then set the background color
41 if (app_data
.puzzle
.chars
[i
][j
] != '#')
42 gdk_cairo_set_source_rgba (cr
, &colorback
);
44 cairo_rectangle (cr
, j
*30+5, i
*30+5, 30, 30);
55 /* slot for exit menu */
56 void on_menu_exit_activate (GtkMenuItem
*item
, gpointer data
)
61 /* slot for open menu */
62 void on_menu_open_activate (GtkMenuItem
*item
, GtkDrawingArea
* area
)
65 GtkFileChooserAction action
= GTK_FILE_CHOOSER_ACTION_OPEN
;
67 dialog
= gtk_file_chooser_dialog_new (OPEN_FILE
, GTK_WINDOW(window
), action
,
73 res
= gtk_dialog_run (GTK_DIALOG (dialog
));
74 if (res
== GTK_RESPONSE_ACCEPT
)
77 filename
= gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog
));
78 app_data
.puzzle
= load_puzzle (filename
);
79 app_data
.is_loaded
= true;
80 strcpy (app_data
.filename
, filename
);
81 /* if the grid is not frozen then the game cannot be played */
82 if (app_data
.puzzle
.grid_frozen
== false)
85 errordlg
= gtk_message_dialog_new (GTK_WINDOW(window
),
86 GTK_DIALOG_DESTROY_WITH_PARENT
,
89 UNFROZEN_GRID_PLAYER
);
90 gtk_dialog_run (GTK_DIALOG(errordlg
));
91 gtk_widget_destroy (errordlg
);
92 app_data
.is_loaded
= false;
95 gtk_widget_queue_draw_area (GTK_WIDGET (area
), 0, 0, 305, 305);
100 gtk_widget_destroy (dialog
);
103 /* slot for about menu */
104 void on_menu_about_activate (GtkMenuItem
*item
, gpointer data
)
106 const char *AUTHOR
[] = {"V.Harishankar", NULL
};
107 gtk_show_about_dialog (GTK_WINDOW(window
), "authors",AUTHOR
,
108 "program-name", PROGRAM_NAME
,
109 "copyright", COPYRIGHT
,
110 "comments", COMMENTS
,
112 "website-label", WEBSITE_LABEL
,
113 "license-type", GTK_LICENSE_GPL_2_0
,
118 int main (int argc
, char *argv
[])
120 gtk_init (&argc
, &argv
);
122 icon
= gdk_pixbuf_new_from_resource
123 ("/org/harishankar/wordblox/wordblox.svg", NULL
);
125 fprintf (stderr
, ERROR_ICON
);
128 builder
= gtk_builder_new ();
129 guint ret
= gtk_builder_add_from_resource (builder
,
130 "/org/harishankar/wordblox/wordblox_player.glade", NULL
);
132 app_data
.is_loaded
= false;
136 fprintf (stderr
, ERROR_WINDOW
);
137 g_object_unref (builder
);
142 window
= GTK_WIDGET (gtk_builder_get_object (builder
, "main_window") );
145 gtk_window_set_default_icon (icon
);
147 gtk_builder_connect_signals (builder
, NULL
);
148 g_object_unref (builder
);
149 gtk_widget_show (window
);
155 g_object_unref (builder
);
156 fprintf (stderr
, ERROR_WINDOW
);