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
-
-
-
- 1
- 2
-
-
@@ -1661,6 +1650,40 @@ along with LADI Session Handler; if not, write to the Free Software Foundation,
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.");