Here are some thoughts / considerations that must be resolved to implement this. Note that your desire to preserve the folder structure will require additional work, as well. I've listed some questions below, in order to document things that a solution would need to take into account. You don't have to answer those questions. However, I do have one question that I would like you to answer... Would it be OK for a new file that is being copied to overwrite an existing file, without warning to the user? (If a warning is required, the solution could become even more complex, and it could be annoying to the user, if they have to make a decision for each duplicate file. We currently do not do this on the Copy Files page that is invoked from the Terminal Page). CONSIDERATIONS ============== Handling Non-text Files ----------------------- - Show all files in the "preseed" directory left pane of Preseed tab. - Include text (preseed) files. - Include non-text (binary) files. - Clicking on a non-text file will open a text editor in the right pane of the Preseed tab. - Clicking on a non-text file will open a message in the right pane of the Preseed tab letting the user know that the file is binary and can not be edited. Copying Files ------------- Drag-and-drop files onto left pane of Preseed tab. - Should the new files: - Approach A: Simply add to the list of files in the left pane of the Preseed tab? - Approach B: Present the user with a list of files that are about to be copied, and allow the user to accept or cancel the operation. - If Approach B is used, it would be consistent with what we do on the Terminal page, when we drag files onto it. - If Approach B is used, should the copy files page be superimposed on top of the Options page? - There are two ways to implement Approach B: - Approach B1: Replace the Options Page with a list of files about to be copied, and allow the user to accept or cancel. - Approach B2: Continue to show the Options Page and the Preseed tab, but show the list of files to be copied in the right pane of the Preseed tab. - If Approach B1 is used, it would be consistent with what we do on the Terminal page, when we drag files onto it. - If Approach B2 is used, it would be consistent with what we do on the Preseed tab, when we create a new file or delete a preseed file. - We probably don't even need a cancel button, because the user can simply click in the Left pane to cancel the action (as is done for creating or deleting preseed files). Behavior -------- - If a file already exists in the preseed directory, and a file with the same name is copied into the directory, the existing file will be overwritten without warning. - Is this reasonable? - If a directory is selected as the source of preseed files, do we?... - Approach C: Copy the entire directory structure into the preseed folder? - If so, the left pane of the Preseed tab only handles files, and can not handle directory trees. - This would have to be written if we need to support files in sub-directories. - Approach D: Copy files from all sub directories only, into a flattened preseed directory on the ISO. - The left pane of the Preseed tab can support this. - Files with the same name would overwrite each other, depending on which file is copied last. - Approach E: - Do not allow the user to select a directory. - Only files can be copied. Files can be text or binary. - This is probably the cleanest option. - As the user copies files, files with the same name will overwrite each other, but this was stated above and is the expected behavior. - Currently, changes made on a page in Cubic are NOT saved until the user clicks the Next/Generate button. - If the user clicks the Back button changes are not saved to disk. - If the user clicks the Quit button changes are not saved to disk. - Changes are only saved to disk if the user clicks the Next button. - The only exception is the Terminal page, where changes are immediate. - If we implement the Drag-and-Drop copy functionality for preseed files, we would probably follow the same "save" behavior for consistency. - Any copied files or changes made will only be saved if the Next/Generate button is clicked. - Copying files into Cubic would list the files in the left pane of the Preseed tab. - You will be able to edit the text files, if desired. - Changes will only be saved when the Next/Generate button is clicked. - Dilemma for non-text/binary files. - Binary files will not be loaded into memory for editing. - This means, the original source of the binary files must be available when the user clicks the Next/Generate button. - If the original file has changed, moved, or is no longer available, Cubic will experience an error in the background, or the file won't be copied. This would be an inconsistent or negative user experience. - We could temporarily copy the files into a temporary folder in the Cubic project directory, and them move them to the preseed folder once the user clicks Next/Generate. - But I don't like the idea of creating temporarily files that may stick around if the computer is shutdown or the application crashes.