Clean up nodejs code to use modules
This commit is contained in:
		
							parent
							
								
									eafe375144
								
							
						
					
					
						commit
						42b481ea60
					
				
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										202
									
								
								app/index.js
									
									
									
									
									
								
							
							
						
						
									
										202
									
								
								app/index.js
									
									
									
									
									
								
							@ -1,190 +1,16 @@
 | 
			
		||||
var menubar = require('menubar'),
 | 
			
		||||
    menu = require("menu"),
 | 
			
		||||
    tray = require('tray'),
 | 
			
		||||
    ipc = require('ipc'),
 | 
			
		||||
    exec = require('child_process').exec,
 | 
			
		||||
    loadUrl = null;
 | 
			
		||||
var ipc = require('ipc');
 | 
			
		||||
var toolbarUi = require('./modules/toolbar-ui.js');
 | 
			
		||||
var broadcast = require('./modules/broadcast.js');
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The main process listens for events from the web renderer.
 | 
			
		||||
 */
 | 
			
		||||
toolbarUi.app.on('ready', toolbarUi.ready);
 | 
			
		||||
toolbarUi.app.on('create-window', toolbarUi.createWindow);
 | 
			
		||||
toolbarUi.app.on('after-create-window', toolbarUi.afterCreateWindow); 
 | 
			
		||||
toolbarUi.app.on('show', toolbarUi.show); 
 | 
			
		||||
toolbarUi.app.on('after-show', toolbarUi.afterShow);
 | 
			
		||||
toolbarUi.app.on('hide', toolbarUi.show);
 | 
			
		||||
toolbarUi.app.on('after-hide', toolbarUi.afterHide);
 | 
			
		||||
 | 
			
		||||
// When photos are dragged onto the toolbar and photos are requested to be updated it will fire an 'update-photos' ipc event.
 | 
			
		||||
// The web renderer will send the list of photos, type of update and new value to apply
 | 
			
		||||
// Once this main process completes the update it will send a 'update-photos-completed' event back to the renderer with information
 | 
			
		||||
//  so a proper response can be displayed.
 | 
			
		||||
