FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Lanceur de tâches (bis) Emptypar Marc Aujourd'hui à 11:34

» PANORAMIC V 1
Lanceur de tâches (bis) Emptypar papydall Aujourd'hui à 3:22

» select intégrés [résolu]
Lanceur de tâches (bis) Emptypar jjn4 Hier à 17:00

» number_mouse_up
Lanceur de tâches (bis) Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
Lanceur de tâches (bis) Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
Lanceur de tâches (bis) Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
Lanceur de tâches (bis) Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
Lanceur de tâches (bis) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Lanceur de tâches (bis) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Lanceur de tâches (bis) Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Lanceur de tâches (bis) Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Lanceur de tâches (bis) Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Lanceur de tâches (bis) Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Lanceur de tâches (bis) Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Lanceur de tâches (bis) Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

 Lanceur de tâches (bis)

Aller en bas 
4 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Lanceur de tâches (bis) Empty
MessageSujet: Lanceur de tâches (bis)   Lanceur de tâches (bis) EmptyDim 18 Aoû 2013 - 15:11

J'avais proposé dans 'Présentation et bavardages' un petit lanceur de tâches freeware que j'avais trouvé bien sympathique et pratique: exego.
Ça m'a donné envie de faire la même chose, mais en Panoramic, de façon que chacun puisse adapter le programme à ses besoins et ses envies.

Côté visuel j'ai copié sur le précédent, donc l'aspect est très semblable. Il n'y a peut-être pas toutes les fonctionnalités du précédent, mais il me semble que c'est déjà suffisant, et de plus rien n'empêche de rajouter ce qu'on veut, ayant le source à disposition.
Ça donne ceci:
Lanceur de tâches (bis) Lanceur
Tous les paramètres (groupes de tâches, et tâches par groupe) sont contenus dans un seul fichier texte: Fictach.txt, le plus fastidieux étant le garnissage initial de ce fichier, voir l'Aide pour l'utilisation.

Chaque tâche peut avoir sa propre icône (sinon un simple carré est affiché), l'affichage de cette icône étant un peu délicat, j'ai sous-traité la conversion à IrfanView en attendant de maîtriser les fonctions adéquates de KGF.dll.

Voici donc:
Code:

' Lanceur de tâches
LABEL Quit, Clicpic, Clicout, Aftach, Afcase, Surveil, Proprietes, Annul, Recfic
LABEL Lirfic, Ecrfic, Valider, Valgrou, Micone, Copicol, Copicols, Extract, Edf
LABEL Savrest, Help
DIM f$, rta$, fta$, sta$, wl%, wc%, hl%, x%, y%, c%, r%, nc%, nr%, ntm%, ntg%
DIM rico$, out$, a$, b$, scl$, i%, j%, k%, ru%, rup%, nt%, sru%, snt%, res%, kgf$
DIM w0%, h0%, hto%, iv$

' ========================= CHEMINS  A  AJUSTER ================================
rta$ = "C:\LANCEUR": ' Répertoire contenant les données du programme
kgf$ = "C:\PANORAMIC\KLAUS\DLLs\KGF.dll": ' Chemin de KGF.dll
iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe ": ' Chemin de IrfanView
' ========================== CHEMINS RÉSULTANTS ===============================
fta$ = rta$ + "\Fictach.txt": ' Fichier des tâches, groupées par rubriques
sta$ = rta$ + "\Fictach.sav": ' Sauvegarde du fichier ci-dessus
rico$ = rta$ + "\ICONES": ' répertoire de stockage des icônes spécifiques
' ==============================================================================
nc% = 4: nr% = 5: ntm% = nc%*nr%: ' nb colonnes, nb rangées, nb maxi tâches
wl% = 120: ' largeur colonne gauche (rubriques)
wc% = 80: ' dimensions des cases tâches (carrées, WxH)
hl% = 20: ' hauteur d'une case rubrique, à gauche
hto% = nr%*wc%: ' hauteur totale zone des tâches
ntg% = INT(hto%/hl%): ' nombre total de groupes (défini par la hauteur totale)
DIM rub$(ntg%)
DIM ta$(ntg%,ntm%), ic$(ntg%,ntm%), nm$(ntg%,ntm%), rp$(ntg%,ntm%),ico$,nom$,rep$

w0% = wl% + wc%*nc% + 16
h0% = ntg% * hl% + 54
WIDTH 0,w0%: HEIGHT 0,h0%: BORDER_SMALL 0: CAPTION 0," Lanceur de tâches"
COLOR 0,160,190,220
PICTURE 1: FULL_SPACE 1: HEIGHT 1,HEIGHT(1)-20: ON_CLICK 1,Clicpic
COLOR 1,240,240,240: PRINT_TARGET_IS 1
FONT_NAME 1,"Calibri": FONT_SIZE 1,10: FONT_BOLD 1
2D_TARGET_IS 1: 2D_PEN_COLOR 128,128,128

2D_LINE wl%,0,wl%,HEIGHT(1)
FOR x% = wl%+wc% TO WIDTH(1)-10 STEP wc%
    2D_LINE x%,0,x%,HEIGHT(1)
NEXT x%
FOR y% = wc% TO HEIGHT(1) STEP wc%
    2D_LINE wl%,y%,WIDTH(1),y%
NEXT y%

FOR y% = hl% TO HEIGHT(1) STEP hl%
  2D_LINE 0,y%,wl%,y%
