DragNDrop sur TreeGadget

Codes specifiques à Linux
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DragNDrop sur TreeGadget

Message par Ar-S »

J'ai testé ce dernier code sous window. pb5.50
Lorsqu'on drag/drop un sous item sur un autre, il se duplique en sous-sous item plutôt que de remonter dans le classement.
Lorsqu'on clic sur un item, il se duplique en sous item du même item
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: DragNDrop sur TreeGadget

Message par Ulix »

Merci ollivier,

Mais je trouve le code trop complexe, apparemment du simule un TreeGadget avec un canvas.

Je l'ai essayé, je n'arrive pas a déplacé les items, j'ai un avertissement du compilo a la ligne 356 :

Attente du démarrage du programme...
Type d'exécutable: Linux - x64 (64bit, Unicode, Thread)
Exécutable démarré.
[AVERTISSEMENT] Ligne: 356
[AVERTISSEMENT] Gtk (CRITICAL): gtk_window_set_accept_focus: assertion 'GTK_IS_WINDOW (window)' failed


Je préfère resté avec mon TreeGadget, je déplacerai les items avec le curseur ! C'est une petite
application pour gérer mes contacts, quelque chose de léger et rapide.

Merci pour tous les efforts que tu a fait ! :wink:

A+
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DragNDrop sur TreeGadget

Message par Ollivier »

Code : Tout sélectionner

Lorsqu'on drag/drop un sous item sur un autre, il se duplique en sous-sous item plutôt
que de remonter dans le classement.
J'ai tronqué la partie "insertion" : ce n'est jamais bon de partager sa gamelle de 'Stack overflow' en pleine semaine!
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: DragNDrop sur TreeGadget

Message par majikeyric »

@Ulix: Hey! j'habite aussi sur Montpel ! :D
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DragNDrop sur TreeGadget

Message par Ollivier »

Ulix a écrit :Merci ollivier,
Mais je trouve le code trop complexe
Moi, je te remercie d'avoir employé le mot "trop complexe" plutôt que "gros bordel" !

