Auto BackUp

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Auto BackUp

Message par DarkIchigo »

Salut a tous,

après de nombreux problème a mon taf avec notre serveur en carton j'ai décidé de me faire un prog d'auto BackUp
de mon fichier suivant l'heure.
Malheureusement je n'ai codé la possibilité d'ajouter qu'un seul fichier, par contre on peux faire la BackUp manuellement
ou automatiquement, les heures possibles vont de 09h00 => 18h00 par tranche de 30 min. Vous pouvez modifier ça dans les options
ainsi que le fichier à sauver, le répertoir où faire la BackUp et le nom du fichier une fois sauvé.

Par contre on ne rigole pas mais comme j'aime bien avoir une barre pour savoir ou j'en suis, j'en ai 'codé' une :D
C'est cheap mais bon comme je sais pas le faire pour mon exemple j'ai laissé tel quel.

Voila le code :

Code : Tout sélectionner

; ------------------------------------------------------------
; 
; Nom du projet : PureBasic - Auto BackUp
; Description   : Sauvegarde Un fichier automatiquement
; Version       : 1.8
; Programmé par : DarkIchigo
; Date          : 22/03/2011
; Mise à jour   : 07/04/2011
; 
; ------------------------------------------------------------

UsePNGImageDecoder() : InitNetwork()

;->>>> Déclaration variables / constantes <<<<
#CopyFlag = #PB_FileSystem_Recursive | #PB_FileSystem_Force
#Flag = #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_Invisible


