[epiphany-extensions] rss: update and enable again



commit b1e961e906e434fa8e243b8fff729d4705b05d1f
Author: Estêvão Samuel Procópio <tevaum gmail com>
Date:   Sat Dec 19 15:12:34 2009 -0500

    rss: update and enable again
    
    Signed-off-by: Diego Escalante Urrelo <diegoe gnome org>
    
    Bug #604921

 configure.ac                        |    2 +-
 extensions/rss/Makefile.am          |    6 +-
 extensions/rss/ephy-rss-extension.c |   44 +++++---
 extensions/rss/rss-ui.c             |    4 +-
 extensions/rss/rss-ui.glade         |  216 -----------------------------------
 extensions/rss/rss-ui.ui            |  149 ++++++++++++++++++++++++
 6 files changed, 183 insertions(+), 238 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 13879c4..62fb859 100644
--- a/configure.ac
+++ b/configure.ac
@@ -173,7 +173,7 @@ AC_MSG_CHECKING([which extensions to build])
 
 ALL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures greasemonkey java-console livehttpheaders page-info permissions push-scroller rss sample select-stylesheet sidebar smart-bookmarks soup-fly tab-groups tab-states"
 USEFUL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui java-console page-info push-scroller select-stylesheet smart-bookmarks soup-fly tab-groups tab-states"
-DEFAULT_EXTENSIONS="actions adblock auto-scroller certificates error-viewer extensions-manager-ui java-console page-info push-scroller select-stylesheet smart-bookmarks soup-fly tab-groups tab-states greasemonkey"
+DEFAULT_EXTENSIONS="actions adblock auto-scroller certificates error-viewer extensions-manager-ui java-console page-info push-scroller select-stylesheet smart-bookmarks soup-fly tab-groups tab-states greasemonkey rss"
 
 MOZILLA_ALL_EXTENSIONS="error-viewer java-console livehttpheaders page-info select-stylesheet smart-bookmarks"
 
diff --git a/extensions/rss/Makefile.am b/extensions/rss/Makefile.am
index 727d895..31959fe 100644
--- a/extensions/rss/Makefile.am
+++ b/extensions/rss/Makefile.am
@@ -25,8 +25,8 @@ librssextension_la_LDFLAGS = \
 	-export-symbols $(top_srcdir)/ephy-extension.symbols \
 	$(AM_LDFLAGS)
 
-gladedir = $(pkgdatadir)/glade
-glade_DATA = rss-ui.glade
+uidir = $(pkgdatadir)/ui
+ui_DATA = rss-ui.ui
 
 extensioninidir = $(extensiondir)
 extensionini_in_files = rss.ephy-extension.in.in
@@ -44,4 +44,4 @@ DISTCLEANFILES = $(extensionini_DATA)
 
 EXTRA_DIST = \
 	$(extensionini_in_files)	\
-	$(glade_DATA)
+	$(ui_DATA)
diff --git a/extensions/rss/ephy-rss-extension.c b/extensions/rss/ephy-rss-extension.c
index 832b0e8..d672838 100644
--- a/extensions/rss/ephy-rss-extension.c
+++ b/extensions/rss/ephy-rss-extension.c
@@ -92,7 +92,7 @@ static const GtkActionEntry action_entries [] =
 
 /* We got an rss feed from a tab */
 static void
