[ résolu ] [GtkAda] Selectionner un fichier avec Gtk_File_Selection

Selectionner un fichier avec Gtk_File_Selection [ résolu ] [GtkAda] - Ada - Programmation

Marsh Posté le 29-11-2010 à 16:00:53    

Bonjour, j'ai tenté, (ça marche rarrement du premier coup), de sélectionner un fichier avec Gtk_File_Selection, mais ça plante.
Pour faire ceci, j'ai un bouton Open connecté à une procédure "Set_Filename" dans la quelle je déclare le Gtk_File_Selection;
Dans cette procédure "Set_Filename", j'ai connecté le bouton Ok à une procédure "Ok" dans laquelle je désire renseigner un champ contenu dans le même objet que mon bouton Open.
Ca plante lorsque je clique le bouton Ok.
 
Voici le code :
 

Code :
  1. procedure Set_filename(Widget : access Gtk_Widget_Record'class; Intelligence : Intelligence_access) is
  2.  
  3.       package File_selection_Handlers is new Gtk.Handlers.User_Callback(Gtk_Widget_Record, Gtk_File_selection);
  4.  
  5.  
  6.       Filename : access String;
  7.  
  8.       procedure Ok (Widget : access Gtk_Widget_Record'class; File_Selection : Gtk_File_Selection) is
  9.       begin
  10.          Filename := new String ' (Get_Filename(File_Selection));
  11.       end Ok;
  12.  
  13.  
  14.  
  15.       File_Selection : Gtk_File_Selection;
  16.    begin
  17.       Gtk_New(File_Selection, "Select network filename..." );
  18.  
  19.       File_selection_Handlers.Connect(Get_Ok_Button(File_Selection),
  20.                                       "clicked",
  21.                                       File_Selection_Handlers.To_Marshaller(ok'access),
  22.                                       File_selection);
  23.       Show_All(File_Selection);
  24.       if Filename /= null then
  25.          Set_Text(Intelligence.Filename_Gentry, Filename.all);
  26.       end if;
  27.    end Set_Filename


 
J'ai également essayé de faire le Set_Text directement dans la procédure Ok, mais même résultat.
Je me doute qu'il y a un problème de visibilité, mais je ne vois, ne sais, pas comment procéder.
Merci pour votre aide.


Message édité par Profil supprimé le 29-11-2010 à 16:46:50
Reply

Marsh Posté le 29-11-2010 à 16:00:53   

Reply

Marsh Posté le 29-11-2010 à 16:46:12    

Finalement, j'ai embarqué le Gtk_File_Selection dans mon type englobant.
 
Ca donne ça...
 

Code :
  1. procedure Ok (Widget : access Gtk_Widget_Record'class; Intelligence : Intelligence_access) is
  2.    begin
  3.       Set_Text(Intelligence.Filename_Gentry, Get_Filename(Intelligence.File_Selection));
  4.       Destroy(Intelligence.File_Selection);
  5.    end Ok;
  6.  
  7.    procedure destroy (Widget : access Gtk_Widget_Record'class; Intelligence : Intelligence_access) is
  8.    begin
  9.       Destroy(Intelligence.File_Selection);
  10.    end destroy;
  11.  
  12.    procedure Set_filename(Widget : access Gtk_Widget_Record'class; Intelligence : Intelligence_access) is
  13.  
  14.    begin
  15.       Gtk_New(Intelligence.File_Selection, "Select network filename..." );
  16.       Intelligence_Handlers.Connect(Get_Ok_Button(Intelligence.File_Selection),
  17.                                     "clicked",
  18.                                     Intelligence_Handlers.To_Marshaller(ok'access),
  19.                                     intelligence);
  20.  
  21.       intelligence_Handlers.Connect(Get_Ok_Button(Intelligence.File_Selection),
  22.                                     "destroy",
  23.                                     intelligence_Handlers.To_Marshaller(destroy'access),
  24.                                     intelligence);
  25.       Show_All(Intelligence.File_Selection);
  26.    end Set_Filename;


 
Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed