diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 9d0b002..fc0db76 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -86,6 +86,18 @@ void yon_storage_config_update(storage_config_window *window){ // filechooser window section +void on_file_chooser_entry_changed(GtkEntry *self, file_chooser_window *window){ + const char *text = gtk_entry_get_text(self); + GtkFileFilter *filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(window->FileChooserWidget)); + gtk_file_chooser_remove_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter); + filter = gtk_file_filter_new(); + char *pattern = !yon_char_is_empty(text)?yon_char_unite("*",text,"*.pkg.tar*[^.sig]",NULL) : "*.pkg.tar*[^.sig]"; + gtk_file_filter_add_pattern(filter,pattern); + gtk_file_filter_set_name(filter,"*.pkg.tar*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter); + if (!yon_char_is_empty(text)) free(pattern); +} + file_chooser_window *yon_file_chooser_window_new(){ file_chooser_window *window = malloc(sizeof(file_chooser_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_filechooser); @@ -97,6 +109,7 @@ file_chooser_window *yon_file_chooser_window_new(){ window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry"); window->FileChooserWidget = yon_gtk_builder_get_widget(builder,"FileChooserWidget"); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->NameEntry),"changed",G_CALLBACK(on_file_chooser_entry_changed),window); return window; }