[Kazehakase-cvs] CVS update: kazehakase/src

Back to archive index

Hiroyuki Ikezoe ikezo****@users*****
Wed Jan 3 10:20:50 JST 2007


Index: kazehakase/src/kz-notebook.c
diff -u kazehakase/src/kz-notebook.c:1.1 kazehakase/src/kz-notebook.c:1.2
--- kazehakase/src/kz-notebook.c:1.1	Wed Jan  3 09:40:53 2007
+++ kazehakase/src/kz-notebook.c	Wed Jan  3 10:20:50 2007
@@ -23,15 +23,43 @@
 #include <gdk/gdkkeysyms.h>
 
 #include "gtk-utils.h"
-#include "kz-download-box.h"
-#include "kz-entry.h"
+#include "kz-tab-label.h"
 #include "kz-notebook.h"
+#include "kz-actions.h"
 
 enum {
 	PROP_0,
 	PROP_KZ_WINDOW
 };
 
+enum {
+	TARGET_KAZEHAKASE_TAB,
+	TARGET_NETSCAPE_URL,
+	TARGET_TEXT_URI_LIST,
+	TARGET_TEXT_PLAIN,
+	TARGET_STRING
+};
+
+static GtkTargetEntry url_drag_types [] =
+{
+        { "_KAZEHAKASE_TAB", 0, TARGET_KAZEHAKASE_TAB},
+        { "_NETSCAPE_URL",   0, TARGET_NETSCAPE_URL},
+	{ "text/uri-list",   0, TARGET_TEXT_URI_LIST},
+	{ "text/plain",      0, TARGET_TEXT_PLAIN},
+	{ "STRING",          0, TARGET_STRING}
+};
+
+static struct {
+	const gchar *pos;
+	const gchar *tab_act;
+	const gchar *sidebar_act;
+} positems[] = {
+	{"top",    "TabPosTop",    "SidebarPosTop"},
+	{"bottom", "TabPosBottom", "SidebarPosBottom"},
+	{"left",   "TabPosLeft",   "SidebarPosLeft"},
+	{"right",  "TabPosRight",  "SidebarPosRight"},
+};
+
 typedef struct _KzNotebookPrivate	KzNotebookPrivate;
 struct _KzNotebookPrivate
 {
@@ -39,23 +67,34 @@
 
 #define KZ_NOTEBOOK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_NOTEBOOK, KzNotebookPrivate))
 
-#define STATUS_LINK_MESSAGE "INTERNAL_LINK_MESSAGE"
-#define STATUS_GESTURE "INTERNAL_GESTURE"
-#define STATUS_SEARCH "INTERNAL_SEARCH"
-
 static GObject *constructor (GType type,
                              guint n_props,
                              GObjectConstructParam *props);
 
-static void dispose      (GObject         *object);
-static void set_property (GObject         *object,
-                          guint            prop_id,
-                          const GValue    *value,
-                          GParamSpec      *pspec);
-static void get_property (GObject         *object,
-                          guint            prop_id,
-                          GValue          *value,
-                          GParamSpec      *pspec);
+static void     dispose      (GObject         *object);
+static void     set_property (GObject         *object,
+			      guint            prop_id,
+			      const GValue    *value,
+			      GParamSpec      *pspec);
+static void     get_property (GObject         *object,
+			      guint            prop_id,
+			      GValue          *value,
+			      GParamSpec      *pspec);
+
+static gboolean scroll_event (GtkWidget       *widget,
+			      GdkEventScroll  *event);
+
+static void     drag_data_received
+			     (GtkWidget *widget,
+			      GdkDragContext *context,
+			      gint x, gint y,
+			      GtkSelectionData *data,
+			      guint info,
+			      guint time);
+
+static void     switch_page  (GtkNotebook     *notebook,
+			      GtkNotebookPage *page,
+			      guint 	   page_num);
 
 G_DEFINE_TYPE (KzNotebook, kz_notebook, GTK_TYPE_NOTEBOOK)
 
@@ -64,9 +103,11 @@
 {
 	GObjectClass *gobject_class;
 	GtkWidgetClass *widget_class;
+	GtkNotebookClass *notebook_class;
 
-	gobject_class = (GObjectClass *)klass;
-	widget_class  = (GtkWidgetClass *)klass;
+	gobject_class  = (GObjectClass *)klass;
+	widget_class   = (GtkWidgetClass *)klass;
+	notebook_class = (GtkNotebookClass *)klass;
 
 	/* GtkObject signals */
 	gobject_class->constructor  = constructor;
@@ -74,6 +115,11 @@
 	gobject_class->set_property = set_property;
 	gobject_class->get_property = get_property;
 
+	widget_class->scroll_event       = scroll_event;
+	widget_class->drag_data_received = drag_data_received;
+
+	notebook_class->switch_page = switch_page;
+
 	g_object_class_install_property
 		(gobject_class,
 		 PROP_KZ_WINDOW,
@@ -91,10 +137,13 @@
 static void
 kz_notebook_init (KzNotebook *notebook)
 {
-	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE (notebook);
-
 	/* widgets */
 	notebook->kz = NULL;
+
+	gtk_drag_dest_set(GTK_WIDGET(notebook),
+			  GTK_DEST_DEFAULT_ALL,
+			  url_drag_types, G_N_ELEMENTS(url_drag_types),
+			  GDK_ACTION_MOVE);
 }
 
 
@@ -106,7 +155,6 @@
 	KzNotebook *notebook;
 	GObject *object;
 	GObjectClass *klass = G_OBJECT_CLASS(kz_notebook_parent_class);
-	GtkWidget *widget;
 
 	object = klass->constructor(type, n_props, props);
 
@@ -169,7 +217,6 @@
 dispose (GObject *object)
 {
 	KzNotebook *notebook = KZ_NOTEBOOK(object);
-	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE (notebook);
 
 	if (notebook->kz)
 	{
@@ -178,6 +225,112 @@
 	}
 
 	if (G_OBJECT_CLASS(kz_notebook_parent_class)->dispose)
-		(*G_OBJECT_CLASS(kz_notebook_parent_class)->dispose) (object);
+		G_OBJECT_CLASS(kz_notebook_parent_class)->dispose(object);
+}
+
+static gboolean
+scroll_event (GtkWidget *widget, GdkEventScroll *event)
+{
+	GtkAction *action;
+	KzWindow *kz = KZ_NOTEBOOK(widget)->kz;
+
+	g_return_val_if_fail(KZ_IS_WINDOW(kz), FALSE);
+
+	switch (event->direction)
+	{
+	case GDK_SCROLL_UP:
+	case GDK_SCROLL_LEFT:
+		action = gtk_action_group_get_action(kz->actions, "PrevTab");
+		gtk_action_activate(action);
+		return TRUE;
+		break;
+	case GDK_SCROLL_DOWN:
+	case GDK_SCROLL_RIGHT:
+		action = gtk_action_group_get_action(kz->actions, "NextTab");
+		gtk_action_activate(action);
+		return TRUE;
+		break;
+	default:
+		g_warning ("Invalid scroll direction!");
+		break;
+	}
+
+	return FALSE;
+}
+
+static void
+drag_data_received (GtkWidget *widget,
+                    GdkDragContext *context,
+                    gint x, gint y,
+                    GtkSelectionData *data,
+                    guint info,
+                    guint time)
+{
+	KzWindow *kz = KZ_NOTEBOOK(widget)->kz;
+	g_return_if_fail(KZ_IS_WINDOW(kz));
+
+	switch (info)
+	{
+	case TARGET_KAZEHAKASE_TAB:
+	{
+		GtkWidget *src_widget;
+		KzWindow *src_kz;
+		KzTabLabel *src_kztab;
+
+		src_widget = gtk_drag_get_source_widget(context);
+
+		if (!KZ_IS_TAB_LABEL(src_widget)) return;
+		src_kztab = KZ_TAB_LABEL(src_widget);
+
+		src_kz = KZ_WINDOW(kz_window_get_from_tab(GTK_WIDGET(src_kztab->kzembed)));
+		if (kz == src_kz)
+		{
+			gint n;
+
+			n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(kz->notebook));
+			kz_window_reorder_tab(kz, GTK_WIDGET(src_kztab->kzembed),
+					      n - 1);
+			kz_actions_set_sensitive
+				(kz, KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)));
+			kz_actions_set_tab_sensitive
+				(kz, KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)));
+		}
+		else
+		{
+			kz_window_move_tab(kz, GTK_WIDGET(src_kztab->kzembed));
+		}
+
+		break;
+	}
+
+	case TARGET_NETSCAPE_URL:
+	case TARGET_TEXT_URI_LIST:
+	case TARGET_TEXT_PLAIN:
+	case TARGET_STRING:
+	{
+		gchar *string, **strings;
+
+		if (data->length < 0) return;
+		string = g_alloca (data->length + 1);
+
+		memcpy (string, data->data, data->length);
+		string[data->length] = '\0';
+
+		strings = g_strsplit(string, "\n", 2);
+		kz_window_open_new_tab(kz, strings[0]);
+		g_strfreev(strings);
+		break;
+
+	}
+	default:
+		break;
+	}
+}
+
+static void
+switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num)
+{
+	if (GTK_NOTEBOOK_CLASS(kz_notebook_parent_class)->switch_page)
+		GTK_NOTEBOOK_CLASS(kz_notebook_parent_class)->switch_page(notebook, page, page_num);
 }
 
