| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | #!/usr/bin/env node
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * ImageGrid.Viewer Electron entry point... | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | * NOTE: this is kept as simple as possible to speed up initial loading. | 
					
						
							|  |  |  | * | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | **********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-14 20:06:58 +03:00
										 |  |  | // Global scope pollution test...
 | 
					
						
							| 
									
										
										
										
											2020-12-15 05:08:06 +03:00
										 |  |  | if(process.env.IMAGEGRID_DEBUG){ | 
					
						
							|  |  |  | 	global.__global = {...global} | 
					
						
							|  |  |  | 	global.scopeDiff = function(cur=global, base=__global){ | 
					
						
							|  |  |  | 		return Object.keys(cur) | 
					
						
							|  |  |  | 			.filter(function(k){ return base[k] !== cur[k] }) | 
					
						
							|  |  |  | 			.reduce(function(res, k){ | 
					
						
							|  |  |  | 				res[k] = cur[k] | 
					
						
							|  |  |  | 				return res }, {})} } | 
					
						
							| 
									
										
										
										
											2020-12-14 20:06:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-29 04:59:50 +03:00
										 |  |  | //require('v8-compile-cache')
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | var electron = require('electron') | 
					
						
							|  |  |  | var path = require('path') | 
					
						
							|  |  |  | var url = require('url') | 
					
						
							| 
									
										
										
										
											2020-08-27 17:09:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-13 08:33:03 +03:00
										 |  |  | var VERSION = require('./version').version | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-01 04:53:36 +03:00
										 |  |  | //---------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | var app = electron.app | 
					
						
							|  |  |  | var BrowserWindow = electron.BrowserWindow | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | var ipcMain = electron.ipcMain | 
					
						
							| 
									
										
										
										
											2020-06-20 03:48:18 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-13 04:12:12 +03:00
										 |  |  | // 
 | 
					
						
							|  |  |  | global.ELECTRON_PACKAGED = app.isPackaged | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // used to let e.js know that the CLI wants to start the GUI..
 | 
					
						
							|  |  |  | global.START_GUI = false | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-20 03:48:18 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | /*********************************************************************/ | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | // XXX do we need multiwindow support???
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | // Splash window...
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | // XXX might be nice to show load progress on splash...
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | var SPLASH | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | function createSplash(force=false){ | 
					
						
							|  |  |  | 	// singleton window...
 | 
					
						
							|  |  |  | 	if(!force && SPLASH){ | 
					
						
							|  |  |  | 		return SPLASH } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-13 08:04:29 +03:00
										 |  |  | 	// NOTE: this is done here as this does not depend on code loading, 
 | 
					
						
							|  |  |  | 	// 		thus showing the splash significantly faster...
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 	SPLASH = new BrowserWindow({ | 
					
						
							| 
									
										
										
										
											2019-01-13 07:09:00 +03:00
										 |  |  | 		// let the window to get ready before we show it to the user...
 | 
					
						
							|  |  |  | 		show: false, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		transparent: true, | 
					
						
							|  |  |  | 		frame: false, | 
					
						
							|  |  |  | 		center: true, | 
					
						
							| 
									
										
										
										
											2019-05-04 17:08:40 +03:00
										 |  |  | 		width: 840,  | 
					
						
							|  |  |  | 		height: 540, | 
					
						
							| 
									
										
										
										
											2019-01-13 07:09:00 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		alwaysOnTop: true, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		resizable: false, | 
					
						
							|  |  |  | 		movable: false, | 
					
						
							|  |  |  | 		minimizable: false, | 
					
						
							|  |  |  | 		maximizable: false, | 
					
						
							|  |  |  | 		fullscreenable: false, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		autoHideMenuBar: true, | 
					
						
							|  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 	SPLASH.loadURL(url.format({ | 
					
						
							| 
									
										
										
										
											2019-01-13 07:09:00 +03:00
										 |  |  | 		pathname: path.join(__dirname, 'splash.html'), | 
					
						
							|  |  |  | 		protocol: 'file:', | 
					
						
							|  |  |  | 		slashes: true | 
					
						
							|  |  |  | 	})) | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 	SPLASH.once('ready-to-show', function(){ | 
					
						
							| 
									
										
										
										
											2019-01-13 08:04:29 +03:00
										 |  |  | 		this.webContents | 
					
						
							|  |  |  | 			// see if the splash screen is disabled...
 | 
					
						
							|  |  |  | 			.executeJavaScript('localStorage.disableSplashScreen') | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 				.then(function(disabled){ | 
					
						
							|  |  |  | 					// update version...
 | 
					
						
							|  |  |  | 					disabled | 
					
						
							|  |  |  | 						|| SPLASH.webContents | 
					
						
							|  |  |  | 							.executeJavaScript( | 
					
						
							|  |  |  | 								`document.getElementById("version").innerText = "${VERSION}"`) | 
					
						
							|  |  |  | 					// show/destroy..
 | 
					
						
							|  |  |  | 					disabled ? | 
					
						
							|  |  |  | 						SPLASH.destroy() | 
					
						
							|  |  |  | 						: SPLASH.show() }) }) | 
					
						
							|  |  |  | 	SPLASH.on('closed',  | 
					
						
							|  |  |  | 		function(){  | 
					
						
							|  |  |  | 			SPLASH = null  | 
					
						
							|  |  |  | 			WIN | 
					
						
							|  |  |  | 				&& WIN.webContents.executeJavaScript('document.appSplashScreen = false') }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// handle main window state...
 | 
					
						
							|  |  |  | 	WIN | 
					
						
							|  |  |  | 		&& WIN.webContents.executeJavaScript('document.appSplashScreen = true') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return SPLASH } | 
					
						
							| 
									
										
										
										
											2019-01-13 07:09:00 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Create main window...
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | // NOTE: initial window metrics are loaded by the app feature...
 | 
					
						
							|  |  |  | // 		XXX should this be done here???
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | // XXX handle maximize corretly...
 | 
					
						
							|  |  |  | // 		...currently it does not differ visually from fullscreen -- either
 | 
					
						
							|  |  |  | // 		make them the same or keep them separate visually...
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | var WIN | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | function createWindow(force=false){ | 
					
						
							|  |  |  | 	// singleton window...
 | 
					
						
							|  |  |  | 	if(!force && WIN){ | 
					
						
							|  |  |  | 		return WIN } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 	// Create the browser window.
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	WIN = new BrowserWindow({ | 
					
						
							| 
									
										
										
										
											2019-01-14 20:52:27 +03:00
										 |  |  | 		webPreferences: { | 
					
						
							|  |  |  | 			nodeIntegration: true, | 
					
						
							| 
									
										
										
										
											2020-12-15 05:36:37 +03:00
										 |  |  | 			nodeIntegrationInWorker: true, | 
					
						
							| 
									
										
										
										
											2020-08-30 19:55:01 +03:00
										 |  |  | 			contextIsolation: false, | 
					
						
							| 
									
										
										
										
											2020-08-31 00:02:33 +03:00
										 |  |  | 			enableRemoteModule: true, | 
					
						
							| 
									
										
										
										
											2019-01-14 20:52:27 +03:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | 		// let the window get ready before we show it to the user...
 | 
					
						
							| 
									
										
										
										
											2017-11-03 02:12:38 +03:00
										 |  |  | 		show: false, | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 		frame: false, | 
					
						
							| 
									
										
										
										
											2017-11-03 02:12:38 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-06 18:32:29 +03:00
										 |  |  | 		backgroundColor: '#333333', | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-04 17:07:22 +03:00
										 |  |  | 		width: 800,  | 
					
						
							|  |  |  | 		height: 600, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		fullscreenable: true, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-27 17:12:52 +03:00
										 |  |  | 		// XXX not sure about this...
 | 
					
						
							|  |  |  | 		//maximizable: false,
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-03 02:12:38 +03:00
										 |  |  | 		//autoHideMenuBar: true,
 | 
					
						
							| 
									
										
										
										
											2017-10-04 17:07:22 +03:00
										 |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2017-11-03 02:12:38 +03:00
										 |  |  | 	// disable default menu...
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	WIN.setMenu(null) | 
					
						
							|  |  |  | 	WIN.loadURL(url.format({ | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | 		pathname: path.join(__dirname, 'index.html'), | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 		protocol: 'file:', | 
					
						
							| 
									
										
										
										
											2020-12-12 22:41:49 +03:00
										 |  |  | 		slashes: true, | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 	})) | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	WIN.once('ready-to-show',  | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 		function(){  | 
					
						
							|  |  |  | 			WIN.webContents.executeJavaScript(`
 | 
					
						
							|  |  |  | 				document.readyToShow = true  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// XXX make these a prop...
 | 
					
						
							|  |  |  | 				document.appFullScreen = false | 
					
						
							|  |  |  | 				document.appDevTools = false | 
					
						
							|  |  |  | 			`) 
 | 
					
						
							|  |  |  | 			// splash screen...
 | 
					
						
							|  |  |  | 			WIN.webContents.executeJavaScript( | 
					
						
							|  |  |  | 				SPLASH ? | 
					
						
							|  |  |  | 					'document.appSplashScreen = true' | 
					
						
							|  |  |  | 					: 'document.appSplashScreen = false') }) | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	WIN.on('closed',  | 
					
						
							|  |  |  | 		function(){ WIN = null }) | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 	// devtools...
 | 
					
						
							| 
									
										
										
										
											2022-01-27 17:12:52 +03:00
										 |  |  | 	WIN.webContents.on('devtools-opened',  | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 		function(){ | 
					
						
							|  |  |  | 			WIN && WIN.webContents.executeJavaScript('document.appDevTools = true') }) | 
					
						
							| 
									
										
										
										
											2022-01-27 17:12:52 +03:00
										 |  |  | 	WIN.webContents.on('devtools-closed',  | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 		function(){ | 
					
						
							|  |  |  | 			WIN && WIN.webContents.executeJavaScript('document.appDevTools = false') }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// handle env...
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | 	// devtools for different windows...
 | 
					
						
							| 
									
										
										
										
											2021-10-13 23:27:42 +03:00
										 |  |  | 	process.env.IMAGEGRID_DEBUG | 
					
						
							|  |  |  | 		&& WIN.openDevTools({mode: 'undocked'}) | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 	// Force show window...
 | 
					
						
							|  |  |  | 	process.env.IMAGEGRID_FORCE_SHOW | 
					
						
							|  |  |  | 		&& WIN.show() | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return WIN } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | // Start the app...
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | function start(){ | 
					
						
							|  |  |  | 	var _start = function(){ | 
					
						
							|  |  |  | 		createSplash() | 
					
						
							|  |  |  | 		createWindow() } | 
					
						
							| 
									
										
										
										
											2020-12-20 06:12:47 +03:00
										 |  |  | 	// NOTE: by this time (arg parsing and stuff) the app may already 
 | 
					
						
							|  |  |  | 	//		be ready...
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	app.isReady() ? | 
					
						
							|  |  |  | 		_start() | 
					
						
							|  |  |  | 		: app.on('ready', _start) } | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-03 03:22:02 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //---------------------------------------------------------------------
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | // Event handlers...
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Window states...
 | 
					
						
							|  |  |  | ipcMain.on('show',  | 
					
						
							|  |  |  | 	function(){ WIN && WIN.show() }) | 
					
						
							|  |  |  | ipcMain.on('hide',  | 
					
						
							|  |  |  | 	function(){ WIN && WIN.hide() }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ipcMain.on('minimize',  | 
					
						
							|  |  |  | 	function(){ WIN && WIN.minimize() }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ipcMain.on('enterFullScreen',  | 
					
						
							|  |  |  | 	function(){  | 
					
						
							|  |  |  | 		if(WIN){ | 
					
						
							|  |  |  | 			WIN.setFullScreen(true)  | 
					
						
							|  |  |  | 			WIN.webContents.executeJavaScript('document.appFullScreen = true') } }) | 
					
						
							|  |  |  | ipcMain.on('exitFullScreen',  | 
					
						
							|  |  |  | 	function(){  | 
					
						
							|  |  |  | 		if(WIN){ | 
					
						
							|  |  |  | 			WIN.setFullScreen(false) | 
					
						
							|  |  |  | 			WIN.webContents.executeJavaScript('document.appFullScreen = false') } }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Splash screen...
 | 
					
						
							|  |  |  | ipcMain.on('openSplashScreen',  | 
					
						
							|  |  |  | 	function(){ SPLASH || createSplash() }) | 
					
						
							|  |  |  | ipcMain.on('closeSplashScreen',  | 
					
						
							| 
									
										
										
										
											2022-01-30 00:27:07 +03:00
										 |  |  | 	function(){  | 
					
						
							|  |  |  | 		// force this to run after this frame avoiding races...
 | 
					
						
							|  |  |  | 		setTimeout( | 
					
						
							|  |  |  | 			function(){ SPLASH && SPLASH.destroy() },  | 
					
						
							|  |  |  | 			10) }) | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | // DevTools...
 | 
					
						
							| 
									
										
										
										
											2022-01-26 22:19:42 +03:00
										 |  |  | // XXX need to focus devtools here...
 | 
					
						
							|  |  |  | // 		see: webContents.getAllWebContents()
 | 
					
						
							|  |  |  | ipcMain.on('openDevTools',  | 
					
						
							|  |  |  | 	function(){  | 
					
						
							|  |  |  | 		WIN | 
					
						
							|  |  |  | 			&& WIN.openDevTools({ | 
					
						
							|  |  |  | 				mode: 'undocked', | 
					
						
							|  |  |  | 				activate: true, | 
					
						
							|  |  |  | 			}) }) | 
					
						
							|  |  |  | ipcMain.on('closeDevTools',  | 
					
						
							|  |  |  | 	function(){ WIN && WIN.closeDevTools() }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:41:06 +03:00
										 |  |  | //---------------------------------------------------------------------
 | 
					
						
							|  |  |  | // Event handlers (macOS)...
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // On macOS it's common to re-create a window in the app when the
 | 
					
						
							|  |  |  | // dock icon is clicked and there are no other windows open.
 | 
					
						
							|  |  |  | // XXX test...
 | 
					
						
							|  |  |  | app.on('activate', function(){ | 
					
						
							|  |  |  | 	WIN || createWindow() })  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Quit when all windows are closed.
 | 
					
						
							|  |  |  | // On macOS it is common for applications and their menu bar
 | 
					
						
							|  |  |  | // to stay active until the user quits explicitly with Cmd + Q
 | 
					
						
							|  |  |  | app.on('window-all-closed', function(){ | 
					
						
							|  |  |  | 	process.platform !== 'darwin' | 
					
						
							|  |  |  | 		&& app.quit() }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | //---------------------------------------------------------------------
 | 
					
						
							|  |  |  | // start things up...
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-13 04:12:12 +03:00
										 |  |  | ;(ELECTRON_PACKAGED ?  | 
					
						
							|  |  |  | 		process.argv.length > 1  | 
					
						
							|  |  |  | 		: process.argv.length > 2) ? | 
					
						
							|  |  |  | 	// got some arguments -- delegate to ig.js...
 | 
					
						
							| 
									
										
										
										
											2020-12-12 09:29:57 +03:00
										 |  |  | 	(require('./ig')  | 
					
						
							|  |  |  | 		&& global.START_GUI  | 
					
						
							|  |  |  | 		&& start()) | 
					
						
							|  |  |  | 	// start the viewer...
 | 
					
						
							|  |  |  | 	: start() | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-11 06:24:22 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 21:10:28 +03:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                                                */ |