Jump to content

FileOpenDialog: Random Folder/File Selection


 Share

Go to solution Solved by mr-es335,

Recommended Posts

Good day,

The following works...but as can be observed...the script is rather "clumsy"..

; -----------------------------------------------
#include <FileConstants.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
; -----------------------------------------------
; SECTION A: Select the Session .elds
; Note: The total .edls is anywhere from 1 to 16
Local Const $sMessage1="Select .edl file"
Local $SRC1="E:\Master_Backup\Type_1"
Local $sFileOpenDialog1=FileOpenDialog($sMessage1, $SRC1, "Session File (*.edl)", BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT))
; -----------------
Local Const $sMessage2="Select .edl file"
Local $SRC2="E:\Master_Backup\Type_1"
Local $sFileOpenDialog2=FileOpenDialog($sMessage2, $SRC2, "Session File (*.edl)", BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT))
; -----------------------------------------------
Local Const $sMessage3="Select .edl file"
Local $SRC3="E:\Master_Backup\Type_1"
Local $sFileOpenDialog3=FileOpenDialog($sMessage3, $SRC3, "Session File (*.edl)", BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT))
; -----------------------------------------------
; -----------------------------------------------
Local $_Selected_Folder=("G:\Session_Master\Performance")
; -----------------------------------------------
; -----------------------------------------------
; SECTION B: Select the Session .elds
CopyFiles($sFileOpenDialog1, $_Selected_Folder)
CopyFiles($sFileOpenDialog2, $_Selected_Folder)
CopyFiles($sFileOpenDialog3, $_Selected_Folder)
; -----------------------------------------------
; SECTION C: This section is working - Many thanks to Andreik!!
Func CopyFiles($sFileOpenDialog, $sDestination)
    If StringInStr($sFileOpenDialog, "|") Then
    Local $aFileSplit=StringSplit($sFileOpenDialog, "|")
        For $i=3 To $aFileSplit[0]
            FileCopy($aFileSplit[1] & "\" & $aFileSplit[$i], $sDestination)
        Next
    Else
        FileCopy($sFileOpenDialog, $sDestination)
    EndIf
EndFunc
; -----------------------------------------------

As can be observed, SECTION A and SECTION B have similar "repeated sections" - just not too sure how to impalement this?

Link to comment
Share on other sites

; -----------------------------------------------
#include <FileConstants.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
; -----------------------------------------------
Local $aFileOpenDialog[3]
Local $aTypes[3][3] = _
    [ _
        ["Select .edl file", "E:\Master_Backup\Type_1", "Session File (*.edl)"], _
        ["Select .edl file", "E:\Master_Backup\Type_1", "Session File (*.edl)"], _
        ["Select .edl file", "E:\Master_Backup\Type_1", "Session File (*.edl)"]  _
    ]
    
For $Index = 0 To UBound($aTypes, 0) - 1
    $aFileOpenDialog[$Index] = FileOpenDialog($aTypes[$Index][0], $aTypes[$Index][1], $aTypes[$Index][2], BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT))
Next
; -----------------------------------------------
Local $_Selected_Folder=("G:\Session_Master\Performance")
; -----------------------------------------------
; -----------------------------------------------
; SECTION B: Select the Session .elds
For $Index = 0 To UBound($aFileOpenDialog) - 1
    CopyFiles($aFileOpenDialog[$Index], $_Selected_Folder)
