From 66639e951b79a36c8c32b3c1c18b7ffe013e3636 Mon Sep 17 00:00:00 2001 From: sixteenmillimeter Date: Tue, 23 Feb 2021 19:54:03 -0500 Subject: [PATCH] Allow for the selection of a video file, image or directory containing images to be selected in the filmout UI. --- app/lib/ui/filmout.js | 71 ++++++++++++++++++++++++++------- app/lib/ui/filmout.js.map | 2 +- app/src/lib/ui/filmout.ts | 83 +++++++++++++++++++++++++++++---------- 3 files changed, 119 insertions(+), 37 deletions(-) diff --git a/app/lib/ui/filmout.js b/app/lib/ui/filmout.js index 649b92d..557bd52 100644 --- a/app/lib/ui/filmout.js +++ b/app/lib/ui/filmout.js @@ -46,9 +46,9 @@ let filmout; class FilmOut { constructor() { this.id = 'filmout'; - this.extensions = ['.mpg', '.mpeg', '.mov', '.mkv', '.avi', '.mp4', - '.gif', - '.tif', '.tiff', '.png', '.jpg', '.jpeg', '.bmp']; + this.videoExtensions = ['.mpg', '.mpeg', '.mov', '.mkv', '.avi', '.mp4', + '.gif']; + this.imageExtensions = ['.tif', '.tiff', '.png', '.jpg', '.jpeg', '.bmp']; this.displays = []; this.state = { frame: 0, @@ -120,12 +120,16 @@ class FilmOut { this.state.display = id; ipcRenderer.send('display', { display: id }); } + /** + * Select a file from the showOpenDialog method. Save the file + * to an element if the selection is valid. + **/ selectFile() { return __awaiter(this, void 0, void 0, function* () { const elem = $('#digital'); const options = { title: `Select video or image sequence`, - properties: [`openFile`], + properties: [`multiSelection`], defaultPath: 'c:/', filters: [ { @@ -148,24 +152,61 @@ class FilmOut { } if (!files) return false; - pathStr = files.filePaths[0]; - console.dir(pathStr); - if (pathStr && pathStr !== '') { - ext = path.extname(pathStr.toLowerCase()); - valid = this.extensions.indexOf(ext) === -1 ? false : true; - log.info(pathStr); - if (!valid) { - return false; - } - log.info(`Selected video ${pathStr.split('/').pop()}`, 'FILMOUT', true); + if (files.filePaths.length > 0) { + pathStr = files.filePaths[0]; + displayName = path.basename(pathStr); + valid = this.validateSelection(files); + log.info(`Selected "${displayName}"`, 'FILMOUT', true); elem.attr('data-file', pathStr); - displayName = pathStr.split('/').pop(); elem.val(displayName); $('#filmout_file').val(displayName); this.useFile(); } + if (!valid) { + gui.warn('Invalid selection', `The selection "${displayName}" is not an accepted video, image or folder containing an image sequence.`); + return false; + } }); } + /** + * Validate the selection to be of an approved selection or a directory + * containing images of an approved extension. + **/ + validateSelection(files) { + let ext; + let pathStr; + let dir = false; + let valid = false; + let fileList = []; + if (files.filePaths.length === 1) { + pathStr = files.filePaths[0]; + dir = fs.lstatSync(pathStr).isDirectory(); + if (dir) { + log.info('The selection is a directory'); + fileList = fs.readdirSync(pathStr); + fileList = fileList.filter((file) => { + let ext = path.extname(file).toLowerCase(); + if (this.imageExtensions.indexOf(ext)) { + return true; + } + return false; + }); + if (fileList.length > 0) { + valid = true; + } + } + ext = path.extname(pathStr.toLowerCase()); + valid = this.videoExtensions.indexOf(ext) === -1; + if (!valid) { + valid = this.imageExtensions.indexOf(ext) === -1; + } + return valid; + } + return false; + } + /** + * Prompt the user to use the selected file/files or cancel + **/ useFile() { return __awaiter(this, void 0, void 0, function* () { const elem = $('#digital'); diff --git a/app/lib/ui/filmout.js.map b/app/lib/ui/filmout.js.map index 6bf584c..6d715ca 100644 --- a/app/lib/ui/filmout.js.map +++ b/app/lib/ui/filmout.js.map @@ -1 +1 @@ -{"version":3,"file":"filmout.js","sourceRoot":"","sources":["../../src/lib/ui/filmout.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"filmout.js","sourceRoot":"","sources":["../../src/lib/ui/filmout.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/src/lib/ui/filmout.ts b/app/src/lib/ui/filmout.ts index dbfa3f8..caf485d 100644 --- a/app/src/lib/ui/filmout.ts +++ b/app/src/lib/ui/filmout.ts @@ -4,6 +4,7 @@ declare var dialog : any; declare var path : any; +declare var fs : any; /** * Determine the greatest common denominator @@ -43,9 +44,9 @@ let filmout : FilmOut; class FilmOut { private id : string = 'filmout'; - private extensions : string[] = ['.mpg', '.mpeg', '.mov', '.mkv', '.avi', '.mp4', - '.gif', - '.tif', '.tiff', '.png', '.jpg', '.jpeg', '.bmp']; + private videoExtensions : string[] = ['.mpg', '.mpeg', '.mov', '.mkv', '.avi', '.mp4', + '.gif']; + private imageExtensions : string[] = ['.tif', '.tiff', '.png', '.jpg', '.jpeg', '.bmp']; private displays : any[] = []; private state : any = { frame : 0, @@ -124,11 +125,15 @@ class FilmOut { this.state.display = id; ipcRenderer.send('display', { display : id }); } + /** + * Select a file from the showOpenDialog method. Save the file + * to an element if the selection is valid. + **/ async selectFile () { const elem : any = $('#digital'); const options : any = { title : `Select video or image sequence`, - properties : [`openFile`], // openDirectory, multiSelection, openFile + properties : [`multiSelection`], // openDirectory, multiSelection, openFile defaultPath: 'c:/', filters : [ { @@ -144,34 +149,70 @@ class FilmOut { let ext : string; try { - files = await dialog.showOpenDialog(options) + files = await dialog.showOpenDialog(options); } catch (err) { log.error(err); - return false + return false; } - if (!files) return false; - pathStr = files.filePaths[0]; - - console.dir(pathStr) - - if (pathStr && pathStr !== '') { - ext = path.extname(pathStr.toLowerCase()); - valid = this.extensions.indexOf(ext) === -1 ? false : true; - log.info(pathStr) - if (!valid) { - return false; - } - log.info(`Selected video ${pathStr.split('/').pop()}`, 'FILMOUT', true); + if (files.filePaths.length > 0) { + pathStr = files.filePaths[0]; + displayName = path.basename(pathStr); + valid = this.validateSelection(files); + log.info(`Selected "${displayName}"`, 'FILMOUT', true); elem.attr('data-file', pathStr); - displayName = pathStr.split('/').pop(); elem.val(displayName); $('#filmout_file').val(displayName); - this.useFile(); } + + if (!valid) { + gui.warn('Invalid selection', `The selection "${displayName}" is not an accepted video, image or folder containing an image sequence.`); + return false; + } } + + /** + * Validate the selection to be of an approved selection or a directory + * containing images of an approved extension. + **/ + validateSelection (files : any) { + let ext : string; + let pathStr : string; + let dir : boolean = false; + let valid : boolean = false; + let fileList : string[] = []; + if (files.filePaths.length === 1) { + pathStr = files.filePaths[0]; + dir = fs.lstatSync(pathStr).isDirectory(); + if (dir) { + log.info('The selection is a directory'); + fileList = fs.readdirSync(pathStr); + fileList = fileList.filter((file : string) => { + let ext : string = path.extname(file).toLowerCase(); + if (this.imageExtensions.indexOf(ext)) { + return true; + } + return false; + }); + if (fileList.length > 0) { + valid = true; + } + } + ext = path.extname(pathStr.toLowerCase()); + valid = this.videoExtensions.indexOf(ext) === -1; + if (!valid) { + valid = this.imageExtensions.indexOf(ext) === -1; + } + return valid; + } + return false; + } + + /** + * Prompt the user to use the selected file/files or cancel + **/ async useFile () { const elem : any = $('#digital'); const filePath : string = elem.attr('data-file');