summaryrefslogtreecommitdiff
path: root/gtk/gtk_scaffolding.c
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2007-06-22 15:16:48 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2007-06-22 15:16:48 +0000
commit9964008dc07d619f0e2efa65f4d012628d9f5b96 (patch)
treeb2796e794b86c0c43e8e7c38e85e79ac39a15ef8 /gtk/gtk_scaffolding.c
parent0992b00bf5ab4bcb25aad36e4f6522e466d3f53c (diff)
downloadnetsurf-9964008dc07d619f0e2efa65f4d012628d9f5b96.tar.gz
netsurf-9964008dc07d619f0e2efa65f4d012628d9f5b96.tar.bz2
Implement Open File... in nsgtk
svn path=/trunk/netsurf/; revision=3357
Diffstat (limited to 'gtk/gtk_scaffolding.c')
-rw-r--r--gtk/gtk_scaffolding.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/gtk/gtk_scaffolding.c b/gtk/gtk_scaffolding.c
index fb00ad3f1..6c8a8cdce 100644
--- a/gtk/gtk_scaffolding.c
+++ b/gtk/gtk_scaffolding.c
@@ -79,7 +79,7 @@ struct menu_events {
};
static int open_windows = 0; /**< current number of open browsers */
-
+static struct gtk_scaffolding *current_model; /**< current window for model dialogue use */
static void nsgtk_window_destroy_event(GtkWidget *, gpointer);
static void nsgtk_window_update_back_forward(struct gtk_scaffolding *);
@@ -99,6 +99,8 @@ static gboolean nsgtk_history_button_press_event(GtkWidget *, GdkEventButton *,
static void nsgtk_attach_menu_handlers(GladeXML *, gpointer);
+gboolean nsgtk_openfile_open(GtkWidget *widget, gpointer data);
+
#define MENUEVENT(x) { #x, G_CALLBACK(nsgtk_on_##x##_activate) }
#define MENUPROTO(x) static gboolean nsgtk_on_##x##_activate( \
GtkMenuItem *widget, gpointer g)
@@ -106,6 +108,7 @@ static void nsgtk_attach_menu_handlers(GladeXML *, gpointer);
/* file menu */
MENUPROTO(new_window);
MENUPROTO(open_location);
+MENUPROTO(open_file);
MENUPROTO(close_window);
MENUPROTO(quit);
@@ -138,6 +141,7 @@ static struct menu_events menu_events[] = {
/* file menu */
MENUEVENT(new_window),
MENUEVENT(open_location),
+ MENUEVENT(open_file),
MENUEVENT(close_window),
MENUEVENT(quit),
@@ -337,6 +341,24 @@ gboolean nsgtk_window_url_changed(GtkWidget *widget, GdkEventKey *event,
}
+gboolean nsgtk_openfile_open(GtkWidget *widget, gpointer data)
+{
+ struct browser_window *bw = nsgtk_get_browser_for_gui(
+ current_model->top_level);
+ char *filename = gtk_file_chooser_get_filename(
+ GTK_FILE_CHOOSER(wndOpenFile));
+ char *url = malloc(strlen(filename) + strlen("file://"));
+
+ sprintf(url, "file://%s", filename);
+
+ browser_window_go(bw, url, 0, true);
+
+ g_free(filename);
+ free(url);
+
+ return TRUE;
+}
+
/* signal handlers for menu entries */
#define MENUHANDLER(x) gboolean nsgtk_on_##x##_activate(GtkMenuItem *widget, \
gpointer g)
@@ -361,6 +383,14 @@ MENUHANDLER(open_location)
return TRUE;
}
+MENUHANDLER(open_file)
+{
+ current_model = (struct gtk_scaffolding *)g;
+ gtk_dialog_run(wndOpenFile);
+
+ return TRUE;
+}
+
MENUHANDLER(close_window)
{
struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g;