NEXT y%
GOSUB Lirfic: ' lire le fichier des tâches dans les tableaux
rup% = -1
FORM 10: TOP 10,150: LEFT 10,0: WIDTH 10,WIDTH(0): HEIGHT 10,185: HIDE 10
BORDER_SMALL 10: CAPTION 10, "Propriétés du raccourci" : COLOR 10,128,255,255
ALPHA 11: PARENT 11,10: TOP 11,10: LEFT 11,5: CAPTION 11,"Application"
EDIT 12: PARENT 12,10: TOP 12,TOP(11)-3: LEFT 12,100: WIDTH 12,330
ALPHA 13: PARENT 13,10: TOP 13,TOP(11)+25: LEFT 13,5: CAPTION 13,"Icône"
EDIT 14: PARENT 14,10: TOP 14,TOP(13)-3: LEFT 14,LEFT(12): WIDTH 14,WIDTH(12)-20
ON_CLICK 14,Micone
ALPHA 15: PARENT 15,10: TOP 15,TOP(13)+25: LEFT 15,5: CAPTION 15,"Démarrer en"
EDIT 16: PARENT 16,10: TOP 16,TOP(15)-3: LEFT 16,LEFT(12): WIDTH 16,WIDTH(12)
ALPHA 17: PARENT 17,10: TOP 17,TOP(15)+25: LEFT 17,5: CAPTION 17,"Nom du raccourci"
EDIT 18: PARENT 18,10: TOP 18,TOP(17)-3: LEFT 18,LEFT(12): WIDTH 18,WIDTH(12)
BUTTON 19: PARENT 19,10: TOP 19,TOP(18)+30: LEFT 19,350: CAPTION 19,"Annuler"
ON_CLICK 19, Annul
BUTTON 20: PARENT 20,10: TOP 20,TOP(19): LEFT 20,LEFT(19)-80: CAPTION 20,"Valider"
BUTTON 21: PARENT 21,10: TOP 21,TOP(12)-2: WIDTH 21,25: LEFT 21,LEFT(12)-28
BUTTON 22: PARENT 22,10: TOP 22,TOP(14)-2: WIDTH 22,25: LEFT 22,LEFT(21)
ON_CLICK 20, Valider
FOR i% = 21 TO 22: FONT_BOLD i%: CAPTION i%,"...": ON_CLICK i%, Recfic: NEXT i%
BUTTON 25: PARENT 25,10: TOP 25,TOP(22): WIDTH 25,27: LEFT 25,WIDTH(10)-44
CAPTION 25,"Extr.": ON_CLICK 25,Extract
BUTTON 31: PARENT 31,10: TOP 31,TOP(19): LEFT 31,5: HEIGHT 31,18: CAPTION 31,"Copier"
BUTTON 32: PARENT 32,10: TOP 32,TOP(31)+18: LEFT 32,LEFT(31): HEIGHT 32,18
CAPTION 32,"Coller"
BUTTON 33: PARENT 33,10: TOP 33,TOP(31): LEFT 33,LEFT(31)+80: HEIGHT 33,18
CAPTION 33,"Insérer"
BUTTON 34: PARENT 34,10: TOP 34,TOP(32): LEFT 34,LEFT(33): HEIGHT 34,18
CAPTION 34,"Supprimer"
FOR i% = 31 TO 34: ON_CLICK i%, Copicol: NEXT i%

FORM 40: TOP 40,150: LEFT 40,0: WIDTH 40,WIDTH(0): HEIGHT 40,110: HIDE 40
BORDER_SMALL 40: CAPTION 40,"Propriétés du groupe": COLOR 40,128,255,255
ALPHA 41: PARENT 41,40: TOP 41,10: LEFT 41,5: CAPTION 41,"Nom du groupe"
EDIT 42: PARENT 42,40: TOP 42,TOP(41)-3: LEFT 42,100: WIDTH 42,330
BUTTON 49: PARENT 49,40: TOP 49,45: LEFT 49,350: CAPTION 49,"Annuler"
ON_CLICK 49, Annul
BUTTON 50: PARENT 50,40: TOP 50,TOP(49): LEFT 50,LEFT(49)-80: CAPTION 50,"Valider"
ON_CLICK 50, Valgrou
BUTTON 51: PARENT 51,40: TOP 51,40: LEFT 51,5: HEIGHT 51,18: CAPTION 51,"Copier"
BUTTON 52: PARENT 52,40: TOP 52,TOP(51)+18: LEFT 52,LEFT(51): HEIGHT 52,18
CAPTION 52,"Coller"
BUTTON 53: PARENT 53,40: TOP 53,TOP(51): LEFT 53,LEFT(51)+80: HEIGHT 53,18
CAPTION 53,"Insérer"
BUTTON 54: PARENT 54,40: TOP 54,TOP(52): LEFT 54,LEFT(53): HEIGHT 54,18
CAPTION 54,"Supprimer"
FOR i% = 51 TO 54: ON_CLICK i%, Copicol: NEXT i%

BUTTON 60: HEIGHT 60,19: TOP 60,TOP(1)+HEIGHT(1): LEFT 60,2: CAPTION 60,"Edit fichier"
WIDTH 60,60: ON_CLICK 60, Edf
BUTTON 61: HEIGHT 61,19: TOP 61,TOP(60): LEFT 61,65: CAPTION 61,"Sauveg. fichier"
WIDTH 61,80: ON_CLICK 61, Savrest
BUTTON 62: HEIGHT 62,19: TOP 62,TOP(60): LEFT 62,150: CAPTION 62,"Restore fichier"
WIDTH 62,80: ON_CLICK 62, Savrest
BUTTON 63: HEIGHT 63,HEIGHT(60): TOP 63,TOP(60): LEFT 63,235: CAPTION 63,"Aide"
WIDTH 63,50: ON_CLICK 63, Help
BUTTON 64: HEIGHT 64,HEIGHT(60): TOP 64,TOP(60): WIDTH 64,50: LEFT 64,WIDTH(0)-68
CAPTION 64,"Quitter": ON_CLICK 64, Quit

