Règles du forum

Le langage Ada uniquement, pas les compilateurs. Les questions de sémantique et de langage et les questions techniques liées à une application en particulier, son deux choses différentes. Si nécessaire, un forum sur GNAT et les autres compilateurs, tel JanusAda, sera ouvert.

Auteur Message
Beau Parleur
Avatar de l’utilisateur
Bonjour, bonjour à tous, bonjour Hibou.

Je suis passé ressemant de Ada 2012 à 2016, et la même migration pour GtkAda, je cherche simplement comment inhibiter le comportement par défaut sur Windows, enfin avec Ma machine, concernant la prise en charge des argument de ligne de commande.

En effet, je programme sur GNU/Linux, debian en l'occurence, 9.3 pour être précis et sur Windows10 avec GtkAda 2016 de AdaCore, je n'obtiens pas le même comportement.

Du coup j'ai lu plus en avant la codumentation mais je ne trouve ce que je cherche.

Merci pour votre lecture.

J'utilise un Widget Application et celui- ci me force sur Windows à traiter les argument de ligne de commande en interne à (je sais pas quoi d'ailleurs parce que j'ai plus de Gtk.Main.init ni de Gtk.Main.Main "donc c'est pas dans la main loop.) bref.

Je cherche un moyen pour inhibiter cette "feature".

Merci pour votre aide.
Profil
Beau Parleur
Avatar de l’utilisateur
youpiiii !

J'ai trouvé une astuce, j'ai mis le flag application sur Open.

J'ai déclarer une procédure vide connectés avec le signal Activate et ma procédure Activate connectés avec le signal open.

Si ça ce trouve il n'y a même pas besoin de connecté activate en ce cas.

Merci.
Si vous avez plus d'info merci.

(A woais mais même problème pour les options).

Comment fais-je ? Arf .... !
Profil
Beau Parleur
Avatar de l’utilisateur
Ouais !

J'ai trouvé aussi,

j'utilise d'abord une GtkAdaApplication, mais peut-être avec une Gtk_Application ça marche également mais autrement.

Ensuite le flag glib.application c'est command_line et le flag gtkada de mon gtkada_application open

je connecte le signal activate à une procédure nulle.
je connecte le signal open à une procédure nulle.
Et je connecte le signal command-line à la fonction cmd_line.

Code : (
Mon object est une interface GM instruments contenant une Application GtkAda.)

Source ada : 

procedure Initialize(Gm_Interface : in out Gm_Interface_Pointer;
State : out Glib.Gint;
Works : access Work_Array;
Verbose, Auto_Play, In_Loop, Help, Ignore : in Boolean) is

Argc : constant Gint := 0;
Argv : GNAT.Strings.String_List(1..0);-- := (others => new String ' (""));
begin

Put("Freeing Gm_Interface...");
Free(Gm_Interface);
Put_Line(" Done.");
Gm_Interface := new Gm_Interface_Record;
Gm_Interface.Works := Works.all'Unrestricted_Access;
Put_Line("Gm_Interface created.");
Gm_Interface.App :=
Gtkada.Application.Gtk_Application_New
(
Locale_To_Utf8(GApplication_Id),
G_Application_Handles_Command_Line,
Gtkada_Application_Handles_Open
);
App_User_Callback.Connect
(Gm_Interface.App, "activate",
App_User_Callback.To_Marshaller(Not_Activate'Access),
Gm_Interface);
App_User_Callback.Connect
(Gm_Interface.App, "open",
App_User_Callback.To_Marshaller(not_open'Access),
Gm_Interface);
App_User_Return_Callback.Connect
(Gm_Interface.App, "command-line",
App_User_Return_Callback.To_Marshaller(Cmd_line'Access),
Gm_Interface);
State := 0;
State := Run(Gm_Interface.App, Argc, Argv);
exception
when others =>
State := 1;
raise;
end Initialize;
Profil