--- a/cnd.makeproject/samples_src/freeway/FreewayWindow.h Tue Nov 17 21:27:46 2009 +0300 +++ a/cnd.makeproject/samples_src/freeway/FreewayWindow.h Thu Nov 19 00:33:16 2009 +0300 @@ -146,6 +146,7 @@ extern void file_load(); extern void file_save(); extern void file_saveas(); +extern void show_message(const char *,const char *); extern void file_close(); extern void fwy_start(); extern void fwy_stop(); --- a/cnd.makeproject/samples_src/freeway/callbacks.cc Tue Nov 17 21:27:46 2009 +0300 +++ a/cnd.makeproject/samples_src/freeway/callbacks.cc Thu Nov 19 00:33:16 2009 +0300 @@ -38,7 +38,7 @@ // Handler for "Load..." menu item void file_load() -{ +{ GtkWidget *dialog = gtk_file_chooser_dialog_new("Freeway Load File", window.getShell(), GTK_FILE_CHOOSER_ACTION_OPEN, @@ -49,25 +49,30 @@ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); traffic_do_load(filename); g_free(filename); + gtk_widget_destroy(dialog); + show_message("Load","Load successful"); + } else { + gtk_widget_destroy(dialog); } } -// Handler for "Save" menu item +// Handler for "Save" menu item void file_save() -{ +{ if (!traffic_current_file) { file_saveas(); } else { traffic_do_save(traffic_current_file); + show_message("Save","Save complete"); } } // Handler for "Save As..." menu item void file_saveas() -{ - GtkWidget *dialog = gtk_file_chooser_dialog_new("Freeway Save File", +{ + GtkWidget *dialog = gtk_file_chooser_dialog_new("Freeway Save File", window.getShell(), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, @@ -75,16 +80,33 @@ NULL); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - traffic_do_load(filename); + traffic_do_save(filename); g_free(filename); + gtk_widget_destroy(dialog); + show_message("Save","Save successful"); + } else { + gtk_widget_destroy(dialog); } } +void +show_message(const char* header_name,const char* message) +{ + GtkWidget *dialog = gtk_dialog_new_with_buttons(header_name, window.getShell(), + GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_NONE, NULL); + GtkWidget *label = gtk_label_new(message); + g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_set_usize(dialog,220,120); + gtk_widget_show_all(dialog); +} + // Handler for "Close" menu item void file_close() { traffic_file_close(); + show_message("Close","File closed"); } // Handler for "About.." help-menu item