1 #include "../Common/Common.h"
5 #include "DasherTypes.h"
6 #include "GtkDasherControl.h"
8 #include <glib/gi18n.h>
10 #include <libgnomeui/libgnomeui.h>
11 #include <libgnome/libgnome.h>
16 //extern GladeXML *widgets;
18 extern GtkWidget
*open_filesel
;
19 extern GtkWidget
*save_filesel
;
20 extern GtkWidget
*save_and_quit_filesel
;
21 extern GtkWidget
*import_filesel
;
22 extern GtkWidget
*append_filesel
;
23 static GtkWidget
*window
= NULL
; // TODO: fix
24 extern GtkWidget
*file_selector
;
26 static gchar
*filename
= "foo"; // TODO: fix
28 DasherEditor
*g_pEditor
= NULL
; // TODO: fix
30 extern "C" void select_save_file_as(GtkWidget
* widget
, gpointer user_data
);
34 #if GTK_CHECK_VERSION(2,3,0)
36 // extern "C" void select_new_file(GtkWidget *widget, gpointer user_data) {
37 // //FIXME - confirm this. We should check whether the user wants to lose their work.
39 // // TODO: Should just call a 'new' method in DasherEditor
40 // dasher_editor_generate_filename(g_pEditor);
41 // dasher_editor_clear(g_pEditor, false);
43 // // TODO: Reimplement
45 // // // Tell the widget we have a new buffer, and set the offset to 0
46 // // gtk_dasher_control_set_buffer(GTK_DASHER_CONTROL(pDasherWidget), 0);
48 // // // Starting a new file indicates a new user trial in detailed logging
49 // // gtk_dasher_user_log_new_trial(GTK_DASHER_CONTROL(pDasherWidget));
55 // #if GTK_CHECK_VERSION(2,3,0)
57 // extern "C" void select_open_file(GtkWidget *widget, gpointer user_data) {
58 // GtkWidget *filesel = gtk_file_chooser_dialog_new(_("Select File"), GTK_WINDOW(window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
61 // gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(filesel), FALSE);
64 // if(gtk_dialog_run(GTK_DIALOG(filesel)) == GTK_RESPONSE_ACCEPT) {
66 // char *filename = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(filesel));
68 // char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel));
70 // dasher_editor_open(g_pEditor, filename);
73 // gtk_widget_destroy(filesel);
78 // extern "C" void filesel_hide(GtkWidget *widget, gpointer user_data) {
79 // // FIXME - uh. Yes. This works, but is it in any way guaranteed to?
80 // // Of course, if glade let us set user_data stuff properly, this would
82 // gtk_widget_hide(gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(widget))));
85 // extern "C" void open_file_from_filesel(GtkWidget *selector2, GtkFileSelection *selector) {
86 // filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(selector));
87 // filesel_hide(GTK_WIDGET(selector->ok_button), NULL);
88 // dasher_editor_open(g_pEditor, filename);
91 // extern "C" void select_open_file(GtkWidget *widget, gpointer user_data) {
92 // if(open_filesel == NULL) {
93 // open_filesel = glade_xml_get_widget(widgets, "open_fileselector");
94 // g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(open_filesel)->ok_button), "clicked", G_CALLBACK(open_file_from_filesel), (gpointer) open_filesel);
96 // gtk_window_set_transient_for(GTK_WINDOW(open_filesel), GTK_WINDOW(window));
97 // gtk_window_present(GTK_WINDOW(open_filesel));
102 extern "C" void save_file(GtkWidget
*widget
, gpointer user_data
) {
103 if(filename
!= NULL
) {
104 dasher_editor_save_as(g_pEditor
, filename
,FALSE
); // FIXME - REIMPLEMENT
107 select_save_file_as(NULL
, NULL
);
111 #if GTK_CHECK_VERSION(2,3,0)
113 extern "C" void select_save_file_as(GtkWidget
*widget
, gpointer user_data
) {
114 GtkWidget
*filesel
= gtk_file_chooser_dialog_new(_("Select File"), GTK_WINDOW(window
), GTK_FILE_CHOOSER_ACTION_SAVE
, GTK_STOCK_SAVE
, GTK_RESPONSE_ACCEPT
, GTK_STOCK_CANCEL
, GTK_RESPONSE_CANCEL
, NULL
);
117 gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(filesel
), FALSE
);
120 if(gtk_dialog_run(GTK_DIALOG(filesel
)) == GTK_RESPONSE_ACCEPT
) {
122 char *filename
= gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(filesel
));
124 char *filename
= gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel
));
126 dasher_editor_save_as(g_pEditor
, filename
,FALSE
);
129 gtk_widget_destroy(filesel
);
134 extern "C" void save_file_from_filesel_and_quit(GtkWidget
*selector2
, GtkFileSelection
*selector
) {
135 filename
= gtk_file_selection_get_filename(GTK_FILE_SELECTION(selector
));
136 if(dasher_editor_save_as(g_pEditor
, filename
, FALSE
) == false) {
138 // FIXME - do we really just want to fail silently if the save operation fails?
149 extern "C" void save_file_from_filesel(GtkWidget
*selector2
, GtkFileSelection
*selector
) {
150 filename
= gtk_file_selection_get_filename(GTK_FILE_SELECTION(selector
));
151 filesel_hide(GTK_WIDGET(selector
->ok_button
), NULL
);
152 dasher_editor_save_as(g_pEditor
, filename
, FALSE
);
155 extern "C" void select_save_file_as(GtkWidget
*widget
, gpointer user_data
) {
156 if(save_filesel
== NULL
) {
157 save_filesel
= glade_xml_get_widget(widgets
, "save_fileselector");
158 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(save_filesel
)->ok_button
), "clicked", G_CALLBACK(save_file_from_filesel
), (gpointer
) save_filesel
);
162 gtk_file_selection_set_filename(GTK_FILE_SELECTION(save_filesel
), filename
);
163 gtk_window_set_transient_for(GTK_WINDOW(save_filesel
), GTK_WINDOW(window
));
164 gtk_window_present(GTK_WINDOW(save_filesel
));
169 #if GTK_CHECK_VERSION(2,3,0)
171 extern "C" void select_append_file(GtkWidget
*widget
, gpointer user_data
) {
172 GtkWidget
*filesel
= gtk_file_chooser_dialog_new(_("Select File"), GTK_WINDOW(window
), GTK_FILE_CHOOSER_ACTION_SAVE
, GTK_STOCK_SAVE
, GTK_RESPONSE_ACCEPT
, GTK_STOCK_CANCEL
, GTK_RESPONSE_CANCEL
, NULL
);
175 gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(filesel
), FALSE
);
178 if(gtk_dialog_run(GTK_DIALOG(filesel
)) == GTK_RESPONSE_ACCEPT
) {
180 char *filename
= gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(filesel
));
182 char *filename
= gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel
));
184 // dasher_editor_save_as(g_pEditor, filename,TRUE);// FIXME - REIMPLEMENT
187 gtk_widget_destroy(filesel
);
192 extern "C" void append_file_from_filesel(GtkWidget
*selector2
, GtkFileSelection
*selector
) {
193 filename
= gtk_file_selection_get_filename(GTK_FILE_SELECTION(selector
));
195 dasher_editor_save_as(g_pEditor
, filename
, TRUE
);
197 filesel_hide(GTK_WIDGET(selector
->ok_button
), NULL
);
200 extern "C" void select_append_file(GtkWidget
*widget
, gpointer user_data
) {
201 if(append_filesel
== NULL
) {
202 append_filesel
= glade_xml_get_widget(widgets
, "append_fileselector");
203 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(append_filesel
)->ok_button
), "clicked", G_CALLBACK(append_file_from_filesel
), (gpointer
) append_filesel
);
206 gtk_window_set_transient_for(GTK_WINDOW(append_filesel
), GTK_WINDOW(window
));
207 gtk_window_present(GTK_WINDOW(append_filesel
));
212 #if GTK_CHECK_VERSION(2,3,0)
214 extern "C" void select_import_file(GtkWidget
*widget
, gpointer user_data
) {
220 // Minimu GTK 2.4 now required
222 // extern "C" void import_file_from_filesel(GtkWidget *selector2, GtkFileSelection *selector) {
223 // filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(selector));
224 // // TODO: Reimplement
225 // // gtk_dasher_control_train(GTK_DASHER_CONTROL(pDasherWidget), filename);
226 // filesel_hide(GTK_WIDGET(selector->ok_button), NULL);
229 // extern "C" void select_import_file(GtkWidget *widget, gpointer user_data) {
230 // if(import_filesel == NULL) {
231 // import_filesel = glade_xml_get_widget(widgets, "import_fileselector");
233 // g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(import_filesel)->ok_button), "clicked", G_CALLBACK(import_file_from_filesel), (gpointer) import_filesel);
236 // gtk_window_set_transient_for(GTK_WINDOW(import_filesel), GTK_WINDOW(window));
237 // gtk_window_present(GTK_WINDOW(import_filesel));
242 #if !GTK_CHECK_VERSION(2,3,0)
244 // FIXME - I believe that this doesn't ever get called
246 extern "C" void select_save_file_as_and_quit(GtkWidget
*widget
, gpointer user_data
) {
247 if(save_and_quit_filesel
== NULL
) {
248 save_and_quit_filesel
= glade_xml_get_widget(widgets
, "save_and_quit_fileselector");
249 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(save_and_quit_filesel
)->ok_button
), "clicked", G_CALLBACK(save_file_from_filesel_and_quit
), (gpointer
) save_and_quit_filesel
);
253 gtk_file_selection_set_filename(GTK_FILE_SELECTION(save_and_quit_filesel
), filename
);
254 gtk_window_set_transient_for(GTK_WINDOW(save_and_quit_filesel
), GTK_WINDOW(window
));
255 gtk_window_present(GTK_WINDOW(save_and_quit_filesel
));
260 extern "C" void save_file_and_quit(GtkWidget
*widget
, gpointer user_data
) {
261 if(filename
!= NULL
) {
262 if (dasher_editor_save_as(g_pEditor
, filename
,FALSE
)==true) {
270 select_save_file_as(NULL
, NULL
);
275 extern "C" bool ask_save_before_exit(GtkWidget
*widget
, gpointer data
) {
281 // extern "C" void clipboard_cut(void) {
282 // dasher_editor_clipboard(g_pEditor, CLIPBOARD_CUT); // FIXME - give this a better name
285 // extern "C" void clipboard_copy(void) {
286 // dasher_editor_clipboard(g_pEditor, CLIPBOARD_COPY);
289 // extern "C" void clipboard_paste(void) {
290 // dasher_editor_clipboard(g_pEditor, CLIPBOARD_PASTE);
293 // extern "C" void clipboard_copy_all(void) {
294 // dasher_editor_clipboard(g_pEditor, CLIPBOARD_COPYALL);
297 extern "C" void on_menututorial_activate() {
298 dasher_editor_start_tutorial(g_pEditor
);
301 // Not actually on the menu, but should be?
303 // extern "C" void clipboard_select_all(void) {
304 // dasher_editor_clipboard(g_pEditor, CLIPBOARD_SELECTALL);
309 // 'Preferences' item is in Preferences.cpp
311 // Font selector options will be in their own file
313 // extern "C" void set_dasher_fontsize(GtkWidget *widget, gpointer user_data) {
314 // // if(GTK_TOGGLE_BUTTON(widget)->active == TRUE) {
315 // // if(!strcmp(gtk_widget_get_name(GTK_WIDGET(widget)), "fontsizenormal")) {
316 // // gtk_dasher_control_set_parameter_long(GTK_DASHER_CONTROL(pDasherWidget), LP_DASHER_FONTSIZE, Dasher::Opts::Normal);
318 // // else if(!strcmp(gtk_widget_get_name(GTK_WIDGET(widget)), "fontsizelarge")) {
319 // // gtk_dasher_control_set_parameter_long(GTK_DASHER_CONTROL(pDasherWidget), LP_DASHER_FONTSIZE, Dasher::Opts::Big);
321 // // else if(!strcmp(gtk_widget_get_name(GTK_WIDGET(widget)), "fontsizevlarge")) {
322 // // gtk_dasher_control_set_parameter_long(GTK_DASHER_CONTROL(pDasherWidget), LP_DASHER_FONTSIZE, Dasher::Opts::VBig);
327 // extern "C" void reset_fonts(GtkWidget *widget, gpointer user_data) {
328 // dasher_app_settings_reset(g_pDasherAppSettings, SP_DASHER_FONT);
329 // dasher_app_settings_reset(g_pDasherAppSettings, APP_SP_EDIT_FONT);
334 // extern "C" void about_dasher(GtkWidget *widget, gpointer user_data) {
335 // // Moved elsewhere
338 // // TODO: Need to hide menu item if GNOME_LIBS not defined
339 // extern "C" void show_help(GtkWidget *widget, gpointer user_data) {
340 // // Moved elsewhere