SF.net SVN: geany: [902] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Oct 18 19:35:55 UTC 2006


Revision: 902
          http://svn.sourceforge.net/geany/?rev=902&view=rev
Author:   ntrel
Date:     2006-10-18 12:35:42 -0700 (Wed, 18 Oct 2006)

Log Message:
-----------
Move build menu related functions and callbacks to build.c.
Renamed ui_update_build_menu -> build_menu_update.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/build.c
    trunk/src/build.h
    trunk/src/callbacks.c
    trunk/src/callbacks.h
    trunk/src/document.c
    trunk/src/keybindings.c
    trunk/src/main.c
    trunk/src/ui_utils.c
    trunk/src/ui_utils.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/ChangeLog	2006-10-18 19:35:42 UTC (rev 902)
@@ -1,3 +1,11 @@
+2006-10-18  Nick Treleaven  <nick.treleaven at btinternet.com>
+
+ * src/build.c, src/build.h, src/ui_utils.h, src/ui_utils.c,
+   src/keybindings.c, src/callbacks.c, src/callbacks.h, src/document.c,
+   src/main.c:
+   Move build menu related functions and callbacks to build.c.
+   Renamed ui_update_build_menu -> build_menu_update.
+
 2006-10-17  Nick Treleaven  <nick.treleaven at btinternet.com>
 
  * src/callbacks.c, src/filetypes.h, src/ui_utils.c:

Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/build.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -42,6 +42,7 @@
 #include "msgwindow.h"
 #include "document.h"
 #include "main.h"
+#include "keybindings.h"
 
 
 BuildInfo build_info = {NULL, GEANY_FILETYPES_ALL, NULL};
@@ -51,8 +52,17 @@
 static gboolean build_create_shellscript(const gint idx, const gchar *fname, const gchar *cmd);
 static GPid build_spawn_cmd(gint idx, gchar **cmd);
 
+static void
+on_make_target_dialog_response         (GtkDialog *dialog,
+                                        gint response,
+                                        gpointer user_data);
 
+static void
+on_make_target_entry_activate          (GtkEntry        *entry,
+                                        gpointer         user_data);
 
+
+
 void build_finalize()
 {
 	g_free(build_info.dir);
@@ -580,7 +590,7 @@
 }
 
 
-void build_exit_cb(GPid child_pid, gint status, gpointer user_data)
+static void build_exit_cb(GPid child_pid, gint status, gpointer user_data)
 {
 #ifdef G_OS_UNIX
 	gboolean failure = FALSE;
@@ -657,3 +667,542 @@
 }
 
 
