From d5eed5f210049e0b3b4332ddb36b0fde6b50a76e Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 20 Apr 2003 11:03:42 +0000 Subject: Update 2003-04-20 Marco Pesenti Gritti * lib/egg/egg-editable-toolbar.c: Update * data/epiphany.schemas.in: * data/ui/epiphany-ui.xml.in: * lib/egg/egg-editable-toolbar.h: * lib/ephy-prefs.h: * src/bookmarks/Makefile.am: * src/bookmarks/ephy-bookmark-properties.c: (update_checkbox), (update_window_title), (toolbar_checkbox_changed_cb), (set_window_icon), (build_ui): * src/bookmarks/ephy-bookmarks.h: * src/ephy-window.c: (add_widget), (ephy_window_init), (save_window_chrome), (ephy_window_finalize), (translate_default_chrome), (update_layout_toggles), (ephy_window_set_chrome): * src/window-commands.c: (window_cmd_view_bookmarks_toolbar): * src/window-commands.h: First implementation of the new bookmarks toolbar thing. Still doesnt work properly ... old bmk toolbars are still there though. Dave I dont like much the position of the checkbox in properties :/ Maybe a different tab dunno .... --- ChangeLog | 28 +++++++++++++++++ data/epiphany.schemas.in | 11 +++++++ data/ui/epiphany-ui.xml.in | 1 + lib/egg/egg-editable-toolbar.c | 52 ++++++++++++++++++++++++++++++++ lib/egg/egg-editable-toolbar.h | 2 ++ lib/ephy-prefs.h | 1 + src/bookmarks/Makefile.am | 10 +++--- src/bookmarks/ephy-bookmark-properties.c | 50 +++++++++++++++++++++++++----- src/bookmarks/ephy-bookmarks.h | 3 +- src/ephy-window.c | 46 +++++++++++++++++----------- src/window-commands.c | 19 ++++++++++++ src/window-commands.h | 3 ++ 12 files changed, 197 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index abbdd04e0..9d4e6f81c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2003-04-20 Marco Pesenti Gritti + + * lib/egg/egg-editable-toolbar.c: + + Update + + * data/epiphany.schemas.in: + * data/ui/epiphany-ui.xml.in: + * lib/egg/egg-editable-toolbar.h: + * lib/ephy-prefs.h: + * src/bookmarks/Makefile.am: + * src/bookmarks/ephy-bookmark-properties.c: (update_checkbox), + (update_window_title), (toolbar_checkbox_changed_cb), + (set_window_icon), (build_ui): + * src/bookmarks/ephy-bookmarks.h: + * src/ephy-window.c: (add_widget), (ephy_window_init), + (save_window_chrome), (ephy_window_finalize), + (translate_default_chrome), (update_layout_toggles), + (ephy_window_set_chrome): + * src/window-commands.c: (window_cmd_view_bookmarks_toolbar): + * src/window-commands.h: + + First implementation of the new bookmarks toolbar thing. + Still doesnt work properly ... old bmk toolbars are still there + though. + Dave I dont like much the position of the checkbox in properties :/ + Maybe a different tab dunno .... + 2003-04-20 Marco Pesenti Gritti * data/ui/epiphany-history-window-ui.xml.in: diff --git a/data/epiphany.schemas.in b/data/epiphany.schemas.in index 12ce4bb60..b795f33dc 100644 --- a/data/epiphany.schemas.in +++ b/data/epiphany.schemas.in @@ -259,6 +259,17 @@ Show toolbars by default. + + /schemas/apps/epiphany/interface/show_personal_toolbar + /apps/epiphany/interface/show_personal_toolbar + epiphany + bool + 0 + + Show bookmarks toolbar by default + Show bookmarks toolbar by default. + + /schemas/apps/epiphany/interface/show_statusbar /apps/epiphany/interface/show_statusbar diff --git a/data/ui/epiphany-ui.xml.in b/data/ui/epiphany-ui.xml.in index dc8e97242..0da96aa19 100644 --- a/data/ui/epiphany-ui.xml.in +++ b/data/ui/epiphany-ui.xml.in @@ -33,6 +33,7 @@ + diff --git a/lib/egg/egg-editable-toolbar.c b/lib/egg/egg-editable-toolbar.c index 8e875842e..73528b96d 100755 --- a/lib/egg/egg-editable-toolbar.c +++ b/lib/egg/egg-editable-toolbar.c @@ -1169,6 +1169,58 @@ set_action_sensitive (EggToolbarsItem *item, } } +static void +hide_toolbar (EggToolbarsToolbar *t, + EggEditableToolbar *etoolbar) +{ + GtkWidget *tb; + + g_return_if_fail (IS_EGG_EDITABLE_TOOLBAR (etoolbar)); + g_return_if_fail (t != NULL); + + tb = get_item_widget (etoolbar, t); + + g_return_if_fail (tb != NULL); + + gtk_widget_hide (tb); +} + +static void +show_toolbar (EggToolbarsToolbar *t, + EggEditableToolbar *etoolbar) +{ + GtkWidget *tb; + + g_return_if_fail (IS_EGG_EDITABLE_TOOLBAR (etoolbar)); + g_return_if_fail (t != NULL); + + tb = get_item_widget (etoolbar, t); + + g_return_if_fail (tb != NULL); + + gtk_widget_show (tb); +} + +void +egg_editable_toolbar_show (EggEditableToolbar *etoolbar) +{ + g_return_if_fail (IS_EGG_EDITABLE_TOOLBAR (etoolbar)); + + egg_toolbars_group_foreach_toolbar (etoolbar->priv->group, + (EggToolbarsGroupForeachToolbarFunc) + show_toolbar, etoolbar); +} + +void +egg_editable_toolbar_hide (EggEditableToolbar *etoolbar) +{ + g_return_if_fail (IS_EGG_EDITABLE_TOOLBAR (etoolbar)); + + egg_toolbars_group_foreach_toolbar (etoolbar->priv->group, + (EggToolbarsGroupForeachToolbarFunc) + hide_toolbar, etoolbar); +} + void egg_editable_toolbar_edit (EggEditableToolbar *etoolbar, GtkWidget *window) diff --git a/lib/egg/egg-editable-toolbar.h b/lib/egg/egg-editable-toolbar.h index 29ccf8200..f4f8aff64 100755 --- a/lib/egg/egg-editable-toolbar.h +++ b/lib/egg/egg-editable-toolbar.h @@ -62,6 +62,8 @@ EggEditableToolbar *egg_editable_toolbar_new (EggMenuMerge *merge, EggToolbarsGroup *group); void egg_editable_toolbar_edit (EggEditableToolbar *etoolbar, GtkWidget *window); +void egg_editable_toolbar_show (EggEditableToolbar *etoolbar); +void egg_editable_toolbar_hide (EggEditableToolbar *etoolbar); char *egg_editable_toolbar_get_action_name (EggEditableToolbar *etoolbar, const char *drag_type, const char *data); diff --git a/lib/ephy-prefs.h b/lib/ephy-prefs.h index f4d4cf286..cd52d34b4 100644 --- a/lib/ephy-prefs.h +++ b/lib/ephy-prefs.h @@ -36,6 +36,7 @@ G_BEGIN_DECLS #define CONF_WINDOWS_FS_SHOW_STATUSBAR "/apps/epiphany/interface/show_statusbar_in_fullscreen" #define CONF_WINDOWS_SHOW_SIDEBAR "/apps/epiphany/interface/show_sidebar" #define CONF_WINDOWS_SHOW_TOOLBARS "/apps/epiphany/interface/show_toolbars" +#define CONF_WINDOWS_SHOW_PERSONAL_TOOLBAR "/apps/epiphany/interface/show_personal_toolbar" #define CONF_WINDOWS_SHOW_STATUSBAR "/apps/epiphany/interface/show_statusbar" #define CONF_TOOLBAR_SETUP "/apps/epiphany/interface/toolbar_setup" #define CONF_TOOLBAR_SPINNER_THEME "/apps/epiphany/interface/spinner_theme" diff --git a/src/bookmarks/Makefile.am b/src/bookmarks/Makefile.am index 8da75c248..bc0e7a85f 100644 --- a/src/bookmarks/Makefile.am +++ b/src/bookmarks/Makefile.am @@ -18,16 +18,18 @@ INCLUDES = \ noinst_LTLIBRARIES = libephybookmarks.la libephybookmarks_la_SOURCES = \ - ephy-bookmark-action.c \ - ephy-bookmark-action.h \ - ephy-bookmark-properties.c \ - ephy-bookmark-properties.h \ ephy-bookmarks.c \ ephy-bookmarks.h \ + ephy-bookmark-action.c \ + ephy-bookmark-action.h \ ephy-bookmarks-editor.c \ ephy-bookmarks-editor.h \ ephy-bookmarks-import.c \ ephy-bookmarks-import.h \ + ephy-bookmark-properties.c \ + ephy-bookmark-properties.h \ + ephy-bookmarks-toolbar.c \ + ephy-bookmarks-toolbar.h \ ephy-keywords-entry.c \ ephy-keywords-entry.h \ ephy-new-bookmark.c \ diff --git a/src/bookmarks/ephy-bookmark-properties.c b/src/bookmarks/ephy-bookmark-properties.c index 7d9d8c2be..1de14b433 100644 --- a/src/bookmarks/ephy-bookmark-properties.c +++ b/src/bookmarks/ephy-bookmark-properties.c @@ -23,6 +23,8 @@ #include "ephy-shell.h" #include "ephy-state.h" +#include +#include #include #include #include @@ -212,6 +214,22 @@ bookmark_properties_response_cb (GtkDialog *dialog, } } +static void +update_checkbox (EphyBookmarkProperties *props, GtkWidget *checkbox, gulong prop) +{ + GValue value = { 0, }; + gboolean state; + + state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)); + + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, state); + ephy_node_set_property (props->priv->bookmark, + prop, + &value); + g_value_unset (&value); +} + static void update_entry (EphyBookmarkProperties *props, GtkWidget *entry, guint prop) { @@ -233,7 +251,7 @@ update_window_title(EphyBookmarkProperties *editor) { char *title; const char *tmp; - + tmp = ephy_node_get_property_string (editor->priv->bookmark, EPHY_NODE_BMK_PROP_TITLE); title = g_strdup_printf (_("%s Properties"), tmp); @@ -255,6 +273,12 @@ location_entry_changed_cb (GtkWidget *entry, EphyBookmarkProperties *props) update_entry (props, entry, EPHY_NODE_BMK_PROP_LOCATION); } +static void +toolbar_checkbox_changed_cb (GtkWidget *checkbox, EphyBookmarkProperties *props) +{ + update_checkbox (props, checkbox, EPHY_NODE_BMK_PROP_SHOW_IN_TOOLBAR); +} + static void set_window_icon (EphyBookmarkProperties *editor) { @@ -275,10 +299,10 @@ set_window_icon (EphyBookmarkProperties *editor) else { - icon = gtk_widget_render_icon (GTK_WIDGET (editor), - GTK_STOCK_PROPERTIES, - GTK_ICON_SIZE_MENU, - NULL); + icon = gtk_widget_render_icon (GTK_WIDGET (editor), + GTK_STOCK_PROPERTIES, + GTK_ICON_SIZE_MENU, + NULL); } gtk_window_set_icon (GTK_WINDOW (editor), icon); @@ -288,9 +312,11 @@ set_window_icon (EphyBookmarkProperties *editor) static void build_ui (EphyBookmarkProperties *editor) { - GtkWidget *table, *label, *entry, *topics_selector, *scrolled_window; + GtkWidget *table, *label, *entry, *topics_selector; + GtkWidget *checkbox, *scrolled_window; char *str; const char *tmp; + gboolean state; g_signal_connect (G_OBJECT (editor), "response", @@ -312,7 +338,7 @@ build_ui (EphyBookmarkProperties *editor) gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_widget_show (table); - + entry = gtk_entry_new (); tmp = ephy_node_get_property_string (editor->priv->bookmark, EPHY_NODE_BMK_PROP_TITLE); @@ -376,6 +402,16 @@ build_ui (EphyBookmarkProperties *editor) gtk_table_attach (GTK_TABLE (table), scrolled_window, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + checkbox = gtk_check_button_new_with_mnemonic (_("Show in the bookmarks _toolbar")); + state = ephy_node_get_property_boolean (editor->priv->bookmark, + EPHY_NODE_BMK_PROP_SHOW_IN_TOOLBAR); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbox), state); + g_signal_connect (checkbox, "toggled", + G_CALLBACK (toolbar_checkbox_changed_cb), editor); + gtk_table_attach (GTK_TABLE (table), checkbox, 0, 2, 3, 4, GTK_FILL, 0, 0, 0); + gtk_widget_show (checkbox); + + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (editor)->vbox), table, TRUE, TRUE, 0); gtk_dialog_add_button (GTK_DIALOG (editor), diff --git a/src/bookmarks/ephy-bookmarks.h b/src/bookmarks/ephy-bookmarks.h index 0ab70af8e..bb22e1a5c 100644 --- a/src/bookmarks/ephy-bookmarks.h +++ b/src/bookmarks/ephy-bookmarks.h @@ -44,7 +44,8 @@ enum EPHY_NODE_KEYWORD_PROP_NAME = 5, EPHY_NODE_BMK_PROP_SMART_LOCATION = 6, EPHY_NODE_BMK_PROP_ICON = 7, - EPHY_NODE_KEYWORD_PROP_PRIORITY = 8 + EPHY_NODE_KEYWORD_PROP_PRIORITY = 8, + EPHY_NODE_BMK_PROP_SHOW_IN_TOOLBAR = 9 }; struct EphyBookmarks diff --git a/src/ephy-window.c b/src/ephy-window.c index 610356357..433b18288 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -21,6 +21,7 @@ #endif #include "ephy-window.h" +#include "ephy-bookmarks-toolbar.h" #include "ephy-favorites-menu.h" #include "ephy-state.h" #include "ephy-gobject-misc.h" @@ -129,6 +130,9 @@ static EggActionGroupEntry ephy_menu_entries [] = { { "ViewToolbar", N_("_Toolbar"), NULL, "T", N_("Show or hide toolbar"), G_CALLBACK (window_cmd_view_toolbar), NULL, TOGGLE_ACTION }, + { "ViewBookmarksToolbar", N_("_Bookmarks Toolbar"), NULL, NULL, + N_("Show or hide bookmarks toolbar"), + G_CALLBACK (window_cmd_view_bookmarks_toolbar), NULL, TOGGLE_ACTION }, { "ViewStatusbar", N_("St_atusbar"), NULL, NULL, N_("Show or hide statusbar"), G_CALLBACK (window_cmd_view_statusbar), NULL, TOGGLE_ACTION }, @@ -253,10 +257,10 @@ struct EphyWindowPrivate GtkWidget *menu_dock; GtkWidget *menubar; Toolbar *toolbar; - GList *toolbars; GtkWidget *statusbar; EggActionGroup *action_group; EggActionGroup *popups_action_group; + EphyBookmarksToolbar *bmk_toolbar; EphyFavoritesMenu *fav_menu; EphyEncodingMenu *enc_menu; PPViewToolbar *ppview_toolbar; @@ -390,11 +394,6 @@ add_widget (EggMenuMerge *merge, GtkWidget *widget, EphyWindow *window) { window->priv->menubar = widget; } - else - { - window->priv->toolbars = g_list_append - (window->priv->toolbars, widget); - } gtk_box_pack_start (GTK_BOX (window->priv->menu_dock), widget, FALSE, FALSE, 0); @@ -567,11 +566,11 @@ ephy_window_init (EphyWindow *window) window->priv->chrome_mask = 0; window->priv->closing = FALSE; window->priv->ppview_toolbar = NULL; - window->priv->toolbars = NULL; /* Setup the window and connect verbs */ setup_window (window); + window->priv->bmk_toolbar = ephy_bookmarks_toolbar_new (window); window->priv->fav_menu = ephy_favorites_menu_new (window); window->priv->enc_menu = ephy_encoding_menu_new (window); @@ -613,6 +612,8 @@ save_window_chrome (EphyWindow *window) } else { + eel_gconf_set_boolean (CONF_WINDOWS_SHOW_PERSONAL_TOOLBAR, + flags & EMBED_CHROME_PERSONALTOOLBARON); eel_gconf_set_boolean (CONF_WINDOWS_SHOW_TOOLBARS, flags & EMBED_CHROME_TOOLBARON); eel_gconf_set_boolean (CONF_WINDOWS_SHOW_STATUSBAR, @@ -662,11 +663,6 @@ ephy_window_finalize (GObject *object) g_object_unref (window->priv->ppview_toolbar); } - if (window->priv->toolbars) - { - g_list_free (window->priv->toolbars); - } - g_object_unref (window->priv->action_group); egg_menu_merge_remove_action_group (EGG_MENU_MERGE (window->ui_merge), window->priv->action_group); @@ -778,8 +774,11 @@ translate_default_chrome (EmbedChromeMask *chrome_mask) { *chrome_mask |= EMBED_CHROME_TOOLBARON; } + if (eel_gconf_get_boolean (CONF_WINDOWS_SHOW_PERSONAL_TOOLBAR)) + { + *chrome_mask |= EMBED_CHROME_PERSONALTOOLBARON; + } - *chrome_mask |= EMBED_CHROME_PERSONALTOOLBARON; *chrome_mask |= EMBED_CHROME_MENUBARON; } } @@ -795,6 +794,10 @@ update_layout_toggles (EphyWindow *window) egg_toggle_action_set_active (EGG_TOGGLE_ACTION (action), mask & EMBED_CHROME_TOOLBARON); + action = egg_action_group_get_action (action_group, "ViewBookmarksToolbar"); + egg_toggle_action_set_active (EGG_TOGGLE_ACTION (action), + mask & EMBED_CHROME_PERSONALTOOLBARON); + action = egg_action_group_get_action (action_group, "ViewStatusbar"); egg_toggle_action_set_active (EGG_TOGGLE_ACTION (action), mask & EMBED_CHROME_STATUSBARON); @@ -822,15 +825,24 @@ ephy_window_set_chrome (EphyWindow *window, gtk_widget_hide (window->priv->menubar); } + if (flags & EMBED_CHROME_PERSONALTOOLBARON) + { + ephy_bookmarks_toolbar_show (window->priv->bmk_toolbar); + } + else + { + ephy_bookmarks_toolbar_hide (window->priv->bmk_toolbar); + } + if (flags & EMBED_CHROME_TOOLBARON) { - g_list_foreach (window->priv->toolbars, - (GFunc)gtk_widget_show, NULL); + egg_editable_toolbar_show + (EGG_EDITABLE_TOOLBAR (window->priv->toolbar)); } else { - g_list_foreach (window->priv->toolbars, - (GFunc)gtk_widget_hide, NULL); + egg_editable_toolbar_hide + (EGG_EDITABLE_TOOLBAR (window->priv->toolbar)); } if (flags & EMBED_CHROME_STATUSBARON) diff --git a/src/window-commands.c b/src/window-commands.c index 79fcb1a79..07efcdf6d 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -478,6 +478,25 @@ window_cmd_edit_find_prev (EggAction *action, ephy_window_update_control (window, FindControl); } +void +window_cmd_view_bookmarks_toolbar (EggAction *action, + EphyWindow *window) +{ + EmbedChromeMask mask; + gboolean active; + gboolean current_state; + + mask = ephy_window_get_chrome (window); + active = EGG_TOGGLE_ACTION (action)->active; + current_state = (mask & EMBED_CHROME_PERSONALTOOLBARON) > 0; + + if (active != current_state) + { + mask ^= EMBED_CHROME_PERSONALTOOLBARON; + ephy_window_set_chrome (window, mask); + } +} + void window_cmd_view_toolbar (EggAction *action, EphyWindow *window) diff --git a/src/window-commands.h b/src/window-commands.h index 37740a2a9..8594e791f 100644 --- a/src/window-commands.h +++ b/src/window-commands.h @@ -104,6 +104,9 @@ void window_cmd_view_statusbar (EggAction *action, void window_cmd_view_toolbar (EggAction *action, EphyWindow *window); +void window_cmd_view_bookmarks_toolbar (EggAction *action, + EphyWindow *window); + void window_cmd_view_fullscreen (EggAction *action, EphyWindow *window); -- cgit v1.2.3