1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /* $Id: filesel.c,v 1.1 2001/04/14 20:01:15 kilobug Exp $ */
- #include "gtkutil.h"
- typedef struct _filesel_t
- {
- GtkEntry *entry;
- GtkWidget *filesel;
- } filesel_t;
- static void clean_filesel(GtkWidget *wid, filesel_t *file)
- {
- if (file->filesel != NULL)
- gtk_widget_destroy(file->filesel);
- g_free(file);
- }
- static void ok_filesel(GtkWidget *wid, filesel_t *file)
- {
- char *s;
- s = gtk_file_selection_get_filename(GTK_FILE_SELECTION(file->filesel));
- gtk_entry_set_text(file->entry, s);
- gtk_widget_hide(file->filesel);
- }
- GtkWidget *create_filesel_button(const char *label, const char *title,
- GtkEntry *entry)
- {
- GtkWidget *button;
- filesel_t *file;
- GtkFileSelection *fs;
- file = g_malloc(sizeof(*file));
- file->entry = entry;
- file->filesel = gtk_file_selection_new(title);
- gtk_widget_hide(file->filesel);
- fs = GTK_FILE_SELECTION(file->filesel);
- gtk_file_selection_hide_fileop_buttons(fs);
- gtk_signal_connect_object(GTK_OBJECT(fs->cancel_button), "clicked",
- gtk_widget_hide, GTK_OBJECT(file->filesel));
- gtk_signal_connect(GTK_OBJECT(fs->ok_button), "clicked", ok_filesel, file);
- button = gtk_button_new_with_label(label);
- gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
- gtk_widget_show, GTK_OBJECT(file->filesel));
- gtk_signal_connect_after(GTK_OBJECT(button), "destroy",
- clean_filesel, file);
- gtk_widget_show(button);
- return button;
- }
|