summaryrefslogtreecommitdiff
path: root/saedit/interface.c
blob: 0984cbd6c1c982a45b54285fa4b3bc01f870587f (plain) (blame)
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
118
119
120
121
122
123
124
/*=======================================*\
|  ____                         ____      |
| /    \         /\            |          |
| \____         /  \           |____      |
|      \       /____\          |          |
| \____/prite /      \nimation |____ditor |
|                                         |
|      Copyleft Vasily_Makarov 2011       |
|                                         |
\*=======================================*/

GtkWidget *reload_menu_item = NULL;
GtkWidget *find_dialog = NULL;
GtkWidget *toolbar = 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_DIALOG(gtk_file_chooser_dialog_new(_("Save file as..."), GTK_WINDOW(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(GTK_TEXT_BUFFER(source_buffer), &start, &end);
	gtk_text_buffer_delete(GTK_TEXT_BUFFER(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"));

	//Setup GtkToolbar
	toolbar = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar"));

	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 GtkMessageDialog
	parsing_error_dialog = GTK_WIDGET(gtk_builder_get_object(builder, "parsing-error-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);
}