From: <kr_...@us...> - 2003-04-26 10:01:23
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK In directory sc8-pr-cvs1:/tmp/cvs-serv4266/port/src/cbits/GTK Modified Files: FileDialog.c Log Message: The InputFileDialog, OutputFileDialog and SelectDirectory dialogs has extended functionality Index: FileDialog.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/FileDialog.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FileDialog.c 2 Apr 2003 19:32:07 -0000 1.4 --- FileDialog.c 26 Apr 2003 10:00:47 -0000 1.5 *************** *** 2,8 **** #include "Internals.h" ! char *osSelectDirectory() { ! GtkWidget *file_selector = gtk_file_selection_new("Select directory"); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); --- 2,8 ---- #include "Internals.h" ! char *osSelectDirectory(char *title) { ! GtkWidget *file_selector = gtk_file_selection_new(title); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); *************** *** 39,45 **** } ! char *osSelectInputFile() { ! GtkWidget *file_selector = gtk_file_selection_new("Open"); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); --- 39,45 ---- } ! char *osSelectInputFile(char *title, char *filter) { ! GtkWidget *file_selector = gtk_file_selection_new(title); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); *************** *** 90,96 **** } ! char *osSelectOutputFile(char *promptptr, char *nameptr) { ! GtkWidget *file_selector = gtk_file_selection_new(promptptr); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); --- 90,173 ---- } ! char *osSelectInputFiles(char *title, char *filter) { ! GtkWidget *file_selector = gtk_file_selection_new(title); ! gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); ! gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(file_selector), gtk_true()); ! ! for (;;) ! { ! if (gtk_dialog_run(GTK_DIALOG(file_selector)) == GTK_RESPONSE_OK) ! { ! int pos_size; ! gchar *buffer; ! gchar **fname, **files = gtk_file_selection_get_selections(GTK_FILE_SELECTION(file_selector)); ! ! pos_size = 1; ! for (fname = files; *fname; fname++) ! { ! if (!g_file_test(*fname, G_FILE_TEST_EXISTS)) ! { ! GtkWidget *dialog = ! gtk_message_dialog_new (GTK_WINDOW(file_selector), ! GTK_DIALOG_DESTROY_WITH_PARENT, ! GTK_MESSAGE_ERROR, ! GTK_BUTTONS_OK, ! "%s file not found", ! *fname); ! gtk_dialog_run (GTK_DIALOG (dialog)); ! gtk_widget_destroy (dialog); ! break; ! } ! ! if (g_file_test(*fname, G_FILE_TEST_IS_DIR)) ! { ! GtkWidget *dialog = ! gtk_message_dialog_new (GTK_WINDOW(file_selector), ! GTK_DIALOG_DESTROY_WITH_PARENT, ! GTK_MESSAGE_ERROR, ! GTK_BUTTONS_OK, ! "Path %s is a directory", ! *fname); ! gtk_dialog_run (GTK_DIALOG (dialog)); ! gtk_widget_destroy (dialog); ! break; ! } ! ! pos_size += strlen(*fname)+1; ! } ! ! if (*fname) ! { ! g_strfreev(files); ! continue; ! } ! ! buffer = malloc(pos_size); ! if (!buffer) ! return NULL; ! ! pos_size = 0; ! for (fname = files; *fname; fname++) ! { ! strcpy(buffer+pos_size,*fname); ! pos_size += strlen(*fname)+1; ! } ! ! gtk_widget_destroy(file_selector); ! g_strfreev(files); ! return buffer; ! } ! else ! { ! gtk_widget_destroy(file_selector); ! return NULL; ! } ! } ! } ! ! char *osSelectOutputFile(char *title, char *filter, char *nameptr) ! { ! GtkWidget *file_selector = gtk_file_selection_new(title); gtk_window_set_transient_for(GTK_WINDOW(file_selector), GTK_WINDOW(gFrameWidget)); |