RecentFiles - Module
Posted: Sun Mar 24, 2019 3:05 am
Hello everyone,
This is something I made for one of my project and I'm releasing here in hope it will be useful to someone else.
Best regards
StarBootics
This is something I made for one of my project and I'm releasing here in hope it will be useful to someone else.
Best regards
StarBootics
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; AUTOMATICALLY GENERATED CODE, DO NOT MODIFY
; UNLESS YOU REALLY, REALLY, REALLY MEAN IT !!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code generated by : Dev-Module - V1.0.0 Beta
; Project name : RecentFiles - Module
; File name : RecentFiles - Module.pb
; File Version : 1.0.0
; Programmation : OK
; Programmed by : StarBootics
; Creation Date : 23-03-2019
; Last update : 23-03-2019
; Coded for PureBasic : V5.70 LTS
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DeclareModule RecentFiles
Declare.a GetHistoricSize()
Declare.s GetFileNames()
Declare SetHistoricSize(P_HistoricSize.a)
Declare Initialize(P_HistoricSize.a)
Declare Reset()
Declare.l LinearSearchFileNames(P_FileNames.s, P_CaseSensitive.b = #True)
Declare SelectFileNames(P_Index.l)
Declare FirstFileNames()
Declare LastFileNames()
Declare PreviousFileNames()
Declare NextFileNames()
Declare ResetFileNames()
Declare ClearFileNames()
Declare FileNamesIndex()
Declare FileNamesSize()
Declare ReadPrefs(P_GroupName.s)
Declare WritePrefs(P_GroupName.s)
Declare InsertNewFile(P_NewFileName.s)
EndDeclareModule
Module RecentFiles
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Structure declaration <<<<<
Structure Instance
HistoricSize.a
List FileNames.s()
EndStructure
Global Instance.Instance
; <<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The observators <<<<<
Procedure.a GetHistoricSize()
ProcedureReturn Instance\HistoricSize
EndProcedure
Procedure.s GetFileNames()
ProcedureReturn Instance\FileNames()
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The mutators <<<<<
Procedure SetHistoricSize(P_HistoricSize.a)
Instance\HistoricSize = P_HistoricSize
While ListSize(Instance\FileNames()) > Instance\HistoricSize
LastElement(Instance\FileNames())
DeleteElement(Instance\FileNames())
Wend
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Initialize operator <<<<<
Procedure Initialize(P_HistoricSize.a)
; ClearStructure(Instance, Instance)
; InitializeStructure(Instance, Instance)
Instance\HistoricSize = P_HistoricSize
ClearList(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Reset operator <<<<<
Procedure Reset()
; ResetStructure(Instance, Instance)
Instance\HistoricSize = 0
FreeList(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The linear search linked list operator(s) <<<<<
Procedure.l LinearSearchFileNames(P_FileNames.s, P_CaseSensitive.b = #True)
Protected IsFoundAtIndex.l = -1
If P_CaseSensitive = #True
ForEach Instance\FileNames()
If UCase(Instance\FileNames()) = UCase(P_FileNames)
IsFoundAtIndex = ListIndex(Instance\FileNames())
Break
EndIf
Next
Else
ForEach Instance\FileNames()
If Instance\FileNames() = P_FileNames
IsFoundAtIndex = ListIndex(Instance\FileNames())
Break
EndIf
Next
EndIf
ProcedureReturn IsFoundAtIndex
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Select in linked list operator(s) <<<<<
Procedure SelectFileNames(P_Index.l)
ProcedureReturn SelectElement(Instance\FileNames(), P_Index)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The First element in linked list operator(s) <<<<<
Procedure FirstFileNames()
ProcedureReturn FirstElement(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Last element in linked list operator(s) <<<<<
Procedure LastFileNames()
ProcedureReturn LastElement(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Previous element in linked list operator(s) <<<<<
Procedure PreviousFileNames()
ProcedureReturn PreviousElement(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Next element in linked list operator(s) <<<<<
Procedure NextFileNames()
ProcedureReturn NextElement(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Reset linked list operator(s) <<<<<
Procedure ResetFileNames()
ResetList(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Clear linked list operator(s) <<<<<
Procedure ClearFileNames()
ClearList(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Index in the linked list operator(s) <<<<<
Procedure FileNamesIndex()
ProcedureReturn ListIndex(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The Size of the linked list operator(s) <<<<<
Procedure FileNamesSize()
ProcedureReturn ListSize(Instance\FileNames())
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Read preferences group <<<<<
Procedure ReadPrefs(P_GroupName.s)
PreferenceGroup(P_GroupName)
Instance\HistoricSize = ReadPreferenceLong("HistoricSize", Instance\HistoricSize)
For FileNamesID = 0 To Instance\HistoricSize - 1
AddElement(Instance\FileNames())
Instance\FileNames() = ReadPreferenceString("FileNames_" + Str(FileNamesID), Instance\FileNames())
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Write preferences group <<<<<
Procedure WritePrefs(P_GroupName.s)
PreferenceGroup(P_GroupName)
WritePreferenceLong("HistoricSize", Instance\HistoricSize)
ForEach Instance\FileNames()
WritePreferenceString("FileNames_" + Str(ListIndex(Instance\FileNames())), Instance\FileNames())
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< The InsertNewFile operator <<<<<
Procedure InsertNewFile(P_NewFileName.s)
If LinearSearchFileNames(P_NewFileName) = -1
ResetList(Instance\FileNames())
AddElement(Instance\FileNames())
Instance\FileNames() = P_NewFileName
Else
DeleteElement(Instance\FileNames())
ResetList(Instance\FileNames())
AddElement(Instance\FileNames())
Instance\FileNames() = P_NewFileName
EndIf
If ListSize(Instance\FileNames()) > Instance\HistoricSize
LastElement(Instance\FileNames())
DeleteElement(Instance\FileNames())
EndIf
EndProcedure
EndModule
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code generated in : 00.001 seconds (263000.00 lines/second) <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
CompilerIf #PB_Compiler_IsMainFile
RecentFiles::SetHistoricSize(5)
For Index = 0 To 5
RecentFiles::InsertNewFile("File " + Str(Index) + ".txt")
Next
RecentFiles::ResetFileNames()
While RecentFiles::NextFileNames()
Debug RecentFiles::GetFileNames()
Wend
RecentFiles::InsertNewFile("File " + Str(3) + ".txt")
Debug ""
RecentFiles::ResetFileNames()
While RecentFiles::NextFileNames()
Debug RecentFiles::GetFileNames()
Wend
RecentFiles::InsertNewFile("File " + Str(6) + ".txt")
Debug ""
If RecentFiles::FirstFileNames()
Repeat
Debug RecentFiles::GetFileNames()
Until RecentFiles::NextFileNames() = #Null
EndIf
RecentFiles::SetHistoricSize(3)
Debug ""
RecentFiles::ResetFileNames()
While RecentFiles::NextFileNames()
Debug RecentFiles::GetFileNames()
Wend
CompilerEndIf
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<