SF.net SVN: geany-plugins:[2335] trunk/geany-plugins/geanylatex/src/ geanylatex.c

frlan at users.sourceforge.net frlan at xxxxx
Mon Nov 14 09:47:47 UTC 2011


Revision: 2335
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2335&view=rev
Author:   frlan
Date:     2011-11-14 09:47:46 +0000 (Mon, 14 Nov 2011)
Log Message:
-----------
GeanyLaTeX: Splitting LaTeX and BibTeX menu and removing not anymore needed variable

Modified Paths:
--------------
    trunk/geany-plugins/geanylatex/src/geanylatex.c

Modified: trunk/geany-plugins/geanylatex/src/geanylatex.c
===================================================================
--- trunk/geany-plugins/geanylatex/src/geanylatex.c	2011-11-12 13:13:37 UTC (rev 2334)
+++ trunk/geany-plugins/geanylatex/src/geanylatex.c	2011-11-14 09:47:46 UTC (rev 2335)
@@ -49,6 +49,8 @@
 
 /* Widgets for plugin */
 static GtkWidget *menu_latex = NULL;
+static GtkWidget *menu_bibtex = NULL;
+static GtkWidget *menu_bibtex_menu = NULL;
 static GtkWidget *menu_latex_menu = NULL;
 static GtkWidget *menu_latex_wizard = NULL;
 static GtkWidget *menu_latex_menu_special_char = NULL;
@@ -95,8 +97,6 @@
 /* Function will be deactivated, when only loaded */
 static gboolean toggle_active = FALSE;
 
-static GtkWidget *main_menu_item = NULL;
-
 static GtkUIManager *uim;
 static GtkActionGroup *group;
 static GtkWidget *glatex_toolbar = NULL;
