diff --git a/gui/gladish.ui b/gui/gladish.ui index 76517436..be8c9153 100644 --- a/gui/gladish.ui +++ b/gui/gladish.ui @@ -1635,23 +1635,12 @@ along with LADI Session Handler; if not, write to the Free Software Foundation, GTK_FILL - - - True - True - - True - - - 1 - 2 - - True True + Default is project directory name True @@ -1661,6 +1650,40 @@ along with LADI Session Handler; if not, write to the Free Software Foundation, 1 + + + 3 + True + + + True + True + + Default is ~/ladish-projects + True + + + 0 + + + + + True + image_save_project_open_dir + True + True + + + False + 1 + + + + + 1 + 2 + + False @@ -1873,4 +1896,68 @@ along with LADI Session Handler; if not, write to the Free Software Foundation, gtk-preferences True + + select-folder + 5 + True + True + False + dialog + center-on-parent + + + 2 + True + + + end + True + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-ok + True + True + True + True + True + True + + + False + False + 1 + + + + + False + end + 0 + + + + + + project_save_as_dir_sel_cancel_button + project_save_as_dir_sel_ok_button + + + + gtk-open + True + diff --git a/gui/save_project_dialog.c b/gui/save_project_dialog.c index 4fd9cbc6..05c2e22e 100644 --- a/gui/save_project_dialog.c +++ b/gui/save_project_dialog.c @@ -27,19 +27,50 @@ #include "save_project_dialog.h" #include "gtk_builder.h" -void ladish_run_save_project_dialog(ladish_room_proxy_handle room) +static GtkEntry * path = NULL; + +static void on_path_button_clicked(void) { GtkWidget * dialog; - GtkEntry * path; - GtkEntry * name; GtkResponseType response; + + static bool runing; + if(runing) return; + runing = true; + + dialog = get_gtk_builder_widget("project_save_as_dir_sel_dialog"); + + gtk_widget_show(dialog); + response = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_hide(dialog); + + if (response == GTK_RESPONSE_OK) + { + gtk_entry_set_text( + path, + gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog)) ); + } + + runing = false; +} + +void ladish_run_save_project_dialog(ladish_room_proxy_handle room) +{ + GtkWidget * dialog = NULL; + GtkWidget * path_button = NULL; + GtkEntry * name = NULL; + GtkResponseType response; + char * project_dir; char * project_name; dialog = get_gtk_builder_widget("project_save_as_dialog"); + path_button = get_gtk_builder_widget("project_save_as_path_button"); path = GTK_ENTRY(get_gtk_builder_widget("project_save_as_path_entry")); name = GTK_ENTRY(get_gtk_builder_widget("project_save_as_name_entry")); + g_signal_connect( G_OBJECT(path_button), "clicked", G_CALLBACK(on_path_button_clicked), NULL); + if (!ladish_room_proxy_get_project_properties(room, &project_dir, &project_name)) { error_message_box("Get project properties failed, please inspect logs.");