+#define GEANY_ADD_WIDGET_ACCEL(gkey, menuitem) \
+	if (keys[(gkey)]->key != 0) \
+		gtk_widget_add_accelerator(menuitem, "activate", accel_group, \
+			keys[(gkey)]->key, keys[(gkey)]->mods, GTK_ACCEL_VISIBLE)
+
+static GtkWidget *create_build_menu_gen(gint idx)
+{
+	GtkWidget *menu, *item = NULL, *image, *separator;
+	GtkAccelGroup *accel_group = gtk_accel_group_new();
+	GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
+	filetype *ft = doc_list[idx].file_type;
+
+	menu = gtk_menu_new();
+
+#ifndef G_OS_WIN32
+	if (ft->menu_items->can_compile)
+	{
+		// compile the code
+		item = gtk_image_menu_item_new_with_mnemonic(_("_Compile"));
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+		gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file"), NULL);
+		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_COMPILE, item);
+		image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
+		gtk_widget_show(image);
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_compile_activate), NULL);
+		ft->menu_items->item_compile = item;
+	}
+
+	if (ft->menu_items->can_link)
+	{	// build the code
+		item = gtk_image_menu_item_new_with_mnemonic(_("_Build"));
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+		gtk_tooltips_set_tip(tooltips, item,
+					_("Builds the current file (generate an executable file)"), NULL);
+		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_LINK, item);
+		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_build_activate), NULL);
+		ft->menu_items->item_link = item;
+	}
+
+	if (item != NULL)
+	{
+		item = gtk_separator_menu_item_new();
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+	}
+
+	// build the code with make all
+	item = gtk_image_menu_item_new_with_mnemonic(_("_Make all"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
+										   "make tool and the default target"), NULL);
+	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKE, item);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
+		GINT_TO_POINTER(GBO_MAKE_ALL));
+	ft->menu_items->item_make_all = item;
+
+	// build the code with make custom
+	item = gtk_image_menu_item_new_with_mnemonic(_("Make custom _target"));
+	gtk_widget_show(item);
+	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOWNTARGET, item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
+										   "make tool and the specified target"), NULL);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
+		GINT_TO_POINTER(GBO_MAKE_CUSTOM));
+	ft->menu_items->item_make_custom = item;
+
+	// build the code with make object
+	item = gtk_image_menu_item_new_with_mnemonic(_("Make _object"));
+	gtk_widget_show(item);
+	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOBJECT, item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file using the "
+										   "make tool"), NULL);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
+		GINT_TO_POINTER(GBO_MAKE_OBJECT));
+	ft->menu_items->item_make_object = item;
+#endif
+
+	if (ft->menu_items->can_exec)
+	{	// execute the code
+		item = gtk_separator_menu_item_new();
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+
+		item = gtk_image_menu_item_new_from_stock("gtk-execute", accel_group);
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+		gtk_tooltips_set_tip(tooltips, item, _("Run or view the current file"), NULL);
+		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_RUN, item);
+		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_execute_activate), NULL);
+		ft->menu_items->item_exec = item;
+	}
+
+	// arguments
+	if (ft->menu_items->can_compile || ft->menu_items->can_link || ft->menu_items->can_exec)
+	{
+		// separator
+		separator = gtk_separator_menu_item_new();
+		gtk_widget_show(separator);
+		gtk_container_add(GTK_CONTAINER(menu), separator);
+		gtk_widget_set_sensitive(separator, FALSE);
+
+		item = gtk_image_menu_item_new_with_mnemonic(_("_Set Includes and Arguments"));
+		gtk_widget_show(item);
+		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_OPTIONS, item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+		gtk_tooltips_set_tip(tooltips, item,
+					_("Sets the includes and library paths for the compiler and "
+					  "the program arguments for execution"), NULL);
+		image = gtk_image_new_from_stock("gtk-preferences", GTK_ICON_SIZE_MENU);
+		gtk_widget_show(image);
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_arguments_activate), NULL);
+	}
+
+	return menu;
+}
+
+
+static GtkWidget *create_build_menu_tex(gint idx)
+{
+	GtkWidget *menu, *item, *image, *separator;
+	GtkAccelGroup *accel_group = gtk_accel_group_new();
+	GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
+	filetype *ft = filetypes[GEANY_FILETYPES_LATEX];
+
+	menu = gtk_menu_new();
+
+#ifndef G_OS_WIN32
+	// DVI
+	item = gtk_image_menu_item_new_with_mnemonic(_("LaTeX -> DVI"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file into a DVI file"), NULL);
+	if (keys[GEANY_KEYS_BUILD_COMPILE]->key)
+		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_COMPILE]->key,
+			keys[GEANY_KEYS_BUILD_COMPILE]->mods, GTK_ACCEL_VISIBLE);
+	image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(0));
+
+	// PDF
+	item = gtk_image_menu_item_new_with_mnemonic(_("LaTeX -> PDF"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file into a PDF file"), NULL);
+	if (keys[GEANY_KEYS_BUILD_LINK]->key)
+		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_LINK]->key,
+			keys[GEANY_KEYS_BUILD_LINK]->mods, GTK_ACCEL_VISIBLE);
+	image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(1));
+
+	if (item != NULL)
+	{
+		item = gtk_separator_menu_item_new();
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+	}
+
+	// build the code with make all
+	item = gtk_image_menu_item_new_with_mnemonic(_("_Make all"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
+										   "make tool and the default target"), NULL);
+	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKE, item);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
+		GINT_TO_POINTER(GBO_MAKE_ALL));
+	ft->menu_items->item_make_all = item;
+
+	// build the code with make custom
+	item = gtk_image_menu_item_new_with_mnemonic(_("Make custom _target"));
+	gtk_widget_show(item);
+	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOWNTARGET, item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
+										   "make tool and the specified target"), NULL);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
+		GINT_TO_POINTER(GBO_MAKE_CUSTOM));
+	ft->menu_items->item_make_custom = item;
+
+	if (item != NULL)
+	{
+		item = gtk_separator_menu_item_new();
+		gtk_widget_show(item);
+		gtk_container_add(GTK_CONTAINER(menu), item);
+	}
+#endif
+
+	// DVI view
+	item = gtk_image_menu_item_new_with_mnemonic(_("View DVI file"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	if (keys[GEANY_KEYS_BUILD_RUN]->key)
+		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_RUN]->key,
+			keys[GEANY_KEYS_BUILD_RUN]->mods, GTK_ACCEL_VISIBLE);
+	gtk_tooltips_set_tip(tooltips, item, _("Compiles and view the current file"), NULL);
+	image = gtk_image_new_from_stock("gtk-find", GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(2));
+
+	// PDF view
+	item = gtk_image_menu_item_new_with_mnemonic(_("View PDF file"));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	if (keys[GEANY_KEYS_BUILD_RUN2]->key)
+		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_RUN2]->key,
+			keys[GEANY_KEYS_BUILD_RUN2]->mods, GTK_ACCEL_VISIBLE);
+	gtk_tooltips_set_tip(tooltips, item, _("Compiles and view the current file"), NULL);
+	image = gtk_image_new_from_stock("gtk-find", GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(3));
+
+	// separator
+	separator = gtk_separator_menu_item_new();
+	gtk_widget_show(separator);
+	gtk_container_add(GTK_CONTAINER(menu), separator);
+	gtk_widget_set_sensitive(separator, FALSE);
+
+	// arguments
+	item = gtk_image_menu_item_new_with_mnemonic(_("Set Arguments"));
+	gtk_widget_show(item);
+	if (keys[GEANY_KEYS_BUILD_OPTIONS]->key)
+		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_OPTIONS]->key,
+			keys[GEANY_KEYS_BUILD_OPTIONS]->mods, GTK_ACCEL_VISIBLE);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_tooltips_set_tip(tooltips, item,
+				_("Sets the program paths and arguments"), NULL);
+	image = gtk_image_new_from_stock("gtk-preferences", GTK_ICON_SIZE_MENU);
+	gtk_widget_show(image);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_arguments_activate), NULL);
+
+	gtk_window_add_accel_group(GTK_WINDOW(app->window), accel_group);
+
+	return menu;
+}
+
+
+static gboolean is_c_header(const gchar *fname)
+{
+	gchar *ext = NULL;
+
+	if (fname)
+	{
+		ext = strrchr(fname, '.');
+	}
+	return (ext == NULL) ? FALSE : (*(ext + 1) == 'h');	// match *.h*
+}
+
+
+void build_menu_update(gint idx)
+{
+	filetype *ft;
+	gboolean have_path;
+
+	if (idx == -1 || doc_list[idx].file_type == NULL)
+	{
+		gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), FALSE);
+		gtk_menu_item_remove_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")));
+		gtk_widget_set_sensitive(app->compile_button, FALSE);
+		gtk_widget_set_sensitive(app->run_button, FALSE);
+		return;
+	}
+	else
+		gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), TRUE);
+
+	ft = doc_list[idx].file_type;
+
+#ifdef G_OS_WIN32
+	// disable compile and link under Windows until it is implemented
+	ft->menu_items->can_compile = FALSE;
+	ft->menu_items->can_link = FALSE;
+#endif
+
+	gtk_menu_item_remove_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")));
+
+	if (ft->menu_items->menu == NULL)
+	{
+		ft->menu_items->menu = (ft->id == GEANY_FILETYPES_LATEX) ?
+			create_build_menu_tex(idx) : create_build_menu_gen(idx);
+		g_object_ref((gpointer)ft->menu_items->menu);	// to hold it after removing
+	}
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")),
+						ft->menu_items->menu);
+
+	have_path = (doc_list[idx].file_name != NULL);
+	// update the Make items
+	if (ft->menu_items->item_make_all != NULL)
+		gtk_widget_set_sensitive(ft->menu_items->item_make_all, have_path);
+	if (ft->menu_items->item_make_custom != NULL)
+		gtk_widget_set_sensitive(ft->menu_items->item_make_custom, have_path);
+	if (ft->menu_items->item_make_object != NULL)
+		gtk_widget_set_sensitive(ft->menu_items->item_make_object, have_path);
+	
+	switch (ft->id)
+	{
+		case GEANY_FILETYPES_LATEX:
+		{
+			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
+			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
+			break;
+		}
+		case GEANY_FILETYPES_C:	// intended fallthrough, C and C++ behave equal
+		case GEANY_FILETYPES_CPP:
+		{
+			if (ft->menu_items->can_exec)
+				gtk_widget_set_sensitive(ft->menu_items->item_exec, have_path);
+			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
+
+			// compile and link are disabled for header files
+			have_path = have_path && ! is_c_header(doc_list[idx].file_name);
+			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
+			if (ft->menu_items->can_compile)
+				gtk_widget_set_sensitive(ft->menu_items->item_compile, have_path);
+			if (ft->menu_items->can_link)
+				gtk_widget_set_sensitive(ft->menu_items->item_link, have_path);
+			break;
+		}
+		default:
+		{
+			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
+			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
+			if (ft->menu_items->can_compile)
+				gtk_widget_set_sensitive(ft->menu_items->item_compile, have_path);
+			if (ft->menu_items->can_link)
+				gtk_widget_set_sensitive(ft->menu_items->item_link, have_path);
+			if (ft->menu_items->can_exec)
+				gtk_widget_set_sensitive(ft->menu_items->item_exec, have_path);
+		}
+	}
+}
+
+
+void
+on_build_compile_activate              (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx = document_get_cur_idx();
+	GPid child_pid = (GPid) 0;
+
+	if (doc_list[idx].changed) document_save_file(idx, FALSE);
+
+	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX)
+		child_pid = build_compile_tex_file(idx, 0);
+	else
+		child_pid = build_compile_file(idx);
+
+	if (child_pid != (GPid) 0)
+	{
+		gtk_widget_set_sensitive(app->compile_button, FALSE);
+		g_child_watch_add(child_pid, build_exit_cb, NULL);
+	}
+}
+
+
+void
+on_build_tex_activate                  (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx = document_get_cur_idx();
+	GPid child_pid = (GPid) 0;
+
+	if (doc_list[idx].changed) document_save_file(idx, FALSE);
+
+	switch (GPOINTER_TO_INT(user_data))
+	{
+		case 0: child_pid = build_compile_tex_file(idx, 0); break;
+		case 1: child_pid = build_compile_tex_file(idx, 1); break;
+		case 2: child_pid = build_view_tex_file(idx, 0); break;
+		case 3: child_pid = build_view_tex_file(idx, 1); break;
+	}
+
+	if (GPOINTER_TO_INT(user_data) <= 1 && child_pid != (GPid) 0)
+	{
+		gtk_widget_set_sensitive(app->compile_button, FALSE);
+		g_child_watch_add(child_pid, build_exit_cb, NULL);
+	}
+}
+
+
+void
+on_build_build_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx = document_get_cur_idx();
+	GPid child_pid = (GPid) 0;
+
+	if (doc_list[idx].changed) document_save_file(idx, FALSE);
+
+	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX)
+		child_pid = build_compile_tex_file(idx, 1);
+	else
+		child_pid = build_link_file(idx);
+
+	if (child_pid != (GPid) 0)
+	{
+		gtk_widget_set_sensitive(app->compile_button, FALSE);
+		g_child_watch_add(child_pid, build_exit_cb, NULL);
+	}
+}
+
+
+void
+on_build_make_activate                 (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx = document_get_cur_idx();
+	gint build_opts = GPOINTER_TO_INT(user_data);
+
+	g_return_if_fail(DOC_IDX_VALID(idx) && doc_list[idx].file_name != NULL);
+
+	switch (build_opts)
+	{
+		case GBO_MAKE_CUSTOM:
+		{
+			dialogs_show_input(_("Enter custom options for the make tool"),
+				_("Enter custom options here, all entered text is passed to the make command."),
+				build_info.custom_target,
+				G_CALLBACK(on_make_target_dialog_response),
+				G_CALLBACK(on_make_target_entry_activate));
+			break;
+		}
+
+		case GBO_MAKE_OBJECT:
+		// fall through
+		case GBO_MAKE_ALL:
+		{
+			GPid child_pid;
+
+			if (doc_list[idx].changed) document_save_file(idx, FALSE);
+
+			child_pid = build_make_file(idx, build_opts);
+			if (child_pid != (GPid) 0)
+			{
+				gtk_widget_set_sensitive(app->compile_button, FALSE);
+				g_child_watch_add(child_pid, build_exit_cb, NULL);
+			}
+		}
+	}
+}
+
+
+void
+on_build_execute_activate              (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx = document_get_cur_idx();
+
+	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX && user_data != NULL)
+	{
+		if (build_view_tex_file(idx, GPOINTER_TO_INT(user_data)) == (GPid) 0)
+		{
+			msgwin_status_add(_("Failed to execute the view program"));
+		}
+	}
+	else if (doc_list[idx].file_type->id == GEANY_FILETYPES_HTML)
+	{
+		gchar *uri = g_strconcat("file:///", g_path_skip_root(doc_list[idx].file_name), NULL);
+		utils_start_browser(uri);
+		g_free(uri);
+	}
+	else
+	{
+		// save the file only if the run command uses it
+		if (doc_list[idx].changed &&
+			strstr(doc_list[idx].file_type->programs->run_cmd, "%f") != NULL)
+				document_save_file(idx, FALSE);
+		if (build_run_cmd(idx) == (GPid) 0)
+		{
+#ifndef G_OS_WIN32 // on Windows there is no PID returned
+			msgwin_status_add(_("Failed to execute the terminal program"));
+#endif
+		}
+	}
+	//gtk_widget_grab_focus(GTK_WIDGET(doc_list[idx].sci));
+}
+
+
+void
+on_build_arguments_activate            (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	dialogs_show_includes_arguments_gen();
+}
+
+
+void
+on_build_tex_arguments_activate        (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	dialogs_show_includes_arguments_tex();
+}
+
+
+static void
+on_make_target_dialog_response         (GtkDialog *dialog,
+                                        gint response,
+                                        gpointer user_data)
+{
+	if (response == GTK_RESPONSE_ACCEPT)
+	{
+		gint idx = document_get_cur_idx();
+		GPid child_pid;
+
+		if (doc_list[idx].changed) document_save_file(idx, FALSE);
+
+		g_free(build_info.custom_target);
+		build_info.custom_target = g_strdup(gtk_entry_get_text(GTK_ENTRY(user_data)));
+
+		child_pid = build_make_file(idx, GBO_MAKE_CUSTOM);
+		if (child_pid != (GPid) 0)
+		{
+			gtk_widget_set_sensitive(app->compile_button, FALSE);
+			g_child_watch_add(child_pid, build_exit_cb, NULL);
+		}
+	}
+	gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+
+static void
+on_make_target_entry_activate          (GtkEntry        *entry,
+                                        gpointer         user_data)
+{
+	on_make_target_dialog_response(GTK_DIALOG(user_data), GTK_RESPONSE_ACCEPT, entry);
+}
+
+

Modified: trunk/src/build.h
===================================================================
--- trunk/src/build.h	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/build.h	2006-10-18 19:35:42 UTC (rev 902)
@@ -55,6 +55,35 @@
 
 GPid build_run_cmd(gint idx);
 
-void build_exit_cb (GPid child_pid, gint status, gpointer user_data);
+void build_menu_update(gint idx);
 
+
+void
+on_build_compile_activate              (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_tex_activate                  (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_build_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_make_activate                 (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_execute_activate              (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_arguments_activate            (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_build_tex_arguments_activate        (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
 #endif

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/callbacks.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -761,7 +761,7 @@
 
 		document_set_text_changed(idx);
 		ui_document_show_hide(idx); // update the document menu
-		ui_update_build_menu(idx);
+		build_menu_update(idx);
 		ui_update_statusbar(idx, -1);
 		ui_set_window_title(idx);
 		ui_update_tag_list(idx, FALSE);
@@ -921,7 +921,7 @@
 		utils_replace_filename(idx);
 		document_save_file(idx, TRUE);
 
-		ui_update_build_menu(idx);
+		build_menu_update(idx);
 
 		// finally add current file to recent files menu
 		ui_add_recent_file(doc_list[idx].file_name);
@@ -1548,201 +1548,6 @@
 
 
 void
-on_build_compile_activate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	gint idx = document_get_cur_idx();
-	GPid child_pid = (GPid) 0;
-
-	if (doc_list[idx].changed) document_save_file(idx, FALSE);
-
-	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX)
-		child_pid = build_compile_tex_file(idx, 0);
-	else
-		child_pid = build_compile_file(idx);
-
-	if (child_pid != (GPid) 0)
-	{
-		gtk_widget_set_sensitive(app->compile_button, FALSE);
-		g_child_watch_add(child_pid, build_exit_cb, NULL);
-	}
-}
-
-
-void
-on_build_tex_activate                  (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	gint idx = document_get_cur_idx();
-	GPid child_pid = (GPid) 0;
-
-	if (doc_list[idx].changed) document_save_file(idx, FALSE);
-
-	switch (GPOINTER_TO_INT(user_data))
-	{
-		case 0: child_pid = build_compile_tex_file(idx, 0); break;
-		case 1: child_pid = build_compile_tex_file(idx, 1); break;
-		case 2: child_pid = build_view_tex_file(idx, 0); break;
-		case 3: child_pid = build_view_tex_file(idx, 1); break;
-	}
-
-	if (GPOINTER_TO_INT(user_data) <= 1 && child_pid != (GPid) 0)
-	{
-		gtk_widget_set_sensitive(app->compile_button, FALSE);
-		g_child_watch_add(child_pid, build_exit_cb, NULL);
-	}
-}
-
-
-void
-on_build_build_activate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	gint idx = document_get_cur_idx();
-	GPid child_pid = (GPid) 0;
-
-	if (doc_list[idx].changed) document_save_file(idx, FALSE);
-
-	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX)
-		child_pid = build_compile_tex_file(idx, 1);
-	else
-		child_pid = build_link_file(idx);
-
-	if (child_pid != (GPid) 0)
-	{
-		gtk_widget_set_sensitive(app->compile_button, FALSE);
-		g_child_watch_add(child_pid, build_exit_cb, NULL);
-	}
-}
-
-
-void
-on_build_make_activate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	gint idx = document_get_cur_idx();
-	gint build_opts = GPOINTER_TO_INT(user_data);
-
-	g_return_if_fail(DOC_IDX_VALID(idx) && doc_list[idx].file_name != NULL);
-
-	switch (build_opts)
-	{
-		case GBO_MAKE_CUSTOM:
-		{
-			dialogs_show_input(_("Enter custom options for the make tool"),
-				_("Enter custom options here, all entered text is passed to the make command."),
-				build_info.custom_target,
-				G_CALLBACK(on_make_target_dialog_response),
-				G_CALLBACK(on_make_target_entry_activate));
-			break;
-		}
-
-		case GBO_MAKE_OBJECT:
-		// fall through
-		case GBO_MAKE_ALL:
-		{
-			GPid child_pid;
-
-			if (doc_list[idx].changed) document_save_file(idx, FALSE);
-
-			child_pid = build_make_file(idx, build_opts);
-			if (child_pid != (GPid) 0)
-			{
-				gtk_widget_set_sensitive(app->compile_button, FALSE);
-				g_child_watch_add(child_pid, build_exit_cb, NULL);
-			}
-		}
-	}
-}
-
-
-void
-on_build_execute_activate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	gint idx = document_get_cur_idx();
-
-	if (doc_list[idx].file_type->id == GEANY_FILETYPES_LATEX && user_data != NULL)
-	{
-		if (build_view_tex_file(idx, GPOINTER_TO_INT(user_data)) == (GPid) 0)
-		{
-			msgwin_status_add(_("Failed to execute the view program"));
-		}
-	}
-	else if (doc_list[idx].file_type->id == GEANY_FILETYPES_HTML)
-	{
-		gchar *uri = g_strconcat("file:///", g_path_skip_root(doc_list[idx].file_name), NULL);
-		utils_start_browser(uri);
-		g_free(uri);
-	}
-	else
-	{
-		// save the file only if the run command uses it
-		if (doc_list[idx].changed &&
-			strstr(doc_list[idx].file_type->programs->run_cmd, "%f") != NULL)
-				document_save_file(idx, FALSE);
-		if (build_run_cmd(idx) == (GPid) 0)
-		{
-#ifndef G_OS_WIN32 // on Windows there is no PID returned
-			msgwin_status_add(_("Failed to execute the terminal program"));
-#endif
-		}
-	}
-	//gtk_widget_grab_focus(GTK_WIDGET(doc_list[idx].sci));
-}
-
-
-void
-on_build_arguments_activate            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	dialogs_show_includes_arguments_gen();
-}
-
-
-void
-on_build_tex_arguments_activate        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-	dialogs_show_includes_arguments_tex();
-}
-
-
-void
-on_make_target_dialog_response         (GtkDialog *dialog,
-                                        gint response,
-                                        gpointer user_data)
-{
-	if (response == GTK_RESPONSE_ACCEPT)
-	{
-		gint idx = document_get_cur_idx();
-		GPid child_pid;
-
-		if (doc_list[idx].changed) document_save_file(idx, FALSE);
-
-		g_free(build_info.custom_target);
-		build_info.custom_target = g_strdup(gtk_entry_get_text(GTK_ENTRY(user_data)));
-
-		child_pid = build_make_file(idx, GBO_MAKE_CUSTOM);
-		if (child_pid != (GPid) 0)
-		{
-			gtk_widget_set_sensitive(app->compile_button, FALSE);
-			g_child_watch_add(child_pid, build_exit_cb, NULL);
-		}
-	}
-	gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-
-
-void
-on_make_target_entry_activate          (GtkEntry        *entry,
-                                        gpointer         user_data)
-{
-	on_make_target_dialog_response(GTK_DIALOG(user_data), GTK_RESPONSE_ACCEPT, entry);
-}
-
-
-void
 on_find1_activate                      (GtkMenuItem     *menuitem,
                                         gpointer         user_data)
 {

Modified: trunk/src/callbacks.h
===================================================================
--- trunk/src/callbacks.h	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/callbacks.h	2006-10-18 19:35:42 UTC (rev 902)
@@ -320,43 +320,6 @@
                                         gpointer         user_data);
 
 void
-on_build_compile_activate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_tex_activate                  (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_build_activate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_make_activate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_execute_activate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_arguments_activate            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_build_tex_arguments_activate        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-on_make_target_dialog_response         (GtkDialog *dialog,
-                                        gint response,
-                                        gpointer user_data);
-
-void
-on_make_target_entry_activate          (GtkEntry        *entry,
-                                        gpointer         user_data);
-
-void
 on_find1_activate                      (GtkMenuItem     *menuitem,
                                         gpointer         user_data);
 

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/document.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -57,6 +57,7 @@
 #include "notebook.h"
 #include "main.h"
 #include "vte.h"
+#include "build.h"
 
 
 /* dynamic array of document elements to hold all information of the notebook tabs */
@@ -373,7 +374,7 @@
 			ui_set_window_title(-1);
 			ui_save_buttons_toggle(FALSE);
 			ui_close_buttons_toggle();
-			ui_update_build_menu(-1);
+			build_menu_update(-1);
 		}
 	}
 	else geany_debug("Error: idx: %d page_num: %d", idx, page_num);
