SF.net SVN: geany:[2935] branches/split-window-plugin

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Sep 10 14:49:17 UTC 2008


Revision: 2935
          http://geany.svn.sourceforge.net/geany/?rev=2935&view=rev
Author:   ntrel
Date:     2008-09-10 14:49:16 +0000 (Wed, 10 Sep 2008)

Log Message:
-----------
Move menu items to a submenu.

Modified Paths:
--------------
    branches/split-window-plugin/ChangeLog
    branches/split-window-plugin/plugins/splitwindow.c

Modified: branches/split-window-plugin/ChangeLog
===================================================================
--- branches/split-window-plugin/ChangeLog	2008-09-10 14:29:16 UTC (rev 2934)
+++ branches/split-window-plugin/ChangeLog	2008-09-10 14:49:16 UTC (rev 2935)
@@ -1,8 +1,10 @@
-2008-09-10  Nick Treleaven  <nmt at localhost.localdomain>
+2008-09-10  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * plugins/splitwindow.c:
    Add Unsplit command.
    Clean up menus and split window when unloading plugin.
+ * plugins/splitwindow.c:
+   Move menu items to a submenu.
 
 
 2008-08-26  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: branches/split-window-plugin/plugins/splitwindow.c
===================================================================
--- branches/split-window-plugin/plugins/splitwindow.c	2008-09-10 14:29:16 UTC (rev 2934)
+++ branches/split-window-plugin/plugins/splitwindow.c	2008-09-10 14:49:16 UTC (rev 2935)
@@ -40,17 +40,23 @@
 GeanyData *geany_data;
 GeanyFunctions *geany_functions;
 
-enum Command
+enum State
 {
-	ITEM_SPLIT_HORIZONTAL,
-	/* ITEM_SPLIT_VERTICAL, */
-	ITEM_UNSPLIT,
-	ITEM_COUNT
+	STATE_SPLIT_HORIZONTAL,
+	/* STATE_SPLIT_VERTICAL, */
+	STATE_UNSPLIT,
+	STATE_COUNT
 };
 
-static GtkWidget *menu_items_array[ITEM_COUNT];
-static GtkWidget **menu_items = menu_items_array;	/* avoid gcc warning when casting to (gpointer*) */
-static enum Command plugin_state;
+static struct
+{
+	GtkWidget *main;
+	GtkWidget *horizontal;
+	GtkWidget *unsplit;
+}
+menu_items;
+
+static enum State plugin_state;
 static GeanyEditor *our_editor = NULL;
 
 
@@ -157,12 +163,12 @@
 }
 
 
-static void set_state(enum Command id)
+static void set_state(enum State id)
 {
-	gtk_widget_set_sensitive(menu_items[ITEM_SPLIT_HORIZONTAL],
-		id != ITEM_SPLIT_HORIZONTAL);
-	gtk_widget_set_sensitive(menu_items[ITEM_UNSPLIT],
-		id != ITEM_UNSPLIT);
+	gtk_widget_set_sensitive(menu_items.horizontal,
+		id != STATE_SPLIT_HORIZONTAL);
+	gtk_widget_set_sensitive(menu_items.unsplit,
+		id != STATE_UNSPLIT);
 		
 	plugin_state = id;
 }
@@ -177,7 +183,7 @@
 	ScintillaObject *sci;
 	gpointer sdoc;
 
-	set_state(ITEM_SPLIT_HORIZONTAL);
+	set_state(STATE_SPLIT_HORIZONTAL);
 	
 	g_return_if_fail(doc);
 	g_return_if_fail(our_editor == NULL);
@@ -207,7 +213,7 @@
 	GtkWidget *pane = gtk_widget_get_parent(notebook);
 	GtkWidget *parent = gtk_widget_get_parent(pane);
 
-	set_state(ITEM_UNSPLIT);
+	set_state(STATE_UNSPLIT);
 	
 	g_return_if_fail(our_editor);
 
@@ -222,48 +228,36 @@
 }
 
 
-static void foreach_pointer(gpointer *items, gsize count, GFunc func, gpointer user_data)
+void plugin_init(GeanyData *data)
 {
-	gsize i;
+	GtkWidget *item, *menu;
 	
-	for (i = 0; i < count; i++)
-	{
-		func(items[i], user_data);
-	}
-}
-
-
-static void add_menu_item(gpointer data, gpointer user_data)
-{
-	GtkWidget *item = data;
+	menu_items.main = gtk_menu_item_new_with_mnemonic(_("_Split Window"));
+	gtk_menu_append(geany_data->main_widgets->tools_menu, menu_items.main);
 	
-	gtk_widget_show(item);
-	gtk_menu_append(geany_data->main_widgets->tools_menu, item);
-}
-
-
-void plugin_init(GeanyData *data)
-{
-	GtkWidget *item;
+	menu = gtk_menu_new();
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_items.main), menu);
 	
-	menu_items[ITEM_SPLIT_HORIZONTAL] = item =
-		gtk_menu_item_new_with_mnemonic(_("Split _Horizontally"));
+	menu_items.horizontal = item =
+		gtk_menu_item_new_with_mnemonic(_("_Horizontally"));
 	g_signal_connect(item, "activate", G_CALLBACK(on_split_view), NULL);
+	gtk_menu_append(menu, item);
 	
-	menu_items[ITEM_UNSPLIT] = item =
+	menu_items.unsplit = item =
 		gtk_menu_item_new_with_mnemonic(_("_Unsplit"));
 	g_signal_connect(item, "activate", G_CALLBACK(on_unsplit), NULL);
+	gtk_menu_append(menu, item);
 	
-	foreach_pointer((gpointer*)menu_items, ITEM_COUNT, add_menu_item, NULL);
+	gtk_widget_show_all(menu_items.main);
 
-	set_state(ITEM_UNSPLIT);
+	set_state(STATE_UNSPLIT);
 }
 
 
 void plugin_cleanup()
 {
-	if (plugin_state != ITEM_UNSPLIT)
+	if (plugin_state != STATE_UNSPLIT)
 		on_unsplit(NULL, NULL);
 	
-	foreach_pointer((gpointer*)menu_items, ITEM_COUNT, (GFunc)gtk_widget_destroy, NULL);
+	gtk_widget_destroy(menu_items.main);
 }


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



More information about the Commits mailing list