Lib vidéo de Chris + GetTime(VideoPosition(#Video))
Publié : mer. 18/janv./2006 9:58
Salut à tous
J'utilise la belle lib de Chris pour un lecteur vidéo et cela marche super bien. Merci Chris !
J'ai passé mon lecteur à un pote et le temps des films devient loufoque.
00:02:16 : pour un film 2 min 16 !!!!
Mon pote est sous windows XP et moi 2000, mais je n'ai pas l'impression que cela vienne de là. Alors si vous auriez une idée du problème.
Fonctionnement :
1 - choisir un répertoire avec des film dans l'onglet répertoir
2- clic gauche sur un film dans l'onglet film
3 - clic gauche sur le film pour le plein écran
4 - clic gauche pour sortir du plein exran
en full mode :
+ volume page up page down
+ pause clic droit
+ avance et recul du film avec la souris si l'option est cochée
J'en profite pour remercier de nouveau Chris pour sa lib ainssi que Droopy pour la sienne qui me sert à chaque programme.
Voici le code (pas néttoyé)

J'utilise la belle lib de Chris pour un lecteur vidéo et cela marche super bien. Merci Chris !
J'ai passé mon lecteur à un pote et le temps des films devient loufoque.
00:02:16 : pour un film 2 min 16 !!!!
Mon pote est sous windows XP et moi 2000, mais je n'ai pas l'impression que cela vienne de là. Alors si vous auriez une idée du problème.
Fonctionnement :
1 - choisir un répertoire avec des film dans l'onglet répertoir
2- clic gauche sur un film dans l'onglet film
3 - clic gauche sur le film pour le plein écran
4 - clic gauche pour sortir du plein exran
en full mode :
+ volume page up page down
+ pause clic droit
+ avance et recul du film avec la souris si l'option est cochée
J'en profite pour remercier de nouveau Chris pour sa lib ainssi que Droopy pour la sienne qui me sert à chaque programme.
Voici le code (pas néttoyé)
Code : Tout sélectionner
;{- IncludeFile "2_variable.pb"
Global version$ , repertoire_execution$,repertoire_vu$
Global MouseVisible.l,VideoLoaded
MouseVisible = #True
Global taille_font,quit,souris
Global num_colonne_rep
num_colonne_rep=2
Global num_film,Full,rapport_film
Global largeur_liste,limite_bas,limite_haut,temps_affiche_barre,position_barre,temps_affiche_volume,der_time$,der_volume,num_rep
position_barre=60
largeur_liste=400
limite_bas=120
limite_haut=100
rapport_film=0
temps_affiche_volume=60
temps_affiche_barre=60
; IncludeFile "VideoLib.pb"
; IncludeFile "Video_Res.pb"
;- Constantes Fenêtres
Enumeration #PB_Compiler_EnumerationValue
#Win_Player
#Video
#fichier_supprime
#fichier_vu
EndEnumeration
;- Constantes Gadgets
Enumeration #PB_Compiler_EnumerationValue
EndEnumeration
;- Constantes diverses
;#Video = 0
#PBM_SETRANGE32 = #WM_USER + 6
#PBM_GETRANGE = #WM_USER + 7
;- Constantes StatusBar
Enumeration #PB_Compiler_EnumerationValue
#Status
EndEnumeration
;- Variables
Global hSeek, hProg, hPlayer, Change,hWnd1
Global Re.RECT
Global der_x_mouse, der_y_mouse,Volume,vit,nv_Film$,resize_font,affiche_defilement,temps_attente
resize_font=0
Dim list_film.s(500)
; #LVM_SETEXTENDEDLISTVIEWSTYLE = #LVM_FIRST + 54
; #LVM_GETEXTENDEDLISTVIEWSTYLE = #LVM_FIRST + 55
; Global ListIconGadget.l, Buffer1.l, Buffer2.l, lvi.LV_ITEM, updown.l, lastcol.l
; Buffer1 = AllocateMemory( 128)
; Buffer2 = AllocateMemory( 128)
;}
;{- IncludeFile "3_fenetre.pb"
Enumeration #PB_Compiler_EnumerationValue
#fenetre_base
#image_fond
#liste_rep
#btn_rep_plus
#btn_rep_moins
#liste_film
#font
#btn_font_moins
#btn_font_plus
#Btn_Eject
#Btn_Load
#Btn_Pause
#Btn_Stop
#Txt_Title
#Progress
#Frame0
#Frame1
#Btn_Play
#btn_vu
#Trk_Seek
#Trk_LeftVolume
#Trk_RightVolume
#Trk_GeneralVolume
#Fenetre_vision
#onglet
#btn_supprimer
#txt_font
#txt_souris
#text_titre
#font1
#btn_quitter
#temps
#font2
#font4
#txt_rep_vu
#string_rep_vu
#rep_vu
#btn_copie_lie
#rapport
#btn_rap0
#btn_rap1
#btn_rap2
#btn_rap3
#image_barre
#gadg_image_barre
EndEnumeration
Procedure CallBack(Hnd,uMsg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
If resize_font=0 ;sinon cela met un message d'érreur lorsque l on change la font
If Hnd = WindowID(#fenetre_base)
;Debug "callback"
;Debug uMsg
Select uMsg
Case #WM_MOVE
InvalidateRect_(hPlayer,@Re,#False)
Case #WM_PAINT
InvalidateRect_(hPlayer,@Re,#False)
EndSelect
EndIf
EndIf
ProcedureReturn Resultat
EndProcedure
Procedure Open_fenetre_base()
hPlayer=OpenWindow(#fenetre_base, 0,0,GetSystemMetrics_(0),GetSystemMetrics_(1), #PB_Window_BorderLess, "Video")
; hPlayer=OpenWindow(#fenetre_base, 0,0,800,600, #PB_Window_BorderLess, "")
If hPlayer
If CreateGadgetList(WindowID())
TextGadget(#text_titre,largeur_liste+30,5,450,50,"Vidéothèque",#PB_Text_Center)
LoadFont(#font1,"",30)
SetGadgetFont(#text_titre,FontID())
TextGadget(#Txt_Title, largeur_liste+10, 70, 300, 40, "", #PB_Text_Center | #PB_Text_Border)
LoadFont(#font2,"",24)
SetGadgetFont(#Txt_Title,FontID())
LoadFont(#font,"",taille_font)
SetGadgetFont(#PB_Default,FontID())
PanelGadget(#onglet, 2, 2, largeur_liste, 600)
AddGadgetItem (#onglet,-1,"Film")
ListIconGadget(#liste_film, 10, 20, 210, 200, "Film", largeur_liste-60)
AddGadgetItem (#onglet,-1,"Dossier")
TreeGadget(#liste_rep, 5, 50, 200, 200 ,#PB_Tree_CheckBoxes | #PB_Tree_AlwaysShowSelection)
ButtonGadget(#btn_rep_plus,5,5,120,30,"+ dossier")
ButtonGadget(#btn_rep_moins,140,5,120,30,"- dossier")
AddGadgetItem (#onglet,-1,"Option")
Frame3DGadget(#txt_font,2,5,largeur_liste-10,70,"Taille des caractères")
ButtonGadget(#btn_font_plus,200,35,30,30,"+")
ButtonGadget(#btn_font_moins,100,35,30,30,"-")
CheckBoxGadget(#txt_souris,5,75,largeur_liste-10,30,"Avance avec souris")
Frame3DGadget(#txt_rep_vu,2,110,largeur_liste-10,80,"Répertoire VU")
StringGadget(#string_rep_vu,35,145,largeur_liste-60,30,"",#PB_Text_Center)
ButtonGadget(#rep_vu,5,145,25,25,"...")
ButtonGadget(#btn_copie_lie , 5, 195, largeur_liste-10, 30, "->C:\->Lire")
Frame3DGadget(#rapport,2,235,largeur_liste-10,80,"Rapport h*l")
yr=265
largeur_btn=(largeur_liste-30)/4
ButtonGadget(#btn_rap0, 10, yr, largeur_btn, 30, "1:1")
ButtonGadget(#btn_rap1, 1*largeur_btn+10, yr, largeur_btn, 30, "4/3")
ButtonGadget(#btn_rap2, 2*largeur_btn+10, yr, largeur_btn, 30, "16/9")
;ButtonGadget(#btn_rap3, 3*largeur_btn+10, yr, largeur_btn, 30, "4")
CloseGadgetList()
AddGadgetColumn(#liste_film,1,"Vu",40)
AddGadgetColumn(#liste_film,num_colonne_rep,"Repertoire",200)
ButtonGadget(#Btn_Pause, 290, 105, 80, 30, "Pause")
hGVol = TrackBarGadget(#Trk_GeneralVolume, largeur_liste, 5, 20, limite_bas-5, 0, 1000,#PB_TrackBar_Vertical)
TextGadget(#temps,300,300,300,30,"Temps",#PB_Text_Border|#PB_Text_Center)
ButtonGadget(#btn_quitter,600,10,30,30,"X")
hSeek = TrackBarGadget(#Trk_Seek, 230, 80, 200, 20, 0, 10)
ButtonGadget(#btn_vu, 350, 105, 140, 30, "--> VU")
ButtonGadget(#btn_supprimer, 350, 105, 140, 30, "Supprimer")
hBrush1 = CreateSolidBrush_(RGB(0, 0, 0))
SetClassLong_(hPlayer, #GCL_HBRBACKGROUND, hBrush1)
InvalidateRect_(hPlayer, #Null, #True)
EndIf
SetWindowCallback(@CallBack())
EndIf
EndProcedure
Procedure cache_gadget(type)
;type=0
HideGadget( #liste_rep,type )
HideGadget( #btn_rep_plus ,type)
HideGadget( #btn_rep_moins ,type)
HideGadget( #liste_film,type)
HideGadget( #btn_font_plus,type)
HideGadget( #btn_font_moins,type)
HideGadget( #Btn_Pause,type)
HideGadget( #Txt_Title,type)
HideGadget( #btn_vu,type)
HideGadget( #Trk_Seek,type)
HideGadget( #onglet ,type)
HideGadget( #btn_supprimer ,type)
HideGadget( #btn_quitter ,type)
HideGadget( #text_titre ,type)
HideGadget( #temps ,type)
HideGadget( #Trk_GeneralVolume ,type)
;HideGadget( ,type)
;HideGadget( ,type)
;HideGadget( ,type)
;HideGadget( ,type)
EndProcedure
Procedure resize_fenetre()
;LoadFont(#font,"",taille_font)
;SetGadgetFont(#PB_Default,FontID())
l=WindowWidth()
h=WindowHeight()
ResizeGadget(#Trk_Seek,largeur_liste+40,h-limite_bas,l-largeur_liste-50,-1)
ResizeGadget(#Btn_Pause,largeur_liste+30,h-95,-1,-1)
ResizeGadget(#temps,largeur_liste+120,h-95,-1,-1)
ResizeGadget(#onglet,5,5,largeur_liste,h-10)
ResizeGadget(#liste_film,2,5,largeur_liste-15,h-60)
ResizeGadget(#liste_rep,2,40,largeur_liste-15,h-100)
;ResizeGadget(#Txt_Title,220,80,l-230,30)
ResizeGadget(#btn_vu,largeur_liste+120,h-40,-1,-1)
ResizeGadget(#btn_supprimer,largeur_liste+280,h-40,-1,-1)
;ResizeGadget(#btn_copie_lie,largeur_liste+440,h-40,-1,-1)
ResizeGadget(#btn_quitter,l-60,-1,-1,-1)
;ResizeGadget(#btn_font_plus,largeur_liste+20,h-25,-1,-1)
;ResizeGadget(#btn_font_moins,largeur_liste+90,h-25,-1,-1)
ResizeGadget(#Trk_GeneralVolume,largeur_liste+5,h-limite_bas,20,-1)
ResizeGadget(#Txt_Title,largeur_liste+10,-1,l-largeur_liste-15,-1)
ResizeGadget(#text_titre,largeur_liste+10,-1,l-largeur_liste-85,-1)
EndProcedure
;}
;{- IncludeFile "4_procedure.pb"
Procedure.s path(fichier$)
i=Len(fichier$)
Repeat
i=i-1
Until Mid(fichier$,i,1)="\"
Path$=Left(fichier$,i)
ProcedureReturn Path$
EndProcedure
Procedure.s nom_fichier(fichier$)
i=Len(fichier$)
Repeat
i=i-1
Until Mid(fichier$,i,1)="\"
Path$=Right(fichier$,Len(fichier$)-i)
ProcedureReturn Path$
EndProcedure
Procedure.s ext(fichier$)
i=Len(fichier$)
Repeat
i=i-1
Until Mid(fichier$,i,1)="."
Path$=Right(fichier$,Len(fichier$)-i+1)
ProcedureReturn Path$
EndProcedure
Procedure.s nom_fichier_ss_ext(fichier$)
i=Len(fichier$)
Repeat
i=i-1
Until Mid(fichier$,i,1)="."
Path$=Left(fichier$,i-1)
ProcedureReturn Path$
EndProcedure
Procedure initialisation()
prog$="lecteur_video.exe"
repertoire_execution$=Space(255)
res= SearchPath_(NULL,prog$,NULL, 256, @repertoire_execution$,NULL );
repertoire_execution$=Left(repertoire_execution$,Len(repertoire_execution$)-Len(prog$))
SetCurrentDirectory(repertoire_execution$)
OpenPreferences(repertoire_execution$+"video.ini")
taille_font=ReadPreferenceLong("Taille font",12)
souris=ReadPreferenceLong("souris",1)
Volume=ReadPreferenceLong("volume",1000)
repertoire_vu$=ReadPreferenceString("Repertoire vu","c:\film\vu\")
ClosePreferences()
UseJPEGImageDecoder()
;CatchImage(#image_fond, ?im_fond)
EndProcedure
Procedure sauverep()
CreateFile(0,"repertoire.txt")
For i=0 To CountGadgetItems(#liste_rep)
If GetGadgetItemText(#liste_rep,i,0)<>""
WriteStringN(Str(GetGadgetItemState(#liste_rep,i)&#PB_Tree_Checked )+" "+ GetGadgetItemText(#liste_rep,i,0))
EndIf
Next
CloseFile(0)
CreatePreferences(repertoire_execution$+"video.ini")
WritePreferenceLong("Taille font",taille_font)
WritePreferenceLong("souris",souris)
WritePreferenceLong("volume",Volume)
WritePreferenceString("Repertoire vu",repertoire_vu$)
ClosePreferences()
EndProcedure
Procedure lirerep()
If OpenFile(0,"repertoire.txt")
i=-1
Repeat
ligne$=ReadString()
If ligne$<>""
nom_rep$=Right(ligne$,Len(ligne$)-2)
i=i+1
AddGadgetItem(#liste_rep,i,nom_rep$)
If Left(ligne$,1)="4"
SetGadgetItemState(#liste_rep,i,#PB_Tree_Checked )
EndIf
EndIf
Until Loc()=Lof()
CloseFile(0)
EndIf
EndProcedure
Procedure.s filtre_nom_film(nom$)
nom$=RemoveString(nom$,".avi",1)
nom$=RemoveString(nom$,"french",1)
nom$=RemoveString(nom$,"divx",1)
nom$=RemoveString(nom$,"dvd",1)
nom$=RemoveString(nom$,"rip",1)
nom$=RemoveString(nom$,"xvid",1)
nom$=RemoveString(nom$,"-",1)
nom$=RemoveString(nom$,"testé",1)
nom$=RemoveString(nom$,"orore",1)
nom$=RemoveString(nom$," fr ",1)
nom$=RemoveString(nom$,"thenewsquad",1)
nom$=RemoveString(nom$,"ggt",1)
nom$=RemoveString(nom$,"rmt",1)
nom$=RemoveString(nom$,"pmb",1)
nom$=RemoveString(nom$,"crimetime",1)
;nom$=RemoveString(nom$,"",1)
;nom$=RemoveString(nom$,"",1)
;nom$=RemoveString(nom$,"",1)
;nom$=RemoveString(nom$,"",1)
;nom$=RemoveString(nom$,"",1)
;nom$=RemoveString(nom$,"",1)
ProcedureReturn nom$
EndProcedure
Procedure lire_un_repertoire(rep$)
ExamineDirectory(0,rep$,"*.*")
Repeat
type=NextDirectoryEntry()
If type =1
nom_fichier$=DirectoryEntryName()
ext$=LCase(GetPartOfFile(nom_fichier$,8))
;debug ext$
If ext$="avi" Or ext$=" avi" Or ext$="rmvb" Or ext$="mp2"
num_film=num_film+1
;AddGadgetItem(#liste_film,-1,nom_fichier$)
;SetGadgetItemText(#liste_film, num_film, rep$, num_colonne_rep)
list_film(num_film)=rep$+nom_fichier$
EndIf
EndIf
Until type=0
EndProcedure
Procedure remplir_liste_film()
ClearGadgetItemList(#liste_film)
num_film=-1
For i=0 To CountGadgetItems(#liste_rep)
If GetGadgetItemState(#liste_rep,i)=12 Or GetGadgetItemState(#liste_rep,i)=13
; num_film=num_film+1
; list_film(num_film)=GetGadgetItemText(#liste_rep,i,0)+"---> "+GetGadgetItemText(#liste_rep,i,0)
lire_un_repertoire(GetGadgetItemText(#liste_rep,i,0))
EndIf
Next
SortArray(list_film(),2,0,num_film)
For i=0 To num_film
nom_fichier$=nom_fichier(list_film(i))
AddGadgetItem(#liste_film,-1,filtre_nom_film(nom_fichier$))
SetGadgetItemText(#liste_film, i, list_film(i), num_colonne_rep)
Next
EndProcedure
Procedure init_fenetre()
resize_fenetre()
lirerep()
remplir_liste_film()
EndProcedure
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
SetGadgetText(#temps, GetTime(VideoLength(#Video))+" / " + GetTime(VideoPosition(#Video)))
;SetGadgetState(#Progress, VideoPosition(#Video))
SetGadgetState(#Trk_Seek, VideoPosition(#Video))
;{ affichage de la position
temps_affiche_barre=temps_affiche_barre+1
If Full=1 And temps_affiche_barre<40 And der_time$<>GetTime(VideoPosition(#Video))
l=WindowWidth()
h=WindowHeight()
StartDrawing(WindowOutput())
der_time$=GetTime(VideoPosition(#Video))
;Box(0,h-position_barre,l,taille_font+14,$EE1122)
For barre=0 To taille_font+13
LineXY(0+20,h-position_barre+barre,(l-40),h-position_barre+barre,RGB(170-barre*3,164-barre*3,246-barre*3))
Next
For barre=1 To taille_font+6
LineXY(25,h-position_barre+3+barre,25+(l-50)*VideoPosition(#Video)/VideoLength(#Video),h-position_barre+3+barre,RGB(153-barre*4,233-barre*4,130-barre*4))
Next
DrawingMode(1)
;RGB($A8,$A8,$A8)
DrawingFont(FontID())
FrontColor(0,0,0)
Locate (30,h-position_barre+2)
DrawText(GetTime(VideoPosition(#Video)));+" : "+Str(temps_affiche_barre))
Locate(l/2-TextLength("00:00:00")/2,h-position_barre+2)
DrawText(GetTime(VideoLength(#Video)))
Locate(l-TextLength("00:00:00")-55,h-position_barre+2)
DrawText(GetTime(VideoLength(#Video)-VideoPosition(#Video)))
StopDrawing()
EndIf
If Full=1 And temps_affiche_barre=42
l=WindowWidth()
h=WindowHeight()
StartDrawing(WindowOutput())
;position_barre=60
Box(0,h-position_barre,l,taille_font+14,0)
StopDrawing()
InvalidateRect_(hPlayer,@Re,#False)
EndIf
;}
;{ affichage de la position
temps_affiche_volume=temps_affiche_volume+1
If Full=1 And temps_affiche_volume<40 And Volume<>der_volume
h=WindowWidth()
l=WindowHeight()
StartDrawing(WindowOutput())
der_volume=Volume
l=l-50
; For barre=1 To 12
; LineXY(l-28-barre , h/2-104 , l-28-barre , h/2+104 ,RGB(170-barre*3,164-barre*3,246-barre*3))
; Next
; For barre=1 To 12
; LineXY(l-29+barre , h/2-104 , l-29+barre , h/2+104 ,RGB(170-barre*3,164-barre*3,246-barre*3))
; Next
; For barre=1 To 9
; LineXY(l-20-barre , h/2+100 , l-20-barre , h/2+100-Volume/5 ,RGB(30+barre*4,125+barre*4,19+barre*4))
; Next
; For barre=1 To 9
; LineXY(l-37+barre , h/2+100 , l-37+barre , h/2+100-Volume/5 ,RGB(30+barre*4,125+barre*4,19+barre*4))
; Next
RGB($A9,$F1,$A0)
For barre=1 To taille_font/2+6
LineXY( h/2-104 ,l-28-barre , h/2+104 ,l-28-barre , RGB(170-barre*3,164-barre*3,246-barre*3))
Next
For barre=1 To taille_font/2+6
LineXY( h/2-104 ,l-29+barre , h/2+104 ,l-29+barre ,RGB(170-barre*3,164-barre*3,246-barre*3))
Next
For barre=1 To taille_font/2+2
LineXY( h/2-100 ,l-28-barre , h/2-100+Volume/5 , l-28-barre , RGB(169-barre*5,241-barre*5,160-barre*5))
Next
For barre=1 To taille_font/2+2
LineXY( h/2-100 , l-29+barre , h/2-100+Volume/5 ,l-29+barre ,RGB(169-barre*5,241-barre*5,160-barre*5))
Next
DrawingFont(FontID())
DrawingMode(1)
FrontColor(0,0,0)
Locate (h/2-100 +20,l-40)
DrawText("Volume : "+Str(Volume/10)+" %");+" : "+Str(temps_affiche_barre))
StopDrawing()
EndIf
If Full=1 And temps_affiche_volume=42
InvalidateRect_(hPlayer,@Re,#False)
EndIf
;}
;SetGadgetState(#Trk_LeftVolume, VideoGetLeftVolume(#Video))
;SetGadgetState(#Trk_RightVolume, VideoGetRightVolume(#Video))
;SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
EndSelect
EndSelect
EndProcedure
Procedure retaille_film()
If VideoLoaded
If Full=0
cache_gadget(0)
Hauteur_fenetre.f = WindowHeight()-260
Largeur_fenetre.f = WindowWidth()-largeur_liste-20
Else
cache_gadget(1)
Hauteur_fenetre.f = WindowHeight()
Largeur_fenetre.f = WindowWidth()
EndIf
Hauteur_image.f = VideoHeight(#Video)
Largeur_image.f = VideoWidth(#Video)
rapport_fenetre.f = Hauteur_fenetre /Largeur_fenetre
rapport_image.f = Hauteur_image /Largeur_image
If rapport_image=rapport_fenetre
h=Hauteur_fenetre
l=Largeur_fenetre
EndIf
If rapport_image>rapport_fenetre
h=Hauteur_fenetre
l=Hauteur_fenetre/rapport_image
sens_image=0
EndIf
If rapport_image<rapport_fenetre
h=Largeur_fenetre*rapport_image
l=Largeur_fenetre
sens_image=1
EndIf
If rapport_film<>0
If rapport_film=1
Debug "4/3"
h=Largeur_fenetre*3/4
l=Largeur_fenetre
EndIf
If rapport_film=2
Debug "16/9"
h=Largeur_fenetre*9/16
l=Largeur_fenetre
EndIf
EndIf
If Full=0
x=((Largeur_fenetre-l)/2)+10+largeur_liste
y=((Hauteur_fenetre-h)/2)+120
Re\left = x
Re\top = y
Re\right = x+l
Re\bottom = y+h
ResizeVideo(#Video, x,y,x+l,y+h)
l=WindowWidth()
h=WindowHeight()
ResizeGadget(#Trk_Seek,largeur_liste+40,h-limite_bas,l-largeur_liste-50,-1)
;ResizeGadget(#temps,largeur_liste+400,h-60,-1,-1)
Else
x=((Largeur_fenetre-l)/2)
y=((Hauteur_fenetre-h)/2)
Re\left = 0
Re\top = 0
Re\right = GetSystemMetrics_(0)
Re\bottom = GetSystemMetrics_(1)
ResizeVideo(#Video, x,y,x+l,y+h)
l=WindowWidth()
h=WindowHeight()
ResizeGadget(#Trk_Seek,5,h-60,l,-1)
;ActivateGadget(#Trk_Seek)
;ResizeGadget(#temps,largeur_liste+400,h-60,-1,-1)
EndIf
EndIf
EndProcedure
Procedure lire_film()
SetGadgetText(#Txt_Title, "Film en chargement")
If nv_Film$<>""
rapport_film=0
Debug nv_Film$
If VideoLoaded ;arret la video si elle est déjà en marche
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
EndIf
;num=GetGadgetState(#liste_film)
;Film$=GetGadgetItemText(#liste_film,num,2)+GetGadgetItemText(#liste_film,num,0)
If LoadVideo(#Video, nv_Film$) ;load le film
SendMessage_(hProg,#PBM_SETRANGE32,0,VideoLength(#Video))
SendMessage_(hSeek,#TBM_SETRANGEMAX,#True,VideoLength(#Video))
VideoLoaded = 1
Timer_1 = SetTimer_(hPlayer, 1, 100, @TimerProc())
PlayVideo(#Video, hPlayer)
VideoSetVolume(#Video, Volume)
;Volume= 1000
; vit=1
; vitesse_base=VideoGetSpeed(#Video)
retaille_film()
SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
;ActivateGadget(#Trk_Seek)
SetGadgetText(#Txt_Title, filtre_nom_film(nom_fichier(nv_Film$)))
Else
SetGadgetText(#Txt_Title, "Impossible de charger le film")
resul=MessageRequester("On essaye ?","Sous win98 les noms trop long ne sont pas accepté."+Chr(10)+Chr(13)+"Voulez vous réduire le nom ?",#PB_MessageRequester_YesNo )
If resul=6
nv_titre$=InputRequester("Changement du nom du film :","Indiquer le nouveau nom :",nom_fichier_ss_ext(nom_fichier(nv_Film$)))
If nv_titre$<>"" And nv_titre$<>nom_fichier(nv_Film$)
RenameFile(nv_Film$,path(nv_Film$)+nv_titre$+ext(nv_Film$))
;MessageRequester(nv_Film$,path(nv_Film$)+nv_titre$+ext(nv_Film$))
remplir_liste_film()
EndIf
EndIf
EndIf
EndIf
EndProcedure
Procedure affiche_defilement_thread(ess)
affiche_defilement=1
temps_attente=0
Repeat
temps_attente=temps_attente+1
HideGadget( #Trk_Seek,0)
HideGadget( #temps,0)
Delay(100)
Until temps_attente>50
HideGadget( #Trk_Seek,1)
HideGadget( #temps,1)
affiche_defilement=0
PostMessage_(WindowID(#fenetre_base),#WM_USER+1,1,1)
EndProcedure
Procedure efface_ligne_temps_thread(ess)
Repeat
Delay(2000)
If Full=1
EndIf
Until fin=1
EndProcedure
;}
version$="13/01/06"
initialisation()
Open_fenetre_base()
;ListIconGadget = GadgetID(#liste_film)
init_fenetre()
SetGadgetText(#Txt_Title, version$)
SetGadgetState(#txt_souris,souris)
SetGadgetText(#string_rep_vu,repertoire_vu$)
CreateThread(@efface_ligne_temps_thread(),1)
Debug ReportErrors(#True)
vit=1
quit=0
Repeat
EventID = WaitWindowEvent()
;If EventID<>0 : Debug EventID : EndIf
Select EventWindowID()
Case #fenetre_base
Select EventID
Case #WM_USER+1 ;fin de cacher les gadget temps et track
If Full=0
HideGadget( #Trk_Seek,0)
HideGadget( #temps,0)
EndIf
Case #WM_MOUSEMOVE ;{déplacement du film avec la sourie
;Debug "mouse mouve"
;Debug WindowMouseX()
;pos$=recup_emplacement_sur_image()
If Full = 1
;debug "full"
;If affiche_defilement=0
; CreateThread(@efface_ligne_temps_thread(),1)
;EndIf
;temps_attente=0
x_mouse=WindowMouseX()
y_mouse=WindowMouseY()
If souris
If x_mouse>pos_x_mouse_attente
temps_affiche_barre=0
PauseVideo(#Video)
pos=VideoPosition(#Video)+8000
If pos>VideoLength(#Video) : pos=VideoLength(#Video)-8000 : EndIf
VideoSeek(#Video,pos)
PlayVideo(#Video, hPlayer)
SetMouseXY(pos_x_mouse_attente,pos_y_mouse_attente )
EndIf
If x_mouse<pos_x_mouse_attente
temps_affiche_barre=0
PauseVideo(#Video)
pos=VideoPosition(#Video)-4000
If pos<0 : pos=0 : EndIf
VideoSeek(#Video,pos)
PlayVideo(#Video, hPlayer)
SetMouseXY(pos_x_mouse_attente,pos_y_mouse_attente )
EndIf
If y_mouse<>pos_y_mouse_attente
temps_affiche_barre=0
EndIf
;der_x_mouse=x_mouse
;InvalidateRect_(Hnd,@Re,#False)
EndIf
If MouseVisible
ShowCursor_(0)
MouseVisible = #False
EndIf
Else
If MouseVisible = #False
ShowCursor_(1)
MouseVisible = #True
EndIf
EndIf
;If WindowMouseX()>50 And WindowMouseX()<150 And WindowMouseY()>50 And WindowMouseY()<150
;clic_droit=1
;}
Case #WM_LBUTTONUP ;{pleine ecran entree sortie
If VideoLoaded
If Full = 1
Full = 0
temps_affiche_volume=100
InvalidateRect_(hPlayer,@Re,#False)
retaille_film()
vit=1
Else
If WindowMouseX() >largeur_liste And WindowHeight()-WindowMouseY()> limite_bas And WindowMouseY()> limite_haut;supprime les clic dans la liste
pos_x_mouse_attente=WindowMouseX()
pos_y_mouse_attente=WindowMouseY()
;ActivateGadget(#text_titre)
Full = 1
retaille_film()
vit=1
EndIf
EndIf
EndIf
;}
Case #WM_KEYDOWN ;{touche clavier
Debug "clavier"
Debug EventwParam()
Select EventwParam();{changement de volume avec page up et page down
Case 33; page up
If temps_affiche_volume>60 : der_volume=-1 : EndIf
temps_affiche_volume=0
Volume=Volume+10
If Volume>1000 :Volume=1000 : EndIf
VideoSetVolume(#Video, Volume)
SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
Case 34;page down
If temps_affiche_volume>60 : der_volume=-1 : EndIf
temps_affiche_volume=0
Volume=Volume-10
If Volume<0 :Volume=0 : EndIf
VideoSetVolume(#Video, Volume)
SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
;}
EndSelect
;}
Case #WM_RBUTTONDOWN ;{sortie du plein ecran avec le clic droit
If Full = 1
;debug VideoStatus(#Video)
If VideoStatus(#Video) = 2
temps_affiche_barre=0
PauseVideo(#Video)
ElseIf VideoStatus(#Video) = 3
ResumeVideo(#Video)
EndIf
Else
SetMouseXY(WindowWidth()/2-50,WindowHeight()/2+50)
Result = MessageRequester("Alerte","Voulez-vous quitter ?",#PB_MessageRequester_YesNo)
If Result = 6
quit=1
EndIf
EndIf
Case #WM_LBUTTONUP ;{clic souris
; Debug pos$
; Debug Str(x_image(WindowMouseX() ))+" / "+Str(y_image(WindowMouseY() ))
; If pos$="selec_voir"
; Voir_selection()
; EndIf
;
; If pos$="selec_deplacer"
; operation_selection(1)
; Ouvrir_repertoire()
; vignette()
; EndIf
;
; If pos$="selec_copier"
; operation_selection(0)
;
; EndIf
; If pos$="selec_vider"
; If FileSize(repertoire_execution$+"selection.txt")>0
; DeleteFile(repertoire_execution$+"selection.txt")
; EndIf
; vignette()
; EndIf
;}
;}
Case#PB_EventGadget
gadgetid= EventGadgetID()
Select gadgetid
Case #Trk_GeneralVolume ;{changement du volume
Volume=GetGadgetState(#Trk_GeneralVolume)
VideoSetVolume(#Video, Volume)
;}
Case #btn_quitter : quit=1
Case #btn_rep_plus ;{ajoute un répertoire
rep$=PathRequester("Ajout d'un répertoire",rep$)
If rep$<>""
AddGadgetItem(#liste_rep,-1,rep$)
EndIf
ExamineDirectory(0,rep$,"*.*")
Repeat
type=NextDirectoryEntry()
If type =2
nom_fichier$=DirectoryEntryName()
;debug ext$
If nom_fichier$<>"." And nom_fichier$<>".."
AddGadgetItem(#liste_rep,-1,rep$+nom_fichier$+"\")
EndIf
EndIf
Until type=0
sauverep()
;}
Case #btn_rep_moins;{supprime un répertoire
num=GetGadgetState(#liste_rep)
If num>-1
RemoveGadgetItem(#liste_rep, num)
sauverep()
Else
MessageRequester("Alerte","Il faut sélectionner un élément")
EndIf
;}
Case #liste_rep
Debug GetGadgetState(#liste_rep)
num_rep=GetGadgetState(#liste_rep)
;etat=GetGadgetItemState(#liste_rep,num_rep)
remplir_liste_film()
Debug num_rep
ActivateGadget(#liste_rep)
; SetGadgetItemState(#liste_rep,num_rep,etat)
Case #liste_film ;{Lance le film selectionné
Debug EventType()
Select EventType()
Case 0
num=GetGadgetState(#liste_film)
nv_Film$=GetGadgetItemText(#liste_film,num,num_colonne_rep)
Position=SendMessage_(GadgetID(#liste_film), #LVM_GETTOPINDEX, 0, 0)
nb_element= SendMessage_(GadgetID(#liste_film), 4136, 0, 0)
num_cliquer= GetGadgetState(#liste_film)
posi.POINT
SendMessage_(GadgetID(#liste_film), #LVM_GETITEMPOSITION, num_cliquer -nb_element/2, posi)
SendMessage_(GadgetID(#liste_film), #LVM_SCROLL, 0, posi\y)
Position=SendMessage_(GadgetID(#liste_film), #LVM_GETTOPINDEX, 0, 0)
SendMessage_(GadgetID(#liste_film), #LVM_GETITEMPOSITION, num_cliquer, posi)
;If num_film>num_cliquer
Debug num_cliquer-Position
SetMouseXY(GetMouseX(),posi\y+taille_font*4-5);taille_font*(num_cliquer-Position))
lire_film()
Case 1
PauseVideo(#Video)
pos=VideoPosition(#Video)+VideoLength(#Video)/20
If pos>VideoLength(#Video) : pos=VideoLength(#Video)-8000 : EndIf
VideoSeek(#Video,pos)
PlayVideo(#Video, hPlayer)
EndSelect
ActivateGadget(#Btn_Pause)
;}
Case #Btn_Pause ;{met en pause ou en lecture
; PlayVideo(#Video, hPlayer)
; ;Volume= VideoGetVolume(#Video)
; vit=1
; ;vitesse_base=VideoGetSpeed(#Video)
; retaille_film(1)
If VideoLoaded
;debug VideoStatus(#Video)
If VideoStatus(#Video) = 2
PauseVideo(#Video)
ElseIf VideoStatus(#Video) = 3
ResumeVideo(#Video)
EndIf
EndIf
;}
Case #Trk_Seek ;{barre de défilement du film
PauseVideo(#Video)
VideoSeek(#Video, GetGadgetState(#Trk_Seek))
PlayVideo(#Video, hPlayer)
;}
Case #btn_vu ;{déplace le film dans le répertoire vu
If VideoLoaded ;arret la video si elle est déjà en marche
SetGadgetText(#Txt_Title, "Film en cours de déplacement")
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
unite_film$=Left(nv_Film$,1)
Debug nv_Film$
Debug unite_film$+repertoire_vu$+nom_fichier(nv_Film$)
MakeSureDirectoryPathExists(unite_film$+repertoire_vu$+nom_fichier(nv_Film$))
;MessageRequester(nv_Film$,unite_film$+repertoire_vu$+nom_fichier(nv_Film$))
Delay(3000)
resu=RenameFile(nv_Film$,unite_film$+repertoire_vu$+nom_fichier(nv_Film$))
RemoveGadgetItem(#liste_film,num)
If OpenFile(#fichier_vu,"film_vu.txt")
FileSeek(Lof())
WriteStringN(nom_fichier(nv_Film$))
CloseFile(#fichier_vu)
EndIf
If resu
SetGadgetText(#Txt_Title, "Film déplacé dans Vu")
EndIf
Else
MessageRequester("Avertissement","Par sécurité le film doit être en lecture")
EndIf
;}
Case #btn_supprimer ;{supprime le film selectionner
If VideoLoaded ;arret la video si elle est déjà en marche
SetGadgetText(#Txt_Title, "Film en cours de suppression")
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
Delay(3000)
resu=DeleteFile(nv_Film$)
If resu=0
unite_film$=Left(nv_Film$,1)
MakeSureDirectoryPathExists(unite_film$+repertoire_vu$+"poub\"+nom_fichier(nv_Film$))
RenameFile(nv_Film$,unite_film$+repertoire_vu$+"poub\"+nom_fichier(nv_Film$))
SetGadgetText(#Txt_Title, "Film déplacé dans poub")
Else
SetGadgetText(#Txt_Title, "Film supprimé")
EndIf
RemoveGadgetItem(#liste_film,num)
If OpenFile(#fichier_supprime,"film_supprimer.txt")
FileSeek(Lof())
WriteStringN(nom_fichier(nv_Film$))
CloseFile(#fichier_supprime)
EndIf
Else
MessageRequester("Avertissement","Par sécurité le film doit être en lecture")
EndIf
;}
Case #btn_copie_lie ;{Pour les portables, copie et lie li film à partir du disque c:\
If VideoLoaded ;arret la video si elle est déjà en marche
If GetDiskFreeSpaceEx("c:") *1024*1024<FileSize(nv_Film$)
MessageRequester("Alerte","Le disque est plein,"+Chr(10)+"Libérez de l'espace en supprimant des film dans c:\film\")
Else
SetGadgetText(#Txt_Title, "Film en cours de déplacement")
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
MakeSureDirectoryPathExists("c:\film\")
Delay(3000)
Debug nv_Film$
Debug "c:\film\"+nom_fichier(nv_Film$)
resu=CopyFile(nv_Film$,"c:\film\"+nom_fichier(nv_Film$))
If resu
SetGadgetText(#Txt_Title, "Film déplacé dans Vu")
nv_Film$="c:\film\"+nom_fichier(nv_Film$)
lire_film()
Else
SetGadgetText(#Txt_Title, "Impossible de déplacé le film dans c:\film")
EndIf
EndIf
Else
MessageRequester("Avertissement","Par sécurité le film doit être en lecture")
EndIf
;}
;{******************* OPTION *****************************
Case #btn_font_plus;{agrandie la taille des police
If VideoLoaded ;arret la video si elle est déjà en marche
SetGadgetText(#Txt_Title, "Film en cours de déplacement")
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
EndIf
resize_font=1
taille_font=taille_font+1
;CloseWindow(#fenetre_base)
Open_fenetre_base()
SetGadgetState(#onglet,2)
init_fenetre()
resize_font=0
; EndIf
;resize_fenetre()
;}
Case #btn_font_moins;{diminue la taillle des polices
If VideoLoaded ;arret la video si elle est déjà en marche
SetGadgetText(#Txt_Title, "Film en cours de déplacement")
StopVideo(#Video)
FreeVideo(#Video)
KillTimer_(hPlayer, 1)
VideoLoaded=0
EndIf
If VideoLoaded =0
resize_font=1
taille_font=taille_font-1
;CloseWindow(#fenetre_base)
Open_fenetre_base()
init_fenetre()
SetGadgetState(#onglet,2)
resize_font=0
EndIf
;}
Case #txt_souris
souris=GetGadgetState(#txt_souris)
Case #rep_vu ;{selectionne le répertoire vu
nv_rep_vu$=PathRequester("Répertoire de déplacement pour les films déjà vu",repertoire_vu$)
If nv_rep_vu$<>""
repertoire_vu$=Right(nv_rep_vu$,Len(nv_rep_vu$)-1)
SetGadgetText(#string_rep_vu,repertoire_vu$)
EndIf
;}
Case #btn_rap0 ;{Rapport hauteur largeur
If rapport_film<>0
rapport_film=0
retaille_film()
EndIf
Case #btn_rap1
If rapport_film<>1
rapport_film=1
retaille_film()
EndIf
Case #btn_rap2
If rapport_film<>2
rapport_film=2
retaille_film()
EndIf
;}
EndSelect
EndSelect
EndSelect
Until EventID = #PB_EventCloseWindow Or quit=1
sauverep()
End