Index: kazehakase/src/kz-window.c
diff -u kazehakase/src/kz-window.c:1.288 kazehakase/src/kz-window.c:1.289
--- kazehakase/src/kz-window.c:1.288	Wed Jan  3 09:40:53 2007
+++ kazehakase/src/kz-window.c	Wed Jan  3 10:20:50 2007
@@ -106,15 +106,6 @@
 	TARGET_STRING
 };
 
-static GtkTargetEntry url_drag_types [] =
-{
-        { "_KAZEHAKASE_TAB", 0, TARGET_KAZEHAKASE_TAB},
-        { "_NETSCAPE_URL",   0, TARGET_NETSCAPE_URL},
-	{ "text/uri-list",   0, TARGET_TEXT_URI_LIST},
-	{ "text/plain",      0, TARGET_TEXT_PLAIN},
-	{ "STRING",          0, TARGET_STRING}
-};
-
 static struct {
 	const gchar *pos;
 	const gchar *tab_act;
@@ -213,9 +204,6 @@
 static void     cb_gesture_stack_motion       (KzGesture       *gesture,
 					       KzGestureMotion  motion,
 					       KzWindow        *kz);
-static gboolean cb_notebook_scroll_event      (GtkWidget       *widget,
-					       GdkEventScroll  *event,
-					       KzWindow        *kz);
 static void     cb_sidebar_map                (GtkWidget       *widget,
 					       GtkToggleAction *action);
 static void     cb_sidebar_unmap              (GtkWidget       *widget,
@@ -277,16 +265,6 @@
 						GdkEventScroll *event,
 						KzEmbed        *kzembed);
 
-/* notebook received dropped url */
-static void     cb_notebook_drag_data_received (GtkWidget        *widget,
-						GdkDragContext   *drag_context,
-						gint              x,
-						gint              y,
-						GtkSelectionData *data,
-						guint             info,
-						guint             time,
-						KzWindow         *kz);
-
 static void     gtk_key_theme_changed_cb       (GtkSettings  *settings,
                                                 GParamSpec   *pspec,
                                                 gpointer dummy);
@@ -584,16 +562,7 @@
 				 G_CALLBACK(cb_notebook_switch_page), kz);
 		g_signal_connect_after(kz->notebook, "switch-page",
 				 G_CALLBACK(cb_notebook_switch_page_after), kz);
