Commit b64b58d9 authored by Naba Kumar's avatar Naba Kumar

Updated, added missing files.

	* po/POTFILES.in: Updated, added missing files.

	* .cvsignore: Updated.

	* libanjuta/anjuta-utils.[h,c]: Functions take constant parameters. Added
	a new function to get User input text.

	* libanjuta/resources.[c,h]: Added a function to created sized image.

	* libanjuta/interfaces/libanjuta.idl: Changed parameter name to uri
	from filename, as thats the correct representation.

	* plugins/build-basic-autotools/Makefile.am,
	(added) plugins/build-basic-autotools/automake-c.filters,
	plugins/build-basic-autotools/anjuta-build-basic-autotools-plugin.ui,
	plugins/build-basic-autotools/build-basic-autotools.[c,h]:
	Rearragned UI elements in the build menu. Added codes to read build
	filter rules from external file. Implemented all build, configure,
	autogen commands. Watches current editor and project.

	* plugins/editor/anjuta-docman.[c,h], plugins/editor/plugin.c:
	Added editor changed signal and exports current editor value.
	Fixed parameter names. Fixed get_uri() interface implementation to
	return correct uri.

	* plugins/editor/anjuta-document-manager.ui: Removed unnecessary UI
	elements.

	* plugins/file-loader/anjuta-loader-plugin.ui: Added New UI element.

	* plugins/file-manager/an_file_view.c,
	plugins/file-manager/an_file_view.c: Exports file uri correctly.

	* plugins/file-wizard/file.c: Reads uri correctly.

	* plugins/message-view/anjuta-msgman.c: Sizes tab images properly and
	sets the page to the new view.

	* plugins/message-view/message-view.c: Unrefs the tree model when done.
	Fixed signal connecting.

	* plugins/project-manager/plugin.c: Changed "project_root_directory"
	to "project_root_uri" and exports as uri.
