summaryrefslogtreecommitdiff
path: root/saedit/interface.c
blob: cda749337045260cd0fbb123b1138029a6b59d11 (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
/*=======================================*\
|  ____                         ____      |
| /    \         /\            |          |
| \____         /  \           |____      |
|      \       /____\          |          |
| \____/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);
}