SF.net SVN: geany-plugins:[1993] trunk/geany-plugins/devhelp/src

codebrainz at users.sourceforge.net codebrainz at xxxxx
Thu Mar 17 03:52:30 UTC 2011


Revision: 1993
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1993&view=rev
Author:   codebrainz
Date:     2011-03-17 03:52:29 +0000 (Thu, 17 Mar 2011)

Log Message:
-----------
Make Devhelp plugin cooperate with Split Window plugin.

Modified Paths:
--------------
    trunk/geany-plugins/devhelp/src/devhelpplugin.h
    trunk/geany-plugins/devhelp/src/main-notebook.c

Modified: trunk/geany-plugins/devhelp/src/devhelpplugin.h
===================================================================
--- trunk/geany-plugins/devhelp/src/devhelpplugin.h	2011-03-17 00:23:50 UTC (rev 1992)
+++ trunk/geany-plugins/devhelp/src/devhelpplugin.h	2011-03-17 03:52:29 UTC (rev 1993)
@@ -25,22 +25,21 @@
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
+
 #ifndef DHPLUG_DATA_DIR
 #define DHPLUG_DATA_DIR "/usr/local/share/geany-devhelp"
 #endif
+
 #define DHPLUG_WEBVIEW_HOME_FILE DHPLUG_DATA_DIR"/home.html"
-#define DHPLUG_MAX_LABEL_TAG 30
+#define DHPLUG_MAX_LABEL_TAG 30 /* never search for more than this many chars */
+
 #define DEVHELP_TYPE_PLUGIN				(devhelp_plugin_get_type())
-#define DEVHELP_PLUGIN(obj)				(G_TYPE_CHECK_INSTANCE_CAST((obj),\
-			DEVHELP_TYPE_PLUGIN, DevhelpPlugin))
-#define DEVHELP_PLUGIN_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST((klass),\
-			DEVHELP_TYPE_PLUGIN, DevhelpPluginClass))
-#define DEVHELP_IS_PLUGIN(obj)			(G_TYPE_CHECK_INSTANCE_TYPE((obj),\
-			DEVHELP_TYPE_PLUGIN))
-#define DEVHELP_IS_PLUGIN_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE((klass),\
-			DEVHELP_TYPE_PLUGIN))
-#define DEVHELP_PLUGIN_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj),\
-			DEVHELP_TYPE_PLUGIN, DevhelpPluginClass))
+#define DEVHELP_PLUGIN(obj)				(G_TYPE_CHECK_INSTANCE_CAST((obj), DEVHELP_TYPE_PLUGIN, DevhelpPlugin))
+#define DEVHELP_PLUGIN_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST((klass), DEVHELP_TYPE_PLUGIN, DevhelpPluginClass))
+#define DEVHELP_IS_PLUGIN(obj)			(G_TYPE_CHECK_INSTANCE_TYPE((obj), DEVHELP_TYPE_PLUGIN))
+#define DEVHELP_IS_PLUGIN_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE((klass), DEVHELP_TYPE_PLUGIN))
+#define DEVHELP_PLUGIN_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), DEVHELP_TYPE_PLUGIN, DevhelpPluginClass))
+			
 typedef struct _DevhelpPlugin DevhelpPlugin;
 typedef struct _DevhelpPluginClass DevhelpPluginClass;
 typedef struct _DevhelpPluginPrivate DevhelpPluginPrivate;
@@ -88,14 +87,11 @@
 
 
 GType devhelp_plugin_get_type(void);
-DevhelpPlugin *devhelp_plugin_new(gboolean sb_tabs_bottom,
-                                  gboolean show_in_msgwin, gchar * last_uri);
-
+DevhelpPlugin *devhelp_plugin_new(gboolean sb_tabs_bottom, gboolean show_in_msgwin, gchar * last_uri);
 gchar *devhelp_plugin_clean_word(gchar * str);
 gchar *devhelp_plugin_get_current_tag(void);
 void devhelp_plugin_activate_tabs(DevhelpPlugin * dhplug, gboolean contents);
-void devhelp_plugin_sidebar_tabs_bottom(DevhelpPlugin * dhplug,
-                                        gboolean bottom);
+void devhelp_plugin_sidebar_tabs_bottom(DevhelpPlugin * dhplug, gboolean bottom);
 
 G_END_DECLS
 #endif /* __DEVHELPPLUGIN_H__ */

