diff --git a/frontend/app.js b/frontend/app.js index 4d46b976..36543d81 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -2,90 +2,70 @@ // instead of ipc, maybe? // https://github.com/atom/electron/blob/master/docs/api/remote.md -var ipc = require('ipc'); -var path = require('path'); -var fs = require('fs'); - - -var platforms; -var templates; - -// var platforms = { -// "osx": "OS X (Xcode)", -// "vs": "Windows (Visual Studio)", -// "ios": "iOS (Xcode)", -// "linux": "Linux 32-bit (Code::Blocks)", -// "linux64": "Linux 64-bit (Code::Blocks)", -// "linuxarmv6l": "Linux ARMv6 (Makefiles)", -// "linuxarmv7l": "Linux ARMv7 (Makefiles)" -// }; - -var defaultSettings; -var addonsInstalled; -var currentPath; -var isOfPathGood = false; -var isFirstTimeSierra = false; -var bVerbose = false; -var localAddons = []; +const { ipcRenderer } = require('electron'); +const path = require('path'); +const fs = require('fs'); +let platforms; +let templates; +let defaultSettings; +let addonsInstalled; +let isOfPathGood = false; +let isFirstTimeSierra = false; +let bVerbose = false; +let localAddons = []; //----------------------------------------------------------------------------------- // IPC //----------------------------------------------------------------------------------- //------------------------------------------- -ipc.on('setOfPath', function(arg) { +ipcRenderer.on('setOfPath', function (event, arg) { setOFPath(arg); }); -ipc.on('cwd', function(arg) { - +ipcRenderer.on('cwd', function (event, arg) { console.log(arg); }); -ipc.on('setUpdatePath', function(arg) { - var elem = document.getElementById("updateMultiplePath"); +ipcRenderer.on('setUpdatePath', function (event, arg) { + let elem = document.getElementById("updateMultiplePath"); elem.value = arg; $("#updateMultiplePath").change(); - }); -ipc.on('isUpdateMultiplePathOk', function(arg) { - if (arg == true){ +ipcRenderer.on('isUpdateMultiplePathOk', function (event, arg) { + if (arg == true) { $("#updateMultipleWrongMessage").hide(); $("#updateMultipleButton").removeClass("disabled"); - - } else { + } else { $("#updateMultipleWrongMessage").show(); $("#updateMultipleButton").addClass("disabled"); - - } + } }); //------------------------------------------- -ipc.on('setup', function(arg) { +ipcRenderer.on('setup', function (event, arg) { setup(); }); //----------------------------------------- // this is called from main when defaults are loaded in: -ipc.on('setDefaults', function(arg) { - +ipcRenderer.on('setDefaults', function (event, arg) { defaultSettings = arg; setOFPath(defaultSettings['defaultOfPath']); enableAdvancedMode(defaultSettings['advancedMode']); - }); //------------------------------------------- -ipc.on('setStartingProject', function(arg) { +ipcRenderer.on('setStartingProject', function (event, arg) { $("#projectPath").val(arg['path']); $("#projectName").val(arg['name']); }); //------------------------------------------- -ipc.on('setProjectPath', function(arg) { +ipcRenderer.on('setProjectPath', function (event, arg) { $("#projectPath").val(arg); //defaultSettings['lastUsedProjectPath'] = arg; //saveDefaultSettings(); @@ -93,30 +73,29 @@ ipc.on('setProjectPath', function(arg) { }); //------------------------------------------- -ipc.on('setGenerateMode', function(arg) { +ipcRenderer.on('setGenerateMode', function (event, arg) { switchGenerateMode(arg); }); //------------------------------------------- -ipc.on('importProjectSettings', function(settings) { +ipcRenderer.on('importProjectSettings', function (settings) { $("#projectPath").val(settings['projectPath']); $("#projectName").val(settings['projectName']).trigger('change'); // change triggers addon scanning }); //------------------------------------------- -ipc.on('setAddons', function(arg) { - +ipcRenderer.on('setAddons', function (event, arg) { console.log("got set addons"); console.log(arg); addonsInstalled = arg; - var select = document.getElementById("addonsList"); + let select = document.getElementById("addonsList"); select.innerHTML = ""; if (arg !== null && arg.length > 0) { // add: - for (var i = 0; i < arg.length; i++) { + for (let i = 0; i < arg.length; i++) { $('
', { "class": 'item', @@ -127,13 +106,10 @@ ipc.on('setAddons', function(arg) { $("#ofPathSierraMessage").hide(); $("#ofPathWrongMessage").hide(); isOfPathGood = true; - - - } else { - if(isFirstTimeSierra){ + if (isFirstTimeSierra) { $("#ofPathSierraMessage").show(); - }else{ + } else { $("#ofPathWrongMessage").show(); } isOfPathGood = false; @@ -141,13 +117,9 @@ ipc.on('setAddons', function(arg) { // bounce to settings //$('.main .ui').tab('change tab', 'settings') - - - } - - $('#addonsDropdown') + $('#addonsDropdown') .dropdown({ allowAdditions: false, fullTextSearch: 'exact', @@ -156,113 +128,119 @@ ipc.on('setAddons', function(arg) { }); -ipc.on('setPlatforms', function(arg) { - +ipcRenderer.on('setPlatforms', function (event, arg) { console.log("got set platforms"); console.log(arg); console.log("got set platforms"); platforms = arg; + { + let select = document.getElementById("platformList"); + let option, i; + for (let i in platforms) { + let myClass = 'platform'; - var select = document.getElementById("platformList"); - var option, i; - for (var i in platforms) { - var myClass = 'platform'; - - $('
', { - "class": 'item', - "data-value": i - }).html(platforms[i]).appendTo(select); - } + $('
', { + "class": 'item', + "data-value": i + }).html(platforms[i]).appendTo(select); + } - // start the platform drop down. - $('#platformsDropdown').dropdown({ + // start the platform drop down. + $('#platformsDropdown').dropdown({ allowAdditions: false }); - // set the platform to default - $('#platformsDropdown').dropdown('set exactly', defaultSettings['defaultPlatform']); + // set the platform to default + $('#platformsDropdown').dropdown('set exactly', defaultSettings['defaultPlatform']); + } - var select = document.getElementById("platformListMulti"); - var option, i; - for (var i in platforms) { - var myClass = 'platform'; + { + let select = document.getElementById("platformListMulti"); + let option, i; + for (let i in platforms) { + let myClass = 'platform'; - $('
', { - "class": 'item', - "data-value": i - }).html(platforms[i]).appendTo(select); } + $('
', { + "class": 'item', + "data-value": i + }).html(platforms[i]).appendTo(select); + } - // start the platform drop down. - $('#platformsDropdownMulti') - .dropdown({ - allowAdditions: false - }); + // start the platform drop down. + $('#platformsDropdownMulti') + .dropdown({ + allowAdditions: false + }); - // // set the platform to default - $('#platformsDropdownMulti').dropdown('set exactly', defaultSettings['defaultPlatform']); + // // set the platform to default + $('#platformsDropdownMulti').dropdown('set exactly', defaultSettings['defaultPlatform']); + } }); -ipc.on('setTemplates', function(arg) { +ipcRenderer.on('setTemplates', function (event, arg) { console.log("----------------"); console.log("got set templates"); console.log(arg); templates = arg; - var select = document.getElementById("templateList"); - var option, i; - for (var i in templates) { - console.log(i); - var myClass = 'template'; + { + let select = document.getElementById("templateList"); + let option, i; + for (let i in templates) { + console.log(i); + let myClass = 'template'; - $('
', { - "class": 'item', - "data-value": i - }).html(templates[i]).appendTo(select); - } + $('
', { + "class": 'item', + "data-value": i + }).html(templates[i]).appendTo(select); + } - console.log(select); + console.log(select); - // start the template drop down. - $('#templatesDropdown') - .dropdown({ - allowAdditions: false, - fullTextSearch: 'exact', - match: "text", - maxSelections: 1 - }); + // start the template drop down. + $('#templatesDropdown') + .dropdown({ + allowAdditions: false, + fullTextSearch: 'exact', + match: "text", + maxSelections: 1 + }); - // // set the template to default - //$('#templatesDropdown').dropdown('set exactly', defaultSettings['defaultTemplate']); + // // set the template to default + //$('#templatesDropdown').dropdown('set exactly', defaultSettings['defaultTemplate']); + } - // Multi - var select = document.getElementById("templateListMulti"); - var option, i; - for (var i in templates) { - var myClass = 'template'; + { + // Multi + let select = document.getElementById("templateListMulti"); + let option, i; + for (let i in templates) { + let myClass = 'template'; - $('
', { - "class": 'item', - "data-value": i - }).html(templates[i]).appendTo(select); - } + $('
', { + "class": 'item', + "data-value": i + }).html(templates[i]).appendTo(select); + } - // start the platform drop down. - $('#templatesDropdownMulti') - .dropdown({ - allowAdditions: false, - maxSelections: 1 - }); + // start the platform drop down. + $('#templatesDropdownMulti') + .dropdown({ + allowAdditions: false, + maxSelections: 1 + }); - // // set the template to default - //$('#templatesDropdownMulti').dropdown('set exactly', defaultSettings['defaultTemplate']); + // // set the template to default + //$('#templatesDropdownMulti').dropdown('set exactly', defaultSettings['defaultTemplate']); + } }); - -ipc.on('enableTemplate', function (arg) { +ipcRenderer.on('enableTemplate', function (event, arg) { console.log('enableTemplate'); let items = arg.bMulti === false ? $('#templatesDropdown .menu .item') : $('#templatesDropdownMulti .menu .item'); @@ -285,49 +263,43 @@ ipc.on('enableTemplate', function (arg) { //------------------------------------------- // select the list of addons and notify if some aren't installed -ipc.on('selectAddons', function(arg) { - - +ipcRenderer.on('selectAddons', function (event, arg) { // todo : DEAL WITH LOCAL ADDONS HERE.... - var addonsAlreadyPicked = $("#addonsDropdown").val().split(','); + let addonsAlreadyPicked = $("#addonsDropdown").val().split(','); console.log(addonsAlreadyPicked); console.log(arg); console.log(addonsInstalled); - var neededAddons = []; + let neededAddons = []; localAddons = []; //haystack.indexOf(needle) >= 0 - for (var i = 0; i < arg.length; i++) { + for (let i = 0; i < arg.length; i++) { arg[i] = arg[i].trim(); // first, check if it's already picked, then do nothing - if (addonsAlreadyPicked.indexOf(arg[i]) >= 0){ + if (addonsAlreadyPicked.indexOf(arg[i]) >= 0) { console.log("already picked"); // alread picked } else { - // if not picked, check if have it and try to pick it - if (addonsInstalled.indexOf(arg[i]) >= 0){ + if (addonsInstalled.indexOf(arg[i]) >= 0) { $('#addonsDropdown').dropdown('set selected', arg[i]); } else { - var neededAddonPathRel = path.join($("#projectPath").val(), $("#projectName").val(), arg[i]); + let neededAddonPathRel = path.join($("#projectPath").val(), $("#projectName").val(), arg[i]); console.log(neededAddonPathRel); if (fs.existsSync(neededAddonPathRel) || - fs.existsSync(neededAddons[i])){ + fs.existsSync(neededAddons[i])) { localAddons.push(arg[i]); } else { neededAddons.push(arg[i]); } - - } } } - if (neededAddons.length > 0) { console.log("missing addons"); // $("#generate-mode-section").addClass("has-missing-addons"); @@ -335,15 +307,13 @@ ipc.on('selectAddons', function(arg) { $('#missingAddonList').append("" + neededAddons.join(", ") + ""); $("#missingAddonMessage").show(); $("#adons-refresh-icon").show(); - } else { $("#adons-refresh-icon").hide(); $("#missingAddonMessage").hide(); - // $("#generate-mode-section").removeClass("has-missing-addons"); } - if (localAddons.length > 0){ + if (localAddons.length > 0) { // $("#generate-mode-section").addClass("has-missing-addons"); $('#localAddonList').empty(); $('#localAddonList').append("" + localAddons.join(", ") + ""); @@ -353,41 +323,34 @@ ipc.on('selectAddons', function(arg) { $("#localAddonMessage").hide(); } - -// - - - + // }); //------------------------------------------- // allow main to send UI messages -ipc.on('sendUIMessage', function(arg) { - +ipcRenderer.on('sendUIMessage', function (event, arg) { // check if it has "success" message: - - displayModal(arg); }); //------------------------------------------- -ipc.on('consoleMessage', function(msg) { +ipcRenderer.on('consoleMessage', function (msg) { consoleMessage(msg); }); //------------------------------------------- -ipc.on('generateCompleted', function(isSuccessful) { +ipcRenderer.on('generateCompleted', function (isSuccessful) { if (isSuccessful === true) { // We want to switch to update mode now $("#projectName").trigger('change'); @@ -395,38 +358,32 @@ ipc.on('generateCompleted', function(isSuccessful) { }); //------------------------------------------- -ipc.on('updateCompleted', function(isSuccessful) { +ipcRenderer.on('updateCompleted', function (isSuccessful) { if (isSuccessful === true) { // eventual callback after update completed } }); -ipc.on('setRandomisedSketchName', function(newName) { +ipcRenderer.on('setRandomisedSketchName', function (newName) { $("#projectName").val(newName); }); - //----------------------------------------------------------------------------------- // functions //----------------------------------------------------------------------------------- - //---------------------------------------- function setOFPath(arg) { // get the element: - var elem = document.getElementById("ofPath"); + let elem = document.getElementById("ofPath"); if (!path.isAbsolute(arg)) { - // if we are relative, don't do anything... - elem.value = arg; - } else { - // else check settings for how we want this path.... make relative if we need to: if (defaultSettings['useRelativePath'] === true) { - var relativePath = path.normalize(path.relative(path.resolve(__dirname), arg)) + "/"; + let relativePath = path.normalize(path.relative(path.resolve(__dirname), arg)) + "/"; elem.value = relativePath; } else { elem.value = arg; @@ -436,48 +393,43 @@ function setOFPath(arg) { $("#ofPath").trigger('change'); } - //---------------------------------------- function setup() { - jQuery.fn.extend({ - oneTimeTooltip: function(msg) { - return this.each(function() { - $(this).popup({ - content : msg, - position : 'bottom center', - on: 'manual', - onVisible: function(e){ - // hide on focus / change / onShow (for dropdowns) - $(e).one('focus change click', function(){ $(this).popup('hide');} ); - console.log($(e).children('input')); - } - }).popup('show') - }); - } + oneTimeTooltip: function (msg) { + return this.each(function () { + $(this).popup({ + content: msg, + position: 'bottom center', + on: 'manual', + onVisible: function (e) { + // hide on focus / change / onShow (for dropdowns) + $(e).one('focus change click', function () { $(this).popup('hide'); }); + console.log($(e).children('input')); + } + }).popup('show') + }); + } }); - - $(document).ready(function() { - - - try{ - var os = require('os'); - - var os_release = os.release(); - var os_major_pos = os_release.indexOf("."); - var os_major = os_release.slice(0, os_major_pos); - - var isSierra = (os.platform() === 'darwin' && Number(os_major)>=16); - if(isSierra){ - var ofpath = document.getElementById("ofPath").value; - var runningOnVar = false - try{ - runningOnVar = (ofpath.length >= 8 && ofpath.substring(0,8)==='/private'); - }catch(e){} + $(document).ready(function () { + + try { + let os = require('os'); + let os_release = os.release(); + let os_major_pos = os_release.indexOf("."); + let os_major = os_release.slice(0, os_major_pos); + let isSierra = (os.platform() === 'darwin' && Number(os_major) >= 16); + + if (isSierra) { + let ofpath = document.getElementById("ofPath").value; + let runningOnVar = false + try { + runningOnVar = (ofpath.length >= 8 && ofpath.substring(0, 8) === '/private'); + } catch (e) { } isFirstTimeSierra = runningOnVar; } - }catch(e){ + } catch (e) { isFirstTimeSierra = false; } @@ -486,38 +438,38 @@ function setup() { }); $("#createMenuButon").tab({ - 'onVisible':function(){ - if (isOfPathGood !== true){ + 'onVisible': function () { + if (isOfPathGood !== true) { $('#settingsMenuButton').click(); - $('#ofPathError').modal({ + $('#ofPathError').modal({ onHide: function () { - $('#settingsMenuButton').click(); + $('#settingsMenuButton').click(); } }).modal("show"); - } + } } }); $("#updateMenuButton").tab({ - 'onVisible':function(){ - if (isOfPathGood !== true){ + 'onVisible': function () { + if (isOfPathGood !== true) { $('#settingsMenuButton').click(); - $('#ofPathError').modal({ + $('#ofPathError').modal({ onHide: function () { - $('#settingsMenuButton').click(); + $('#settingsMenuButton').click(); } }).modal("show"); - } + } } }); $("#settingsMenuButton").tab({ - 'onVisible':function(){ + 'onVisible': function () { console.log("settings!! "); $('#createMenuButon').removeClass('active'); $('#updateMenuButton').removeClass('active'); $('#settingsMenuButton').addClass('active'); - } + } }); // $('.main.menu .item').filter('.updateMultiMenuOption').tab({ // 'onVisible':function(){ @@ -528,56 +480,52 @@ function setup() { // } // }); - - - - // bind external URLs (load it in default browser; not within Electron) $('*[data-toggle="external_target"]').click(function (e) { e.preventDefault(); - var shell = require('shell'); - shell.openExternal( $(this).prop('href') ); + let shell = require('shell'); + shell.openExternal($(this).prop('href')); }); $("#projectPath").on('change', function () { - if( $(this).is(":focus")===true ){ return; } + if ($(this).is(":focus") === true) { return; } $("#projectName").trigger('change'); // checks the project on the new location }); $("#projectPath").on('focusout', function () { - $(this).trigger('change'); + $(this).trigger('change'); }); $("#projectName").on('change', function () { - if( $(this).is(":focus")===true ){ return; } + if ($(this).is(":focus") === true) { return; } - var project = {}; + let project = {}; // fix "non alpha numeric characters here" as we did in the old PG - var currentStr = $("#projectName").val() - var stripped = currentStr.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_'); + let currentStr = $("#projectName").val() + let stripped = currentStr.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '_'); $("#projectName").val(stripped) - project['projectName'] = $("#projectName").val(); - project['projectPath'] = $("#projectPath").val(); + project['projectName'] = $("#projectName").val(); + project['projectPath'] = $("#projectPath").val(); - // check if project exists - ipc.send('isOFProjectFolder', project); + // check if project exists + ipcRenderer.send('isOFProjectFolder', project); // update link to local project files - $("#revealProjectFiles").prop('href', 'file:///' + path.join(project['projectPath'],project['projectName']).replace(/^\//, '') ); + $("#revealProjectFiles").prop('href', 'file:///' + path.join(project['projectPath'], project['projectName']).replace(/^\//, '')); }).trigger('change'); $("#projectName").on('focusout', function () { - $(this).trigger('change'); + $(this).trigger('change'); }); $("#updateMultiplePath").on('change', function () { - ipc.send('checkMultiUpdatePath', $("#updateMultiplePath").val()); + ipcRenderer.send('checkMultiUpdatePath', $("#updateMultiplePath").val()); }); $("#advancedOptions").checkbox(); - $("#advancedOptions").on("change", function() { + $("#advancedOptions").on("change", function () { if ($("#advancedOptions").filter(":checked").length > 0) { enableAdvancedMode(true); } else { @@ -585,79 +533,76 @@ function setup() { } }); - $("#IDEButton").on("click", function() { + $("#IDEButton").on("click", function () { launchInIDE(); - }); - + }); - $("#verboseOption").checkbox(); - $("#verboseOption").on("change", function() { + $("#verboseOption").checkbox(); + $("#verboseOption").on("change", function () { if ($("#verboseOption").filter(":checked").length > 0) { - defaultSettings['verboseOutput'] = true; - bVerbose = true; - saveDefaultSettings(); + defaultSettings['verboseOutput'] = true; + bVerbose = true; + saveDefaultSettings(); } else { - defaultSettings['verboseOutput'] = false; - bVerbose = false; - saveDefaultSettings(); + defaultSettings['verboseOutput'] = false; + bVerbose = false; + saveDefaultSettings(); } }); - - $("#ofPath").on("change", function(){ - var ofpath = $("#ofPath").val(); - defaultSettings['defaultOfPath'] = ofpath; + $("#ofPath").on("change", function () { + let ofpath = $("#ofPath").val(); + defaultSettings['defaultOfPath'] = ofpath; console.log("ofPath val " + ofpath); - if(isFirstTimeSierra){ - //var sys = require('sys') - var exec = require('child_process').exec; + if (isFirstTimeSierra) { + // let sys = require('sys') + let exec = require('child_process').exec; function puts(error, stdout, stderr) { console.log(stdout + " " + stderr) } exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); - } saveDefaultSettings(); console.log("requesting addons"); // trigger reload addons from the new OF path - ipc.send('refreshAddonList', $("#ofPath").val()); - ipc.send('refreshPlatformList', $("#ofPath").val()); + ipcRenderer.send('refreshAddonList', $("#ofPath").val()); + ipcRenderer.send('refreshPlatformList', $("#ofPath").val()); }); - - if (defaultSettings['advancedMode'] === true){ - $("#advancedOptions").attr('Checked','Checked'); + if (defaultSettings['advancedMode'] === true) { + $("#advancedOptions").attr('Checked', 'Checked'); } - if (defaultSettings['verboseOutput'] === true){ - $('#verboseOption').attr('Checked','Checked'); + if (defaultSettings['verboseOutput'] === true) { + $('#verboseOption').attr('Checked', 'Checked'); bVerbose = true; } // updates ofPath when the field is manually changed - $("#ofPath").on('blur', function(e){ - var ofpath = $(this).val(); + $("#ofPath").on('blur', function (e) { + let ofpath = $(this).val(); setOFPath(ofpath); - if(isFirstTimeSierra){ - //var sys = require('sys') - var exec = require('child_process').exec; + if (isFirstTimeSierra) { + // let sys = require('sys') + let exec = require('child_process').exec; function puts(error, stdout, stderr) { console.log(stdout + " " + stderr) } exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); //exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); } - }).on('keypress', function(e){ - if(e.which==13){ + }).on('keypress', function (e) { + if (e.which == 13) { e.preventDefault(); $(this).blur(); } }); - - /* Stuff for the console setting (removed from UI) - $("#consoleToggle").on("change", function () { - enableConsole( $(this).is(':checked') ); - });*/ + /* + Stuff for the console setting (removed from UI) + $("#consoleToggle").on("change", function () { + enableConsole( $(this).is(':checked') ); + }); + */ // enable console? (hiddens setting) // if(defaultSettings['showConsole']){ $("body").addClass('enableConsole'); } // $("#showConsole").on('click', function(){ $('body').addClass('showConsole'); }); @@ -678,7 +623,6 @@ function setup() { } }); - // show default platform in GUI $("#defaultPlatform").html(defaultSettings['defaultPlatform']); //$("#defaultTemplate").html(defaultSettings['defaultTemplate']); @@ -691,7 +635,6 @@ function setup() { // $('body').removeClass('page-create_update page-settings page-advanced').addClass( 'page-' + $(e.target).attr("href").replace('#', '') ); // }); - // setup the multi update list as well. $("#ofPath").change(); @@ -704,33 +647,32 @@ function setup() { $(window).on('dragenter', openDragInputModal); // Close file drop zone - $(window).on('dragbetterleave', closeDragInputModal ); - $(window).on('mouseleave', closeDragInputModal ); + $(window).on('dragbetterleave', closeDragInputModal); + $(window).on('mouseleave', closeDragInputModal); // prevent dropping anywhere (dropping files loads their URL, unloading the PG) // note: weirdly, dragover is also needed - $(window).on('drop dragover', blockDragEvent ); + $(window).on('drop dragover', blockDragEvent); //$(window).on('dragleave', blockDragEvent); $("#dropZoneOverlay").on('drop', onDropFile).on('dragend', closeDragInputModal); // this allows to close the drop zone if it ever stays open due to a bug. $("#dropZoneOverlay").on('click', closeDragInputModal); - $(window).on('keypress', function(e){ - if( e.which === 27 ){ // esc key + $(window).on('keypress', function (e) { + if (e.which === 27) { // esc key e.stopPropagation(); e.preventDefault(); - closeDragInputModal( e ); + closeDragInputModal(e); } }); // listen for drag events // note: dragover is needed because dragleave is called pretty randomly - $("#dropZoneUpdate").on('dragenter dragover drop', onDragUpdateFile).on('dragleave', function(e){ + $("#dropZoneUpdate").on('dragenter dragover drop', onDragUpdateFile).on('dragleave', function (e) { $(this).removeClass("accept deny"); }); - // reflesh template dropdown list depends on selected platforms $("#platformsDropdown").on('change', function () { let selectedPlatforms = $("#platformsDropdown input").val(); @@ -740,8 +682,9 @@ function setup() { selectedPlatforms: selectedPlatformArray, bMulti: false } - ipc.send('refreshTemplateList', arg); + ipcRenderer.send('refreshTemplateList', arg); }) + $("#platformsDropdownMulti").on('change', function () { let selectedPlatforms = $("#platformsDropdownMulti input").val(); let selectedPlatformArray = selectedPlatforms.trim().split(','); @@ -750,17 +693,16 @@ function setup() { selectedPlatforms: selectedPlatformArray, bMulti: true } - ipc.send('refreshTemplateList', arg); + ipcRenderer.send('refreshTemplateList', arg); }) - }); } -function blockDragEvent(e){ +function blockDragEvent(e) { //console.log('blockDragEvent via '+e.type + ' on '+ e.target.nodeName + '#' + e.target.id); // open drop overlay if not already open - if( !$('body').hasClass('incomingFile') ){ + if (!$('body').hasClass('incomingFile')) { $(window).triggerHandler('dragbetterenter'); } @@ -769,33 +711,33 @@ function blockDragEvent(e){ return false; }; -function acceptDraggedFiles( e ){ - // handle file - var files = e.originalEvent.dataTransfer.files; - var types = e.originalEvent.dataTransfer.types; +function acceptDraggedFiles(e) { + // handle file + let files = e.originalEvent.dataTransfer.files; + let types = e.originalEvent.dataTransfer.types; // this first check filters out most files - if(files && files.length == 1 && files[0].type==="" && types[0]=="Files"){ + if (files && files.length == 1 && files[0].type === "" && types[0] == "Files") { // this folder check is more relayable - var file = e.originalEvent.dataTransfer.items[0].webkitGetAsEntry(); - if( file.isDirectory ){ + let file = e.originalEvent.dataTransfer.items[0].webkitGetAsEntry(); + if (file.isDirectory) { return true; } } return false; } -function onDragUpdateFile( e ){ +function onDragUpdateFile(e) { e.stopPropagation(); e.preventDefault(); //console.log('onDragUpdateFile via '+e.type + ' on '+ e.target.nodeName + '#' + e.target.id); - if( !$('body').hasClass('incomingFile') ){ + if (!$('body').hasClass('incomingFile')) { return false; } - if( acceptDraggedFiles( e ) ){ + if (acceptDraggedFiles(e)) { $("#dropZone").addClass("accept").removeClass("deny"); return true; } @@ -806,25 +748,25 @@ function onDragUpdateFile( e ){ return false; } -function onDropFile( e ){ +function onDropFile(e) { e.stopPropagation(); e.preventDefault(); - if( acceptDraggedFiles( e ) ){ + if (acceptDraggedFiles(e)) { $("#dropZone").addClass("accept").removeClass("deny"); - if( $('body').hasClass('advanced') && false ){ // todo: if (tab multiple is open) + if ($('body').hasClass('advanced') && false) { // todo: if (tab multiple is open) // do batch import $("updateMenuButton").triggerHandler('click'); } else { - var files = e.originalEvent.dataTransfer.files; + let files = e.originalEvent.dataTransfer.files; // import single project folder - $("#projectName").val( files[0].name ); - var projectFullPath = files[0].path; - var projectParentPath = path.normalize(projectFullPath+'/..'); - $("#projectPath").val( projectParentPath ).triggerHandler('change'); + $("#projectName").val(files[0].name); + let projectFullPath = files[0].path; + let projectParentPath = path.normalize(projectFullPath + '/..'); + $("#projectPath").val(projectParentPath).triggerHandler('change'); $("createMenuButon").triggerHandler('click'); } @@ -836,14 +778,14 @@ function onDropFile( e ){ $("#dropZone").addClass("deny").removeClass("accept"); displayModal( - "The file you dropped is not compatible for importing.
"+ - "To import an OpenFrameworks project, drag & drop the whole project folder." + "The file you dropped is not compatible for importing.
" + + "To import an OpenFrameworks project, drag & drop the whole project folder." ); } return false; } -function closeDragInputModal(e){ +function closeDragInputModal(e) { e.stopPropagation(); e.preventDefault(); @@ -860,18 +802,18 @@ function closeDragInputModal(e){ return false; } -function openDragInputModal(e){ +function openDragInputModal(e) { e.stopPropagation(); e.preventDefault(); //console.log('openDragInputModal via '+e.type + ' on '+ e.target.nodeName + '#' + e.target.id); - if( !$('body').hasClass('incomingFile') ){ + if (!$('body').hasClass('incomingFile')) { $("#fileDropModal").modal('show'); } // check filetype when entering droppable zone - if( e.type==='dragenter' ){ + if (e.type === 'dragenter') { onDragUpdateFile(e); } @@ -881,8 +823,7 @@ function openDragInputModal(e){ //---------------------------------------- function saveDefaultSettings() { - var fs = require('fs'); - fs.writeFile(path.resolve(__dirname, 'settings.json'), JSON.stringify(defaultSettings, null, '\t'), function(err) { + fs.writeFile(path.resolve(__dirname, 'settings.json'), JSON.stringify(defaultSettings, null, '\t'), function (err) { if (err) { console.log("Unable to save defaultSettings to settings.json... (Error=" + err.code + ")"); } else { @@ -894,29 +835,29 @@ function saveDefaultSettings() { //---------------------------------------- function generate() { // let's get all the info: - var platformValueArray = getPlatformList(); + let platformValueArray = getPlatformList(); - var templatePicked = $("#templatesDropdown .active"); - var templateValueArray = []; - for (var i = 0; i < templatePicked.length; i++){ + let templatePicked = $("#templatesDropdown .active"); + let templateValueArray = []; + for (let i = 0; i < templatePicked.length; i++) { templateValueArray.push($(templatePicked[i]).attr("data-value")); } - var addonsPicked = $("#addonsDropdown .active"); - var addonValueArray = []; + let addonsPicked = $("#addonsDropdown .active"); + let addonValueArray = []; - for (var i = 0; i < addonsPicked.length; i++){ + for (let i = 0; i < addonsPicked.length; i++) { addonValueArray.push($(addonsPicked[i]).attr("data-value")); } // add any local addons - for (var i = 0; i < localAddons.length; i++){ + for (let i = 0; i < localAddons.length; i++) { addonValueArray.push(localAddons[i]); } - var lengthOfPlatforms = platformValueArray.length; + let lengthOfPlatforms = platformValueArray.length; - var gen = {}; + let gen = {}; gen['projectName'] = $("#projectName").val(); gen['projectPath'] = $("#projectPath").val(); @@ -934,35 +875,30 @@ function generate() { } else if (gen['platformList'] === null || gen['platformList'] === "" || lengthOfPlatforms == 0) { $("#platformsDropdown").oneTimeTooltip("Please select a platform first."); } else { - ipc.send('generate', gen); + ipcRenderer.send('generate', gen); } - } - //---------------------------------------- function updateRecursive() { // get the path and the platform list - //platformsDropdownMulti - - - var platformsPicked = $("#platformsDropdownMulti .active"); - var platformValueArray = []; - for (var i = 0; i < platformsPicked.length; i++){ + let platformsPicked = $("#platformsDropdownMulti .active"); + let platformValueArray = []; + for (let i = 0; i < platformsPicked.length; i++) { platformValueArray.push($(platformsPicked[i]).attr("data-value")); } - var templatePicked = $("#templatesDropdownMulti .active"); - var templateValueArray = []; - for (var i = 0; i < templatePicked.length; i++){ + let templatePicked = $("#templatesDropdownMulti .active"); + let templateValueArray = []; + for (let i = 0; i < templatePicked.length; i++) { templateValueArray.push($(templatePicked[i]).attr("data-value")); } - var gen = {}; + let gen = {}; gen['updatePath'] = $("#updateMultiplePath").val(); gen['platformList'] = platformValueArray; gen['templateList'] = templateValueArray; @@ -975,7 +911,7 @@ function updateRecursive() { } else if (platformValueArray.length === 0) { displayModal("Please select a platform first."); } else { - ipc.send('update', gen); + ipcRenderer.send('update', gen); } } @@ -997,12 +933,12 @@ function switchGenerateMode(mode) { console.log('Switching GenerateMode to Update...'); clearAddonSelection(); - } + // [default]: switch to createMode (generate new projects) else { // if previously in update mode, deselect Addons - if( $("#updateButton").is(":visible") ){ clearAddonSelection(); } + if ($("#updateButton").is(":visible")) { clearAddonSelection(); } $("#generateButton").show(); $("#updateButton").hide(); @@ -1013,17 +949,12 @@ function switchGenerateMode(mode) { $("#adons-refresh-icon").hide(); console.log('Switching GenerateMode to Create...'); - - - } } //---------------------------------------- function clearAddonSelection() { - $('#addonsDropdown').dropdown('clear'); - } //---------------------------------------- @@ -1070,9 +1001,9 @@ function enableConsole( showConsole ){ //---------------------------------------- function getPlatformList() { - var platformsPicked = $("#platformsDropdown .active"); - var platformValueArray = []; - for (var i = 0; i < platformsPicked.length; i++){ + let platformsPicked = $("#platformsDropdown .active"); + let platformValueArray = []; + for (let i = 0; i < platformsPicked.length; i++) { platformValueArray.push($(platformsPicked[i]).attr("data-value")); } return platformValueArray; @@ -1081,12 +1012,12 @@ function getPlatformList() { //---------------------------------------- function displayModal(message) { $("#uiModal .content").html(message).find('*[data-toggle="external_target"]').click(function (e) { - e.preventDefault(); - var shell = require('shell'); - shell.openExternal( $(this).prop("href") ); + e.preventDefault(); + let shell = require('shell'); + shell.openExternal($(this).prop("href")); }); - if (message.indexOf("Success!") > -1){ + if (message.indexOf("Success!") > -1) { $("#IDEButton").show(); } else { $("#IDEButton").hide(); @@ -1106,66 +1037,66 @@ function consoleMessage(message) { // Button calls //----------------------------------------------------------------------------------- -function quit(){ - ipc.send('quit', ''); +function quit() { + ipcRenderer.send('quit', ''); } function browseOfPath() { - ipc.send('pickOfPath', ''); // current path could go here (but the OS also remembers the last used folder) + ipcRenderer.send('pickOfPath', ''); // current path could go here (but the OS also remembers the last used folder) } function browseProjectPath() { - var path = $("#projectPath").val(); - if (path === ''){ + let path = $("#projectPath").val(); + if (path === '') { path = $("#ofPath").val(); } - ipc.send('pickProjectPath', path); // current path could go here + ipcRenderer.send('pickProjectPath', path); // current path could go here } function browseImportProject() { - var path = $("#projectPath").val(); - if (path === ''){ + let path = $("#projectPath").val(); + if (path === '') { path = $("#ofPath").val(); } - ipc.send('pickProjectImport', path); + ipcRenderer.send('pickProjectImport', path); } function getUpdatePath() { - var path = $("#updateMultiplePath").val(); - if (path === ''){ + let path = $("#updateMultiplePath").val(); + if (path === '') { path = $("#ofPath").val(); } - ipc.send('pickUpdatePath', path); // current path could go here + ipcRenderer.send('pickUpdatePath', path); // current path could go here } function rescanAddons() { - ipc.send('refreshAddonList', $("#ofPath").val()); - var projectInfo = {}; + ipcRenderer.send('refreshAddonList', $("#ofPath").val()); + let projectInfo = {}; projectInfo['projectName'] = $("#projectName").val(); projectInfo['projectPath'] = $("#projectPath").val(); - ipc.send('isOFProjectFolder', projectInfo); // <- this forces addon reload + ipcRenderer.send('isOFProjectFolder', projectInfo); // <- this forces addon reload } -function getRandomSketchName(){ - var path = $("#projectPath").val(); - if (path === ''){ +function getRandomSketchName() { + let path = $("#projectPath").val(); + if (path === '') { $("#projectPath").oneTimeTooltip('Please specify a path first...'); } else { - ipc.send('getRandomSketchName', path ); + ipcRenderer.send('getRandomSketchName', path); } } -function launchInIDE(){ - var platform = getPlatformList()[0]; +function launchInIDE() { + let platform = getPlatformList()[0]; - var project = {}; + let project = {}; project['projectName'] = $("#projectName").val(); project['projectPath'] = $("#projectPath").val(); project['platform'] = platform; project['ofPath'] = $("#ofPath").val(); - ipc.send('launchProjectinIDE', project ); + ipcRenderer.send('launchProjectinIDE', project); } diff --git a/frontend/index.html b/frontend/index.html index 4a7530d5..6646dbd4 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,17 +1,20 @@ - - - openFrameworks Project Generator - - - + - - - - -
+ + +
-
- - <
- - - -
- - -
-
-
-