diff options
Diffstat (limited to 'saedit/interface.c')
-rw-r--r-- | saedit/interface.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/saedit/interface.c b/saedit/interface.c new file mode 100644 index 0000000..8238416 --- /dev/null +++ b/saedit/interface.c @@ -0,0 +1,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_lists(gen_sae_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); +} |