jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Immortaliser les photos de famille Dim 24 Sep 2017 - 15:49 | |
| Pendant les vacances, je ne fais pas d'informatique, enfin en principe, car j'ai fait une exception, la voici : Là, ce n'est pas un jeu pour les enfants. Ce serait plutôt un programme pour les papys. Il s'agit d'écrire les informations connus des photos de façon à ce que, lorsque les papys partent, il ne reste pas des photos représentant des gens inconnus, prises on ne sait où et on ne sait quand... ayant aussi peu de valeur que celles du marchand d'antiquités... - Code:
-
rem ' Mémophotoramic : Mémoire/l'histoire des photos - par jjn4 - le 16/08/2017 dim DEX% , DEY% : rem Dimensions de l`Écran en X et en Y dim DL% , DC% : rem Distance entre les Lettres et les Chiffres de repère dim HA% , LA% : rem HAuteur et LArgeur de la photo dim HA2% , LA2% : rem Copie de HA% et LA% pour la grille dim IMT% : rem Indice de Modification du Texte dim NOZ% : rem Numéro de l`Objet à Zoomer dim NP$ : rem Nom de la Photo dim NPC% : rem Numéro de la Photo à choir au Clavier dim PB% : rem Plan B pour les jpg anormaux dim RC$ , RC2$ : rem Répertoire Courant dim RLH : rem Rapport entre la Largeur et la Hauteur de la photo dim RLHM : rem Rapport Largeur/Hauteur des Miniatures dim RLHR : rem Rapport Largeur/Hauteur de la fenêtre de Recherche dim RLHZ : rem Rapport Largeur/Hauteur du Zoom dim RPA% : rem Rang de la Première photo Affichée dim TB$(26) : rem Titres de Boutons dim TCP$(5) : rem Titres des Caractéristiques de la Photo dim TP$ : rem Titre du Programme dim TR$ : rem Texte à Répéter pour la recherche dim VM1% , VM2% : rem Variables numériques à utilisation Multiple dim VM1$ : rem Variables alphanumériques à utilisation Multiple dim VP$ : rem Version du Programme (on la trouve dans l`Aide-bis) RPA%=1 : RC2$=dir_current$ TP$=" MÉMOPHOTORAMIC - Mémoire de l'histoire des photos de famille" VP$="Ver-160817-1.1" label change : rem Modifification du texte des commentaires label clic : rem Redirection de tous les on-click label dblc : rem Redirection de tous les double-click label key : rem Gestion des principales commandes de clavier label key2 : rem Gestion de la commande clavier de la liste 1260 rem Lecture des datas --------------------------------------------------------- for VM1% = 1 to 5 read TCP$(VM1%) next VM1% for VM1% = 1 to 26 read TB$(VM1%) next VM1% rem form0 --------------------------------------------------------------------- DEX%=screen_x : DEY%=screen_y-35 width 0,DEX% height 0,DEY% caption 0,TP$ dlist 70 : rem Liste où vont être stockés les résultats de la recherche ---- dlist 80 : rem Liste où seront stockés les textes des photos --------------- dlist 85 : rem Liste bis de la liste 80 dlist 90 : rem Liste où sera stocké le liste des photos trouvées ----------- charge() rem Grille des photos ========================================================= panel 100 : rem Emplacement des douze mini-photos -------------------------- left 100,403 width 100,DEX%-425 height 100,DEY%-45 rem Objets-système n° 110 à 220 à pas de 10 et 230 à 340 pour les images for VM1% = 1 to 3 for VM2% = 1 to 4 panel (VM1%-1)*40+VM2%*10+100 parent (VM1%-1)*40+VM2%*10+100,100 left (VM1%-1)*40+VM2%*10+100,(VM2%-1)*(width(100)/4-8)+11 top (VM1%-1)*40+VM2%*10+100,(VM1%-1)*(height(100)/3-8)+13 width (VM1%-1)*40+VM2%*10+100,width(100)/4-10 height (VM1%-1)*40+VM2%*10+100,height(100)/3-10 color (VM1%-1)*40+VM2%*10+100,255,255,255 picture (VM1%-1)*40+VM2%*10+220 parent (VM1%-1)*40+VM2%*10+220,(VM1%-1)*40+VM2%*10+100 left (VM1%-1)*40+VM2%*10+220,5 top (VM1%-1)*40+VM2%*10+220,5 stretch_on (VM1%-1)*40+VM2%*10+220 on_click (VM1%-1)*40+VM2%*10+220,clic on_double_click (VM1%-1)*40+VM2%*10+220,dblc next VM2% next VM1% RLHM=width(110)/height(110) rem Repères de la grille de repérage Obj-Syst 350 à 440 et 450 à 520 ------- for VM1% = 1 to 10 alpha VM1%*10+340 parent VM1%*10+340,100 left VM1%*10+340,(width(100)/10-4)*(VM1%-1)+width(100)/20 caption VM1%*10+340,chr$(VM1%+64) next VM1% DL%=left(360)-left(350) for VM1% = 1 to 8 alpha VM1%*10+440 parent VM1%*10+440,100 left VM1%*10+440,2 top VM1%*10+440,(height(100)/8-4)*(VM1%-1)+height(100)/16 caption VM1%*10+440,chr$(VM1%+48) next VM1% DC%=top(460)-top(450) panel 530 : rem Zoom de la photo choisie ----------------------------------- parent 530,100 hide 530 left 530,11 top 530,13 width 530,width(100)-35 height 530,height(100)-25 picture 540 parent 540,530 width 540,1200 height 540,820 stretch_on 540 2d_target_is 540 on_double_click 540,dblc RLHZ=width(530)/height(530) rem Boutons de commande et données techniques ================================= panel 700 : rem Support général width 700,400 height 700,DEY%-45 list 710 parent 710,700 left 710,5 top 710,5 width 710,width(700)-10 height 710,(height(700)/13)*4 font_size 710,20 font_name 710,"Arial" on_click 710,clic on_double_click 710,dblc rem Objets-système n° 720 à 830 à pas de 10 -------------------------------- for VM1% = 1 to 6 for VM2% = 1 to 2 button (VM1%-1)*20+VM2%*10+710 parent (VM1%-1)*20+VM2%*10+710,700 left (VM1%-1)*20+VM2%*10+710,(vM2%-1)*200+5 top (VM1%-1)*20+VM2%*10+710,(VM1%-1)*(height(700)/13)+(height(700)/13)*4+10 width (VM1%-1)*20+VM2%*10+710,190 height (VM1%-1)*20+VM2%*10+710,height(700)/13-5 font_bold (VM1%-1)*20+VM2%*10+710 font_size (VM1%-1)*20+VM2%*10+710,14 font_name (VM1%-1)*20+VM2%*10+710,"Arial" caption (VM1%-1)*20+VM2%*10+710,TB$((VM1%-1)*2+VM2%) on_click (VM1%-1)*20+VM2%*10+710,clic next VM2% next VM1% font_name 760,"Wingdings" font_name 770,"Wingdings" font_size 760,30 font_size 770,30 inactive 730 inactive 740 inactive 750 inactive 790 inactive 820 memo 840 left 840,5 top 840,(height(700)/13)*10+10 width 840,390 height 840,(height(700)/13)*3-15 bar_vertical 840 font_bold 840 font_size 840,14 font_name 840,"Arial" formule(840) inactive 840 on_change 840,change
rem Système de recherche ====================================================== panel 900 : rem Support général --------------------- hide 900 left 900,403 width 900,DEX%-425 height 900,top(840) panel 910 : rem Support de la photo ----------------- parent 910,900 left 910,10 top 910,10 width 910,DEX%-725 height 910,(height(900)/3)*2 RLHR=width(910)/height(910) picture 920 : rem Photo ----------------------------- parent 920,910 width 920,1000 height 920,700 stretch_on 920 on_double_click 920,dblc list 930 : rem Texto de la photo -------------------- parent 930,900 left 930,10 top 930,(height(900)/3)*2+20 width 930,width(900)-20 height 930,height(900)-top(930)-10 font_size 930,14 font_name 930,"Arial" formule(930) on_click 930,clic alpha 940 : rem Annonce de l`utilité de ce volet ---- parent 940,900 left 940,DEX%-695 top 940,10 font_bold 940 font_size 940,14 font_name 940,"Arial" caption 940,"VOLET DE RECHERCHE" on_double_click 940,dblc alpha 950 : rem Demande de l`expression à chercher -- parent 950,900 left 950,DEX%-695 top 950,45 font_size 950,10 caption 950,"Quelle expression rechercher :" edit 960 : rem Emplacement de l`expression ---------- parent 960,900 left 960,DEX%-695 top 960,65 width 960,250 font_size 960,10 on_key_down 960,key rem Boutons de commande du volet de recherche (970 à 1040) ----------------- for VM1% = 1 to 4 for VM2% = 1 to 2 button (VM1%-1)*20+VM2%*10+960 parent (VM1%-1)*20+VM2%*10+960,900 left (VM1%-1)*20+VM2%*10+960,(VM2%-1)*130+DEX%-695 top (VM1%-1)*20+VM2%*10+960,(VM1%-1)*(top(930)/6)+100 width (VM1%-1)*20+VM2%*10+960,120 height (VM1%-1)*20+VM2%*10+960,(top(930)/7) font_bold (VM1%-1)*20+VM2%*10+960 font_size (VM1%-1)*20+VM2%*10+960,12 font_name (VM1%-1)*20+VM2%*10+960,"Arial" caption (VM1%-1)*20+VM2%*10+960,TB$((VM1%-1)*2+VM2%+12) on_click (VM1%-1)*20+VM2%*10+960,clic next VM2% next VM1% font_name 990,"Wingdings" font_name 1000,"Wingdings" font_size 990,30 font_size 1000,30 inactive 990 inactive 1000 alpha 1050 : rem Affichage du numérotage ----------------------------------- parent 1050,900 left 1050,DEX%-485 top 1050,45 font_bold 1050
rem Tableau Déplacer-Renommer-Détruire ======================================== panel 1100 : rem Support général ------------------------------ hide 1100 left 1100,int((DEX%-400)/2)+400 width 1100,int((DEX%-400)/2)-30 height 1100,top(930) alpha 1110 : rem Titre du volet DRD --------------------------- parent 1110,1100 top 1110,10 font_bold 1110 font_size 1110,12 color 1110,255,255,0 caption 1110,"Déplacer-Renommer-Détruire une photo (ou Alt-fin)" rem Boutons de commande du volet DRD (1120 à 1160) ------------ for VM1% = 1 to 5 button VM1%*10+1110 parent VM1%*10+1110,1100 left VM1%*10+1110,10 top VM1%*10+1110,height(1100)/10+45*(VM1%-1)+40 width VM1%*10+1110,120 height VM1%*10+1110,height(1100)/11 font_bold VM1%*10+1110 font_size VM1%*10+1110,10 caption VM1%*10+1110,TB$(VM1%+20) on_click VM1%*10+1110,clic next VM1% alpha 1180 : rem Affichage de l`action à exécuter ------------- parent 1180,1100 left 1180,10 top 1180,45 font_bold 1180 font_size 1180,12 font_color 1180,0,0,255 alpha 1190 : rem Affichage du nom de la photo concernée ------- parent 1190,1100 left 1190,10 top 1190,65 color 1190,255,255,255 alpha 1200 : rem Demande OK ----------------------------------- parent 1200,1100 hide 1200 left 1200,130 top 1200,40 font_bold 1200 font_size 1200,12 font_color 1200,255,0,0 caption 1200,"Confirmez-vous (OK)?" alpha 1210 : rem Annonce de l`emplacement du new nom ---------- parent 1210,1100 hide 1210 left 1210,150 top 1210,130 font_bold 1210 font_size 1210,10 caption 1210,"Nouveau nom à donner :" edit 1220 : rem Emplacement où mettre le new nom -------------- parent 1220,1100 hide 1220 left 1220,150 top 1220,145 width 1220,int(DEX%-400)/4 font_size 1220,10 alpha 1230 : rem Annonce du type de fichier ------------------- parent 1230,1100 hide 1230 left 1230,150 top 1230,top(1120)+10 font_bold 1230 caption 1230,"Type de fichier :" alpha 1240 : rem Précision du type de fichier ----------------- parent 1240,1100 hide 1240 left 1240,250 top 1240,top(1120)+10 alpha 1250 : rem Annonce de la cible du déplacement ----------- parent 1250,1100 hide 1250 left 1250,150 top 1250,82 font_bold 1250 caption 1250,"Répertoire-cible du déplacement (choisir)" list 1260 : rem Liste des répertoires-cibles possibles -------- parent 1260,1100 hide 1260 left 1260,150 top 1260,100 width 1260,int(DEX%-400)/4 height 1260,top(1160)+height(1160)-top(1260) font_size 1260,18 on_click 1260,clic on_double_click 1260,dblc alpha 1270 : rem Précision sur l`action effectuée ------------- parent 1270,1100 hide 1270 left 1270,150 top 1270,top(1220)+30 font_bold 1270 font_size 1270,12 font_color 1270,255,0,0 button 1275 : rem Bouton Avancerpour la liste ----------------- parent 1275,1100 hide 1275 left 1275,150+(int(DEX%-400)/4)-50 top 1275,40 width 1275,80 height 1275,height(1100)/16 font_bold 1275 Font_size 1275,10 caption 1275,"Avancer &J" on_click 1275,clic button 1280 : rem Bouton reculer pour la liste ---------------- parent 1280,1100 hide 1280 left 1280,150+(int(DEX%-400)/4)-80 top 1280,40 width 1280,80 height 1280,height(1100)/16 font_bold 1280 font_size 1280,10 caption 1280,TB$(26) on_click 1280,clic alpha 1290 : rem Indication Double-cliquer -------------------- parent 1290,1100 hide 1290 left 1290,150 top 1290,height(1260)+102 caption 1290,"Double-cliquez sur une ligne pour avancer (ou Alt-J)" rem Derniers préparatifs ====================================================== arbre() on_key_down 0,key on_key_down 1120,key2
end : rem ' Début des routines ================================================
sub aband() : rem Quitter le panneau DRD ====================================== vider() dir_change RC2$ hide 1100 trigger_click 1020 trigger_click 970 active 720 if show(900)=1 if active(960)=1 set_focus 960 end_if end_if end_sub
sub affiche() : rem Affiche les photos trouvées dans la liste ================= dim_local v1af% inactive 720 off_key_down 0 for v1af% = 1 to 12 off_click v1af%*10+220 off_double_click v1af%*10+220 width v1af%*10+220,290 height v1af%*10+220,270 color v1af%*10+220,255,255,255 next v1af% for v1af% = 1 to 12 if count(90)>v1af%+RPA%-2 NP$=item_read$(90,v1af%+RPA%-1) choisir() if RLH>RLHM if (width(110)-10)<LA% width v1af%*10+220,width(110)-10 height v1af%*10+220,(width(110)-10)/RLH else width v1af%*10+220,LA% height v1af%*10+220,HA% end_if else if (height(110)-10)<HA% height v1af%*10+220,height(110)-1 width v1af%*10+220,(height(110)-10)*RLH else height v1af%*10+220,HA% width v1af%*10+220,LA% end_if end_if file_load v1af%*10+220,NP$ end_if next v1af% caption 0,TP$+" - "+RC$+" - "+str$(RPA%)+"/"+str$(count(90)) for v1af% = 1 to 12 on_click v1af%*10+220,clic on_double_click v1af%*10+220,dblc next v1af% active 720 on_key_down 0,key end_sub
sub aide() : rem Explications du fonctionnement du programme ================== dim_local v1ai$ , v2ai$ v2ai$=chr$(13) application_title " A quoi sert ce programme et comment il fonctionne" v1ai$=" L'objectif de ce programme est en quelque sorte d'immortaliser les photos"+v2ai$ v1ai$=v1ai$+"de famille, qui ne conservent aucun intérêt si on a tout oublié de leur"+v2ai$ v1ai$=v1ai$+"identité, de leurs coordonnées et de leur histoire. Et comme la mémoire"+v2ai$ v1ai$=v1ai$+"est volatile, surtout au fil des générations, alors autant l'écrire."+v2ai$ v1ai$=v1ai$+"Mémophotoramic est donc un gestionnaire de souvenirs photographiques."+v2ai$+v2ai$ v1ai$=v1ai$+" Vous pouvez Avancer ou Reculer dans l'arborescence de la mémoire de"+v2ai$ v1ai$=v1ai$+"votre ordinateur et explorer les différents répertoires de photos."+v2ai$ v1ai$=v1ai$+"Vous pouvez consulter le catalogue des miniatures des photos exposées"+v2ai$ v1ai$=v1ai$+"par douzaine, et en cliquant sur une miniature, l'histoire de celle-ci."+v2ai$ v1ai$=v1ai$+"Pour commencer ou modifier cette histoire, il faut zoomer la photo."+v2ai$+v2ai$ v1ai$=v1ai$+" Le support du texte de l'histoire peut s'allonger pour en écrire plus."+v2ai$ v1ai$=v1ai$+"Pour donner les identités d'un groupe de personnages, se servir de la grille"+v2ai$ v1ai$=v1ai$+"(Exemple : B3=Jean Dupont D4=Sylvie Martin F2=Yvan Dupré...)"+v2ai$ v1ai$=v1ai$+"(Notons qu'il n'est pas possible de modifier le titre par ce moyen)."+v2ai$+v2ai$ v1ai$=v1ai$+" Vous pouvez effectuer des recherches à partir du contenu des histoires"+v2ai$ v1ai$=v1ai$+"dans le répertoire où vous vous trouvez. Un aide spécifique est alors"+v2ai$ v1ai$=v1ai$+"offerte, que vous trouverez dans le volet de recherche."+v2ai$+v2ai$ v1ai$=v1ai$+" Le programme peut être utilisé exclusivement avec le clavier en faisant :"+v2ai$ v1ai$=v1ai$+" - Alt-(lettre-soulignée) pour les boutons,"+v2ai$ v1ai$=v1ai$+" - |Haut et Bas| (ou Alt-|Haut et Alt-Bas|) pour simuler les boutons fléchés,"+v2ai$ v1ai$=v1ai$+" - Flèche-oblique-N/O, puis touches fléchées, pour choisir dans les listes,"+v2ai$ v1ai$=v1ai$+" - $ et Alt-$ (Dollar et Alt-Dollar) pour choisir une photo,"+v2ai$ v1ai$=v1ai$+" - Petit-2 pour obtenir le curseur dans la zone d'inscription de texte,"+v2ai$ v1ai$=v1ai$+" - Alt-fin pour accéder au volet de modification de la photo." message v1ai$ end_sub
sub aiderech() : rem Aide spécifique à la recherche =========================== dim_local v1ai$ , v2ai$ v2ai$=chr$(13) application_title " Comment rechercher :" v1ai$="L'utilisation du moteur de recherche est assez classique. Juste quelques points :"+v2ai$ v1ai$=v1ai$+" - La recherche se fait uniquement dans le répertoire dans lequel vous êtes"+v2ai$ v1ai$=v1ai$+" et seulement parmi les photos qui ont été spécifiquement annotées"+v2ai$+v2ai$ v1ai$=v1ai$+" - Vous n'avez pas besoin de tenir compte des majuscules dans la demande"+v2ai$ v1ai$=v1ai$+" - « Bis » permet de retrouver le texte de la demande précédente"+v2ai$+v2ai$ v1ai$=v1ai$+" - Pour « Copier », il faut d'abord sélectionner une ligne de la zone de"+v2ai$ v1ai$=v1ai$+" texte située sous la photo de recherche (en bas du volet de recherche)"+v2ai$ v1ai$=v1ai$+" (A noter que cela ne marche pas pour le « Titre : »)"+v2ai$+v2ai$ v1ai$=v1ai$+" - « Coller » permet de recopier cette ligne dans la zone de texte située"+v2ai$ v1ai$=v1ai$+" sous le volet de recherche (cela ne marche que si cette zone est active)"+v2ai$ v1ai$=v1ai$+" (A noter que cette dernière fonction utilise le presse-papier de l'ordinateur)."+v2ai$+v2ai$ v1ai$=v1ai$+"Pour accéder au volet de modification de la photo, double-cliquer sur le titre"+v2ai$ v1ai$=v1ai$+"« VOLET DE RECHERCHE » (cela ne marche que si une photo a été trouvée)."+v2ai$ v1ai$=v1ai$+" ----------------- Version du programme : "+VP$+" ------------------" message v1ai$ end_sub
sub allonge() : rem Allonge ou Raccourcie le mémo ============================= if caption$(830)="A&llonger" caption 830,"Ra&ccourcir" width 840,DEX%-35 else caption 830,"A&llonger" width 840,390 end_if end_sub
sub apres() : rem Afficher le résultat d`après de la recherche ================ dim_local v1ap% , v2ap% , v3ap% if caption$(1050)<>"" v2ap%=instr(caption$(1050),"/") v1ap%=val(left$(caption$(1050),v2ap%-1)) v3ap%=val(right$(caption$(1050),len(caption$(1050))-v2ap%)) if v1ap%<v3ap% v1ap%=v1ap%+1 caption 1050,str$(v1ap%)+"/"+str$(v3ap%) photorech(v1ap%) texte(v1ap%) if v1ap%=v3ap% inactive 1000 end_if active 990 end_if end_if end_sub
sub arbre() : rem Visualiser l`arbre des répertoires ========================== dim_local v1ar$ clear 710 clear 90 v1ar$=file_find_first$ while v1ar$<>"_" if left$(v1ar$,1)<>"." if dir_exists(v1ar$)=1 item_add 710,v1ar$ end_if if lower$(right$(v1ar$,4))=".jpg" or lower$(right$(v1ar$,4))=".bmp" item_add 90,v1ar$ end_if end_if v1ar$=file_find_next$ end_while file_find_close affiche() end_sub
sub arbrebis() : rem Arbre des répertoires pour le déplacement ================ dim_local v1ar$ clear 1260 v1ar$=file_find_first$ while v1ar$<>"_" if left$(v1ar$,1)<>"." if dir_exists(v1ar$)=1 item_add 1260,v1ar$ end_if end_if v1ar$=file_find_next$ end_while file_find_close end_sub
sub avance() : rem Aller vers enfants pour liste déplacer ===================== if item_index(1260)>0 dir_change item_index$(1260) arbrebis() end_if end_sub
sub avancer() : rem Aller 1 cran plus loin vers les répertoires enfants ======= if item_index(710)>0 inactive 710 inactive 730 inactive 750 inactive 760 inactive 770 inactive 780 inactive 800 inactive 810 inactive 830 sortir() RPA%=1 RC$=item_index$(710) caption 0,TP$+" - "+RC$+" - "+str$(RPA%)+"/"+str$(count(90)) dir_change item_index$(710) charge() efface() formule(840) blanc() arbre() active 710 active 760 active 770 active 780 active 800 active 810 active 830 end_if end_sub
sub avant() : rem Afficher le résultat d`avant de la recherche ================ dim_local v1av% , v2av% , v3av% if caption$(1050)<>"" v2av%=instr(caption$(1050),"/") v1av%=val(left$(caption$(1050),v2av%-1)) v3av%=val(right$(caption$(1050),len(caption$(1050))-v2av%)) if v1av%>1 v1av%=v1av%-1 caption 1050,str$(v1av%)+"/"+str$(v3av%) photorech(v1av%) texte(v1av%) if v1av%=1 inactive 990 end_if active 1000 end_if end_if end_sub
sub bas() : rem Voir les photos situées plus bas ============================== inactive 760 inactive 770 inactive 780 inactive 800 inactive 810 inactive 830 if RPA%+12<=count(90) RPA%=RPA%+12 inactive 750 sortir() efface() affiche() formule(840) end_if NPC%=0 active 760 active 770 active 780 active 800 active 810 active 830 end_sub
sub bis() : rem Répéter le texte de la recherche précédente =================== if show(900)=1 if active(960)=1 set_focus 960 end_if end_if text 960,TR$ end_sub
sub blanc() : rem Blanchit des emplacements de photos ========================= dim_local v1bl% for v1bl% = 1 to 12 width v1bl%*10+220,290 height v1bl%*10+220,270 color v1bl%*10+220,255,255,255 next v1bl% end_sub
sub catalog() : rem Faire apparaître le catalogue des photos ================== dim_local v1ca% inactive 740 inactive 790 inactive 840 sortir() if IMT%=1 v1ca%=message_confirmation_yes_no("Voulez-vous enregistrer vos modifications ?") if v1ca%=1 enreg() end_if end_if efface() formule(840) hide 530 caption 790,"Enle&ver" grille() active 720 active 760 active 770 end_sub
change: : rem Modification du texte des commentaires ========================== if show(530)=1 and item_read$(840,1)<>TCP$(1) IMT%=1 active 820 end_if return
sub charge() : rem Charge le contenu du fichier dans la dliste ================ clear 80 if file_exists("Mémophoto.txt")=1 file_load 80,"Mémophoto.txt" end_if end_sub
sub cherch() : rem Gestion du bouton de recherche ============================= dim_local v1ch% , v2ch% , v3ch% if caption$(780)="C&hercher" caption 780,"Arrê&ter" inactive 740 off_double_click 540 for v1ch% = 230 to 340 step 10 off_click v1ch% off_double_click v1ch% next v1ch% show 900 if show(900)=1 if active(960)=1 set_focus 960 end_if end_if RC2$=dir_current$ else if active(820)=1 v2ch%=1 end_if if active(750)=1 v3ch%=1 end_if for v1ch% = 740 to 840 step 10 inactive v1ch% next v1ch% caption 780,"C&hercher" bis() hide 900 hide 1100 dir_change RC2$ trigger_click 970 trigger_click 1160 arbre() if show(530)=1 active 740 end_if on_double_click 540,dblc for v1ch% = 230 to 340 step 10 on_click v1ch%,clic on_double_click v1ch%,dblc next v1ch% active 780 active 800 active 810 active 830 if show(530)=1 active 790 active 840 else active 760 active 770 end_if if v2ch%=1 active 820 end_if if v3ch%=1 active 750 end_if end_if end_sub
sub chercher() : rem Effectuer une recherche dans le texte du répertoire ====== dim_local v1ch% , v2ch$ , v3ch% if text$(960)<>"" if count(80)>0 clear 70 for v1ch% = 1 to count(80) if v2ch$="" v2ch$=item_read$(80,v1ch%) end_if if instr(lower$(item_read$(80,v1ch%)),lower$(text$(960)))>0 v3ch%=1 end_if if item_read$(80,v1ch%)=chr$(165) if v3ch%=1 item_add 70,v2ch$ end_if v2ch$="" v3ch%=0 end_if next v1ch% caption 1050,"0/"+str$(count(70)) inactive 990 inactive 1000 formule(930) width 920,1000 height 920,700 color 920,255,255,255 if count(70)>0 photorech(1) texte(1) TR$=text$(960) if count(70)>1 active 1000 end_if end_if end_if end_if end_sub
sub choisir() : rem Tri la photo à mesurer ==================================== LA%=0 HA%=0 if lower$(right$(NP$,4))=".bmp" format_bmp(NP$) end_if PB%=0 if lower$(right$(NP$,4))=".jpg" format_jpg(NP$) end_if if PB%=1 format_pb(NP$) end_if RLH=LA%/HA% end_sub
sub choix() : rem Choix de la photo à zoomer ================================== dim_local v1ch% , v2ch$ , v3ch% NOZ%=number_click if count(90)>0 if count(90)>=RPA%+(NOZ%/10)-23 v2ch$=item_read$(90,RPA%+(NOZ%/10)-23) efface() color NOZ%-120,255,0,0 off_change 840 clear 840 if count(80)>0 for v1ch% = 1 to count(80) if item_read$(80,v1ch%)=v2ch$ v3ch%=v1ch% exit_for end_if next v1ch% end_if if v3ch%>0 item_add 840,TCP$(1)+v2ch$ for v1ch% = v3ch%+1 to count(80) if item_read$(80,v1ch%)<>chr$(165) item_add 840,item_read$(80,v1ch%) else exit_for end_if next v1ch% else for v1ch% = 1 to 5 item_add 840,TCP$(v1ch%) next v1ch% item_delete 840,1 item_insert 840,1,TCP$(1)+v2ch$ end_if on_change 840,change active 750 end_if end_if end_sub
clic: : rem Redirection de tous les on-click ================================== if number_click<350 choix() end_if select number_click case 710 : index() case 720 : reculer() case 730 : avancer() case 740 : catalog() case 750 : zoom() case 760 : haut() case 770 : bas() case 780 : cherch() case 790 : grille() case 800 : quitter() case 810 : aide() case 820 : enreg() case 830 : allonge() case 930 : rem case 970 : chercher() case 980 : new() case 990 : avant() case 1000 : apres() case 1010 : aiderech() case 1020 : bis() case 1030 : copier() case 1040 : coller() case 1120 : quelle() case 1130 : quelle() case 1140 : quelle() case 1150 : ok() case 1160 : aband() case 1260 : rem case 1275 : avance() case 1280 : recul() end_select return
sub coller() : rem Coller le texte sélectionné vers la zone de dessous ======== dim_local v1co% , v2co$ , v3co% v2co$=clipboard_string_paste$ if active(840)=1 if count(930)>0 for v1co% = 2 to count(930) if left$(item_read$(840,v1co%),4)=left$(v2co$,4) v3co%=v1co% exit_for end_if next v1co% if v3co%>0 item_delete 840,v3co% item_insert 840,v3co%,v2co$ else if left$(v2co$,8)<>TCP$(1) if (item_index(930)>0) and (item_index(930)<count(840)) item_insert 840,item_index(930),v2co$ else item_add 840,v2co$ end_if end_if end_if end_if end_if end_sub
sub copier() : rem Copier la ligne de texte trouvé dans la zone du haut ======= if item_index(930)>0 clipboard_string_copy item_index$(930) end_if end_sub
rem Datas ===================================================================== data "Titre : " , "Noms : " , "Date : " , "Lieu : " , "Contexte : " data "&Reculer" , "&Avancer" , "Catal&ogue" , "&Zoom" , chr$(241) , chr$(242) data "C&hercher" , "&Grille" , "&Quitter" , "A&ide" , "&Enregistrer" , "A&llonger" data "Chercher &f" , "&New/Rech" , chr$(217) , chr$(218) , "Aide &w" , "Bi&s" data "Copier &x" , "Coller &Y" , "Dé&placer", "Reno&mmer" , "&Détruire" , "O&K" data "A&bandonner" , "Rec&uler" rem Fin des datas
dblc: : rem Redirection de tous les double-click ============================== if number_double_click<350 trigger_click 750 end_if select number_double_click case 540 : trigger_click 740 case 710 : trigger_click 730 case 920 : trigger_click 780 case 940 : drd() case 1260 : avance() end_select return
sub deplacer() : rem Changer la photo de répertoire =========================== dim_local v1de% , v2de% , v4de$ if item_index(1260)>0 dir_change item_index$(1260) v4de$=dir_current$ if file_exists(v4de$+""+caption$(1190)+caption$(1240))=0 file_move RC2$+""+caption$(1190)+caption$(1240)+"",v4de$+""+caption$(1190)+caption$(1240)+"" end_if clear 85 if count(80)>0 v1de%=1 while item_read$(80,v1de%)<>caption$(1190)+caption$(1240) v1de%=v1de%+1 end_while while item_read$(80,v1de%)<>chr$(165) item_add 85,item_read$(80,v1de%) v1de%=v1de%+1 end_while end_if item_delete 85,1 item_insert 85,1,caption$(1190)+caption$(1240) item_add 85,item_read$(80,v1de%) if file_exists("Mémophoto.txt")=1 file_open_append 1,"Mémophoto.txt" for v1de% = 1 to count(85) file_writeln 1,item_read$(85,v1de%) next v1de% file_close 1 else file_save 85,"Mémophoto.txt" end_if dir_change RC2$ clear 85 if count(80)>0 v1de%=1 while item_read$(80,v1de%)<>caption$(1190)+caption$(1240) item_add 85,item_read$(80,v1de%) v1de%=v1de%+1 end_while while item_read$(80,v1de%)<>chr$(165) v1de%=v1de%+1 end_while end_if if count(80)>v1de%+1 for v2de% = v1de%+1 to count(80) item_add 85,item_read$(80,v2de%) next v2de% end_if clear 80 if count(85)>0 for v1de% = 1 to count(85) item_add 80,item_read$(85,v1de%) next v1de% end_if file_save 80,"Mémophoto.txt" caption 1270,"Déplacement réussi" new() inactive 740 hide 530 formule(840) blanc() caption 1190,"" else caption 1270,"L'opération a échoué" end_if show 1270 dir_change RC2$ RPA%=1 end_sub
sub detruire() : rem Éliminer la photo du répertoire ========================== dim_local v1de% , v2de% caption 1270,"Attendez" for v1de% = 1120 to 1160 step 10 inactive v1de% next v1de% for v1de% = 780 to 830 step 10 inactive v1de% next v1de% show 1270 clear 85 file_delete caption$(1190)+caption$(1240) if count(80)>0 v1de%=1 while item_read$(80,v1de%)<>caption$(1190)+caption$(1240) item_add 85,item_read$(80,v1de%) v1de%=v1de%+1 end_while while item_read$(80,v1de%)<>chr$(165) v1de%=v1de%+1 end_while end_if if count(80)>v1de%+1 for v2de% = v1de%+1 to count(80) item_add 85,item_read$(80,v2de%) next v2de% end_if clear 80 if count(85)>0 for v1de% = 1 to count(85) item_add 80,item_read$(85,v1de%) next v1de% end_if file_save 80,"Mémophoto.txt" hide 530 inactive 740 efface() formule(840) vider() new() blanc() width 540,1000 height 540,700 color 540,255,255,255 caption 1270,"Opération réussie" caption 1190,"" for v1de% = 1120 to 1160 step 10 active v1de% next v1de% active 780 active 800 active 810 active 830 end_sub
sub disques(ql%) : rem Détecter les différents disques présents =============== dim_local v1di% rem ql% = Quelle Liste remplir clear ql% for v1di% = 65 to 90 if disk_exists(chr$(v1di%))=1 item_add ql%,chr$(v1di%)+":" end_if next v1di% end_sub
sub drd() : rem Installer le tableau Déplacer-Renomemr-Détruire =============== if item_read$(930,1)<>TCP$(1) inactive 720 inactive 760 inactive 770 show 1100 caption 1190,mid$(item_read$(930,1),9,len(item_read$(930,1))-12) caption 1240,right$(item_read$(930,1),4) hide 1270 end_if end_sub
sub efface() : rem Efface les marques rouges indice de choix ================== dim_local v1ef% for v1ef% = 1 to 12 color v1ef%*10+100,255,255,255 next v1ef% end_sub
sub enreg() : rem Enregister les modifications du texte ======================= dim_local v1en$ , v2en% , v3en% , v4en% dim_local iaen% : rem Indicateur d`allongement du bouton de texte inactive 820 v1en$=item_read$(90,RPA%+(NOZ%/10)-23) if caption$(830)="A&llonger" iaen%=1 trigger_click 830 end_if off_change 840 item_delete 840,1 item_insert 840,1,TCP$(1)+v1en$ on_change 840,change if count(80)>0 for v2en% = 1 to count(80) if item_read$(80,v2en%)=v1en$ v3en%=v2en% exit_for end_if next v2en% end_if if v3en%>0 clear 85 if v3en%>1 for v2en% = 1 to v3en%-1 item_add 85,item_read$(80,v2en%) next v2en% end_if for v2en% = v3en% to count(80) if item_read$(80,v2en%)=chr$(165) v4en%=v2en%+1 exit_for end_if next v2en% if v4en%<count(80) for v2en% = v4en% to count(80) item_add 85,item_read$(80,v2en%) next v2en% end_if clear 80 if count(85)>0 for v2en% = 1 to count(85) item_add 80,item_read$(85,v2en%) next v2en% end_if end_if item_add 80,v1en$ for v2en% = 2 to count(840) item_add 80,item_read$(840,v2en%) next v2en% item_add 80,chr$(165) file_save 80,"Mémophoto.txt" if iaen%=1 trigger_click 830 end_if IMT%=0 end_sub
sub format_bmp(npf1$) : rem Calcul des dimensions d`une photo bmp ============= dim_local va1% , vb1% , vc1% , vd1% : rem Variables à utilisation multiple rem npf1$ : Nom de la Photo pour le Format BMP npf1$=lower$(npf1$) if right$(npf1$,4)=".bmp" filebin_open_read 1,npf1$ filebin_position 1,18 filebin_read 1,va1% filebin_read 1,vb1% filebin_position 1,22 filebin_read 1,vc1% filebin_read 1,vd1% filebin_close 1 LA%=256*vb1%+va1% HA%=256*vd1%+vc1% end_if end_sub
sub format_jpg(npf2$) : rem Calcul des dimensions d`une photo jpg normale ===== dim_local vh2% , vi2% , vj2% : rem Variables à utilisation multiple dim_local va2% : rem Variables à utilisation multiple dim_local vta2% : rem Taille du fichier dim_local voc2%(10) : rem Les 10 premiers octets du fichier rem npf2$ : Nom de la Photo pour le Format JPG formule 2 (normale) npf2$=lower$(npf2$) if right$(npf2$,4)=".jpg" filebin_open_read 1,npf2$ vta2%=filebin_size(1) filebin_read 1,voc2%(1) filebin_read 1,voc2%(2) if voc2%(1)=255 and voc2%(2)=216 repeat repeat vh2%=vi2%+2+vj2% if vh2%>=vta2% PB%=1 filebin_close 1 exit_sub end_if filebin_position 1,vh2% for va2%=1 to 4 filebin_read 1,voc2%(va2%) next va2% if voc2%(1)<>255 PB%=1 filebin_close 1 exit_sub end_if vj2%=256*voc2%(3)+voc2%(4) vi2%=filebin_pos(1)-4 until voc2%(2)=192 or voc2%(2)=194 for va2%=1 to 5 filebin_read 1,voc2%(va2%) next va2% until voc2%(1)=8 HA%=256*voc2%(2)+voc2%(3) LA%=256*voc2%(4)+voc2%(5) else PB%=1 end_if filebin_close 1 end_if end_sub
sub format_pb(npf3$) : rem Plan B : Calcul dimensions d`une jpg anormale ====== dim_local va3% , vb3% , vc3% , vd3% : rem Variables à utilisation multiple rem npf3$ : Nom de la Photo pour le Format JPG formule 3 (anormale) npf3$=lower$(npf3$) picture 199 : rem Affichage provisoire de la photo hide 199 file_load 199,npf3$ file_save 199,"C:\Provy.bmp" delete 199 filebin_open_read 1,"C:\Provy.bmp" filebin_position 1,18 filebin_read 1,va3% filebin_read 1,vb3% filebin_position 1,22 filebin_read 1,vc3% filebin_read 1,vd3% filebin_close 1 file_delete "C:\Provy.bmp" LA%=256*vb3%+va3% HA%=256*vd3%+vc3% end_sub
sub formule(qt%) : rem Formulaire des commentaires à ajouter ================== dim_local v1fo% rem qt% = Quel Texto clear qt% for v1fo% = 1 to 5 item_add qt%,TCP$(v1fo%) next v1fo% end_sub
sub grille() : rem Dessin de la grille de repérage pour la photo zoomée ======= dim_local v1gr% , v2gr , v3gr% if caption$(790)="&Grille" caption 790,"Enle&ver" 2d_pen_width (LA2%/width(540))+1 v3gr%=left(530)-int(DL%/5) for v1gr% = 1 to 9 v2gr=DL%*v1gr%*(LA2%/width(540))+v3gr% 2d_line v2gr,1,v2gr,HA2% next v1gr% v3gr%=top(530)-int(DC%/5) for v1gr% = 1 to 7 v2gr=DC%*v1gr%*(HA2%/height(540))+v3gr% 2d_line 1,v2gr,LA2%,v2gr next v1gr% else caption 790,"&Grille" file_load 540,item_read$(90,RPA%+(NOZ%/10)-23) display end_if end_sub
sub haut() : rem Voir les photos situées plus haut ============================ inactive 760 inactive 770 inactive 780 inactive 800 inactive 810 inactive 830 if RPA%-12>=0 RPA%=RPA%-12 inactive 750 sortir() efface() affiche() formule(840) end_if NPC%=0 active 760 active 770 active 780 active 800 active 810 active 830 end_sub
sub index() : rem Activer la touche Avancer lorsqu`un répertoire est choisi === active 730 end_sub
key: : rem Gestion de la commande de clavier en recherche ===================== if key_down_code=13 chercher() end_if if key_down_code=33 if key_down_special=0 haut() end_if if key_down_special=2 avant() end_if end_if if key_down_code=34 if key_down_special=0 bas() end_if if key_down_special=2 apres() end_if end_if if show(900)=0 if count(710)>0 if key_down_code=36 set_focus 710 item_select 710,1 trigger_click 710 end_if end_if else if count(930)>0 if show(1100)=0 if key_down_code=36 set_focus 930 item_select 930,1 trigger_click 930 end_if else set_focus 1120 end_if end_if end_if if key_down_code=35 if key_down_special=2 drd() end_if end_if if key_down_code=222 if active(840)=1 set_focus 840 end_if end_if if show(530)=0 if show(900)=0 if key_down_code=186 if key_down_special=0 NPC%=NPC%+1 if NPC%>12 NPC%=1 end_if end_if if key_down_special=2 NPC%=NPC%-1 if NPC%<1 NPC%=12 end_if end_if trigger_click NPC%*10+220 end_if end_if end_if return
key2: if count(1260)>0 if key_down_code=36 set_focus 1260 item_select 1260,1 trigger_click 1260 end_if end_if return
sub new() : rem Vider le cadre de recherche pour une nouvelle recherche ======= caption 1050,"" width 920,1000 height 920,700 color 920,255,255,255 formule(930) text 960,"" if show(900)=1 if active(960)=1 set_focus 960 end_if end_if inactive 990 inactive 1000 end_sub
sub ok() : rem Application de l`action DRD choisie ============================ dim_local v1ok% for v1ok% = 1 to 3 if caption$(1180)=TB$(v1ok%+20) exit_for end_if next v1ok% select v1ok% case 1 : deplacer() case 2 : renommer() case 3 : detruire() end_select vider() end_sub
sub photorech(qp%) : rem Afficher la photo du résultat de la recherche ======== rem qp% = Quelle numéro de Photo dans la liste 70 if count(70)>0 NP$=item_read$(70,qp%) width 920,1000 height 920,700 color 920,255,255,255 if file_exists(NP$)=1 choisir() if RLH>RLHR if (width(910)-10)<LA% width 920,width(910)-10 height 920,(width(910)-10)/RLH else width 920,LA% height 920,HA% end_if else if (height(910)-10)<HA% height 920,height(910)-10 width 920,(height(910)-10)*RLH else height 920,HA% width 920,LA% end_if end_if file_load 920,NP$ end_if end_if end_sub
sub quelle() : rem Quelle action exécuter avec la fonction DRD ================ dim_local v1qu% if caption$(1190)<>"" caption 1180,caption$(number_click) show 1200 for v1qu% = 1210 to 1290 step 10 hide v1qu% next v1qu% hide 1275 if caption$(number_click)=TB$(22) for v1qu% = 1210 to 1240 step 10 show v1qu% next v1qu% text 1220,"" if show(1220)=1 if active(1220)=1 set_focus 1220 end_if end_if end_if if caption$(number_click)=TB$(21) show 1250 show 1260 show 1275 show 1280 show 1290 arbrebis() end_if end_if end_sub
sub quitter() : rem Quitter le programme ====================================== dim_local v1qu% if IMT%=1 v1qu%=message_confirmation_yes_no("Voulez-vous enregistrer vos modifications ?") if v1qu%=1 enreg() end_if end_if v1qu%=message_confirmation_yes_no("Quitter ce programme, confirmez-vous ?") if v1qu%=1 if IMT%=1 enreg() end_if terminate end_if end_sub
sub recul() : rem Reculer vers parents pour liste déplacer ==================== dim_local v1re$ , v2re$ v1re$=dir_current$ dir_change ".." v2re$=dir_current$ if v1re$=v2re$ disques(1260) else arbrebis() end_if end_sub
sub reculer() : rem Aller 1 cran plus loin vers les répertoires parents ======= dim_local v1re$ , v2re$ , v3re% inactive 720 inactive 730 inactive 750 inactive 760 inactive 770 inactive 780 inactive 800 inactive 810 inactive 830 vider() new() sortir() for v3re% = 230 to 340 step 10 off_click v3re% off_double_click v3re% next v3re% v1re$=dir_current$ dir_change ".." v2re$=dir_current$ charge() efface() formule(840) blanc() if v1re$=v2re$ disques(710) else arbre() end_if RPA%=1 caption 0,TP$+" - "+dir_current$+" - "+str$(RPA%)+"/"+str$(count(90)) for v3re% = 230 to 340 step 10 on_click v3re%,clic on_double_click v3re%,dblc next v3re% active 720 active 760 active 770 active 780 active 800 active 810 active 830 end_sub
sub renommer() : rem Renommer une photo ======================================= dim_local v1re$ , v2re$ , v3re% , v4re% v1re$=caption$(1190)+caption$(1240) v2re$=text$(1220)+caption$(1240) if text$(1220)<>"" file_rename v1re$,v2re$ item_delete 930,1 item_insert 930,1,TCP$(1)+v2re$ if item_read$(840,1)=TCP$(1)+v1re$ item_delete 840,1 item_insert 840,1,TCP$(1)+v2re$ IMT%=0 inactive 820 end_if for v4re% = 70 to 90 step 10 v3re%=0 if count(v4re%)>0 for v3re% = 1 to count(v4re%) if item_read$(v4re%,v3re%)=v1re$ exit_for end_if next v3re% if v3re%>0 item_delete v4re%,v3re% item_insert v4re%,v3re%,v2re$ end_if end_if next v4re% file_save 80,"Mémophoto.txt" caption 1270,"Opération réussie" caption 1190,text$(1220) else caption 1270,"L'opération a échoué" end_if show 1270 end_sub
sub sortir() : rem Sortir le volet de recherche =============================== if caption$(780)="Arrê&ter" trigger_click 780 end_if end_sub
sub texte(ql%) : rem Affichage du texte de la photo trouvée en recherche ====== dim_local v1te% , v2te$ , v3te% rem ql% = Quelle Ligne de la dliste 70 if count(70)>0 caption 1050,str$(ql%)+"/"+str$(count(70)) v2te$=item_read$(70,ql%) clear 930 if count(80)>0 for v1te% = 1 to count(80) if item_read$(80,v1te%)=v2te$ v3te%=v1te% exit_for end_if next v1te% end_if if v3te%>0 item_add 930,TCP$(1)+v2te$ for v1te% = v3te%+1 to count(80) if item_read$(80,v1te%)<>chr$(165) item_add 930,item_read$(80,v1te%) else exit_for end_if next v1te% end_if end_if end_sub
sub vider() : rem Vider le contenu du volet de Modification =================== dim_local v1vi% for v1vi% = 1200 to 1260 step 10 hide v1vi% next v1vi% caption 1180,"" hide 1275 hide 1280 hide 1290 end_sub
sub zoom() : rem Zoomer la photo choisie ====================================== if count(90)>0 inactive 720 inactive 730 inactive 750 inactive 760 inactive 770 sortir() NP$=item_read$(90,RPA%+(NOZ%/10)-23) choisir() LA2%=LA% : HA2%=HA% if RLH>RLHZ if (width(530)-10)<LA% width 540,width(530)-10 height 540,(width(530)-10)/RLH else width 540,LA% height 540,HA% end_if else if (height(530)-10)<HA% height 540,height(530)-10 width 540,(height(530)-10)*RLH else height 540,HA% width 540,LA% end_if end_if file_load 540,NP$ show 530 active 740 active 790 active 840 end_if end_sub
Comme d'habitude, le fonctionnement y est bien expliqué. | |
|