Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Un presse-papier amélioré Dim 29 Juil 2012 - 15:08 | |
| Voilà un petit utilitaire, à lancer en début de session de travail. Il permet de mémoriser divers fragments de texte et de les réutiliser à tout moment. ces fragments sont nommés des "confettis". La première ligne de chaque confetti sert d'identification et est sélectionnable dans un combo. Un mémo en-dessous affiche le confetti actuellement sélectionné. Pour mémoriser un confetti, on procède ainsi: 1. on place un morceau de texte dans le presse-papier (par ctrl/C, par exemple) 2. on affiche mon petit outil par la barre de tâches 3. on utilise "Ajouter" pour créer un nouveau confetti. Ce confetti restera mémorisé tant que le programme n'est pas arrêté. On peut remplacer un confetti existant par un autre morceau de texte, par le bouton Remplacer. Le texte et l'identification sera remplacé. Le nombre de confettis n'est limité que par la limite du nombre d'objets de Panoramic (plusieurs milliers). Pour récupérer un confetti, on procède ainsi: 1. on affiche mon petit outil par la barre de tâches 2. on sélectionne le confetti voulu par la combo 3. on clique sur le bouton Copier pour le placer dans le presse-papier 4. on va dans l'application (éditeur Panoramic ou autre programme) et on fait ctrl/V Voici le source de Presse_papier.bas: - Code:
-
' Presse_papier.bas
label labels : gosub labels gosub constantes gosub variables gosub donnees gosub form0 gosub menu gosub GUI gosub initialisations
end
labels: label constantes, variables, donnees, form0, menu, GUI, initialisations label add_cb, rep_cb, cop_cb, sup_cb, hlp_cb, combo_sel return constantes: dim titre$ : titre$ = "Mon presse-papier - " dim cr$ : cr$ = chr$(13) dim crlf$ : crlf$ = chr$(13)+chr$(10) dim crlflf$ : crlflf$ = chr$(13)+chr$(10)+chr$(10) return variables: dim no%, no1%, no2%, i%, n%, s$, t$, sel_num% dim sel_typ% : ' 1=texte 2=image dim no_combo%, no_memo%, no_dlist%, no_picture%, no_visu% return
donnees: return
form0: border_small 0 : caption 0,titre$ + "0 confettis" width 0,800 : height 0,280 return
menu: return
GUI: no% = no% + 1 : dlist no% : no_dlist% = no% no% = no% + 1 : combo no% : no_combo% = no% width no%,width(0)-20-200 : on_click no%,combo_sel no% = no% + 1 : memo no% : no_memo% = no% width no%,width(no_combo%) : bar_both no% height no%,200 : top no%,20 no% = no% + 1 : button no% : caption no%,"Ajouter presse-papier" top no%,220 : left no%,0 : width no%,150 : on_click no%,add_cb no% = no% + 1 : button no% : caption no%,"Remplacer par presse-papier" top no%,220 : left no%,150 : width no%,150 : on_click no%,rep_cb no% = no% + 1 : button no% : caption no%,"Supprimer de confetti" top no%,220 : left no%,300 : width no%,150 : on_click no%,sup_cb no% = no% + 1 : button no% : caption no%,"Copier dans presse-papier" top no%,220 : left no%,450 : width no%,150 : on_click no%,cop_cb no% = no% + 1 : button no% : caption no%,"Aide" top no%,220 : left no%,600 : width no%,150 : on_click no%,hlp_cb no% = no% + 1 : picture no% : hide no% : no_picture% = no% width no%,200 : height no%,200 : top no%,20 : stretch_on no% no% = no% + 1 : picture no% : no_visu% = no% top no%,20 : left no%,width(no_memo%) : width no%,200 : height no%,200 2d_target_is no_visu% :stretch_on no_visu% return
initialisations: return combo_sel: n% = item_index(no_combo%) no1% = val(item_read$(no_dlist%,n%)) sel_num% = no1% clear no_memo% if no1%<0 sel_typ% = 2 2d_image_paste 0-sel_num%,0,0 else color no_visu%,255,255,255 sel_typ% = 1 for i%=1 to count(no1%) item_add no_memo%,item_read$(no1%,i%) next i% end_if return
add_cb: s$ = clipboard_string_paste$ if s$="" clipboard_paste no_picture% if (color_pixel_red(no_picture%,0,0)=255) and (color_pixel_green(no_picture%,0,0)=255) and (color_pixel_blue(no_picture%,0,0)=255) message "Le presse-papier ne contient ni un texte ni une image valide." return end_if no% = no% + 1 : image no% clipboard_paste no% clipboard_paste no_visu% item_add no_dlist%,str$(0-no%) t$ = "Image no. "+str$(no%) item_add no_combo%,t$ text no_combo%,t$ clear no_memo% sel_typ% = 2 sel_num% = 0 - no% caption 0,titre$ + str$(count(no_combo%))+" confettis" return end_if color no_visu%,255,255,255 i% = instr(s$,cr$) if i%=0 then i% = len(s$)+1 t$ = left$(s$,i%-1) no% = no% + 1 : dlist no% item_add no_dlist%,str$(no%) item_add no%,s$ item_add no_combo%,t$ text no_combo%,t$ clear no_memo% item_add no_memo%,s$ sel_typ% = 1 sel_num% = no% caption 0,titre$ + str$(count(no_combo%))+" confettis" return rep_cb: s$ = text$(no_combo%) if trim$(s$)="" message "Aucun confetti n'est sélectionné." return end_if if sel_typ%=1 s$ = clipboard_string_paste$ if s$="" message "Le presse-papier ne contient pas un texte valide." return end_if color no_visu%,255,255,255 i% = instr(s$,cr$) if i%=0 then i% = len(s$)+1 t$ = left$(s$,i%-1) n% = item_index(no_combo%) no1% = val(item_read$(no_dlist%,n%)) clear no1% item_add no1%,s$ item_delete no_combo%,n% item_insert no_combo%,n%,t$ text no_combo%,t$ clear no_memo% item_add no_memo%,s$ else color no_picture%,255,255,255 clipboard_paste no_visu% clipboard_paste no_picture% if (color_pixel_red(no_picture%,0,0)=255) and (color_pixel_green(no_picture%,0,0)=255) and (color_pixel_blue(no_picture%,0,0)=255) message "Le presse-papier ne contient pas une image valide." return end_if clipboard_paste (0-sel_num%) end_if return
cop_cb: s$ = text$(no_combo%) if trim$(s$)="" message "Aucun confetti n'est sélectionné." return end_if clipboard_string_copy "<Vide>" select sel_typ% case 1: ' texte s$ = "" for i%=1 to count(no_memo%) s$ = s$ + item_read$(no_memo%,i%) + crlf$ next i% ' clipboard_copy no_memo% clipboard_string_copy s$ case 2: ' image clipboard_copy 0-sel_num% end_select return
sup_cb: if text$(no_combo%)="" then return if count(no_combo%)=0 then return n% = item_index(no_combo%) if n%=0 then return no1% = val(item_read$(no_dlist%,n%)) clear no_memo% text no_combo%,"" item_delete no_combo%,n% item_delete no_dlist%,n% delete no1% if n%>count(no_combo%) then n% = n% - 1 if n%>0 no1% = val(item_read$(no_dlist%,n%)) sel_num% = no1% if sel_num%<0 sel_typ% = 2 2d_image_paste 0-sel_num%,0,0 else color no_visu%,255,255,255 sel_typ% = 1 for i%=1 to count(no1%) item_add no_memo%,item_read$(no1%,i%) next i% text no_combo%,item_read$(no_memo%,1) end_if end_if caption 0,titre$ + str$(count(no_combo%))+" confettis" return hlp_cb: s$ = "Bienvenu dans Mon Presse-papier !" + crlflf$ s$ = s$ + "Cet outil gère des morceaux de texte ou des images," + crlf$ s$ = s$ + "contenus dans le presse-papier." + crlf$ s$ = s$ + " Ajouter: créer un nouveau confetti."+crlf$ s$ = s$ + "Remplacer: remplacer le confetti.sélectionné"+crlf$ s$ = s$ + " Supprimer: supprimer un confetti."+crlf$ s$ = s$ + " Copier: copier le confetti sélectionné dans le presse-papier."+crlf$ s$ = s$ + " Aide: afficher ce texte."+crlf$ message s$ return
Pour ma part, je l'ai généré en EXE et j'ai placé un raccourci sur le bureau. Le le lance systématiquement après le boot, et ainsi je l'ai toujours sous la main.
Dernière édition par Klaus le Dim 29 Juil 2012 - 22:22, édité 2 fois | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un presse-papier amélioré Dim 29 Juil 2012 - 22:21 | |
| Voilà, c'est fait ! On peut maintenant mettre indéfiniment, des confettis de texte ET des confettis d'images ! Bien sûr, pour mettre des images, il faut les charger au préalable dans le presse-papier (comme pour les textes). Cela peut être fait par un éditeur d'images (PAINT, The GIMP, PhotoFiltre, ...) ou par un programme Panoramic par la commande CLIPBOARD_COPY avec un objet PICTURE en paramètre.
Mais il y une différence par rapport aux textes. J'utilise la première ligne du texte comme "identifiant" dans la combo en haut de l'écran. Cela n'a pas de sens pour une image. J'utilise donc un libellé synthétique "Image" suivi d'un numéro d'identification qu'il vaut mieux noter pour s'en souvenir.
Il y a une image de visualisation à droite de la combo. Au moment de l'ajout de l'image, elle s'affiche en dimensions réduites. Lorsqu'on sélectionne une image par la combo, elle s'affiche, mais en taille réelle avec le carré de 200x200 pixels en haut à gauche de l'image. Cependant, elle sera bien mise en entier dans le presse-papier par le bouton "Copier". Je n'ai pas encore trouvé le moyen de charger l'image sélectionnée en dimensions réduites, bien que le pour picture d'affichage , il y ait l'attribut stretch_on. Ca reste à éclaircir. Mais le programme est parfaitement utilisable comme ça. | |
|