diff options
author | Rob Kendrick <rjek@netsurf-browser.org> | 2007-06-22 15:16:48 +0000 |
---|---|---|
committer | Rob Kendrick <rjek@netsurf-browser.org> | 2007-06-22 15:16:48 +0000 |
commit | 9964008dc07d619f0e2efa65f4d012628d9f5b96 (patch) | |
tree | b2796e794b86c0c43e8e7c38e85e79ac39a15ef8 /gtk | |
parent | 0992b00bf5ab4bcb25aad36e4f6522e466d3f53c (diff) | |
download | netsurf-9964008dc07d619f0e2efa65f4d012628d9f5b96.tar.gz netsurf-9964008dc07d619f0e2efa65f4d012628d9f5b96.tar.bz2 |
Implement Open File... in nsgtk
svn path=/trunk/netsurf/; revision=3357
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtk_gui.c | 2 | ||||
-rw-r--r-- | gtk/gtk_gui.h | 2 | ||||
-rw-r--r-- | gtk/gtk_scaffolding.c | 32 | ||||
-rw-r--r-- | gtk/res/netsurf.glade | 73 |
4 files changed, 107 insertions, 2 deletions
diff --git a/gtk/gtk_gui.c b/gtk/gtk_gui.c index 47a3cfd04..e42236429 100644 --- a/gtk/gtk_gui.c +++ b/gtk/gtk_gui.c @@ -63,6 +63,7 @@ GtkWindow *wndWarning; GladeXML *gladeWindows; GtkWindow *wndTooltip; GtkLabel *labelTooltip; +GtkDialog *wndOpenFile; /** * Locate a shared resource file by searching known places in order. @@ -241,6 +242,7 @@ void gui_init(int argc, char** argv) glade_xml_get_widget(gladeWindows, "textviewGPL")), fontdesc); wndWarning = GTK_WINDOW(glade_xml_get_widget(gladeWindows, "wndWarning")); + wndOpenFile = GTK_DIALOG(glade_xml_get_widget(gladeWindows, "wndOpenFile")); nsgtk_history_init(); } diff --git a/gtk/gtk_gui.h b/gtk/gtk_gui.h index 448448425..4b054cfb0 100644 --- a/gtk/gtk_gui.h +++ b/gtk/gtk_gui.h @@ -18,3 +18,5 @@ extern GtkWindow *wndAbout; extern GtkWindow *wndTooltip; extern GtkLabel *labelTooltip; + +extern GtkDialog *wndOpenFile; 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; diff --git a/gtk/res/netsurf.glade b/gtk/res/netsurf.glade index 1da2eca75..eab72b498 100644 --- a/gtk/res/netsurf.glade +++ b/gtk/res/netsurf.glade @@ -74,7 +74,6 @@ <child> <widget class="GtkImageMenuItem" id="open_file"> <property name="visible">True</property> - <property name="sensitive">False</property> <property name="tooltip" translatable="yes">Open a file on your computer into this browser window.</property> <property name="label" translatable="yes">Open _file...</property> <property name="use_underline">True</property> @@ -5447,4 +5446,76 @@ OF THE POSSIBILITY OF SUCH DAMAGES. </child> </widget> +<widget class="GtkFileChooserDialog" id="wndOpenFile"> + <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property> + <property name="local_only">True</property> + <property name="select_multiple">False</property> + <property name="show_hidden">False</property> + <property name="do_overwrite_confirmation">False</property> + <property name="title" translatable="yes">Open file</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">24</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button15"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + <signal name="clicked" handler="gtk_widget_hide" object="wndOpenFile" last_modification_time="Fri, 22 Jun 2007 14:50:25 GMT"/> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button16"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-open</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + <signal name="clicked" handler="nsgtk_openfile_open" last_modification_time="Fri, 22 Jun 2007 14:52:48 GMT"/> + <signal name="clicked" handler="gtk_widget_hide" object="wndOpenFile" last_modification_time="Fri, 22 Jun 2007 14:53:02 GMT"/> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + </child> +</widget> + </glade-interface> |