Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Un index des sources Panoramic Ven 3 Mai 2013 - 19:56 | |
| J'ai fait un petit outil qui peut servir d'index à un ensemble de fichiers source Panoramic. Le programme permet de créer des catégories (le nombre n'est pas limité). On peut affecter autant de sources que nécessaire à la catégorie de son choix. Le nombre de sources dans une catégorie n'est pas limité. Chaque source est déterminé par 3 éléments: - une chaîne de caractère servant de "nom" ou identifiant. Ce nom doit être différent de tous les autres noms enregistrés. - une chaîne de caractères donnant le chemin d'accès et le nom du fichier - une chaîne de caractères servant de commentaire. Toutes les informations sont mémorisées dans une base de données BDR (KGF.dll, KGF_SUB.bas et BDR.dll sont nécessaires). Le programme a un menu permettant de créer de nouvelles bases ou d'enregistrer une copie de la base ouverte vers une autre (sauvegarde, ...) A l'ouverture d'une base, la liste des catégories est chargée dans un combo. Lors d'un clic sur une catégorie, la liste des programmes de la catégorie est affichée dans une liste. Lors d'un clic dans la liste sur un des programmes, ses informations sont affichées. On peut créer, modifier, supprimer, mais surtout, on peut "Editer": ce bouton lance l'éditeur Panoramic en chargeant le source concerné et en se positionnant par défaut dans son dossier. Voici le code: - Code:
-
' indexe_de_programmes.bas
labels() constantes() variables() environnement() invisibles() menu() ecran()
end
close0: BDRclose() ' dll_off : return sortir: BDRclose() terminate
ouvrir: s$ = file_name$(no_open_bdr%) if s$="_" then return s$ = trim$(s$) if lower$(right$(s$,4))<>".hdr" then s$ = s$ + ".hdr" BDRopen(s$) base$ = "" if BDRopen=0 then base$ = s$ caption 0,"Actuel: "+file_extract_name$(base$) BDRfindname(categories$) if BDRfindname<0 then BDRadd(categories$,"") BDRfindname(membre$) if BDRfindname<0 then BDRadd(membre$,"") BDRfindname(panoramic$) if BDRfindname<0 then BDRadd(panoramic$,"") BDRfindname(panoramic$) ref% = BDRfindname BDRreadref(ref%,3) if BDRreadref$="*" inactive 0 no% = no% + 1 : form no% : no1% = no% : no_saisie% = no% width no%,400 : height no%,120 caption no%,"Configuration de Panoramic Editor" top no%,(screen_y-height(no%))/2 : left no%,(screen_x-width(no%))/2 border_small no% : SetCloseBox(handle(no_saisie%),0) no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,20 caption no%,"Panoramic Editor:" no% = no% + 1 : edit no% : parent no%,no1% : no_config% = no% top no%,40 : left no%,20 : width no%,300 no% = no% + 1 : button no% : parent no%,no1% top no%,40 : left no%,330 : width no%,30 : caption no%,"..." on_click no%,config else GetShortName(BDRreadref$) panoramic_editor$ = GetShortName$ end_if
charger_categories() activer() return
enregistrersous: s$ = file_name$(no_open_bdr%) if s$="_" then return s$ = trim$(s$) if lower$(right$(s$,4))<>".hdr" then s$ = s$ + ".hdr" if file_exists(s$)=1 if message_confirmation_yes_no("Cet indexe existe déjà. Remplacer ?")<>1 then return end_if BDRsaveas(s$) return
enregistrer: BDRsave() return
fermer: BDRclose() caption 0,"Actuel: " desactiver() effacer_tout() return charger_c: s$ = trim$(text$(no_categories%)) if s$="" then return convertir_chaine(0) clear no_programmes% BDRfindrelation(s$,membre$,"?",no_resultat%) if count(no_resultat%)>0 for i%=1 to count(no_resultat%) s$ = item_read$(no_resultat%,i%) if s$<>"*NO" convertir_chaine(1) item_add no_programmes%,s$ end_if next i% end_if effacer_p() return
creer_c: s$ = trim$(text$(no_categories%)) if s$="" then return convertir_chaine(0) BDRfindname(s$) if BDRfindname>0 BDRfindrelation("?",membre$,s$,no_resultat%) if count(no_resultat%)>0 s1$ = item_read$(no_resultat%,1) if s1$=categories$ s2$ = "Cette catégorie existe déjà !" else s2$ = "Ce nom est un article dans la catégorie "+s1$ end_if else s2$ = "Oups... Anomalie dans la base de données !" end_if message s2$ return end_if BDRadd(s$,"") BDRsetrelation(categories$,membre$,s$) charger_categories() return supprimer_c: s$ = trim$(text$(no_categories%)) if s$="" then return convertir_chaine(0) if count(no_programmes%)>0 message "La catégorie n'est pas vide !" return end_if BDRdeleterelation(categories$,membre$,s$) BDRfindname(s$) BDRdeleteref(BDRfindname) item_delete no_categories%,item_index(no_categories%) return
creer_p: s$ = trim$(text$(no_categories%)) if s$="" message "La catégorie manque !" return end_if s0$ = s$ convertir_chaine(0) BDRfindname(s$) if BDRfindname<0 message s0$+" n'est pas une catégorie !" return end_if BDRfindrelation(categories$,"?",s$,no_resultat%) i% = 0 if count(no_resultat%)>0 if item_read$(no_resultat%,1)=membre$ then i% = 1 end_if if i%=0 message s0$+" n'est pas une catégorie !" return end_if cat$ = s$ s$ = trim$(text$(no_p_nom%)) if s$="" message "Le nom du programme manque !" return end_if s0$ = s$ convertir_chaine(0) BDRfindname(s$) if BDRfindname>0 BDRfindrelation("?",membre$,s$,no_resultat%) if count(no_resultat%)>0 s1$ = item_read$(no_resultat%,1) if s1$=categories$ s2$ = "Ce nom est une catégorie !" else s$ = s1$ convertir_chaine(1) s2$ = "Cet article existe déjà dans la catégorie "+s$ end_if else s2$ = "Oups... Anomalie dans la base de données !" end_if message s2$ return end_if prog$ = s$ construire_donnees() BDRadd(prog$,dat$) BDRsetrelation(cat$,membre$,prog$) return modifier_p: verifier_existence_p() if err%=1 then return construire_donnees() BDRreplaceref(ref%,dat$) return supprimer_p: verifier_existence_p() if err%=1 then return BDRdeleterelation(cat$,membre$,prog$) BDRdeleteref(ref%) gosub charger_c return sel_programme: s$ = item_index$(no_programmes%) text no_p_nom%,s$ convertir_chaine(0) BDRfindname(s$) ref% = BDRfindname BDRreadref(ref%,3) if BDRreadref$="*" text no_cible%,"" text no_commentaire%,"" else KGFDelimitedTextExtract(BDRreadref$,",",1) s$ = KGFDelimitedTextExtract$ convertir_chaine(1) text no_p_cible%,s$ KGFDelimitedTextExtract(BDRreadref$,",",2) s$ = KGFDelimitedTextExtract$ convertir_chaine(1) text no_p_commentaire%,s$ end_if return config: s$ = file_name$(no_open_exe%) if s$="_" then return if file_exists(s$)=0 then return GetShortName(s$) s$ = GetShortName$ panoramic_editor$ = s$ convertir_chaine(0) BDRreplaceref(ref%,s$) hide no_saisie% active 0 return
chercher_cible: s$ = file_name$(no_open_bas%) if s$<>"_" then text no_p_cible%,s$ return
editer: s2$ = trim$(text$(no_p_cible%)) if s2$="" message "La cible manque !" return end_if s3$ = file_extract_path$(s2$) GetShortName(s2$) s2$ = GetShortName$ GetShortName(s3$) s3$ = GetShortName$ ExecuteProgram(panoramic_editor$,s2$,s3$) return configurer: BDRfindname(panoramic$) ref% = BDRfindname BDRreadref(ref%,3) if no_config%=0 no% = no% + 1 : form no% : no1% = no% : no_saisie% = no% width no%,400 : height no%,120 caption no%,"Configuration de Panoramic Editor" top no%,(screen_y-height(no%))/2 : left no%,(screen_x-width(no%))/2 border_small no% : SetCloseBox(handle(no_saisie%),0) no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,20 caption no%,"Panoramic Editor:" no% = no% + 1 : edit no% : parent no%,no1% : no_config% = no% top no%,40 : left no%,20 : width no%,300 no% = no% + 1 : button no% : parent no%,no1% top no%,40 : left no%,330 : width no%,30 : caption no%,"..." on_click no%,config end_if if BDRreadref$="*" text no_config%,"" else s$ = BDRreadref$ convertir_chaine(1) text no_config%,s$ end_if inactive 0 show no_saisie% return sub labels() label close0, ouvrir, enregistrersous, enregistrer, fermer, sortir label charger_c, creer_c, creer_p, chercher_cible, modifier_p, supprimer_p label sel_programme, config, editer, configurer, supprimer_c end_sub
sub constantes() dim KGF$ : KGF$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\KGF\KGF.dll" dim BDR$ : BDR$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\BDR\BDR.dll" dim categories$ : categories$ = "$categories" dim membre$ : membre$ = "$membre" dim panoramic$ : panoramic$ = "$panoramic" dim G$ : G$ = chr$(34) end_sub
sub variables() dim no%, no1%, no2%, no_open_bdr%, no_open_bas%, no_categories%, no_resultat% dim no_programmes%, no_p_nom%, no_p_cible%, no_p_commentaire% dim no_saisie%, no_config%, no_open_exe% dim s$, s0$, s1$, s2$, s3$, i%, ouvert%, base$, cat$, prog$, dat$, comm$ dim err%, ref%, panoramic_editor$ dim n_activations%, activations%(200) end_sub
sub environnement() on_close 0,close0 KGF_initialize(KGF$) BDRinitialize(BDR$) end_sub
sub invisibles() no% = no% + 1 : open_dialog no% : no_open_bdr% = no% filter no%,"Indexes|*.hdr" no% = no% + 1 : open_dialog no% : no_open_bas% = no% filter no%,"Sources|*.bas" no% = no% + 1 : open_dialog no% : no_open_exe% = no% filter no%,"Editor|*.exe" no% = no% + 1 : memo no% : no_resultat% = no% : hide no% end_sub
sub menu() no% = no% + 1 : main_menu no% : no1% = no% no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% caption no%,"Fichier" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Ouvrir" : on_click no%,ouvrir no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Enregistrer sous" : on_click no%,enregistrersous no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Enregistrer" : on_click no%,enregistrer no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Fermer" : on_click no%,fermer no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"-" no% = no% + 1 : sub_menu no% : parent no%,no2% : inactive no% caption no%,"Configurer" : on_click no%,configurer n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"-" no% = no% + 1 : sub_menu no% : parent no%,no2% caption no%,"Sortir" : on_click no%,sortir end_sub
sub ecran() full_space 0 no% = no% + 1 : alpha no% : top no%,20 : left no%,20 caption no%,"Catégories:" no% = no% + 1 : combo no% : no_categories% = no% : inactive no% top no%,40 : left no%,20 : width no%,200 : sort_on no% on_click no%,charger_c : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"Créer" on_click no%,creer_c : inactive no% top no%,40 : left no%,230 : width no%,60 n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"Supprimer" on_click no%,supprimer_c : inactive no% top no%,40 : left no%,300 : width no%,60 n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : list no% : no_programmes% = no% on_click no%,sel_programme top no%,100 : left no%,20 : width no%,400 : height no%,400 n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : alpha no% : top no%,100 : left no%,440 caption no%,"Programme:" no% = no% + 1 : edit no% : no_p_nom% = no% top no%,120 : left no%,440 : width no%,400 : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : top no%,120 : left no%,850 caption no%,"Editer" : on_click no%,editer : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : alpha no% : top no%,150 : left no%,440 caption no%,"Cible:" no% = no% + 1 : edit no% : no_p_cible% = no% top no%,170 : left no%,440 : width no%,400 : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"..." top no%,168 : left no%,840 : width no%,25 on_click no%,chercher_cible : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : alpha no% : top no%,200 : left no%,440 caption no%,"Commentaire:" no% = no% + 1 : edit no% : no_p_commentaire% = no% top no%,220 : left no%,440 : width no%,400 : inactive no% n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"Créer" on_click no%,creer_p : inactive no% top no%,250 : left no%,440 : width no%,60 n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"Modifier" on_click no%,modifier_p : inactive no% top no%,250 : left no%,510 : width no%,60 n_activations% = n_activations% + 1 activations%(n_activations%) = no% no% = no% + 1 : button no% : caption no%,"Supprimer" on_click no%,supprimer_p : inactive no% top no%,250 : left no%,580 : width no%,60 n_activations% = n_activations% + 1 activations%(n_activations%) = no%
end_sub
sub charger_categories() clear no_categories% BDRfindrelation(categories$,membre$,"?",no_resultat%) if count(no_resultat%)>0 for i%=1 to count(no_resultat%) s$ = item_read$(no_resultat%,i%) if s$<>"*NO" convertir_chaine(1) item_add no_categories%,s$ end_if next i% end_if end_sub
sub activer() for i%=1 to n_activations% active activations%(i%) next i% end_sub
sub desactiver() for i%=1 to n_activations% inactive activations%(i%) next i% end_sub
sub convertir_chaine(sens%) dim_local i% select sens% case 0 for i%=1 to len(s$) if mid$(s$,i%,1)=G$ then s$ = left$(s$,i%-1) + "²" + mid$(s$,i%+1,len(s$)) if mid$(s$,i%,1)=" " then s$ = left$(s$,i%-1) + "°" + mid$(s$,i%+1,len(s$)) next i% case 1 for i%=1 to len(s$) if mid$(s$,i%,1)="²" then s$ = left$(s$,i%-1) + G$ + mid$(s$,i%+1,len(s$)) if mid$(s$,i%,1)="°" then s$ = left$(s$,i%-1) + " " + mid$(s$,i%+1,len(s$)) next i% end_select end_sub
sub verifier_existence_p() err% = 1 s$ = trim$(text$(no_categories%)) if s$="" message "La catégorie manque !" exit_sub end_if s0$ = s$ convertir_chaine(0) BDRfindname(s$) if BDRfindname<0 message s0$+" n'est pas une catégorie !" exit_sub end_if BDRfindrelation(categories$,"?",s$,no_resultat%) i% = 0 if count(no_resultat%)>0 if item_read$(no_resultat%,1)=membre$ then i% = 1 end_if if i%=0 message s0$+" n'est pas une catégorie !" return end_if cat$ = s$
s$ = trim$(text$(no_p_nom%)) if s$="" message "Le nom du programme manque !" exit_sub end_if s0$ = s$ convertir_chaine(0) BDRfindname(s$) if BDRfindname>0 BDRfindrelation("?",membre$,s$,no_resultat%) if count(no_resultat%)>0 s1$ = item_read$(no_resultat%,1) if s1$=categories$ s2$ = "Ce nom est une catégorie !" else if s1$<>cat$ s$ = s1$ convertir_chaine(1) s2$ "Ce programme est dans la catégorie "+s$ end_if end_if else s2$ = "Oups... Anomalie dans la base de données !" end_if if len(s2$)>0 message s2$ exit_sub end_if else message "Ce nom n'existe pas !" exit_sub end_if prog$ = s$ err% = 0 end_sub
sub construire_donnees() s$ = trim$(text$(no_p_cible%)) if len(s$)>0 then convertir_chaine(0) dat$ = s$+"," s$ = trim$(text$(no_p_commentaire%)) if len(s$)>0 then convertir_chaine(0) dat$ = dat$ + s$ end_sub
sub effacer_tout() clear no_categories% clear no_programmes% effacer_p() end_sub
sub effacer_p() text no_p_nom%,"" text no_p_cible%,"" text no_p_commentaire%,"" end_sub
#INCLUDE "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\KGF\KGF_SUB.bas"
Dernière édition par Klaus le Ven 3 Mai 2013 - 23:19, édité 1 fois | |
|