Description
This widget organizes its children into resizable panes. Within each
pane, multiple children can be put, and they will be accessible through
a notebook.
   
  
  
   Types
   
     - 
         type Child_Flags is mod 2 ** 5; 
- 
         type Child_Group is new Positive; 
- 
         type Child_Iterator is private; 
- 
         type Child_Position is
     (Position_Automatic,
      Position_Bottom,
      Position_Top,
      Position_Left,
      Position_Right); 
- 
         type Load_Desktop_Function is access function
        (MDI : MDI_Window; Node : Glib.Xml_Int.Node_Ptr; User : User_Data)
         return MDI_Child; 
- 
         type MDI_Child is access all MDI_Child_Record'Class; 
- 
         type MDI_Child_Array is array (Natural range <>) of MDI_Child; 
- 
         
         
- 
         type MDI_Window is access all MDI_Window_Record'Class; 
- 
         
         
- 
         type Register_Node is access Register_Node_Record; 
- 
         type Register_Node_Record is record
         Save : Save_Desktop_Function; 
- 
         type Save_Desktop_Function  is access function
        (Widget :  access Gtk.Widget.Gtk_Widget_Record'Class;
         User   : User_Data)
          return Glib.Xml_Int.Node_Ptr; 
 
- 
         type Show_Tabs_Policy_Enum is (Always, Never, Automatic); 
- 
         type Side_Position is Child_Position
      range Position_Bottom .. Position_Right; 
- 
         type State_Type is (Normal, Floating); 
  
   
   
  
   Subprograms
   
     - 
- 
- 
- 
procedure Configure
  (MDI                       :  access MDI_Window_Record;
   Opaque_Resize             : Boolean := False;
   Close_Floating_Is_Unfloat : Boolean := True;
   Title_Font         :  Pango.Font.Pango_Font_Description :=  null;
   Background_Color   : Gdk.Color.Gdk_Color := Gdk.Color.Null_Color;
   Title_Bar_Color    : Gdk.Color.Gdk_Color := Gdk.Color.Null_Color;
   Focus_Title_Color  : Gdk.Color.Gdk_Color := Gdk.Color.Null_Color;
   Draw_Title_Bars    : Boolean             := True;
   Tabs_Position      : Gtk.Enums.Gtk_Position_Type := Gtk.Enums.Pos_Bottom;
   Show_Tabs_Policy   : Show_Tabs_Policy_Enum := Automatic); 
 
Windows
  
     - 
- 
- 
procedure Put
  (MDI              : access MDI_Window_Record;
   Child            : access MDI_Child_Record'Class;
   Initial_Position : Child_Position := Position_Automatic); 
- 
procedure Set_Size
  (MDI        : access MDI_Window_Record;
   Child      : access MDI_Child_Record'Class;
   Width      : Glib.Gint;
   Height     : Glib.Gint;
   Fixed_Size : Boolean := False); 
- 
- 
procedure Set_Title
  (Child       : access MDI_Child_Record;
   Title       : UTF8_String;
   Short_Title : UTF8_String := ""); 
- 
function Get_Title (Child : access MDI_Child_Record) return UTF8_String; 
- 
function Get_Short_Title
  (Child : access MDI_Child_Record) return UTF8_String; 
- 
function Get_State (Child : access MDI_Child_Record) return State_Type; 
- 
- 
Drag and Drop support
  
     - 
function Dnd_Data
  (Child : access MDI_Child_Record; Copy : Boolean) return MDI_Child; 
- 
procedure Child_Drag_Begin
  (Child  :  access MDI_Child_Record'Class;
   Event  :  Gdk.Event.Gdk_Event); 
 
- 
procedure Cancel_Child_Drag (Child : access MDI_Child_Record'Class); 
- 
procedure Child_Drag_Finished (Child  : access MDI_Child_Record); 
Menus
  
     - 
function Create_Menu
  (MDI :  access MDI_Window_Record;
   Accel_Path_Prefix : String := " ") return Gtk.Menu.Gtk_Menu;
 
Selecting children
  
     - 
procedure Highlight_Child
  (Child : access MDI_Child_Record; Highlight : Boolean := True); 
- 
function Get_Focus_Child
  (MDI : access MDI_Window_Record) return MDI_Child; 
- 
- 
procedure Set_Focus_Child (Child : access MDI_Child_Record); 
- 
procedure Check_Interactive_Selection_Dialog
  (MDI          :  access MDI_Window_Record;
   Event        :  Gdk.Event.Gdk_Event;
   Move_To_Next : Boolean;
   Only_Group   : Child_Group := Group_Any); 
 
MDI_Child and encapsulated children
  
     - 
- 
- 
- 
function Find_MDI_Child_By_Tag
  (MDI : access MDI_Window_Record;
   Tag : Ada.Tags.Tag) return MDI_Child; 
- 
function Find_MDI_Child_By_Name
  (MDI  : access MDI_Window_Record;
   Name : String) return MDI_Child; 
- 
function First_Child
  (MDI               : access MDI_Window_Record;
   Group_By_Notebook : Boolean := False) return Child_Iterator; 
- 
procedure Next (Iterator : in out Child_Iterator); 
- 
- 
function Get (Iterator : Child_Iterator) return MDI_Child; 
Floating and closing children
  
     - 
procedure Float_Child
  (Child : access MDI_Child_Record'Class; Float : Boolean); 
- 
function Is_Floating
  (Child : access MDI_Child_Record'Class) return Boolean; 
- 
procedure Close_Child
  (Child : access MDI_Child_Record'Class;
   Force : Boolean := False); 
- 
procedure Set_All_Floating_Mode
  (MDI : access MDI_Window_Record; All_Floating : Boolean); 
Reorganizing children
  
     - 
procedure Raise_Child
  (Child : access MDI_Child_Record'Class; Give_Focus : Boolean := True); 
- 
function Is_Raised (Child : access MDI_Child_Record'Class) return Boolean; 
- 
procedure Lower_Child (Child : access MDI_Child_Record'Class); 
- 
procedure Split
  (MDI               :  access MDI_Window_Record;
   Orientation       :  Gtk.Enums.Gtk_Orientation;
   Reuse_If_Possible : Boolean := False;
   After             : Boolean := False;
   Width, Height     : Glib.Gint := 0); 
 
Desktop Handling
  The MDI provides a way to save desktops, i.e the list of children
currently open in the MDI and their location. It can then restore the
desktop at some later point.
     - 
procedure Register_Desktop_Functions
  (Save : Save_Desktop_Function;
   Load : Load_Desktop_Function); 
- 
function Restore_Desktop
  (MDI       : access MDI_Window_Record'Class;
   From_Tree : Glib.Xml_Int.Node_Ptr;
   User      : User_Data) return Boolean; 
- 
function Save_Desktop
  (MDI : access MDI_Window_Record'Class;
   User : User_Data) return Glib.Xml_Int.Node_Ptr; 
- 
procedure Free_Registered_Desktop_Functions; 
- 
function Desktop_Was_Loaded (MDI : access MDI_Window_Record) return Boolean; 
  
     
  
As for Save_Desktop_Function, this function should return null if it doesn't know how to handle Node or if Node doesn't describe a widget type that it can handle.
This function returns an MDI_Widget that has been put in the MDI.