@@ -363,13 +363,13 @@
 static void
 check_for_menu(gint ft_id)
 {
-	if (ft_id == GEANY_FILETYPES_LATEX &&
-		main_menu_item == NULL)
+	/* We don't check whether the menu has been added here, as this 
+	 * will is checked by add_menu_to_menubar() anyway */
+	if (ft_id == GEANY_FILETYPES_LATEX)
 	{
 		add_menu_to_menubar();
 	}
-	if (ft_id != GEANY_FILETYPES_LATEX &&
-		main_menu_item != NULL)
+	if (ft_id != GEANY_FILETYPES_LATEX)
 	{
 		if (glatex_deactivate_menubarentry_with_non_latex == TRUE)
 		{
@@ -467,10 +467,7 @@
 		if (glatex_add_menu_on_startup == TRUE||
 			doc->file_type->id == GEANY_FILETYPES_LATEX)
 		{
-			if (main_menu_item == NULL)
-			{
-				add_menu_to_menubar();
-			}
+			add_menu_to_menubar();
 		}
 	}
 
@@ -2088,185 +2085,214 @@
 	menubar = GTK_MENU_SHELL(
 				ui_lookup_widget(geany->main_widgets->window, "menubar1"));
 
-	/* Then we build up the menu and finally add it */
-	menu_latex = gtk_menu_item_new_with_mnemonic(_("_LaTeX"));
-	gtk_menu_shell_insert(
-		menubar,menu_latex, g_list_length(menubar->children)- 1);
-
-	menu_latex_menu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex), menu_latex_menu);
-
-	menu_latex_wizard = ui_image_menu_item_new(GTK_STOCK_NEW, _("LaTeX-_Wizard"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_wizard);
-	ui_widget_set_tooltip_text(menu_latex_wizard,
-				 _("Starts a Wizard to easily create LaTeX-documents"));
-
-	g_signal_connect(menu_latex_wizard, "activate",
-			 G_CALLBACK(glatex_wizard_activated), NULL);
-
-	menu_latex_menu_special_char = gtk_menu_item_new_with_mnemonic(_("I_nsert Special Character"));
-	ui_widget_set_tooltip_text(menu_latex_menu_special_char,
-				 _("Helps to use some not very common letters and signs"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu),
-		menu_latex_menu_special_char);
-
-	menu_latex_menu_special_char_submenu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_menu_special_char),
-		menu_latex_menu_special_char_submenu);
-	glatex_sub_menu_init(menu_latex_menu_special_char_submenu,
-		glatex_char_array, glatex_cat_names, char_insert_activated);
-
-	menu_latex_ref = gtk_menu_item_new_with_mnemonic(_("Insert _Reference"));
-	ui_widget_set_tooltip_text(menu_latex_ref,
-		_("Inserting references to the document"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_ref);
-	g_signal_connect(menu_latex_ref, "activate",
-		G_CALLBACK(glatex_insert_ref_activated), NULL);
-
-	menu_latex_label = gtk_menu_item_new_with_mnemonic(_("Insert _Label"));
-	ui_widget_set_tooltip_text(menu_latex_label,
-		_("Helps at inserting labels to a document"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_label);
-	g_signal_connect(menu_latex_label, "activate",
-		G_CALLBACK(glatex_insert_label_activated), NULL);
-
-	menu_latex_insert_environment = gtk_menu_item_new_with_mnemonic(
-		_("Insert _Environment"));
-	ui_widget_set_tooltip_text(menu_latex_insert_environment,
-		 _("Helps at inserting an environment a document"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_insert_environment);
-	g_signal_connect(menu_latex_insert_environment, "activate",
-		G_CALLBACK(glatex_insert_environment_dialog), NULL);
-
-	menu_latex_insert_usepackage = gtk_menu_item_new_with_mnemonic(
-		_("Insert P_ackage"));
-	ui_widget_set_tooltip_text(menu_latex_insert_usepackage,
-		 _("A small dialog to insert \\usepackage{} into header of current file"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_insert_usepackage);
-	g_signal_connect(menu_latex_insert_usepackage, "activate",
-		G_CALLBACK(glatex_insert_usepackage_dialog), NULL);
-
-	menu_latex_insert_bibtex_cite =
-		gtk_menu_item_new_with_mnemonic(_("Insert B_ibTeX reference"));
-	ui_widget_set_tooltip_text(menu_latex_insert_bibtex_cite,
-		_("Helps to insert a reference out of BibTeX files"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_insert_bibtex_cite);
-	g_signal_connect(menu_latex_insert_bibtex_cite, "activate",
-		G_CALLBACK(on_insert_bibtex_dialog_activate), NULL);
-
-	menu_latex_bibtex = gtk_menu_item_new_with_mnemonic(_("_BibTeX entries"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_bibtex);
-
-	menu_latex_bibtex_submenu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_bibtex),
-		menu_latex_bibtex_submenu);
-
-	for (i = 0; i < GLATEX_BIBTEX_N_TYPES; i++)
+	/* First we check whether the LaTeX menu entry already exists */
+	if (menu_latex == NULL)
 	{
-		tmp = NULL;
-		tmp = gtk_menu_item_new_with_mnemonic(_(glatex_bibtex_types[i].label));
-		gtk_container_add(GTK_CONTAINER(menu_latex_bibtex_submenu), tmp);
-		g_signal_connect(tmp, "activate",
-			G_CALLBACK(glatex_insert_bibtex_entry), GINT_TO_POINTER(i));
-	}
+		g_warning("Adding latex foo");
+		/* Build up menu for menubar */
+		menu_latex = gtk_menu_item_new_with_mnemonic(_("_LaTeX"));
+		gtk_menu_shell_insert(
+			menubar, menu_latex, g_list_length(menubar->children)-1);
+	
+		menu_latex_menu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex), menu_latex_menu);
+		
+		/* Filling up menubar menus */
+		/* LaTeX menu */
+		menu_latex_wizard = ui_image_menu_item_new(GTK_STOCK_NEW, _("LaTeX-_Wizard"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_wizard);
+		ui_widget_set_tooltip_text(menu_latex_wizard,
+					 _("Starts a Wizard to easily create LaTeX-documents"));
+	
+		g_signal_connect(menu_latex_wizard, "activate",
+				 G_CALLBACK(glatex_wizard_activated), NULL);
+	
+		menu_latex_menu_special_char = gtk_menu_item_new_with_mnemonic(_("I_nsert Special Character"));
+		ui_widget_set_tooltip_text(menu_latex_menu_special_char,
+					 _("Helps to use some not very common letters and signs"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu),
+			menu_latex_menu_special_char);
+	
+		menu_latex_menu_special_char_submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_menu_special_char),
+			menu_latex_menu_special_char_submenu);
+		glatex_sub_menu_init(menu_latex_menu_special_char_submenu,
+			glatex_char_array, glatex_cat_names, char_insert_activated);
+	
+		menu_latex_ref = gtk_menu_item_new_with_mnemonic(_("Insert _Reference"));
+		ui_widget_set_tooltip_text(menu_latex_ref,
+			_("Inserting references to the document"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_ref);
+		g_signal_connect(menu_latex_ref, "activate",
+			G_CALLBACK(glatex_insert_ref_activated), NULL);
+	
+		menu_latex_label = gtk_menu_item_new_with_mnemonic(_("Insert _Label"));
+		ui_widget_set_tooltip_text(menu_latex_label,
+			_("Helps at inserting labels to a document"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_label);
+		g_signal_connect(menu_latex_label, "activate",
+			G_CALLBACK(glatex_insert_label_activated), NULL);
+	
+		menu_latex_insert_environment = gtk_menu_item_new_with_mnemonic(
+			_("Insert _Environment"));
+		ui_widget_set_tooltip_text(menu_latex_insert_environment,
+			 _("Helps at inserting an environment a document"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_insert_environment);
+		g_signal_connect(menu_latex_insert_environment, "activate",
+			G_CALLBACK(glatex_insert_environment_dialog), NULL);
+	
+		menu_latex_insert_usepackage = gtk_menu_item_new_with_mnemonic(
+			_("Insert P_ackage"));
+		ui_widget_set_tooltip_text(menu_latex_insert_usepackage,
+			 _("A small dialog to insert \\usepackage{} into header of current file"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_insert_usepackage);
+		g_signal_connect(menu_latex_insert_usepackage, "activate",
+			G_CALLBACK(glatex_insert_usepackage_dialog), NULL);
+	
+		menu_latex_format_insert = gtk_menu_item_new_with_mnemonic(_("_Format"));
+		gtk_container_add(GTK_CONTAINER(menu_bibtex_menu), menu_latex_format_insert);
+	
+		menu_latex_format_insert_submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_format_insert),
+			menu_latex_format_insert_submenu);
+	
+		for (i = 0; i < LATEX_STYLES_END; i++)
+		{
+			tmp = NULL;
+			tmp = gtk_menu_item_new_with_mnemonic(_(glatex_format_labels[i]));
+			gtk_container_add(GTK_CONTAINER(menu_latex_format_insert_submenu), tmp);
+			g_signal_connect(tmp, "activate",
+				G_CALLBACK(glatex_insert_latex_format), GINT_TO_POINTER(i));
+		}
+	
+		/* Add font size menu */
+		menu_latex_fontsize = gtk_menu_item_new_with_mnemonic(_("F_ont size"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_fontsize);
+	
+		menu_latex_fontsize_submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_fontsize),
+			menu_latex_fontsize_submenu);
+	
+		for (i = 0; i < LATEX_FONTSIZE_END; i++)
+		{
+			tmp = NULL;
+			tmp = gtk_menu_item_new_with_mnemonic(_(glatex_fontsize_labels[i]));
+			gtk_container_add(GTK_CONTAINER(menu_latex_fontsize_submenu), tmp);
+			g_signal_connect(tmp, "activate",
+				G_CALLBACK(glatex_insert_latex_fontsize), GINT_TO_POINTER(i));
+		}
+	
+		/* Add menuitem for LaTeX replacement functions*/
+		menu_latex_replacement = gtk_menu_item_new_with_mnemonic(
+			_("_Special Character Replacement"));
+		menu_latex_replacement_submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_replacement),
+			menu_latex_replacement_submenu);
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_replacement);
+	
+		/* Add menuitem for bulk replacment */
+		menu_latex_replace_selection = gtk_menu_item_new_with_mnemonic(
+			_("Bulk _Replace Special Characters"));
+		ui_widget_set_tooltip_text(menu_latex_replace_selection,
+			_("_Replace selected special characters with TeX substitutes"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_replacement_submenu),
+			menu_latex_replace_selection);
+		g_signal_connect(menu_latex_replace_selection, "activate",
+			G_CALLBACK(glatex_replace_special_character), NULL);
+	
+		/* Add menu entry for toggling input replacment */
+		menu_latex_replace_toggle = gtk_check_menu_item_new_with_mnemonic(
+			_("Toggle _Special Character Replacement"));
+		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_latex_replace_toggle),
+										toggle_active);
+		gtk_container_add(GTK_CONTAINER(menu_latex_replacement_submenu),
+			menu_latex_replace_toggle);
+	
+		g_signal_connect(menu_latex_replace_toggle, "activate",
+						 G_CALLBACK(glatex_toggle_status), NULL);
+	
+		/* Add menu entry for inserting a command */
+		menu_latex_insert_command = gtk_menu_item_new_with_mnemonic(
+			_("Insert _Command"));
+		ui_widget_set_tooltip_text(menu_latex_ref,
+			_("Inserting costumized command to document"));
+		gtk_container_add(GTK_CONTAINER(menu_latex_menu),
+			menu_latex_insert_command);
+		g_signal_connect(menu_latex_insert_command, "activate",
+			G_CALLBACK(glatex_insert_command_activated), NULL);
 
