Page 2 sur 2
					
				
				Publié : mar. 13/févr./2007 12:33
				par gnozal
				Si certains d'entre-vous utilisent jaPBe, je vous rappelle que ces fonctions existent déjà :
- soit manuellement : menu "Projet" -> "Insérer déclarations"
- soit automatiquement : menu "Projet" -> "Options du projet" -> Cocher "Créer un fichier de déclarations"
			 
			
					
				
				Publié : mar. 13/févr./2007 15:38
				par Coolman
				Bon a savoir mais je prefere personnellement l'editeur officiel, je jetterais quand meme un oeil sur la derniere version de jaPBE des que j'ai un peu de temps 

, Au fait, bravo pour le boulot fourni sur tes nombreux autres programmes, une suggestion quand meme, pourrais tu fournir les codes sources, ca pourrait etre un plus apreciable...
 
			 
			
					
				
				Publié : mar. 13/févr./2007 20:59
				par Sehka
				Salut à Toutes et à Tous,
Ah JaPBe, un réel plaisir pour PureBasic  
 
Pendant que j'y suis : FELICITATIONS pour tes produits qui demandent énormément de travail! (JaPBe, PureForm...)
Une petite question Gnozal...Que veut dire jaPBe ?
C'est une concaténation de mots clefs  
 
En outre, puisque je suis dans les éloges, je tiens à remercier tous les purebasiciens et purebasiciennes pour les aides et autres codes sources qui sont à mis à disposition de la communauté. 
Cordialement,
 
			 
			
					
				
				Publié : mar. 13/févr./2007 22:30
				par Backup
				Sehka a écrit :Salut à Toutes et à Tous,
Ah JaPBe, un réel plaisir pour PureBasic  
 
Pendant que j'y suis : FELICITATIONS pour tes produits qui demandent énormément de travail! (JaPBe, PureForm...)
 
c'est clair, que c'est un sacré boulot 

et puis pour JaPBE , je ne saurai plus m'en passer !!
je ne sais meme pas comment font ceux qui ne l'utilise pas !!
rien que pour la mise en forme du code avec Ctrl+Tab, il est indispensable 
Sehka a écrit :
Une petite question Gnozal...Que veut dire jaPBe ?
C'est une concaténation de mots clefs  
  
J uste
A nother
P ure
B asic
E ditor
voila ! Japbe a été programmé par G P I ,
puis repris par Gnozal , pour continuer a le maintenir  

 (Merci pour ça)
 
			 
			
					
				
				Publié : mar. 13/févr./2007 22:43
				par Sehka
				Merci Dobro pour ton explication du jaPBe 
 
Concernant le Ctrl+Tab, enfin de la magie informatique 
 
C'est tout simplement EFFICACE 

 
			 
			
					
				
				Publié : mer. 14/févr./2007 17:08
				par Coolman
				Interessant en effet Ctrl+Tab, j'ai un peu examiné le code de JaPBE, j'ai extrait la procedure AutoIndentSelection2() apparement optimisé par gnozal et l'autre faite par l'auteur initial  AutoIndentSelection(), bon je pensais faire ca rapidement pour l'editeur officiel, le hic c'est que la procedure d'indentation depend etroitement de scintilla, il faudrait a priori readapter les procedures associés et ils sont nombreux les bougres, autant reecrire une telle fonction mais ca prendrait trop de temps, c'est quand meme aberrant que ce type de fonction manque a l'editeur officiel, je me poses une question, pourquoi maintenir jaPBE au lieu d'ameliorer par des petits utilitaires (codé avec le language) l'editeur officiel de purebasic, ca pourrait profiter egallement aux autres version linux et mac...
			 
			
					
				
				Publié : mer. 14/févr./2007 18:12
				par Guimauve
				Un programme à ajouter à l'éditeur officiel existe déja, créé par LSI (Le Soldat Inconnu). Fouillez sur son site pour un petit programme qui s'appelle
PBSyntax.exe dans la section PureBasic.
http://www.lsi-dev.com/index.php
Pour être honnète, ce genre de fonctionnalité se doit d'être intégré à l'éditeur et non disponible par l'intermédiaire d'un plugin. C'est la seule raison pour laquelle je travaille avec jaPBe. Même si je préfaire, et de loin, la simplicité de l'éditeur officiel.
A+
Guimauve
 
			 
			
					
				
				Publié : mer. 14/févr./2007 20:46
				par Backup
				c'est pas si sorcier a faire un Ctrl-tab, j'en ai fait un pour mon éditeur
PureGolo 
je surveille l'appuis sur les touches Ctrl+Tab
puis je passe en revu chaque ligne de l'éditeur
en fonction de ce que je trouve , comme commandes PureGolo
j'ajoute un espace (ou une tabulation, je sais plus 

)
ou bien je retire, cette espace , ou cet tabulation 

il suffit de faire une variable qui s'incremente a la rencontre d'un "IF" par exemple , et qui se décremente a la rencontre d'un Endif 

pareil avec les autres commandes qui seraient concernées par l'indentation, une seul variable devrai suffire en principe 
bref rien de bien compliqué 

pareil au moment de l'entrée d'une commande, incrémenter la variable ou décrémenter la variable suivant la commande qui est entré en début de ligne ..
Franchement, c'est pas dur a faire comme truc 

je ne comprends pas non plus pourquoi l'éditeur officiel ne l'a pas  
 
mais mon pure Golo lui si ! 

 
			 
			
					
				
				Publié : jeu. 15/févr./2007 15:51
				par Coolman
				Bon, j'ai fait une recherche dans le forum sur PBSyntax, il me semble que ce n'est pas fiable, d'apres ce que j'ai lu, beaucoups on eu des probleme en l'utilisant, maintenant faire ce genre de fonction de zero en tenant compte de la syntaxe de purebasic n'est peut etre pas dur mais necessiterait beaucoup de temps et je n'ai vraiment pas que ca a faire 

 surtout que cette fonction devrait logiquement etre integre dans tous editeur de language qui se respecte...
 
			 
			
					
				
				Publié : dim. 25/nov./2007 10:19
				par Anonyme2
				Bonjour à tous,
j'ai adapté le code qui permet de lister les déclarations pour les avoir dans l'ordre alphabétique (nom de procédure)
Merci à Marc et Coolman pour les versions
Code : Tout sélectionner
; Description : au lieu d'ajouter manuellement les Declare en début des fichiers sources. ce code permet
; de le faire automatiquement, cree les declare relatifs aux procedures du code a traiter, à compiler en V4
; et à ajouter au menu Outils de l'IDE....
;
; ne pas oublier dans la section arguments de mettre "%FILE" au lieu de seulement %FILE sinon les noms
; de fichiers avec espace ne passent pas...
;
; Code creé par Mark trouvé sur le forum francais de purebasic
;
; Modifié par Coolman le 12 Fevrier 2007, le resultat est transferé dans le presse papier a charge pour
; l'utilisateur de faire un coller en debut de code...
;
; Modifié par Denis le 25 Novembre 2007, le resultat transferé dans le presse papier est trié par ordre 
; alphabétique des noms de procedure
;
Structure MyDeclare
   NomProc.s
   TypeRetour.s
EndStructure
Declare.l CheckDeclare(Chaine.s)
Declare.s GetProcedureName(Chaine.s)
Declare.l CheckString(Chaine.s)
EnableExplicit
Global NewList MyProcedures.s()
Global NewList MyDeclarations.MyDeclare()
Define Result.l = 0
Define Pos.l = 0
Define SourceFileName.s = ProgramParameter()
Define Chaine.s = ""
Define TempDir.s = GetTemporaryDirectory()
Define Tmpchaine.s = ""
Define Compteur.l = 0
Define RC.s = Chr(13) + Chr(10)
Procedure.l CheckDeclare(Chaine.s)
  Define Result.l = #False
  Define MyProcName.s = ""
  Define Data01.s = Trim(Chaine)
 
  If FindString(Data01,"Declare",1) = 1
    MyProcName = GetProcedureName(Data01)
    ResetList(MyProcedures())
    While NextElement(MyProcedures())
      If MyProcedures() = MyProcName
        Result = #True
        Break
      EndIf   
    Wend
  EndIf
 
  ProcedureReturn Result
EndProcedure
Procedure.s GetProcedureName(Chaine.s)
 
  Define Ptr01.l = 0
  Define Ptr02.l = 0
  Define Result.s = ""
  Define Data01.s = Trim(Chaine)
 
  Ptr01 = FindString(Data01," ",1)
  Ptr02 = FindString(Data01,"(",1)
  If Ptr01 > 0 And Ptr02 > Ptr01
    Ptr01 + 1
    Result = Trim(Mid(Data01,Ptr01,Ptr02 - Ptr01))
  EndIf
 
  ProcedureReturn Result
 
EndProcedure
Procedure.l CheckString(Chaine.s)
  Define Result.l = 0
  Define DoIt.l = #False
  Define Data01.s = Trim(Chaine)
  Define Data02.s = ""
   
  If FindString(Data01,"ProcedureReturn",1) = 1
    Result = 0
  Else   
    If FindString(Data01,"Procedure",1) = 1
     
      Data02 =  GetProcedureName(Chaine)
      AddElement(MyProcedures())
      MyProcedures() = Data02
     
      Data01 = StringField(Data01,1," ")
      If FindString(Data01,".",1) > 0
        Select Right(Data01,1)
          Case "b"  : Result = 2
          Case "c"  : Result = 3
          Case "w"  : Result = 4
          Case "l"  : Result = 5
          Case "f"  : Result = 6
          Case "q"  : Result = 7
          Case "d"  : Result = 8
          Case "s"  : Result = 9       
        EndSelect
      Else
        Result = 1
      EndIf
    EndIf
  EndIf
 
  ProcedureReturn Result
EndProcedure
If SourceFileName="" : End : EndIf
If MessageRequester("Information", "Analyser le fichier "+ SourceFileName + " (O/N) !" , #PB_MessageRequester_YesNo)  <> 6 :
End : EndIf     
If OpenFile(1,SourceFileName)
      While Eof(1) = 0
        Chaine = ReadString(1) : Result.l = CheckString(Chaine)
        If Result > 0
          Chaine = Trim(Chaine) : Pos = FindString(Chaine," ",1)
          If Pos > 0
            Select Result
              Case 1  
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare   " 
                 EndIf     
              
              Case 2 
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare.b "
                 EndIf     
              Case 3
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare.c " 
                 EndIf     
              Case 4
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare.w " 
                 EndIf     
              Case 5 
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos) 
                    MyDeclarations()\TypeRetour = "Declare.l " 
                 EndIf     
              Case 6 
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos) 
                    MyDeclarations()\TypeRetour = "Declare.f " 
                 EndIf     
              Case 7
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare.q "
                 EndIf     
              Case 8
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos)
                    MyDeclarations()\TypeRetour = "Declare.d " 
                 EndIf     
              Case 9
                 If AddElement(MyDeclarations())
                    MyDeclarations()\NomProc = Right(Chaine,Len(Chaine) - Pos) 
                    MyDeclarations()\TypeRetour = "Declare.s "
                 EndIf     
            EndSelect
            Compteur + 1        
               
          EndIf       
        EndIf       
      Wend     
      SortStructuredList(MyDeclarations(), 2, OffsetOf(MyDeclare\NomProc), #PB_Sort_String)
      ForEach MyDeclarations()
         Tmpchaine + MyDeclarations()\TypeRetour+MyDeclarations()\NomProc + RC
      Next
      
      If Compteur>0 And (compteur = CountList(MyDeclarations()))
          SetClipboardText(Tmpchaine)
          MessageRequester("Information", Str(Compteur)+" 'Declare(s)' detecté(s) et transferé(s) dans le presse papier" + RC +"faites un coller pour l'inserer dans votre code source...", 0)
      Else
          If Compteur = 0
             MessageRequester("Information", "Desolé, aucun resultas...", 0)
          Else
             ; c'est une erreur dans l'ajout des éléments de la liste chainée
             MessageRequester("Information", "Le nombre d'éléments de la liste ne correspond pas au nombre de déclarations"+RC+"testez le résultat des fonctions AddElement(MyDeclarations())", 0)
          EndIf
      EndIf   
      CloseFile(1)           
Else
     MessageRequester("Information", "Desolé, une erreur s'est produite lors de l'acces au fichier "+SourceFileName+" !", 0)
     End
EndIf       
End