MEMO 96: WIDTH 96,400: HIDE 96
IMAGE 97
OPEN_DIALOG 98

' ======================= CRÉATION DES STRUCTURES MANQUANTES ===================
IF DIR_EXISTS(rta$) = 0 THEN DIR_MAKE rta$
IF DIR_EXISTS(rico$) = 0 THEN DIR_MAKE rico$
' ===== Fichier texte des groupes de tâches/tâches
IF FILE_EXISTS(fta$) = 0
    ' fichier initial, vide
    FILE_OPEN_WRITE 1,fta$
    FILE_WRITELN 1, "***** Fichier des tâches à lancer": ' en-tête
    FILE_WRITELN 1, "***** Lignes R: rubriques"
    FILE_WRITELN 1, "***** Lignes T: tâches, I: icônes, N: légendes, D: répertoire de travail"
    FOR j% = 1 TO ntg%
        FILE_WRITELN 1,"* "+STRING$(70,"=")
        FILE_WRITELN 1,"R: " + rub$(ru%)
        FILE_WRITELN 1, "* " + STRING$(70,"=")
        FOR i% = 1 TO ntm%
            FILE_WRITELN 1, "T: "
            FILE_WRITELN 1, "I: "
            FILE_WRITELN 1, "N: "
            FILE_WRITELN 1, "D: "
            FILE_WRITELN 1, "*"
        NEXT i%
    NEXT j%
    FILE_CLOSE 1
END_IF
' ==============================================================================

DLL_ON kgf$
TIMER 99: TIMER_INTERVAL 99,300: ON_TIMER 99,Surveil
' ==============================================================================
END: '                            E N D
' ==============================================================================
Quit:
TERMINATE
' ==============================================================================
Clicpic:
TIMER_OFF 99
HIDE 10
x% = MOUSE_X_LEFT_DOWN(1): y% = MOUSE_Y_LEFT_DOWN(1)
IF x% < wl%
    ' clic à gauche (rubriques)
    ru% = 1 + INT(y%/hl%): ' rubrique cliquée
    FONT_SIZE 1,10
    IF rup% <> -1
        y% = 1+(rup%-1)*hl%
        2D_FILL_COLOR 240,240,240: 2D_PEN_COLOR 240,240,240
        2D_RECTANGLE 0,y%,wl%-1,y%+hl%-2
        PRINT_LOCATE 2,y%+3: PRINT rub$(rup%)
    END_IF
    y% = 1+(ru%-1)*hl%
    2D_FILL_COLOR 255,164,255: 2D_PEN_COLOR 255,164,255
    2D_RECTANGLE 0,y%,wl%-1,y%+hl%-2: ' coloration rubrique cliquée
    PRINT_LOCATE 2,y%+3: PRINT rub$(ru%)
    GOSUB Aftach
    rup% = ru%
ELSE
    ' clic gauche sur un module cases de droite: ' lancement de l'application
    c% = INT((x%-wl%)/wc%): r% = INT(y%/wc%): ' colonne et rangée cliqués
    nt% = 1 + nc%*r% + c%: ' n° de tâche
    a$ = ta$(ru%,nt%)
    IF a$ = "" THEN GOTO Proprietes: ' clic sur une case vide
    IF rp$(ru%,nt%) <> "" THEN DIR_CHANGE rp$(ru%,nt%): ' répertoire de travail
    EXECUTE a$: TERMINATE
END_IF
Clicout:
TIMER_ON 99
RETURN
' ==============================================================================
Aftach:
' Affichage des tâches de la rubrique ru%
' 1) nettoyage des cases
2D_PEN_COLOR 255,255,200: 2D_FILl_COLOR 240,240,240
2D_RECTANGLE wl%+1,0,WIDTH(1),HEIGHT(1)
2D_PEN_COLOR 128,128,128
FOR x% = wl%+wc% TO WIDTH(1)-10 STEP wc%
    2D_LINE x%,0,x%,HEIGHT(1)
NEXT x%
FOR y% = wc% TO HEIGHT(1)-10 STEP wc%
    2D_LINE wl%,y%,WIDTH(1),y%
NEXT y%
' 2) affichage des tâches
FONT_SIZE 1,8: 2D_FILL_COLOR 240,240,240
FOR nt% = 1 TO ntm%
    IF ta$(ru%,nt%) <> "" THEN GOSUB Afcase
NEXT nt%
RETURN
' ==============================================================================
Afcase:
' affichage de la case correspondant à la tâche n° nt% de la rubrique ru%
FONT_SIZE 1,8: 2D_FILL_COLOR 240,240,240
ico$ = ic$(ru%,nt%): nom$ = nm$(ru%,nt%)
r% = INT((nt%-1)/nc%): c% = nt%-nc%*r%-1: ' rangée et colonne (0 à n)
x% = wl%+wc%*c%: y% = wc%*r%: ' coordonnées de la case (haut gauche)
2D_PEN_COLOR 240,240,240: 2D_FILL_COLOR 240,240,240
2D_RECTANGLE x%+1,y%+1,x%+wc%-1,y%+wc%-1: ' nettoyage de la case
j% = TEXT_WIDTH(nom$,1)
IF j% > wc%
    a$ = ""
    FOR i% = LEN(nom$) TO 1 STEP -1
        IF MID$(nom$, i%, 1)=" " THEN a$=MID$(nom$,i%+1,50): nom$=LEFT$(nom$,i%-1): EXIT_FOR
    NEXT i%
    j% = TEXT_WIDTH(nom$,1): PRINT_LOCATE x%+(wc%-j%)/2,y%+wc%-30: PRINT nom$
    j% = TEXT_WIDTH(a$,1): PRINT_LOCATE x%+(wc%-j%)/2,y%+wc%-18: PRINT a$
