[Kazehakase-cvs] CVS update: kazehakase/src/bookmarks

Back to archive index

Hiroyuki Ikezoe ikezo****@users*****
Fri Jan 5 20:37:13 JST 2007


Index: kazehakase/src/bookmarks/kz-bookmark-file.c
diff -u kazehakase/src/bookmarks/kz-bookmark-file.c:1.23 kazehakase/src/bookmarks/kz-bookmark-file.c:1.24
--- kazehakase/src/bookmarks/kz-bookmark-file.c:1.23	Mon Jan  1 19:35:14 2007
+++ kazehakase/src/bookmarks/kz-bookmark-file.c	Fri Jan  5 20:37:13 2007
@@ -18,7 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id: kz-bookmark-file.c,v 1.23 2007/01/01 10:35:14 ikezoe Exp $
+ *  $Id: kz-bookmark-file.c,v 1.24 2007/01/05 11:37:13 ikezoe Exp $
  */
 
 #include "kz-bookmark-file.h"
@@ -46,6 +46,7 @@
 	SAVE_START_SIGNAL,
 	SAVE_COMPLETED_SIGNAL,
 	ERROR_SIGNAL,
+	UPDATE_SIGNAL,
 	LAST_SIGNAL
 };
 
@@ -139,6 +140,7 @@
 	klass->load_completed     = NULL;
 	klass->save_start         = NULL;
 	klass->save_completed     = NULL;
+	klass->update		  = NULL;
 
 	g_object_class_install_property(
 		object_class,
@@ -272,6 +274,16 @@
 			       g_cclosure_marshal_VOID__STRING,
 			       G_TYPE_NONE, 1, G_TYPE_STRING);
 
+	kz_bookmark_file_signals[UPDATE_SIGNAL]
+		= g_signal_new("update",
+			       G_TYPE_FROM_CLASS (klass),
+			       G_SIGNAL_RUN_LAST,
+			       G_STRUCT_OFFSET (KzBookmarkFileClass,
+						update),
+			       NULL, NULL,
+			       g_cclosure_marshal_VOID__VOID,
+			       G_TYPE_NONE, 0);
+
 	location_quark        = g_quark_from_string("KzBookmarkFile::BookmarkFileLocation");
 	file_type_quark       = g_quark_from_string("KzBookmarkFile::FileType");
 	interval_quark        = g_quark_from_string("KzBookmarkFile::Interval");
Index: kazehakase/src/bookmarks/kz-bookmark-file.h
diff -u kazehakase/src/bookmarks/kz-bookmark-file.h:1.9 kazehakase/src/bookmarks/kz-bookmark-file.h:1.10
--- kazehakase/src/bookmarks/kz-bookmark-file.h:1.9	Mon Jan  1 19:35:14 2007
+++ kazehakase/src/bookmarks/kz-bookmark-file.h	Fri Jan  5 20:37:13 2007
@@ -18,7 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id: kz-bookmark-file.h,v 1.9 2007/01/01 10:35:14 ikezoe Exp $
+ *  $Id: kz-bookmark-file.h,v 1.10 2007/01/05 11:37:13 ikezoe Exp $
  */
 
 #ifndef __KZ_BOOKMARK_FILE_H__
@@ -68,6 +68,7 @@
 	void (*load_completed)     (KzBookmarkFile  *bookmark_file);
 	void (*save_start)         (KzBookmarkFile  *bookmark_file);
 	void (*save_completed)     (KzBookmarkFile  *bookmark_file);
+	void (*update)             (KzBookmarkFile  *bookmark_file);
 
 	void (*error)              (KzBookmarkFile  *bookmark_file,
 				    const gchar     *message);
Index: kazehakase/src/bookmarks/kz-session.c
diff -u kazehakase/src/bookmarks/kz-session.c:1.12 kazehakase/src/bookmarks/kz-session.c:1.13
--- kazehakase/src/bookmarks/kz-session.c:1.12	Fri Jan  5 19:51:46 2007
+++ kazehakase/src/bookmarks/kz-session.c	Fri Jan  5 20:37:13 2007
@@ -18,7 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id: kz-session.c,v 1.12 2007/01/05 10:51:46 ikezoe Exp $
+ *  $Id: kz-session.c,v 1.13 2007/01/05 11:37:13 ikezoe Exp $
  */
 
 #include "kz-session.h"
@@ -36,11 +36,7 @@
 
 #define KZ_SESSION_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_SESSION, KzSessionPrivate))
 
-static void kz_bookmark_insert_child (KzBookmark *bookmark,
-				      KzBookmark *child,
-				      KzBookmark *sibling);
-static void kz_bookmark_remove_child (KzBookmark *bookmark,
-				      KzBookmark *child);
+static void kz_bookmark_file_update  (KzBookmarkFile *bookmark);
 
 static void cb_profile_changed (KzProfile *profile,
 				const gchar *section, const gchar *key,
@@ -52,14 +48,13 @@
 static void
 kz_session_class_init (KzSessionClass *klass)
 {
-	KzBookmarkClass *bookmark_class;
+	KzBookmarkFileClass *bookmark_file_class;
 	GObjectClass *object_class;
 
-	bookmark_class = (KzBookmarkClass *) klass;
 	object_class = (GObjectClass *) klass;
+	bookmark_file_class = (KzBookmarkFileClass *) klass;
 
-	bookmark_class->insert_child = kz_bookmark_insert_child;
-	bookmark_class->remove_child = kz_bookmark_remove_child;
+	bookmark_file_class->update  = kz_bookmark_file_update;
 
 	g_type_class_add_private(object_class, sizeof(KzSessionPrivate));
 }
@@ -147,122 +142,14 @@
 }
 
 static void
-save_session (KzBookmark *session)
+kz_bookmark_file_update (KzBookmarkFile *bookmark)
 {
-	KzSessionPrivate *priv = KZ_SESSION_GET_PRIVATE(session);
+	KzSessionPrivate *priv = KZ_SESSION_GET_PRIVATE(bookmark);
 
 	if (priv->frozen)
 		return;
 
 	if (priv->auto_save)
-		kz_bookmark_file_save(KZ_BOOKMARK_FILE(session));
-}
-
-static void
-cb_window_notify (GObject *object, GParamSpec *spec, KzBookmark *session)
-{
-	save_session(session);
-}
-
-static void
-cb_bookmark_notify (GObject *object, GParamSpec *spec, KzBookmark *session)
-{
-	save_session(session);
-}
-
-static void
-cb_tab_notify (GObject *object, GParamSpec *spec, KzBookmark *session)
-{
-	save_session(session);
-}
-
-static void
-cb_insert_child (KzBookmark *folder, KzBookmark *child, KzBookmark *sibling, KzBookmark *session)
-{
-	g_signal_connect_after(child, "notify",
-			       G_CALLBACK(cb_bookmark_notify),
-			       session);
-	save_session(session);
-}
-
-static void
-cb_remove_child (KzBookmark *folder, KzBookmark *child, KzBookmark *session)
-{
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_bookmark_notify), session);
-	save_session(session);
-}
-
-static void
-cb_tab_created (KzBookmark *folder, KzBookmark *child, KzBookmark *sibling, KzBookmark *session)
-{
-	g_signal_connect_after(child, "insert-child",
-			 G_CALLBACK(cb_insert_child),
-			 session);
-	g_signal_connect_after(child, "remove-child",
-			 G_CALLBACK(cb_remove_child),
-			 session);	
-	g_signal_connect_after(child, "notify",
-			       G_CALLBACK(cb_tab_notify),
-			       session);
-	save_session(session);
-}
-
-static void
-cb_tab_removed (KzBookmark *folder, KzBookmark *child, KzBookmark *session)
-{
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_insert_child), session);
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_remove_child), session);
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_tab_notify), session);
-	save_session(session);
-}
-
-static void
-kz_bookmark_insert_child (KzBookmark *bookmark,
-			  KzBookmark *child,
-			  KzBookmark *sibling)
-{
-	if (KZ_BOOKMARK_CLASS (kz_session_parent_class)->insert_child)
-		KZ_BOOKMARK_CLASS (kz_session_parent_class)->insert_child(bookmark, child, sibling);
-	/* 
-	 * This session folder contains each tab.
-	 * We have to watch each folder.
-	 */
-	g_signal_connect_after(child, "insert-child",
-			 G_CALLBACK(cb_tab_created),
-			 bookmark);
-	g_signal_connect_after(child, "remove-child",
-			 G_CALLBACK(cb_tab_removed),
-			 bookmark);	
-	g_signal_connect_after(child, "notify",
-			       G_CALLBACK(cb_window_notify),
-			       bookmark);
-	save_session(bookmark);
-}
-
-static void
-kz_bookmark_remove_child (KzBookmark *bookmark, KzBookmark *child)
-{
-	if (KZ_BOOKMARK_CLASS (kz_session_parent_class)->remove_child)
-		KZ_BOOKMARK_CLASS (kz_session_parent_class)->remove_child(bookmark, child);
-
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_tab_created), bookmark);
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_tab_removed), bookmark);
-	g_signal_handlers_disconnect_by_func
-		(child,
-		 G_CALLBACK(cb_window_notify), bookmark);
-
-	save_session(bookmark);
+		kz_bookmark_file_save(bookmark);
 }
 
