From c4d1ece421b3c7fb5f0b13c042d124671734afe2 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 3 Aug 2014 10:12:18 +0100 Subject: extend viewdata to files and use it for box tree dump --- gtk/scaffolding.c | 54 +++++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 31 deletions(-) (limited to 'gtk/scaffolding.c') diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 0e6e8bccd..aed323e45 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -72,6 +72,7 @@ #include "gtk/scaffolding.h" #include "gtk/tabs.h" #include "gtk/schedule.h" +#include "gtk/viewdata.h" /** Macro to define a handler for menu, button and activate events. */ #define MULTIHANDLER(q)\ @@ -1295,44 +1296,35 @@ MULTIHANDLER(toggledebugging) MULTIHANDLER(debugboxtree) { - GtkWidget *save_dialog; - - save_dialog = gtk_file_chooser_dialog_new("Save File", g->window, - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, - NULL); - - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(save_dialog), - getenv("HOME") ? getenv("HOME") : "/"); - - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(save_dialog), - "boxtree.txt"); + gchar *fname; + gint handle; + FILE *f; + struct browser_window *bw; - if (gtk_dialog_run(GTK_DIALOG(save_dialog)) == GTK_RESPONSE_ACCEPT) { - gchar *filename = gtk_file_chooser_get_filename( - GTK_FILE_CHOOSER(save_dialog)); - FILE *fh; + handle = g_file_open_tmp("nsgtkboxtreeXXXXXX", &fname, NULL); + if ((handle == -1) || (fname == NULL)) { + return TRUE; + } + close(handle); /* in case it was binary mode */ - LOG(("Saving box tree dump to %s...\n", filename)); + /* save data to temporary file */ + f = fopen(fname, "w"); + if (f == NULL) { + warn_user("Error saving box tree dump.", + "Unable to open file for writing."); + unlink(fname); + return TRUE; + } - fh = fopen((const char *) filename, "w"); - if (fh == NULL) { - warn_user("Error saving box tree dump.", - "Unable to open file for writing."); - } else { - struct browser_window *bw; - bw = nsgtk_get_browser_window(g->top_level); + bw = nsgtk_get_browser_window(g->top_level); - browser_window_debug_dump(bw, fh); + browser_window_debug_dump(bw, f); - fclose(fh); - } + fclose(f); - g_free(filename); - } + nsgtk_viewfile("Box Tree Debug", "boxtree", fname); - gtk_widget_destroy(save_dialog); + g_free(fname); return TRUE; } -- cgit v1.2.3