[geany/geany-plugins] de106a: lineoperations: Simplify menu building

Colomban Wendling git-noreply at xxxxx
Sun Jan 17 14:16:58 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sun, 17 Jan 2016 14:16:58 UTC
Commit:      de106a6b044d8296858e1559a7b402fa8424903f
             https://github.com/geany/geany-plugins/commit/de106a6b044d8296858e1559a7b402fa8424903f

Log Message:
-----------
lineoperations: Simplify menu building


Modified Paths:
--------------
    lineoperations/src/lineoperations.c

Modified: lineoperations/src/lineoperations.c
87 lines changed, 31 insertions(+), 56 deletions(-)
===================================================================
@@ -109,73 +109,48 @@ lo_init(GeanyPlugin *plugin, gpointer gdata)
 {
 	GeanyData *geany_data = plugin->geany_data;
 
-
 	GtkWidget *submenu;
-	GtkWidget *sep1;
-	GtkWidget *sep2;
-	GtkWidget *rmdupst_item;
-	GtkWidget *rmdupln_item;
-	GtkWidget *rmunqln_item;
-	GtkWidget *rmemtyln_item;
-	GtkWidget *rmwhspln_item;
-	GtkWidget *sortasc_item;
-	GtkWidget *sortdesc_item;
+	guint i;
+	struct {
+		const gchar *label;
+		GCallback cb_activate;
+	} menu_items[] = {
+		{ N_("Remove Duplicate Lines, _Sorted"), G_CALLBACK(action_rmdupst_item) },
+		{ N_("Remove Duplicate Lines, _Ordered"), G_CALLBACK(action_rmdupln_item) },
+		{ N_("Remove _Unique Lines"), G_CALLBACK(action_rmunqln_item) },
+		{ NULL },
+		{ N_("Remove _Empty Lines"), G_CALLBACK(action_rmemtyln_item) },
+		{ N_("Remove _Whitespace Lines"), G_CALLBACK(action_rmwhspln_item) },
+		{ NULL },
+		{ N_("Sort Lines _Ascending"), G_CALLBACK(action_sortasc_item) },
+		{ N_("Sort Lines _Descending"), G_CALLBACK(action_sortdesc_item) }
+	};
 
 	main_menu_item = gtk_menu_item_new_with_mnemonic(_("_Line Operations"));
 	gtk_widget_show(main_menu_item);
 
 	submenu = gtk_menu_new();
 	gtk_widget_show(submenu);
-	sep1 = gtk_separator_menu_item_new();
-	sep2 = gtk_separator_menu_item_new();
-	rmdupst_item  = gtk_menu_item_new_with_mnemonic(_("Remove Duplicate Lines, _Sorted"));
-	rmdupln_item  = gtk_menu_item_new_with_mnemonic(_("Remove Duplicate Lines, _Ordered"));
-	rmunqln_item  = gtk_menu_item_new_with_mnemonic(_("Remove _Unique Lines"));
-	rmemtyln_item = gtk_menu_item_new_with_mnemonic(_("Remove _Empty Lines"));
-	rmwhspln_item = gtk_menu_item_new_with_mnemonic(_("Remove _Whitespace Lines"));
-	sortasc_item  = gtk_menu_item_new_with_mnemonic(_("Sort Lines _Ascending"));
-	sortdesc_item = gtk_menu_item_new_with_mnemonic(_("Sort Lines _Descending"));
-
-	gtk_widget_show(sep1);
-	gtk_widget_show(sep2);
-	gtk_widget_show(rmdupst_item);
-	gtk_widget_show(rmdupln_item);
-	gtk_widget_show(rmunqln_item);
-	gtk_widget_show(rmemtyln_item);
-	gtk_widget_show(rmwhspln_item);
-	gtk_widget_show(sortasc_item);
-	gtk_widget_show(sortdesc_item);
-
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), rmdupst_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), rmdupln_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), rmunqln_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), sep1);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), rmemtyln_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), rmwhspln_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), sep2);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), sortasc_item);
-	gtk_menu_shell_append(GTK_MENU_SHELL(submenu), sortdesc_item);
 
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(main_menu_item), submenu);
+	for (i = 0; i < G_N_ELEMENTS(menu_items); i++)
+	{
+		GtkWidget *item;
 
-	gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item);
+		if (! menu_items[i].label) /* separator */
+			item = gtk_separator_menu_item_new();
+		else
+		{
+			item = gtk_menu_item_new_with_mnemonic(_(menu_items[i].label));
+			g_signal_connect(item, "activate", menu_items[i].cb_activate, NULL);
+			ui_add_document_sensitive(item);
+		}
 
+		gtk_widget_show(item);
+		gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item);
+	}
 
-	g_signal_connect(rmdupst_item, "activate", G_CALLBACK(action_rmdupst_item), NULL);
-	g_signal_connect(rmdupln_item, "activate", G_CALLBACK(action_rmdupln_item), NULL);
-	g_signal_connect(rmunqln_item, "activate", G_CALLBACK(action_rmunqln_item), NULL);
-	g_signal_connect(rmemtyln_item, "activate", G_CALLBACK(action_rmemtyln_item), NULL);
-	g_signal_connect(rmwhspln_item, "activate", G_CALLBACK(action_rmwhspln_item), NULL);
-	g_signal_connect(sortasc_item, "activate", G_CALLBACK(action_sortasc_item), NULL);
-	g_signal_connect(sortdesc_item, "activate", G_CALLBACK(action_sortdesc_item), NULL);
-
-	ui_add_document_sensitive(rmdupst_item);
-	ui_add_document_sensitive(rmdupln_item);
-	ui_add_document_sensitive(rmunqln_item);
-	ui_add_document_sensitive(rmemtyln_item);
-	ui_add_document_sensitive(rmwhspln_item);
-	ui_add_document_sensitive(sortasc_item);
-	ui_add_document_sensitive(sortdesc_item);
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(main_menu_item), submenu);
+	gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item);
 
 	return TRUE;
 }



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list