-	menu_latex_format_insert = gtk_menu_item_new_with_mnemonic(_("_Format"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_format_insert);
+		/* Switch document sitiveness for menu entries */
+		ui_add_document_sensitive(menu_latex_menu_special_char);
+		ui_add_document_sensitive(menu_latex_ref);
+		ui_add_document_sensitive(menu_latex_label);
+		ui_add_document_sensitive(menu_latex_format_insert);
+		ui_add_document_sensitive(menu_latex_insert_environment);
+		ui_add_document_sensitive(menu_latex_insert_usepackage);
+		ui_add_document_sensitive(menu_latex_insert_command);
+		ui_add_document_sensitive(menu_latex_fontsize);
+		ui_add_document_sensitive(menu_latex_replacement);
+		
+		
+		gtk_widget_show_all(menu_latex);
+	} /* only execute if menuitem "LaTeX" has not already been inserted 
+	     into menubar before */
 
-	menu_latex_format_insert_submenu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_format_insert),
-		menu_latex_format_insert_submenu);
-
-	for (i = 0; i < LATEX_STYLES_END; i++)
+	/* BibTeX menu */
+	if (menu_bibtex == NULL)
 	{
-		tmp = NULL;
-		tmp = gtk_menu_item_new_with_mnemonic(_(glatex_format_labels[i]));
-		gtk_container_add(GTK_CONTAINER(menu_latex_format_insert_submenu), tmp);
-		g_signal_connect(tmp, "activate",
-			G_CALLBACK(glatex_insert_latex_format), GINT_TO_POINTER(i));
-	}
-
-	/* Add font size menu */
-	menu_latex_fontsize = gtk_menu_item_new_with_mnemonic(_("F_ont size"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_fontsize);
-
-	menu_latex_fontsize_submenu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_fontsize),
-		menu_latex_fontsize_submenu);
-
-	for (i = 0; i < LATEX_FONTSIZE_END; i++)
-	{
-		tmp = NULL;
-		tmp = gtk_menu_item_new_with_mnemonic(_(glatex_fontsize_labels[i]));
-		gtk_container_add(GTK_CONTAINER(menu_latex_fontsize_submenu), tmp);
-		g_signal_connect(tmp, "activate",
-			G_CALLBACK(glatex_insert_latex_fontsize), GINT_TO_POINTER(i));
-	}
-
-	/* Add menuitem for LaTeX replacement functions*/
-	menu_latex_replacement = gtk_menu_item_new_with_mnemonic(
-		_("_Special Character Replacement"));
-	menu_latex_replacement_submenu = gtk_menu_new();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_replacement),
-		menu_latex_replacement_submenu);
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_replacement);
-
-	/* Add menuitem for bulk replacment */
-	menu_latex_replace_selection = gtk_menu_item_new_with_mnemonic(
-		_("Bulk _Replace Special Characters"));
-	ui_widget_set_tooltip_text(menu_latex_replace_selection,
-		_("_Replace selected special characters with TeX substitutes"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_replacement_submenu),
-		menu_latex_replace_selection);
-	g_signal_connect(menu_latex_replace_selection, "activate",
-		G_CALLBACK(glatex_replace_special_character), NULL);
-
-	/* Add menu entry for toggling input replacment */
-	menu_latex_replace_toggle = gtk_check_menu_item_new_with_mnemonic(
-		_("Toggle _Special Character Replacement"));
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_latex_replace_toggle),
-									toggle_active);
-	gtk_container_add(GTK_CONTAINER(menu_latex_replacement_submenu),
-		menu_latex_replace_toggle);
-
-	g_signal_connect(menu_latex_replace_toggle, "activate",
-					 G_CALLBACK(glatex_toggle_status), NULL);
-
-	/* Add menu entry for inserting a command */
-	menu_latex_insert_command = gtk_menu_item_new_with_mnemonic(
-		_("Insert _Command"));
-	ui_widget_set_tooltip_text(menu_latex_ref,
-		_("Inserting costumized command to document"));
-	gtk_container_add(GTK_CONTAINER(menu_latex_menu),
-		menu_latex_insert_command);
-	g_signal_connect(menu_latex_insert_command, "activate",
-		G_CALLBACK(glatex_insert_command_activated), NULL);
-
-	ui_add_document_sensitive(menu_latex_menu_special_char);
-	ui_add_document_sensitive(menu_latex_ref);
-	ui_add_document_sensitive(menu_latex_label);
-	ui_add_document_sensitive(menu_latex_bibtex);
-	ui_add_document_sensitive(menu_latex_format_insert);
-	ui_add_document_sensitive(menu_latex_insert_environment);
-	ui_add_document_sensitive(menu_latex_insert_usepackage);
-	ui_add_document_sensitive(menu_latex_insert_command);
-	ui_add_document_sensitive(menu_latex_fontsize);
-	ui_add_document_sensitive(menu_latex_replacement);
-
-	gtk_widget_show_all(menu_latex);
-	main_menu_item = menu_latex;
+		g_warning("Try to add bibtexfoo");
+		
+		menu_bibtex = gtk_menu_item_new_with_mnemonic(_("_BibTeX"));
+		gtk_menu_shell_insert(
+			menubar, menu_bibtex, g_list_length(menubar->children)-1);
+	
+		menu_bibtex_menu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_bibtex), menu_bibtex_menu);
+		
+		menu_latex_insert_bibtex_cite =
+			gtk_menu_item_new_with_mnemonic(_("Insert B_ibTeX reference"));
+		ui_widget_set_tooltip_text(menu_latex_insert_bibtex_cite,
+			_("Helps to insert a reference out of BibTeX files"));
+		gtk_container_add(GTK_CONTAINER(menu_bibtex_menu), menu_latex_insert_bibtex_cite);
+		g_signal_connect(menu_latex_insert_bibtex_cite, "activate",
+			G_CALLBACK(on_insert_bibtex_dialog_activate), NULL);
+	
+		menu_latex_bibtex = gtk_menu_item_new_with_mnemonic(_("_BibTeX entries"));
+		gtk_container_add(GTK_CONTAINER(menu_bibtex_menu), menu_latex_bibtex);
+	
+		menu_latex_bibtex_submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex_bibtex),
+			menu_latex_bibtex_submenu);
+	
+		for (i = 0; i < GLATEX_BIBTEX_N_TYPES; i++)
+		{
+			tmp = NULL;
+			tmp = gtk_menu_item_new_with_mnemonic(_(glatex_bibtex_types[i].label));
+			gtk_container_add(GTK_CONTAINER(menu_latex_bibtex_submenu), tmp);
+			g_signal_connect(tmp, "activate",
+				G_CALLBACK(glatex_insert_bibtex_entry), GINT_TO_POINTER(i));
+		}
+		
+		/* Switch document sensitivness */
+		ui_add_document_sensitive(menu_latex_bibtex);
+		
+		gtk_widget_show_all(menu_bibtex);
+	} /* Only insert BibTeX menu if not already done. */
 }
 
-
-static void
-remove_menu_from_menubar()
+/* Removes the menubar menus from menubar if requested and available */
+static void remove_menu_from_menubar()
 {
-	if (main_menu_item != NULL)
+	if (menu_latex != NULL)
 	{
-		gtk_widget_destroy(main_menu_item);
-		main_menu_item = NULL;
+		gtk_widget_destroy(menu_latex);
+		menu_latex = NULL;
 	}
-
+	if (menu_bibtex != NULL)
+	{
+		gtk_widget_destroy(menu_bibtex);
+		menu_bibtex = NULL;
+	}
 }
 
 
@@ -2335,9 +2361,8 @@
 
 	if (doc != NULL)
 	{
-		if ((glatex_add_menu_on_startup == TRUE||
-			doc->file_type->id == GEANY_FILETYPES_LATEX) &&
-			main_menu_item == NULL)
+		if (glatex_add_menu_on_startup == TRUE||
+			doc->file_type->id == GEANY_FILETYPES_LATEX)
 		{
 			add_menu_to_menubar();
 		}

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