@@ -409,7 +410,7 @@
 	document_set_filetype(idx, ft);	// also clears taglist
 	if (ft == NULL) filetypes[GEANY_FILETYPES_ALL]->style_func_ptr(doc_list[idx].sci);
 	ui_set_window_title(idx);
-	ui_update_build_menu(idx);
+	build_menu_update(idx);
 	doc_list[idx].mtime = time(NULL);
 	doc_list[idx].changed = FALSE;
 	document_set_text_changed(idx);
@@ -676,7 +677,7 @@
 		sci_set_readonly(doc_list[idx].sci, readonly);
 
 		document_set_filetype(idx, use_ft);	// also sets taglist
-		ui_update_build_menu(idx);
+		build_menu_update(idx);
 
 		// "the" SCI signal (connect after initial setup(i.e. adding text))
 		g_signal_connect((GtkWidget*) doc_list[idx].sci, "sci-notify",
@@ -1208,7 +1209,7 @@
 		}
 	}
 	sci_colourise(doc_list[idx].sci, 0, -1);
-	ui_update_build_menu(idx);
+	build_menu_update(idx);
 }
 
 

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/keybindings.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -34,6 +34,7 @@
 #include "msgwindow.h"
 #include "sci_cb.h"
 #include "sciwrappers.h"
