<!-- ##### SECTION Title ##### -->
GnomeMDI

<!-- ##### SECTION Short_Description ##### -->
GNOME Multiple Document Interface

<!-- ##### SECTION Long_Description ##### -->
  <para>
    The <type>GnomeMDI</type> object lets the application manage a
    number of documents and displays their views in a configurable
    fashion.
  </para>
  
  <para>
    Once an instance of <type>GnomeMDI</type> has been created, you
    can add documents to it using gnome_mdi_add_child() and add views
    of these documents with gnome_mdi_add_view() routine. GnomeMDI
    also provides means to create global menus and toolbar that apply
    for each document and for merging document-specific menus with the
    global ones. MDI automatically creates a menu containing a list of
    all open documents. The global menus and toolbar can be created
    using a template GnomeUIInfo structure or with a handler for
    app_created signal which allows for customization of all
    <type>GnomeApp</type> widgets that <type>GnomeMDI</type> creates.
  </para>

  <para>
    The views are displayed in one of three modes that can be set using
    gnome_mdi_set_mode() function:
    <itemizedlist> 
      <listitem><para>
	  %GNOME_MDI_NOTEBOOK mode displays each view in a notebook page. The user can create
	  any number of notebooks, each within its toplevel <type>GnomeApp</type> and drag
	  pages from one to another, thus distributing the views between them in any
	  desired manner.
	</para></listitem>
      <listitem><para>
	  %GNOME_MDI_TOPLEVEL mode displays each view in its own toplevel window.
	</para></listitem>
      <listitem><para>
	  %GNOME_MDI_MODAL mode displays only a single view of a document.
	</para></listitem>
      <listitem><para>
	  %GNOME_MDI_DEFAULT uses the mode that can be configured on a per-user
	  basis via the GNOME control center.
	</para></listitem>
    </itemizedlist>
  </para>
  
  <para>
    <type>GnomeMDI</type> can automatically save and restore its state and the state
    of its children and layout, which is particularly useful to simplify implementation
    of session managment.
  </para>

<!-- ##### SECTION See_Also ##### -->
<para>
  #GnomeApp, #GnomeMDIChild, #GnomeMDIGenericChild, #GnomeMDISession
</para>

<!-- ##### STRUCT GnomeMDI ##### -->
<para>

</para>


<!-- ##### ENUM GnomeMDIMode ##### -->
<para>

</para>


<!-- ##### FUNCTION gnome_mdi_new ##### -->
<para>

</para>

@appname: 
@title: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_set_mode ##### -->
<para>

</para>

@mdi: 
@mode: 


<!-- ##### FUNCTION gnome_mdi_set_menubar_template ##### -->
<para>

</para>

@mdi: 
@menu_tmpl: 


<!-- ##### FUNCTION gnome_mdi_set_toolbar_template ##### -->
<para>

</para>

@mdi: 
@tbar_tmpl: 


<!-- ##### FUNCTION gnome_mdi_set_child_menu_path ##### -->
<para>

</para>

@mdi: 
@path: 


<!-- ##### FUNCTION gnome_mdi_set_child_list_path ##### -->
<para>

</para>

@mdi: 
@path: 


<!-- ##### FUNCTION gnome_mdi_add_view ##### -->
<para>

</para>

@mdi: 
@child: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_add_toplevel_view ##### -->
<para>

</para>

@mdi: 
@child: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_remove_view ##### -->
<para>

</para>

@mdi: 
@view: 
@force: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_active_view ##### -->
<para>

</para>

@mdi: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_set_active_view ##### -->
<para>

</para>

@mdi: 
@view: 


<!-- ##### FUNCTION gnome_mdi_add_child ##### -->
<para>

</para>

@mdi: 
@child: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_remove_child ##### -->
<para>

</para>

@mdi: 
@child: 
@force: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_remove_all ##### -->
<para>

</para>

@mdi: 
@force: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_open_toplevel ##### -->
<para>

</para>

@mdi: 


<!-- ##### FUNCTION gnome_mdi_update_child ##### -->
<para>

</para>

@mdi: 
@child: 


<!-- ##### FUNCTION gnome_mdi_get_active_child ##### -->
<para>

</para>

@mdi: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_find_child ##### -->
<para>

</para>

@mdi: 
@name: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_active_window ##### -->
<para>

</para>

@mdi: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_register ##### -->
<para>

</para>

@mdi: 
@object: 


<!-- ##### FUNCTION gnome_mdi_unregister ##### -->
<para>

</para>

@mdi: 
@object: 


<!-- ##### FUNCTION gnome_mdi_get_app_from_view ##### -->
<para>

</para>

@view: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_child_from_view ##### -->
<para>

</para>

@view: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_view_from_window ##### -->
<para>

</para>

@mdi: 
@app: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_menubar_info ##### -->
<para>

</para>

@app: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_toolbar_info ##### -->
<para>

</para>

@app: 
@Returns: 


<!-- ##### FUNCTION gnome_mdi_get_child_menu_info ##### -->
<para>

</para>

@app: 
@Returns: 


<!-- ##### SIGNAL GnomeMDI::add-child ##### -->
<para>
  Emitted before actually adding a child. If the handler returns %TRUE, the
  child is added, otherwise, nothing happens.
</para>

@mdi: the object which received the signal.
@arg1: child to be added
@Returns: boolean, to indicate if the child is to be added

<!-- ##### SIGNAL GnomeMDI::remove-child ##### -->
<para>
  Emitted before actually removing a child. If the handler returns %TRUE, the
  child is remove, otherwise, nothing happens.
</para>

@mdi: the object which received the signal.
@arg1: child to be remove
@Returns: boolean, to indicate if the child is to be removed

<!-- ##### SIGNAL GnomeMDI::add-view ##### -->
<para>
  Emitted before actually adding a view. If the handler returns %TRUE, the
  view is added, otherwise, nothing happens.
</para>

@mdi: the object which received the signal.
@widget: view to be added
@Returns: boolean, to indicate if the view is to be added

<!-- ##### SIGNAL GnomeMDI::remove-view ##### -->
<para>
  Emitted before actually removing a view. If the handler returns %TRUE, the
  view is remove, otherwise, nothing happens.
</para>

@mdi: the object which received the signal.
@widget: the view to be removed
@Returns: boolean, to indicate if the view is to be removed

<!-- ##### SIGNAL GnomeMDI::child-changed ##### -->
<para>
  Emitted each time when active child is changed with the second argument
  pointing to the old child. mdi->active_view and mdi->active_child already
  hold the new values
</para>

@mdi: the object which received the signal.
@arg1: the old child

<!-- ##### SIGNAL GnomeMDI::view-changed ##### -->
<para>
  Emitted whenever a view is changed, regardless of it being the view of the same child as
  the old view or not. the second argument points to the old view, mdi->active_view and
  mdi->active_child hold the new values. If the child has also been changed, this signal is
  emitted after the #child_changed signal.
</para>

@mdi: the object which received the signal.
@widget: the old view

<!-- ##### SIGNAL GnomeMDI::app-created ##### -->
<para>
  Emitted with each newly created #GnomeApp to allow the MDI user to customize it (add a
  statusbar, toolbars or menubar if the method with #GnomeUIInfo templates is not sufficient,
  etc.).  No contents may be set since #GnomeMDI uses them for storing either a view of a child
  or a notebook.
</para>

@mdi: the object which received the signal.
@arg1: the #GnomeApp being created
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../gnomeui-docs.sgml" "book" "sect1" "")
End:
-->