Index: kazehakase/src/bookmarks/kz-xbel.c
diff -u kazehakase/src/bookmarks/kz-xbel.c:1.68 kazehakase/src/bookmarks/kz-xbel.c:1.69
--- kazehakase/src/bookmarks/kz-xbel.c:1.68	Fri Jan  6 11:58:42 2006
+++ kazehakase/src/bookmarks/kz-xbel.c	Fri Jan  5 20:37:13 2007
@@ -17,7 +17,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id: kz-xbel.c,v 1.68 2006/01/06 02:58:42 makeinu Exp $
+ *  $Id: kz-xbel.c,v 1.69 2007/01/05 11:37:13 ikezoe Exp $
  */
 
 #include "kazehakase.h"
@@ -47,15 +47,20 @@
 					    KzBookmark  *parent,
 					    KzBookmark  *sibling);
 static void     kz_xbel_remove_xml_node    (KzBookmark  *bookmark);
-static void     kz_xbel_connect_signals    (KzBookmark  *bookmark);
-static void     kz_xbel_disconnect_signals (KzBookmark  *bookmark);
+static void     kz_xbel_connect_signals    (KzBookmark  *bookmark,
+					    gpointer     data);
+static void     kz_xbel_disconnect_signals (KzBookmark  *bookmark,
+					    gpointer     data);
 static void     cb_bookmark_insert_child   (KzBookmark  *bookmark,
 					    KzBookmark  *child,
-					    KzBookmark  *sibling);
+					    KzBookmark  *sibling,
+					    gpointer     data);
 static void     cb_bookmark_remove_child   (KzBookmark  *bookmark,
-					    KzBookmark  *child);
+					    KzBookmark  *child,
+					    gpointer     data);
 static void     cb_bookmark_notify         (GObject     *object,
-					    GParamSpec  *spec);
+					    GParamSpec  *spec,
+					    gpointer     data);
 
 static void     xml_node_set_title         (KzXMLNode   *parent,
 					    const gchar *title);
@@ -144,9 +149,9 @@
 	g_signal_connect(bookmark, "notify",
 			 G_CALLBACK(kz_xbel_notify), xml);
 	g_signal_connect_after(bookmark, "insert-child",
-			       G_CALLBACK(cb_bookmark_insert_child), xml);
+			       G_CALLBACK(cb_bookmark_insert_child), bookmark);
 	g_signal_connect_after(bookmark, "remove-child",
-			       G_CALLBACK(cb_bookmark_remove_child), xml);
+			       G_CALLBACK(cb_bookmark_remove_child), bookmark);
 }
 
 
@@ -259,6 +264,9 @@
 		g_free(title);
 	}
 	g_value_unset(&value);
+
+	/* emit update signal */
+	g_signal_emit_by_name(object, "update", 0);
 }
 
 
@@ -1161,20 +1169,20 @@
 
 
 static void