ipc.on('import-photos', function(event, args) {
 | 
			
		||||
  var params = args,
 | 
			
		||||
      normalize;
 | 
			
		||||
 | 
			
		||||
  console.log('import-photos');
 | 
			
		||||
  console.log(args);
 | 
			
		||||
  if(typeof(args['source']) === 'undefined' || args['source'].length === 0 || typeof(args['destination']) === 'undefined' || args['destination'].length === 0) {
 | 
			
		||||
    console.log('no source or destination passed in to import-photos');
 | 
			
		||||
    event.sender.send('update-import-no-photos', null);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  args['source'] = args['source'].normalize();
 | 
			
		||||
  args['destination'] = args['destination'].normalize();
 | 
			
		||||
 | 
			
		||||
  update_command = __dirname + '/../dist/elodie/elodie import --source="' + args['source'] +  '" --destination="' + args['destination'] + '"';
 | 
			
		||||
  //update_command = __dirname + '/../elodie.py import --source="' + args['source'] +  '" --destination="' + args['destination'] + '"';
 | 
			
		||||
  
 | 
			
		||||
  console.log(update_command)
 | 
			
		||||
  exec(update_command, function(error, stdout, stderr) {
 | 
			
		||||
    console.log('out ' + stdout)
 | 
			
		||||
    console.log('err ' + stderr)
 | 
			
		||||
    /*params['error'] = error
 | 
			
		||||
    params['stdout'] = '[' + stdout.replace(/\n/g,',').replace(/\,+$/g, '').replace(/\n/g,'') + ']'
 | 
			
		||||
    params['stderr'] = stderr
 | 
			
		||||
    console.log('parsed')
 | 
			
		||||
    console.log(params['stdout'])*/
 | 
			
		||||
    event.sender.send('update-import-success', args);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// When photos are dragged onto the toolbar and photos are requested to be updated it will fire an 'update-photos' ipc event.
 | 
			
		||||
// The web renderer will send the list of photos, type of update and new value to apply
 | 
			
		||||
// Once this main process completes the update it will send a 'update-photos-completed' event back to the renderer with information
 | 
			
		||||
//  so a proper response can be displayed.
 | 
			
		||||
ipc.on('update-photos', function(event, args) {
 | 
			
		||||
  var params = args,
 | 
			
		||||
      normalize;
 | 
			
		||||
 | 
			
		||||
  console.log('update-photos');
 | 
			
		||||
  console.log(args);
 | 
			
		||||
  if(typeof(args['files']) === 'undefined' || args['files'].length === 0) {
 | 
			
		||||
    console.log('no files passed in to update-photos');
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  normalize = function(files) {
 | 
			
		||||
    for(var i=0; i<files.length; i++) {
 | 
			
		||||
      files[i] = files[i].normalize()
 | 
			
		||||
    }
 | 
			
		||||
    return files
 | 
			
		||||
  }
 | 
			
		||||
  files = normalize(args['files'])
 | 
			
		||||
 | 
			
		||||
  update_command = __dirname + '/../dist/elodie/elodie update'
 | 
			
		||||
  //update_command = __dirname + '/../elodie.py update'
 | 
			
		||||
  if(args['location'].length > 0) {
 | 
			
		||||
    update_command += ' --location="' + args['location'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['album'].length > 0) {
 | 
			
		||||
    update_command += ' --album="' + args['album'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['datetime'].length > 0) {
 | 
			
		||||
    update_command += ' --time="' + args['datetime'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['title'].length > 0) {
 | 
			
		||||
    update_command += ' --title="' + args['title'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  update_command += ' "' + files.join('" "') + '"'
 | 
			
		||||
  
 | 
			
		||||
  console.log(update_command)
 | 
			
		||||
  exec(update_command, function(error, stdout, stderr) {
 | 
			
		||||
    console.log('out ' + stdout)
 | 
			
		||||
    console.log('err ' + stderr)
 | 
			
		||||
    params['error'] = error
 | 
			
		||||
    params['stdout'] = '[' + stdout.replace(/\n/g,',').replace(/\,+$/g, '').replace(/\n/g,'') + ']'
 | 
			
		||||
    params['stderr'] = stderr
 | 
			
		||||
    console.log('parsed')
 | 
			
		||||
    console.log(params['stdout'])
 | 
			
		||||
    event.sender.send('update-photos-success', params);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
ipc.on('launch-finder', function(event, path) {
 | 
			
		||||
  console.log(path);
 | 
			
		||||
  var shell = require('shell');
 | 
			
		||||
  shell.showItemInFolder(path);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
ipc.on('program-quit', function(event, path) {
 | 
			
		||||
  console.log('program-quit');
 | 
			
		||||
  //mb.tray.destroy();
 | 
			
		||||
  mb.quit();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var mb = menubar(
 | 
			
		||||
      {
 | 
			
		||||
        preloadWindow: true,
 | 
			
		||||
        dir: __dirname + '/html',
 | 
			
		||||
        index: 'index.html',
 | 
			
		||||
        pages: {
 | 
			
		||||
          'blank': 'blank.html',
 | 
			
		||||
          'location': 'location.html'
 | 
			
		||||
        },
 | 
			
		||||
        width: 400,
 | 
			
		||||
        height: 500,
 | 
			
		||||
        'window-position': 'trayCenter'
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
mb.on('ready', function ready () {
 | 
			
		||||
  console.log('app is ready')
 | 
			
		||||
  var template = [{
 | 
			
		||||
    label: "Application",
 | 
			
		||||
    submenu: [
 | 
			
		||||
        { label: "Quit", accelerator: "Command+Q", click: function() { app.quit(); }}
 | 
			
		||||
    ]}, {
 | 
			
		||||
    label: "Edit",
 | 
			
		||||
    submenu: [
 | 
			
		||||
        { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
 | 
			
		||||
        { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
 | 
			
		||||
        { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" },
 | 
			
		||||
        { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
 | 
			
		||||
        { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
 | 
			
		||||
        { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
 | 
			
		||||
    ]}
 | 
			
		||||
  ];
 | 
			
		||||
  menu.setApplicationMenu(menu.buildFromTemplate(template));
 | 
			
		||||
 | 
			
		||||
  this.tray.setToolTip('Drag and drop files here')
 | 
			
		||||
  this.tray.setImage(mb.getOption('dir') + '/img/logo@18x22xbw.png')
 | 
			
		||||
  this.tray.on('clicked', function clicked () {
 | 
			
		||||
    console.log('tray-clicked')
 | 
			
		||||
  })
 | 
			
		||||
  this.tray.on('drop-files', function dropFiles (ev, files) {
 | 
			
		||||
    loadUrl = mb.getOption('pages')['location'];
 | 
			
		||||
    mb.showWindow();
 | 
			
		||||
    //mb.window.openDevTools();
 | 
			
		||||
    mb.window.webContents.on('did-finish-load', function() {
 | 
			
		||||
      mb.window.webContents.send('files', files);
 | 
			
		||||
      mb.window.webContents.send('preview', files);
 | 
			
		||||
    });
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mb.on('create-window', function createWindow () {
 | 
			
		||||
  console.log('create-window')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mb.on('after-create-window', function afterCreateWindow () {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
var loaded = false;
 | 
			
		||||
mb.on('show', function show () {
 | 
			
		||||
  if(loadUrl === null) {
 | 
			
		||||
    loadUrl = this.getOption('index');
 | 
			
		||||
  }
 | 
			
		||||
  this.window.loadUrl('file://' + this.getOption('dir') + '/' + loadUrl);
 | 
			
		||||
  loadUrl = null;
 | 
			
		||||
  //mb.window.openDevTools();
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mb.on('after-show', function afterShow () {
 | 
			
		||||
  console.log('after-show')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mb.on('hide', function hide () {
 | 
			
		||||
  console.log('hide')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
mb.on('after-hide', function afterHide () {
 | 
			
		||||
  console.log('after-hide')
 | 
			
		||||
  this.window.loadUrl('file://' + this.getOption('dir') + '/' + this.getOption('pages')['blank']);
 | 
			
		||||
})
 | 
			
		||||
ipc.on('import-photos', broadcast.importPhotos);
 | 
			
		||||
ipc.on('update-photos', broadcast.updatePhotos);
 | 
			
		||||
ipc.on('launch-finder', broadcast.launchFinder);
 | 
			
		||||
ipc.on('program-quit', broadcast.programQuit);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										106
									
								
								app/modules/broadcast.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								app/modules/broadcast.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,106 @@
 | 
			
		||||
var exports = module.exports = {};
 | 
			
		||||
 | 
			
		||||
var exec = require('child_process').exec;
 | 
			
		||||
 | 
			
		||||
// The main process listens for events from the web renderer.
 | 
			
		||||
// When photos are dragged onto the toolbar and photos are requested to be updated it will fire an 'update-photos' ipc event.
 | 
			
		||||
// The web renderer will send the list of photos, type of update and new value to apply
 | 
			
		||||
// Once this main process completes the update it will send a 'update-photos-completed' event back to the renderer with information
 | 
			
		||||
//  so a proper response can be displayed.
 | 
			
		||||
 | 
			
		||||
exports.importPhotos = function(event, args) {
 | 
			
		||||
  var params = args,
 | 
			
		||||
      normalize;
 | 
			
		||||
 | 
			
		||||
  console.log('import-photos');
 | 
			
		||||
  console.log(args);
 | 
			
		||||
  if(typeof(args['source']) === 'undefined' || args['source'].length === 0 || typeof(args['destination']) === 'undefined' || args['destination'].length === 0) {
 | 
			
		||||
    console.log('no source or destination passed in to import-photos');
 | 
			
		||||
    event.sender.send('update-import-no-photos', null);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  args['source'] = args['source'].normalize();
 | 
			
		||||
  args['destination'] = args['destination'].normalize();
 | 
			
		||||
 | 
			
		||||
  update_command = __dirname + '/../../dist/elodie/elodie import --source="' + args['source'] +  '" --destination="' + args['destination'] + '"';
 | 
			
		||||
  //update_command = __dirname + '/../../elodie.py import --source="' + args['source'] +  '" --destination="' + args['destination'] + '"';
 | 
			
		||||
  
 | 
			
		||||
  console.log(update_command);
 | 
			
		||||
  exec(update_command, function(error, stdout, stderr) {
 | 
			
		||||
    console.log('out ' + stdout);
 | 
			
		||||
    console.log('err ' + stderr);
 | 
			
		||||
    /*params['error'] = error
 | 
			
		||||
    params['stdout'] = '[' + stdout.replace(/\n/g,',').replace(/\,+$/g, '').replace(/\n/g,'') + ']'
 | 
			
		||||
    params['stderr'] = stderr
 | 
			
		||||
    console.log('parsed')
 | 
			
		||||
    console.log(params['stdout'])*/
 | 
			
		||||
    event.sender.send('update-import-success', args);
 | 
			
		||||
  });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// When photos are dragged onto the toolbar and photos are requested to be updated it will fire an 'update-photos' ipc event.
 | 
			
		||||
// The web renderer will send the list of photos, type of update and new value to apply
 | 
			
		||||
// Once this main process completes the update it will send a 'update-photos-completed' event back to the renderer with information
 | 
			
		||||
//  so a proper response can be displayed.
 | 
			
		||||
exports.updatePhotos = function(event, args) {
 | 
			
		||||
  var params = args,
 | 
			
		||||
      normalize;
 | 
			
		||||
 | 
			
		||||
  console.log('update-photos');
 | 
			
		||||
  console.log(args);
 | 
			
		||||
  if(typeof(args['files']) === 'undefined' || args['files'].length === 0) {
 | 
			
		||||
    console.log('no files passed in to update-photos');
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  normalize = function(files) {
 | 
			
		||||
    for(var i=0; i<files.length; i++) {
 | 
			
		||||
      files[i] = files[i].normalize()
 | 
			
		||||
    }
 | 
			
		||||
    return files
 | 
			
		||||
  }
 | 
			
		||||
  files = normalize(args['files'])
 | 
			
		||||
 | 
			
		||||
  update_command = __dirname + '/../../dist/elodie/elodie update'
 | 
			
		||||
  //update_command = __dirname + '/../../elodie.py update'
 | 
			
		||||
  if(args['location'].length > 0) {
 | 
			
		||||
    update_command += ' --location="' + args['location'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['album'].length > 0) {
 | 
			
		||||
    update_command += ' --album="' + args['album'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['datetime'].length > 0) {
 | 
			
		||||
    update_command += ' --time="' + args['datetime'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
  if(args['title'].length > 0) {
 | 
			
		||||
    update_command += ' --title="' + args['title'] + '"';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  update_command += ' "' + files.join('" "') + '"'
 | 
			
		||||
  
 | 
			
		||||
  console.log(update_command)
 | 
			
		||||
  exec(update_command, function(error, stdout, stderr) {
 | 
			
		||||
    console.log('out ' + stdout)
 | 
			
		||||
    console.log('err ' + stderr)
 | 
			
		||||
    params['error'] = error
 | 
			
		||||
    params['stdout'] = '[' + stdout.replace(/\n/g,',').replace(/\,+$/g, '').replace(/\n/g,'') + ']'
 | 
			
		||||
    params['stderr'] = stderr
 | 
			
		||||
    console.log('parsed')
 | 
			
		||||
    console.log(params['stdout'])
 | 
			
		||||
    event.sender.send('update-photos-success', params);
 | 
			
		||||
  });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.launchFinder = function(event, path) {
 | 
			
		||||
  console.log(path);
 | 
			
		||||
  var shell = require('shell');
 | 
			
		||||
  shell.showItemInFolder(path);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.programQuit = function(event, path) {
 | 
			
		||||
  console.log('program-quit');
 | 
			
		||||
  //mb.tray.destroy();
 | 
			
		||||
  mb.quit();
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										87
									
								
								app/modules/toolbar-ui.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								app/modules/toolbar-ui.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
var exports = module.exports = {};
 | 
			
		||||
 | 
			
		||||
var menubar = require('menubar'),
 | 
			
		||||
    menu = require('menu'),
 | 
			
		||||
    tray = require('tray'),
 | 
			
		||||
    loadUrl = null;
 | 
			
		||||
 | 
			
		||||
exports.app = app = menubar(
 | 
			
		||||
  {
 | 
			
		||||
    preloadWindow: true,
 | 
			
		||||
    dir: __dirname.substr(0, __dirname.lastIndexOf('/')) + '/html',
 | 
			
		||||
    index: 'index.html',
 | 
			
		||||
    pages: {
 | 
			
		||||
      'blank': 'blank.html',
 | 
			
		||||
      'location': 'location.html'
 | 
			
		||||
    },
 | 
			
		||||
    width: 400,
 | 
			
		||||
    height: 500,
 | 
			
		||||
    'window-position': 'trayCenter'
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
exports.ready = function() {
 | 
			
		||||
  console.log('app is ready')
 | 
			
		||||
  var template = [{
 | 
			
		||||
    label: "Application",
 | 
			
		||||
    submenu: [
 | 
			
		||||
        { label: "Quit", accelerator: "Command+Q", click: function() { app.quit(); }}
 | 
			
		||||
    ]}, {
 | 
			
		||||
    label: "Edit",
 | 
			
		||||
    submenu: [
 | 
			
		||||
        { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
 | 
			
		||||
        { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
 | 
			
		||||
        { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" },
 | 
			
		||||
        { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
 | 
			
		||||
        { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
 | 
			
		||||
        { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
 | 
			
		||||
    ]}
 | 
			
		||||
  ];
 | 
			
		||||
  menu.setApplicationMenu(menu.buildFromTemplate(template));
 | 
			
		||||
 | 
			
		||||
  this.tray.setToolTip('Drag and drop files here');
 | 
			
		||||
    console.log(app.getOption('dir'));
 | 
			
		||||
  this.tray.setImage(app.getOption('dir') + '/img/logo@18x22xbw.png');
 | 
			
		||||
  this.tray.on('clicked', function clicked () {
 | 
			
		||||
    console.log('tray-clicked')
 | 
			
		||||
  });
 | 
			
		||||
  this.tray.on('drop-files', function dropFiles (ev, files) {
 | 
			
		||||
    loadUrl = app.getOption('pages')['location'];
 | 
			
		||||
    app.showWindow();
 | 
			
		||||
    //app.window.openDevTools();
 | 
			
		||||
    app.window.webContents.on('did-finish-load', function() {
 | 
			
		||||
      app.window.webContents.send('files', files);
 | 
			
		||||
      app.window.webContents.send('preview', files);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.createWindow = function() {
 | 
			
		||||
  console.log('create-window')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.afterCreateWindow = function() {
 | 
			
		||||
  console.log('after-create-window')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.show = function() {
 | 
			
		||||
  if(loadUrl === null) {
 | 
			
		||||
    loadUrl = this.getOption('index');
 | 
			
		||||
  }
 | 
			
		||||
  this.window.loadUrl('file://' + this.getOption('dir') + '/' + loadUrl);
 | 
			
		||||
  loadUrl = null;
 | 
			
		||||
  //app.window.openDevTools();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.afterShow = function() {
 | 
			
		||||
  console.log('after-show');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.hide = function() {
 | 
			
		||||
  console.log('hide');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.afterHide = function() {
 | 
			
		||||
  console.log('after-hide')
 | 
			
		||||
  this.window.loadUrl('file://' + this.getOption('dir') + '/' + this.getOption('pages')['blank']);
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user