SF.net SVN: geany-plugins:[643] trunk/geanyvc/geanyvc.c

frlan at users.sourceforge.net frlan at xxxxx
Wed May 13 22:21:47 UTC 2009


Revision: 643
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=643&view=rev
Author:   frlan
Date:     2009-05-13 22:21:46 +0000 (Wed, 13 May 2009)

Log Message:
-----------
GeanyVC:
* Added option for configuring whether menuitem should appear on editor menu
* Moved init and removing of editor menu items into separate functions

Modified Paths:
--------------
    trunk/geanyvc/geanyvc.c

Modified: trunk/geanyvc/geanyvc.c
===================================================================
--- trunk/geanyvc/geanyvc.c	2009-05-13 22:20:28 UTC (rev 642)
+++ trunk/geanyvc/geanyvc.c	2009-05-13 22:21:46 UTC (rev 643)
@@ -68,6 +68,7 @@
 static gboolean set_add_confirmation;
 static gboolean set_maximize_commit_dialog;
 static gboolean set_external_diff;
+static gboolean set_editor_menu_entries;
 
 static gchar *config_file;
 
@@ -118,6 +119,8 @@
 static GtkWidget *menu_item_sep = NULL;
 
 static void registrate();
+static void add_menuitems_to_editor_menu();
+static void remove_menuitems_from_editor_menu();
 
 
 /* Doing some basic keybinding stuff */
@@ -1645,6 +1648,7 @@
 	GtkWidget *cb_confirm_add;
 	GtkWidget *cb_max_commit;
 	GtkWidget *cb_external_diff;
+	GtkWidget *cb_editor_menu_entries;
 	GtkWidget *cb_cvs;
 	GtkWidget *cb_git;
 	GtkWidget *cb_svn;
@@ -1677,6 +1681,9 @@
 		set_external_diff =
 			gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets.cb_external_diff));
 
+		set_editor_menu_entries =
+			gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets.cb_editor_menu_entries));
+
 		enable_cvs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets.cb_cvs));
 		enable_git = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets.cb_git));
 		enable_svn = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets.cb_svn));
@@ -1696,6 +1703,7 @@
 		g_key_file_set_boolean(config, "VC", "set_external_diff", set_external_diff);
 		g_key_file_set_boolean(config, "VC", "set_maximize_commit_dialog",
 				       set_maximize_commit_dialog);
+		g_key_file_set_boolean(config, "VC", "set_editor_menu_entries", set_editor_menu_entries);
 
 		g_key_file_set_boolean(config, "VC", "enable_cvs", enable_cvs);
 		g_key_file_set_boolean(config, "VC", "enable_git", enable_git);
@@ -1723,6 +1731,12 @@
 			g_free(data);
 		}
 
+		if (set_editor_menu_entries == FALSE)
+			remove_menuitems_from_editor_menu();
+		else
+			add_menuitems_to_editor_menu();
+
+
 		g_free(config_dir);
 		g_key_file_free(config);
 
@@ -1783,6 +1797,13 @@
 				     set_external_diff);
 	gtk_box_pack_start(GTK_BOX(vbox), widgets.cb_external_diff, TRUE, FALSE, 2);
 
+	widgets.cb_editor_menu_entries = gtk_check_button_new_with_label(_("Show VC entries at editor "));
+	gtk_tooltips_set_tip(tooltip, widgets.cb_editor_menu_entries,
+			     _("Show entries for VC functions inside editor menu"), NULL);
+	gtk_button_set_focus_on_click(GTK_BUTTON(widgets.cb_editor_menu_entries), FALSE);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets.cb_editor_menu_entries), set_editor_menu_entries);
+	gtk_box_pack_start(GTK_BOX(vbox), widgets.cb_editor_menu_entries, TRUE, FALSE, 2);
+
 	widgets.cb_cvs = gtk_check_button_new_with_label(_("Enable CVS"));
 	gtk_button_set_focus_on_click(GTK_BUTTON(widgets.cb_cvs), FALSE);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets.cb_cvs), enable_cvs);
@@ -1871,6 +1892,15 @@
 		error = NULL;
 	}
 
+	set_editor_menu_entries = g_key_file_get_boolean(config, "VC", "set_editor_menu_entries", &error);
+	if (error != NULL)
+	{
+		// Set default value
+		set_editor_menu_entries = FALSE;
+		g_error_free(error);
+		error = NULL;
+	}
+
 	enable_cvs = g_key_file_get_boolean(config, "VC", "enable_cvs", &error);
 	if (error != NULL)
 	{
@@ -2129,6 +2159,56 @@
 }
 
 static void
+add_menuitems_to_editor_menu()
+{
+	GtkTooltips *tooltips = NULL;
+	tooltips = gtk_tooltips_new();
+
+	/* Add file menu also to editor menu (at mouse cursor) */
+	if (set_editor_menu_entries == TRUE)
+	{
+		menu_item_sep = gtk_separator_menu_item_new();
+		gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), menu_item_sep);
+		do_current_file_menu(&editor_menu_vc, &tooltips, TRUE);
+		gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), editor_menu_vc);
+	}
+
+	/* Add commit item zo editor menu */
+	if (set_editor_menu_entries == TRUE)
+	{
+		editor_menu_commit = gtk_menu_item_new_with_mnemonic(_("VC _Commit"));
+		gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), editor_menu_commit);
+	}
+
+	g_signal_connect((gpointer) editor_menu_commit, "activate",
+		 G_CALLBACK(vccommit_activated), NULL);
+
+	gtk_widget_show_all(editor_menu_vc);
+	gtk_widget_show_all(editor_menu_commit);
+	gtk_widget_show_all(menu_item_sep);
+}
+
+static void
+remove_menuitems_from_editor_menu()
+{
+	if (editor_menu_vc != NULL)
+	{
+		gtk_widget_destroy(editor_menu_vc);
+		editor_menu_vc = NULL;
+	}
+	if (editor_menu_commit != NULL)
+	{
+		gtk_widget_destroy(editor_menu_commit);
+		editor_menu_commit = NULL;
+	}
+	if (menu_item_sep != NULL)
+	{
+		gtk_widget_destroy(menu_item_sep);
+		menu_item_sep = NULL;
+	}
+}
+
+static void
 init_keybindings(void)
 {
 	/* init keybindins */
@@ -2187,20 +2267,14 @@
 	do_current_file_menu(&menu_vc_file, &tooltips, FALSE);
 	gtk_container_add(GTK_CONTAINER(menu_vc_menu), menu_vc_file);
 
-	/* Add file menu also to editor menu (at mouse cursor) */
-	menu_item_sep = gtk_separator_menu_item_new();
-	gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), menu_item_sep);
-	do_current_file_menu(&editor_menu_vc, &tooltips, TRUE);
-	gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), editor_menu_vc);
-
 	/* Create the current directory Submenu */
 	do_current_dir_menu(&menu_vc_dir, &tooltips);
 	gtk_container_add(GTK_CONTAINER(menu_vc_menu), menu_vc_dir);
 	/* Create the current base directory Submenu */
 	do_basedir_menu(&menu_vc_basedir, &tooltips);
 	gtk_container_add(GTK_CONTAINER(menu_vc_menu), menu_vc_basedir);
+	gtk_container_add(GTK_CONTAINER(menu_vc_menu), gtk_separator_menu_item_new());
 
-	gtk_container_add(GTK_CONTAINER(menu_vc_menu), gtk_separator_menu_item_new());
 	/* Status of basedir */
 	menu_vc_status = gtk_menu_item_new_with_mnemonic(_("_Status"));
 	gtk_container_add(GTK_CONTAINER(menu_vc_menu), menu_vc_status);
@@ -2224,27 +2298,22 @@
 	gtk_container_add(GTK_CONTAINER(menu_vc_menu), menu_vc_commit);
 	gtk_tooltips_set_tip(tooltips, menu_vc_commit, _("Commit changes."), NULL);
 
-	/* Add commit item zo editor menu */
-	editor_menu_commit = gtk_menu_item_new_with_mnemonic(_("VC _Commit"));
-	gtk_container_add(GTK_CONTAINER(geany->main_widgets->editor_menu), editor_menu_commit);
-
 	g_signal_connect((gpointer) menu_vc_commit, "activate",
 			 G_CALLBACK(vccommit_activated), NULL);
-	g_signal_connect((gpointer) editor_menu_commit, "activate",
-			 G_CALLBACK(vccommit_activated), NULL);
 
 
 	gtk_widget_show_all(menu_vc);
 	gtk_widget_show_all(menu_vc_file);
 	gtk_widget_show_all(menu_vc_dir);
 	gtk_widget_show_all(menu_vc_basedir);
-	gtk_widget_show_all(editor_menu_vc);
-	gtk_widget_show_all(editor_menu_commit);
-	gtk_widget_show_all(menu_item_sep);
 
+
 	/* initialize keybindings */
 	init_keybindings();
 
+	/* init entries inside editor menu */
+	add_menuitems_to_editor_menu();
+
 	plugin_fields->menu_item = menu_vc;
 	plugin_fields->flags = PLUGIN_IS_DOCUMENT_SENSITIVE;
 }
@@ -2256,9 +2325,7 @@
 {
 	// remove the menu item added in init()
 	gtk_widget_destroy(plugin_fields->menu_item);
-	gtk_widget_destroy(editor_menu_vc);
-	gtk_widget_destroy(editor_menu_commit);
-	gtk_widget_destroy(menu_item_sep);
+	remove_menuitems_from_editor_menu();
 	g_slist_free(VC);
 	VC = NULL;
 	g_free(config_file);


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