-		g_signal_connect(kz->notebook, "scroll-event",
-				 G_CALLBACK(cb_notebook_scroll_event), kz);
 
-		gtk_drag_dest_set(GTK_WIDGET(kz->notebook),
-				  GTK_DEST_DEFAULT_ALL,
-				  url_drag_types, G_N_ELEMENTS (url_drag_types),
-				  GDK_ACTION_MOVE);
-		g_signal_connect(kz->notebook, "drag-data-received",
-				 G_CALLBACK(cb_notebook_drag_data_received),
-				 kz);
 		gtk_paned_add2(GTK_PANED(kz->pane), kz->notebook);
 		gtk_widget_show(kz->notebook);
 
@@ -2394,14 +2363,6 @@
 	return FALSE;
 }
 
-static gboolean
-cb_notebook_scroll_event (GtkWidget *widget, GdkEventScroll *event,
-			  KzWindow *kz)
-{
-	return handle_scroll_event (kz, event->direction);
-}
-
-
 static void
 cb_sidebar_map (GtkWidget *widget, GtkToggleAction *action)
 {
@@ -3006,75 +2967,6 @@
 	return retval;
 }
 
-static void
-cb_notebook_drag_data_received (GtkWidget *widget,
-				GdkDragContext *drag_context,
-				gint x, gint y,
-				GtkSelectionData *data,
-				guint info,
-				guint time,
-				KzWindow *kz)
-{
-	g_return_if_fail(KZ_IS_WINDOW(kz));
-
-	switch (info)
-	{
-	case TARGET_KAZEHAKASE_TAB:
-	{
-		GtkWidget *src_widget;
-		KzWindow *src_kz;
-		KzTabLabel *src_kztab;
-
-		src_widget = gtk_drag_get_source_widget(drag_context);
-
-		if (!KZ_IS_TAB_LABEL(src_widget)) return;
-		src_kztab = KZ_TAB_LABEL(src_widget);
-
-		src_kz = KZ_WINDOW(kz_window_get_from_tab(GTK_WIDGET(src_kztab->kzembed)));
-		if (kz == src_kz)
-		{
-			gint n;
-
-			n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(kz->notebook));
-			kz_window_reorder_tab(kz, GTK_WIDGET(src_kztab->kzembed),
-					      n - 1);
-			kz_actions_set_sensitive
-				(kz, KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)));
-			kz_actions_set_tab_sensitive
-				(kz, KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)));
-		}
-		else
-		{
-			kz_window_move_tab(kz, GTK_WIDGET(src_kztab->kzembed));
-		}
-
-		break;
-	}
-
-	case TARGET_NETSCAPE_URL:
-	case TARGET_TEXT_URI_LIST:
-	case TARGET_TEXT_PLAIN:
-	case TARGET_STRING:
-	{
-		gchar *string, **strings;
-
-		if (data->length < 0) return;
-		string = g_alloca (data->length + 1);
-
-		memcpy (string, data->data, data->length);
-		string[data->length] = '\0';
-
-		strings = g_strsplit(string, "\n", 2);
-		kz_window_open_new_tab(kz, strings[0]);
-		g_strfreev(strings);
-		break;
-
-	}
-	default:
-		break;
-	}
-}
-
 static gboolean 
 cb_focus_out_event            (GtkWidget       *widget,
 			       GdkEventFocus   *event,


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