ELSE
    PRINT_LOCATE x%+(wc%-j%)/2,y%+wc%-25: PRINT nom$: ' centré
END_IF
a$ = UPPER$(RIGHT$(ico$,3))
IF a$ = "ICO" OR a$ = "BMP" OR a$ = "JPG" OR a$ = "PNG"
    ' res% = DLL_CALL1("LoadAnyImageFile",ADR(ico$)): ' -> clipboard
    ' res% = DLL_CALL2("ResizePicture",32,32): ' resize en 32x32
    EXECUTE_WAIT iv$ + ico$ + " /resize=(32,32) /clipcopy /killmesoftly"
    CLIPBOARD_PASTE 97: 2D_IMAGE_PASTE 97,x%+24,y%+10
ELSE
    2d_Pen_Color 128,128,128
    2d_Fill_Color 255,255,200: 2d_Rectangle x%+24,y%+10,x%+56,y%+42: ' icône 32x32
    2d_Fill_Color 240,240,240
END_IF
RETURN
' ==============================================================================
Surveil:
' Surveillance du clic droit sur une case (propriétés ou ajout)
IF MOUSE_RIGHT_DOWN(1) = 0 THEN RETURN
HIDE 10
x% = MOUSE_X_RIGHT_DOWN(1): IF x% = 0 THEN RETURN: ' pas de clic droit
y% = MOUSE_Y_RIGHT_DOWN(1)
TIMER_OFF 99
IF x% < wl%
    ' clic droit dans la liste des rubriques
    ru% = 1 + INT(y%/hl%): ' rubrique cliquée
    FONT_SIZE 1,10
    IF rup% <> -1
        y% = 1+(rup%-1)*hl%: ' restore la rubrique précédente
        2D_FILL_COLOR 240,240,240: 2D_PEN_COLOR 240,240,240
        2D_RECTANGLE 0,y%,wl%-1,y%+hl%-2
        PRINT_LOCATE 2,y%+3: PRINT rub$(rup%)
    END_IF
    y% = 1+(ru%-1)*hl%
    2D_FILL_COLOR 255,164,255: 2D_PEN_COLOR 255,164,255
    2D_RECTANGLE 0,y%,wl%-1,y%+hl%-2
    TEXT 42, rub$(ru%)
    IF rub$(ru%) <> ""
        PRINT_LOCATE 2,y%+3: PRINT rub$(ru%)
        GOSUB Aftach
    END_IF
    rup% = ru%
    CAPTION 40,"Propriétés du groupe :  " + rub$(ru%)
    SHOW 40
    RETURN
END_IF
' ici, clic droit dans les cases de tâches
c% = INT((x%-wl%)/wc%): r% = INT(y%/wc%): ' colonne et rangée cliqués
nt% = 1 + nc%*r% + c%: ' n° de tâche

Proprietes:
' affichage des caractéristiques de la case
a$ = "Groupe: " + rub$(ru%)+", Raccourci Col= "+STR$(c%+1)+"  Rang= "+STR$(r%+1)
a$ = a$ + "  Tâche n° " + STR$(nt%)+"  '"+nm$(ru%,nt%)+"'"
CAPTION 10, a$
a$ = ta$(ru%,nt%)
IF a$ = "": ' case vide
    ico$ = "": nom$ = "": rep$ = ""
ELSE
    ico$ = ic$(ru%,nt%)
    nom$ = nm$(ru%,nt%): rep$ = rp$(ru%,nt%)
END_IF
TEXT 12, a$: TEXT 14, ico$: TEXT 16, rep$: TEXT 18, nom$
HIDE 25: IF UPPER$(RIGHT$(ico$,4))<>".ICO" THEN SHOW 25
SHOW 10: TO_FOREGROUND 10
RETURN
' ==============================================================================
Annul:
HIDE 10: HIDE 40

TIMER_ON 99
RETURN
' ==============================================================================
Recfic:
i% = NUMBER_CLICK
f$ = FILE_NAME$(98): IF LEN(f$) < 4 THEN RETURN
IF i% = 21
    TEXT 12, f$
ELSE
    TEXT 14, f$
END_IF
RETURN
' ==============================================================================
Lirfic:
' Lecture du fichier des tâches dans les tableaux
ru% = 0
FILE_OPEN_READ 1, fta$
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$
    IF a$ <> "" AND LEN(a$) > 1 AND LEFT$(a$, 1) <> "*"
        IF LEFT$(a$, 2) = "R:": ' c'est une rubrique
            a$ = TRIM$(MID$(a$,3,LEN(a$)-2))
            ru% = ru% + 1: rub$(ru%) = a$
            nt% = 0
        ELSE
            IF LEFT$(a$,2) = "T:": ' c'est une tâche
                nt% = nt% + 1
                ta$(ru%,nt%) = TRIM$(MID$(a$,3,LEN(a$)-2))
            ELSE
                IF LEFT$(a$,2) = "I:": ' icône de la tâche
                  ic$(ru%,nt%) = TRIM$(MID$(a$,3,LEN(a$)-2))
                ELSE
                    IF LEFT$(a$,2) = "N:": ' nom de la tâche
                        nm$(ru%,nt%) = TRIM$(MID$(a$,3,LEN(a$)-2))
                    ELSE
                        IF LEFT$(a$,2) = "D:": ' répertoire de lancement
                            rp$(ru%,nt%) = TRIM$(MID$(a$,3,LEN(a$)-2))
                        END_IF
                    END_IF
                END_IF
            END_IF
        END_IF
    END_IF
