summaryrefslogtreecommitdiff
path: root/gtk/gtk_scaffolding.c
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2008-03-22 13:45:35 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2008-03-22 13:45:35 +0000
commit6aaa14e728aa4be5faa36f2d3a367481ddf82777 (patch)
treeaedb983f9cb6e3c41a54bd63b6ba32ced3aaffb7 /gtk/gtk_scaffolding.c
parentc95b8ea9276e58e9ec64972f91697d3033323320 (diff)
downloadnetsurf-6aaa14e728aa4be5faa36f2d3a367481ddf82777.tar.gz
netsurf-6aaa14e728aa4be5faa36f2d3a367481ddf82777.tar.bz2
Add box tree dump saving, create 'debugging' sub menu to put this and debug rendering option in. Make debug rendering option cause all open windows to redraw.
svn path=/trunk/netsurf/; revision=4036
Diffstat (limited to 'gtk/gtk_scaffolding.c')
-rw-r--r--gtk/gtk_scaffolding.c46
1 files changed, 44 insertions, 2 deletions
diff --git a/gtk/gtk_scaffolding.c b/gtk/gtk_scaffolding.c
index d7ee0f4a1..55d3c8938 100644
--- a/gtk/gtk_scaffolding.c
+++ b/gtk/gtk_scaffolding.c
@@ -146,6 +146,7 @@ MENUPROTO(status_bar);
MENUPROTO(downloads);
MENUPROTO(save_window_size);
MENUPROTO(toggle_debug_rendering);
+MENUPROTO(save_box_tree);
/* navigate menu */
MENUPROTO(back);
@@ -184,6 +185,7 @@ static struct menu_events menu_events[] = {
MENUEVENT(downloads),
MENUEVENT(save_window_size),
MENUEVENT(toggle_debug_rendering),
+ MENUEVENT(save_box_tree),
/* navigate menu */
MENUEVENT(back),
@@ -548,11 +550,51 @@ MENUHANDLER(save_window_size)
MENUHANDLER(toggle_debug_rendering)
{
html_redraw_debug = !html_redraw_debug;
- gui_window_redraw_window(g);
-
+ nsgtk_reflow_all_windows();
return TRUE;
}
+MENUHANDLER(save_box_tree)
+{
+ GtkWidget *save_dialog;
+ struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g;
+
+ save_dialog = gtk_file_chooser_dialog_new("Save File", gw->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");
+
+ if (gtk_dialog_run(GTK_DIALOG(save_dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *filename = gtk_file_chooser_get_filename(
+ GTK_FILE_CHOOSER(save_dialog));
+ FILE *fh;
+ LOG(("Saving box tree dump to %s...\n", filename));
+
+ fh = fopen(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(gw->top_level);
+ box_dump(fh, bw->current_content->data.html.layout->children,
+ 0);
+ fclose(fh);
+ }
+
+ g_free(filename);
+ }
+
+ gtk_widget_destroy(save_dialog);
+}
+
MENUHANDLER(stop)
{
return nsgtk_window_stop_button_clicked(GTK_WIDGET(widget), g);