|
|
|
|
@ -64,41 +64,52 @@ void on_file_chooser_selected(GtkWidget *self, filechooser_window *window){
|
|
|
|
|
if (success_size) yon_char_parsed_free(paths_success,success_size);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
filechooser_window *__yon_filechooser_window = NULL;
|
|
|
|
|
|
|
|
|
|
void yon_file_chooser_set_button_label(char *label){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){
|
|
|
|
|
filechooser_window *window = malloc(sizeof(filechooser_window));
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_filechooser);
|
|
|
|
|
window->Window = yon_gtk_builder_get_widget(builder,"Window");
|
|
|
|
|
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
|
|
|
|
window->HeaderTopic = yon_gtk_builder_get_widget(builder,"HeaderTopic");
|
|
|
|
|
window->MainFileChooser = yon_gtk_builder_get_widget(builder,"MainFileChooser");
|
|
|
|
|
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
|
|
|
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
|
window->ChooseFolderCheck = yon_gtk_builder_get_widget(builder,"ChooseFolderCheck");
|
|
|
|
|
window->last_any_selection=NULL;
|
|
|
|
|
window->last_success_selection=NULL;
|
|
|
|
|
g_signal_connect(G_OBJECT(window->MainFileChooser),"selection-changed",G_CALLBACK(on_file_chooser_selected),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_file_chooser_cancel),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_file_chooser_accept),window);
|
|
|
|
|
|
|
|
|
|
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->MainFileChooser),action);
|
|
|
|
|
switch(action){
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER:
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_OPEN:
|
|
|
|
|
if (!__yon_filechooser_window){
|
|
|
|
|
filechooser_window *window = malloc(sizeof(filechooser_window));
|
|
|
|
|
__yon_filechooser_window = window;
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_filechooser);
|
|
|
|
|
window->Window = yon_gtk_builder_get_widget(builder,"Window");
|
|
|
|
|
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
|
|
|
|
window->HeaderTopic = yon_gtk_builder_get_widget(builder,"HeaderTopic");
|
|
|
|
|
window->MainFileChooser = yon_gtk_builder_get_widget(builder,"MainFileChooser");
|
|
|
|
|
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
|
|
|
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
|
window->ChooseFolderCheck = yon_gtk_builder_get_widget(builder,"ChooseFolderCheck");
|
|
|
|
|
window->last_any_selection=NULL;
|
|
|
|
|
window->last_success_selection=NULL;
|
|
|
|
|
g_signal_connect(G_OBJECT(window->MainFileChooser),"selection-changed",G_CALLBACK(on_file_chooser_selected),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_file_chooser_cancel),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_file_chooser_accept),window);
|
|
|
|
|
|
|
|
|
|
gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->MainFileChooser),action);
|
|
|
|
|
switch(action){
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER:
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_OPEN:
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_SAVE:
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER:
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ChooseFolderCheck),1);
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_SAVE:
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER:
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ChooseFolderCheck),1);
|
|
|
|
|
gtk_widget_hide(window->ChooseFolderCheck);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
return window;
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
return window;
|
|
|
|
|
} else {
|
|
|
|
|
return __yon_filechooser_window;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GtkResponseType yon_file_chooser_start(filechooser_window *window){
|
|
|
|
|
|