END_WHILE
FILE_CLOSE 1
' affichage de la liste des groupes de tâches à gauche
2D_PEN_COLOR 240,240,240: 2D_FILL_COLOR 240,240,240
FOR y% = 0 TO HEIGHT(1) STEP hl%: ' nettoyage à gauche
    2D_RECTANGLE 0,y%+1,wl%-1,y%+hl%
NEXT y%
FONT_NAME 1,"Calibri": FONT_SIZE 1,10: FONT_BOLD 1
y% = 3
FOR ru% = 1 TO ntg%
    PRINT_LOCATE 2,y%: PRINT rub$(ru%): y% = y% + hl%
NEXT ru%
RETURN
' ==============================================================================
Ecrfic:
' Réécriture des tableaux dans le fichier des tâches
sru% = ru%: snt% = nt%
FILE_OPEN_WRITE 1, fta$
FILE_WRITELN 1, "***** Fichier des tâches à lancer": ' en-tête
FILE_WRITELN 1, "***** Lignes R: rubriques"
FILE_WRITELN 1, "***** Lignes T: tâches, I: icônes, N: légendes, D: répertoire de travail"
FOR ru% = 1 TO ntg%
    FILE_WRITELN 1, "* " + STRING$(70,"=")
    FILE_WRITELN 1,"R: " + rub$(ru%)
    FILE_WRITELN 1, "* " + STRING$(70,"=")
    FOR nt% = 1 TO ntm%
        FILE_WRITELN 1, "T: "+ta$(ru%,nt%)
        FILE_WRITELN 1, "I: "+ic$(ru%,nt%)
        FILE_WRITELN 1, "N: "+nm$(ru%,nt%)
        FILE_WRITELN 1, "D: "+rp$(ru%,nt%)
        FILE_WRITELN 1, "*"
    NEXT nt%
NEXT ru%
FILE_CLOSE 1
GOSUB Lirfic: ' rafraîchissement de l'affichage (groupes de tâches)
ru% = sru%: nt% = snt%
y% = 1+(ru%-1)*hl%
2D_FILL_COLOR 255,164,255: 2D_PEN_COLOR 255,164,255
2D_RECTANGLE 0,y%,wl%-1,y%+hl%-2: ' coloration rubrique cliquée
PRINT_LOCATE 2,y%+3: PRINT rub$(ru%)
RETURN
' ==============================================================================
Valider:
ta$(ru%,nt%) = TEXT$(12)
a$ = TEXT$(14): IF LEFT$(a$,13)="%SystemDrive%" THEN a$="C:"+MID$(a$,14,100)
ic$(ru%,nt%) = a$
rp$(ru%,nt%) = TEXT$(16): nm$(ru%,nt%) = TEXT$(18)
IF TEXT$(12) <> ""
    GOSUB Afcase
END_IF
GOSUB Ecrfic: ' réécriture de l'ensemble des tableaux dans le fichier
HIDE 10
TIMER_ON 99
RETURN
' ==============================================================================
Valgrou:
rub$(ru%) = TEXT$(42)
GOSUB Ecrfic: ' réécriture de l'ensemble des tableaux dans le fichier
HIDE 40
TIMER_ON 99
RETURN
' ==============================================================================
Micone:
IF TEXT$(14) = "" AND TEXT$(12) <> "" THEN TEXT 14, TEXT$(12): SHOW 25
RETURN
' ==============================================================================
Copicol:
i% = NUMBER_CLICK
IF i% > 34
    ' Action sur un groupe de tâches donné
    SELECT i%
        CASE 51: ' copier l'ensemble du groupe dans le clipboard
                a$ = "R: "+rub$(ru%)
                FOR i% = 1 TO ntm%
                    a$ = a$ + "T: " + ta$(ru%,i%)
                    a$ = a$ + "I: " + ic$(ru%,i%)
                    a$ = a$ + "N: " + nm$(ru%,i%)
                    a$ = a$ + "D: " + rp$(ru%,i%)
                NEXT i%
                CLIPBOARD_STRING_COPY a$
                GOTO Copicols
        CASE 52: ' coller le groupe qui est dans le clipboard
                scl$ = CLIPBOARD_STRING_PASTE$
                IF LEFT$(scl$,3) <> "R: "
                    MESSAGE "Impossible, chaîne en mémoire incorrecte, abandon !"
                    RETURN
                END_IF
                a$ = rub$(ru%)
                IF a$ <> ""
                    b$ = "Écraser entièrement le groupe existant " + a$ + " ?"
                    i% = MESSAGE_CONFIRMATION_YES_NO(b$)
                    IF i% <> 1 THEN RETURN
                END_IF
                k% = INSTR(scl$,"T: "): rub$(ru%) = MID$(scl$,4,k%-4)
                nt% = 0
                WHILE k% > 0
                    nt% = nt% + 1
                    scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"I: ")
                    ta$(ru%,nt%) =  MID$(scl$,4,k%-4)
                    scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"N: ")
                    ic$(ru%,nt%) = MID$(scl$,4,k%-4)
                    scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"D: ")
                    nm$(ru%,nt%) = MID$(scl$,4,k%-4)
                    scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"T: ")
                    IF k% > 0
                        rp$(ru%,nt%) = MID$(scl%,4,k%-4)
                    ELSE
                        rp$(ru%,nt%) = MID$(scl$,4,5000)
                    END_IF
                END_WHILE
        CASE 53: ' insertion: décaler les groupes vers le bas (créer une ligne vide)
                FOR i% = ntg% TO ru%+1 STEP -1
                    rub$(i%) = rub$(i%-1)
                    FOR j% = 1 TO ntm%
                        ta$(i%,j%) = ta$(i%-1,j%): ic$(i%,j%) = ic$(i%-1,j%)
                        nm$(i%,j%) = nm$(i%-1,j%): rp$(i%,j%) = rp$(i%-1,j%)
                    NEXT j%
                NEXT i%
                rub$(ru%) = "": ' vider la ligne (groupe de tâches décalé)
                FOR i% = 1 TO ntm%
                    ta$(ru%,i%) = "": ic$(ru%,i%) = ""
                    nm$(ru%,i%) = "": rp$(ru%,i%) = ""
                NEXT i%
        CASE 54: ' supprimer le groupe actuel (cliqué)
                a$ = rub$(ru%)
                IF a$ = "" THEN MESSAGE("Groupe vide !"): RETURN
                b$ = "Supprimer entièrement le groupe existant " + a$ + " ?"
                i% = MESSAGE_CONFIRMATION_YES_NO(b$)
                IF i% <> 1 THEN RETURN
                rub$(ru%) = ""
                FOR i% = 1 TO ntm%
                    ta$(ru%,i%) = "": ic$(ru%,i%) = ""
                    nm$(ru%,i%) = "": rp$(ru%,i%) = ""
                NEXT i%
    END_SELECT
