1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
/*=======================================*\
| ____ ____ |
| / \ /\ | |
| \____ / \ |____ |
| \ /____\ | |
| \____/prite / \nimation |____ditor |
| |
| Copyleft Vasily_Makarov 2011 |
| |
\*=======================================*/
GtkWidget *reload_menu_item = NULL;
GtkWidget *find_dialog = NULL;
void find_menu_item_activate_callback(GtkWidget *menuitem, gpointer user_data) {
gtk_dialog_run(GTK_DIALOG(find_dialog));
}
void save_dialog_response_callback(GtkWidget *dialog, gint response_id, gpointer user_data) {
if (response_id == GTK_RESPONSE_ACCEPT) {
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (filename != NULL) {
save_to_xml_file(filename);
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(xml_file_chooser_button), filename);
}
}
gtk_widget_destroy(dialog);
}
void save_dialog_show() {
GtkDialog *dialog = gtk_file_chooser_dialog_new(_("Save file as..."), win, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
g_signal_connect(dialog, "response", G_CALLBACK(save_dialog_response_callback), NULL);
gtk_dialog_run(dialog);
}
void save_menu_item_activate_callback(GtkWidget *menuitem, GtkWidget *fsdialog) {
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(xml_file_chooser_button));
if (filename != NULL)
save_to_xml_file(filename);
else
save_dialog_show();
}
void xml_file_save_button_callback(GtkWidget *button, gpointer user_data) {
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(xml_file_chooser_button));
if (filename != NULL)
save_to_xml_file(filename);
}
void file_new() {
GtkTextIter start, end;
gtk_text_buffer_get_bounds(source_buffer, &start, &end);
gtk_text_buffer_delete(source_buffer, &start, &end);
gchar *temp;
if (g_file_get_contents(FILE_TEMPLATE, &temp, NULL, NULL))
gtk_text_buffer_set_text(GTK_TEXT_BUFFER(source_buffer), temp, -1);
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(xml_file_chooser_button), "");
gtk_widget_set_sensitive(reload_menu_item, FALSE);
free_current_info();
}
void set_up_interface() {
GtkBuilder *builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "interface.ui", NULL);
gtk_builder_connect_signals(builder, NULL);
//Setup main window
win = GTK_WIDGET(gtk_builder_get_object(builder, "win_main"));
//Setup GtkSourceView
GtkSourceLanguageManager *langman = gtk_source_language_manager_get_default();
source_buffer = gtk_source_buffer_new_with_language(gtk_source_language_manager_get_language(langman, "xml"));
source_view = GTK_WIDGET(gtk_builder_get_object(builder, "source_view"));
gtk_text_view_set_buffer(GTK_TEXT_VIEW(source_view), GTK_TEXT_BUFFER(source_buffer));
search_init(source_view);
//Setup GtkScrolledWindow
GtkWidget *scrolled_window = NULL;
scrolled_window = GTK_WIDGET(gtk_builder_get_object(builder, "scrolledwindow1"));
gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW(scrolled_window),
gtk_text_view_get_hadjustment(GTK_TEXT_VIEW(source_view)));
gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window),
gtk_text_view_get_vadjustment(GTK_TEXT_VIEW(source_view)));
//Setup GtkDrawingArea
darea = GTK_WIDGET(gtk_builder_get_object(builder, "darea1"));
reload_menu_item = GTK_WIDGET(gtk_builder_get_object(builder, "menuitem6"));
show_grid_menu_item = GTK_WIDGET(gtk_builder_get_object(builder, "menuitem11"));
imageset_preview_menu_item = GTK_WIDGET(gtk_builder_get_object(builder, "menuitem12"));
data_folder_chooser_button = GTK_WIDGET(gtk_builder_get_object(builder, "datafcbutton"));
xml_file_chooser_button = GTK_WIDGET(gtk_builder_get_object(builder, "xmlfcbutton"));
xml_file_open_button = GTK_WIDGET(gtk_builder_get_object(builder, "xmlfobutton"));
xml_file_save_button = GTK_WIDGET(gtk_builder_get_object(builder, "xmlfsbutton"));
gen_sae_info->imagesets_combo_box = GTK_WIDGET(gtk_builder_get_object(builder, "imagesetscbox"));
gen_sae_info->actions_combo_box = GTK_WIDGET(gtk_builder_get_object(builder, "actionscbox"));
gen_sae_info->animations_combo_box = GTK_WIDGET(gtk_builder_get_object(builder, "animationscbox"));
//Setup GtkAboutDialog
about_dialog = GTK_WIDGET(gtk_builder_get_object(builder, "about_dialog"));
//Setup Find dialog
find_dialog = GTK_WIDGET(gtk_builder_get_object(builder, "find_dialog"));
gtk_widget_hide(find_dialog);
file_new();
gtk_widget_show_all(win);
gtk_widget_show_all(source_view);
g_object_unref(builder);
}
|