-kz_xbel_connect_signals (KzBookmark *bookmark)
+kz_xbel_connect_signals (KzBookmark *bookmark, gpointer data)
 {
 	g_signal_connect(bookmark, "notify",
-			 G_CALLBACK(cb_bookmark_notify), NULL);
+			 G_CALLBACK(cb_bookmark_notify), data);
 
 	if (KZ_IS_BOOKMARK_FILE(bookmark)) return;
 	if (!kz_bookmark_is_folder(bookmark)) return;
 
 	g_signal_connect_after(bookmark, "insert-child",
 			       G_CALLBACK(cb_bookmark_insert_child),
-			       NULL);
+			       data);
 	g_signal_connect_after(bookmark, "remove-child",
 			       G_CALLBACK(cb_bookmark_remove_child),
-			       NULL);
+			       data);
 
 	/* for children */
 	{
@@ -1184,7 +1192,7 @@
 		for (node = children; node; node = g_list_next(node))
 		{
 			KzBookmark *child = node->data;
-			kz_xbel_connect_signals(child);
+			kz_xbel_connect_signals(child, data);
 		}
 		g_list_free(children);
 	}
@@ -1192,21 +1200,21 @@
 
 
 static void
-kz_xbel_disconnect_signals (KzBookmark *bookmark)
+kz_xbel_disconnect_signals (KzBookmark *bookmark, gpointer data)
 {
 	g_signal_handlers_disconnect_by_func
 		(bookmark,
-		 G_CALLBACK(cb_bookmark_notify), NULL);
+		 G_CALLBACK(cb_bookmark_notify), data);
 
 	if (KZ_IS_BOOKMARK_FILE(bookmark)) return;
 	if (!kz_bookmark_is_folder(bookmark)) return;
 
 	g_signal_handlers_disconnect_by_func
 		(bookmark,
-		 G_CALLBACK(cb_bookmark_insert_child), NULL);
+		 G_CALLBACK(cb_bookmark_insert_child), data);
 	g_signal_handlers_disconnect_by_func
 		(bookmark,
-		 G_CALLBACK(cb_bookmark_remove_child), NULL);
+		 G_CALLBACK(cb_bookmark_remove_child), data);
 
 	/* for children */
 	{
@@ -1216,7 +1224,7 @@
 		for (node = children; node; node = g_list_next(node))
 		{
 			KzBookmark *child = node->data;
-			kz_xbel_disconnect_signals(child);
+			kz_xbel_disconnect_signals(child, data);
 		}
 		g_list_free(children);
 	}
@@ -1225,18 +1233,23 @@
 
 static void
 cb_bookmark_insert_child (KzBookmark *bookmark,
-			  KzBookmark *child, KzBookmark *sibling)
+			  KzBookmark *child, KzBookmark *sibling,
+			  gpointer data)
 {
 	kz_xbel_insert_xml_node(child, bookmark, sibling);
-	kz_xbel_connect_signals(child);
+	kz_xbel_connect_signals(child, data);
+
+	g_signal_emit_by_name(G_OBJECT(data), "update", 0);
 }
 
 
 static void
-cb_bookmark_remove_child (KzBookmark *bookmark, KzBookmark *child)
+cb_bookmark_remove_child (KzBookmark *bookmark, KzBookmark *child, gpointer data)
 {
-	kz_xbel_disconnect_signals(child);
+	kz_xbel_disconnect_signals(child, data);
 	kz_xbel_remove_xml_node(child);
+
+	g_signal_emit_by_name(G_OBJECT(data), "update", 0);
 }
 
 
@@ -1328,7 +1341,7 @@
 
 
 static void
-cb_bookmark_notify (GObject *object, GParamSpec *pspec)
+cb_bookmark_notify (GObject *object, GParamSpec *pspec, gpointer data)
 {
 	KzBookmark *bookmark;
 	KzXMLNode *node;
@@ -1520,6 +1533,7 @@
 		kz_xml_node_set_attr(metanode, "kz:javascript", str);
 	}
 	g_value_unset(&value);
+	g_signal_emit_by_name(G_OBJECT(data), "update", 0);
 }
 
 


More information about the Kazehakase-cvs mailing list
Back to archive index