Modified: trunk/geany-plugins/devhelp/src/main-notebook.c
===================================================================
--- trunk/geany-plugins/devhelp/src/main-notebook.c	2011-03-17 00:23:50 UTC (rev 1992)
+++ trunk/geany-plugins/devhelp/src/main-notebook.c	2011-03-17 03:52:29 UTC (rev 1993)
@@ -64,7 +64,7 @@
  */
 void main_notebook_destroy(void)
 {	
-	GtkWidget *main_notebook, *doc_nb_parent, *vbox;
+	GtkWidget *main_notebook, *doc_nb_parent, *vbox, *doc_nb;
 	
 	if (!main_notebook_needs_destroying())
 		return;
@@ -73,15 +73,21 @@
 									"main_notebook");
 
 	doc_nb_parent = gtk_widget_get_parent(main_notebook);
+	doc_nb = g_object_get_data(G_OBJECT(main_notebook), "doc_notebook");
 	
 	/* temporarily disable the notebook to prevent a segfault when
 	 * on_editor_focus_in() calls editor_check_colorize(). */
-	gtk_widget_set_sensitive(geany->main_widgets->notebook, FALSE);	
-	
+	gtk_widget_set_sensitive(geany->main_widgets->notebook, FALSE);
+
 	vbox = ui_lookup_widget(geany->main_widgets->window, "vbox1");
-	gtk_widget_reparent(geany->main_widgets->notebook, vbox);
-	gtk_widget_destroy(main_notebook);
-	gtk_widget_reparent(geany->main_widgets->notebook, doc_nb_parent);
+	if (GTK_IS_WIDGET(doc_nb) && doc_nb->parent != NULL)
+	{
+		gtk_widget_ref(doc_nb);
+		gtk_container_remove(GTK_CONTAINER(main_notebook), doc_nb);
+		gtk_widget_destroy(main_notebook);
+		gtk_container_add(GTK_CONTAINER(doc_nb_parent), doc_nb);
+		gtk_widget_unref(doc_nb);
+	}
 	
 	gtk_widget_set_sensitive(geany->main_widgets->notebook, TRUE);
 }
@@ -104,6 +110,7 @@
 		return create_main_notebook();
 }
 
+
 /* we need this since ui_lookup_widget() doesn't seem to realize when
  * the main_notebook widget is destroyed and so keeps returning something
  * even when main_notebook is gone. */
@@ -135,24 +142,40 @@
  */
 static GtkWidget *create_main_notebook(void)
 {
-	GtkWidget *main_notebook, *doc_nb_box, *doc_nb_parent, *code_label, *vbox;
+	GtkWidget *main_notebook, *doc_nb_box, *doc_nb_parent;
+	GtkWidget *vbox, *doc_nb;
 
 	if (main_notebook_exists())
 		return NULL;
 	
-	code_label = gtk_label_new(_("Code"));
-	main_notebook = gtk_notebook_new();
 	doc_nb_box = gtk_vbox_new(FALSE, 0);
 	vbox = ui_lookup_widget(geany->main_widgets->window, "vbox1");
-	doc_nb_parent = gtk_widget_get_parent(geany->main_widgets->notebook);
 	
+	main_notebook = gtk_notebook_new();
 	gtk_widget_set_name(main_notebook, "main_notebook");
-	gtk_notebook_append_page(GTK_NOTEBOOK(main_notebook), doc_nb_box, code_label);
-	gtk_widget_reparent(geany->main_widgets->notebook, vbox);
+	
+	doc_nb_parent = gtk_widget_get_parent(geany->main_widgets->sidebar_notebook);
+	
+	/* sidebar on left */
+	if (gtk_paned_get_child1(GTK_PANED(doc_nb_parent)) == geany->main_widgets->sidebar_notebook)
+		doc_nb = gtk_paned_get_child2(GTK_PANED(doc_nb_parent));
+	else /* sidebar on right */
+		doc_nb = gtk_paned_get_child1(GTK_PANED(doc_nb_parent));
+
+	gtk_notebook_append_page(GTK_NOTEBOOK(main_notebook), 
+							 doc_nb_box,
+							 gtk_label_new(_("Code")));
+	
+	gtk_widget_ref(doc_nb);
+	gtk_container_remove(GTK_CONTAINER(doc_nb_parent), doc_nb);
+
 	gtk_container_add(GTK_CONTAINER(doc_nb_parent), main_notebook);
-	/*gtk_paned_pack2(GTK_PANED(doc_nb_parent), main_notebook, TRUE, TRUE);*/
 	gtk_widget_show_all(main_notebook);
-	gtk_widget_reparent(geany->main_widgets->notebook, doc_nb_box);
+	
+	gtk_container_add(GTK_CONTAINER(doc_nb_box), doc_nb);
+	gtk_widget_unref(doc_nb);
+	gtk_widget_show_all(doc_nb);
+
 	gtk_notebook_set_current_page(GTK_NOTEBOOK(main_notebook), 0);
 	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(main_notebook), GTK_POS_BOTTOM);
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Plugins-Commits mailing list