Add zoom functionality, if webkit supports it
This commit is contained in:
parent
8e494ba206
commit
a61568c16a
6 changed files with 113 additions and 33 deletions
15
src/main.c
15
src/main.c
|
@ -118,11 +118,18 @@ settings_new_from_file (const gchar* filename)
|
||||||
}
|
}
|
||||||
else if (type == G_TYPE_PARAM_INT)
|
else if (type == G_TYPE_PARAM_INT)
|
||||||
{
|
{
|
||||||
guint integer = sokoke_key_file_get_integer_default (key_file,
|
gint integer = sokoke_key_file_get_integer_default (key_file,
|
||||||
"settings", property,
|
"settings", property,
|
||||||
G_PARAM_SPEC_INT (pspec)->default_value, NULL);
|
G_PARAM_SPEC_INT (pspec)->default_value, NULL);
|
||||||
g_object_set (settings, property, integer, NULL);
|
g_object_set (settings, property, integer, NULL);
|
||||||
}
|
}
|
||||||
|
else if (type == G_TYPE_PARAM_FLOAT)
|
||||||
|
{
|
||||||
|
gdouble number = sokoke_key_file_get_double_default (key_file,
|
||||||
|
"settings", property,
|
||||||
|
G_PARAM_SPEC_FLOAT (pspec)->default_value, NULL);
|
||||||
|
g_object_set (settings, property, number, NULL);
|
||||||
|
}
|
||||||
else if (type == G_TYPE_PARAM_BOOLEAN)
|
else if (type == G_TYPE_PARAM_BOOLEAN)
|
||||||
{
|
{
|
||||||
gboolean boolean = sokoke_key_file_get_boolean_default (key_file,
|
gboolean boolean = sokoke_key_file_get_boolean_default (key_file,
|
||||||
|
@ -189,6 +196,12 @@ settings_save_to_file (MidoriWebSettings* settings,
|
||||||
g_object_get (settings, property, &integer, NULL);
|
g_object_get (settings, property, &integer, NULL);
|
||||||
g_key_file_set_integer (key_file, "settings", property, integer);
|
g_key_file_set_integer (key_file, "settings", property, integer);
|
||||||
}
|
}
|
||||||
|
else if (type == G_TYPE_PARAM_FLOAT)
|
||||||
|
{
|
||||||
|
gdouble number;
|
||||||
|
g_object_get (settings, property, &number, NULL);
|
||||||
|
g_key_file_set_double (key_file, "settings", property, number);
|
||||||
|
}
|
||||||
else if (type == G_TYPE_PARAM_BOOLEAN)
|
else if (type == G_TYPE_PARAM_BOOLEAN)
|
||||||
{
|
{
|
||||||
gboolean boolean;
|
gboolean boolean;
|
||||||
|
|
|
@ -173,20 +173,26 @@ _midori_browser_update_interface (MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
MidoriBrowserPrivate* priv = browser->priv;
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
|
gboolean loading = FALSE;
|
||||||
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
||||||
gboolean loading = midori_web_view_is_loading (MIDORI_WEB_VIEW (web_view));
|
if (web_view)
|
||||||
/*_action_set_sensitive (browser, "ZoomIn",
|
{
|
||||||
webkit_web_view_can_increase_text_size (WEBKIT_WEB_VIEW (web_view)));
|
loading = midori_web_view_is_loading (MIDORI_WEB_VIEW (web_view));
|
||||||
_action_set_sensitive (browser, "ZoomOut",
|
|
||||||
webkit_web_view_can_decrease_text_size (WEBKIT_WEB_VIEW (web_view)));
|
|
||||||
_action_set_sensitive (browser, "ZoomNormal",
|
_action_set_sensitive (browser, "ZoomNormal",
|
||||||
webkit_web_view_get_text_size (WEBKIT_WEB_VIEW (web_view)) != 1);*/
|
midori_web_view_get_zoom_level (MIDORI_WEB_VIEW (web_view)) != 1.0);
|
||||||
|
if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_view),
|
||||||
|
"zoom-level"))
|
||||||
|
{
|
||||||
|
_action_set_sensitive (browser, "ZoomIn", FALSE);
|
||||||
|
_action_set_sensitive (browser, "ZoomOut", FALSE);
|
||||||
|
}
|
||||||
_action_set_sensitive (browser, "Back",
|
_action_set_sensitive (browser, "Back",
|
||||||
webkit_web_view_can_go_back (WEBKIT_WEB_VIEW (web_view)));
|
webkit_web_view_can_go_back (WEBKIT_WEB_VIEW (web_view)));
|
||||||
_action_set_sensitive (browser, "Forward",
|
_action_set_sensitive (browser, "Forward",
|
||||||
webkit_web_view_can_go_forward (WEBKIT_WEB_VIEW (web_view)));
|
webkit_web_view_can_go_forward (WEBKIT_WEB_VIEW (web_view)));
|
||||||
_action_set_sensitive (browser, "Reload", !loading);
|
_action_set_sensitive (browser, "Reload", !loading);
|
||||||
_action_set_sensitive (browser, "Stop", loading);
|
_action_set_sensitive (browser, "Stop", loading);
|
||||||
|
}
|
||||||
|
|
||||||
GtkAction* action = gtk_action_group_get_action (priv->action_group,
|
GtkAction* action = gtk_action_group_get_action (priv->action_group,
|
||||||
"ReloadStop");
|
"ReloadStop");
|
||||||
|
@ -1230,33 +1236,49 @@ _action_reload_stop_activate (GtkAction* action,
|
||||||
g_free (stock_id);
|
g_free (stock_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static void
|
static void
|
||||||
_action_zoom_in_activate (GtkAction* action,
|
_action_zoom_in_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
||||||
const gfloat zoom = webkit_web_view_get_text_multiplier (
|
if (web_view && g_object_class_find_property (
|
||||||
WEBKIT_WEB_VIEW (web_view));
|
G_OBJECT_GET_CLASS (web_view), "zoom-level"))
|
||||||
webkit_web_view_set_text_multiplier (WEBKIT_WEB_VIEW (web_view), zoom + 0.1);
|
{
|
||||||
}*/
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
/*static void
|
gfloat zoom_level, zoom_step;
|
||||||
|
g_object_get (web_view, "zoom-level", &zoom_level, NULL);
|
||||||
|
g_object_get (priv->settings, "zoom-step", &zoom_step, NULL);
|
||||||
|
g_object_set (web_view, "zoom-level", zoom_level + zoom_step, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
_action_zoom_out_activate (GtkAction* action,
|
_action_zoom_out_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
||||||
const gfloat zoom = webkit_web_view_get_text_multiplier (
|
if (web_view && g_object_class_find_property (
|
||||||
WEBKIT_WEB_VIEW (web_view));
|
G_OBJECT_GET_CLASS (web_view), "zoom-level"))
|
||||||
webkit_web_view_set_text_multiplier (WEBKIT_WEB_VIEW (web_view), zoom - 0.1);
|
{
|
||||||
}*/
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
/*static void
|
gfloat zoom_level, zoom_step;
|
||||||
|
g_object_get (web_view, "zoom-level", &zoom_level, NULL);
|
||||||
|
g_object_get (priv->settings, "zoom-step", &zoom_step, NULL);
|
||||||
|
g_object_set (web_view, "zoom-level", zoom_level - zoom_step, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
_action_zoom_normal_activate (GtkAction* action,
|
_action_zoom_normal_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
GtkWidget* web_view = midori_browser_get_current_web_view (browser);
|
||||||
webkit_web_view_set_text_multiplier (WEBKIT_WEB_VIEW (web_View, 1));
|
if (web_view && g_object_class_find_property (
|
||||||
}*/
|
G_OBJECT_GET_CLASS (web_view), "zoom-level"))
|
||||||
|
g_object_set (web_view, "zoom-level", 1.0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/*static void
|
/*static void
|
||||||
_action_source_view_activate (GtkAction* action,
|
_action_source_view_activate (GtkAction* action,
|
||||||
|
@ -2228,13 +2250,13 @@ static const GtkActionEntry entries[] = {
|
||||||
N_("Reload the current page"), G_CALLBACK (_action_reload_stop_activate) },
|
N_("Reload the current page"), G_CALLBACK (_action_reload_stop_activate) },
|
||||||
{ "ZoomIn", GTK_STOCK_ZOOM_IN,
|
{ "ZoomIn", GTK_STOCK_ZOOM_IN,
|
||||||
NULL, "<Ctrl>plus",
|
NULL, "<Ctrl>plus",
|
||||||
"hm?", NULL/*G_CALLBACK (_action_zoom_in_activate)*/ },
|
"hm?", G_CALLBACK (_action_zoom_in_activate) },
|
||||||
{ "ZoomOut", GTK_STOCK_ZOOM_OUT,
|
{ "ZoomOut", GTK_STOCK_ZOOM_OUT,
|
||||||
NULL, "<Ctrl>minus",
|
NULL, "<Ctrl>minus",
|
||||||
"hm?", NULL/*G_CALLBACK (_action_zoom_out_activate)*/ },
|
"hm?", G_CALLBACK (_action_zoom_out_activate) },
|
||||||
{ "ZoomNormal", GTK_STOCK_ZOOM_100,
|
{ "ZoomNormal", GTK_STOCK_ZOOM_100,
|
||||||
NULL, "<Ctrl>0",
|
NULL, "<Ctrl>0",
|
||||||
"hm?", NULL/*G_CALLBACK (_action_zoom_normal_activate)*/ },
|
"hm?", G_CALLBACK (_action_zoom_normal_activate) },
|
||||||
{ "SourceView", NULL,
|
{ "SourceView", NULL,
|
||||||
N_("View Source"), "",
|
N_("View Source"), "",
|
||||||
"hm?", /*G_CALLBACK (_action_source_view_activate)*/ },
|
"hm?", /*G_CALLBACK (_action_source_view_activate)*/ },
|
||||||
|
@ -2609,7 +2631,7 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
|
|
||||||
// Create the menubar
|
// Create the menubar
|
||||||
priv->menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
|
priv->menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
|
||||||
GtkWidget* menuitem = gtk_menu_item_new();
|
GtkWidget* menuitem = gtk_menu_item_new ();
|
||||||
gtk_widget_show (menuitem);
|
gtk_widget_show (menuitem);
|
||||||
priv->throbber = katze_throbber_new();
|
priv->throbber = katze_throbber_new();
|
||||||
gtk_widget_show(priv->throbber);
|
gtk_widget_show(priv->throbber);
|
||||||
|
@ -2661,7 +2683,7 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
ui_manager, "/toolbar_navigation/Homepage");
|
ui_manager, "/toolbar_navigation/Homepage");
|
||||||
|
|
||||||
// Location
|
// Location
|
||||||
priv->location = sexy_icon_entry_new();
|
priv->location = sexy_icon_entry_new ();
|
||||||
sokoke_entry_setup_completion (GTK_ENTRY (priv->location));
|
sokoke_entry_setup_completion (GTK_ENTRY (priv->location));
|
||||||
priv->location_icon = gtk_image_new ();
|
priv->location_icon = gtk_image_new ();
|
||||||
sexy_icon_entry_set_icon (SEXY_ICON_ENTRY (priv->location)
|
sexy_icon_entry_set_icon (SEXY_ICON_ENTRY (priv->location)
|
||||||
|
@ -2722,7 +2744,7 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
priv->bookmarkbar = gtk_toolbar_new ();
|
priv->bookmarkbar = gtk_toolbar_new ();
|
||||||
gtk_toolbar_set_icon_size (GTK_TOOLBAR (priv->bookmarkbar),
|
gtk_toolbar_set_icon_size (GTK_TOOLBAR (priv->bookmarkbar),
|
||||||
GTK_ICON_SIZE_MENU);
|
GTK_ICON_SIZE_MENU);
|
||||||
gtk_toolbar_set_style (GTK_TOOLBAR(priv->bookmarkbar),
|
gtk_toolbar_set_style (GTK_TOOLBAR (priv->bookmarkbar),
|
||||||
GTK_TOOLBAR_BOTH_HORIZ);
|
GTK_TOOLBAR_BOTH_HORIZ);
|
||||||
_midori_browser_create_bookmark_menu (browser, bookmarks,
|
_midori_browser_create_bookmark_menu (browser, bookmarks,
|
||||||
priv->menu_bookmarks);
|
priv->menu_bookmarks);
|
||||||
|
|
|
@ -1097,3 +1097,26 @@ midori_web_view_get_link_uri (MidoriWebView* web_view)
|
||||||
MidoriWebViewPrivate* priv = web_view->priv;
|
MidoriWebViewPrivate* priv = web_view->priv;
|
||||||
return priv->link_uri;
|
return priv->link_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_web_view_get_zoom_level:
|
||||||
|
* @web_view: a #MidoriWebView
|
||||||
|
*
|
||||||
|
* Retrieves the current zoom level.
|
||||||
|
*
|
||||||
|
* Return value: the zoom level, always 1 if not supported
|
||||||
|
**/
|
||||||
|
gfloat
|
||||||
|
midori_web_view_get_zoom_level (MidoriWebView* web_view)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (MIDORI_IS_WEB_VIEW (web_view), 1);
|
||||||
|
|
||||||
|
if (g_object_class_find_property (G_OBJECT_GET_CLASS (web_view),
|
||||||
|
"zoom-level"))
|
||||||
|
{
|
||||||
|
gfloat zoom_level;
|
||||||
|
g_object_get (web_view, "zoom-level", &zoom_level, NULL);
|
||||||
|
return zoom_level;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
|
@ -113,6 +113,9 @@ midori_web_view_get_display_title (MidoriWebView* web_view);
|
||||||
const gchar*
|
const gchar*
|
||||||
midori_web_view_get_link_uri (MidoriWebView* web_view);
|
midori_web_view_get_link_uri (MidoriWebView* web_view);
|
||||||
|
|
||||||
|
gfloat
|
||||||
|
midori_web_view_get_zoom_level (MidoriWebView* web_view);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __MIDORI_WEB_VIEW_H__ */
|
#endif /* __MIDORI_WEB_VIEW_H__ */
|
||||||
|
|
12
src/sokoke.c
12
src/sokoke.c
|
@ -403,6 +403,18 @@ gint sokoke_key_file_get_integer_default(GKeyFile* keyFile
|
||||||
return g_key_file_get_integer(keyFile, group, key, error);
|
return g_key_file_get_integer(keyFile, group, key, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gdouble
|
||||||
|
sokoke_key_file_get_double_default (GKeyFile* key_file,
|
||||||
|
const gchar* group,
|
||||||
|
const gchar* key,
|
||||||
|
const gdouble default_value,
|
||||||
|
GError** error)
|
||||||
|
{
|
||||||
|
if (!g_key_file_has_key (key_file, group, key, NULL))
|
||||||
|
return default_value;
|
||||||
|
return g_key_file_get_double (key_file, group, key, error);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
sokoke_key_file_get_boolean_default (GKeyFile* key_file,
|
sokoke_key_file_get_boolean_default (GKeyFile* key_file,
|
||||||
const gchar* group,
|
const gchar* group,
|
||||||
|
|
|
@ -75,6 +75,13 @@ gint
|
||||||
sokoke_key_file_get_integer_default(GKeyFile*, const gchar*, const gchar*
|
sokoke_key_file_get_integer_default(GKeyFile*, const gchar*, const gchar*
|
||||||
, const gint, GError**);
|
, const gint, GError**);
|
||||||
|
|
||||||
|
gdouble
|
||||||
|
sokoke_key_file_get_double_default (GKeyFile* key_file,
|
||||||
|
const gchar* group,
|
||||||
|
const gchar* key,
|
||||||
|
gdouble default_value,
|
||||||
|
GError** error);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
sokoke_key_file_get_boolean_default (GKeyFile* key_file,
|
sokoke_key_file_get_boolean_default (GKeyFile* key_file,
|
||||||
const gchar* group,
|
const gchar* group,
|
||||||
|
|
Loading…
Reference in a new issue