Add News Aggregator preference
The program set here is called if the user clicks on the news feed icon, with the address of the current website as argument. For example liferea-add-feed works like that.
This commit is contained in:
parent
5d360b065b
commit
a9863cfb40
4 changed files with 62 additions and 7 deletions
|
@ -85,6 +85,7 @@ struct _MidoriBrowser
|
||||||
gboolean show_statusbar;
|
gboolean show_statusbar;
|
||||||
gboolean progress_in_location;
|
gboolean progress_in_location;
|
||||||
gboolean remember_last_visited_pages;
|
gboolean remember_last_visited_pages;
|
||||||
|
gchar* news_aggregator;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if HAVE_HILDON
|
#if HAVE_HILDON
|
||||||
|
@ -303,7 +304,8 @@ _midori_browser_update_interface (MidoriBrowser* browser)
|
||||||
katze_throbber_set_animated (KATZE_THROBBER (browser->throbber), loading);
|
katze_throbber_set_animated (KATZE_THROBBER (browser->throbber), loading);
|
||||||
|
|
||||||
action = _action_by_name (browser, "Location");
|
action = _action_by_name (browser, "Location");
|
||||||
if (g_object_get_data (G_OBJECT (view), "news-feeds"))
|
if (browser->news_aggregator && *browser->news_aggregator
|
||||||
|
&& g_object_get_data (G_OBJECT (view), "news-feeds"))
|
||||||
midori_location_action_set_secondary_icon (
|
midori_location_action_set_secondary_icon (
|
||||||
MIDORI_LOCATION_ACTION (action), STOCK_NEWS_FEED);
|
MIDORI_LOCATION_ACTION (action), STOCK_NEWS_FEED);
|
||||||
else
|
else
|
||||||
|
@ -2573,9 +2575,8 @@ _action_location_secondary_icon_released (GtkAction* action,
|
||||||
if ((view = midori_browser_get_current_tab (browser)))
|
if ((view = midori_browser_get_current_tab (browser)))
|
||||||
{
|
{
|
||||||
const gchar* uri = midori_view_get_display_uri (MIDORI_VIEW (view));
|
const gchar* uri = midori_view_get_display_uri (MIDORI_VIEW (view));
|
||||||
/* FIXME: Support a user chosen feed reader */
|
if (browser->news_aggregator && *browser->news_aggregator)
|
||||||
if (1)
|
sokoke_spawn_program (browser->news_aggregator, uri);
|
||||||
sokoke_spawn_program ("liferea-add-feed", uri);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4309,6 +4310,8 @@ midori_browser_finalize (GObject* object)
|
||||||
|
|
||||||
katze_object_assign (browser->net, NULL);
|
katze_object_assign (browser->net, NULL);
|
||||||
|
|
||||||
|
katze_assign (browser->news_aggregator, NULL);
|
||||||
|
|
||||||
G_OBJECT_CLASS (midori_browser_parent_class)->finalize (object);
|
G_OBJECT_CLASS (midori_browser_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4434,6 +4437,8 @@ _midori_browser_update_settings (MidoriBrowser* browser)
|
||||||
gint default_width, default_height;
|
gint default_width, default_height;
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
|
|
||||||
|
g_free (browser->news_aggregator);
|
||||||
|
|
||||||
g_object_get (browser->settings,
|
g_object_get (browser->settings,
|
||||||
"remember-last-window-size", &remember_last_window_size,
|
"remember-last-window-size", &remember_last_window_size,
|
||||||
"last-window-width", &last_window_width,
|
"last-window-width", &last_window_width,
|
||||||
|
@ -4455,6 +4460,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
|
||||||
"close-buttons-on-tabs", &close_buttons_on_tabs,
|
"close-buttons-on-tabs", &close_buttons_on_tabs,
|
||||||
"progress-in-location", &browser->progress_in_location,
|
"progress-in-location", &browser->progress_in_location,
|
||||||
"remember-last-visited-pages", &browser->remember_last_visited_pages,
|
"remember-last-visited-pages", &browser->remember_last_visited_pages,
|
||||||
|
"news-aggregator", &browser->news_aggregator,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
screen = gtk_window_get_screen (GTK_WINDOW (browser));
|
screen = gtk_window_get_screen (GTK_WINDOW (browser));
|
||||||
|
@ -4546,6 +4552,10 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
|
||||||
browser->progress_in_location = g_value_get_boolean (&value);
|
browser->progress_in_location = g_value_get_boolean (&value);
|
||||||
else if (name == g_intern_string ("remember-last-visited-pages"))
|
else if (name == g_intern_string ("remember-last-visited-pages"))
|
||||||
browser->remember_last_visited_pages = g_value_get_boolean (&value);
|
browser->remember_last_visited_pages = g_value_get_boolean (&value);
|
||||||
|
else if (name == g_intern_string ("news-aggregator"))
|
||||||
|
{
|
||||||
|
katze_assign (browser->news_aggregator, g_value_dup_string (&value));
|
||||||
|
}
|
||||||
else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings),
|
else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings),
|
||||||
name))
|
name))
|
||||||
g_warning (_("Unexpected setting '%s'"), name);
|
g_warning (_("Unexpected setting '%s'"), name);
|
||||||
|
|
|
@ -421,7 +421,7 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
button = katze_property_proxy (settings, "show-crash-dialog", NULL);
|
button = katze_property_proxy (settings, "show-crash-dialog", NULL);
|
||||||
SPANNED_ADD (button, 0, 2, 2, 3);
|
SPANNED_ADD (button, 0, 2, 2, 3);
|
||||||
FRAME_NEW (_("Transfers"));
|
FRAME_NEW (_("Transfers"));
|
||||||
TABLE_NEW (3, 2);
|
TABLE_NEW (4, 2);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
||||||
label = katze_property_label (settings, "download-folder");
|
label = katze_property_label (settings, "download-folder");
|
||||||
INDENTED_ADD (label, 0, 1, 0, 1);
|
INDENTED_ADD (label, 0, 1, 0, 1);
|
||||||
|
@ -456,6 +456,20 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
g_signal_connect (entry, "focus-out-event",
|
g_signal_connect (entry, "focus-out-event",
|
||||||
G_CALLBACK (proxy_download_manager_icon_cb), button);
|
G_CALLBACK (proxy_download_manager_icon_cb), button);
|
||||||
FILLED_ADD (hbox, 1, 2, 2, 3);
|
FILLED_ADD (hbox, 1, 2, 2, 3);
|
||||||
|
label = katze_property_label (settings, "news-aggregator");
|
||||||
|
INDENTED_ADD (label, 0, 1, 3, 4);
|
||||||
|
hbox = gtk_hbox_new (FALSE, 4);
|
||||||
|
button = gtk_image_new ();
|
||||||
|
gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (button),
|
||||||
|
GTK_ICON_SIZE_MENU, &icon_width, &icon_height);
|
||||||
|
gtk_widget_set_size_request (button, icon_width, icon_height);
|
||||||
|
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 4);
|
||||||
|
entry = katze_property_proxy (settings, "news-aggregator", NULL);
|
||||||
|
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
|
||||||
|
proxy_download_manager_icon_cb (entry, NULL, GTK_IMAGE (button));
|
||||||
|
g_signal_connect (entry, "focus-out-event",
|
||||||
|
G_CALLBACK (proxy_download_manager_icon_cb), button);
|
||||||
|
FILLED_ADD (hbox, 1, 2, 3, 4);
|
||||||
|
|
||||||
/* Page "Appearance" */
|
/* Page "Appearance" */
|
||||||
PAGE_NEW (GTK_STOCK_SELECT_FONT, _("Appearance"));
|
PAGE_NEW (GTK_STOCK_SELECT_FONT, _("Appearance"));
|
||||||
|
|
|
@ -63,6 +63,7 @@ struct _MidoriView
|
||||||
/* KatzeArray* news_feeds; */
|
/* KatzeArray* news_feeds; */
|
||||||
|
|
||||||
gchar* download_manager;
|
gchar* download_manager;
|
||||||
|
gchar* news_aggregator;
|
||||||
gboolean middle_click_opens_selection;
|
gboolean middle_click_opens_selection;
|
||||||
gboolean open_tabs_in_the_background;
|
gboolean open_tabs_in_the_background;
|
||||||
gboolean close_buttons_on_tabs;
|
gboolean close_buttons_on_tabs;
|
||||||
|
@ -664,8 +665,7 @@ webkit_web_view_load_finished_cb (WebKitWebView* web_view,
|
||||||
g_object_notify (G_OBJECT (view), "progress");
|
g_object_notify (G_OBJECT (view), "progress");
|
||||||
midori_view_update_load_status (view, MIDORI_LOAD_FINISHED);
|
midori_view_update_load_status (view, MIDORI_LOAD_FINISHED);
|
||||||
|
|
||||||
/* FIXME: Do this conditional on whether there's a custom feed reader */
|
if (view->news_aggregator && *view->news_aggregator)
|
||||||
if (1)
|
|
||||||
{
|
{
|
||||||
JSContextRef js_context = webkit_web_frame_get_global_context (web_frame);
|
JSContextRef js_context = webkit_web_frame_get_global_context (web_frame);
|
||||||
gchar* value = sokoke_js_script_eval (js_context,
|
gchar* value = sokoke_js_script_eval (js_context,
|
||||||
|
@ -1359,6 +1359,7 @@ midori_view_init (MidoriView* view)
|
||||||
view->item = NULL;
|
view->item = NULL;
|
||||||
|
|
||||||
view->download_manager = NULL;
|
view->download_manager = NULL;
|
||||||
|
view->news_aggregator = NULL;
|
||||||
view->web_view = NULL;
|
view->web_view = NULL;
|
||||||
|
|
||||||
/* Adjustments are not created automatically */
|
/* Adjustments are not created automatically */
|
||||||
|
@ -1387,6 +1388,7 @@ midori_view_finalize (GObject* object)
|
||||||
katze_object_assign (view->item, NULL);
|
katze_object_assign (view->item, NULL);
|
||||||
|
|
||||||
katze_assign (view->download_manager, NULL);
|
katze_assign (view->download_manager, NULL);
|
||||||
|
katze_assign (view->news_aggregator, NULL);
|
||||||
|
|
||||||
katze_object_assign (view->net, NULL);
|
katze_object_assign (view->net, NULL);
|
||||||
|
|
||||||
|
@ -1509,6 +1511,7 @@ _midori_view_update_settings (MidoriView* view)
|
||||||
|
|
||||||
g_object_get (view->settings,
|
g_object_get (view->settings,
|
||||||
"download-manager", &view->download_manager,
|
"download-manager", &view->download_manager,
|
||||||
|
"news-aggregator", &view->news_aggregator,
|
||||||
"zoom-text-and-images", &zoom_text_and_images,
|
"zoom-text-and-images", &zoom_text_and_images,
|
||||||
"close-buttons-on-tabs", &view->close_buttons_on_tabs,
|
"close-buttons-on-tabs", &view->close_buttons_on_tabs,
|
||||||
"open-new-pages-in", &view->open_new_pages_in,
|
"open-new-pages-in", &view->open_new_pages_in,
|
||||||
|
@ -1538,6 +1541,10 @@ midori_view_settings_notify_cb (MidoriWebSettings* settings,
|
||||||
{
|
{
|
||||||
katze_assign (view->download_manager, g_value_dup_string (&value));
|
katze_assign (view->download_manager, g_value_dup_string (&value));
|
||||||
}
|
}
|
||||||
|
else if (name == g_intern_string ("news-aggregator"))
|
||||||
|
{
|
||||||
|
katze_assign (view->news_aggregator, g_value_dup_string (&value));
|
||||||
|
}
|
||||||
else if (name == g_intern_string ("zoom-text-and-images"))
|
else if (name == g_intern_string ("zoom-text-and-images"))
|
||||||
{
|
{
|
||||||
if (view->web_view)
|
if (view->web_view)
|
||||||
|
|
|
@ -51,6 +51,7 @@ struct _MidoriWebSettings
|
||||||
gchar* download_folder;
|
gchar* download_folder;
|
||||||
gchar* download_manager;
|
gchar* download_manager;
|
||||||
gchar* text_editor;
|
gchar* text_editor;
|
||||||
|
gchar* news_aggregator;
|
||||||
gchar* location_entry_search;
|
gchar* location_entry_search;
|
||||||
MidoriPreferredEncoding preferred_encoding;
|
MidoriPreferredEncoding preferred_encoding;
|
||||||
|
|
||||||
|
@ -119,6 +120,7 @@ enum
|
||||||
PROP_DOWNLOAD_FOLDER,
|
PROP_DOWNLOAD_FOLDER,
|
||||||
PROP_DOWNLOAD_MANAGER,
|
PROP_DOWNLOAD_MANAGER,
|
||||||
PROP_TEXT_EDITOR,
|
PROP_TEXT_EDITOR,
|
||||||
|
PROP_NEWS_AGGREGATOR,
|
||||||
PROP_LOCATION_ENTRY_SEARCH,
|
PROP_LOCATION_ENTRY_SEARCH,
|
||||||
PROP_PREFERRED_ENCODING,
|
PROP_PREFERRED_ENCODING,
|
||||||
|
|
||||||
|
@ -580,6 +582,22 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
NULL,
|
NULL,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MidoriWebSettings:news-aggregator:
|
||||||
|
*
|
||||||
|
* An external news aggregator.
|
||||||
|
*
|
||||||
|
* Since: 0.1.6
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_NEWS_AGGREGATOR,
|
||||||
|
g_param_spec_string (
|
||||||
|
"news-aggregator",
|
||||||
|
_("News Aggregator"),
|
||||||
|
_("An external news aggregator"),
|
||||||
|
NULL,
|
||||||
|
flags));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_LOCATION_ENTRY_SEARCH,
|
PROP_LOCATION_ENTRY_SEARCH,
|
||||||
g_param_spec_string (
|
g_param_spec_string (
|
||||||
|
@ -1046,6 +1064,9 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_TEXT_EDITOR:
|
case PROP_TEXT_EDITOR:
|
||||||
katze_assign (web_settings->text_editor, g_value_dup_string (value));
|
katze_assign (web_settings->text_editor, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_NEWS_AGGREGATOR:
|
||||||
|
katze_assign (web_settings->news_aggregator, g_value_dup_string (value));
|
||||||
|
break;
|
||||||
case PROP_LOCATION_ENTRY_SEARCH:
|
case PROP_LOCATION_ENTRY_SEARCH:
|
||||||
katze_assign (web_settings->location_entry_search, g_value_dup_string (value));
|
katze_assign (web_settings->location_entry_search, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
|
@ -1239,6 +1260,9 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_TEXT_EDITOR:
|
case PROP_TEXT_EDITOR:
|
||||||
g_value_set_string (value, web_settings->text_editor);
|
g_value_set_string (value, web_settings->text_editor);
|
||||||
break;
|
break;
|
||||||
|
case PROP_NEWS_AGGREGATOR:
|
||||||
|
g_value_set_string (value, web_settings->news_aggregator);
|
||||||
|
break;
|
||||||
case PROP_LOCATION_ENTRY_SEARCH:
|
case PROP_LOCATION_ENTRY_SEARCH:
|
||||||
g_value_set_string (value, web_settings->location_entry_search);
|
g_value_set_string (value, web_settings->location_entry_search);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue