It is currently Mon Dec 09, 2019 6:54 am

All times are UTC + 1 hour




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: RecentFiles - Module
PostPosted: Sun Mar 24, 2019 3:05 am 
Online
Enthusiast
Enthusiast
User avatar

Joined: Sun Jul 07, 2013 11:35 am
Posts: 447
Location: Canada
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

Code:
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<

_________________
The Stone Age did not end due to a shortage of stones !


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye