diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk-main_window_file_publish.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk-main_window_file_publish.c | 97 |
1 files changed, 53 insertions, 44 deletions
diff --git a/src/fs/gnunet-fs-gtk-main_window_file_publish.c b/src/fs/gnunet-fs-gtk-main_window_file_publish.c index bfe71873..750384cc 100644 --- a/src/fs/gnunet-fs-gtk-main_window_file_publish.c +++ b/src/fs/gnunet-fs-gtk-main_window_file_publish.c | |||
@@ -1203,6 +1203,55 @@ directory_scan_cb (void *cls, struct GNUNET_FS_DirScanner *ds, | |||
1203 | } | 1203 | } |
1204 | 1204 | ||
1205 | void | 1205 | void |
1206 | scan_file_or_directory (struct MainPublishingDialogContext *ctx, gchar *filename, | ||
1207 | struct GNUNET_FS_BlockOptions *bo, int do_index) | ||
1208 | { | ||
1209 | struct AddDirClientContext *adcc; | ||
1210 | GtkTextIter iter; | ||
1211 | |||
1212 | adcc = GNUNET_malloc (sizeof (struct AddDirClientContext)); | ||
1213 | adcc->ctx = ctx; | ||
1214 | GNUNET_CONTAINER_DLL_insert_tail (ctx->adddir_head, ctx->adddir_tail, adcc); | ||
1215 | adcc->ds = GNUNET_FS_directory_scan_start (filename, | ||
1216 | GNUNET_NO, NULL, directory_scan_cb, adcc); | ||
1217 | adcc->directory_scan_bo = *bo; | ||
1218 | adcc->directory_scan_do_index = do_index; | ||
1219 | |||
1220 | adcc->progress_dialog_builder = GNUNET_GTK_get_new_builder ( | ||
1221 | "gnunet_fs_gtk_progress_dialog.glade", adcc); | ||
1222 | adcc->progress_dialog = GTK_WIDGET (gtk_builder_get_object ( | ||
1223 | adcc->progress_dialog_builder, | ||
1224 | "GNUNET_FS_GTK_progress_dialog")); | ||
1225 | adcc->progress_dialog_bar = GTK_PROGRESS_BAR (gtk_builder_get_object ( | ||
1226 | adcc->progress_dialog_builder, | ||
1227 | "GNUNET_FS_GTK_progress_dialog_progressbar")); | ||
1228 | adcc->progress_dialog_ok = GTK_BUTTON (gtk_builder_get_object ( | ||
1229 | adcc->progress_dialog_builder, | ||
1230 | "GNUNET_FS_GTK_progress_dialog_ok_button")); | ||
1231 | adcc->progress_dialog_cancel = GTK_BUTTON (gtk_builder_get_object ( | ||
1232 | adcc->progress_dialog_builder, | ||
1233 | "GNUNET_FS_GTK_progress_dialog_cancel_button")); | ||
1234 | adcc->progress_dialog_textview = GTK_TEXT_VIEW ( | ||
1235 | gtk_builder_get_object (adcc->progress_dialog_builder, | ||
1236 | "GNUNET_FS_GTK_progress_dialog_textview")); | ||
1237 | adcc->progress_dialog_textbuffer = GTK_TEXT_BUFFER ( | ||
1238 | gtk_builder_get_object (adcc->progress_dialog_builder, | ||
1239 | "GNUNET_FS_GTK_progress_dialog_textbuffer")); | ||
1240 | gtk_widget_set_sensitive (GTK_WIDGET (adcc->progress_dialog_ok), FALSE); | ||
1241 | |||
1242 | gtk_text_buffer_get_end_iter (adcc->progress_dialog_textbuffer, | ||
1243 | &iter); | ||
1244 | adcc->progress_dialog_textmark = gtk_text_buffer_create_mark ( | ||
1245 | adcc->progress_dialog_textbuffer, "scroll", | ||
1246 | &iter, FALSE); | ||
1247 | |||
1248 | gtk_window_set_transient_for (GTK_WINDOW (adcc->progress_dialog), adcc->ctx->master_pubdialog); | ||
1249 | gtk_window_present (GTK_WINDOW (adcc->progress_dialog)); | ||
1250 | |||
1251 | update_selectivity (ctx); | ||
1252 | } | ||
1253 | |||
1254 | void | ||
1206 | GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog, | 1255 | GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog, |
1207 | gint response_id, | 1256 | gint response_id, |
1208 | struct MainPublishingDialogContext *ctx) | 1257 | struct MainPublishingDialogContext *ctx) |
@@ -1212,8 +1261,6 @@ GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog, | |||
1212 | GtkSpinButton *sb; | 1261 | GtkSpinButton *sb; |
1213 | struct GNUNET_FS_BlockOptions bo; | 1262 | struct GNUNET_FS_BlockOptions bo; |
1214 | GtkWidget *ad; | 1263 | GtkWidget *ad; |
1215 | GtkTextIter iter; | ||
1216 | struct AddDirClientContext *adcc; | ||
1217 | 1264 | ||
1218 | if (g_signal_handler_is_connected (G_OBJECT (dialog), ctx->open_directory_handler_id)) | 1265 | if (g_signal_handler_is_connected (G_OBJECT (dialog), ctx->open_directory_handler_id)) |
1219 | g_signal_handler_disconnect (G_OBJECT (dialog), ctx->open_directory_handler_id); | 1266 | g_signal_handler_disconnect (G_OBJECT (dialog), ctx->open_directory_handler_id); |
@@ -1248,47 +1295,8 @@ GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog, | |||
1248 | (ctx->open_directory_builder, | 1295 | (ctx->open_directory_builder, |
1249 | "GNUNET_GTK_publish_directory_dialog_do_index_checkbutton"))); | 1296 | "GNUNET_GTK_publish_directory_dialog_do_index_checkbutton"))); |
1250 | 1297 | ||
1251 | adcc = GNUNET_malloc (sizeof (struct AddDirClientContext)); | 1298 | scan_file_or_directory (ctx, filename, &bo, do_index); |
1252 | adcc->ctx = ctx; | ||
1253 | GNUNET_CONTAINER_DLL_insert_tail (ctx->adddir_head, ctx->adddir_tail, adcc); | ||
1254 | adcc->ds = GNUNET_FS_directory_scan_start (filename, | ||
1255 | GNUNET_NO, NULL, directory_scan_cb, adcc); | ||
1256 | adcc->directory_scan_bo = bo; | ||
1257 | adcc->directory_scan_do_index = do_index; | ||
1258 | |||
1259 | adcc->progress_dialog_builder = GNUNET_GTK_get_new_builder ( | ||
1260 | "gnunet_fs_gtk_progress_dialog.glade", adcc); | ||
1261 | adcc->progress_dialog = GTK_WIDGET (gtk_builder_get_object ( | ||
1262 | adcc->progress_dialog_builder, | ||
1263 | "GNUNET_FS_GTK_progress_dialog")); | ||
1264 | adcc->progress_dialog_bar = GTK_PROGRESS_BAR (gtk_builder_get_object ( | ||
1265 | adcc->progress_dialog_builder, | ||
1266 | "GNUNET_FS_GTK_progress_dialog_progressbar")); | ||
1267 | adcc->progress_dialog_ok = GTK_BUTTON (gtk_builder_get_object ( | ||
1268 | adcc->progress_dialog_builder, | ||
1269 | "GNUNET_FS_GTK_progress_dialog_ok_button")); | ||
1270 | adcc->progress_dialog_cancel = GTK_BUTTON (gtk_builder_get_object ( | ||
1271 | adcc->progress_dialog_builder, | ||
1272 | "GNUNET_FS_GTK_progress_dialog_cancel_button")); | ||
1273 | adcc->progress_dialog_textview = GTK_TEXT_VIEW ( | ||
1274 | gtk_builder_get_object (adcc->progress_dialog_builder, | ||
1275 | "GNUNET_FS_GTK_progress_dialog_textview")); | ||
1276 | adcc->progress_dialog_textbuffer = GTK_TEXT_BUFFER ( | ||
1277 | gtk_builder_get_object (adcc->progress_dialog_builder, | ||
1278 | "GNUNET_FS_GTK_progress_dialog_textbuffer")); | ||
1279 | gtk_widget_set_sensitive (GTK_WIDGET (adcc->progress_dialog_ok), FALSE); | ||
1280 | |||
1281 | gtk_text_buffer_get_end_iter (adcc->progress_dialog_textbuffer, | ||
1282 | &iter); | ||
1283 | adcc->progress_dialog_textmark = gtk_text_buffer_create_mark ( | ||
1284 | adcc->progress_dialog_textbuffer, "scroll", | ||
1285 | &iter, FALSE); | ||
1286 | |||
1287 | gtk_window_set_transient_for (GTK_WINDOW (adcc->progress_dialog), adcc->ctx->master_pubdialog); | ||
1288 | gtk_window_present (GTK_WINDOW (adcc->progress_dialog)); | ||
1289 | |||
1290 | g_free (filename); | 1299 | g_free (filename); |
1291 | update_selectivity (ctx); | ||
1292 | } | 1300 | } |
1293 | gtk_widget_destroy (ad); | 1301 | gtk_widget_destroy (ad); |
1294 | g_object_unref (G_OBJECT (ctx->open_directory_builder)); | 1302 | g_object_unref (G_OBJECT (ctx->open_directory_builder)); |
@@ -1711,9 +1719,10 @@ GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog * dialog, | |||
1711 | "GNUNET_GTK_publish_file_dialog_do_index_checkbutton"))); | 1719 | "GNUNET_GTK_publish_file_dialog_do_index_checkbutton"))); |
1712 | 1720 | ||
1713 | filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); | 1721 | filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); |
1714 | add_file_at_iter (ctx, filename, &bo, do_index, NULL); | 1722 | |
1723 | scan_file_or_directory (ctx, filename, &bo, do_index); | ||
1724 | |||
1715 | g_free (filename); | 1725 | g_free (filename); |
1716 | update_selectivity (ctx); | ||
1717 | } | 1726 | } |
1718 | else | 1727 | else |
1719 | { | 1728 | { |