Je ne devrais pas faire d'ordi normalement, mais j'ai la fâcheuse manie d'être, à chaque logement pris, le voisin de cas sociaux incapables d'être discrets la nuit quand ils boivent (les derniers temps, le week-end commençait le jeudi soir, mais là, comme à chaque fois, il y a des sessions "everytime, it's the week-end!" où c'est toutes les nuits, et là je subis ça). Résultat: impossible de pioncer, donc je t'ai fait un "plan B" vaseux à défaut de pouvoir dormir. Et je suis claqué.

J'en referai un autre prochainement. Ce sera peut-être aussi un bordel, mais différent... A force, tu vas y trouver des trucs bien!

PS: Tu peux zoomer aussi avec Shift+RouletteSouris
Tu peux drag un item (c'est à la façon "copie de dossier de fichier", car il existe plusieurs types de drag'n'drop) et "wheeler" la roulette en même temps, pendant que tu maintiens le bouton de la souris.

Si la roulette ne t'intéresse pas, tu peux drag un item et, en maintenant le bouton de la souris appuyé, déplacer la souris dans la partie haute (défilement vers le haut) ou dans la partie basse (défilement vers le bas) pour faire défiler durant le drag'n'drop.

Ce n'est pas non plus pour "rien" que c'est "complexe"...
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: DragNDrop sur TreeGadget

Message par Ulix »

@majikeyric

Cherche la ville du muscat, je suis là !


@Ollivier

Je me serais pas permis de dire que ton code est un "gros bordel", cela ne m'es même pas venu a l'esprit !
Non, tout travail mérite le respect (dans ton cas, bien plus vu t'a situation, des voisins comme ça en sans passerait bien !).
Donc, je ne peux que de souhaité bon courage pour endurer cette situation.

Pour le code, je comprend que cela puisse être complexe, je problème viens de moi (je m'y perd, donc je reste
volontairement très basique).

Pour en revenir a mes besoin, c'est juste une petite application, ça dois resté très simple, en natif.
D'où mon étonnement au sujet du DragNDrop qui me gérer pas le scrolling ??? :twisted: :twisted: :twisted:
D'où ma réflexion sur Fred et son équipe qui devraient sérieusement comblés toutes ces lagunes.
Quitte a fournir des commandes supplémentaire qui ne soit pas en natif (Api win et gtk).
Parce que se genre de lagunes, laisse pensée que PB est limité ! Bien que ce ne soit pas le cas,
je le redis le problème viens de moi, je ne sais pas utilisé les Apis. :oops:
(J'espère que Fred ne le prendra pas mal ! :mrgreen: )
Mais d'un autre côté je codé en Gwbasic sous Dos, en QuickBasic, QBasic.. etc toujours des langages simples.
C'est donc avec plaisir que je code en PB (mais hélas il manque des choses...) et j’espère que Fred va y faire quelque chose. :P

En tous cas merci pour ton aide !
A +
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DragNDrop sur TreeGadget

Message par Ollivier »

Je comprends ton idée. Seulement, ton idée, admettons qu'elle ait 1% de chance d'être intégrée actuellement.

Mesa, que j'ai oublié de remercier, a posté un code : les chances d'intégration passent à 30%.

Si l'on perd un peu de temps à faire fonctionner les fonctions APIs Linux concernées, les chances passeront à 60%.

Un mail à Fred au bon moment, avec 2 systèmes Windows et Linux postés (sachant que Mesa a posté la partie Windows), c'est, à moins que Fred ait une accidentelle torsion des grelots, 100% que ton idée soit intégrée.

Je dis bien 100% sans déconner, je défie quiconque de me démontrer le contraire : il est gagnant, et les utilisateurs aussi, et il le sait.

En gros, je trouve que ta plainte ne sert pas à grand chose. C'est un temps perdu, là où peut-être (sûrement même) on aurait pu déjà avancer.

Je comprends GwBasic, QBasic, etc... Par contre, 1ère grosse différence: les concepteurs n'ajoutaient pas, au fur et à mesure des années, des fonctions qu'un utilisateur venait renseigner.

J'insiste vraiment pour que tu serves de cobaye avec Linux: il suffit de savoir quelle durée maximum tu peux allouer pour ça. Même une à deux heures, au cours des deux prochaines semaines, je pense que ça sera suffisant.

Ma 1ère question était très simple, et tu as voulu bien faire en y répondant en même temps que tu as fourni d'autres informations, sans te rendre compte que l'exécution de la recherche des autres infos, annule la validité de réponse à la question simple.

Ma question c'était juste ce code d'une seule ligne : "Debug SizeOf(gtk...)".

C'est long à t'expliquer, mais cette question me permet de savoir comment fonctionne PureBasic sous Linux: a-t-il des structures déjà prêtes? Cela entrainera d'autres questions différentes selon ta réponse.

Enfin, je terminerai par ceci: bien que tu ne sois familier qu'avec un ensemble restreint de fonctions internes à PureBasic, j'ai la certitude qu'en recherchant à faire fonctionner telle ou telle fonction API Linux, ça t'ouvrira des portes à long termes sur tes besoins à venir.

Tu pourras très bien avoir une nouvelle idée bien plus tard, et c'est la méthodologie de cette conversation qui t'offrira les moyens de creuser telle ou telle autre fonction API seul.

Une fonction, se caractérise par des arguments : les variables entre parenthèses après le nom de la fonction. Quand les entrées et les sorties sont hétéroclytes, il est d'usage d'architecturer ces infos en structures. Et une structure, c'est "simple" : ce sont des noms de champs avec, pour chacun un type, tout cela dans un ordre précis. C'est simple dans le sens où l'on n'exécute pas quelque chose : soit on définit une structure, soit elle est déjà définie. C'est là, ma 1ère question (le simple Debug SizeOf() ) : je souhaite savoir si PureBasic a déjà la structure, ou bien s'il faut la définir impérativement.

Une fois que l'on a pu répondre aux questions à propos des structures nécessaires, dans ce cas seulement, on peut commencer des tests d'exécution de fonction. Car je dois avouer que tes essais sont différents des exemples d'autres linuxiens. Je pense qu'au final, on se rendra compte que ça se sera joué à peu de réussir parfaitement à faire fonctionner une fonction API!

En espérant ton écoute!
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: DragNDrop sur TreeGadget

Message par Ulix »


Ma question c'était juste ce code d'une seule ligne : "Debug SizeOf(gtk...)".
Sans ImportC, sans déclaration structure GtkAdjustement, sans Global *Adj.GtkAdjustement = AllocateMemory(SizeOf(GtkAdjustement) )

une erreur se produit : [COMPILER] Ligne 204: A declared variable or structure is expected for SizeOf().

A +
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DragNDrop sur TreeGadget

Message par Ollivier »

Merci pour ta réponse très bien renseignée. 1ère conclusion : pas de structure prédéfinie "à vide".

On va s'intéresser à "Import". Je regarderai ce soir une des fonctions les plus simples qu'il y ait dans gtk, juste pour que s'exécute cette simple fonction.

(nota qu'on s'en fout pour l'instant mais qui sera importante après : la structure que j'ai fournie plus haut est fausse, tous les ".I" seront à remplacer par ".D". Cf nombre à virgule flottante 64bits).
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DragNDrop sur TreeGadget

Message par Ollivier »

Bon, donc on est dans le noir nocturne de l'ignorance... On a tenté de craquer une allumette avec un SizeOf() : pas de succès, les structures ne sont pas prédéfinies.

Alors j'ai trouvé une fonction gdk assez simple :
https://developer.gnome.org/gdk3/stable ... is-visible
En l'occurence, gdk_window_is_visible().

Ici, pas de structure. Comme ça, on "recule" ce problème-là pour l'instant...

La fonction est simple, pourquoi? Parce que :

1 seule entrée : WindowID(UneFenetrePureBasic)
1 seule sortie : un booléen, c'est-à-dire un nombre qui est soit nul, soit non nul.

Ta mission, si tu l'acceptes, est la suivante :
1) Créer une fenêtre
2) Exécuter la fonction Resultat = gdt_machin()
3) Afficher la valeur de Resultat

Si tu réussis à afficher autre chose que 0, on peut estimer que la mission est réussie.

Si tu as des questions, n'hésite pas, même les questions les plus insignifiantes seront acceptées.

Evidemment, tu as le droit de tricher, plaggier, te faire aider, etc... Sauf m'écrire un truc comme ça :

<<
J'ai réussi!

Code : Tout sélectionner

Debug 1
>>

Les difficultés que je vois :
- Mettre ou non "gtk2" dans l'option de sous-système du compilateur (parce qu'on sait pas)
- Mettre ou non un nom de fichier après "ImportC" (parce qu'on sait vraiment pas)
- Mettre ou non un quad en entrée (parce que l'on n'est pas au courant)
- Mettre ou non un quad en sortie (parce que l'on ignore si c'est 32 bits, 64 bits ou automatique)

4 critères de deux combinaisons chacune, ça te fait 2 * 2 * 2 * 2 tests d'exécution de prog, soit 16 tests, ce qui est déjà bien lourd... donc bon courage. J'attends ton retour.
Répondre