gui app for windows fix (v1)

This commit is contained in:
zserg 2016-01-27 19:27:12 +04:00
parent 582d609023
commit 215e95149c
8 changed files with 109 additions and 14 deletions

View File

@ -186,3 +186,18 @@ button {
small {
font-size:.7em;
}
#holder {
border: 4px dashed #ccc;
margin: 0 auto;
height: 100px;
color: #ccc;
font-size: 40px;
line-height: 100px;
text-align: center;
-webkit-user-select: none;
}
#holder.hover {
border: 4px dashed #999;
color: #eee;
}

View File

@ -30,6 +30,9 @@
<button type="submit" class="push">Start Organizing<i></i></button>
</div>
<div class="import-success"></div>
</div>
<div id="holder">
Drag your app here to run it
</div>
</form>
</body>

View File

@ -6,10 +6,14 @@ var __process__ = {};
if(typeof(require) === 'function') {
var ipc = require('ipc');
var path = require('path');
var os = require('os');
ipc.on('files', function(files) {
console.log('--files',files);
__process__.files = files;
});
ipc.on('preview', function(files) {
console.log('--preview',files);
handlers.renderPreview(files);
});
ipc.on('update-import-success', function(args) {
@ -32,7 +36,11 @@ if(typeof(require) === 'function') {
}
});
ipc.on('update-photos-success', function(args) {
if(os.platform() == 'win32'){
var response = JSON.parse(args['stdout'].replace(/\\/g, '\\\\'));
}else{
var response = JSON.parse(args['stdout']);
}
handlers.setSuccessTitle();
handlers.removeProgressIcons();
handlers.updateStatus(response);
@ -40,10 +48,42 @@ if(typeof(require) === 'function') {
function Broadcast() {
this.send = function(name, message) {
console.log(message);
console.log(name);
console.log('broadcast ',message);
ipc.send(name, message);
};
}
}
window.onload = function () {
var broadcast = new Broadcast();
window.ondragover = function (e){ e.preventDefault(); return false };
window.ondragover = function (e){ e.preventDefault(); return false };
var holder = document.getElementById('holder');
if(holder != null){
holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragleave = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
e.preventDefault();
files = []
for (var i = 0; i < e.dataTransfer.files.length; ++i) {
console.log(e.dataTransfer.files[i].path);
files.push(e.dataTransfer.files[i].path);
}
console.log('files=',e.dataTransfer);
msg = {};
//msg['files'] = ['f1','f2','f3'];
msg['files'] = e.dataTransfer.files;
console.log('handlers:',msg['files'].length);
//broadcast.send('load-update-photos', msg);
broadcast.send('load-update-photos', files);
return false;
};
}
};
};
function Handlers() {
var self = this;
@ -161,7 +201,9 @@ function Handlers() {
html = '<label>You selected ' + (files.length > 1 ? 'these photos' : 'this photo') + '</label>';
for(var i=0; i<files.length && i<16; i++) {
if(files[i].match(/(mov|mp4|3gp|avi)/i) === null) {
html += '<div class="center-cropped" style="background-image:url(\'file://'+files[i]+'\');" title="'+files[i]+'"></div>';
console.log("preview:",fileUrl(files[i]));
html += '<div class="center-cropped" style="background-image:url(\'file://'+fileUrl(files[i])+'\');" title="'+files[i]+'"></div>';
console.log('html',html);
} else {
html += '<div class="center-cropped video"></div>';
}
@ -200,6 +242,22 @@ function Handlers() {
el.style.display = 'block';
}
};
function fileUrl(str) {
if (typeof str !== 'string') {
throw new Error('Expected a string');
}
var pathName = path.resolve(str).replace(/\\/g, '/');
// Windows drive letter must be prefixed with a slash
if (pathName[0] !== '/') {
pathName = '/' + pathName;
}
return encodeURI('file://' + pathName);
};
}
var handlers = new Handlers();
window.addEventListener('click', handlers.dispatch);

View File

@ -16,3 +16,4 @@ ipc.on('update-photos', broadcast.updatePhotos);
ipc.on('launch-finder', broadcast.launchFinder);
ipc.on('launch-url', broadcast.launchUrl);
ipc.on('program-quit', broadcast.programQuit);
ipc.on('load-update-photos', toolbarUi.onDropFiles);

View File

@ -1,5 +1,5 @@
var exports = module.exports = {};
var path = require('path');
var exec = require('child_process').exec,
config = require('./config.js');
@ -24,7 +24,7 @@ exports.importPhotos = function(event, args) {
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 = path.normalize(__dirname + '/../../elodie.py') + ' import --source="' + args['source'] + '" --destination="' + args['destination'] + '"';
//update_command = __dirname + '/../../elodie.py import --source="' + args['source'] + '" --destination="' + args['destination'] + '"';
console.log(update_command);
@ -73,8 +73,9 @@ exports.updatePhotos = function(event, args) {
return files
}
files = normalize(args['files'])
update_command = __dirname + '/../../dist/elodie/elodie update'
elodie_path = path.normalize(__dirname + '/../../elodie.py');
console.log(elodie_path);
update_command = elodie_path +' update'
//update_command = __dirname + '/../../elodie.py update'
if(args['location'].length > 0) {
update_command += ' --location="' + args['location'] + '"';

View File

@ -3,11 +3,11 @@ var fs = require('fs'),
defaultConfigFile = (function() {
var f = __dirname;
for(var i=0; i<2; i++) {
f = f.substr(0, f.lastIndexOf('/'));
f = f.substr(0, f.lastIndexOf('\\'));
}
return f + '/config.ini-sample';
return f + '\\config.ini-sample';
})(),
configFile = (process.env.HOME || process.env.USERPROFILE) + '/.elodie/config.ini',
configFile = (process.env.HOME || process.env.USERPROFILE) + '\\.elodie\\config.ini',
hasConfig,
setConfig;

View File

@ -9,7 +9,7 @@ var menubar = require('menubar'),
exports.app = app = menubar(
{
preloadWindow: true,
dir: __dirname.substr(0, __dirname.lastIndexOf('/')) + '/html',
dir: __dirname.substr(0, __dirname.lastIndexOf('\\')) + '\\html',
index: 'index.html',
pages: {
'blank': 'blank.html',
@ -18,7 +18,9 @@ exports.app = app = menubar(
},
width: 400,
height: 500,
'window-position': 'trayCenter'
'window-position': 'trayCenter',
'frame': true,
'always-on-top': true
}
);
@ -59,6 +61,21 @@ exports.ready = function() {
});
};
exports.onDropFiles = function(event, args) {
console.log(args);
console.log('onDropFiles',args);
var files = args;
console.log('Hello',typeof(args));
loadUrl = app.getOption('pages')['location'];
app.showWindow();
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')
};
@ -76,7 +93,7 @@ exports.show = function() {
this.window.loadUrl('file://' + this.getOption('dir') + '/' + loadUrl);
loadUrl = null;
//app.window.openDevTools();
app.window.openDevTools();
};
exports.afterShow = function() {

View File

@ -5,7 +5,7 @@ Settings used by Elodie.
from os import path
#: If True, debug messages will be printed.
debug = True
debug = False
#: Directory in which to store Elodie settings.
application_directory = '{}/.elodie'.format(path.expanduser('~'))