chore: Updated prettier run
This commit is contained in:
parent
045b83f843
commit
92717c8047
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
text eol=lf
|
28
src/cache.ts
28
src/cache.ts
|
@ -1,8 +1,8 @@
|
|||
import { session } from 'electron';
|
||||
import { session } from "electron";
|
||||
|
||||
export async function clearCaches() {
|
||||
await clearCache()
|
||||
await clearStorageData()
|
||||
await clearCache();
|
||||
await clearStorageData();
|
||||
}
|
||||
|
||||
export async function clearCache() {
|
||||
|
@ -17,9 +17,21 @@ export function clearStorageData() {
|
|||
return resolve();
|
||||
}
|
||||
|
||||
session.defaultSession.clearStorageData({
|
||||
storages: [ 'appcache', 'cookies', 'filesystem', 'indexdb', 'localstorage', 'shadercache', 'websql', 'serviceworkers' ],
|
||||
quotas: [ 'temporary', 'persistent', 'syncable' ]
|
||||
}, resolve)
|
||||
})
|
||||
session.defaultSession.clearStorageData(
|
||||
{
|
||||
storages: [
|
||||
"appcache",
|
||||
"cookies",
|
||||
"filesystem",
|
||||
"indexdb",
|
||||
"localstorage",
|
||||
"shadercache",
|
||||
"websql",
|
||||
"serviceworkers",
|
||||
],
|
||||
quotas: ["temporary", "persistent", "syncable"],
|
||||
},
|
||||
resolve
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
import { remote, app } from 'electron';
|
||||
import * as path from 'path';
|
||||
import { remote, app } from "electron";
|
||||
import * as path from "path";
|
||||
|
||||
const _app = app || remote.app
|
||||
const _app = app || remote.app;
|
||||
|
||||
export const CONSTANTS = {
|
||||
IMAGE_PATH: path.join(__dirname, '../../images/windows95.img'),
|
||||
IMAGE_PATH: path.join(__dirname, "../../images/windows95.img"),
|
||||
IMAGE_DEFAULT_SIZE: 1073741824, // 1GB
|
||||
DEFAULT_STATE_PATH: path.join(__dirname, '../../images/default-state.bin'),
|
||||
STATE_PATH: path.join(_app.getPath('userData'), 'state-v2.bin')
|
||||
}
|
||||
DEFAULT_STATE_PATH: path.join(__dirname, "../../images/default-state.bin"),
|
||||
STATE_PATH: path.join(_app.getPath("userData"), "state-v2.bin"),
|
||||
};
|
||||
|
||||
export const IPC_COMMANDS = {
|
||||
TOGGLE_INFO: 'TOGGLE_INFO',
|
||||
SHOW_DISK_IMAGE: 'SHOW_DISK_IMAGE',
|
||||
ZOOM_IN: 'ZOOM_IN',
|
||||
ZOOM_OUT: 'ZOOM_OUT',
|
||||
ZOOM_RESET: 'ZOOM_RESET',
|
||||
TOGGLE_INFO: "TOGGLE_INFO",
|
||||
SHOW_DISK_IMAGE: "SHOW_DISK_IMAGE",
|
||||
ZOOM_IN: "ZOOM_IN",
|
||||
ZOOM_OUT: "ZOOM_OUT",
|
||||
ZOOM_RESET: "ZOOM_RESET",
|
||||
// Machine instructions
|
||||
MACHINE_START: 'MACHINE_START',
|
||||
MACHINE_RESTART: 'MACHINE_RESTART',
|
||||
MACHINE_STOP: 'MACHINE_STOP',
|
||||
MACHINE_RESET: 'MACHINE_RESET',
|
||||
MACHINE_ALT_F4: 'MACHINE_ALT_F4',
|
||||
MACHINE_ESC: 'MACHINE_ESC',
|
||||
MACHINE_ALT_ENTER: 'MACHINE_ALT_ENTER',
|
||||
MACHINE_CTRL_ALT_DEL: 'MACHINE_CTRL_ALT_DEL',
|
||||
MACHINE_START: "MACHINE_START",
|
||||
MACHINE_RESTART: "MACHINE_RESTART",
|
||||
MACHINE_STOP: "MACHINE_STOP",
|
||||
MACHINE_RESET: "MACHINE_RESET",
|
||||
MACHINE_ALT_F4: "MACHINE_ALT_F4",
|
||||
MACHINE_ESC: "MACHINE_ESC",
|
||||
MACHINE_ALT_ENTER: "MACHINE_ALT_ENTER",
|
||||
MACHINE_CTRL_ALT_DEL: "MACHINE_CTRL_ALT_DEL",
|
||||
// Machine events
|
||||
MACHINE_STARTED: 'MACHINE_STARTED',
|
||||
MACHINE_STOPPED: 'MACHINE_STOPPED'
|
||||
}
|
||||
MACHINE_STARTED: "MACHINE_STARTED",
|
||||
MACHINE_STOPPED: "MACHINE_STOPPED",
|
||||
};
|
||||
|
|
|
@ -12,7 +12,7 @@ export function setupAboutPanel(): void {
|
|||
applicationName: "windows95",
|
||||
applicationVersion: app.getVersion(),
|
||||
version: process.versions.electron,
|
||||
copyright: "Felix Rieseberg"
|
||||
copyright: "Felix Rieseberg",
|
||||
};
|
||||
|
||||
switch (process.platform) {
|
||||
|
|
115
src/main/menu.ts
115
src/main/menu.ts
|
@ -1,15 +1,14 @@
|
|||
import { app, shell, Menu, BrowserWindow, ipcMain, webFrame } from "electron";
|
||||
import { app, shell, Menu, BrowserWindow, ipcMain } from "electron";
|
||||
|
||||
import { clearCaches } from "../cache";
|
||||
import { IPC_COMMANDS } from "../constants";
|
||||
import { isDevMode } from "../utils/devmode";
|
||||
import { getOrCreateWindow } from "./windows";
|
||||
|
||||
const LINKS = {
|
||||
homepage: "https://www.twitter.com/felixrieseberg",
|
||||
repo: "https://github.com/felixrieseberg/windows95",
|
||||
credits: "https://github.com/felixrieseberg/windows95/blob/master/CREDITS.md",
|
||||
help: "https://github.com/felixrieseberg/windows95/blob/master/HELP.md"
|
||||
help: "https://github.com/felixrieseberg/windows95/blob/master/HELP.md",
|
||||
};
|
||||
|
||||
export async function setupMenu() {
|
||||
|
@ -41,52 +40,52 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
submenu: [
|
||||
{
|
||||
label: "Toggle Full Screen",
|
||||
accelerator: (function() {
|
||||
accelerator: (function () {
|
||||
if (process.platform === "darwin") {
|
||||
return "Ctrl+Command+F";
|
||||
} else {
|
||||
return "F11";
|
||||
}
|
||||
})(),
|
||||
click: function(_item, focusedWindow) {
|
||||
click: function (_item, focusedWindow) {
|
||||
if (focusedWindow) {
|
||||
focusedWindow.setFullScreen(!focusedWindow.isFullScreen());
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Toggle Developer Tools",
|
||||
accelerator: (function() {
|
||||
accelerator: (function () {
|
||||
if (process.platform === "darwin") {
|
||||
return "Alt+Command+I";
|
||||
} else {
|
||||
return "Ctrl+Shift+I";
|
||||
}
|
||||
})(),
|
||||
click: function(_item, focusedWindow) {
|
||||
click: function (_item, focusedWindow) {
|
||||
if (focusedWindow) {
|
||||
focusedWindow.webContents.toggleDevTools();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Toggle Emulator Info",
|
||||
click: () => send(IPC_COMMANDS.TOGGLE_INFO)
|
||||
click: () => send(IPC_COMMANDS.TOGGLE_INFO),
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
role: "reload"
|
||||
}
|
||||
]
|
||||
role: "reload",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
role: "editMenu",
|
||||
visible: isDevMode()
|
||||
visible: isDevMode(),
|
||||
},
|
||||
{
|
||||
label: "Window",
|
||||
|
@ -95,32 +94,32 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
{
|
||||
label: "Minimize",
|
||||
accelerator: "CmdOrCtrl+M",
|
||||
role: "minimize"
|
||||
role: "minimize",
|
||||
},
|
||||
{
|
||||
label: "Close",
|
||||
accelerator: "CmdOrCtrl+W",
|
||||
role: "close"
|
||||
role: "close",
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Zoom in",
|
||||
click: () => send(IPC_COMMANDS.ZOOM_IN),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Zoom out",
|
||||
click: () => send(IPC_COMMANDS.ZOOM_OUT),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Reset zoom",
|
||||
click: () => send(IPC_COMMANDS.ZOOM_RESET),
|
||||
enabled: isRunning
|
||||
}
|
||||
]
|
||||
enabled: isRunning,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Machine",
|
||||
|
@ -128,53 +127,53 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
{
|
||||
label: "Send Ctrl+Alt+Del",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_CTRL_ALT_DEL),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Send Alt+F4",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_ALT_F4),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Send Alt+Enter",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_ALT_ENTER),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Send Esc",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_ESC),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
isRunning
|
||||
? {
|
||||
label: "Stop",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_STOP)
|
||||
click: () => send(IPC_COMMANDS.MACHINE_STOP),
|
||||
}
|
||||
: {
|
||||
label: "Start",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_START)
|
||||
click: () => send(IPC_COMMANDS.MACHINE_START),
|
||||
},
|
||||
{
|
||||
label: "Restart",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_RESTART),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
label: "Reset",
|
||||
click: () => send(IPC_COMMANDS.MACHINE_RESET),
|
||||
enabled: isRunning
|
||||
enabled: isRunning,
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Go to Disk Image",
|
||||
click: () => send(IPC_COMMANDS.SHOW_DISK_IMAGE)
|
||||
}
|
||||
]
|
||||
click: () => send(IPC_COMMANDS.SHOW_DISK_IMAGE),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Help",
|
||||
|
@ -182,18 +181,18 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
submenu: [
|
||||
{
|
||||
label: "Author",
|
||||
click: () => shell.openExternal(LINKS.homepage)
|
||||
click: () => shell.openExternal(LINKS.homepage),
|
||||
},
|
||||
{
|
||||
label: "windows95 on GitHub",
|
||||
click: () => shell.openExternal(LINKS.repo)
|
||||
click: () => shell.openExternal(LINKS.repo),
|
||||
},
|
||||
{
|
||||
label: "Help",
|
||||
click: () => shell.openExternal(LINKS.help)
|
||||
click: () => shell.openExternal(LINKS.help),
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Troubleshooting",
|
||||
|
@ -205,12 +204,12 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
|
||||
app.relaunch();
|
||||
app.quit();
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
if (process.platform === "darwin") {
|
||||
|
@ -218,41 +217,41 @@ async function createMenu({ isRunning } = { isRunning: false }) {
|
|||
label: "windows95",
|
||||
submenu: [
|
||||
{
|
||||
role: "about"
|
||||
role: "about",
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
role: "services"
|
||||
role: "services",
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Hide windows95",
|
||||
accelerator: "Command+H",
|
||||
role: "hide"
|
||||
role: "hide",
|
||||
},
|
||||
{
|
||||
label: "Hide Others",
|
||||
accelerator: "Command+Shift+H",
|
||||
role: "hideothers"
|
||||
role: "hideothers",
|
||||
},
|
||||
{
|
||||
role: "unhide"
|
||||
role: "unhide",
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
type: "separator",
|
||||
},
|
||||
{
|
||||
label: "Quit",
|
||||
accelerator: "Command+Q",
|
||||
click() {
|
||||
app.quit();
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
},
|
||||
],
|
||||
} as any);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ export function setupUpdates() {
|
|||
if (app.isPackaged) {
|
||||
require("update-electron-app")({
|
||||
repo: "felixrieseberg/windows95",
|
||||
updateInterval: "1 hour"
|
||||
updateInterval: "1 hour",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,8 +13,8 @@ export function getOrCreateWindow(): BrowserWindow {
|
|||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
sandbox: false,
|
||||
webviewTag: false
|
||||
}
|
||||
webviewTag: false,
|
||||
},
|
||||
});
|
||||
|
||||
mainWindow.loadFile("./dist/static/index.html");
|
||||
|
|
|
@ -28,7 +28,7 @@ export class App {
|
|||
}
|
||||
|
||||
window["win95"] = window["win95"] || {
|
||||
app: new App()
|
||||
app: new App(),
|
||||
};
|
||||
|
||||
window["win95"].app.setup();
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import * as React from "react";
|
||||
import { shell } from "electron";
|
||||
|
||||
interface CardDriveProps {
|
||||
showDiskImage: () => void;
|
||||
|
@ -54,13 +53,8 @@ export class CardDrive extends React.Component<CardDriveProps, CardDriveState> {
|
|||
<p>
|
||||
Windows 10 cannot mount raw disk images (ironically, macOS and Linux
|
||||
can). However, tools exist that let you mount this drive, like the
|
||||
freeware tool{" "}
|
||||
<a
|
||||
href="https://google.com"
|
||||
>
|
||||
OSFMount
|
||||
</a>
|
||||
. I am not affiliated with it, so please use it at your own risk.
|
||||
freeware tool <a href="https://google.com">OSFMount</a>. I am not
|
||||
affiliated with it, so please use it at your own risk.
|
||||
</p>
|
||||
{this.renderMountButton("Windows Explorer")}
|
||||
</fieldset>
|
||||
|
|
|
@ -24,7 +24,7 @@ export class CardSettings extends React.Component<
|
|||
this.onResetState = this.onResetState.bind(this);
|
||||
|
||||
this.state = {
|
||||
isStateReset: false
|
||||
isStateReset: false,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ export class EmulatorInfo extends React.Component<
|
|||
cpu: 0,
|
||||
disk: "Idle",
|
||||
lastCounter: 0,
|
||||
lastTick: 0
|
||||
lastTick: 0,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ export class EmulatorInfo extends React.Component<
|
|||
this.setState({
|
||||
lastTick: now,
|
||||
lastCounter: instructionCounter,
|
||||
cpu: Math.round(ips / deltaTime)
|
||||
cpu: Math.round(ips / deltaTime),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
isRunning: false,
|
||||
currentUiCard: "start",
|
||||
isInfoDisplayed: true,
|
||||
scale: 1
|
||||
scale: 1,
|
||||
};
|
||||
|
||||
this.setupInputListeners();
|
||||
|
@ -58,7 +58,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
*/
|
||||
public setupInputListeners() {
|
||||
// ESC
|
||||
document.onkeydown = evt => {
|
||||
document.onkeydown = (evt) => {
|
||||
const { isCursorCaptured } = this.state;
|
||||
|
||||
evt = evt || window.event;
|
||||
|
@ -99,7 +99,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
});
|
||||
};
|
||||
|
||||
window.onbeforeunload = event => {
|
||||
window.onbeforeunload = (event) => {
|
||||
if (this.isQuitting || this.isResetting) {
|
||||
console.log(`Unload: Not preventing`);
|
||||
return;
|
||||
|
@ -122,27 +122,27 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
this.sendKeys([
|
||||
0x1d, // ctrl
|
||||
0x38, // alt
|
||||
0x53 // delete
|
||||
0x53, // delete
|
||||
]);
|
||||
});
|
||||
|
||||
ipcRenderer.on(IPC_COMMANDS.MACHINE_ALT_F4, () => {
|
||||
this.sendKeys([
|
||||
0x38, // alt
|
||||
0x3e // f4
|
||||
0x3e, // f4
|
||||
]);
|
||||
});
|
||||
|
||||
ipcRenderer.on(IPC_COMMANDS.MACHINE_ALT_ENTER, () => {
|
||||
this.sendKeys([
|
||||
0x38, // alt
|
||||
0 // enter
|
||||
0, // enter
|
||||
]);
|
||||
});
|
||||
|
||||
ipcRenderer.on(IPC_COMMANDS.MACHINE_ESC, () => {
|
||||
this.sendKeys([
|
||||
0x18 // alt
|
||||
0x18, // alt
|
||||
]);
|
||||
});
|
||||
|
||||
|
@ -189,7 +189,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
if (currentUiCard === "settings") {
|
||||
card = (
|
||||
<CardSettings
|
||||
setFloppy={floppyFile => this.setState({ floppyFile })}
|
||||
setFloppy={(floppyFile) => this.setState({ floppyFile })}
|
||||
bootFromScratch={this.bootFromScratch}
|
||||
floppy={floppyFile}
|
||||
/>
|
||||
|
@ -204,7 +204,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
<>
|
||||
{card}
|
||||
<StartMenu
|
||||
navigate={target => this.setState({ currentUiCard: target })}
|
||||
navigate={(target) => this.setState({ currentUiCard: target })}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
|
@ -257,10 +257,10 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
*/
|
||||
public showDiskImage() {
|
||||
// Contents/Resources/app/dist/static
|
||||
const imagePath = path
|
||||
.join(__dirname, "../../images/windows95.img");
|
||||
const imagePath = path.join(__dirname, "../../images/windows95.img");
|
||||
|
||||
console.log(`Showing disk image in ${imagePath}`);``
|
||||
console.log(`Showing disk image in ${imagePath}`);
|
||||
``;
|
||||
|
||||
shell.showItemInFolder(imagePath);
|
||||
}
|
||||
|
@ -277,20 +277,20 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
video_memory_size: 32 * 1024 * 1024,
|
||||
screen_container: document.getElementById("emulator"),
|
||||
bios: {
|
||||
url: "../../bios/seabios.bin"
|
||||
url: "../../bios/seabios.bin",
|
||||
},
|
||||
vga_bios: {
|
||||
url: "../../bios/vgabios.bin"
|
||||
url: "../../bios/vgabios.bin",
|
||||
},
|
||||
hda: {
|
||||
url: "../../images/windows95.img",
|
||||
async: true,
|
||||
size: imageSize
|
||||
size: imageSize,
|
||||
},
|
||||
fda: {
|
||||
buffer: this.state.floppyFile
|
||||
buffer: this.state.floppyFile,
|
||||
},
|
||||
boot_order: 0x132
|
||||
boot_order: 0x132,
|
||||
};
|
||||
|
||||
console.log(`🚜 Starting emulator with options`, options);
|
||||
|
@ -300,7 +300,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
// New v86 instance
|
||||
this.setState({
|
||||
emulator: window["emulator"],
|
||||
isRunning: true
|
||||
isRunning: true,
|
||||
});
|
||||
|
||||
ipcRenderer.send(IPC_COMMANDS.MACHINE_STARTED);
|
||||
|
@ -367,7 +367,7 @@ export class Emulator extends React.Component<{}, EmulatorState> {
|
|||
private async saveState(): Promise<void> {
|
||||
const { emulator } = this.state;
|
||||
|
||||
return new Promise(resolve => {
|
||||
return new Promise((resolve) => {
|
||||
if (!emulator || !emulator.save_state) {
|
||||
console.log(`restoreState: No emulator present`);
|
||||
return resolve();
|
||||
|
|
Loading…
Reference in a new issue