+#include "build.h"
 // include vte.h on non-Win32 systems, else define fake vte_init
 #ifdef HAVE_VTE
 # include "vte.h"
@@ -572,7 +573,7 @@
 	gint idx = document_get_cur_idx();
 	if (idx == -1 || ! doc_list[idx].is_valid) return;
 	if (doc_list[idx].file_name != NULL)
-		on_build_make_activate(NULL, GINT_TO_POINTER(0));
+		on_build_make_activate(NULL, GINT_TO_POINTER(GBO_MAKE_ALL));
 }
 
 static void cb_func_build_makeowntarget(void)
@@ -580,7 +581,7 @@
 	gint idx = document_get_cur_idx();
 	if (idx == -1 || ! doc_list[idx].is_valid) return;
 	if (doc_list[idx].file_name != NULL)
-		on_build_make_activate(NULL, GINT_TO_POINTER(1));
+		on_build_make_activate(NULL, GINT_TO_POINTER(GBO_MAKE_CUSTOM));
 }
 
 static void cb_func_build_makeobject(void)
@@ -588,7 +589,7 @@
 	gint idx = document_get_cur_idx();
 	if (idx == -1 || ! doc_list[idx].is_valid) return;
 	if (doc_list[idx].file_name != NULL)
-		on_build_make_activate(NULL, GINT_TO_POINTER(2));
+		on_build_make_activate(NULL, GINT_TO_POINTER(GBO_MAKE_OBJECT));
 }
 
 static void cb_func_build_run(void)

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/main.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -50,6 +50,7 @@
 #include "keybindings.h"
 #include "sci_cb.h"
 #include "search.h"
