with Gmface.Gm_Application.Gtk_Step_Sequencer;        use Gmface.Gm_Application.Gtk_Step_Sequencer;
with Gmface.Gm_Application.Gtk_Ctrl_Change;           use Gmface.Gm_Application.Gtk_Ctrl_Change;
with Gmface.Gm_Application.Gtk_Prgm_Change;           use Gmface.Gm_Application.Gtk_Prgm_Change;
  
package body Gmface.Gm_Application.Gtk_Plugins_Initialization is
   --------------------------------------------------------------------------------
   --                                                                            --
   --               Plugins Specifications initializations                       --
   --                                                                            --
   --------------------------------------------------------------------------------
   
   
   
   function Initialize (Class : Plugin_Enum;
   			Plugin : Abstract_Plugin_Access;
			Id : Plugin_num)
   		       return Plugin_Specifications_Access is  
      Spec : Plugin_Specifications_Access;
   begin
      case Class is
   	 when Null_Plugin =>
   	    null;	    
   	 when Step_Seq =>	    
   	    Spec := new Step_Seq_Specifications;
   	    Gtk_Step_Sequencer.Initialize(Step_Seq_Specifications(Spec.all), Plugin);
	 when CC_List =>
	    Spec := new Ctrl_Change_Specifications;
   	    Gtk_Ctrl_change.Initialize(Ctrl_Change_Specifications(Spec.all), Plugin);
	 when PC_List =>
	    Spec := new Prgm_Change_Specifications;
   	    Gtk_Prgm_change.Initialize(Prgm_Change_Specifications(Spec.all), Plugin);
	 when others =>
	    null;
      end case;
      
      return Spec;
   end Initialize;
   
   
end Gmface.Gm_Application.Gtk_Plugins_Initialization;