Next
; -----------------------------------------------
; SECTION C: This section is working - Many thanks to Andreik!!
Func CopyFiles($sFileOpenDialog, $sDestination)
    If StringInStr($sFileOpenDialog, "|") Then
    Local $aFileSplit=StringSplit($sFileOpenDialog, "|")
        For $i=3 To $aFileSplit[0]
            FileCopy($aFileSplit[1] & "\" & $aFileSplit[$i], $sDestination)
        Next
    Else
        FileCopy($sFileOpenDialog, $sDestination)
    EndIf
EndFunc
; -----------------------------------------------

 

Edited by Andreik

When the words fail... music speaks.

Link to comment
Share on other sites

Good day,

Here is the scenario:

  • There is a single "type" directory [Type_1]
  • This directory contains various sub-directories [Artist's name]
  • Each sub-directories could contain any number of data files
  • The minimum number of data files to select is 1
  • The maximum number of data files to select is 16

The above script that I have provided permits a maximum of 3 files to be selected. And though I could repeat the routine in SECTION A, there must be more efficient means of doing so.

Lastly , the means of being able to exit the file selection process at any time would also need to be provided if less than 16 files are to be selected.

I do hope that this makes sense?

Edited by mr-es335
Updates
Link to comment
Share on other sites

Andreik,

Note: Please peruse the original posting as I have updated that posting.

I use the terms "folder" and "directories" interchangeably...folders=Windows parlance, directories=command-line parlance.

The other 5 directories  are similar...just different types of audio content. However, I will only be accessing one directory at a time.

Once I am in the Type_1 directory, I will then need to be able to navigate to any of the other sub-directories until all data files have been selected - up to and including 16.

Have a peep at the attached...

4.png

Edited by mr-es335
Link to comment
Share on other sites

Good day,

To save oneself from "recreating the wheel"...I thought of audio playlists. Though the data that I am currently working with is not an audio file directly, this data is still audio-related.

As a result, I came across this little tid-bit, [Playlist Maker]

This script provides many of the features that i am looking for...with some modifications required to meet my particular needs...of course.

Many thanks to ragnarok775 for his efforts in providing this work!

Edited by mr-es335
Link to comment
Share on other sites

Good day,

So...with some slight modifications...here is what have thus far...

;  -----------------------------------------------
#include <GUIConstantsEx.au3>
#include <ListboxConstants.au3>
#Include <GuiListBox.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
;  -----------------------------------------------
Opt('MustDeclareVars', 1)
;  ----------------
Global $guictrl[8]
Global $files[200]
Global $arraypos = 0
Global $last_selected
Global $name = "session.edl"
Global $WorkingDir="E:\Master_Backup"
;  -----------------------------------------------
_main()
;  -----------------------------------------------
Func _main()
    Local $msg
    Local $title = "Performance Creator"
    
    GUICreate($title, 700, 233)
    GUISetFont(7.5)
    GUISetState(@SW_SHOW)
    $guictrl[0] = GUICtrlCreateButton("Add ", 10, 10, 45)
    $guictrl[1] = GUICtrlCreateList("", 65, 10, 625, 225,  BitOR($WS_HSCROLL, $WS_VSCROLL, $LBS_EXTENDEDSEL))
    $guictrl[3] = GUICtrlCreateButton("Delete ", 10, 40, 45)
    $guictrl[6] = GUICtrlCreateButton("Clear", 10, 70, 45)
    $guictrl[7] = GUICtrlCreateButton("Copy", 10, 100, 45) ; ADDED
    
    GUICtrlSetFont($guictrl[1], 8.5, "", "", "Calibri")

    While 1
        $msg = GUIGetMsg()
        
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $guictrl[0]
                _OpenDialog()
                        Case $msg = $guictrl[3]
                                _Delete()
            Case $msg = $guictrl[6]
               _ClearArray()
            Case $msg = $guictrl[7]
               _Copy()
        EndSelect
    WEnd
    
    GUIDelete()
EndFunc
;  -----------------------------------------------
; REMOVED
;Func _Import()
;  -----------------------------------------------
; AN IMPORTANT FUNCTION HERE!!
Func _OpenDialog()
    Local $odfile
    Local $pos
    Local $i = 1
    Local $k = 0
    Local $temp[200]
    Local $skip = 0
    
    $odfile = FileOpenDialog("Select edl Files", $WorkingDir, "Session File (*.edl)", 4)
    If @error Then Return

    If StringInStr($odfile, "|") Then
        $temp = StringSplit($odfile, "|")

        While $i < $temp[0]
            $skip = 0
            While $k < $arraypos
                If $temp[1] & "\" & $temp[$i + 1] = $files[$k] Then
                    MsgBox(0, "", '"' & $temp[$i + 1] & '" is allready in the library')
                    $skip = 1
                EndIf
                $k += 1
            WEnd
            $k = 0
            If $skip = 0 Then
                $files[$arraypos] = $temp[1] & "\" & $temp[$i + 1]
                $arraypos += 1
            EndIf
            $i += 1
        WEnd
    Else
        While $k < $arraypos
            If $odfile = $files[$k] Then
                MsgBox(0, "", '"' & $odfile & '" is allready in the library')
                $skip = 1
            EndIf
            $k += 1
        WEnd
        $k = 0
        If $skip = 0 Then
            $files[$arraypos] = $odfile
            $arraypos += 1
        EndIf
    EndIf
    
    _UpdateList()
EndFunc
;  -----------------------------------------------
Func _UpdateList()
    Local $i
    Local $strlen
    Local $horiz_fit
    Local $max_len = 0

    GUICtrlSetData($guictrl[1], "")
    While $i < $arraypos
        GUICtrlSetData($guictrl[1], $files[$i])
        $strlen = StringLen($files[$i])
        If $strlen > 88 Then
            If $strlen > $max_len Then
                $max_len = $strlen
            EndIf
        EndIf
        $i += 1
    WEnd
    $horiz_fit = Round($max_len * 7.08)
    _GUICtrlListBox_SetHorizontalExtent($guictrl[1], $horiz_fit)
    _GUICtrlListBox_SetSel($guictrl[1], $last_selected)
EndFunc
;  -----------------------------------------------
; REMOVED, but could be useful later for saving a Performance Listings
;Func _Save(ByRef $title)
;  -----------------------------------------------
Func _ClearArray()
    Local $i
    Local $clear
    
    $clear = MsgBox(276, "Clear playlist?", "Are you sure you want to clear your playlist?")
    If $clear = 6 Then
    Else
        Return
    EndIf
    
    GUICtrlSetData($guictrl[1], "")
    While $i < $arraypos
        $files[$i] = ""
        $i += 1
    WEnd
    $last_selected = ""
    $arraypos = 0
EndFunc
;  -----------------------------------------------
Func _Delete()
    Local $i = 0
    Local $k = 0
    Local $temp
    
    $temp = GUICtrlRead($guictrl[1])
    
    While $i < $arraypos
        If $temp = $files[$i] Then
            $files[$i] = ""
            $k = $i
            While $k < $arraypos
                $files[$k] = $files[$k + 1]
                $k += 1
            WEnd
            $arraypos -= 1
            $last_selected = $i
            _UpdateList()
            Return
        EndIf
        $i += 1
    WEnd
EndFunc
;  -----------------------------------------------
Func _Copy() ; ADDED
    MsgBox($MB_SYSTEMMODAL, "NOTICE!!", "Function currently in progress...", 3)
EndFunc
;  -----------------------------------------------
; ALL REMOVED
;Func _MoveUp()
;Func _MoveDown()
;Func _Swap($pos1, $pos2)
;Func _ArDisplay()

All that is required is the means of being able to copy the selected data obtained from either the "Func _OpenDialog()" function or the "Func _UpdateList()" function. Just not to such which one?

Any assistance one could provide would be greatly appreciated!!

 

 

Edited by mr-es335
Link to comment
Share on other sites

19 hours ago, mr-es335 said:

Andreik,

Note: Please peruse the original posting as I have updated that posting.

I use the terms "folder" and "directories" interchangeably...folders=Windows parlance, directories=command-line parlance.

The other 5 directories  are similar...just different types of audio content. However, I will only be accessing one directory at a time.

Once I am in the Type_1 directory, I will then need to be able to navigate to any of the other sub-directories until all data files have been selected - up to and including 16.

Have a peep at the attached...

4.png

Comparing this with your last post I am really confuse because these are completely different request. What question should we answer now?

If you are still looking to achieve a playlist system, here is a simple example:

#include <GuiListView.au3>

Global $WorkingDir = "E:\Master_Backup"         ; Change this with your desired directory
Global $DestinationDir = 'E:\Master_Backup'     ; Change this with your desired directory

$hMain = GUICreate('Playlist', 900, 600)
$cPlaylist = GUICtrlCreateListView('File', 100, 10, 790, 580, 0x0008, 0x00000020) ; LVS_SHOWSELALWAYS, LVS_EX_FULLROWSELECT
$cAdd = GUICtrlCreateButton('Add', 10, 10, 80, 30)
$cDelete = GUICtrlCreateButton('Delete', 10, 50, 80, 30)
$cCopy = GUICtrlCreateButton('Copy', 10, 90, 80, 30)
$cClear = GUICtrlCreateButton('Clear', 10, 130, 80, 30)
_GUICtrlListView_SetColumnWidth($cPlaylist, 0, 760)
GUISetState(@SW_SHOW, $hMain)

While True
    Switch GUIGetMsg()
        Case $cAdd
            AddToPlaylist($cPlaylist)
        Case $cDelete
            DeleteFromPlaylist($cPlaylist)
        Case $cCopy
            CopyFiles($cPlaylist)
        Case $cClear
            ClearPlaylist($cPlaylist)
        Case -3 ; GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd

Func AddToPlaylist($cPlaylist)
    Local $iItem
    Local $sFileSelectDialog = FileOpenDialog('Select files', $WorkingDir, 'EDL Files (*.edl)', 4) ; FD_MULTISELECT
    If @error Then Return SetError(1, 0, Null)
    Local $aSplit = StringSplit($sFileSelectDialog, '|')
    If Not IsArray($aSplit) Then Return SetError(1, 0, Null)
    If $aSplit[0] = 1 Then
        $iItem = _GUICtrlListView_FindText($cPlaylist, $aSplit[1], -1, False)
        If $iItem = -1 Then
            GUICtrlCreateListViewItem($aSplit[1], $cPlaylist)
        Else
            MsgBox(0x40, 'Info', $aSplit[1] & ' is already in the playlist.') ; MB_ICONINFORMATION
        EndIf
    Else
        _GUICtrlListView_BeginUpdate($cPlaylist)
        For $Index = 2 To $aSplit[0]
            $iItem =  _GUICtrlListView_FindText($cPlaylist, $aSplit[1] & '\' & $aSplit[$Index], -1, False)
            If $iItem = -1 Then
                GUICtrlCreateListViewItem($aSplit[1] & '\' & $aSplit[$Index], $cPlaylist)
            Else
                MsgBox(0x40, 'Info', $aSplit[1] & '\' & $aSplit[$Index] & ' is already in the playlist.') ; MB_ICONINFORMATION
            EndIf
        Next
        _GUICtrlListView_EndUpdate($cPlaylist)
    EndIf
EndFunc

Func DeleteFromPlaylist($cPlaylist)
    Local $iRet = MsgBox(0x24, 'Delete', 'Do you want to delete the selected files?') ; MB_YESNO + MB_ICONQUESTION
    If $iRet = 6 Then _GUICtrlListView_DeleteItemsSelected($cPlaylist)  ; IDYES
EndFunc

Func CopyFiles($cPlaylist)
    Local $sDestination = FileSelectFolder('Select destination', $DestinationDir)
    If @error Then
        MsgBox(0x30, 'Warning', 'Destination directory has not been selected.' & @CRLF & 'Operation is canceled.') ; MB_ICONWARNING
        Return SetError(1, 0, Null)
    EndIf
    Local $iCount = _GUICtrlListView_GetItemCount($cPlaylist)
    For $Index = 0 To $iCount - 1
        FileCopy(_GUICtrlListView_GetItemText($cPlaylist, $Index), $sDestination)
    Next
    MsgBox(0x40, 'Operation done', 'The files from playlist has been copied to ' & $sDestination) ; MB_ICONINFORMATION
EndFunc

Func ClearPlaylist($cPlaylist)
    Local $iRet = MsgBox(0x24, 'Clear', 'Do you want to clear the playlist?') ; MB_YESNO + MB_ICONQUESTION
    If $iRet = 6 Then _GUICtrlListView_DeleteAllItems($cPlaylist)   ; IDYES
EndFunc

 

Edited by Andreik

When the words fail... music speaks.

Link to comment
Share on other sites

  • Solution

Andreik,

"WOW!!, "Double WOW! and "WOW! WOW! WOW!" - you get the idea!!

What can I say? As i taught my children to say [all 7 of them], "Thank you, thank you, thank you...not enough Thank you's!"

I gather that the script provided by ragnarok775 was of some assistance...

1 hour ago, Andreik said:

Comparing this with your last post I am really confuse because these are completely different request. What question should we answer now?

My sincere apologies for this,...so forgive me. And in answer your last question...none!
• I must admit, Andreik, that i was indeed "unclear" as to my original intent...but when I though t of "playlists" - it was the very clear exactly what I was hoping to achieve. Along with the most excellent "copy" function" you have provided - ass is working as I have expected.

So again, Andreik..."Thank you!" harry.png.b869836762d76cd2af78609b5e50b340.png

"A teacher takes a hand, opens a mind, and touches a heart."

Edited by mr-es335
Link to comment
Share on other sites

Good day,

The following is an an update...

Andreik-Before Func additions.au3

Added:

1) Save option [ Not yet implemented]
2) Open open [ Not yet implemented]

The following is working with both of the above - but is the version as provided by ragnarok775:

Sample 4.au3

The two functions as provided by ragnarok775:

Func _Import().au3

Func _Save(ByRef $title).au3

...just need to figure out how to "marry" the two together...with the version as provided by Andreik...

Edited by mr-es335
Link to comment
Share on other sites

Here is a basic implementation to save/load playlists:

; -----------------------------------------------
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
; -----------------------------------------------
Global $WorkingDir="E:\Master_Backup"
Global $DestinationDir='G:\Session_Master\Performance'
Global $PlaylistsDir = @DesktopDir  ; Update it with desired directory path
; -----------------------------------------------
$hMain=GUICreate('Playlist', 500, 250)
$cPlaylist=GUICtrlCreateListView('Session Files Listing', 100, 10, 425, 225, 0x0008, 0x00000020) ; LVS_SHOWSELALWAYS, LVS_EX_FULLROWSELECT
$cAdd=GUICtrlCreateButton('Add', 10, 10, 80, 25)
$cDelete=GUICtrlCreateButton('Delete', 10, 40, 80, 25)
$cCopy=GUICtrlCreateButton('Copy', 10, 70, 80, 25)
$cClear=GUICtrlCreateButton('Clear', 10, 100, 80, 25)
$cSave=GUICtrlCreateButton('Save', 10, 130, 80, 25)
$cOpen=GUICtrlCreateButton('Open', 10, 160, 80, 25)
_GUICtrlListView_SetColumnWidth($cPlaylist, 0, 400)
GUISetState(@SW_SHOW, $hMain)
; -----------------------------------------------
While True
    Switch GUIGetMsg()
        Case $cAdd
            AddToPlaylist($cPlaylist)
        Case $cDelete
            DeleteFromPlaylist($cPlaylist)
        Case $cCopy
            CopyFiles($cPlaylist)
        Case $cClear
            ClearPlaylist($cPlaylist)
        Case $cSave
            SavePerf($cPlaylist)
        Case $cOpen
            OpenPerf($cPlaylist)
        Case -3 ; GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd
; -----------------------------------------------
Func AddToPlaylist($cPlaylist)
    Local $iItem
    Local $sFileSelectDialog=FileOpenDialog('Select files', $WorkingDir, 'EDL Files (*txt)', 4) ; FD_MULTISELECT
    If @error Then Return SetError(1, 0, Null)
    Local $aSplit=StringSplit($sFileSelectDialog, '|')
    If Not IsArray($aSplit) Then Return SetError(1, 0, Null)
    If $aSplit[0]=1 Then
        $iItem=_GUICtrlListView_FindText($cPlaylist, $aSplit[1], -1, False)
        If $iItem=-1 Then
            GUICtrlCreateListViewItem($aSplit[1], $cPlaylist)
        Else
            MsgBox(0x40, 'Info', $aSplit[1] & ' is already in the playlist.') ; MB_ICONINFORMATION
        EndIf
    Else
        _GUICtrlListView_BeginUpdate($cPlaylist)
        For $Index=2 To $aSplit[0]
            $iItem= _GUICtrlListView_FindText($cPlaylist, $aSplit[1] & '\' & $aSplit[$Index], -1, False)
            If $iItem=-1 Then
                GUICtrlCreateListViewItem($aSplit[1] & '\' & $aSplit[$Index], $cPlaylist)
            Else
                MsgBox(0x40, 'Info', $aSplit[1] & '\' & $aSplit[$Index] & ' is already in the playlist.') ; MB_ICONINFORMATION
            EndIf
        Next
        _GUICtrlListView_EndUpdate($cPlaylist)
    EndIf
EndFunc
; -----------------------------------------------
Func DeleteFromPlaylist($cPlaylist)
    Local $iRet=MsgBox(0x24, 'Delete', 'Do you want to delete the selected files?') ; MB_YESNO + MB_ICONQUESTION
    If $iRet=6 Then _GUICtrlListView_DeleteItemsSelected($cPlaylist)  ; IDYES
EndFunc
; -----------------------------------------------
Func CopyFiles($cPlaylist)
    Local $sDestination=FileSelectFolder('Select destination', $DestinationDir)
    If @error Then
        MsgBox(0x30, 'Warning', 'Destination directory has not been selected.' & @CRLF & 'Operation is canceled.') ; MB_ICONWARNING
        Return SetError(1, 0, Null)
    EndIf
    Local $iCount=_GUICtrlListView_GetItemCount($cPlaylist)
    For $Index=0 To $iCount - 1
        FileCopy(_GUICtrlListView_GetItemText($cPlaylist, $Index), $sDestination)
    Next
    MsgBox(0x40, 'Operation done', 'The files from playlist has been copied to ' & $sDestination) ; MB_ICONINFORMATION
EndFunc
; -----------------------------------------------
Func ClearPlaylist($cPlaylist)
    Local $iRet=MsgBox(0x24, 'Clear', 'Do you want to clear the playlist?') ; MB_YESNO + MB_ICONQUESTION
    If $iRet=6 Then _GUICtrlListView_DeleteAllItems($cPlaylist)   ; IDYES
EndFunc
; -----------------------------------------------
Func SavePerf($cPlaylist)
    Local $sSave = FileSaveDialog('Save playlist', $PlaylistsDir, 'Playlist (*.mr5)', 18) ; FD_PATHMUSTEXIST + FD_PROMPTOVERWRITE
    If @error Then Return SetError(1, 0, Null)
    If StringRight($sSave, 4) <> '.mr5' Then $sSave &= '.mr5'
    Local $hFile = FileOpen($sSave, 2) ; FO_OVERWRITE
    Local $iCount=_GUICtrlListView_GetItemCount($cPlaylist)
    For $Index=0 To $iCount - 1
        FileWriteLine($hFile, _GUICtrlListView_GetItemText($cPlaylist, $Index))
    Next
    FileClose($hFile)
    MsgBox(0x40, 'Operation done', 'The playlist has been saved to ' & $sSave) ; MB_ICONINFORMATION
EndFunc
; -----------------------------------------------
Func OpenPerf($cPlaylist)
    Local $sLoad = FileOpenDialog('Open playlist', $PlaylistsDir, 'Playlist (*.mr5)', 1) ; FD_FILEMUSTEXIST
    If @error Then Return SetError(1, 0, Null)
    Local $sPlaylist = StringStripWS(FileRead($sLoad), 3) ; STR_STRIPLEADING + STR_STRIPTRAILING
    _GUICtrlListView_BeginUpdate($cPlaylist)
    _GUICtrlListView_DeleteAllItems($cPlaylist)
    Local $aLine = StringSplit($sPlaylist, @CRLF, 1)
    If IsArray($aLine) Then
        For $Index = 1 To $aLine[0]
            GUICtrlCreateListViewItem($aLine[$Index], $cPlaylist)
        Next
    EndIf
    _GUICtrlListView_EndUpdate($cPlaylist)
    MsgBox(0x40, 'Operation done', 'The playlist ' & $sLoad & ' has been loaded.') ; MB_ICONINFORMATION
EndFunc
; -----------------------------------------------

 

When the words fail... music speaks.

Link to comment
Share on other sites

Good day,

 

Well,..with the assistance of ragnarok775 and Anreik, the script is now completed...

image.png.1486991cb326960e3fdb542661e90bd9.png

Here is the completed script...

Session_List_Producer.au3

Again...many, many thanks to both ragnarok775 and Anreik...and especially to Anreik!! Very much appreciated...

Edited by mr-es335
Updates
Link to comment
Share on other sites

User interface looks neat but the script doesn't run properly because the variable $sSave is used in OpenSessionList() but it was never declared as global or in the context of this function.

Func OpenSessionList($cSessionlist)
    Local $sLoad=FileOpenDialog('Open Session List', $DestinationDir, 'Session List (*.ini)', 1) ; FD_FILEMUSTEXIST
    If @error Then Return SetError(1, 0, Null)
    Local $sSessionList=StringStripWS(FileRead($sLoad), 3) ; STR_STRIPLEADING + STR_STRIPTRAILING
    _GUICtrlListView_BeginUpdate($cSessionlist)
    _GUICtrlListView_DeleteAllItems($cSessionlist)
    Local $aLine=StringSplit($sSessionList, @CRLF, 1)
    If IsArray($aLine) Then
        For $Index=1 To $aLine[0]
            GUICtrlCreateListViewItem($aLine[$Index], $cSessionlist)
        Next
    EndIf
    _GUICtrlListView_EndUpdate($cSessionlist)
    MsgBox(0x40, 'Copy completed!', 'The Session Listing ' & $sLoad & ' has been sucessfully copied to...' & $sSave) ; This line will cause an error
EndFunc

A quick fix would be to declare it as a global variable, along with other global variables, and in SaveSessionList() function just remove the local scope of the variable and everything will work properly.

Global $sSave
Global $WorkingDir="E:\Master_Backup"
Global $DestinationDir='G:\Session_Master\Performance'
Func SaveSessionList($cSessionlist)
    $sSave=FileSaveDialog('Save Session Listing', $DestinationDir, 'Session List (*.ini)', 18) ; FD_PATHMUSTEXIST + FD_PROMPTOVERWRITE
    If @error Then Return SetError(1, 0, Null)
        If StringRight($sSave, 4) <> '.ini' Then $sSave &= '.ini'
    Local $hFile=FileOpen($sSave, 2) ; FO_OVERWRITE
    Local $iCount=_GUICtrlListView_GetItemCount($cSessionlist)
    For $Index=0 To $iCount - 1
        FileWriteLine($hFile, _GUICtrlListView_GetItemText($cSessionlist, $Index))
    Next
    FileClose($hFile)
    MsgBox(0x40, 'Save Session Listing', 'The Session Listing has been sucessfully saved to...' & $sSave) ; MB_ICONINFORMATION
EndFunc

 

When the words fail... music speaks.

Link to comment
Share on other sites

  • 2 weeks later...

Andriek,

I have noticed that the backup routine is not overwriting the destination files...and I am not sure why. I thought that I knew how to "fix it"...but, alas "No!"

I have stripped out the routine and made that routine a standalone  - simply for testing purposes.

Bup_Session_Data.au3

Any idea why? Thanks!

The provided test-script DOES work however.

test_script.au3

 

Link to comment
Share on other sites

Andriek,

You stated, "Third parameter of FileCopy() function should be $FC_OVERWRITE if you want to overwrite the existing files."

Yes, I DO know this...however I did not obtain satisfactory results! Following is just the updated portion of the script:

Func CopyFiles($sFileOpenDialog, $sDestination)
    If StringInStr($sFileOpenDialog, "|") Then
        Local $aFileSplit = StringSplit($sFileOpenDialog, "|")
            For $i = 2 To $aFileSplit[0]
                FileCopy($aFileSplit[1] & "\" & $aFileSplit[$i], $sDestination, $FC_OVERWRITE)
            Next
    Else
        FileCopy($sFileOpenDialog, $sDestination, $FC_OVERWRITE)
    EndIf
EndFunc

Is the above then...correct?

UPDATE!: I have checked and double-checked the above and all is functioning as it should!

Edited by mr-es335
Updates
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...