+#include "build.h"
 
 #ifdef HAVE_SOCKET
 # include "socket.h"
@@ -597,7 +598,7 @@
 	idx = document_get_cur_idx();
 	gtk_widget_grab_focus(GTK_WIDGET(doc_list[idx].sci));
 	gtk_tree_model_foreach(GTK_TREE_MODEL(tv.store_openfiles), treeviews_find_node, GINT_TO_POINTER(idx));
-	ui_update_build_menu(idx);
+	build_menu_update(idx);
 	ui_update_tag_list(idx, FALSE);
 
 #ifdef G_OS_WIN32

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/ui_utils.c	2006-10-18 19:35:42 UTC (rev 902)
@@ -36,8 +36,6 @@
 #include "encodings.h"
 #include "images.c"
 #include "treeviews.h"
-#include "keybindings.h"
-#include "build.h"
 
 
 static gchar *menu_item_get_text(GtkMenuItem *menu_item);
@@ -48,10 +46,7 @@
 recent_file_activate_cb                (GtkMenuItem     *menuitem,
                                         gpointer         user_data);
 
-static GtkWidget *create_build_menu_tex(gint idx);
-static GtkWidget *create_build_menu_gen(gint idx);
 
-
 /* allow_override is TRUE if text can be ignored when another message has been set
  * that didn't use allow_override and has not timed out. */
 void ui_set_statusbar(const gchar *text, gboolean allow_override)
