aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--data/epiphany.schemas.in11
-rw-r--r--data/ui/epiphany-ui.xml.in1
-rwxr-xr-xlib/egg/egg-editable-toolbar.c52
-rwxr-xr-xlib/egg/egg-editable-toolbar.h2
-rw-r--r--lib/ephy-prefs.h1
-rw-r--r--src/bookmarks/Makefile.am10
-rw-r--r--src/bookmarks/ephy-bookmark-properties.c50
-rw-r--r--src/bookmarks/ephy-bookmarks.h3
-rw-r--r--src/ephy-window.c46
-rw-r--r--src/window-commands.c19
-rw-r--r--src/window-commands.h3
12 files changed, 197 insertions, 29 deletions
diff --git a/ChangeLog b/ChangeLog
index abbdd04e0..9d4e6f81c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,33 @@
2003-04-20 Marco Pesenti Gritti <marco@it.gnome.org>
+ * 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 <marco@it.gnome.org>
+
* data/ui/epiphany-history-window-ui.xml.in:
Looks like Erich forgot the xml changes
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
@@ -260,6 +260,17 @@
</locale>
</schema>
<schema>
+ <key>/schemas/apps/epiphany/interface/show_personal_toolbar</key>
+ <applyto>/apps/epiphany/interface/show_personal_toolbar</applyto>
+ <owner>epiphany</owner>
+ <type>bool</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Show bookmarks toolbar by default</short>
+ <long>Show bookmarks toolbar by default.</long>
+ </locale>
+ </schema>
+ <schema>
<key>/schemas/apps/epiphany/interface/show_statusbar</key>
<applyto>/apps/epiphany/interface/show_statusbar</applyto>
<owner>epiphany</owner>
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 @@
<submenu name="ViewMenu" verb="View">
<menuitem name="ViewToolbarMenu" verb="ViewToolbar"/>
+ <menuitem name="ViewBookmarksToolbarMenu" verb="ViewBookmarksToolbar"/>
<menuitem name="ViewStatusbarMenu" verb="ViewStatusbar"/>
<menuitem name="ViewFullscreenMenu" verb="ViewFullscreen"/>
<separator name="ViewSep1"/>
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 <gtk/gtkcheckbutton.h>
+#include <gtk/gtktogglebutton.h>
#include <gtk/gtkstock.h>
#include <gtk/gtkentry.h>
#include <gtk/gtkvbox.h>
@@ -213,6 +215,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)
{
GValue value = { 0, };
@@ -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);
@@ -256,6 +274,12 @@ location_entry_changed_cb (GtkWidget *entry, EphyBookmarkProperties *props)
}
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)
{
EphyFaviconCache *cache;
@@ -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, "<shift><control>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
@@ -479,6 +479,25 @@ window_cmd_edit_find_prev (EggAction *action,
}
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);