ELSE
    ' Action sur une tâche donnée
    SELECT i%
        CASE 31: ' copier la tâche dans le clipboard
                a$ = "T: " + ta$(ru%,nt%)
                a$ = a$ + "I: " + ic$(ru%,nt%)
                a$ = a$ + "N: " + nm$(ru%,nt%)
                a$ = a$ + "D: " + rp$(ru%,nt%)
                CLIPBOARD_STRING_COPY a$
                GOTO Copicols
        CASE 32: ' coller la tâche en mémoire (clipboard)
                scl$ = CLIPBOARD_STRING_PASTE$
                IF LEFT$(scl$,3) <> "T: "
                    MESSAGE "Impossible, chaîne en mémoire incorrecte, abandon !"
                    RETURN
                END_IF
                a$ = ta$(ru%, nt%)
                IF a$ <> ""
                    b$ = "Écraser entièrement la tâche existante " + a$ + " ?"
                    i% = MESSAGE_CONFIRMATION_YES_NO(b$)
                    IF i% <> 1 THEN RETURN
                END_IF
                k% = INSTR(scl$,"I: "): ta$(ru%,nt%) = MID$(scl$,4,k%-4)
                scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"N: ")
                ic$(ru%,nt%) = MID$(scl$,4,k%-4)
                scl$ = MID$(scl$,k%,5000): k% = INSTR(scl$,"D: ")
                nm$(ru%,nt%) = MID$(scl$,4,k%-4)
                rp$(ru%,nt%) = MID$(scl$, k%+3,5000)
        CASE 33: ' insertion: décaler les tâches d'une case (créer une case vide)
                FOR i% = ntm% TO nt%+1 STEP -1
                    ta$(ru%,i%) = ta$(ru%,i%-1): ic$(ru%,i%) = ic$(ru%,i%-1)
                    nm$(ru%,i%) = nm$(ru%,i%-1): rp$(ru%,i%) = rp$(ru%,i%-1)
                NEXT i%
                ta$(ru%,nt%) = "": ic$(ru%,nt%) = ""
                nm$(ru%,nt%) = "": rp$(ru%,nt%) = ""
        CASE 34: ' supprimer la tâche cliquée
                a$ = ta$(ru%,nt%)
                IF a$ = "" THEN MESSAGE("Tâche vide !"): RETURN
                b$ = "Supprimer entièrement la tâche existante "+a$+" ?"
                i% = MESSAGE_CONFIRMATION_YES_NO(b$)
                IF i% <> 1 THEN RETURN
                ta$(ru%,nt%) = "": ic$(ru%,nt%) = ""
                nm$(ru%,nt%) = "": rp$(ru%,nt%) = ""
    END_SELECT
END_IF
' Sauvegarde et mise à jour de l'affichage
GOSUB Ecrfic
snt% = nt%: GOSUB Aftach: nt% = snt%: ' réaffichage du groupe
Copicols:
HIDE 10: HIDE 40
TIMER_ON 99
RETURN
' ==============================================================================
Extract:
' Extraction de l'icône de l'exécutable
a$ = TEXT$(14): IF UPPER$(RIGHT$(a$,4)) <> ".EXE" THEN RETURN: ' ignoré
IF DIR_EXISTS(rico$) = 0 THEN DIR_MAKE rico$
b$ = STRING$(255," ")
out$ = rico$ + "\" +RIGHT$("0"+STR$(ru%),2)+"_"+RIGHT$("0"+STR$(nt%),2)+".ico"
res% = DLL_CALL3("ExtractIconFromLNK",ADR(a$),ADR(out$),ADR(b$))
IF FILE_EXISTS(out$) = 1 THEN TEXT 14, out$
RETURN
' ==============================================================================
Edf:
Timer_Off 99: Execute_Wait "Notepad.exe " + fta$: Timer_On 99: ' edit fichier
Return
' ==============================================================================
Savrest:
' Sauvegarde/Restore du fichier des données
IF NUMBER_CLICK = 61
    ' sauvegarde
    IF FILE_EXISTS(sta$) = 1 THEN FILE_DELETE sta$
    FILE_COPY fta$,sta$
ELSE
    ' restore
    IF FILE_EXISTS(sta$) = 0 THEN MESSAGE "Sauvegarde non trouvée !": RETURN
    FILE_DELETE fta$
    FILE_COPY sta$,fta$
END_IF
RETURN
' ==============================================================================
Help:
DATA "AIDE": ' repère de début
DATA "LANCEUR DE TÂCHES :  AIDE": ' caption général
DATA "1_ GÉNÉRALITÉS","2_ AJOUT CATÉGORIE","3_ AJOUT TÂCHE": ' rubriques
DATA "4_ DÉPLACER/SUPPRIMER","5_ MAINTENANCE","F"