@@ -624,350 +619,6 @@
 }
 
 
-static gboolean is_c_header(const gchar *fname)
-{
-	gchar *ext = NULL;
-
-	if (fname)
-	{
-		ext = strrchr(fname, '.');
-	}
-	return (ext == NULL) ? FALSE : (*(ext + 1) == 'h');	// match *.h*
-}
-
-
-void ui_update_build_menu(gint idx)
-{
-	filetype *ft;
-	gboolean have_path;
-
-	if (idx == -1 || doc_list[idx].file_type == NULL)
-	{
-		gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), FALSE);
-		gtk_menu_item_remove_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")));
-		gtk_widget_set_sensitive(app->compile_button, FALSE);
-		gtk_widget_set_sensitive(app->run_button, FALSE);
-		return;
-	}
-	else
-		gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), TRUE);
-
-	ft = doc_list[idx].file_type;
-
-#ifdef G_OS_WIN32
-	// disable compile and link under Windows until it is implemented
-	ft->menu_items->can_compile = FALSE;
-	ft->menu_items->can_link = FALSE;
-#endif
-
-	gtk_menu_item_remove_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")));
-
-	if (ft->menu_items->menu == NULL)
-	{
-		ft->menu_items->menu = (ft->id == GEANY_FILETYPES_LATEX) ?
-			create_build_menu_tex(idx) : create_build_menu_gen(idx);
-		g_object_ref((gpointer)ft->menu_items->menu);	// to hold it after removing
-	}
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(lookup_widget(app->window, "menu_build1")),
-						ft->menu_items->menu);
-
-	have_path = (doc_list[idx].file_name != NULL);
-	// update the Make items
-	if (ft->menu_items->item_make_all != NULL)
-		gtk_widget_set_sensitive(ft->menu_items->item_make_all, have_path);
-	if (ft->menu_items->item_make_custom != NULL)
-		gtk_widget_set_sensitive(ft->menu_items->item_make_custom, have_path);
-	if (ft->menu_items->item_make_object != NULL)
-		gtk_widget_set_sensitive(ft->menu_items->item_make_object, have_path);
-	
-	switch (ft->id)
-	{
-		case GEANY_FILETYPES_LATEX:
-		{
-			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
-			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
-			break;
-		}
-		case GEANY_FILETYPES_C:	// intended fallthrough, C and C++ behave equal
-		case GEANY_FILETYPES_CPP:
-		{
-			if (ft->menu_items->can_exec)
-				gtk_widget_set_sensitive(ft->menu_items->item_exec, have_path);
-			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
-
-			// compile and link are disabled for header files
-			have_path = have_path && ! is_c_header(doc_list[idx].file_name);
-			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
-			if (ft->menu_items->can_compile)
-				gtk_widget_set_sensitive(ft->menu_items->item_compile, have_path);
-			if (ft->menu_items->can_link)
-				gtk_widget_set_sensitive(ft->menu_items->item_link, have_path);
-			break;
-		}
-		default:
-		{
-			gtk_widget_set_sensitive(app->compile_button, have_path && ft->menu_items->can_compile);
-			gtk_widget_set_sensitive(app->run_button, have_path && ft->menu_items->can_exec);
-			if (ft->menu_items->can_compile)
-				gtk_widget_set_sensitive(ft->menu_items->item_compile, have_path);
-			if (ft->menu_items->can_link)
-				gtk_widget_set_sensitive(ft->menu_items->item_link, have_path);
-			if (ft->menu_items->can_exec)
-				gtk_widget_set_sensitive(ft->menu_items->item_exec, have_path);
-		}
-	}
-}
-
-
-#define GEANY_ADD_WIDGET_ACCEL(gkey, menuitem) \
-	if (keys[(gkey)]->key != 0) \
-		gtk_widget_add_accelerator(menuitem, "activate", accel_group, \
-			keys[(gkey)]->key, keys[(gkey)]->mods, GTK_ACCEL_VISIBLE)
-
-static GtkWidget *create_build_menu_gen(gint idx)
-{
-	GtkWidget *menu, *item = NULL, *image, *separator;
-	GtkAccelGroup *accel_group = gtk_accel_group_new();
-	GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
-	filetype *ft = doc_list[idx].file_type;
-
-	menu = gtk_menu_new();
-
-#ifndef G_OS_WIN32
-	if (ft->menu_items->can_compile)
-	{
-		// compile the code
-		item = gtk_image_menu_item_new_with_mnemonic(_("_Compile"));
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-		gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file"), NULL);
-		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_COMPILE, item);
-		image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
-		gtk_widget_show(image);
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_compile_activate), NULL);
-		ft->menu_items->item_compile = item;
-	}
-
-	if (ft->menu_items->can_link)
-	{	// build the code
-		item = gtk_image_menu_item_new_with_mnemonic(_("_Build"));
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-		gtk_tooltips_set_tip(tooltips, item,
-					_("Builds the current file (generate an executable file)"), NULL);
-		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_LINK, item);
-		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_build_activate), NULL);
-		ft->menu_items->item_link = item;
-	}
-
-	if (item != NULL)
-	{
-		item = gtk_separator_menu_item_new();
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-	}
-
-	// build the code with make all
-	item = gtk_image_menu_item_new_with_mnemonic(_("_Make all"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
-										   "make tool and the default target"), NULL);
-	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKE, item);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
-		GINT_TO_POINTER(GBO_MAKE_ALL));
-	ft->menu_items->item_make_all = item;
-
-	// build the code with make custom
-	item = gtk_image_menu_item_new_with_mnemonic(_("Make custom _target"));
-	gtk_widget_show(item);
-	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOWNTARGET, item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
-										   "make tool and the specified target"), NULL);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
-		GINT_TO_POINTER(GBO_MAKE_CUSTOM));
-	ft->menu_items->item_make_custom = item;
-
-	// build the code with make object
-	item = gtk_image_menu_item_new_with_mnemonic(_("Make _object"));
-	gtk_widget_show(item);
-	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOBJECT, item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file using the "
-										   "make tool"), NULL);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
-		GINT_TO_POINTER(GBO_MAKE_OBJECT));
-	ft->menu_items->item_make_object = item;
-#endif
-
-	if (ft->menu_items->can_exec)
-	{	// execute the code
-		item = gtk_separator_menu_item_new();
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-
-		item = gtk_image_menu_item_new_from_stock("gtk-execute", accel_group);
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-		gtk_tooltips_set_tip(tooltips, item, _("Run or view the current file"), NULL);
-		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_RUN, item);
-		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_execute_activate), NULL);
-		ft->menu_items->item_exec = item;
-	}
-
-	// arguments
-	if (ft->menu_items->can_compile || ft->menu_items->can_link || ft->menu_items->can_exec)
-	{
-		// separator
-		separator = gtk_separator_menu_item_new();
-		gtk_widget_show(separator);
-		gtk_container_add(GTK_CONTAINER(menu), separator);
-		gtk_widget_set_sensitive(separator, FALSE);
-
-		item = gtk_image_menu_item_new_with_mnemonic(_("_Set Includes and Arguments"));
-		gtk_widget_show(item);
-		GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_OPTIONS, item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-		gtk_tooltips_set_tip(tooltips, item,
-					_("Sets the includes and library paths for the compiler and "
-					  "the program arguments for execution"), NULL);
-		image = gtk_image_new_from_stock("gtk-preferences", GTK_ICON_SIZE_MENU);
-		gtk_widget_show(image);
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-		g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_arguments_activate), NULL);
-	}
-
-	return menu;
-}
-
-
-static GtkWidget *create_build_menu_tex(gint idx)
-{
-	GtkWidget *menu, *item, *image, *separator;
-	GtkAccelGroup *accel_group = gtk_accel_group_new();
-	GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
-	filetype *ft = filetypes[GEANY_FILETYPES_LATEX];
-
-	menu = gtk_menu_new();
-
-#ifndef G_OS_WIN32
-	// DVI
-	item = gtk_image_menu_item_new_with_mnemonic(_("LaTeX -> DVI"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file into a DVI file"), NULL);
-	if (keys[GEANY_KEYS_BUILD_COMPILE]->key)
-		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_COMPILE]->key,
-			keys[GEANY_KEYS_BUILD_COMPILE]->mods, GTK_ACCEL_VISIBLE);
-	image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
-	gtk_widget_show(image);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(0));
-
-	// PDF
-	item = gtk_image_menu_item_new_with_mnemonic(_("LaTeX -> PDF"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Compiles the current file into a PDF file"), NULL);
-	if (keys[GEANY_KEYS_BUILD_LINK]->key)
-		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_LINK]->key,
-			keys[GEANY_KEYS_BUILD_LINK]->mods, GTK_ACCEL_VISIBLE);
-	image = gtk_image_new_from_stock("gtk-convert", GTK_ICON_SIZE_MENU);
-	gtk_widget_show(image);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(1));
-
-	if (item != NULL)
-	{
-		item = gtk_separator_menu_item_new();
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-	}
-
-	// build the code with make all
-	item = gtk_image_menu_item_new_with_mnemonic(_("_Make all"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
-										   "make tool and the default target"), NULL);
-	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKE, item);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
-		GINT_TO_POINTER(GBO_MAKE_ALL));
-	ft->menu_items->item_make_all = item;
-
-	// build the code with make custom
-	item = gtk_image_menu_item_new_with_mnemonic(_("Make custom _target"));
-	gtk_widget_show(item);
-	GEANY_ADD_WIDGET_ACCEL(GEANY_KEYS_BUILD_MAKEOWNTARGET, item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item, _("Builds the current file with the "
-										   "make tool and the specified target"), NULL);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_make_activate),
-		GINT_TO_POINTER(GBO_MAKE_CUSTOM));
-	ft->menu_items->item_make_custom = item;
-
-	if (item != NULL)
-	{
-		item = gtk_separator_menu_item_new();
-		gtk_widget_show(item);
-		gtk_container_add(GTK_CONTAINER(menu), item);
-	}
-#endif
-
-	// DVI view
-	item = gtk_image_menu_item_new_with_mnemonic(_("View DVI file"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	if (keys[GEANY_KEYS_BUILD_RUN]->key)
-		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_RUN]->key,
-			keys[GEANY_KEYS_BUILD_RUN]->mods, GTK_ACCEL_VISIBLE);
-	gtk_tooltips_set_tip(tooltips, item, _("Compiles and view the current file"), NULL);
-	image = gtk_image_new_from_stock("gtk-find", GTK_ICON_SIZE_MENU);
-	gtk_widget_show(image);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(2));
-
-	// PDF view
-	item = gtk_image_menu_item_new_with_mnemonic(_("View PDF file"));
-	gtk_widget_show(item);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	if (keys[GEANY_KEYS_BUILD_RUN2]->key)
-		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_RUN2]->key,
-			keys[GEANY_KEYS_BUILD_RUN2]->mods, GTK_ACCEL_VISIBLE);
-	gtk_tooltips_set_tip(tooltips, item, _("Compiles and view the current file"), NULL);
-	image = gtk_image_new_from_stock("gtk-find", GTK_ICON_SIZE_MENU);
-	gtk_widget_show(image);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_activate), GINT_TO_POINTER(3));
-
-	// separator
-	separator = gtk_separator_menu_item_new();
-	gtk_widget_show(separator);
-	gtk_container_add(GTK_CONTAINER(menu), separator);
-	gtk_widget_set_sensitive(separator, FALSE);
-
-	// arguments
-	item = gtk_image_menu_item_new_with_mnemonic(_("Set Arguments"));
-	gtk_widget_show(item);
-	if (keys[GEANY_KEYS_BUILD_OPTIONS]->key)
-		gtk_widget_add_accelerator(item, "activate", accel_group, keys[GEANY_KEYS_BUILD_OPTIONS]->key,
-			keys[GEANY_KEYS_BUILD_OPTIONS]->mods, GTK_ACCEL_VISIBLE);
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	gtk_tooltips_set_tip(tooltips, item,
-				_("Sets the program paths and arguments"), NULL);
-	image = gtk_image_new_from_stock("gtk-preferences", GTK_ICON_SIZE_MENU);
-	gtk_widget_show(image);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
-	g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_build_tex_arguments_activate), NULL);
-
-	gtk_window_add_accel_group(GTK_WINDOW(app->window), accel_group);
-
-	return menu;
-}
-
-
 void ui_treeviews_show_hide(gboolean force)
 {
 	GtkWidget *widget;

Modified: trunk/src/ui_utils.h
===================================================================
--- trunk/src/ui_utils.h	2006-10-17 16:41:29 UTC (rev 901)
+++ trunk/src/ui_utils.h	2006-10-18 19:35:42 UTC (rev 902)
@@ -68,8 +68,6 @@
 
 void ui_widget_show_hide(GtkWidget *widget, gboolean show);
 
-void ui_update_build_menu(gint);
-
 void ui_treeviews_show_hide(gboolean force);
 
 void ui_document_show_hide(gint idx);


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