Bonjour,
Plus exactement, le langage C n'est pas "orienté object" comme l'est le C++ ou le Java. Pour palier à ce manque, GObject a été développé. C'est une interface C pour la gestion objet. La classe de base de GtkWidget et tous les widgets c'est GObject, tu peux le voir sur le diagramme de classe de chaque objet.Envoyé par chrtophe
En fait il existe des "bindings" (des "ponts") qui permettent d'utiliser les bibliothèques GTK à partir d'autres langages que le C. Voici la liste des bindings permettant d'utiliser GTK. GTKmm est le nom des bindings pour le C++.Envoyé par chrtophe
Tu fais la confusion entre GTK et C. GTK est une API, une interface de programmation. C est un langage de programmation. Ce n'est pas la même chose. Les éléments de tes structures sont accessibles en C en passant par les fonctions de GTK. Mais comme toujours en C, il est aussi possible de bidouiller et d'accéder aux structures de donnée manuellement, mais cela n'a pas grand intérêt ici, car tu finirais pas refaire ce que fait déjà GTK.Envoyé par chrtophe
Lis (au moins succinctement) la doc, approfondis un peu plus au besoin. Il faut au moins que tu saches les classes qui existent, même si au début tu ne sais pas les utiliser. Cela t'évitera de réinventer la roue.Envoyé par chrtophe
En général tu as pour chaque objet une description rapide de comment l'utiliser, dans la rubrique "Description", par exemple voici la description pour GtkDialog. Tu as un bandeau de navigation en en-tête des pages de doc pour accéder à ces sections plus rapidement.Envoyé par chrtophe
La doc suppose que tu l'aies parcourue pour voir les fonctions à ta disposition. Bien souvent les noms de fonctions sont suffisemment évocateurs pour t'indiquer ce qu'elle font, la doc t'en dit plus, et les messages de warning/erreurs te permettent de comprendre ce qui manque.Envoyé par chrtophe
Dans certains cas un peu plus complexes, il faut effectivement chercher des tutoriels, ou des exemples concrets d'utilisation avec des moteurs de recherche de code comme koders.com ou google codesearch.Envoyé par chrtophe
Il peut être intéressant parfois de se rapporter au code source de GTK ou d'applications codées en GTK. Je sais en tout cas que lire des portions du code de GTK et de la GLib m'a été grandement bénéfique, que ce soit en style ou conception objet ou juste pour choisir un nom compréhensible à pour une fonction.Envoyé par chrtophe
Le code de GTK, de la GLib et des plein d'applications basées sur GTK:
http://git.gnome.org/browse/
Peut-être aussi n'as tu pas compris la logique de la doc ? Dans ton exemple précis, je n'ai jamais utilisé ces fonctions. Sur la doc de gtk_toolbar_insert_stock je vois que la fonction est dépréciée. On m'indique qu'il faut utiliser gtk_toolbar_insert à la place. Je regarde donc la documentation de cette fonction. Là je vois qu'elle demande un GtkToolItem, et qu'on est passé de 7 arguments avec l'ancienne fonction à 3 avec la nouvelle, ce qui simplifie l'API et la rend plus facilement mémorisable. Ensuite j'essaie de savoir comment utiliser GtkToolItem. Pour cela je regarde la section "description" qui m'apprend que pour items contenant des boutons, je dois regarder GtkToolButton, GtkToggleToolButton et GtkRadioToolButton. Un toggle button, c'est pour un bouton à deux états (actif/inactf). Un radion button, c'est un bouton radio avec des choix à sélectionner. Ce que tu veux c'est un stock button, un bouton prédéfini, donc tu t'orientes vers GtkToolButton. Et oh ! Magie ! La 2ème fonction de cet objet s'appelle gtk_tool_button_new_from_stock. Donc au lieux de créer le GtkToolButton et l'ajouter dans la toolbar en un seul appel avec 7 paramètres, on le fait avec deux fonctions qui ont moins de paramètres. En bonus, on a simplifié le code de GtkToolbar, qui s'occupait de choses qui ne le concernait pas, mais concernait en fait les boutons que l'on insérait dans la toolbar. On a ainsi ouvert la possibilité de rajouter plusieurs types de boutons (normaux, toggle, radio) sans avoir à rajouter une nouvelle fonction dans GtkToolbar ou un paramètre supplémentaire à gtk_toolbar_insert_item (ce qui l'aurait encore alourdi, démontrant que l'API était mal fichue). Note que ce changement est intervenu il y a très longtemps, dans GTK 2.4, parque que justement les développeurs se sont rendus compte que l'API d'origine était mal fichue.Envoyé par chrtophe
Les tutoriaux sont écrits à un instant t. Forcément, à un instant t+1, il n'y a plus forcément 100% de correct. Ce qui se faisait d'une manière à une époque se fait sans doute différemment plus tard, tout simplement parce que l'informatique n'est pas statique, elle est en perpétuelle évolution. Un projet qui ne change plus du tout, c'est soit un projet qui a atteint 100% de son objectif initial (ce qui n'est vrai que pour des projets très simples), soit c'est un projet mort. Les développeurs de GTK font comme beaucoup d'autres projets: ils améliorent le code, et déprécient les anciennes fonctions qui ne correspondent plus à l'usage recommandé. Ces fonctions existent et fonctionnent toujours, mais seront retirées lors que prochain saut de version majeur. C'est ce qui est arrivé au passage à GTK 3: toutes les fonctions dépréciées de GTK 2 ont été supprimées.Envoyé par chrtophe
Pour être sûr de ne pas utiliser de fonction dépréciées, il suffit de compiler avec les symboles GTK_DISABLE_DEPRECATED, G_DISABLE_DEPRECATED etc., ce qui est expliqué en page 3 de la documentation officielle !
http://developer.gnome.org/gtk/stabl...compiling.html
Tu ne m'importune pas, mais pense bien que répondre à un pavé pareil me prend énormément de temps, et que si vous êtes plusieurs à le faire, je ne pourrai tout bonnement pas suivre. Merci donc de ne PAS me contacter par message privé, mais d'ouvrir des discussions sur ces problèmes. En plus, cela peut intéresser d'autres personnes dans ton cas, et tu aurais sans doute eu des commentaires constructifs en provenance d'autres personnes du forum. Au pire tu peux attirer mon attention sur un fil de discussion en m'envoyant un lien, mais je suis suffisemment actif ici pour que cela ne soit pas nécessaire.Envoyé par chrtophe
On a tous commencé comme ça... Dans les cercles où j'évolue j'ai souvent l'impression d'être celui qui en connait le moins, c'est pour te dire...Envoyé par chrtophe
Bon courage
Partager