Enumeration ;{ ...
   #Window_0						;
   	#Btn_BackUP					;
   	#Btn_Quit					;
   	#Btn_Settings				;
   	#Btn_Open					;
   	#Texte_Copy					;
   	#ProgressBar_Copy   		;
   	#File_To_Save				;
	#SytrayIco						;
		#Ico_Open					;
		#Ico_Idle					;
		#Ico_Saving					;
	#PopUp							;
		#PopUp_Reduire				;
		#PopUp_Agrandir			;
		#PopUp_Quiter				;
	#Opt_Windows					;
		#Opt_Frame3D_Heures		;
		#Opt_Tx_Heures				;
		#Opt_Check_Heures_09h00	;
		#Opt_Check_Heures_09h30	;
		#Opt_Check_Heures_10h00	;
		#Opt_Check_Heures_10h30	;
		#Opt_Check_Heures_11h00	;
		#Opt_Check_Heures_11h30	;
		#Opt_Check_Heures_12h00	;
		#Opt_Check_Heures_12h30	;
		#Opt_Check_Heures_13h00	;
		#Opt_Check_Heures_13h30	;
		#Opt_Check_Heures_14h00	;
		#Opt_Check_Heures_14h30	;
		#Opt_Check_Heures_15h00	;
		#Opt_Check_Heures_15h30	;
		#Opt_Check_Heures_16h00	;
		#Opt_Check_Heures_16h30	;
		#Opt_Check_Heures_17h00	;
		#Opt_Check_Heures_17h30	;
		#Opt_Check_Heures_18h00	;
		#Opt_Check_Heures_18h30	;
		#Opt_Frame3D_BackUp		;
		#Opt_Tx_BackUp				;
		#Opt_BackUp_Edit			;
		#Opt_BackUp_Btn			;
		#Opt_Frame3D_SavingPath	;
		#Opt_Tx_SavingPath		;
		#Opt_SavingPath_Edit		;
		#Opt_SavingPath_Btn		;
		#Opt_Frame3D_SaveName	;
		#Opt_Tx_SaveName			;
		#Opt_SavingName_Edit		;
		#Opt_Button_Ok				;
		#Opt_Button_Cancel		;
		#Opt_Button_Apply			;}
EndEnumeration ; ...

Global Home$			; Chemin de la BackUp
Global PathFile$		; Chemin complet du fichier a sauver 
Global File$			; Fichier a sauver
Global Quit, Flag.b, Mini
Global t09h00, t09h30, t10h00, t10h30, t11h00, t11h30, t12h00, t12h30, t13h00, t13h30
Global t14h00, t14h30, t15h00, t15h30, t16h00, t16h30, t17h00, t17h30, t18h00, t18h30

Declare BackUp()		; Procédure de BackUp								, BackUp Procedure
Declare Open_Prefs()	; Procédure d'ouverture de préférences			, Prefs. opening Procedure
Declare Save_Prefs()	; Procédure de sauvegarde des préférences		, Prefs. saving Procedure

;->>>> Procédures <<<<
Procedure GetIcone(WinHandle) 		; Récupère l'icone de base du programme enregistrée dans PB			, Get the PB ico set to the prog
	hInstance = GetWindowLong_(WinHandle, #GWL_HINSTANCE)
	app.s = Space(255)
	GetModuleFileName_(0, @app, 255)
	ProcedureReturn ExtractIcon_(hInstance, app, 0)
EndProcedure

Procedure Minimize(Flag)				; Affiche ou réduit la fenêtre dans le SysTray							, Show or hide in the SysTray the main window
	IcoOpenID	= CatchImage(#Ico_Open,		?Open)
	IcoIdleID	= CatchImage(#Ico_Idle,		?Idle)
	IcoSavingID	= CatchImage(#Ico_Saving,	?Saving)
	
	If Flag = 1
		Mini = 1
		DisableMenuItem(#PopUp, #PopUp_Reduire,  1)		; Désactive le menu 1 , Disable menu 1
		DisableMenuItem(#PopUp, #PopUp_Agrandir, 0)		; Active le menu 2    , Enable menu 2
		HideWindow(#Window_0, 1)      						; Réduit la fenêtre   , Minimize window
		ChangeSysTrayIcon(#SytrayIco, IcoIdleID)			; Change l'icone		 , Change the ico
	Else
		Mini = 0
		DisableMenuItem(#PopUp, #PopUp_Reduire,  0)		; Active le menu 1    , Enable menu 1
		DisableMenuItem(#PopUp, #PopUp_Agrandir, 1)		; Désactive le menu 2 , Disable menu 2
		HideWindow(#Window_0, 0)								; Affiche la fenêtre  , Display the window
		ChangeSysTrayIcon(#SytrayIco, IcoOpenID)			; Change l'icone		 , Change the ico
	EndIf
EndProcedure

Procedure Time_Tester(*minute)		; Vérifie si il est l'heure de lancer la BackUp							, Check if it's time to BackUp
	; vérifie si il est l'heure de lancer la BackUp	
	H01$ = "09h00"
	H02$ = "09h30"
	H03$ = "10h00"
	H04$ = "10h30"
	H05$ = "11h00"
	H06$ = "11h30"
	H07$ = "12h00"
	H08$ = "12h30"
	H09$ = "13h00"
	H10$ = "13h30"
	H11$ = "14h00"
	H12$ = "14h30"
	H13$ = "15h00"
	H14$ = "15h30"
	H15$ = "16h00"
	H16$ = "16h30"
	H17$ = "17h00"
	H18$ = "17h30"
	H19$ = "18h00"
	H20$ = "18h30"
	
	Repeat 
		Heure$ = FormatDate("%hhh%ii", Date())														; Récupère l'heure actuelle			, Get the actual time
		
		Select Heure$
		Case H01$ : If t09h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; Si l'heure actuelle = l'heure de	, If actual time = BackUp time
		Case H02$ : If t09h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; de BackUp & l'heure de BackUp = 1	, & BackUp time = 1 (activated in the
		Case H03$ : If t10h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; (activée dans les options)			, options) then start the BackUp
		Case H04$ : If t10h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; alors on lance la BackUp puis une	, and then a 1min delay to be sure
		Case H05$ : If t11h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; tempo de 1 min pour ne pas lancer	, not to start the same BackUp again
		Case H06$ : If t11h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf	; plusieurs fois la même BackUp		, 
		Case H07$ : If t12h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H08$ : If t12h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H09$ : If t13h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H10$ : If t13h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H11$ : If t14h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H12$ : If t14h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H13$ : If t15h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H14$ : If t15h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H15$ : If t16h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H16$ : If t16h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H17$ : If t17h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H18$ : If t17h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H19$ : If t18h00 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		Case H20$ : If t18h30 = 1 : Debug Heure$ : BackUp() : Delay(*minute) : EndIf
		EndSelect
	
		Delay(*minute/3)																					; Tempo de 20s pour être sur de ne	, 20s delay to be sur not to miss
	ForEver																									; pas oublié de BackUp					, a BackUp
EndProcedure

Procedure BackUp()						; Procédure de la BackUp														, The BackUp Procedure
	IcoOpenID	= CatchImage(#Ico_Open,		?Open)
	IcoIdleID	= CatchImage(#Ico_Idle,		?Idle)
	IcoSavingID	= CatchImage(#Ico_Saving,	?Saving)
	ChangeSysTrayIcon(#SytrayIco, IcoSavingID)												; Change l'ico du prog								, Change the prog ico
	
	Date$	 = FormatDate("%yyyy.%mm.%dd", Date())												; Recup la date actuelle							, Get the actual date
	Heure$ = FormatDate("%hhh%ii",		 Date())												; Recup l'heure actuelle							, Get the actual time
	
	SizeBite = FileSize(PathFile$)																; Recup la taille du fichier à BackUp			, Get the size of the BackUp file
	
	If SizeBite > 0																					; Si la taille > 0 le fichier existe			, If size > 0 the file existe 
		SizeKo.f = SizeBite/1024																	; donc on peux continuer							, so we can go on
		SizeMo.f = SizeBite/1048576
		Debug SizeKo
		SetGadgetAttribute(#ProgressBar_Copy, #PB_ProgressBar_Maximum, SizeKo)		; Attribue la taille du fichier au la			, Set the max of the ProgressBar
		SetGadgetState(#ProgressBar_Copy, 0)													; ProgressBar_Max puis l'init a 0				, at the size and init at 0
		
		SetCurrentDirectory(Home$)																	; Règle le dossier en actif						, Set the activ folder
		If FileSize(Home$+"\"+Date$) = -1														; Test si le dossier éxiste déjà					, Checks if the folder exist
			CreateDirectory(Date$)
			SetCurrentDirectory(Home$+"\"+Date$)												; Règle le dossier en actif						, Set the activ folder
			If FileSize(Home$+"\"+Date$+"\"+Heure$) = -1										; Test si le dossier éxiste déjà					, Checks if the folder exist
				CreateDirectory(Heure$)																; Créé le dossier										, Create the folder
				SetCurrentDirectory(Home$+"\"+Date$+"\"+Heure$)								; Règle le dossier en actif						, Set the activ folder
				CopyFile(PathFile$, Home$+"\"+Date$+"\"+Heure$+"\"+File$)				; Copie le fichier									, Copy the file
				Delay(50)
				For i = 1 To 3																					; Cheap trick to make us look like we have a fully
					SetGadgetState(#ProgressBar_Copy, i*(SizeKo/4)) : i = i + 1 : Delay(150); operationnal ProgressBar but let's face it, we don't...
				Next
				SetGadgetState(#ProgressBar_Copy, SizeKo)
			EndIf
			SetCurrentDirectory(Home$+"\"+Date$+"\"+Heure$)									; Règle le dossier en actif						, Set the activ folder
			CopyFile(PathFile$, Home$+"\"+Date$+"\"+Heure$+"\"+File$)					; Copie le fichier									, Copy the file
			Delay(50)
			For i = 1 To 3																						; Cheap trick to make us look like we have a fully
				SetGadgetState(#ProgressBar_Copy, i*(SizeKo/4)) : i = i + 1 : Delay(150)	; operationnal ProgressBar but let's face it, we don't...
			Next
			SetGadgetState(#ProgressBar_Copy, SizeKo)
		EndIf
		SetCurrentDirectory(Home$+"\"+Date$)													; Règle le dossier en actif						, Set the activ folder
		If FileSize(Home$+"\"+Date$+"\"+Heure$) = -1											; Test si le dossier éxiste déjà 				, Checks if the folder exists
			CreateDirectory(Heure$)
			SetCurrentDirectory(Home$+"\"+Date$+"\"+Heure$)									; Règle le dossier en actif						, Set the activ folder
			CopyFile(PathFile$, Home$+"\"+Date$+"\"+Heure$+"\"+File$)					; Copie le fichier									, Copy the file
			Delay(50)
			For i = 1 To 3																						; Cheap trick to make us look like we have a fully
				SetGadgetState(#ProgressBar_Copy, i*(SizeKo/4)) : i = i + 1 : Delay(150)	; operationnal ProgressBar but let's face it, we don't...
			Next
			SetGadgetState(#ProgressBar_Copy, SizeKo)
		EndIf
		SetCurrentDirectory(Home$+"\"+Date$+"\"+Heure$)										; Règle le dossier en actif						, Set the activ folder
		If FileSize(Home$+"\"+Date$+"\"+Heure$+"\"+File$) = -1							; Test si le dossier du éxiste déjà 			, Checks if the folder exists
			CopyFile(PathFile$, Home$+"\"+Date$+"\"+Heure$+"\"+File$)					; Copie le fichier									, Copy the file
			Delay(50)
			For i = 1 To 3																						; Cheap trick to make us look like we have a fully
				SetGadgetState(#ProgressBar_Copy, i*(SizeKo/4)) : i = i + 1 : Delay(150)	; operationnal ProgressBar but let's face it, we don't...
			Next
			SetGadgetState(#ProgressBar_Copy, SizeKo)
		EndIf		
	EndIf
	
	SetCurrentDirectory(Home$)																		; Réinitialise le dossier de BackUp en actif	, Reset the BackUp flder in activ
	Delay(750) : SetGadgetState(#ProgressBar_Copy, 0)										; Réinitialise la ProgressBar a 0				, Reset the ProgressBar to 0
	Select Mini																							; Test si le programme était caché				, Check if the prog was hidden
	Case 1 : ChangeSysTrayIcon(#SytrayIco, IcoIdleID)										; Remet l'icone Idle									, Set back the ico to Idle
	Case 0 : ChangeSysTrayIcon(#SytrayIco, IcoOpenID)										; Remet l'icone Open									, Set back the ico to Open
	EndSelect
EndProcedure

Procedure Options()						; Fenêtre des options															, Options window
	Open_Prefs()							; Ouvre le fichier des Prefs. et lis les données						, Open the Prefs. file and reads the datas
	
	X_Wind = WindowX(#Window_0) : Y_Wind = WindowY(#Window_0)	; Ouvre la fenêtre des options			, Open the option window
	OpenWindow(#Opt_Windows, X_Wind+25, Y_Wind+25, 400, 475+7, "Options - Auto BackUp", #PB_Window_BorderLess|#PB_Window_Tool|#PB_Window_WindowCentered|#PB_Window_SystemMenu, #Window_0)
	
	;Choix de l'heure
	Frame3DGadget(#Opt_Frame3D_Heures, 2, 3, 400-4, 20+(10*20)+15+2,"" , #PB_Frame3D_Flat)
	
	TextGadget(#Opt_Tx_Heures, 5, 15, 380/2-5, 15, "Choisissez les heures de l'Auto BackUp :", #PB_Text_Center) : h = 20
	CheckBoxGadget(#Opt_Check_Heures_09h00, 105, 15+h, 380/4-5, 15, "09h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_09h00, t09h00)
	CheckBoxGadget(#Opt_Check_Heures_09h30, 105, 15+h, 380/4-5, 15, "09h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_09h30, t09h30)
	CheckBoxGadget(#Opt_Check_Heures_10h00, 105, 15+h, 380/4-5, 15, "10h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_10h00, t10h00)
	CheckBoxGadget(#Opt_Check_Heures_10h30, 105, 15+h, 380/4-5, 15, "10h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_10h30, t10h30)
	CheckBoxGadget(#Opt_Check_Heures_11h00, 105, 15+h, 380/4-5, 15, "11h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_11h00, t11h00)
	CheckBoxGadget(#Opt_Check_Heures_11h30, 105, 15+h, 380/4-5, 15, "11h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_11h30, t11h30)
	CheckBoxGadget(#Opt_Check_Heures_12h00, 105, 15+h, 380/4-5, 15, "12h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_12h00, t12h00)
	CheckBoxGadget(#Opt_Check_Heures_12h30, 105, 15+h, 380/4-5, 15, "12h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_12h30, t12h30)
	CheckBoxGadget(#Opt_Check_Heures_13h00, 105, 15+h, 380/4-5, 15, "13h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_13h00, t13h00)
	CheckBoxGadget(#Opt_Check_Heures_13h30, 105, 15+h, 380/4-5, 15, "13h30") : h = 20 : SetGadgetState(#Opt_Check_Heures_13h30, t13h30)
	CheckBoxGadget(#Opt_Check_Heures_14h00, 255, 15+h, 380/4-5, 15, "14h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_14h00, t14h00)
	CheckBoxGadget(#Opt_Check_Heures_14h30, 255, 15+h, 380/4-5, 15, "14h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_14h30, t14h30)
	CheckBoxGadget(#Opt_Check_Heures_15h00, 255, 15+h, 380/4-5, 15, "15h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_15h00, t15h00)
	CheckBoxGadget(#Opt_Check_Heures_15h30, 255, 15+h, 380/4-5, 15, "15h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_15h30, t15h30)
	CheckBoxGadget(#Opt_Check_Heures_16h00, 255, 15+h, 380/4-5, 15, "16h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_16h00, t16h00)
	CheckBoxGadget(#Opt_Check_Heures_16h30, 255, 15+h, 380/4-5, 15, "16h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_16h30, t16h30)
	CheckBoxGadget(#Opt_Check_Heures_17h00, 255, 15+h, 380/4-5, 15, "17h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_17h00, t17h00)
	CheckBoxGadget(#Opt_Check_Heures_17h30, 255, 15+h, 380/4-5, 15, "17h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_17h30, t17h30)
	CheckBoxGadget(#Opt_Check_Heures_18h00, 255, 15+h, 380/4-5, 15, "18h00") : h + 20 : SetGadgetState(#Opt_Check_Heures_18h00, t18h00)
	CheckBoxGadget(#Opt_Check_Heures_18h30, 255, 15+h, 380/4-5, 15, "18h30") : h + 20 : SetGadgetState(#Opt_Check_Heures_18h30, t18h30)
	
	;Fichier a Sauver
	Frame3DGadget(#Opt_Frame3D_BackUp, 2, 235+10, 400-4, 65,"" ,#PB_Frame3D_Flat)
	
	TextGadget(#Opt_Tx_BackUp, 5, 247+13, 400, 20, "Fichier que vous vouler Sauver :", #PB_Text_Center)
	StringGadget(#Opt_BackUp_Edit, 5+2, 260+20, 400-5-80-10-2, 20, PathFile$)
	ButtonGadget(#Opt_BackUp_Btn, 400-5-80-2, 260+20, 80, 20, "Parcourir")
	
	;Dossier de sauvegarde
	Frame3DGadget(#Opt_Frame3D_SavingPath, 2, 305+10, 400-4, 65,"" ,#PB_Frame3D_Flat)
	
	TextGadget(#Opt_Tx_SavingPath, 5, 320+10, 400, 20, "Dossier de sauvegarde des BackUp :", #PB_Text_Center)
	StringGadget(#Opt_SavingPath_Edit, 5+2, 325+25, 400-5-80-10-2, 20, Home$)
	ButtonGadget(#Opt_SavingPath_Btn, 400-5-80-2, 325+25, 80, 20, "Parcourir")
	
	;Nom de la BackUp
	Frame3DGadget(#Opt_Frame3D_SaveName, 2, 380+10, 400-4, 55,"" ,#PB_Frame3D_Flat)
	
	TextGadget(#Opt_Tx_SaveName, 5, 390+10, 400, 20, "Nom du fichier de la BackUp :", #PB_Text_Center)
	StringGadget(#Opt_SavingName_Edit, 5+2, 390+25, 400-5-10, 20, File$)	
	
	BtnX = 245 : OkX = 35 : CancelX = 55 : ApplyX = 50 : BtnY = WindowHeight(#Opt_Windows)
	ButtonGadget(#Opt_Button_Ok,     BtnX, BtnY-22-7, OkX, 	 22, "Ok") 		 : BtnX = BtnX+OkX+5
	ButtonGadget(#Opt_Button_Cancel, BtnX, BtnY-22-7, CancelX, 22, "Cancel") : BtnX = BtnX+CancelX+5
	ButtonGadget(#Opt_Button_Apply,  BtnX, BtnY-22-7, ApplyX,  22, "Apply")
EndProcedure

Procedure Open_Prefs()					; Ouvre les Prefs. et lis les données										, Open the Prefs. and read the datas
	OpenPreferences(Home$+"\Prefs.pref")
	
		PreferenceGroup("Folders")
			Home$ 	 = ReadPreferenceString("Home"		, "D:\Back UP\0. Suivit reception")
			PathFile$ = ReadPreferenceString("PathFile"	, "G:\Share\Olivier\0. Suivit_Commandes_Receptions.xls")
			File$ 	 = ReadPreferenceString("File"		, "0. Suivit_Commandes_Receptions.xls")
			
		PreferenceGroup("Hours")
			t09h00	 = ReadPreferenceInteger("09h00"		, 0)
			t09h30	 = ReadPreferenceInteger("09h30"		, 1)
			t10h00	 = ReadPreferenceInteger("10h00"		, 0)
			t10h30	 = ReadPreferenceInteger("10h30"		, 0)
			t11h00	 = ReadPreferenceInteger("11h00"		, 0)
			t11h30	 = ReadPreferenceInteger("11h30"		, 0)
			t12h00	 = ReadPreferenceInteger("12h00"		, 0)
			t12h30	 = ReadPreferenceInteger("12h30"		, 0)
			t13h00	 = ReadPreferenceInteger("13h00"		, 0)
			t13h30	 = ReadPreferenceInteger("13h30"		, 1)
			t14h00	 = ReadPreferenceInteger("14h00"		, 0)
			t14h30	 = ReadPreferenceInteger("14h30"		, 0)
			t15h00	 = ReadPreferenceInteger("15h00"		, 0)
			t15h30	 = ReadPreferenceInteger("15h30"		, 0)
			t16h00	 = ReadPreferenceInteger("16h00"		, 0)
			t16h30	 = ReadPreferenceInteger("16h30"		, 0)
			t17h00	 = ReadPreferenceInteger("17h00"		, 0)
			t17h30	 = ReadPreferenceInteger("17h30"		, 1)
			t18h00	 = ReadPreferenceInteger("18h00"		, 0)
			t18h30	 = ReadPreferenceInteger("18h30"		, 0)
			
	ClosePreferences()
EndProcedure

Procedure Save_Prefs()					; Réécris le fichier Prefs. avec les nouvelles options				, Rewrite the Prefs. file with the new datas
	If CreatePreferences(Home$+"\Prefs.pref") <> 0
		
		PreferenceGroup("Global")
			WritePreferenceString("AppName", "Auto BackUp")
			WritePreferenceString("Version", "1.8")
			WritePreferenceString("Date"	 , "06.04.2011")
			PreferenceComment("")
			
		PreferenceGroup("Folders")
			WritePreferenceString("PathFile"	, GetGadgetText(#Opt_BackUp_Edit))								; Fichier à sauver
			WritePreferenceString("Home"		, GetGadgetText(#Opt_SavingPath_Edit))							; Dossier de BackUp
			WritePreferenceString("File"		, GetGadgetText(#Opt_SavingName_Edit))							; Nom du fichier de BackUp
			PreferenceComment("")
		
		PreferenceGroup("Hours")
			WritePreferenceInteger("09h00"	, GetGadgetState(#Opt_Check_Heures_09h00))					; 0 = désactivé
			WritePreferenceInteger("09h30"	, GetGadgetState(#Opt_Check_Heures_09h30))					; 1 = activé
			WritePreferenceInteger("10h00"	, GetGadgetState(#Opt_Check_Heures_10h00))					; 
			WritePreferenceInteger("10h30"	, GetGadgetState(#Opt_Check_Heures_10h30))					; 
			WritePreferenceInteger("11h00"	, GetGadgetState(#Opt_Check_Heures_11h00))					; 
			WritePreferenceInteger("11h30"	, GetGadgetState(#Opt_Check_Heures_11h30))					; 
			WritePreferenceInteger("12h00"	, GetGadgetState(#Opt_Check_Heures_12h00))					; 
			WritePreferenceInteger("12h30"	, GetGadgetState(#Opt_Check_Heures_12h30))					; 
			WritePreferenceInteger("13h00"	, GetGadgetState(#Opt_Check_Heures_13h00))					; 
			WritePreferenceInteger("13h30"	, GetGadgetState(#Opt_Check_Heures_13h30))					; 
			WritePreferenceInteger("14h00"	, GetGadgetState(#Opt_Check_Heures_14h00))					; 
			WritePreferenceInteger("14h30"	, GetGadgetState(#Opt_Check_Heures_14h30))					; 
			WritePreferenceInteger("15h00"	, GetGadgetState(#Opt_Check_Heures_15h00))					; 
			WritePreferenceInteger("15h30"	, GetGadgetState(#Opt_Check_Heures_15h30))					; 
			WritePreferenceInteger("16h00"	, GetGadgetState(#Opt_Check_Heures_16h00))					; 
			WritePreferenceInteger("16h30"	, GetGadgetState(#Opt_Check_Heures_16h30))					; 
			WritePreferenceInteger("17h00"	, GetGadgetState(#Opt_Check_Heures_17h00))					; 
			WritePreferenceInteger("17h30"	, GetGadgetState(#Opt_Check_Heures_17h30))					; 
			WritePreferenceInteger("18h00"	, GetGadgetState(#Opt_Check_Heures_18h00))					; 
			WritePreferenceInteger("18h30"	, GetGadgetState(#Opt_Check_Heures_18h30))					; 
		
		ClosePreferences()
	Else	
		MessageRequester("Error", "Impossible de sauver le fichier '"+Home$+"\Prefs.pref'")
	EndIf
	
	Open_Prefs()							; Réouvre les Prefs. pour charger les nouvelles options				, Re-open the Prefs to load the new options
EndProcedure

;->>>> Initialisation programme <<<<
hwnd = OpenWindow(#Window_0, 0, 0, 500, 220, "Auto BackUp", #Flag)				; Création de la fenêtre de base	, Creation of the main window
	ButtonGadget(#Btn_BackUP, 50,  50, 400, 80, "Back it Up !!")					; Boutton de BackUp manuelle		, Manual BackUp button
	ButtonGadget(#Btn_Settings, 	  50, 		 15, 80, 25, "Settings")			; Boutton d'accès aux options		,
	ButtonGadget(#Btn_Open,  500-80-50, 		 15, 80, 25, "Open")					; Boutton d'ouverture du dossier de BackUp
	ButtonGadget(#Btn_Quit,  500-80-50, 220-25-10, 80, 25, "Quit")					; Boutton de fermeture de la fenêtre (pas du prog.)
	TextGadget(#Texte_Copy, 50, 135, 400, 25, "Avancement de la sauvegarde :")
	ProgressBarGadget(#ProgressBar_Copy, 50, 160, 400, 15, 0, 100)					; ProgressBar pour l'avancement de la copie
	
	hIconSysTray = GetIcone(hwnd)
	AddSysTrayIcon(#SytrayIco, hwnd, hIconSysTray)										; Ajoute l'icône dans le SysTray	, Add the icon in the SysTray
		SysTrayIconToolTip(#SytrayIco, "|| Auto BackUp ||"+Chr(10)+"Green : Idle"+Chr(10)+"Blue : Opened"+Chr(10)+"Red : Saving")
	CreatePopupMenu(#PopUp)																		; Crée un menu Pop-Up				, Create PopUp menu
	MenuItem(#PopUp_Reduire,  "Réduire...")												; Cache la fenêtre dans SysTray	, Hide the main window in the SysTray
	MenuItem(#PopUp_Agrandir, "Agrandir...")												; Agrandis la fenêtre				, Show main window
	MenuBar()																						; Ajoute un séparateur				, add a separator
	MenuItem(#PopUp_Quiter, "Quitter")														; Quite le programme					, Quit the program
	
	DisableMenuItem(#PopUp, #PopUp_Reduire,  1)											; Menu inactif							, Item disabled
	DisableMenuItem(#PopUp, #PopUp_Agrandir, 0)											; Menu actif							, Item enabled
	
; 	If Home$ = ""																					; Test si le chemin de BackUp		, Test if the BackUp folder is set
; 		Home$ = PathRequester("Chemin de sauvegarde...", "C:\")						; est réglé, sinon demande à		, if not ask the user where to set it
; 	EndIf																								; l'utilisateur de le sélectionner
	
	OpenPreferences(Home$ + "\Prefs.pref")													; Ouvre le fichier de préférences, Open the Prefs. file
	PreferenceGroup("Folders")
		Home$ 	 = ReadPreferenceString("Home"		, "D:\Back UP\0. Suivit reception")
		PathFile$ = ReadPreferenceString("PathFile"	, "G:\Share\Olivier\0. Suivit_Commandes_Receptions.xls")
		File$ 	 = ReadPreferenceString("File"		, "0. Suivit_Commandes_Receptions.xls")
	ClosePreferences()
	
;->>>> Boucle principale <<<<
Thread_Time_Tester = CreateThread(@Time_Tester(), 60000)								; Lance un thread qui vérifie l'heure	, Open a Thread to check the time
Quit = 0
Repeat
	Select EventWindow()
	
	;: Fenêtre principale ::
	Case #Window_0
		Select WaitWindowEvent()
		Case #PB_Event_SysTray
			Select EventType()
			Case #PB_EventType_RightClick			: DisplayPopupMenu(#PopUp, hwnd)		; Affiche le menu PopUp						, Show PopUp Menu
			Case #PB_EventType_LeftDoubleClick	: Minimize(0)								; Affiche la fenêtre							, Show main window
			EndSelect
		Case #PB_Event_Menu
			Select EventMenu()
			Case #PopUp_Reduire	: Minimize(1)													; Cache la fanêtre dans le SysTray		, Hide in the SysTray
			Case #PopUp_Agrandir	: Minimize(0)													; Affiche la fenêtre							, Show main window
			Case #PopUp_Quiter	: Quit = 1 : ClosePreferences()
			EndSelect
		Case #PB_Event_Gadget
			Select EventGadget()
			Case #Btn_BackUP	: BackUp()															; Lance le BackUp								, Start a manual BackUp
			Case #Btn_Settings: Options()															; Ouvre les options							, Open the options window
			Case #Btn_Open 	: RunProgram(Home$)												; Ouvre le dossier de BackUp				, Open the BackUp folder
			Case #Btn_Quit		: SetGadgetState(#ProgressBar_Copy, 0) : Minimize(1)	; Cache la fanêtre dans le SysTray		, Hide in the SysTray
			EndSelect
		Case #PB_Event_CloseWindow : SetGadgetState(#ProgressBar_Copy, 0) : Minimize(1)
		EndSelect
	 
   ;: Fenêtre des Options ::
	Case #Opt_Windows
		Select WaitWindowEvent()
		Case #PB_Event_Gadget
			Select EventGadget()
			Case #Opt_SavingPath_Btn
				Home$ = PathRequester("Dossier de la BackUp", "D:\Back UP\0. Suivit reception")
				SetGadgetText(#Opt_SavingPath_Edit, Home$)
			Case #Opt_BackUp_Btn	
				PathFile$ = OpenFileRequester("Fichier à Sauver", "G:\Share\Olivier\0. Suivit_Commandes_Receptions.xls", "Tous les fichiers [*.*]|*.*", 0)
				SetGadgetText(#Opt_BackUp_Edit, PathFile$)
			Case #Opt_Button_Ok		: Save_Prefs() : CloseWindow(#Opt_Windows)		; Sauve et ferme les options				, Save and close the options
			Case #Opt_Button_Cancel : CloseWindow(#Opt_Windows)							; Annule et ferme les options				, Cancel and close the options
			Case #Opt_Button_Apply	: Save_Prefs()												; Sauve les options sans fermer			, Save the options without closing
			EndSelect
		Case #PB_Event_CloseWindow : CloseWindow(#Opt_Windows)							; Ferme la fenêtre des options			, Close the options window
		EndSelect
	EndSelect
Until Quit = 1
End

;->>>> Datas <<<<
DataSection
	Open		: IncludeBinary "E:\PureBasic\_Datas\_Auto_BackUp\Open.png"				; Icone du prog quand ouvert				, Ico when open	
	Idle		: IncludeBinary "E:\PureBasic\_Datas\_Auto_BackUp\Idle.png"				; Icone du prog en temps normal			, Ico when idle
	Saving	: IncludeBinary "E:\PureBasic\_Datas\_Auto_BackUp\Saving.png"			; Icone du prog pendant la BackUp		, Ico whan saving
EndDataSection
Si vous avez des amélioration ou des bugs n'hésitez pas a poster :)
En espérant que ça serve a quelqu'un un jour :lol: .


EDIT : Voici un pack les image ainsi que l'ico a attribuer au prog dans PB :
http://www.filesonic.com/file/854956321/_Auto_BackUp.7z
et pour vous rassurer :
http://www.virustotal.com/file-scan/rep ... 1303886969
Dernière modification par DarkIchigo le mer. 27/avr./2011 7:52, modifié 2 fois.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Auto BackUp

Message par dayvid »

Bon courrage a toi @DarkIchigo :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Auto BackUp

Message par DarkIchigo »

Merci Dayvid, normalement ça devrai le faire maintenant.

Faites moi savoir si y'a des bugs ou autre chez vous ou si vous avez des améliorations
ou meilleures façons de faire (bon ok c'est pas difficile ça :lol: )

Perso je l'utilise sur Windows XP x86.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Auto BackUp

Message par dayvid »

Dit moi DarkIchigo

Pourrais-tu nous donner un lien avec ton programme entier (codes, icones, etc.)
pour qu'ont puisse tester, notamment moi :wink:

Merci d'avance :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre