EditorGadgetActivateWordWrap - Windows + Linux

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

EditorGadgetActivateWordWrap - Windows + Linux

Message par Guimauve »

Bonjour à tous,

Voici un code que je viens d'adapter pour un de mes projets il sert à activer ou désactiver le retour à la ligne dans un EditorGadget(). (Il n'y a rien de neuf la dedans)
La procédure est valide à la fois pour Windows et pour Linux (Vive les directives du compilateur). J'espère qu'il pourra être utile à d'autre...

A+
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : EditorGadgetActivateWordWrap()
; Nom du fichier : EditorGadgetActivateWordWrap.pbi
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 17-01-2010
; Mise à jour : 01-10-2011
; Code PureBasic : 4.40 
; Plateforme : Windows, Linux
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure EditorGadgetActivateWordWrap(EditorID.l, State.l)

  TextBuffer.s = GetGadgetText(EditorID)

  If State = 0

    CompilerSelect #PB_Compiler_OS

      CompilerCase #PB_OS_Windows 
        SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, $FFFFFF)

      CompilerCase #PB_OS_Linux
        gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_NONE)

    CompilerEndSelect

  ElseIf State = 1

    CompilerSelect #PB_Compiler_OS

      CompilerCase #PB_OS_Windows 
        SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, 0)

      CompilerCase #PB_OS_Linux
        gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_WORD)

    CompilerEndSelect

  EndIf 

  SetGadgetText(EditorID, TextBuffer)

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Dernière modification par Guimauve le dim. 02/oct./2011 23:30, modifié 2 fois.
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Le psychopathe »

merci cela va m'être utile pour plus tard.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par falsam »

ça m'a l'air pas mal ce code. Mon pc sous Ubuntu étant planté depuis hier après la dernière mise à jour, je ne peux pas encore testé mais j'ai hâte d'essayer :)
Merci.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Geo Trouvpatou »

Ben zut alors, j'étais passé à côté de ça.
Par contre je me demande si le 0 et 1 ne fonctionne pas à l'envers :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : EditorGadgetActivateWordWrap()
; Nom du fichier : EditorGadgetActivateWordWrap.pbi
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 17-01-2010
; Mise à jour : 17-01-2010
; Code PureBasic : 4.40 
; Plateforme : Windows, Linux
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure EditorGadgetActivateWordWrap(EditorID.l, State.l)
      
      TextBuffer.s = GetGadgetText(EditorID)
      
      If State = 0
            
            CompilerSelect #PB_Compiler_OS
                        
                  CompilerCase #PB_OS_Windows 
                        SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, 0)
                        
                  CompilerCase #PB_OS_Linux
                        gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_NONE)
                        
            CompilerEndSelect
            
      ElseIf State = 1
            
            CompilerSelect #PB_Compiler_OS
                        
                  CompilerCase #PB_OS_Windows 
                        SendMessage_(GadgetID(EditorID), #EM_SETTARGETDEVICE, #Null, $FFFFFF)
                        
                  CompilerCase #PB_OS_Linux
                        gtk_text_view_set_wrap_mode_(GadgetID(EditorID), #GTK_WRAP_WORD)
                        
            CompilerEndSelect
            
      EndIf 
      
      SetGadgetText(EditorID, TextBuffer)
      
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
If OpenWindow(0, 100, 100, 400, 300, "Message", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 
      
      EditorGadget(1, 10, 10, 380, 280)
      EditorGadgetActivateWordWrap(1, 0) ; <- Le WordWrap est activé et pourtant on met 0
      
      Repeat 
            Select WaitWindowEvent() 
                  Case #PB_Event_CloseWindow 
                        End 
            EndSelect 
      ForEver 
EndIf
Voir mon commentaire : "Le WordWrap est activé et pourtant on met 0"

En tout cas merci, un code multi-plateform de plus.

Et ça va me servir tout de suite.
Quand on fait un copier de résumé de séries sur AlloCinoch et que tu colles le tout dans un EditorGadget, tout se met sur une seule et unique ligne.
Là, je viens de faire le test avec cette procédure et tout est impec.
Donc plus qu'à inclure le pbi.

[Edit]En sauvegardant ton code je me suis aperçu qu'avec 2 codes j'avais fait l'équivalent :lol:.

Code : Tout sélectionner

; Code de El_Choni : Windows
; http://forums.purebasic.com/english/viewtopic.php?f=13&t=6414
; Code de Progi1984 : Linux
; http://forums.purebasic.com/french/viewtopic.php?p=94713#p94713

If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  
      EditorGadget(0, 8, 8, 306, 133) 
      
      CompilerSelect #PB_Compiler_OS
                  
            CompilerCase #PB_OS_Windows 
                  
                  SendMessage_(GadgetID(0), #EM_SETTARGETDEVICE, #Null, 0)
                  ;SendMessage_(GadgetID(0), #EM_SETTARGETDEVICE, #Null, $FFFFFF) ; to turn word-wrap off again (use just a huge value, stands for line width)
                  
            CompilerCase #PB_OS_Linux 
                  
                  gtk_text_view_set_wrap_mode_(GadgetID(0), #GTK_WRAP_WORD)
                  
      CompilerEndSelect
      
      SetGadgetText(0, "This text gets wrapped, but I think line numbers won't be properly handled now, so be careful.")
      
      Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf 
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Guimauve »

T'es sûr de ton coup, parce que moi ici avec Linux lorsque State = 0 le WordWrap est bien désacitivé et a 1 il est activé.

Et la valeur pour le paramètre State est en accord avec le nom de la commande "Activate"
0 : non
1 : oui

A+
Guimauve
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Geo Trouvpatou »

J'ai testé uniquement sous Windows.

Qu'on soit bien d'accord.
EditorGadgetActivateWordWrap veut dire EditorGadget Activer Coupure des mots.
Donc state = 1 ou #True, on active la coupure des mots.

Et pour moi la coupure des mots, c'est lorsqu'on arrive au bout de l'EditorGadget, le texte passe à la ligne.
Alors que sans, le texte reste sur une seule ligne et pour faire 20 kilomètres avec une scrollbar qui apparait.

Donc si c'est bien ça et bien le fonctionnement est inversé.
EditorGadgetActivateWordWrap(1, #False) : Le texte passe à la ligne.
EditorGadgetActivateWordWrap(1, #True) : Le texte reste sur une ligne et fonctionnement similaire de l'EditorGadget tout seul.

[Edit]Je vais tester sous Linux.
Effectivement ça fonctionne bien sous Linux, mais c'est inversé pour Windows :wink:.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Guimauve »

C'est vrai que de mon coté, je n'ai pas testé le code sous Windows depuis 2008 il est donc possible que j'ai inversé les commandes par erreur. Je vais modifier le code original.

A+
Guimauve
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: EditorGadgetActivateWordWrap - Windows + Linux

Message par Geo Trouvpatou »

Problème Fixed sous Windows7 :wink:.
Répondre