161 lines
4.8 KiB
JavaScript
161 lines
4.8 KiB
JavaScript
|
|
var dir='file://' + __dirname;
|
|
var base=dir + '/view/';
|
|
// Electronのモジュール
|
|
const electron = require("electron");
|
|
const fs = require("fs");
|
|
const language = require('./main/language.js');
|
|
const css = require('./main/css.js');
|
|
const dl = require('./main/dl.js');
|
|
const img = require('./main/img.js');
|
|
const np = require('./main/np.js');
|
|
const systemFunc = require('./main/system.js');
|
|
const Menu=electron.Menu
|
|
const join = require('path').join;
|
|
// アプリケーションをコントロールするモジュール
|
|
const app = electron.app;
|
|
// ウィンドウを作成するモジュール
|
|
const BrowserWindow = electron.BrowserWindow;
|
|
// メインウィンドウはGCされないようにグローバル宣言
|
|
let mainWindow;
|
|
var info_path = join(app.getPath("userData"), "window-size.json");
|
|
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
|
var lang_path=join(app.getPath("userData"), "language");
|
|
var ha_path=join(app.getPath("userData"), "hardwareAcceleration");
|
|
try{
|
|
fs.readFileSync(ha_path, 'utf8');
|
|
app.disableHardwareAcceleration()
|
|
console.log("disabled: HA");
|
|
}catch{
|
|
console.log("enabled: HA");
|
|
}
|
|
var window_size;
|
|
try {
|
|
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'));
|
|
} catch (e) {
|
|
window_size = {
|
|
width: 1000,
|
|
height: 750
|
|
}; // デフォルトバリュー
|
|
}
|
|
var max_window_size;
|
|
try {
|
|
max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8'));
|
|
} catch (e) {
|
|
max_window_size = {
|
|
width: "string",
|
|
height: "string",
|
|
x: "string",
|
|
y: "string"
|
|
|
|
}; // デフォルトバリュー
|
|
}
|
|
try {
|
|
var lang = fs.readFileSync(lang_path, 'utf8');
|
|
} catch (e) {
|
|
var langs=app.getLocale();
|
|
if(~langs.indexOf("ja")){
|
|
lang="ja";
|
|
}else{
|
|
lang="en";
|
|
}
|
|
fs.writeFileSync(lang_path,lang);
|
|
}
|
|
console.log(app.getLocale());
|
|
console.log("launch:"+lang);
|
|
// 全てのウィンドウが閉じたら終了
|
|
app.on('window-all-closed', function() {
|
|
if (process.platform != 'darwin') {
|
|
electron.session.defaultSession.clearCache(() => {})
|
|
app.quit();
|
|
}
|
|
});
|
|
// macOSでウィンドウを閉じた後に再度開けるようにする
|
|
app.on('activate', function() {
|
|
if (mainWindow == null) {
|
|
createWindow();
|
|
}
|
|
});
|
|
|
|
function createWindow() {
|
|
// メイン画面の表示。ウィンドウの幅、高さを指定できる
|
|
var platform=process.platform;
|
|
var bit=process.arch;
|
|
if(platform=="linux"){
|
|
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,icon: __dirname + '/desk.png'}
|
|
}else if(platform=="win32"){
|
|
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true}
|
|
}else if(platform=="darwin"){
|
|
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true}
|
|
}
|
|
mainWindow = new BrowserWindow(arg);
|
|
electron.session.defaultSession.clearCache(() => {})
|
|
if(process.argv){
|
|
if(process.argv[1]){
|
|
var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/);
|
|
if(m){
|
|
var mode=m[1];
|
|
var code=m[2];
|
|
var plus='?mode='+mode+'&code='+code;
|
|
}else{
|
|
var plus="";
|
|
}
|
|
}else{
|
|
var plus="";
|
|
}
|
|
}else{
|
|
var plus="";
|
|
}
|
|
mainWindow.loadURL(base+lang+'/index.html'+plus);
|
|
if(!window_size.x && !window_size.y){
|
|
mainWindow.center();
|
|
}
|
|
if(window_size.max){
|
|
mainWindow.maximize();
|
|
}
|
|
// ウィンドウが閉じられたらアプリも終了
|
|
mainWindow.on('closed', function() {
|
|
electron.ipcMain.removeAllListeners();
|
|
mainWindow = null;
|
|
});
|
|
mainWindow.on('close', function() {
|
|
if(
|
|
max_window_size.width==mainWindow.getBounds().width &&
|
|
max_window_size.height==mainWindow.getBounds().height &&
|
|
max_window_size.x==mainWindow.getBounds().x &&
|
|
max_window_size.y==mainWindow.getBounds().y
|
|
){
|
|
var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y,max:true}
|
|
}else{
|
|
var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y}
|
|
}
|
|
fs.writeFileSync(info_path, JSON.stringify(size));
|
|
});
|
|
mainWindow.on('maximize', function() {
|
|
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()));
|
|
});
|
|
|
|
var platform=process.platform;
|
|
var bit=process.arch;
|
|
if(platform=="darwin"){
|
|
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false,dir)));
|
|
}
|
|
//CSS
|
|
css.css(mainWindow);
|
|
//アップデータとダウンロード
|
|
dl.dl(mainWindow,lang_path,base);
|
|
//画像選択と画像処理
|
|
img.img(mainWindow,dir);
|
|
//NowPlaying
|
|
np.TheDeskNowPlaying(mainWindow);
|
|
//その他system
|
|
systemFunc.system(mainWindow,dir,lang);
|
|
}
|
|
// Electronの初期化完了後に実行
|
|
app.on('ready', createWindow);
|
|
var onError = function(err,response){
|
|
console.error(err,response);
|
|
};
|
|
|
|
app.setAsDefaultProtocolClient('thedesk')
|