parent 8e2d31db
.tm_project.cache
aclocal.m4
anjuta.desktop
anjuta.desktop.in
anjuta.pws
anjuta.spec
autom4te.cache
config.h
config.h.in
config.log
config.status
configure
intltool-extract
intltool-merge
intltool-modules
intltool-update
libtool
prepare.sh
stamp-h
stamp-h.in
Makefile Makefile
Makefile.in Makefile.in
2004-09-26 Naba Kumar <naba@gnome.org>
* po/POTFILES.in: Updated, added missing files.
* .cvsignore: Updated.
* libanjuta/anjuta-utils.[h,c]: Functions take constant parameters. Added
a new function to get User input text.
* libanjuta/resources.[c,h]: Added a function to created sized image.
* libanjuta/interfaces/libanjuta.idl: Changed parameter name to uri
from filename, as thats the correct representation.
* plugins/build-basic-autotools/Makefile.am,
(added) plugins/build-basic-autotools/automake-c.filters,
plugins/build-basic-autotools/anjuta-build-basic-autotools-plugin.ui,
plugins/build-basic-autotools/build-basic-autotools.[c,h]:
Rearragned UI elements in the build menu. Added codes to read build
filter rules from external file. Implemented all build, configure,
autogen commands. Watches current editor and project.
* plugins/editor/anjuta-docman.[c,h], plugins/editor/plugin.c:
Added editor changed signal and exports current editor value.
Fixed parameter names. Fixed get_uri() interface implementation to
return correct uri.
* plugins/editor/anjuta-document-manager.ui: Removed unnecessary UI
elements.
* plugins/file-loader/anjuta-loader-plugin.ui: Added New UI element.
* plugins/file-manager/an_file_view.c,
plugins/file-manager/an_file_view.c: Exports file uri correctly.
* plugins/file-wizard/file.c: Reads uri correctly.
* plugins/message-view/anjuta-msgman.c: Sizes tab images properly and
sets the page to the new view.
* plugins/message-view/message-view.c: Unrefs the tree model when done.
Fixed signal connecting.
* plugins/project-manager/plugin.c: Changed "project_root_directory"
to "project_root_uri" and exports as uri.
2004-09-24 Naba Kumar <naba@gnome.org> 2004-09-24 Naba Kumar <naba@gnome.org>
* libanjuta/anjuta-ui.c: Fixed a crash bug. * libanjuta/anjuta-ui.c: Fixed a crash bug.
......
...@@ -209,7 +209,7 @@ anjuta_util_dialog_add_button (GtkDialog *dialog, const gchar* text, ...@@ -209,7 +209,7 @@ anjuta_util_dialog_add_button (GtkDialog *dialog, const gchar* text,
} }
void void
anjuta_util_dialog_error (GtkWindow *parent, gchar * mesg, ...) anjuta_util_dialog_error (GtkWindow *parent, const gchar *mesg, ...)
{ {
gchar* message; gchar* message;
va_list args; va_list args;
...@@ -231,7 +231,7 @@ anjuta_util_dialog_error (GtkWindow *parent, gchar * mesg, ...) ...@@ -231,7 +231,7 @@ anjuta_util_dialog_error (GtkWindow *parent, gchar * mesg, ...)
} }
void void
anjuta_util_dialog_warning (GtkWindow *parent, gchar * mesg, ...) anjuta_util_dialog_warning (GtkWindow *parent, const gchar * mesg, ...)
{ {
gchar* message; gchar* message;
va_list args; va_list args;
...@@ -253,7 +253,7 @@ anjuta_util_dialog_warning (GtkWindow *parent, gchar * mesg, ...) ...@@ -253,7 +253,7 @@ anjuta_util_dialog_warning (GtkWindow *parent, gchar * mesg, ...)
} }
void void
anjuta_util_dialog_info (GtkWindow *parent, gchar * mesg, ...) anjuta_util_dialog_info (GtkWindow *parent, const gchar * mesg, ...)
{ {
gchar* message; gchar* message;
va_list args; va_list args;
...@@ -275,7 +275,8 @@ anjuta_util_dialog_info (GtkWindow *parent, gchar * mesg, ...) ...@@ -275,7 +275,8 @@ anjuta_util_dialog_info (GtkWindow *parent, gchar * mesg, ...)
} }
void void
anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, gchar * mesg, ... ) anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum,
const gchar * mesg, ... )
{ {
gchar* message; gchar* message;
gchar* tot_mesg; gchar* tot_mesg;
...@@ -287,7 +288,8 @@ anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, gchar * mesg, . ...@@ -287,7 +288,8 @@ anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, gchar * mesg, .
va_end (args); va_end (args);
if (0 != errnum) { if (0 != errnum) {
tot_mesg = g_strconcat (message, _("\nSystem: "), g_strerror(errnum), NULL); tot_mesg = g_strconcat (message, _("\nSystem: "),
g_strerror(errnum), NULL);
g_free (message); g_free (message);
} else } else
tot_mesg = message; tot_mesg = message;
...@@ -304,7 +306,7 @@ anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, gchar * mesg, . ...@@ -304,7 +306,7 @@ anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, gchar * mesg, .
} }
gboolean gboolean
anjuta_util_dialog_boolean_question (GtkWindow *parent, gchar * mesg, ...) anjuta_util_dialog_boolean_question (GtkWindow *parent, const gchar *mesg, ...)
{ {
gchar* message; gchar* message;
va_list args; va_list args;
...@@ -326,6 +328,55 @@ anjuta_util_dialog_boolean_question (GtkWindow *parent, gchar * mesg, ...) ...@@ -326,6 +328,55 @@ anjuta_util_dialog_boolean_question (GtkWindow *parent, gchar * mesg, ...)
return (ret == GTK_RESPONSE_YES); return (ret == GTK_RESPONSE_YES);
} }
gboolean
anjuta_util_dialog_input (GtkWindow *parent, const gchar *prompt,
gchar **return_value)
{
GtkWidget *dialog, *label, *frame, *entry, *dialog_vbox;
gint res;
gchar *markup;
dialog = gtk_dialog_new_with_buttons (prompt, parent,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
dialog_vbox = GTK_DIALOG (dialog)->vbox;
gtk_window_set_default_size (GTK_WINDOW (dialog), 400, -1);
gtk_widget_show (dialog_vbox);
markup = g_strconcat ("<b>", prompt, "</b>", NULL);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
gtk_widget_show (label);
g_free (markup);
frame = gtk_frame_new (NULL);
gtk_frame_set_label_widget (GTK_FRAME (frame), label);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
gtk_container_set_border_width (GTK_CONTAINER (frame), 10);
gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (dialog_vbox), frame, FALSE, FALSE, 0);
entry = gtk_entry_new ();
gtk_widget_show (entry);
gtk_container_add (GTK_CONTAINER (frame), entry);
res = gtk_dialog_run (GTK_DIALOG (dialog));
if (gtk_entry_get_text (GTK_ENTRY (entry)) &&
strlen (gtk_entry_get_text (GTK_ENTRY (entry))) > 0)
{
*return_value = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
}
else
{
*return_value = NULL;
}
gtk_widget_destroy (dialog);
return (res == GTK_RESPONSE_OK);
}
gboolean gboolean
anjuta_util_prog_is_installed (gchar * prog, gboolean show) anjuta_util_prog_is_installed (gchar * prog, gboolean show)
{ {
......
...@@ -38,13 +38,15 @@ GtkWidget* anjuta_util_dialog_add_button (GtkDialog *dialog, const gchar* text, ...@@ -38,13 +38,15 @@ GtkWidget* anjuta_util_dialog_add_button (GtkDialog *dialog, const gchar* text,
const gchar* stock_id, const gchar* stock_id,
gint response_id); gint response_id);
void anjuta_util_dialog_error (GtkWindow *parent, gchar * mesg, ...); void anjuta_util_dialog_error (GtkWindow *parent, const gchar * mesg, ...);
void anjuta_util_dialog_warning (GtkWindow *parent, gchar * mesg, ...); void anjuta_util_dialog_warning (GtkWindow *parent, const gchar * mesg, ...);
void anjuta_util_dialog_info (GtkWindow *parent, gchar * mesg, ...); void anjuta_util_dialog_info (GtkWindow *parent, const gchar * mesg, ...);
void anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum, void anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum,
gchar * mesg, ... ); const gchar * mesg, ... );
gboolean anjuta_util_dialog_boolean_question (GtkWindow *parent, gboolean anjuta_util_dialog_boolean_question (GtkWindow *parent,
gchar * mesg, ...); const gchar * mesg, ...);
gboolean anjuta_util_dialog_input (GtkWindow *parent,
const gchar *label, gchar **value);
gboolean anjuta_util_prog_is_installed (gchar * prog, gboolean show); gboolean anjuta_util_prog_is_installed (gchar * prog, gboolean show);
......
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
// Implemented by all plugins that can open files // Implemented by all plugins that can open files
interface IAnjutaFile interface IAnjutaFile
{ {
void open (const gchar *filename); void open (const gchar *uri);
gchar* get_filename (); gchar* get_uri ();
// Implemented by plugins which can also edit the files // Implemented by plugins which can also edit the files
interface IAnjutaFileSavable interface IAnjutaFileSavable
...@@ -33,7 +33,7 @@ interface IAnjutaFile ...@@ -33,7 +33,7 @@ interface IAnjutaFile
void ::save_point (gboolean entered); void ::save_point (gboolean entered);
void save (); void save ();
void save_as (const gchar *filename); void save_as (const gchar *uri);
void set_dirty (gboolean dirty); void set_dirty (gboolean dirty);
gboolean is_dirty (); gboolean is_dirty ();
...@@ -287,7 +287,7 @@ interface IAnjutaLoader ...@@ -287,7 +287,7 @@ interface IAnjutaLoader
/** /**
* ianjuta_file_loader_load: * ianjuta_file_loader_load:
* @obj: Self * @obj: Self
* @filename: File to load * @uri: URI to load
* @readonly: Open in readonly mode. * @readonly: Open in readonly mode.
* @err: Error propagation and reporting * @err: Error propagation and reporting
* *
...@@ -296,12 +296,12 @@ interface IAnjutaLoader ...@@ -296,12 +296,12 @@ interface IAnjutaLoader
* *
* Return value: Plugin interface used to load the file. * Return value: Plugin interface used to load the file.
*/ */
GObject* load (const gchar *filename, gboolean readonly); GObject* load (const gchar *uri, gboolean readonly);
/** /**
* ianjuta_loader_peek_interface: * ianjuta_loader_peek_interface:
* @obj: Self * @obj: Self
* @filename: Meta file to peek * @uri: Meta file to peek
* @err: Error propagation and reporting * @err: Error propagation and reporting
* *
* Peeks the file and determines the interface which can load * Peeks the file and determines the interface which can load
...@@ -309,7 +309,7 @@ interface IAnjutaLoader ...@@ -309,7 +309,7 @@ interface IAnjutaLoader
* *
* Return value: Plugin interface name that can load the file. * Return value: Plugin interface name that can load the file.
*/ */
gchar* peek_interface (const gchar *filename); gchar* peek_interface (const gchar *uri);
} }
// StreamLoaders can deterime correct plugin to open a stream. // StreamLoaders can deterime correct plugin to open a stream.
...@@ -423,11 +423,11 @@ interface IAnjutaMessageManager ...@@ -423,11 +423,11 @@ interface IAnjutaMessageManager
interface IAnjutaFileManager interface IAnjutaFileManager
{ {
void ::section_changed (const gchar *filename); void ::section_changed (const gchar *uri);
void set_root (const gchar *root_directory); void set_root (const gchar *root_uri);
gchar* get_selected (); gchar* get_selected ();
void set_selected (const gchar *filename); void set_selected (const gchar *uri);
} }
/* interface IAnjutaLauncher /* interface IAnjutaLauncher
...@@ -465,7 +465,7 @@ interface IAnjutaProjectManager ...@@ -465,7 +465,7 @@ interface IAnjutaProjectManager
interface IAnjutaTodo interface IAnjutaTodo
{ {
void load(gchar *filename); void load(gchar *uri);
} }
interface IAnjutaWizard interface IAnjutaWizard
......
...@@ -106,6 +106,29 @@ anjuta_res_get_image (const gchar * pixfile) ...@@ -106,6 +106,29 @@ anjuta_res_get_image (const gchar * pixfile)
return pixmap; return pixmap;
} }
GtkWidget *
anjuta_res_get_image_sized (const gchar * pixfile, gint width, gint height)
{
GtkWidget *pixmap;
GdkPixbuf *pixbuf;
gchar *pathname;
if (!pixfile || !pixfile[0])
return gtk_image_new ();
pathname = anjuta_res_get_pixmap_file (pixfile);
if (!pathname)
{
g_warning (_("Could not find application pixmap file: %s"),
pixfile);
return gtk_image_new ();
}
pixbuf = gdk_pixbuf_new_from_file_at_size (pathname, width, height, NULL);
pixmap = gtk_image_new_from_pixbuf (pixbuf);
gdk_pixbuf_unref (pixbuf);
g_free (pathname);
return pixmap;
}
/* All the return strings MUST be freed */ /* All the return strings MUST be freed */
gchar * gchar *
......
...@@ -30,6 +30,8 @@ extern "C" ...@@ -30,6 +30,8 @@ extern "C"
GtkWidget* anjuta_res_lookup_widget (GtkWidget *widget, GtkWidget* anjuta_res_lookup_widget (GtkWidget *widget,
const gchar *widget_name); const gchar *widget_name);
GtkWidget* anjuta_res_get_image (const gchar* filename); GtkWidget* anjuta_res_get_image (const gchar* filename);
GtkWidget* anjuta_res_get_image_sized (const gchar* filename,
gint width, gint height);
/* Do not unref the returned value */ /* Do not unref the returned value */
GdkPixbuf* anjuta_res_get_pixbuf (const gchar *filename); GdkPixbuf* anjuta_res_get_pixbuf (const gchar *filename);
......
...@@ -50,10 +50,12 @@ ianjuta-file-loader ...@@ -50,10 +50,12 @@ ianjuta-file-loader
</para> </para>
@obj: @obj:
@filename: @uri:
@readonly: @readonly:
@err: @err:
@Returns: @Returns:
<!-- # Unused Parameters # -->
@filename:
<!-- ##### FUNCTION ianjuta_file_loader_peek_interface ##### --> <!-- ##### FUNCTION ianjuta_file_loader_peek_interface ##### -->
...@@ -62,8 +64,10 @@ ianjuta-file-loader ...@@ -62,8 +64,10 @@ ianjuta-file-loader
</para> </para>
@obj: @obj:
@filename: @uri:
@err: @err:
@Returns: @Returns:
<!-- # Unused Parameters # -->
@filename:
...@@ -62,8 +62,10 @@ ianjuta-file-manager ...@@ -62,8 +62,10 @@ ianjuta-file-manager
</para> </para>
@obj: @obj:
@root_directory: @root_uri:
@err: @err:
<!-- # Unused Parameters # -->
@root_directory:
<!-- ##### FUNCTION ianjuta_file_manager_set_selected ##### --> <!-- ##### FUNCTION ianjuta_file_manager_set_selected ##### -->
...@@ -72,7 +74,9 @@ ianjuta-file-manager ...@@ -72,7 +74,9 @@ ianjuta-file-manager
</para> </para>
@obj: @obj:
@filename: @uri:
@err: @err:
<!-- # Unused Parameters # -->
@filename:
...@@ -72,8 +72,10 @@ ianjuta-file-savable ...@@ -72,8 +72,10 @@ ianjuta-file-savable
</para> </para>
@obj: @obj:
@filename: @uri:
@err: @err:
<!-- # Unused Parameters # -->
@filename:
<!-- ##### FUNCTION ianjuta_file_savable_set_dirty ##### --> <!-- ##### FUNCTION ianjuta_file_savable_set_dirty ##### -->
......
...@@ -33,7 +33,7 @@ ianjuta-file ...@@ -33,7 +33,7 @@ ianjuta-file
</para> </para>
@g_iface: @g_iface:
@get_filename: @get_uri:
@open: @open:
<!-- ##### FUNCTION ianjuta_file_error_quark ##### --> <!-- ##### FUNCTION ianjuta_file_error_quark ##### -->
...@@ -44,23 +44,15 @@ ianjuta-file ...@@ -44,23 +44,15 @@ ianjuta-file
@Returns: @Returns:
<!-- ##### FUNCTION ianjuta_file_get_filename ##### -->
<para>
</para>
@obj:
@err:
@Returns:
<!-- ##### FUNCTION ianjuta_file_open ##### --> <!-- ##### FUNCTION ianjuta_file_open ##### -->
<para> <para>
</para> </para>
@obj: @obj:
@filename: @uri:
@err: @err:
<!-- # Unused Parameters # -->
@filename:
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
@name: @name:
@icon: @icon:
@err: @err:
@Returns:
<!-- # Unused Parameters # --> <!-- # Unused Parameters # -->
@msgman: @msgman:
@file: @file:
......
...@@ -33,12 +33,13 @@ ...@@ -33,12 +33,13 @@
</para> </para>
@g_iface: @g_iface:
@buffer_flushed:
@message_clicked: @message_clicked:
@append: @append:
@buffer_append:
@clear: @clear:
@get_all_messages: @get_all_messages:
@get_line: @get_current_message:
@get_message:
@select_next: @select_next:
@select_previous: @select_previous:
...@@ -56,9 +57,12 @@ ...@@ -56,9 +57,12 @@
</para> </para>
@obj: @obj:
@message: @type:
@summary:
@details:
@err: @err:
<!-- # Unused Parameters # --> <!-- # Unused Parameters # -->
@message:
@message_view: @message_view:
@e: @e:
...@@ -88,32 +92,6 @@ ...@@ -88,32 +92,6 @@
@e: @e:
<!-- ##### FUNCTION ianjuta_message_view_get_line ##### -->
<para>
</para>
@obj:
@err:
@Returns:
<!-- # Unused Parameters # -->
@message_view:
@e:
<!-- ##### FUNCTION ianjuta_message_view_get_message ##### -->
<para>
</para>
@obj:
@err:
@Returns:
<!-- # Unused Parameters # -->
@message_view:
@e:
<!-- ##### FUNCTION ianjuta_message_view_select_next ##### --> <!-- ##### FUNCTION ianjuta_message_view_select_next ##### -->
<para> <para>
......
...@@ -914,6 +914,37 @@ GnomeFileList ...@@ -914,6 +914,37 @@ GnomeFileList
@e: @e:
@Returns: @Returns:
<!-- ##### FUNCTION ianjuta_file_get_filename ##### -->
<para>
</para>
@obj:
@err:
@Returns:
<!-- ##### FUNCTION ianjuta_message_view_get_line ##### -->
<para>
</para>
@obj:
@err:
@Returns:
@message_view:
@e:
<!-- ##### FUNCTION ianjuta_message_view_get_message ##### -->
<para>
</para>
@obj:
@err:
@Returns:
@message_view:
@e:
<!-- ##### FUNCTION prop_clear ##### --> <!-- ##### FUNCTION prop_clear ##### -->
<para> <para>
......
...@@ -13,6 +13,10 @@ plugin_in_files = anjuta-build-basic-autotools.plugin.in ...@@ -13,6 +13,10 @@ plugin_in_files = anjuta-build-basic-autotools.plugin.in
anjuta_plugindir = $(prefix)/@NO_PREFIX_PACKAGE_PLUGIN_DIR@ anjuta_plugindir = $(prefix)/@NO_PREFIX_PACKAGE_PLUGIN_DIR@
anjuta_plugin_DATA = $(plugin_in_files:.plugin.in=.plugin) anjuta_plugin_DATA = $(plugin_in_files:.plugin.in=.plugin)
# Plugin data files
plugin_datadir = $(prefix)/@NO_PREFIX_PACKAGE_DATA_DIR@/build
plugin_data_DATA = automake-c.filters
# NOTE : # NOTE :
# The naming convention is very intentional # The naming convention is very intentional
# We are forced to use the prefix 'lib' by automake and libtool # We are forced to use the prefix 'lib' by automake and libtool
......
...@@ -3,19 +3,19 @@ ...@@ -3,19 +3,19 @@
<menubar name="MenuMain"> <menubar name="MenuMain">
<placeholder name="PlaceHolderBuildMenus"> <placeholder name="PlaceHolderBuildMenus">
<menu name="MenuBuild" action="ActionMenuBuild"> <menu name="MenuBuild" action="ActionMenuBuild">
<menuitem name="CompileFile" action="ActionBuildCompileFile"/>
<menuitem name="BuildModule" action="ActionBuildBuildModule"/>
<menuitem name="BuildProject" action="ActionBuildBuildProject"/> <menuitem name="BuildProject" action="ActionBuildBuildProject"/>
<menuitem name="BuildDistribution" action="ActionBuildDistribution"/>
<separator/>
<menuitem name="InstallModule" action="ActionBuildInstallModule"/>
<menuitem name="InstallProject" action="ActionBuildInstallProject"/> <menuitem name="InstallProject" action="ActionBuildInstallProject"/>
<menuitem name="CleanProject" action="ActionBuildCleanProject"/>
<separator/> <separator/>
<menuitem name="BuildDistribution" action="ActionBuildDistribution"/>
<menuitem name="Configure" action="ActionBuildConfigure"/> <menuitem name="Configure" action="ActionBuildConfigure"/>
<menuitem name="Autogen" action="ActionBuildAutogen"/> <menuitem name="Autogen" action="ActionBuildAutogen"/>
<separator/> <separator/>
<menuitem name="BuildModule" action="ActionBuildBuildModule"/>
<menuitem name="InstallModule" action="ActionBuildInstallModule"/>
<menuitem name="CleanModule" action="ActionBuildCleanModule"/> <menuitem name="CleanModule" action="ActionBuildCleanModule"/>
<separator/> <menuitem name="CleanProject" action="ActionBuildCleanProject"/>
<menuitem name="CompileFile" action="ActionBuildCompileFile"/>
</menu> </menu>