Code archives/Miscellaneous/Masscopy (Mac)
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Allows multiple files from multiple folders with a common extension, to be copied into one folder with a prefix and numbering system of your choice. | |||||
Import MaxGui.Drivers SuperStrict Const MaxFile%=2000' largest number of files that can be processed in one pass Const Lz$="/"' note \ for windows build ------------- NB !!!!!!!!!! Local Exten$=""' file extension of files searched for Local Prefix$=""' prefix for written files Local StNum$=""'start number as string of file sequence to be written Local DesFold$=""' destination folder for saved files Local Status%=0' Initial state for option response ' 0= initial settings pass on screen 1, 1= edit settings phase screen 1, 2=file select phase screen 2 '3=copy file screen 3, 4=do the copying Local Tst1$="" Local Temp1%=0 ; Local Temp2%=0'; Local Temp3%=0; Local Temp4%=0; Local Temp5%=0 Local FList:VarStore = New VarStore' generates folder index and file name storage FList.Initilise' clears all vars to zero 'Local ScreenSize%=0 'Local GUIFont:TGuiFont Temp1=DesktopWidth() If Temp1<800 Then' check to see if screen size allows 800 by 600 Notify "Sorry screen sizes less than 800 by 600 "+Chr$(13)+"are not supported." End' no support for less than 800 * 600 End If 'smaller fonts for PC larger for Mac 'GUIFont=LoadGuiFont( "Ariel",15) GUIFont=LoadGuiFont( "Ariel",10.8) Local W2:TGadget = CreateWindow( "Mass Copy",10,10,798,598,,WINDOW_CENTER | WINDOW_TITLEBAR) Local W2P1:TGadget= CreatePanel(5,5,250,150,W2,PANEL_RAISED) Tst1="What type of file do you wish to copy"+Chr$(13) Tst1=Tst1+"( A combination of 3 letters/numbers. )" Local W2P1L1:Tgadget=CreateLabel(Tst1,5,5,240,35,W2P1,LABEL_CENTER) Local W2P1Rad1:TGadget=CreateButton("From List",20,45,80,25, W2P1,BUTTON_RADIO) Local W2P1Rad2:TGadget=CreateButton("Other",20,75,80,25, W2P1,BUTTON_RADIO) Local W2P1Tf1:Tgadget=CreateTextField(118,75,90,25,W2P1) Local W2P1L2:Tgadget=CreateLabel("*.",95,75,20,25,W2P1,LABEL_RIGHT) SetButtonState(W2P1Rad1,True); DisableGadget(W2P1Tf1) Local W2P1Cb1:TGadget=CreateComboBox(120,45,90,100,W2P1) AddGadgetItem W2P1Cb1,"*.mp3"; AddGadgetItem W2P1Cb1,"*.wav"; AddGadgetItem W2P1Cb1,"*.jpg" AddGadgetItem W2P1Cb1,"*.bmp"; AddGadgetItem W2P1Cb1,"*.gif" Local W2P1But1:Tgadget=CreateButton("Continue",80,118,100,25,W2P1) SelectGadgetItem(W2P1Cb1,0) SetPanelColor(W2P1,255,255,200) Local W2P2:TGadget= CreatePanel(261,5,276,150,W2,PANEL_RAISED) Tst1="Select a prefix for the files you create" + Chr$(13) + "( Max Length = 12 )" Local W2P2L1:Tgadget=CreateLabel(Tst1,5,5,256,35,W2P2,LABEL_CENTER) Local W2P2Rad1:TGadget=CreateButton("From List",20,45,80,25, W2P2,BUTTON_RADIO) Local W2P2Rad2:TGadget=CreateButton("Other",20,75,80,25, W2P2,BUTTON_RADIO) Local W2P2Tf1:Tgadget=CreateTextField(116,75,135,25,W2P2) Local W2P2L2:Tgadget=CreateLabel("-",253,77,10,25,W2P2,LABEL_LEFT) SetButtonState(W2P2Rad1,True); DisableGadget(W2P2Tf1) Local W2P2Cb1:TGadget=CreateComboBox(120,45,130,100,W2P2) AddGadgetItem W2P2Cb1,"my-"; AddGadgetItem W2P2Cb1,"trk-"; AddGadgetItem W2P2Cb1,"mus-" AddGadgetItem W2P2Cb1,"pic-"; AddGadgetItem W2P2Cb1,"img-" Local W2P2But1:Tgadget=CreateButton("Continue",80,118,100,25,W2P2) SelectGadgetItem(W2P2Cb1,1) DisableGadget(W2P2) Local W2P3:TGadget= CreatePanel(542,5,250,150,W2,PANEL_RAISED) Tst1="Enter a start number for your new files" + Chr$(13) + "1 to 3000" Local W2P3L1:Tgadget=CreateLabel(Tst1,5,5,240,35,W2P3,LABEL_CENTER) Local W2P3Tf1:TGadget =CreateTextField(80,45,90,25,W2P3) SetGadgetText(W2P3Tf1,"1") Local W2P3But1:Tgadget=CreateButton("Continue",80,118,100,25,W2P3) DisableGadget(W2P3) 'ChangeDir(lz+Lz+Lz)' ////to root ChangeDir(Lz+Lz+Lz+"users") 'ChangeDir(".."+Lz+Lz)'up a level 'ChangeDir(".."+Lz+Lz+Lz) Local W2P4:TGadget= CreatePanel(5,160,532,410,W2,PANEL_RAISED) Local W2P4L1:Tgadget=CreateLabel("Select a folder to place your copies in.",5,4,240,20,W2P4,LABEL_CENTER) Local W2P4But1:TGadget=CreateButton("Up A Level",5,23,250,30,W2P4,LABEL_CENTER) Local W2P4Lb1:TGadget=CreateListBox(5,56,250,279,W2P4) Folderview(CurrentDir(),W2P4Lb1,W2P4But1) Local W2P4L2:Tgadget=CreateLabel("Files in selected folder.",274,30,250,20,W2P4,LABEL_CENTER) Local W2P4Lb2:TGadget=CreateListBox(274,56,250,279,W2P4) FileView(CurrentDir(),W2P4Lb2) Local W2P4L3:Tgadget=CreateLabel("The files you create will be stored in :",5,342,400,18,W2P4) Local W2P4Lb4:Tgadget=CreateListBox(5,365,520,35,W2P4) DisableGadget(W2P4) Local W2P5:TGadget= CreatePanel(542,160,250,410,W2,PANEL_RAISED) Local W2P5L1:Tgadget=CreateLabel("Your Choices",5,4,240,18,W2P5,LABEL_CENTER) Local W2P5L2:Tgadget=CreateLabel("Search pattern for files to be copied.",5,30,240,18,W2P5,LABEL_CENTER) Local W2P5But1:Tgadget=CreateButton("Edit",10,51,80,28,W2P5) Local W2P5L3:Tgadget=CreateLabel("Not Set",95,55,145,18,W2P5,LABEL_CENTER) Local W2P5L5:Tgadget=CreateLabel("Prefix for the files to be created.",5,90,240,18,W2P5,LABEL_CENTER) Local W2P5But2:Tgadget=CreateButton("Edit",10,111,80,28,W2P5) Local W2P5L6:Tgadget=CreateLabel("Not Set",95,115,145,18,W2P5,LABEL_CENTER) Local W2P5L7:Tgadget=CreateLabel("Start number for created files.",5,150,240,18,W2P5,LABEL_CENTER) Local W2P5But3:Tgadget=CreateButton("Edit",10,171,80,28,W2P5) Local W2P5L8:Tgadget=CreateLabel("Not Set",95,175,145,18,W2P5,LABEL_CENTER) Tst1="Continue With"+Chr$(13)+"Current Settings." Local W2P5But4:Tgadget=CreateButton(Tst1,65,245,120,60,W2P5) DisableGadget(W2P5But1); DisableGadget(W2P5But2); DisableGadget(W2P5But3); DisableGadget(W2P5But4) Local W2P5But5:Tgadget=CreateButton("Exit",10,375,100,30,W2P5) Local W2P5But6:Tgadget=CreateButton("Help",140,375,100,30,W2P5) Local W2P6:TGadget= CreatePanel(5,5,788,566,W2,PANEL_RAISED)' help panel Local W2P6Tf1:TGadget = CreateTextArea(129,20,530,490,W2P6,TEXTAREA_READONLY) Local W2P6But1:Tgadget=CreateButton("Return",344,530,100,30,W2P6) SetPanelColor(W2P6,200,255,200) HideGadget(W2P6) Local W2P7:TGadget= CreatePanel(5,5,788,330,W2,PANEL_RAISED) SetPanelColor(W2P7,255,255,200) Local W2P7But1:TGadget=CreateButton("Folders - Up A Level",5,3,245,30,W2P7,LABEL_CENTER) Local W2P7Lb1:TGadget=CreateListBox(5,35,245,230,W2P7) Local W2P7L1:Tgadget=CreateLabel("Files in opened folder.",270,8,245,20,W2P7,LABEL_CENTER) Local W2P7Lb2:TGadget=CreateListBox(270,35,245,230,W2P7) Local W2P7L2:Tgadget=CreateLabel("0 Files selected for copy list",535,8,245,20,W2P7,LABEL_CENTER) Local W2P7Lb3:TGadget=CreateListBox(535,35,245,190,W2P7) Local W2P7But5:Tgadget=CreateButton("Remove File From Copy list",555,230,200,25,W2P7) Local W2P7But2:Tgadget=CreateButton("Select All",535,266,100,25,W2P7) Local W2P7But3:Tgadget=CreateButton("Clear All",670,266,100,25,W2P7) Local W2P7But4:Tgadget=CreateButton("Add Files To Copy List",555,301,200,25,W2P7) DisableGadget(W2P7But5) Local W2P7L3:Tgadget=CreateLabel("You are viewing files in the folder :",5,270,400,18,W2P7) Local W2P7Lb4:Tgadget=CreateListBox(5,290,510,34,W2P7) HideGadget(W2P7) Local W2P8:TGadget= CreatePanel(5,339,788,233,W2,PANEL_RAISED) SetPanelColor(W2P8,255,255,200) Tst1="Click on a folder shown below to see the files you have selected for copying." Local W2P8L1:Tgadget=CreateLabel(Tst1,5,2,510,18,W2P8) Local W2P8Lb1:TGadget=CreateListBox(5,25,510,200,W2P8) Local W2P8L2:Tgadget=CreateLabel("File Count = 0",590,23,125,18,W2P8,LABEL_CENTER) SetGadgetColor(W2P8L2,200,255,200) Tst1="Ready To Copy"+Chr$(13)+"The Files." Local W2P8But3:Tgadget=CreateButton(Tst1,578,84,150,60,W2P8) Local W2P8But1:Tgadget=CreateButton("Exit",540,190,100,30,W2P8) Local W2P8But2:Tgadget=CreateButton("Help",665,190,100,30,W2P8) HideGadget(W2P8) Local W2P9:TGadget= CreatePanel(5,5,788,567,W2,PANEL_RAISED)'help screen Local W2P9L1:Tgadget=CreateLabel("Files selected For copying",5,2,778,18,W2P9,LABEL_CENTER) Local W2P9Lb2:TGadget=CreateListBox(5,25,776,55,W2P9) Local W2P9Lb1:TGadget=CreateListBox(60,88,656,442,W2P9) Local W2P9But1:Tgadget=CreateButton("Return",339,535,100,30,W2P9) HideGadget(W2P9) Local W2P10:TGadget= CreatePanel(5,5,788,260,W2,PANEL_RAISED) SetPanelColor(W2P10,255,255,200) Local W2P10L1:Tgadget=CreateLabel("Options",294,2,200,18,W2P10,LABEL_CENTER) Tst1="If options are not avaliable then these files must allready exsist in the destination folder."+Chr$(13) Tst1=Tst1+"Delete the files then click 'Check Folder' to enable the options." Local W2P10L2:Tgadget=CreateLabel(Tst1,50,25,688,36,W2P10,LABEL_CENTER) Tst1="Create file 'alist.txt', a text file containing the old/new" Tst1=tst1+" file names of the files copied." Local W2P10Chk1:TGadget=CreateButton(Tst1,50,80,688,30,W2P10,BUTTON_CHECKBOX) Tst1="Create file 'acdt.txt', a comma deliniated text file listing the old/new" Tst1=tst1+" file names suitable for a spreadsheet etc." Local W2P10Chk2:TGadget=CreateButton(Tst1,50,120,688,30,W2P10,BUTTON_CHECKBOX) Tst1="Create file 'anerror.txt', a text file listing all the failed attemps to copy" Tst1=tst1+" files, or an empty file if no errors." Local W2P10Chk3:TGadget=CreateButton(Tst1,50,160,688,30,W2P10,BUTTON_CHECKBOX) Local W2P10But1:Tgadget=CreateButton("Check Folder",294,220,200,30,W2P10) HideGadget(W2P10) Local W2P11:TGadget= CreatePanel(5,270,788,300,W2,PANEL_RAISED) SetPanelColor(W2P11,255,255,200) Local W2P11L1:Tgadget=CreateLabel("",5,5,400,18,W2P11)' number of files to be created Local W2P11Lb1:Tgadget=CreateListBox(5,30,776,35,W2P11) Local W2P11L2:Tgadget=CreateLabel("The first file name generated will be :",5,75,400,18,W2P11) Local W2P11L3:Tgadget=CreateLabel("",5,100,776,18,W2P11)' file name generated SetGadgetColor(W2P11l3,255,255,255) Local W2P11L4:Tgadget=CreateLabel("",269,140,240,18,W2P11,LABEL_CENTER)' number of files to copy Local W2P11Pb1:TGadget=CreateProgBar(289,170,200,20,W2P11) Local W2P11But1:Tgadget=CreateButton("Copy Selected Files",289,200,200,30,W2P11) Local W2P11But2:Tgadget=CreateButton("Exit",5,265,100,30,W2P11) Local W2P11But3:Tgadget=CreateButton("Return To Select Files",289,265,200,30,W2P11) Local W2P11But4:Tgadget=CreateButton("Help",682,265,100,30,W2P11) HideGadget(W2P11) Local W2P12:TGadget= CreatePanel(105,150,588,150,W2,PANEL_RAISED)' final screen SetPanelColor(W2P12,200,255,200) Local W2P12L1:Tgadget=CreateLabel("",44,10,500,18,W2P12,LABEL_CENTER)' final screen number of files created Local W2P12Lb1:Tgadget=CreateListBox(44,35,500,35,W2P12)' list box to show were the files have ben put Local W2P12L2:Tgadget=CreateLabel("Enjoy Your Day...",44,80,500,18,W2P12,LABEL_CENTER) Local W2P12But1:Tgadget=CreateButton("Exit",246,105,100,30,W2P12) HideGadget(W2P12) '------------------------ Start of main loop------------------------- Repeat 'Delay 10 PollEvent Select EventID() Case EVENT_WINDOWCLOSE EndIt() Case EVENT_GADGETSELECT Select EventSource() Case W2P4Lb1' folder select for destination folder Temp1=EventData() If Temp1<>-1 Then 'something selected Tst1=GadgetItemText(W2P4Lb1,SelectedGadgetItem(W2P4Lb1)) ChangeDir(FullPath(CurrentDir(),Tst1)) FolderView(CurrentDir(),W2P4Lb1,W2P4But1) FileView(CurrentDir(),W2P4Lb2) ClearGadgetItems(W2P4Lb4) AddGadgetItem(W2P4Lb4,CurrentDir()) End If Case W2P7Lb1' folder select during select files for copying Temp1=EventData() If Temp1<>-1 Then 'something selected Tst1=GadgetItemText(W2P7Lb1,SelectedGadgetItem(W2P7Lb1)) ChangeDir(FullPath(CurrentDir(),Tst1)) ClearGadgetItems(W2P7Lb3) DisableGadget(W2P7But5) FolderView(CurrentDir(),W2P7Lb1,W2P7But1) FileView2(CurrentDir(),W2P7Lb2,Exten) ClearGadgetItems(W2P7Lb4) AddGadgetItem(W2P7Lb4,CurrentDir()) SetGadgetText(W2P7L2,"0 Files selected for copy list") End If Case W2P7Lb2' file select during select files for copying Temp1=EventData() If Temp1<>-1 Then 'something selected Tst1=GadgetItemText(W2P7Lb2,SelectedGadgetItem(W2P7Lb2)) SelFile(Tst1,W2P7Lb3)' put file in list if not repeated SetGadgetText(W2P7L2,String(CountGadgetItems(W2P7Lb3))+" Files selected for copy list") End If Case W2P8Lb1' show files in copy list for selected folder Temp1=EventData() If Temp1<>-1 Then 'something selected Tst1=GadgetItemText(W2P8Lb1,SelectedGadgetItem(W2P8Lb1)) HideGadget(W2P7); HideGadget(W2P8) ClearGadgetItems(W2P9Lb2) AddGadgetItem(W2P9Lb2,"From Folder : "+ Tst1) AddGadgetItem(W2P9Lb2,"To Folder : "+ DesFold) FList.ShowCFiles(W2P9Lb1,Temp1) ShowGadget(W2P9) End If Case W2P7Lb3' select a file for removal from file copy list Temp1=EventData() If Temp1<>-1 Then 'something selected EnableGadget(W2P7But5)' enables delete button End If End Select Case EVENT_GADGETACTION Select EventSource() Case W2P1Rad1'File extension choice SetGadgetText(W2P1Tf1,""); DisableGadget(W2P1Tf1); EnableGadget(W2P1Cb1) Case W2P1Rad2' file extension other DisableGadget(W2P1Cb1); EnableGadget(W2P1Tf1); ActivateGadget(W2P1Tf1) Case W2P1Tf1' extension input SetGadgetText(W2P1Tf1,CheckNameLength$(3,GadgetText(W2P1Tf1))) Case W2P2Rad1' prefix choice SetGadgetText(W2P2Tf1,""); DisableGadget(W2P2Tf1); EnableGadget(W2P2Cb1) Case W2P2Rad2'prefix other DisableGadget(W2P2Cb1); EnableGadget(W2P2Tf1); ActivateGadget(W2P2Tf1) Case W2P2Tf1' prefix input SetGadgetText(W2P2Tf1,CheckNameLength$(12,GadgetText(W2P2Tf1))) Case W2P3Tf1' start number input SetGadgetText(W2P3Tf1,CheckNameLength$(4,GadgetText(W2P3Tf1))) Case W2P1But1' continue after selecting file extension If ButtonState(W2P1Rad1)=True Then' extension from list Exten=GadgetItemText(W2P1Cb1,SelectedGadgetItem(W2P1Cb1)) DisableGadget(W2P1); SetPanelColor(W2P1,200,255,200) SetGadgetText(W2P5L3,Exten); SetGadgetColor(W2P5L3,200,255,200) If Status=0 Then' first pass EnableGadget(W2P2); SetPanelColor(W2P2,255,255,200) Else If AllOk(W2P5L3,W2P5L6,W2P5L8)=1 Then EnableGadget(W2P5But4) End If Else' other extension If Len(GadgetText(W2P1Tf1))<3 Then Notify "Extensions must have 3 letters/numbers and no spaces." SetGadgetText(W2P1Tf1,""); ActivateGadget(W2P1Tf1) Else'other input OK If CheckText(GadgetText(W2P1Tf1))<>0 Then' Input error Notify "Extensions must have 3 letters/numbers and no spaces." SetGadgetText(W2P1Tf1,""); ActivateGadget(W2P1Tf1) Else' input OK Exten="*."+GadgetText(W2P1Tf1) DisableGadget(W2P1); SetPanelColor(W2P1,200,255,200) SetGadgetText(W2P5L3,Exten); SetGadgetColor(W2P5L3,200,255,200) If Status=0 Then' first pass EnableGadget(W2P2); SetPanelColor(W2P2,255,255,200) Else If AllOk(W2P5L3,W2P5L6,W2P5L8)=1 Then EnableGadget(W2P5But4) End If End If End If End If Case W2P2But1' continue after selecting prefix If ButtonState(W2P2Rad1)=True Then' prefix from list Prefix=GadgetItemText(W2P2Cb1,SelectedGadgetItem(W2P2Cb1)) DisableGadget(W2P2); SetPanelColor(W2P2,200,255,200) SetGadgetText(W2P5L6,Prefix); SetGadgetColor(W2P5L6,200,255,200) If Status=0 Then EnableGadget(W2P3); SetPanelColor(W2P3,255,255,200) Else If AllOk(W2P5L3,W2P5L6,W2P5L8)=1 Then EnableGadget(W2P5But4) End If Else' other pefix If Len(GadgetText(W2P2Tf1))<1 Then'input error Notify "Prefix must have at least one letter/number and no spaces." SetGadgetText(W2P2Tf1,""); ActivateGadget(W2P2Tf1) Else'other input OK If CheckText(GadgetText(W2P2Tf1))<>0 Then 'input error Notify "Prefix must have at least one letter/number and no spaces." SetGadgetText(W2P2Tf1,""); ActivateGadget(W2P2Tf1) Else' input ok Prefix=GadgetText(W2P2Tf1)+"-" DisableGadget(W2P2); SetPanelColor(W2P2,200,255,200) SetGadgetText(W2P5L6,Prefix); SetGadgetColor(W2P5L6,200,255,200) If status=0 Then EnableGadget(W2P3); SetPanelColor(W2P3,255,255,200) Else If AllOk(W2P5L3,W2P5L6,W2P5L8)=1 Then EnableGadget(W2P5But4) End If End If End If End If Case W2P3But1' continue after selecting start number Temp1=Int(GadgetText(W2P3Tf1)) If Temp1<1 Or Temp1>3000 Then' invalid number Notify "Please enter a number between 1 and 3000." SetGadgetText(W2P3Tf1,"1"); ActivateGadget(W2P3Tf1) Else'valid number StNum=GadgetText(W2P3Tf1) DisableGadget(W2P3); SetPanelColor(W2P3,200,255,200) SetGadgetText(W2P5L8,StNum); SetGadgetColor(W2P5L8,200,255,200) If status=0 Then EnableGadget(W2P4); SetPanelColor(W2P4,255,255,200)'; SetGadgetColor(W2P4L4,200,255,200) SetPanelColor(W2P5,255,255,200); EnableGadget(W2P5But1); EnableGadget(W2P5But2);EnableGadget(W2P5But3); EnableGadget(W2P5But4) Status=1 Else If AllOk(W2P5L3,W2P5L6,W2P5L8)=1 Then EnableGadget(W2P5But4) End If End If Case W2P4But1'up a level during destination folder select Tst1=UpDir(CurrentDir()) ChangeDir(Tst1) FolderView(CurrentDir(),W2P4Lb1,W2P4But1) FileView(CurrentDir(),W2P4Lb2) ClearGadgetItems(W2P4Lb4) AddGadgetItem(W2P4Lb4,CurrentDir()) Case W2P5But1' edit file extension choice SetGadgetText(W2P5L3,""); SetGadgetColor(W2P5L3,255,255,255) EnableGadget(W2P1); SetPanelColor(W2P1,255,255,200); DisableGadget(W2P5But4) If ButtonState(W2P1Rad2)=True Then SetGadgetText(W2P1Tf1,""); ActivateGadget(W2P1Tf1) End If Case W2P5But2' edit prefix choice SetGadgetText(W2P5L6,""); SetGadgetColor(W2P5L6,255,255,255) EnableGadget(W2P2); SetPanelColor(W2P2,255,255,200); DisableGadget(W2P5But4) If ButtonState(W2P2Rad2)=True Then SetGadgetText(W2P2Tf1,""); ActivateGadget(W2P2Tf1) End If Case W2P5But3' edit start number SetGadgetText(W2P5L8,""); SetGadgetColor(W2P5L8,255,255,255) EnableGadget(W2P3); SetPanelColor(W2P3,255,255,200); DisableGadget(W2P5But4) SetGadgetText(W2P3Tf1,"1"); ActivateGadget(W2P3Tf1) Case W2P5But4 ' continue to file select screen Desfold=CurrentDir()+Lz 'Print DesFold ' storage for destination folder name HideGadget(W2P1); HideGadget(W2P2); HideGadget(W2P3) HideGadget(W2P4); HideGadget(W2P5); Status=2 'ChangeDir(Lz+Lz+Lz)' to root ChangeDir(Lz+Lz+Lz+"users"); Folderview(CurrentDir(),W2P7Lb1,W2P7But1) FileView2(CurrentDir(),W2P7Lb2,Exten) ClearGadgetItems(W2P7Lb4) AddGadgetItem(W2P7Lb4,CurrentDir()) ClearGadgetItems(W2P7Lb3) SetGadgetText(W2P7L1,Right$(Exten,4)+" files in opened folder.") ShowGadget(W2P7); ShowGadget(W2P8) Case W2P5But5' exit Endit() Case W2P5But6' screen 1 help HideGadget(W2P1); HideGadget(W2P2); HideGadget(W2P3) HideGadget(W2P4); HideGadget(W2P5); ShowGadget(W2P6) HelpScreen(1,W2P6Tf1)' display screen 1 help Case W2P6But1' return from help screen If Status<2 Then' return to screen 1 HideGadget(W2P6); ShowGadget(W2P1); ShowGadget(W2P2) ShowGadget(W2P3); ShowGadget(W2P4); ShowGadget(W2P5) Else If Status=2 Then 'return to screen 2 HideGadget(W2P6); ShowGadget(W2P7); ShowGadget(W2P8) Else' status = 3 return to screen 3 HideGadget(W2P6) ShowGadget(W2P10); ShowGadget(W2P11) End If Case W2P7But1'up a level during files to copy select Tst1=UpDir(CurrentDir()) ChangeDir(Tst1); ClearGadgetItems(W2P7Lb3) FolderView(CurrentDir(),W2P7Lb1,W2P7But1) FileView2(CurrentDir(),W2P7Lb2,Exten) ClearGadgetItems(W2P7Lb4) AddGadgetItem(W2P7Lb4,CurrentDir()) SetGadgetText(W2P7L2,"0 Files selected for copy list") Case W2P7But2' select all files in current folder for copying ClearGadgetItems(W2P7Lb3) DisableGadget(W2P7But5) Temp1=CountGadgetItems(W2P7Lb2) If Temp1<>0 Then temp1=temp1-1 For temp2=0 To temp1 AddGadgetItem(W2P7Lb3,GadgetItemText$(W2P7Lb2,temp2 )) Next SetGadgetText(W2P7L2,String(CountGadgetItems(W2P7Lb3))+" Files selected for copy list") End If Case W2P7But3' clear all files for copying from list ClearGadgetItems(W2P7Lb3) DisableGadget(W2P7But5) SetGadgetText(W2P7L2,"0 Files selected for copy list") Case W2P7But4' add selected files to copy list Temp1=CountGadgetItems(W2P7Lb3) ' see if any files have been selected If Temp1=0 Then Notify "You have not selected any files for copying." Else' some files have been selected If FList.GetFcount()+Temp1>MaxFile Then Notify "You have selected more than "+MaxFile+" files for copying." Else' less than 2000 files to copy add these files to the copy list FList.SetFNames(W2P7Lb3); ClearGadgetItems(W2P7Lb3) FList.SetFold(W2P8Lb1,CurrentDir()) SetGadgetText(W2P8L2,"File Count = "+FList.GetFCount()) SetGadgetText(W2P7L2,"0 Files selected for copy list") DisableGadget(W2P7But5) End If End If Case W2P7But5' deleat selected file from copy list DelCFile(W2P7Lb3)' delete file from list function DisableGadget(W2P7But5) SetGadgetText(W2P7L2,String(CountGadgetItems(W2P7Lb3))+" Files selected for copy list") Case W2P8But1' exit from select files screen EndIt() Case W2P8But2' help from select files screen screen 2 HideGadget(W2P7); HideGadget(W2P8); ShowGadget(W2P6) HelpScreen(2,W2P6Tf1)' display screen 2 help Case W2P9But1' return from viewing files in files to copy list HideGadget(W2P9); ShowGadget(W2P7); ShowGadget(W2P8) ToggleGadgetItem(W2P8Lb1,SelectedGadgetItem(W2P8Lb1)) Case W2P8But3' ready to copy the files If Flist.GetFCount()>0 Then' some file to copy HideGadget(W2P7); HideGadget(W2P8); Status=3 Tst1="The " + String(FList.GetFCount()) + " files you create will be stored in :" SetGadgetText(W2P11L1,Tst1); ClearGadgetItems(W2P11Lb1) AddGadgetItem(W2P11Lb1,DesFold) Tst1=Prefix+StNum+Right$(Exten,4); SetGadgetText(W2P11L3,Tst1) Tst1="Ready to Copy "+String(Flist.GetFCount())+" Files."; SetGadgetText(W2P11L4,Tst1) SetButtonState(W2P10Chk1,False); SetButtonState(W2P10Chk2,False) SetButtonState(W2P10Chk3,False) ChkFiles(W2P10Chk1,W2P10Chk2,W2P10Chk3,DesFold) ShowGadget(W2P10);ShowGadget(W2P11) Else' no files for copying Notify "You have not selected ay files for copying." End If Case W2P10But1'enable/disable check buttons if files/don't exsist in destination folder ChkFiles(W2P10Chk1,W2P10Chk2,W2P10Chk3,DesFold) Case W2P11But1' copy the files DisableGadget(W2P10); DisableGadget(W2P11But1); DisableGadget(W2P11But2) DisableGadget(W2P11But3); DisableGadget(W2P11But4) Tst1="Please wait. Copying "+String(Flist.GetFCount())+" Files." SetGadgetText(W2P11L4,Tst1) RedrawGadget(W2) Temp1=0 ' set var for text files created during copy procedure If ButtonState(W2P10Chk1)<>0 Then Temp1=Temp1+1 If ButtonState(W2P10Chk2)<>0 Then Temp1=Temp1+2 If ButtonState(W2P10Chk3)<>0 Then Temp1=Temp1+4 FList.Init2(Exten,Prefix,StNum,DesFold,Temp1)' sets vars in FList Temp1=CountGadgetItems(W2P8Lb1); Temp1=Temp1-1 For Temp2=0 To Temp1 Tst1=GadgetItemText(W2P8Lb1,Temp2) FList.DoCopy(Tst1,Temp2,W2P11Pb1)' send origin folder name and index, and progbar label Next HideGadget(W2P10); HideGadget(W2P11); ShowGadget(W2P12) Tst1="You Have Copied "+String(Flist.GetFCount())+" Files To :"; SetGadgetText(W2P12L1,Tst1) AddGadgetItem(W2P12Lb1,DesFold) Case W2P11But2' exit from copy files screen EndIt() Case W2P11But3' return to select files to copy screen HideGadget(W2P10); HideGadget(W2P11); Status=2 ShowGadget(W2P7); ShowGadget(W2P8) Case W2P11But4' help for copy files screen 3 HideGadget(W2P10); HideGadget(W2P11); ShowGadget(W2P6) HelpScreen(3,W2P6Tf1)' display screen 3 help Case W2P12But1' exit from final screen EndIt() End Select End Select Forever '------------------------ End of Main Loop------------------------- Function EndIt()'common exit point Select Confirm("Are you sure you want to quit?") Case 1 End Case 0 Return End Select End Function Function ChkFiles(Tv1:Tgadget,Tv2:Tgadget,Tv3:Tgadget,Ts1$)' ids for the 3 check buttonsand destination folder If FileType(Ts1+"alist.txt")=0 Then EnableGadget(Tv1) Else DisableGadget(Tv1) If FileType(Ts1+"alist.cdt")=0 Then EnableGadget(Tv2) Else DisableGadget(Tv2) If FileType(Ts1+"anerror.txt")=0 Then EnableGadget(Tv3) Else DisableGadget(Tv3) End Function Function UpDir$(Dir$)' returns directory path up one level, dir = current directory Local Tx1%=0; Local Ts1$=""; Local Ts2$="" If Dir=Lz Then' at the root Ts2=Dir Else Ts2=Dir; Tx1=1 If Instr(Dir,Lz)<>0 Then'folder separator Repeat Ts1=Right$(Ts2,Tx1) If Instr(Ts1,Lz) Then' found folder name plus \ Ts2=Lz Else Tx1=Tx1+1 End If Until Ts2=Lz Ts2=Left$(Dir,(Len(Dir)-Tx1)) If Ts2="" Then Ts2=Lz Else' must be at root ' should never get hear Notify " I've made a programing error in 'UpDir()' opps!!!" End If End If Return Ts2 End Function Function FullPath$(Dir$,Ts1$) Local Ts2$="" Ts2 = RealPath(Dir+Lz+Ts1) Return Ts2 End Function Function FolderView(Dir$,Tv:TGadget,Bv:TGadget) Local Tx1%=0; Local Ts1$=""; Local FP$="" ClearGadgetItems(Tv) Tx1=ReadDir(Dir) If Dir=Lz Then DisableGadget(Bv) Else EnableGadget(Bv) End If Repeat Ts1=NextFile(Tx1) FP = RealPath(Dir+Lz+Ts1) If Instr(Ts1,".")<>0 Or Ts1=Null Then 'don't show these items Else' show these item If FP<>"" Then If FileType(FP)=2 Then AddGadgetItem(TV,Ts1) End If End If Until Ts1 = Null End Function Function FileView(Dir$,Tv:Tgadget) Local Tx1%=0; Local Ts1$=""; Local FP$="" Tx1=ReadDir(Dir) ClearGadgetItems(TV) Repeat Ts1=NextFile(Tx1) If Left$(Ts1,1)<>"." Then FP = RealPath(Dir+Lz+Ts1) If FP<>"" Then If FileType(FP)=1 Then AddGadgetItem(TV,Ts1) End If End If Until Ts1=Null End Function Function FileView2(Dir$,Tv:Tgadget,Ts3$)' search directory, gadget list for display, extension. ie '*.mp3' Local Tx1%=0; Local Ts1$=""; Local Ts2$="" Tx1=ReadDir(Dir) ClearGadgetItems(TV) Repeat Ts1=NextFile(Tx1) Ts2=Right$(Ts1,4) If Ts2=Right$(Ts3,4) Then AddGadgetItem(TV,Ts1)' file has selected extension Until Ts1=Null End Function Function SelFile(Ts1$,Tv:Tgadget)' Ts1=filename selected, Tv=list box to display in Local Tx1%=0; Local Tx2%=0; Local Tx3%=0; Local Ts2$="" Tx1=CountGadgetItems(Tv) If Tx1=0 Then AddGadgetItem(Tv,Ts1) Else If Tx1>0 Then' some items in list Tx1=Tx1-1 For Tx2= 0 To Tx1 If Ts1=GadgetItemText$(Tv,Tx2 ) Then Tx3=1 Next If Tx3=0 Then AddGadgetItem(Tv,Ts1) End If End Function Function DelCFile(Tv:Tgadget)'removes seleted file name from the copy list Local Tx1%=0 Tx1=SelectedGadgetItem(Tv) If Tx1<>-1 Then 'something selected RemoveGadgetItem(Tv,Tx1) End If Tx1=SelectedGadgetItem(Tv) If Tx1<>-1 Then DeselectGadgetItem(Tv,Tx1) End Function Function CheckText%(Ts4$)' only allow a-z, A-Z, 0 to 9 Local Ts1$=Ts4 Local Tx1%=Len(Ts1)-1 Local Tx2%=0; Local Tx3%=0; Local Tx4%=0 Local Ts2$=""; Local Ts3$="" If Tx1>-1 Then For Tx2=0 To Tx1 Tx3=Tx2+1; Ts2=Ts1[Tx2..Tx3] If (Asc(Ts2)>64) And (Asc(Ts2)<91) Then'A..Z Ts3=Ts3+Ts2 Else If (Asc(Ts2)>96) And (Asc(Ts2)<123) Then'a..z Ts3=Ts3+Ts2 Else If (Asc(Ts2)>47) And (Asc(Ts2)<58) Then'0..9 Ts3=Ts3+Ts2 Else Ts3=Ts3+Ts2 Tx4=1 End If Next End If Return Tx4 End Function Function CheckNameLength$(Tx1%,Ts2$) 'keeps name input Ts2 to Tx1 length max Local Ts1$=Ts2 If Len(Ts1)>Tx1 Then Ts1=Ts1[0..Tx1] End If Return Ts1 End Function Function AllOk%(Tg1:Tgadget,Tg2:Tgadget,Tg3:Tgadget)' check to see if all vars set before enabling 'continue' Local Tx1%=1 If GadgetText(Tg1)="" Or GadgetText(Tg2)="" Or GadgetText(Tg3)="" Then Tx1=0 Return Tx1 ' return 0 if any vars not set End Function Function HelpScreen(Tx1%,Tf:Tgadget)' text for help screen Local S1$=Chr$(13); SetTextAreaText(Tf,"") If Tx1=1 Then' help screen 1 AddTextAreaText(Tf," Program Help - Screen One."+S1+S1) FormatTextAreaText( Tf,0,180,0,TEXTFORMAT_UNDERLINE,23,TEXTAREA_ALL,TEXTAREA_CHARS ) AddTextAreaText(Tf,"Hint : Create a folder for your copies before starting !"+S1+S1) AddTextAreaText(Tf,"This program is designed to copy multiple files from multiple areas into a single folder and"+S1) AddTextAreaText(Tf,"a name sequence of your choice."+S1+S1) AddTextAreaText(Tf,"First (top left) you will be asked to select the file extension of the file type you want to"+S1) AddTextAreaText(Tf,"copy, click 'Continue' when you have made your selection."+S1+S1) AddTextAreaText(Tf,"You can then select a prefix for the files you want to create. After clicking 'Continue' you can"+S1) AddTextAreaText(Tf,"provide a start number for the files you are going to create. Click 'Continue' again to activate"+S1) AddTextAreaText(Tf,"the folder selection area (bottom left) to choose the folder to place your copied files into."+S1+S1) AddTextAreaText(Tf,"You can change any of your choices by clicking the appropriate 'Edit' button."+S1) AddTextAreaText(Tf,"At the second screen you select the files for copying, another help screen is provided."+S1+S1) AddTextAreaText(Tf,"As an example :"+S1) AddTextAreaText(Tf,"You select *.wav as a file extension, 'mus-' as a prefix and 120 as a start number."+S1) AddTextAreaText(Tf,"You choose to place the copied files into \users\me\music."+S1) AddTextAreaText(Tf,"You choose to copy 'fred1.wav' , 'gojo73.wav' and 'somemusic.wav'"+S1+S1) AddTextAreaText(Tf,"With these choices the following files will be created in '\users\me\music'."+S1) AddTextAreaText(Tf,"A copy of 'fred1.wav' named 'mus-120.wav'"+S1) AddTextAreaText(Tf,"A copy of 'gojo73.wav' named 'mus-121.wav'"+S1) AddTextAreaText(Tf,"A copy of 'somemusic.wav' named 'mus-122.wav'"+S1+S1) AddTextAreaText(Tf,"When you have made your selections click 'Continue with current settings' to get to the file"+S1) AddTextAreaText(Tf,"selection screen.") Else If Tx1=2 Then 'help for screen 2 file select screen AddTextAreaText(Tf," Program Help - Screen Two."+S1+S1) FormatTextAreaText( Tf,0,180,0,TEXTFORMAT_UNDERLINE,23,TEXTAREA_ALL,TEXTAREA_CHARS ) AddTextAreaText(Tf,"Select the folder from the top left list, containing the files you wish to copy."+S1) AddTextAreaText(Tf,"The files with the extension you previously specified will be shown in the top centre list."+S1+S1) AddTextAreaText(Tf,"Select a file by clicking the file name, or all files using the 'Select All' option."+S1) AddTextAreaText(Tf,"You can click on a file in the top right hand list and the use the 'Remove File From Copy list'"+S1) AddTextAreaText(Tf,"option to remove this file from the list, or the 'Clear All' option to clear the list."+S1) AddTextAreaText(Tf,"Once you have a list of all the files you want to copy from a folder, click the"+S1) AddTextAreaText(Tf,"'Add Files To Copy List' option."+S1+S1) AddTextAreaText(Tf,"The list at the base of the screen will show the folders that have files in that you have"+S1) AddTextAreaText(Tf,"selected for copying. You can review the files to be copied from each folder by clicking the"+S1) AddTextAreaText(Tf,"appropriate folder name."+S1+S1) AddTextAreaText(Tf,"The program will show a running total of the files selected for copying, when you have selected"+S1) AddTextAreaText(Tf,"all the files you wish to copy click the 'Ready To Copy The Files.' option"+S1+S1) AddTextAreaText(Tf,"The maximum number of files that can be copied in one pass is "+MaxFile+".") Else' Tx1=3 ready for copying screen 3 AddTextAreaText(Tf," Program Help - Screen Three."+S1+S1) FormatTextAreaText( Tf,0,180,0,TEXTFORMAT_UNDERLINE,23,TEXTAREA_ALL,TEXTAREA_CHARS ) AddTextAreaText(Tf,"The top half of the screen offers offers three options."+S1+S1) AddTextAreaText(Tf,"OPTION create alist.txt : Generates a text file 'alist.txt' in your selected destination folder"+S1) AddTextAreaText(Tf,"that contains. The name of the destination folder. The name of the original folder and file."+S1) AddTextAreaText(Tf,"And the new name for the file you have created. "+S1+S1) AddTextAreaText(Tf,"OPTION create acdt.txt : Generates a text file 'acdt.txt' in your selected destination folder"+S1) AddTextAreaText(Tf,"that contains. The original file name and the new file name seperated by a comma."+S1) AddTextAreaText(Tf,"This can be imported into a spreadsheet or database using the comma deliniated text setting."+S1+S1) AddTextAreaText(Tf,"OPTION create anerror.txt : Generates a text file 'anerror.txt' in your selected destination folder"+S1) AddTextAreaText(Tf,"that contains. All the failed attemps to copy a file or an empty file if no errors occured."+S1+S1) AddTextAreaText(Tf,"If an option is not avaliable then the file must allready exsist in the destination folder."+S1) AddTextAreaText(Tf,"To generate the file go to the destination folder and delete the appropriate file, then click"+S1) AddTextAreaText(Tf,"the 'Check Folder' option. The option will now be avaliable."+S1+S1) AddTextAreaText(Tf,"The lower panel shows the name of the destination folder, the name of the first new file to be"+S1) AddTextAreaText(Tf,"created and the total number of files to be copied."+S1) AddTextAreaText(Tf,"You can return to the file select screen by clicking the 'Return To Select Files' option."+S1+S1) AddTextAreaText(Tf,"Clicking the 'Copy Selected Files' option starts the copying process."+S1) AddTextAreaText(Tf,"Progress is indicated by the progress bar shown, the program will let you know when"+S1) AddTextAreaText(Tf,"the copying has been compleated."+S1+S1) AddTextAreaText(Tf,"NB.. The program has been writen so as to prevent overwriting of files. If a file with the"+S1) AddTextAreaText(Tf,"same name as the one being created allready exsists in the destination folder it will not"+S1) AddTextAreaText(Tf,"generate a copy."+S1+S1) AddTextAreaText(Tf,"It is a good idea to start with an empty destination older.... Have Fun !") End If End Function '---------------- start of Types -------------------------- Type VarStore' store for folder index and file names to be copied Field FNum%[MaxFile]' array for holding next avaliable index for folder names in list box (0 to maxfile-1) Field FName$[MaxFile]' array for file names to be copied (0 to maxfile-1) Field Exten$=""; Field Prefix$=""; Field DesFold$="" Field PTxt:Byte=0; Field PCdt:Byte=0; Field PErr:Byte=0 Field MyFile1:TStream; Field MyFile2:TStream; Field MyFile3:TStream Field StNum%=0 Field FCount% ' number of files selected for copying Field PBarCount%=0' actual number of files copied only used by the progress bar Field FCBig:Float=0.0'base number only used by progress bar Method Initilise()'set initial vars Local Tx1%=0 For Tx1=0 To MaxFile-1 FNum[Tx1]=0; Fname[Tx1]="" Next SetFCount(0) End Method Method Init2(Ts1$,Ts2$,Ts3$,Ts4$,Tx1%)' sets Exten,Prefix,StNum,DesFold vars, Tx1=1 to 7 Exten=Right$(Ts1,4); Prefix=Ts2; DesFold=Ts4 StNum=Int(Ts3) Select Tx1 Case 0 PTxt=0; PCdt=0; PErr=0 Case 1 PTxt=1 Case 2 Pcdt=1 Case 3 PTxt=1; Pcdt=1 Case 4 PErr=1 Case 5 PErr=1; PTxt=1 Case 6 PErr=1; PCdt=1 Case 7 PErr=1; PTxt=1; PCdt=1 End Select End Method Method SetFNum(Tx1%)' sets FNum var FNum[Tx1]=GetFCount() End Method Method GetFNum%(Tx1%)' retrive FNum var Local Tx2%=0 Tx2=FNum[Tx1] Return Tx2 End Method Method SetStNum(Tx1%)' incrimants StNum% during file copy StNum=Tx1 End Method Method GetStNum%()' gets StNum% Local Tx1%=0 Tx1=StNum Return Tx1 End Method Method GetPrefix$()' gets new file prefix Return Prefix End Method Method GetExten$()' gets new file extension Return Exten End Method Method GetDesFold$()' gets new file destination folder Return DesFold End Method Method SetFCount(Tx1%)' sets FCount FCount=Tx1 End Method Method GetFcount%()' returns current FCount Local Tx1%=0 Tx1=Fcount Return Tx1 End Method Method GetFName$(Tx1%)' returns file name stored at location FName[Tx1] Local Ts1$="" Ts1=FName[Tx1] Return Ts1 End Method Method ShowCFiles(Tv:Tgadget,Tx1%)' Tv=where to display file names, Tx1=index number Local Tx2%=0; Local Tx3%=0; Local Tx4%=0 ClearGadgetItems(TV) Tx2=GetFNum(Tx1); Tx3=GetFNum(Tx1+1); Tx3=Tx3-1 For Tx4=Tx2 To Tx3 AddGadgetItem(Tv,GetFname(Tx4)) Next End Method Method SetFNames(Tv1:Tgadget) 'Tv1=listbox with file names' puts file names into array Local Tx1%=0; Local Tx2%=0 ; Local Fc1%=0 Fc1=GetFCount() ' start file count number Tx1=CountGadgetItems(Tv1)' number of file names in list box to copy For Tx2=0 To Tx1-1 Fname[Fc1+Tx2]=GadgetItemText(Tv1,Tx2) 'Print Fc1+Tx2 +" : "+Fname[Fc1+Tx2] Next SetFCount(Fc1+Tx2) End Method Method SetFold(Tv1:Tgadget,Dir$)' sets Fnum values. Tv1=listbox for folder info, dir=current directory Local Tx1%=0; Local Ts1$="" Ts1=Dir+Lz AddGadgetItem(Tv1,Ts1) Tx1=CountGadgetItems(Tv1) SetFNum(Tx1) End Method Method Docopy(Ts1$,InX%,Tv1:Tgadget)' origin folder name plus index for FNum array, progbar Tgadget Local Tx1%=0; Local Tx2%=0; Local Tx3%=0; Local Tx4%=0 Local Ts2$=""; Local Ts3$=""; Local Ts4$="" FcBig=GetFcount()'set FcBig to Number of files to copy If Inx=0 Then If PTxt Then MyFile1=WriteFile(DesFold+"alist.txt")' text file of copies If PCdt Then MyFile2=WriteFile(DesFold+"acdt.txt")'cdt file of copies If PErr Then MyFile3=WriteFile(DesFold+"anerror.txt")' error log, if any End If Ts2=GetDesFold(); Tx4=GetStNum() Tx1=GetFNum(Inx); Tx2=GetFNum(Inx+1); Tx2=Tx2-1 If PTxt Then' write text file list of copies enabled If InX=0 Then ' first pass WriteLine(MyFile1,"All Files Copied To :") WriteLine(MyFile1,DesFold) End If WriteLine(MyFile1,"Files Copied From :") WriteLine(MyFile1,Ts1) End If For Tx3= Tx1 To Tx2 Ts3=Ts1+GetFname(Tx3)' Ts3 = original filespec Ts4=Ts2+GetPrefix()+String(Tx4)+GetExten()' Ts4 = new filespec If FileType(Ts4)=0' file does not exsist in destination folder, do the copy If CopyFile( Ts3,Ts4 )=True Then If PTxt Then WriteLine(MyFile1,GetFname(Tx3)+" to "+GetPrefix()+String(Tx4)+GetExten()) If PCdt Then WriteLine(MyFile2,GetFname(Tx3)+","+GetPrefix()+String(Tx4)+GetExten()) Else' error If PErr Then WriteLine(MyFile3,Ts3+Chr$(13)+"was not copied to"+Chr$(13)+Ts4+Chr$(13)) End If Else' file allready exsists If PErr Then WriteLine(MyFile3,Ts4 +Chr$(13)+"was not created as it exsisted in the destination folder"+Chr$(13)) End If PBarCount=PbarCount+1 UpdateProgBar Tv1,PBarCount/FcBig Tx4=Tx4+1 Next SetStNum(Tx4) End Method Method CloseCopy() If PTxt Then CloseStream Myfile1 If PCdt Then CloseStream Myfile2 If PErr Then CloseStream Myfile3 End Method End Type |
Comments
None.
Code Archives Forum