DATA "1_ ","Clic gauche sur un groupe de tâches pour afficher à droite les"
DATA "différentes tâches de ce groupe. Le clic droit affiche les"
DATA "caractéristiques du groupe (son nom, qui est alors modifiable).",""
DATA "Le clic gauche sur une case de tâche provoque le lancement de"
DATA "l'application correspondante, et le programme lanceur quitte."
DATA "Le clic droit affiche les caractéristiques de la tâche, que l'on peut"
DATA "alors modifier et réenregistrer.",""
DATA "Conditions initiales: le programme est défini pour 20 groupes de"
DATA "tâches, de 20 tâches maximum chacun. Il vaut mieux prévoir la"
DATA "capacité maximum dès le départ, en jouant sur le paramètre nr%"
DATA "(nombre de rangées, fixé à 5), les autres dimensions seront ajustées"
DATA "en conséquence (notamment le nombre maximum de groupes).","F"

DATA "2_ ","- Clic droit sur un emplacement libre de la colonne de gauche, puis"
DATA "  donner un nom à la catégorie, et valider.","F"

DATA "3_ ","- Sélectionner une catégorie à gauche, puis cliquer sur une case libre"
DATA "  à droite. Saisir (ou parcourir) un programme exécutable, l'icône"
DATA "  correspondante, puis donner un nom à ce racourci. Éventuellement,"
DATA "  préciser le répertoire de travail de cette application. Valider.",""
DATA "  NB: le clic sur le champ icône provoque l'affichage dans ce champ"
DATA "  du chemin de l'exécutable au-dessus. En cliquant sur le bouton"
DATA "  'Extr' à droite, le programme tentera d'extraire l'icône contenue"
DATA "  dans cet exécutable et affichera le résultat dans le champ (chemin"
DATA "  de l'icône créée).","F"

DATA "4_ ","  Faire un clic droit sur l'élément concerné. Il est alors possible de:"
DATA "- Modifier les paramètres de la tâche ou du groupe de tâches."
DATA "- Copier entièrement l'élément dans le clipboard (pour collage"
DATA "  éventuel)."
DATA "- Coller à l'emplacement cliqué l'élément qui a été précédemment."
DATA "  copié."
DATA "- Insérer un emplacement vide avant l'élément cliqué (les éléments"
DATA "  qui suivent seront alors décalés vers le bas)."
DATA "- Supprimer entièrement l'élément cliqué.","F"

DATA "5_ ","  1) - SAUVEGARDES :"
DATA "  Toutes les données concernant les groupes de tâches et les tâches"
DATA "  sont enregistrées dans un fichier de type texte: Fictach.txt. Il est"
DATA "  prévu une sauvegarde ponctuelle de ce fichier: bouton"
DATA "  'Sauveg. fichier',dans le même répertoire, avec l'extension .sav."
DATA "  Le garnissage initial de ce fichier étant assez laborieux, il est"
DATA "  conseillé de faire cette sauvegarde avant toute opération un peu"
DATA "  risquée de suppression, déplacements etc. d'éléments."
DATA "  Le bouton 'Restore fichier' recopie le fichier sauvegardé dans le"
DATA "  fichier opérationnel."," "
DATA "  2) - STRUCTURE  DU  FICHIER :"
DATA "  On peut éditer le fichier des tâches pour voir sa structure ou y"
DATA "  apporter des modifications mineures: bouton 'Edit fichier'.","F"
TIMER_OFF 99
Aide("AIDE")
TIMER_ON 99
RETURN
' ==============================================================================
SUB Aide(a$)
' Affichage d'une aide à l'écran
' Les données sont sous forme de Datas dans le programme principal, le paramètre
' a$ donnant le libellé de la ligne à rechercher. Les Datas sont dans l'ordre:
' - le nom (paramètre a$) qui pointe le début des datas
' - le 'Caption' (titre) de la fenête d'aide
' - les noms des différents chapitres, numérotés de "1_ " à "n_ "
'      exemple: DATA "1_ Premier chapitre","2_ Deuxième chapitre",etc., la série
'      se terminant par "F"
' - les chapitres successifs, avec leur numéro correspondant
'      exemple: DATA "1_ ","Premier chapitre","Texte du chapitre...","...","..."
'      chaque chapitre se terminant par "F".
DIM_LOCAL ar$, aru$, rubx%, fid%, ata%: ata% = 0
IF LABEL("Sortaid") = 0 THEN LABEL Sortaid
IF LABEL("A_Rub") = 0 THEN LABEL A_Rub
fid% = 1000: WHILE OBJECT_EXISTS(fid%) = 1: fid% = fid%+1000: END_WHILE
FORM fid%: HEIGHT fid%,400: WIDTH fid%,600: BORDER_SMALL fid%: COLOR fid%,190,255,255
FONT_NAME fid%, "Comic Sans MS"
LIST fid%+1: PARENT fid%+1,fid%: WIDTH fid%+1,150: HEIGHT fid%+1,HEIGHT(fid%)-35
COLOR fid%+1,255,255,128: ON_CLICK fid%+1,A_Rub: ' liste des rubriques, à gauche
MEMO fid%+2: PARENT fid%+2,fid%: TOP fid%+2,20: LEFT fid%+2,WIDTH(fid%+1)
WIDTH fid%+2,WIDTH(fid%)-WIDTH(fid%+1)-16: HEIGHT fid%+2,HEIGHT(fid%+1)-42
COLOR fid%+2,190,255,190: FONT_SIZE fid%+2,10: ' rubriques successives, à droite
ALPHA fid%+3: PARENT fid%+3,fid%: LEFT fid%+3,LEFT(fid%+2)+10: ' titre
BUTTON fid%+4: PARENT fid%+4,fid%: TOP fid%+4,HEIGHT(fid%)-59: LEFT fid%+4,330
CAPTION fid%+4,"OK": ON_CLICK fid%+4,Sortaid: ' sortie de l'aide
RESTORE: READ ar$: WHILE ar$<>a$: READ ar$: END_WHILE
READ ar$: CAPTION fid%,ar$
READ ar$: WHILE ar$<>"F": ITEM_add fid%+1,ar$: READ ar$: END_WHILE
rubx% = 0: GOSUB A_Rub: ' affichage préalable de la 1ère rubrique
WHILE ata% = 0: WAIT 300: END_WHILE: EXIT_SUB
Sortaid:
    DELETE fid%: ' sortie, libération de la ressource
    ata% = 1: ' feu vert pour sortir
RETURN
A_Rub:
    ' affichage d'une rubrique
    rubx% = ITEM_INDEX(fid%+1): IF rubx% = 0 THEN rubx% = 1: ' initial
    aru$ = ITEM_READ$(fid%+1,rubx%)
    CAPTION fid%+3, aru$
    aru$ = LEFT$(aru$,3)
    RESTORE: READ ar$: WHILE ar$<>aru$: READ ar$: END_WHILE
    CLEAR fid%+2
    READ ar$: WHILE ar$<>"F": ITEM_ADD fid%+2,ar$: READ ar$: END_WHILE
RETURN
END_SUB
' ==============================================================================

Un regret:
Que l'on n'ait pas l'équivalent du ON_CLICK pour intercepter le clic droit de la souris (du genre On_Click_Right), j'ai été obligé de créer un Timer pour le surveiller, ce que je n'aime pas beaucoup parce que ça pose plein de problèmes dans les traitements: il ne faut pas oublier de l'interrompre pour les traitements un peu longs, et... de le rétablir ensuite !


Dernière édition par JL35 le Dim 18 Aoû 2013 - 22:24, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Lanceur de tâches (bis) Empty
MessageSujet: Re: Lanceur de tâches (bis)   Lanceur de tâches (bis) EmptyDim 18 Aoû 2013 - 21:23

Bon, voyant votre enthousiasme général pour ce programme, j'ai mis une nouvelle version, la différence essentielle étant la modification du système d'affichage de l'aide.
Ce n'est plus un banal 'MESSAGE' comme avant, mais bel et bien une Sub, la sub Aide() (c'est original), réutilisable.

L'aide est tout entière contenue dans des lignes de datas, avec de petites contraintes de format:
- 1ère ligne, un nom repère qui sera recherché dans les différents datas du programme (s'il y en a d'autres).
- 2ème ligne, un texte qui sera utilisé comme caption du système
- des datas représentant les titres des différents chapitres de l'aide, numérotés
- puis les datas des rubriques elles-mêmes.
Le plus simple est de regarder comment ça marche dans le programme ci-dessus (lignes 535 à la fin).

La gestion est un peu acrobatique, parce qu'il ne faut pas quitter la sub tant que l'utilisateur n'a pas manifesté le désir de quitter l'aide, il ne faut donc aller au end_sub (ou exit_sub) que sur demande.
La sub contient deux sous-programmes internes.

Il est bien sûr possible de redimensionner les fenêtres de l'aide, en fonction des textes à afficher.
De même, j'ai choisi arbitrairement 1000 comme numéro de Form à créer, on peut faire quelque chose de plus sophistiqué pour s'assurer que ce numéro n'existe pas déjà.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Lanceur de tâches (bis) Empty
MessageSujet: Re: Lanceur de tâches (bis)   Lanceur de tâches (bis) EmptyDim 18 Aoû 2013 - 23:45

Bien joué JL35, j'étais sûr que tu en étais capable et tu nous en donne encore la preuve.
Tu assures bien au niveau des utilitaires utiles Wink
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Lanceur de tâches (bis) Empty
MessageSujet: Re: Lanceur de tâches (bis)   Lanceur de tâches (bis) EmptyDim 18 Aoû 2013 - 23:52

Ah, au moins il y en a un qui ne dort pas !
Bonsoir Jicehel, tu sais je fais aussi quelques utilitaires inutiles, mais bon, c'est amusant !
Bonne nuit ! Sleep 
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Lanceur de tâches (bis) Empty
MessageSujet: re   Lanceur de tâches (bis) EmptyLun 19 Aoû 2013 - 0:40

Je ne dors pas non plus...

Mais j' ai passée beaucoup de temps sur le site ces deux derniers mois
et j' ai du mal à tout tester. Je sais, ce n' est pas une excuse...
Bon j' ai essayé mais sans succès car je n'utilise pas IrfanView.Embarassed
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7007
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Lanceur de tâches (bis) Empty
MessageSujet: Re: Lanceur de tâches (bis)   Lanceur de tâches (bis) EmptyLun 19 Aoû 2013 - 1:04

Lanceur de tâches (bis) Text110

Quant à moi, l’utile ne me dit rien pour le moment.
Je suis plutôt pour l’inutile car, souvent,  il peut servir !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





Lanceur de tâches (bis) Empty
MessageSujet: Re: Lanceur de tâches (bis)   Lanceur de tâches (bis) Empty

Revenir en haut Aller en bas
 
Lanceur de tâches (bis)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tâches actives
» Lanceur de tâches
» Cacher la barre des tâches
» Astuce : les barres du gestionnaire des tâches
» Faire apparaître PAnoramic_Editor dans la barre des tâches

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: