Conception d'un outil pour EPB ;)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Conception d'un outil pour EPB ;)

Message par Zorro »

un outils pour EPB c'est un simple prg posé dans le dossier "Outils" de l'arborescence de EPB !
cet outil sera alors disponible par le menu "outils" de EPB

cet outil peut etre un prg entierement autonome
ou bien un programme qui dialogue avec EPB ...

dans le cas d'un prg qui dialogue avec EPB , il faut etablir un canal de communication bien précis
un entete dans votre code, qui sera toujours le meme !

le voici :

Code : Tout sélectionner


; attention , ne pas utiliser la procedure ci dessous (envoie_epb() ) en utilisant  EPB et le compilateur 64 Bits
; cel ne fonctionnera que si vous compilez en 32 bits


;{- ****Creation du canal de communication avec EPB ********************************
;- structure memoire partagée
Structure Partage
		declencheur.b
		valeur1.i
		message$ {10000}
EndStructure
Global *ram.Partage

 
Declare envoie_epb(text.s,type)

Procedure envoie_epb(text.s,type)
		; ************************ code de debut d'utilisation du ram_disque **************************
		MemoirePartagee=CreateFileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, SizeOf(Partage),"EPB_RAM")
	
		*ram=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0)
		
		; ***************************************************************************************
		*ram\declencheur.b=1
		*ram\valeur1.i=type
		*ram\message$=text.s
		; ************************ code de fin d'utilisation du ram_disque **************************
		UnmapViewOfFile_(*ram);
		CloseHandle_(MemoirePartagee)
		; ***************************************************************************************
		Delay(200)
EndProcedure

Enumeration  ; message reçut par EPB
		#epb_pos_curs ;pose au curseur
		#epb_rempl ;remplace ligne en cour
		#epb_insert ;insert une ligne
		#epb_saut_to_ligne ; saut a la ligne
		#epb_pos_curs_x ;position x du curseur
		#epb_selection ; creer une selection
		#epb_rempl_select ;remplace la selection
		#epb_line_to_clipboard ; la ligne en cours  vers le clipboard
		#epb_select_to_clipboard ;selection vers le Clipboard
		#epb_onglet_to_clipboard  ; contenu de l'onglet vers Clipboard
		#epb_load_file ;fichier dans nouvel onglet
		#epb_active_onglet ;active un onglet
		#epb_return_onglet ; retourne le numero de l'onglet actif
EndEnumeration
les constantes vous indiquent ce qu'il est possible de faire faire a EPb :)

par exemple , vous avez plusieurs onglet d'ouverts dans EPB
vous voulez activer l'onglet numero 1 , il suffit de faire :

Code : Tout sélectionner

; ; *******************************************************
; activation de l'onglet X
envoie_epb("1" ,#epb_active_onglet) ; active l'onglet 1
; ; *******************************************************
et voila , l'onglet numero 1 sera activé, et affichera son contenu , un "beep" se fera entendre pour signaler que EPB a bien reçut une commande :)

le code pour faire sauter EPB a la ligne numero 20

Code : Tout sélectionner

envoie_epb("20",#epb_saut_to_ligne) ; saute a la ligne 20
comme vous l'aurez compris on appel toujours la meme procedure envoie_epb()
les parametres sont en premier le message a envoyer a EPB
puis la constante (l'ordre) a faire effectuer a EPB )

ici on envoi donc le message
"20"
, puis l'ordre
#epb_saut_to_ligne
donc, saute a la ligne numero 20

les ordres possibles sont donc :

Code : Tout sélectionner

#epb_pos_curs ;pose au curseur
		#epb_rempl ;remplace ligne en cour
		#epb_insert ;insert une ligne
		#epb_saut_to_ligne ; saut a la ligne
		#epb_pos_curs_x ;position x du curseur
		#epb_selection ; creer une selection
		#epb_rempl_select ;remplace la selection
		#epb_line_to_clipboard ; la ligne en cours  vers le clipboard
		#epb_select_to_clipboard ;selection vers le Clipboard
		#epb_onglet_to_clipboard  ; contenu de l'onglet vers Clipboard
		#epb_load_file ;fichier dans nouvel onglet
		#epb_active_onglet ;active un onglet
		#epb_return_onglet ; retourne le numero de l'onglet actif

si par exemple vous voulez récupérer la ligne de code numero 20 dans l'onglet numero 2

il faudra d'abord activer l'onglet numero 2

Code : Tout sélectionner

envoie_epb("2" ,#epb_active_onglet) ; active l'onglet 2
puis sauter a la ligne numero 20

Code : Tout sélectionner

envoie_epb("20",#epb_saut_to_ligne) ; saute a la ligne 20
et plus qu'a recuperer le contenu de la ligne en cours (donc la 20 ) ainsi

Code : Tout sélectionner

envoie_epb("",#epb_line_to_clipboard) ; Récupére la ligne en cours, et la met dans le clipboard
la ligne se trouve alors dans le clipboard
on peut en faire ce qu'on veux :)
la mettre dans une variable pour une modification ulterieur :

Code : Tout sélectionner

Ligne_de_code.s= GetClipboardText() ; affiche le contenue du clipboard
ou l'afficher dans le debuggeur

Code : Tout sélectionner

Debug GetClipboardText() ; affiche le contenue du clipboard
pour reposer la ligne qu'on aurai modifié , il suffit alors de faire
si le curseur est toujours sur la ligne numero 20

Code : Tout sélectionner

envoie_epb(Ligne_de_code.s,#epb_rempl) ; Remplace la ligne en cours (par rapport au curseur)
sinon

Code : Tout sélectionner

envoie_epb("20",#epb_saut_to_ligne) ; saute a la ligne 20
envoie_epb(Ligne_de_code.s,#epb_rempl) ; Remplace la ligne en cours (par rapport au curseur)
voila, c'est assez simple non ? :)

donc si vous voulez rendre compatible vos outils avec EPB :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"