From 0363a10d0cb5f5c778d47e7ac21c9399fa111e89 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Sat, 21 May 2016 23:15:26 +0200 Subject: [PATCH] :arrow_up: file-explorer. --- file-explorer/main.js | 60 ++++++------- file-explorer/package.json | 2 +- file-explorer/script.js | 169 ++++++++++++++++++------------------- 3 files changed, 111 insertions(+), 120 deletions(-) diff --git a/file-explorer/main.js b/file-explorer/main.js index 502e73c..c03e732 100644 --- a/file-explorer/main.js +++ b/file-explorer/main.js @@ -1,33 +1,27 @@ -var app = require('app'); // Module to control application life. -var BrowserWindow = require('browser-window'); // Module to create native browser window. - -// Report crashes to our server. -require('crash-reporter').start(); - -// Keep a global reference of the window object, if you don't, the window will -// be closed automatically when the javascript object is GCed. -var mainWindow = null; - -// Quit when all windows are closed. -app.on('window-all-closed', function() { - if (process.platform != 'darwin') - app.quit(); -}); - -// This method will be called when Electron has done everything -// initialization and ready for creating browser windows. -app.on('ready', function() { - // Create the browser window. - mainWindow = new BrowserWindow({width: 800, height: 600}); - - // and load the index.html of the app. - mainWindow.loadUrl('file://' + __dirname + '/index.html'); - - // Emitted when the window is closed. - mainWindow.on('closed', function() { - // Dereference the window object, usually you would store windows - // in an array if your app supports multi windows, this is the time - // when you should delete the corresponding element. - mainWindow = null; - }); -}); +const {app, BrowserWindow} = require('electron'); + +let mainWindow; + +// Quit when all windows are closed. +app.on('window-all-closed', function() { + if (process.platform != 'darwin') + app.quit(); +}); + +// This method will be called when Electron has done everything +// initialization and ready for creating browser windows. +app.on('ready', function() { + // Create the browser window. + mainWindow = new BrowserWindow({width: 800, height: 600}); + + // and load the index.html of the app. + mainWindow.loadURL('file://' + __dirname + '/index.html'); + + // Emitted when the window is closed. + mainWindow.on('closed', function() { + // Dereference the window object, usually you would store windows + // in an array if your app supports multi windows, this is the time + // when you should delete the corresponding element. + mainWindow = null; + }); +}); diff --git a/file-explorer/package.json b/file-explorer/package.json index 4745f9d..8eac164 100644 --- a/file-explorer/package.json +++ b/file-explorer/package.json @@ -1,5 +1,5 @@ { "name" : "file-explorer-demo", - "version" : "0.1.0", + "version" : "1.1.0", "main" : "main.js" } diff --git a/file-explorer/script.js b/file-explorer/script.js index 681a8c4..eefeaf2 100644 --- a/file-explorer/script.js +++ b/file-explorer/script.js @@ -1,86 +1,83 @@ -global.$ = $; - -var remote = require('remote'); -var Menu = remote.require('menu'); -var BrowserWindow = remote.require('browser-window'); -var MenuItem = remote.require('menu-item'); -var shell = require('shell'); - -var abar = require('address_bar'); -var folder_view = require('folder_view'); - -// append default actions to menu for OSX -var initMenu = function () { - try { - var nativeMenuBar = new Menu(); - if (process.platform == "darwin") { - nativeMenuBar.createMacBuiltin && nativeMenuBar.createMacBuiltin("FileExplorer"); - } - } catch (error) { - console.error(error); - setTimeout(function () { throw error }, 1); - } -}; - -var aboutWindow = null; -var App = { - // show "about" window - about: function () { - var params = {toolbar: false, resizable: false, show: true, height: 150, width: 400}; - aboutWindow = new BrowserWindow(params); - aboutWindow.loadUrl('file://' + __dirname + '/about.html'); - }, - - // change folder for sidebar links - cd: function (anchor) { - anchor = $(anchor); - - $('#sidebar li').removeClass('active'); - $('#sidebar i').removeClass('icon-white'); - - anchor.closest('li').addClass('active'); - anchor.find('i').addClass('icon-white'); - - this.setPath(anchor.attr('nw-path')); - }, - - // set path for file explorer - setPath: function (path) { - if (path.indexOf('~') == 0) { - path = path.replace('~', process.env['HOME']); - } - this.folder.open(path); - this.addressbar.set(path); - } -}; - -$(document).ready(function() { - initMenu(); - - var folder = new folder_view.Folder($('#files')); - var addressbar = new abar.AddressBar($('#addressbar')); - - folder.open(process.cwd()); - addressbar.set(process.cwd()); - - App.folder = folder; - App.addressbar = addressbar; - - folder.on('navigate', function(dir, mime) { - if (mime.type == 'folder') { - addressbar.enter(mime); - } else { - shell.openItem(mime.path); - } - }); - - addressbar.on('navigate', function(dir) { - folder.open(dir); - }); - - // sidebar favorites - $('[nw-path]').bind('click', function (event) { - event.preventDefault(); - App.cd(this); - }); -}); +global.$ = $; + +const {remote} = require('electron'); +const {Menu, BrowserWindow, MenuItem, shell} = remote; + +var abar = require('address_bar'); +var folder_view = require('folder_view'); + +// append default actions to menu for OSX +var initMenu = function () { + try { + var nativeMenuBar = new Menu(); + if (process.platform == "darwin") { + nativeMenuBar.createMacBuiltin && nativeMenuBar.createMacBuiltin("FileExplorer"); + } + } catch (error) { + console.error(error); + setTimeout(function () { throw error }, 1); + } +}; + +var aboutWindow = null; +var App = { + // show "about" window + about: function () { + var params = {toolbar: false, resizable: false, show: true, height: 150, width: 400}; + aboutWindow = new BrowserWindow(params); + aboutWindow.loadURL('file://' + __dirname + '/about.html'); + }, + + // change folder for sidebar links + cd: function (anchor) { + anchor = $(anchor); + + $('#sidebar li').removeClass('active'); + $('#sidebar i').removeClass('icon-white'); + + anchor.closest('li').addClass('active'); + anchor.find('i').addClass('icon-white'); + + this.setPath(anchor.attr('nw-path')); + }, + + // set path for file explorer + setPath: function (path) { + if (path.indexOf('~') == 0) { + path = path.replace('~', process.env['HOME']); + } + this.folder.open(path); + this.addressbar.set(path); + } +}; + +$(document).ready(function() { + initMenu(); + + var folder = new folder_view.Folder($('#files')); + var addressbar = new abar.AddressBar($('#addressbar')); + + folder.open(process.cwd()); + addressbar.set(process.cwd()); + + App.folder = folder; + App.addressbar = addressbar; + + folder.on('navigate', function(dir, mime) { + if (mime.type == 'folder') { + addressbar.enter(mime); + } else { + shell.openItem(mime.path); + } + }); + + addressbar.on('navigate', function(dir) { + folder.open(dir); + }); + + // sidebar favorites + $('[nw-path]').bind('click', function (event) { + event.preventDefault(); + App.cd(this); + }); +});