1.1 --- a/src/gui/gui.c Thu Dec 08 13:38:00 2005 +0000
1.2 +++ b/src/gui/gui.c Thu Dec 15 13:33:14 2005 +0000
1.7 +#include "dreamcast.h"
1.10 #include "sh4dasm.h"
1.12 GdkColor clrNormal, clrChanged, clrError, clrWarn, clrPC, clrDebug, clrTrace;
1.13 PangoFontDescription *fixed_list_font;
1.15 -void open_file_callback(GtkWidget *btn, gpointer user_data);
1.16 -void open_file_canceled(GtkWidget *btn, gpointer user_data);
1.17 -void open_file( char *filename );
1.18 +void open_file_callback(GtkWidget *btn, gint result, gpointer user_data);
1.23 dump_win_update_all();
1.27 -void open_file_callback(GtkWidget *btn, gpointer user_data) {
1.28 - GtkFileSelection *file = GTK_FILE_SELECTION(user_data);
1.29 - gchar *filename = strdup( gtk_file_selection_get_filename(
1.30 - GTK_FILE_SELECTION(file) ) );
1.31 - gtk_widget_destroy(GTK_WIDGET(file));
1.32 - open_file( filename );
1.34 +void open_file_callback(GtkWidget *btn, gint result, gpointer user_data) {
1.35 + GtkFileChooser *file = GTK_FILE_CHOOSER(user_data);
1.36 + if( result == GTK_RESPONSE_ACCEPT ) {
1.37 + gchar *filename =gtk_file_chooser_get_filename(
1.38 + GTK_FILE_CHOOSER(file) );
1.39 + file_callback_t action = (file_callback_t)gtk_object_get_data( GTK_OBJECT(file), "file_action" );
1.40 + gtk_widget_destroy(GTK_WIDGET(file));
1.41 + action( filename );
1.44 + gtk_widget_destroy(GTK_WIDGET(file));
1.48 -void open_file_canceled(GtkWidget *btn, gpointer user_data) {
1.49 - gtk_widget_destroy(GTK_WIDGET(user_data));
1.50 +static void add_file_pattern( GtkFileChooser *chooser, char *pattern, char *patname )
1.52 + if( pattern != NULL ) {
1.53 + GtkFileFilter *filter = gtk_file_filter_new();
1.54 + gtk_file_filter_add_pattern( filter, pattern );
1.55 + gtk_file_filter_set_name( filter, patname );
1.56 + gtk_file_chooser_add_filter( chooser, filter );
1.57 + filter = gtk_file_filter_new();
1.58 + gtk_file_filter_set_name( filter, "All files" );
1.59 + gtk_file_filter_add_pattern( filter, "*" );
1.60 + gtk_file_chooser_add_filter( chooser, filter );
1.64 -void open_file_dialog( void )
1.65 +void open_file_dialog( char *title, file_callback_t action, char *pattern, char *patname )
1.69 - file = gtk_file_selection_new( "Open..." );
1.70 - gtk_signal_connect( GTK_OBJECT(GTK_FILE_SELECTION(file)->ok_button),
1.71 - "clicked", GTK_SIGNAL_FUNC(open_file_callback), file );
1.72 - gtk_signal_connect( GTK_OBJECT(GTK_FILE_SELECTION(file)->cancel_button),
1.73 - "clicked", GTK_SIGNAL_FUNC(open_file_canceled), file );
1.74 + file = gtk_file_chooser_dialog_new( title, NULL,
1.75 + GTK_FILE_CHOOSER_ACTION_OPEN,
1.76 + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1.77 + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
1.79 + add_file_pattern( GTK_FILE_CHOOSER(file), pattern, patname );
1.80 + g_signal_connect( GTK_OBJECT(file), "response",
1.81 + GTK_SIGNAL_FUNC(open_file_callback), file );
1.82 + gtk_object_set_data( GTK_OBJECT(file), "file_action", action );
1.83 + gtk_widget_show( file );
1.86 +void save_file_dialog( char *title, file_callback_t action, char *pattern, char *patname )
1.90 + file = gtk_file_chooser_dialog_new( title, NULL,
1.91 + GTK_FILE_CHOOSER_ACTION_SAVE,
1.92 + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1.93 + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
1.95 + add_file_pattern( GTK_FILE_CHOOSER(file), pattern, patname );
1.96 + g_signal_connect( GTK_OBJECT(file), "response",
1.97 + GTK_SIGNAL_FUNC(open_file_callback), file );
1.98 + gtk_object_set_data( GTK_OBJECT(file), "file_action", action );
1.99 gtk_widget_show( file );