-ephy_rss_ge_feed_cb (EphyEmbed *embed,
+ephy_rss_ge_feed_cb (EphyWebView *view,
 		     const char *type,
 		     const char *title,
 		     const char *address,
@@ -100,9 +100,9 @@ ephy_rss_ge_feed_cb (EphyEmbed *embed,
 {
 	FeedList *list;
 
-	list = (FeedList *) g_object_steal_data (G_OBJECT (embed), FEEDLIST_DATA_KEY);
+	list = (FeedList *) g_object_steal_data (G_OBJECT (view), FEEDLIST_DATA_KEY);
 	list = rss_feedlist_add (list, type, title, address);
-	g_object_set_data_full (G_OBJECT (embed), FEEDLIST_DATA_KEY, list,
+	g_object_set_data_full (G_OBJECT (view), FEEDLIST_DATA_KEY, list,
 				(GDestroyNotify) rss_feedlist_free);
 
 	LOG ("Got a new feed for the site: type=%s, title=%s, address=%s\nWe now have %d feeds", type, title, address, rss_feedlist_length (list));
@@ -114,7 +114,7 @@ static void
 ephy_rss_feed_subscribe_cb (GtkAction *action,
 			    EphyWindow *window)
 {
-	const GValue *value;
+	GValue value = { 0, };
 	GError *error = NULL;
 	EphyEmbedEvent *event;
 	gboolean success;
@@ -127,10 +127,10 @@ ephy_rss_feed_subscribe_cb (GtkAction *action,
 	event = ephy_window_get_context_event (window);
 	if (event == NULL) return;
 
-	value = ephy_embed_event_get_property (event, "link");
+	ephy_embed_event_get_property (event, "link", &value);
 
 	if (!dbus_g_proxy_call (extension->priv->proxy, RSS_DBUS_SUBSCRIBE, &error,
-		G_TYPE_STRING, g_value_get_string (value),
+		G_TYPE_STRING, g_value_get_string (&value),
 		G_TYPE_INVALID,
 		G_TYPE_BOOLEAN, &success,
 		G_TYPE_INVALID))
@@ -140,27 +140,28 @@ ephy_rss_feed_subscribe_cb (GtkAction *action,
 	}
 
 	g_object_set(action, "sensitive", FALSE, "visible", FALSE, NULL);
+	g_value_unset (&value);
 }
 
 static gboolean
-ephy_rss_ge_context_cb	(EphyEmbed *embed,
-			EphyEmbedEvent *event,
-			EphyWindow *window)
+ephy_rss_ge_context_cb	(EphyWebView *view,
+			 EphyEmbedEvent *event,
+			 EphyWindow *window)
 {
 	WindowData *data;
-	const GValue *value;
+	GValue *value = NULL;
 	const char *address;
 	FeedList *list;
 	gboolean active = FALSE;
 
-	list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY);
-	if ((ephy_embed_event_get_context (event) & EPHY_EMBED_CONTEXT_LINK) && (list != NULL))
+	list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY);
+	if ((ephy_embed_event_get_context (event) & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) && (list != NULL))
 	{
 		LOG ("Context menu on a link");
 		data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY);
 		g_return_val_if_fail (data != NULL, FALSE);
 
-		value = ephy_embed_event_get_property (event, "link");
+		ephy_embed_event_get_property (event, "link", value);
 		address = g_value_get_string (value);
 
 		active = rss_feedlist_contains (list, address);
@@ -177,6 +178,7 @@ ephy_rss_dialog_display (EphyWindow *window)
 {
 	EphyRssExtensionPrivate *priv;
 	EphyEmbed *embed;
+	EphyWebView *view;
 	FeedList *list;
 	WindowData *data;
 
@@ -187,8 +189,10 @@ ephy_rss_dialog_display (EphyWindow *window)
 
 	embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
 	g_return_if_fail (embed != NULL);
+	view = ephy_embed_get_web_view (embed);
+	g_return_if_fail (view != NULL);
 
-	list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY);
+	list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY);
 	if (list == NULL)
 		return;
 
@@ -253,11 +257,15 @@ ephy_rss_update_action (EphyWindow *window)
 	FeedList *list;
 	gboolean show = TRUE;
 	EphyEmbed *embed;
+	EphyWebView *view;
 
 	embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
+	g_return_if_fail (embed != NULL);
+	view = ephy_embed_get_web_view (embed);
+	g_return_if_fail (view != NULL);
 
 	/* The page is loaded, do we have a feed ? */
-	list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY);
+	list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY);
 
 	show = rss_feedlist_length (list) > 0;
 
@@ -295,15 +303,17 @@ impl_attach_tab (EphyExtension *extension,
 
 	g_return_if_fail (EPHY_IS_EMBED (embed));
 
-	view = EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED (embed);
+	view = ephy_embed_get_web_view (embed);
 
 	/* Notify when a new rss feed is parsed */
 	g_signal_connect_after (view, "new-document-now",
 				G_CALLBACK (ephy_rss_ge_content_cb), window);
 	g_signal_connect_after (view, "ge-feed-link",
 			    G_CALLBACK (ephy_rss_ge_feed_cb), window);
+	/*
 	g_signal_connect (view, "ge-context-menu",
 			    G_CALLBACK (ephy_rss_ge_context_cb), window);
+	*/
 }
 
 /* Stop listening for the detached tab rss feeds */
@@ -323,8 +333,10 @@ impl_detach_tab (EphyExtension *extension,
 	g_signal_handlers_disconnect_by_func
 		(embed, G_CALLBACK (ephy_rss_ge_content_cb), window);
 
+	/*
 	g_signal_handlers_disconnect_by_func
 		(embed, G_CALLBACK (ephy_rss_ge_context_cb), window);
+	*/
 
 	/* destroy data */
 	g_object_set_data (G_OBJECT (embed), FEEDLIST_DATA_KEY, NULL);
diff --git a/extensions/rss/rss-ui.c b/extensions/rss/rss-ui.c
index 50191fb..343ccfc 100644
--- a/extensions/rss/rss-ui.c
+++ b/extensions/rss/rss-ui.c
@@ -475,7 +475,7 @@ rss_ui_populate_store (RssUI *dialog)
 	 * avoiding duplicate feeds
 	 */
 	location = ephy_web_view_get_location
-			(EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED (priv->embed), TRUE);
+			(ephy_embed_get_web_view (priv->embed), TRUE);
 	decision.hostname = g_strdup (ephy_string_get_host_name (location));
 
 	/* Fill the store, and select the appropriate feeds */
@@ -532,7 +532,7 @@ rss_ui_constructor (GType type,
 
 	ephy_dialog_construct (EPHY_DIALOG (edialog),
 			       properties,
-			       SHARE_DIR "/glade/rss-ui.glade",
+			       SHARE_DIR "/ui/rss-ui.ui",
 			       "rss_ui",
 			       GETTEXT_PACKAGE);
 
diff --git a/extensions/rss/rss-ui.ui b/extensions/rss/rss-ui.ui
new file mode 100644
index 0000000..52c7d55
--- /dev/null
+++ b/extensions/rss/rss-ui.ui
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.6 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="rss_ui">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">News Feed Subscription</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="title">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;b&gt;Select Interesting Feeds&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTreeView" id="feeds">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="close">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="subscribe">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image1">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label2">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Subscribe</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-7">close</action-widget>
+      <action-widget response="-5">subscribe</action-widget>
+    </action-widgets>
+  </object>
+</interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]