mirror of
https://github.com/mmvanheusden/SteamDepotDownloaderGUI.git
synced 2026-02-04 05:31:19 +01:00
refactor: cleanup
This commit is contained in:
@@ -28,37 +28,38 @@ function submitForm() {
|
||||
|
||||
// Download a prebuild DepotDownloader binary, so it doesn't have to be included in the source code
|
||||
await download(DOTNET_DOWNLOAD_URL)
|
||||
console.log("downld")
|
||||
|
||||
// Unzip the DepotDownloader binary
|
||||
await unzip(DOTNET_ZIP_FILE, DOTNET_DIR)
|
||||
console.log("unzip")
|
||||
|
||||
// Clean up the old files
|
||||
await removeFile(DOTNET_ZIP_FILE)
|
||||
console.log("removeFile")
|
||||
|
||||
// Run the final command
|
||||
|
||||
let terminal
|
||||
// if the terminal dropdown is not set to 'auto', set the terminal variable to the selected index.
|
||||
if (document.getElementById("terminal-dropdown").selectedIndex !== 11) {
|
||||
terminal = document.getElementById("terminal-dropdown").selectedIndex
|
||||
} else terminal = "default"
|
||||
} else terminal = "auto"
|
||||
// if the OS dropdown is not set to 'auto', set the os variable to the selected index.
|
||||
if (document.getElementById("os-dropdown").selectedIndex !== 4) {
|
||||
os = document.getElementById("os-dropdown").selectedIndex
|
||||
} else os = "default"
|
||||
if (document.getElementById("os-dropdown").selectedIndex !== 3) await console.debug("Command issued: " + createCommand(terminal,os))
|
||||
} else os = "auto"
|
||||
|
||||
await runCommand(createCommand(terminal,os))
|
||||
// create the command
|
||||
let command = createCommand(terminal, os)
|
||||
|
||||
console.log("runCommand")
|
||||
if (document.getElementById("os-dropdown").selectedIndex !== 3) await console.debug("Command issued: " + command)
|
||||
|
||||
await runCommand(command)
|
||||
}).catch(function (error) {
|
||||
if (error === "noDotnet") {
|
||||
console.error("Dotnet not found in PATH")
|
||||
// if dotnet is not found, show the dotnet warning
|
||||
document.getElementById("emptywarning").hidden = true
|
||||
document.getElementById("dotnetwarning").hidden = false
|
||||
} else if (error === "emptyField") {
|
||||
console.error("Fill in all required fields")
|
||||
// if a required field is empty, show the empty field warning
|
||||
document.getElementById("dotnetwarning").hidden = true
|
||||
document.getElementById("emptywarning").hidden = false
|
||||
}
|
||||
@@ -69,9 +70,9 @@ function submitForm() {
|
||||
function openRelevantPage(target) {
|
||||
const electron = require("electron")
|
||||
const os = process.platform.toString()
|
||||
/* eslint-disable indent */
|
||||
// why are you not indenting nicely eslint?
|
||||
switch (target) {
|
||||
/* eslint-disable indent */
|
||||
// why are you not indenting nicely eslint?
|
||||
case "dotnet":
|
||||
document.getElementById("dotnetwarning").hidden = true
|
||||
if (os.includes("win")) {
|
||||
@@ -120,29 +121,27 @@ function checkPath() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically fills The OS dropdown with the OS detected.
|
||||
* Runs when the app is fully loaded
|
||||
* Fills the values for default os
|
||||
* Runs when the app is fully loaded.
|
||||
*/
|
||||
function fillDefaultValues() {
|
||||
// [0]: Windows, [1]: macOS [2]: Linux [3]: manual
|
||||
//const os_dropdown = document.getElementById("os-dropdown")
|
||||
if (process.platform.toString().includes("linux")) {
|
||||
//os_dropdown.selectedIndex = 2
|
||||
document.getElementById("default-os").innerText = "Linux"
|
||||
} else if (process.platform.toString().includes("win")) {
|
||||
//os_dropdown.selectedIndex = 0
|
||||
document.getElementById("default-os").innerText = "Windows"
|
||||
} else if (process.platform.toString().includes("darwin")) {
|
||||
//os_dropdown.selectedIndex = 1
|
||||
document.getElementById("default-os").innerText = "macOS"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the selected index = 2 (Linux), and based on that enables or disables the terminal dropdown.
|
||||
* Runs when the app is fully loaded,
|
||||
* and when the user changes the OS dropdown selection.
|
||||
* Validates the choice of the OS dropdown.
|
||||
* If the choice is 2 (Linux), enable the terminal selection dropdown.
|
||||
* If the choice is not 2 (Linux), disable the terminal selection dropdown.
|
||||
* If the choice is 4 (manual), enable the terminal selection dropdown.
|
||||
* If the choice is not 4 (manual), disable the terminal selection dropdown.
|
||||
*/
|
||||
function validateChoice() {
|
||||
// [0]: Windows, [1]: macOS [2]: Linux [3]: manual
|
||||
@@ -182,6 +181,7 @@ function toggleFormAccessibility(disable) {
|
||||
document.getElementById("pickpath").disabled = disable
|
||||
document.getElementById("downloadbtn").ariaDisabled = disable
|
||||
document.getElementById("downloadbtn").disabled = disable
|
||||
document.getElementById("settings-button").disabled = disable
|
||||
document.getElementById("downloadbtn").classList.replace(((disable) ? "btn-primary" : "btn-disabled"), ((!disable) ? "btn-primary" : "btn-disabled"))
|
||||
}
|
||||
|
||||
@@ -194,10 +194,9 @@ function setTheme(theme) {
|
||||
|
||||
// main.js sends a ready message if the page is loaded in. This will be received here.
|
||||
ipcRenderer.on("ready", async () => {
|
||||
|
||||
if (!ready) return
|
||||
|
||||
//let terminal_dropdown = document.getElementById("terminal-dropdown")
|
||||
|
||||
await toggleFormAccessibility(true) // disables the form, while loading
|
||||
document.getElementById("loader").hidden = false
|
||||
|
||||
@@ -205,20 +204,20 @@ ipcRenderer.on("ready", async () => {
|
||||
let r = await fetch("https://api.github.com/zen")
|
||||
console.debug(await r.text())
|
||||
|
||||
|
||||
await fillDefaultValues() // Set the default values based on OS
|
||||
|
||||
const terminals = await forceTerminals()
|
||||
/* forceTerminals() returns two values:
|
||||
[1,2]
|
||||
[bol, list, list]
|
||||
1: true/false. if true, there are terminals found. if false none are, or not on linux
|
||||
2: a list of available terminals with their associated number in the terminal dropdown index.
|
||||
3: a list of available terminals with their associated name in the terminal dropdown.
|
||||
*/
|
||||
if (terminals[0]) {
|
||||
console.log(`${terminals[1].length} terminals found in PATH.`)
|
||||
document.getElementById("terminals-found").innerText = terminals[1].length.toString()
|
||||
document.getElementById("terminals-found").innerText = `${terminals[1].length.toString()} / ${document.getElementById("terminal-dropdown").length - 1}`
|
||||
document.getElementById("default-terminal").innerText = terminals[2][0]
|
||||
//terminal_dropdown.selectedIndex = terminals[1][0] // set the terminal dropdown to the first available terminal found.
|
||||
console.log(terminals[1][0])
|
||||
|
||||
} else {
|
||||
console.log("No terminals found in PATH. Continuing with default values") // when no terminals are found on the system, or when linux is not used.
|
||||
@@ -249,10 +248,12 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
if (document.getElementById("downloadbtn").disabled === false) submitForm()
|
||||
})
|
||||
document.getElementById("settings-button").addEventListener("click", () => {
|
||||
console.log("Settings button clicked")
|
||||
if (document.getElementById("settings-button").disabled === false) {
|
||||
console.log("Settings button clicked")
|
||||
|
||||
// show the modal. This is done by setting the display to block.
|
||||
document.getElementById("settings-surrounding").style.display = "block"
|
||||
// show the modal. This is done by setting the display to block.
|
||||
document.getElementById("settings-surrounding").style.display = "block"
|
||||
}
|
||||
})
|
||||
document.getElementById("settings-surrounding").addEventListener("click", (event) => {
|
||||
if (event.target === document.getElementById("settings-surrounding")) {
|
||||
@@ -276,5 +277,6 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||
ipcRenderer.on("file", (event, file) => {
|
||||
console.log("path selected by user: " + file)
|
||||
document.getElementById("checkpath").ariaDisabled = false // Makes the check button active
|
||||
document.getElementById("checkpath").disabled = false // Makes the check button active
|
||||
exportedFile = file.toString()
|
||||
})
|
||||
|
||||
91
index.html
91
index.html
@@ -1,12 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- automatic dark mode :) -->
|
||||
<html data-color-mode="auto" data-dark-theme="dark" data-light-theme="light" lang="en" id="theme">
|
||||
<html data-color-mode="auto" data-dark-theme="dark" data-light-theme="light" id="theme" lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta content="width=device-width, initial-scale=1" name="viewport"/>
|
||||
<link href="https://unpkg.com/@primer/css@21.0.9/dist/primer.css" rel="stylesheet"/>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link href="style.css" rel="stylesheet">
|
||||
<title>SteamDepotDownloaderGUI</title>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js "></script>
|
||||
</head>
|
||||
<body>
|
||||
<script src="downloader.js"></script>
|
||||
@@ -45,16 +46,16 @@
|
||||
<div class="form-group-header">
|
||||
<label for="username">Username</label>
|
||||
</div>
|
||||
<input class="form-control input-block" id="username" type="text"
|
||||
placeholder="Leave empty for anonymous download"/>
|
||||
<input class="form-control input-block" id="username" placeholder="Leave empty for anonymous download"
|
||||
type="text"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group mx-3 mt-1">
|
||||
<div class="form-group-header">
|
||||
<label for="password">Password</label>
|
||||
</div>
|
||||
<input class="form-control input-block" id="password" type="password"
|
||||
placeholder="Leave empty for anonymous download"/>
|
||||
<input class="form-control input-block" id="password" placeholder="Leave empty for anonymous download"
|
||||
type="password"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group mx-3 mt-1 required">
|
||||
@@ -87,8 +88,8 @@
|
||||
Set location
|
||||
</div>
|
||||
|
||||
<div aria-label="Check the location that has been selected."
|
||||
class="form-control btn btn-sm ml-2 tooltipped tooltipped-ne" id="checkpath" aria-disabled="true">
|
||||
<div aria-disabled="true"
|
||||
aria-label="Check the location that has been selected." class="form-control btn btn-sm ml-2 tooltipped tooltipped-ne" id="checkpath">
|
||||
Open location
|
||||
</div>
|
||||
<span class="Label mt-1 ml-3 Label--warning" id="loader">
|
||||
@@ -96,61 +97,23 @@
|
||||
<span class="AnimatedEllipsis"></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!--<div class="form-group mx-3 mt-3 required">
|
||||
<div class="form-group-header ">
|
||||
<label for="osdropdown">Operating system</label>
|
||||
</div>
|
||||
|
||||
<div aria-label="Select your OS/terminal here." class="form-group-body tooltipped tooltipped-n">
|
||||
<select aria-label="Preference" class="form-select width-full" id="osdropdown">
|
||||
<option>Windows</option>
|
||||
<option disabled>macOS (NOT YET IMPLEMENTED)</option>
|
||||
<option>Linux</option>
|
||||
<option>Print command in console (CTRL-SHIFT-I)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group mx-3 mt-3" id="osdropdown2label">
|
||||
<div class="form-group-header">
|
||||
<label for="osdropdown2">Terminal</label>
|
||||
</div>
|
||||
|
||||
<div aria-label="Select the terminal emulator you use." class="form-group-body tooltipped tooltipped-n">
|
||||
<select aria-label="Preference" class="form-select width-full" id="osdropdown2" disabled>
|
||||
<option>Gnome Terminal</option>
|
||||
<option>KDE Konsole</option>
|
||||
<option>Xfce Terminal</option>
|
||||
<option>Terminator</option>
|
||||
<option>Terminology</option>
|
||||
<option>xterm</option>
|
||||
<option>Kitty</option>
|
||||
<option>LXTerminal</option>
|
||||
<option>Tilix</option>
|
||||
<option>Deepin Terminal</option>
|
||||
<option>cool-retro-term</option>
|
||||
<option selected hidden disabled>Choose your terminal emulator</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>-->
|
||||
</form>
|
||||
|
||||
|
||||
<div class="form-group mt-3 ml-3 mr-3">
|
||||
<div class="BtnGroup d-block">
|
||||
<button class="BtnGroup-item btn btn-block btn-primary" style="width: calc(100% - 50px);" id="downloadbtn">
|
||||
<svg class="octicon filter-red" height="16" viewBox="0 0 16 16" width="16"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
style="display: inline-block; user-select: none; vertical-align: text-bottom;">
|
||||
<button class="BtnGroup-item btn btn-block btn-primary" id="downloadbtn" style="width: calc(100% - 50px);">
|
||||
<svg class="octicon filter-red" height="16" style="display: inline-block; user-select: none; vertical-align: text-bottom;" viewBox="0 0 16 16"
|
||||
width="16"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"
|
||||
fill-rule="evenodd"></path>
|
||||
</svg>
|
||||
Download
|
||||
</button>
|
||||
<button class="BtnGroup-item btn" id="settings-button">
|
||||
<svg fill="#8B949E" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"
|
||||
style="display: inline-block; user-select: none; vertical-align: text-bottom;">
|
||||
<svg fill="#8B949E" height="16" style="display: inline-block; user-select: none; vertical-align: text-bottom;" viewBox="0 0 16 16" width="16"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
@@ -169,7 +132,7 @@
|
||||
|
||||
<div aria-label="Visit the SteamDB instant search website." class="btn btn-sm ml-2 tooltipped tooltipped-n mb-1"
|
||||
id="smbtn2">
|
||||
<svg fill="#8B949E" aria-hidden="true" class="octicon" height="16" viewBox="0 0 128 128" width="16"
|
||||
<svg aria-hidden="true" class="octicon" fill="#8B949E" height="16" viewBox="0 0 128 128" width="16"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M63.9 0C30.5 0 3.1 11.9.1 27.1l35.6 6.7c2.9-.9 6.2-1.3 9.6-1.3l16.7-10c-.2-2.5 1.3-5.1 4.7-7.2 4.8-3.1 12.3-4.8 19.9-4.8 5.2-.1 10.5.7 15 2.2 11.2 3.8 13.7 11.1 5.7 16.3-5.1 3.3-13.3 5-21.4 4.8l-22 7.9c-.2 1.6-1.3 3.1-3.4 4.5-5.9 3.8-17.4 4.7-25.6 1.9-3.6-1.2-6-3-7-4.8L2.5 38.4c2.3 3.6 6 6.9 10.8 9.8C5 53 0 59 0 65.5c0 6.4 4.8 12.3 12.9 17.1C4.8 87.3 0 93.2 0 99.6 0 115.3 28.6 128 64 128c35.3 0 64-12.7 64-28.4 0-6.4-4.8-12.3-12.9-17 8.1-4.8 12.9-10.7 12.9-17.1 0-6.5-5-12.6-13.4-17.4 8.3-5.1 13.3-11.4 13.3-18.2 0-16.5-28.7-29.9-64-29.9zm22.8 14.2c-5.2.1-10.2 1.2-13.4 3.3-5.5 3.6-3.8 8.5 3.8 11.1 7.6 2.6 18.1 1.8 23.6-1.8s3.8-8.5-3.8-11c-3.1-1-6.7-1.5-10.2-1.5zm.3 1.7c7.4 0 13.3 2.8 13.3 6.2 0 3.4-5.9 6.2-13.3 6.2s-13.3-2.8-13.3-6.2c0-3.4 5.9-6.2 13.3-6.2zM45.3 34.4c-1.6.1-3.1.2-4.6.4l9.1 1.7a10.8 5 0 1 1-8.1 9.3l-8.9-1.7c1 .9 2.4 1.7 4.3 2.4 6.4 2.2 15.4 1.5 20-1.5s3.2-7.2-3.2-9.3c-2.6-.9-5.7-1.3-8.6-1.3zM109 51v9.3c0 11-20.2 19.9-45 19.9-24.9 0-45-8.9-45-19.9v-9.2c11.5 5.3 27.4 8.6 44.9 8.6 17.6 0 33.6-3.3 45.2-8.7zm0 34.6v8.8c0 11-20.2 19.9-45 19.9-24.9 0-45-8.9-45-19.9v-8.8c11.6 5.1 27.4 8.2 45 8.2s33.5-3.1 45-8.2z"
|
||||
fill-rule="evenodd"></path>
|
||||
@@ -190,8 +153,8 @@
|
||||
<div aria-label="View the instructions on how to use SteamDepotDownloaderGUI."
|
||||
class="btn btn-sm ml-2 tooltipped tooltipped-nw mb-1"
|
||||
id="smbtn4">
|
||||
<svg fill="#8B949E" width="16" height="16" viewBox="0 0 16 16"
|
||||
style="display: inline-block; vertical-align: text-bottom;">
|
||||
<svg fill="#8B949E" height="16" style="display: inline-block; vertical-align: text-bottom;" viewBox="0 0 16 16"
|
||||
width="16">
|
||||
<path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path>
|
||||
</svg>
|
||||
Instructions
|
||||
@@ -208,13 +171,13 @@
|
||||
</div>
|
||||
<div class="form-group-body">
|
||||
<div class="BtnGroup">
|
||||
<button class="BtnGroup-item btn btn-sm" type="button" id="theme-auto" aria-selected="true">
|
||||
<button aria-selected="true" class="BtnGroup-item btn btn-sm" id="theme-auto" type="button">
|
||||
Auto
|
||||
</button>
|
||||
<button class="BtnGroup-item btn btn-sm" type="button" id="theme-light">
|
||||
<button class="BtnGroup-item btn btn-sm" id="theme-light" type="button">
|
||||
Light
|
||||
</button>
|
||||
<button class="BtnGroup-item btn btn-sm" type="button" id="theme-dark">
|
||||
<button class="BtnGroup-item btn btn-sm" id="theme-dark" type="button">
|
||||
Dark
|
||||
</button>
|
||||
</div>
|
||||
@@ -223,11 +186,11 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="form-group-header">
|
||||
<label>Override terminal selection</label>
|
||||
<label for="terminal-dropdown">Override terminal selection</label>
|
||||
</div>
|
||||
<div class="form-group-body">
|
||||
<div class="mb-2">
|
||||
<select id="terminal-dropdown" class="form-select">
|
||||
<select class="form-select" id="terminal-dropdown">
|
||||
<option>Gnome Terminal</option>
|
||||
<option>KDE Konsole</option>
|
||||
<option>Xfce Terminal</option>
|
||||
@@ -239,7 +202,7 @@
|
||||
<option>Tilix</option>
|
||||
<option>Deepin Terminal</option>
|
||||
<option>cool-retro-term</option>
|
||||
<option selected="selected">Default</option>
|
||||
<option selected="selected">Auto</option>
|
||||
</select>
|
||||
found: <span class="Counter"><code id="terminals-found" style="color: black;">none</code></span>
|
||||
<br>default: <span class="Counter"><code id="default-terminal" style="color: black;">none</code></span>
|
||||
@@ -249,16 +212,16 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="form-group-header">
|
||||
<label>Override OS selection</label>
|
||||
<label for="os-dropdown">Override OS selection</label>
|
||||
</div>
|
||||
<div class="form-group-body">
|
||||
<div class="mb-2">
|
||||
<select id="os-dropdown" class="form-select">
|
||||
<select class="form-select" id="os-dropdown">
|
||||
<option>Windows</option>
|
||||
<option disabled>macOS (NOT YET IMPLEMENTED)</option>
|
||||
<option>Linux</option>
|
||||
<option>Print command in console (CTRL-SHIFT-I)</option>
|
||||
<option selected="selected">Default</option>
|
||||
<option selected="selected">Auto</option>
|
||||
</select>
|
||||
default: <span class="Counter"><code id="default-os" style="color: black;">none</code></span>
|
||||
</div>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/* The grey part */
|
||||
.settings-surrounding {
|
||||
display: none;
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
left: 0;
|
||||
@@ -35,6 +35,7 @@
|
||||
border: 1px black solid;
|
||||
width: 90vw; /* 90vw -> 90% */
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
box-shadow: 0 10px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
}
|
||||
|
||||
.hide {
|
||||
|
||||
24
utils.js
24
utils.js
@@ -1,4 +1,5 @@
|
||||
var defaultTerminal = ""
|
||||
|
||||
/**
|
||||
* Checks if all required fields are filled and if dotnet is installed in the system path.
|
||||
* It returns a promise that resolves to true if dotnet is installed and all required fields are filled, false otherwise.
|
||||
@@ -20,18 +21,12 @@ function preDownloadCheck() {
|
||||
input.parentElement.classList.toggle("errored", isInvalid) // toggle the 'errored' class depending on if isInvalid is true or false.
|
||||
if (isInvalid) unfilledFields++
|
||||
}
|
||||
// If the selected OS is Linux, and the terminal selection is the default (11), error.
|
||||
// if (document.getElementById("osdropdown").selectedIndex === 2 && document.getElementById("osdropdown2").selectedIndex === 11) {
|
||||
// document.getElementById("osdropdown2label").classList.add("errored")
|
||||
// unfilledFields++
|
||||
// } else document.getElementById("osdropdown2label").classList.remove("errored")
|
||||
|
||||
if (unfilledFields > 0) {
|
||||
reject("emptyField")
|
||||
return
|
||||
}
|
||||
|
||||
// Check if dotnet is installed, depending on the platform
|
||||
// Check if dotnet is found, depending on the platform
|
||||
if (process.platform.toString().includes("win")) {
|
||||
// Windows
|
||||
const {exec} = require("child_process")
|
||||
@@ -170,13 +165,16 @@ function unzip(file, target) {
|
||||
* TODO: create a builder, so the different terminals can be put in one variable and more can be added easily.
|
||||
*/
|
||||
const createCommand = (terminal, os) => {
|
||||
if (terminal === "default") {
|
||||
// if "auto" is given, take the first found terminal and use it.
|
||||
if (terminal === "auto") {
|
||||
terminal = defaultTerminal[0]
|
||||
} else console.log("terminal is manually chosen.")
|
||||
|
||||
// Import path so \ can be put in a string
|
||||
const path = require("path")
|
||||
if (os === "default") {
|
||||
|
||||
// if os is auto, choose the os for us.
|
||||
if (os === "auto") {
|
||||
if (process.platform.toString().includes("win")) {
|
||||
os = 0
|
||||
} else if (process.platform.toString().includes("linux")) {
|
||||
@@ -184,7 +182,6 @@ const createCommand = (terminal, os) => {
|
||||
}
|
||||
} else console.log("os is manually chosen")
|
||||
|
||||
console.log("terminal: " + terminal.toString())
|
||||
|
||||
|
||||
// The values inputted by the user in the form
|
||||
@@ -321,8 +318,8 @@ const platformpath = () => {
|
||||
*/
|
||||
const forceTerminals = async () => {
|
||||
const commands = [["gnome-terminal", "--version", 0], ["konsole", "--version", 1], ["xfce4-terminal", "--version", 2], ["terminator", "--version", 3], ["terminology", "--version", 4], ["xterm", "-v", 5], ["kitty", "--version", 6], ["lxterminal", "--version", 7], ["tilix", "--version", 8], ["deepin-terminal", "--version", 9], ["cool-retro-term", "--version", 10]]
|
||||
let availableTerminals = []
|
||||
let availableNames = []
|
||||
let availableTerminals = [] // list of IDs of terminals, corrospending to their index in the dropdown menu
|
||||
let availableNames = [] // list of names of found terminals
|
||||
if (process.platform === "linux") {
|
||||
for (let i = 0; i < commands.length; i++) {
|
||||
await runCommand(`${commands[i][0]} ${commands[i][1]}`).then(() => {
|
||||
@@ -335,8 +332,7 @@ const forceTerminals = async () => {
|
||||
}
|
||||
if (availableTerminals.length > 0) {
|
||||
defaultTerminal = availableTerminals
|
||||
return [true, availableTerminals, availableNames]
|
||||
//return false
|
||||
return [true, availableTerminals, availableNames] // [true, "2,4,7", "twox,fourterm,sevenemulator"] (example)
|
||||
} else return false
|
||||
} else return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user