Erreur Inconnue

GLib-GIO-CRITICAL **: This application can not open files.

par Ronan Boulic,
Number of replies: 1

Ce message d'erreur a déjà été discuté et résolu correctement avec plusieurs réponses dont celle  de Vincent mais plusieurs étudiants avaient encore le problème vendredi passé.

Je ne fais ici que reformuler ce qui a déjà été écrit dans les réponses précédentes.

1) notre fonction main doit travailler avec argc et argv pour récupérer de l'information pour piloter notre programme.

2) si nous voulons exploiter GTKmm il faut à un moment ou un autre appeler la méthode create qui demande qu'on lui fournisse aussi la valeur des paramètres argc et argv.

3) Or, pour ce projet, nous ne voulons pas que GTKmm commence à interpréter les chaines de caractères qui suivent argv[0] ( argv[0] contient le nom de l'exécutable ; cette chaine est utilisée pour le titre de la fenêtre). En effet la documentation de GTKmm (lien fourni par Vincent) nous dit que :

Normally, GtkApplication will assume that arguments passed on the command line are files to be opened. If no arguments are passed, then it assumes that an application is being launched to show its main window or an empty document. In the case that files were given, you will receive these files (in the form of GFile) from the open signal.

<=> Si on transmet la valeur brute de argc à create et qu'elle est plus grande que 1, GTKmm va chercher à ouvrir un fichier et nous n'avons pas vu comment traiter ce mode de fonctionnement, d'où le message d'erreur.


4) la solution déjà indiquée plusieurs fois est de transmettre la valeur 1 à la méthode create à la place de argc. Cela sert à "tromper" GTKmm pour que cette bibliothêque utilise seulement argv[0] et pas plus.

In reply to Ronan Boulic

Re: GLib-GIO-CRITICAL **: This application can not open files.

par Ludovic Damien Blanc,

Bonjour, 

À la place de "tromper" GTKmm, il suffit aussi juste d'écrire:

"auto app = Gtk::Application::create();"

(donc de ne passer aucun paramètres à "create". Dans notre cas cela suffit.)


Bonne fin de weekend! ;)