FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» mise a jour calculatrice
par JL35 Aujourd'hui à 14:14

» [solved] 3D_LINE How to ?
par papydall Aujourd'hui à 6:51

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» Convertisseur de base 10 de 2 à 36
par gigi75 Sam 14 Oct 2017 - 21:54

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

» Mise à jour PANOMAND
par jean_debord Mar 26 Sep 2017 - 11:33

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Immortaliser les photos de famille

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
jjn4

avatar

Nombre de messages : 1601
Date d'inscription : 13/09/2009

MessageSujet: Immortaliser les photos de famille   Dim 24 Sep 2017 - 16: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.
Sleep
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...
What a Face
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é.
farao alien
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
RMont



Nombre de messages : 168
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Immortaliser les photos de famille   Dim 24 Sep 2017 - 20:40


bonjour a tous.
pour jjn4.
je pense que c'est une bonne idée ton prg mais:
je lance ton code ,mais que faire ensuite ?
je prends comme exemple le chemin ou son rangées mes photos;
- documents/ carte 32 gigas /.../.../.../..../..../p100995jpg. là j'ai mes photos.
donc question:comment je fais pour charger et annoter cette 1er photo.
faut-il taper tout ce chemin ?
.je vais me déconnecter .je reprends demain vers18h.
bonne soirée
rmont
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5032
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Immortaliser les photos de famille   Dim 24 Sep 2017 - 21:24

Bonsoir à tous,

@JJN4,
J'ai testé ton programme qui marche bien.
j'ai retrouvé le fichier txt qui porte le N° de le photo sélectionnée dans le répertoire ou se trouve cette photo.
Bon, c'est pas mal, mais j'ai actuellement 5820 fichiers dans "mes images", imagine si je dois toutes les annoter silent
Je sais, on peut toujours le faire à partir de maintenant et reprendre certaines photos anciennes qui valent la peine d'un commentaire...

L'idée est bonne, surtout pour ceux qui veulent transmettre à leur descendance. Very Happy

@Rmont
Pour trouver le chemin d'une photo c'est assez simple, il suffit de se promener dans l'arborescence avec les 2 boutons du haut nommés "Reculer" et "Avancer"

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1601
Date d'inscription : 13/09/2009

MessageSujet: +++   Lun 25 Sep 2017 - 18:29

@ RMont :
- (1) Pour naviguer dans les répertoires de photos :
Reculer ou avancer
(avant d'avancer, il faut d'abord cliquer sur un répertoire)(ou double-cliquer)
- (2) Pour annoter une photo :
Cliquer sur la photo puis sur Zoomer (ou double-cliquer sur la photo)
- (3) Pour enregistrer les annotations :
Cliquer sur « Enregistrer »
- (4) Pour passer à une autre photo :
Cliquer sur « Catalogue » (ou double-cliquer sur la photo) puis refaire comme (2)
- etc...

@ Jean Claude :
Si tu as un nombre considérable de photos,
tu n'es pas obligé de les annoter toutes
ni de le faire en une seule fois.
Comme a dit Claudel :
Ce n'est point le temps qui manque,
c'est nous qui lui manquons.
Ouuuuhhhh, là là !
Mad alien Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Contenu sponsorisé




MessageSujet: Re: Immortaliser les photos de famille   

Revenir en haut Aller en bas
 
Immortaliser les photos de famille
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Album Photos de famille
» Hébergement gratuit images photos fichiers
» Nadége et sa famille nombreuse
» Neuf conseils pour réussir vos photos
» La famille élastique...

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: