mirror of
				https://github.com/smartfrigde/armcord.git
				synced 2024-08-14 23:56:58 +00:00 
			
		
		
		
	Add zoom controls back and open settings
This commit is contained in:
		
							parent
							
								
									6c59564256
								
							
						
					
					
						commit
						77b5455139
					
				
					 12 changed files with 145 additions and 59 deletions
				
			
		|  | @ -254,36 +254,3 @@ select { | |||
|     white-space: nowrap; | ||||
|     outline: none !important; | ||||
| } | ||||
| .acTheme { | ||||
|     height: 15em !important; | ||||
| } | ||||
| .acCSP { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acPatches { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acWebsocket { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acMobileMode { | ||||
|     height: 11em !important; | ||||
| } | ||||
| .acAltPaste { | ||||
|     height: 11em !important; | ||||
| } | ||||
| .acChannel { | ||||
|     height: 21em !important; | ||||
| } | ||||
| .acClientMod { | ||||
|     height: 18em !important; | ||||
| } | ||||
| .acCordwood { | ||||
|     height: 8em !important; | ||||
| } | ||||
| .acPrfmMode { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acTray { | ||||
|     height: 8em !important; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										33
									
								
								src/content/css/settingsEng.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/content/css/settingsEng.css
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| .acTheme { | ||||
|     height: 15em !important; | ||||
| } | ||||
| .acCSP { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acPatches { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acWebsocket { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acMobileMode { | ||||
|     height: 11em !important; | ||||
| } | ||||
| .acAltPaste { | ||||
|     height: 11em !important; | ||||
| } | ||||
| .acChannel { | ||||
|     height: 21em !important; | ||||
| } | ||||
| .acClientMod { | ||||
|     height: 18em !important; | ||||
| } | ||||
| .acCordwood { | ||||
|     height: 8em !important; | ||||
| } | ||||
| .acPrfmMode { | ||||
|     height: 10em !important; | ||||
| } | ||||
| .acTray { | ||||
|     height: 8em !important; | ||||
| } | ||||
|  | @ -47,7 +47,7 @@ | |||
|                     } | ||||
|                 } | ||||
|                 setTimeout(() => { | ||||
|                     window.armcordinternal.splashEnd(); | ||||
|                     window.armcord.splashEnd(); | ||||
|                     switch (window.armcord.channel) { | ||||
|                         case "stable": | ||||
|                             window.location.replace("https://discord.com/app"); | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/ipc.ts
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								src/ipc.ts
									
										
									
									
									
								
							|  | @ -1,7 +1,15 @@ | |||
| //ipc stuff
 | ||||
| import {app, ipcMain, shell, desktopCapturer} from "electron"; | ||||
| import {mainWindow} from "./window"; | ||||
| import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState, packageVersion} from "./utils"; | ||||
| import { | ||||
|     setConfigBulk, | ||||
|     getVersion, | ||||
|     getConfig, | ||||
|     setLang, | ||||
|     getLang, | ||||
|     getWindowState, | ||||
|     packageVersion, getDisplayVersion | ||||
| } from "./utils"; | ||||
| import {customTitlebar} from "./main"; | ||||
| import {createSettingsWindow} from "./settings/main"; | ||||
| export function registerIpc() { | ||||
|  | @ -44,10 +52,13 @@ export function registerIpc() { | |||
|     ipcMain.on("get-app-version", (event) => { | ||||
|         event.returnValue = getVersion(); | ||||
|     }); | ||||
|     ipcMain.on("displayVersion", (event) => { | ||||
|         event.returnValue = getDisplayVersion(); | ||||
|     }); | ||||
|     ipcMain.on("get-package-version", (event) => { | ||||
|         event.returnValue = packageVersion; | ||||
|     }); | ||||
|     ipcMain.on("splashEnd", async (event, arg) => { | ||||
|     ipcMain.on("splashEnd", async () => { | ||||
|         try { | ||||
|             var width = (await getWindowState("width")) ?? 800; | ||||
|             var height = (await getWindowState("height")) ?? 600; | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/menu.ts
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								src/menu.ts
									
										
									
									
									
								
							|  | @ -1,6 +1,7 @@ | |||
| import {Menu, app, clipboard, globalShortcut} from "electron"; | ||||
| import {mainWindow} from "./window"; | ||||
| import {getConfig} from "./utils"; | ||||
| import {createSettingsWindow} from "./settings/main"; | ||||
| 
 | ||||
| function paste(contents: any) { | ||||
|     const contentTypes = clipboard.availableFormats().toString(); | ||||
|  | @ -51,6 +52,13 @@ export async function setMenu() { | |||
|                         mainWindow.webContents.openDevTools(); | ||||
|                     } | ||||
|                 }, | ||||
|                 { | ||||
|                     label: "Open settings", | ||||
|                     accelerator: "CmdOrCtrl+Shift+'", | ||||
|                     click: function () { | ||||
|                         createSettingsWindow(); | ||||
|                     } | ||||
|                 }, | ||||
|                 { | ||||
|                     label: "Quit", | ||||
|                     accelerator: "CmdOrCtrl+Q", | ||||
|  | @ -77,6 +85,13 @@ export async function setMenu() { | |||
|                 }, | ||||
|                 {label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"} | ||||
|             ] | ||||
|         }, | ||||
|         { | ||||
|             label: "Zoom", | ||||
|             submenu: [ | ||||
|                 {label: "Zoom in", accelerator: "CmdOrCtrl+Plus", role: "zoomIn"}, | ||||
|                 {label: "Zoom out", accelerator: "CmdOrCtrl+-", role: "zoomOut"}, | ||||
|             ] | ||||
|         } | ||||
|     ]; | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,13 +23,13 @@ contextBridge.exposeInMainWorld("armcord", { | |||
|     version: ipcRenderer.sendSync("get-app-version", "app-version"), | ||||
|     packageVersion: ipcRenderer.sendSync("get-package-version", "app-version"), | ||||
|     getDisplayMediaSelector: getDisplayMediaSelector, | ||||
|     splashEnd: () => ipcRenderer.send("splashEnd"), | ||||
|     openSettingsWindow: () => ipcRenderer.send("openSettingsWindow") | ||||
| }); | ||||
| //to be only used inside armcord internal setup/splash etc
 | ||||
| if (window.location.href.indexOf("splash.html") > -1 || window.location.href.indexOf("setup.html") > -1) { | ||||
|     contextBridge.exposeInMainWorld("armcordinternal", { | ||||
|         restart: () => ipcRenderer.send("restart"), | ||||
|         saveSettings: (...args: any) => ipcRenderer.send("saveSettings", ...args), | ||||
|         splashEnd: () => ipcRenderer.send("splashEnd") | ||||
|         saveSettings: (...args: any) => ipcRenderer.send("saveSettings", ...args) | ||||
|     }); | ||||
| } | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import {injectHummusTitlebar, injectTitlebar} from "./titlebar"; | |||
| import {sleep, addStyle, injectJS, addScript} from "../utils"; | ||||
| import {ipcRenderer} from "electron"; | ||||
| import {injectMobileStuff} from "./mobile"; | ||||
| var version = ipcRenderer.sendSync("get-app-version", "app-version"); | ||||
| var version = ipcRenderer.sendSync("displayVersion"); | ||||
| var channel = ipcRenderer.sendSync("channel"); | ||||
| async function updateLang() { | ||||
|     if (window.location.href.indexOf("setup.html") > -1) { | ||||
|  |  | |||
|  | @ -15,6 +15,23 @@ | |||
|         <div class="saveBar"> | ||||
|             <button id="settings-save" class="center">Save Settings</button> | ||||
|         </div> | ||||
|         <div class="switch acTheme"> | ||||
|             <select name="theme" id="theme" class="left dropdown"> | ||||
|                 <option value="default">Default</option> | ||||
|                 <option value="native">Native</option> | ||||
|             </select> | ||||
|             <p class="header" id="settings-theme">ArmCord theme</p> | ||||
|             <p class="description"> | ||||
|                 ArmCord "themes" manage apps behaviour and looks. | ||||
|                 <br /> | ||||
|                 <b>Default</b> - this is how ArmCord looks when you first launch it. It includes recreation of Discord's | ||||
|                 custom titlebar and ArmCord specific styles injected into Discord. | ||||
|                 <br /> | ||||
|                 <b>Native</b> - uses native titlebar of OS you're currently running (e.g Windows 7/10). Functions more | ||||
|                 similar to actual Discord app on Linux. | ||||
|             </p> | ||||
|         </div> | ||||
|         <br /> | ||||
|         <div class="switch acCSP"> | ||||
|             <label class="header2">ArmCord CSP</label> | ||||
|             <input class="tgl tgl-light left" id="csp" type="checkbox" /> | ||||
|  | @ -133,17 +150,10 @@ | |||
|     <script> | ||||
|         async function loadLang() { | ||||
|             document.getElementById("settings-save").innerHTML = await settings.getLang("settings-save"); | ||||
|             document.getElementById("settings-mod").innerHTML = await settings.getLang("settings-mod"); | ||||
|             document.getElementById("settings-channel").innerHTML = await settings.getLang("settings-channel"); | ||||
|             document.getElementById("settings-invitewebsocket").innerHTML = await settings.getLang( | ||||
|                 "settings-invitewebsocket" | ||||
|             ); | ||||
|             document.getElementById("settings-patches").innerHTML = await settings.getLang("settings-patches"); | ||||
|             document.getElementById("settings-tray").innerHTML = await settings.getLang("settings-tray"); | ||||
|             document.getElementById("settings-mobileMode").innerHTML = await settings.getLang("settings-mobileMode"); | ||||
|             document.getElementById("settings-theme").innerHTML = await settings.getLang("settings-theme"); | ||||
|             //select stuff | ||||
|             document.getElementById("mod").options[3].text = await settings.getLang("settings-none"); | ||||
|             document.getElementById("prfmMode").options[2].text = await settings.getLang("settings-none"); | ||||
|             document.getElementById("prfmMode").options[1].text = await settings.getLang("settings-prfmMode-battery"); | ||||
|             document.getElementById("prfmMode").options[0].text = await settings.getLang( | ||||
|  | @ -158,18 +168,26 @@ | |||
|         async function loadSettings() { | ||||
|             document.getElementById("csp").checked = await settings.get("armcordCSP"); | ||||
|             document.getElementById("tray").checked = await settings.get("minimizeToTray"); | ||||
|             document.getElementById("websocket").checked = await settings.get("inviteWebsocket"); | ||||
|             document.getElementById("alternativePaste").checked = await settings.get("alternativePaste"); | ||||
|             document.getElementById("mobile").checked = await settings.get("mobileMode"); | ||||
|             document.getElementById("patches").value = await settings.get("automaticPatches"); | ||||
|             document.getElementById("mod").value = await settings.get("mods"); | ||||
|             if ((await settings.get("mods")) == "cordwood") { | ||||
|                 document.getElementById("cordwood").checked = true; | ||||
|             } else { | ||||
|                 document.getElementById("cordwood").checked = false; | ||||
|             } | ||||
|             document.getElementById("channel").value = await settings.get("channel"); | ||||
|             document.getElementById("theme").value = await settings.get("windowStyle"); | ||||
|             document.getElementById("prfmMode").value = await settings.get("performanceMode"); | ||||
|             document.getElementById("trayIcon").value = await settings.get("trayIcon"); | ||||
|         } | ||||
|         loadSettings(); | ||||
|         document.getElementById("settings-save").addEventListener("click", function () { | ||||
|         document.getElementById("settings-save").addEventListener("click", async function () { | ||||
|             var cordwood; | ||||
|             if (document.getElementById("cordwood").checked) { | ||||
|                 cordwood = true; | ||||
|             } else { | ||||
|                 cordwood = false; | ||||
|             } | ||||
|             settings.save({ | ||||
|                 windowStyle: document.getElementById("theme").value, | ||||
|                 channel: document.getElementById("channel").value, | ||||
|  | @ -177,22 +195,25 @@ | |||
|                 minimizeToTray: document.getElementById("tray").checked, | ||||
|                 alternativePaste: document.getElementById("alternativePaste").checked, | ||||
|                 automaticPatches: document.getElementById("patches").checked, | ||||
|                 mods: document.getElementById("mod").value, | ||||
|                 mobileMode: document.getElementById("mobile").checked, | ||||
|                 inviteWebsocket: document.getElementById("websocket").checked, | ||||
|                 mods: cordwood, | ||||
|                 mobileMode: await settings.get("mobileMode"), | ||||
|                 inviteWebsocket: await settings.get("inviteWebsocket"), | ||||
|                 performanceMode: document.getElementById("prfmMode").value, | ||||
|                 trayIcon: document.getElementById("trayIcon").value, | ||||
|                 doneSetup: true | ||||
|             }); | ||||
|         }); | ||||
|         document.getElementById("settings-pluginsFolder").addEventListener("click", function () { | ||||
|         document.getElementById("settings-pluginsFolder").addEventListener("click", async function () { | ||||
|             settings.openPluginsFolder(); | ||||
|             await new Promise((r) => setTimeout(r, 2000)); | ||||
|         }); | ||||
|         document.getElementById("settings-themesFolder").addEventListener("click", function () { | ||||
|         document.getElementById("settings-themesFolder").addEventListener("click", async function () { | ||||
|             settings.openThemesFolder(); | ||||
|             await new Promise((r) => setTimeout(r, 2000)); | ||||
|         }); | ||||
|         document.getElementById("settings-storageFolder").addEventListener("click", function () { | ||||
|         document.getElementById("settings-storageFolder").addEventListener("click", async function () { | ||||
|             settings.openStorageFolder(); | ||||
|             await new Promise((r) => setTimeout(r, 2000)); | ||||
|         }); | ||||
|         document.getElementById("settings-copyDebugInfo").addEventListener("click", function () { | ||||
|             settings.copyDebugInfo(); | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron"; | ||||
| import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation} from "../utils"; | ||||
| import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation, getLangName} from "../utils"; | ||||
| import path from "path"; | ||||
| import os from "os"; | ||||
| import fs from "fs"; | ||||
|  | @ -50,6 +50,9 @@ export function createSettingsWindow() { | |||
|         ipcMain.on("openPluginsFolder", (event) => { | ||||
|             shell.openPath(pluginsPath); | ||||
|         }); | ||||
|         ipcMain.on("getLangName", async (event) => { | ||||
|             event.returnValue = await getLangName(); | ||||
|         }); | ||||
|         ipcMain.handle("getSetting", (event, toGet: string) => { | ||||
|             return getConfig(toGet); | ||||
|         }); | ||||
|  |  | |||
|  | @ -1,4 +1,7 @@ | |||
| import {contextBridge, ipcRenderer} from "electron"; | ||||
| import path from "path"; | ||||
| import {addStyle} from "../utils"; | ||||
| import fs from "fs"; | ||||
| console.log("ArmCord Settings"); | ||||
| 
 | ||||
| contextBridge.exposeInMainWorld("settings", { | ||||
|  | @ -16,3 +19,7 @@ contextBridge.exposeInMainWorld("settings", { | |||
|     openStorageFolder: () => ipcRenderer.send("openStorageFolder"), | ||||
|     copyDebugInfo: () => ipcRenderer.send("copyDebugInfo") | ||||
| }); | ||||
| if (ipcRenderer.sendSync("getLangName") == "en-US") { | ||||
|     const cssPath = path.join(__dirname, "../", "/content/css/settingsEng.css"); | ||||
|     addStyle(fs.readFileSync(cssPath, "utf8")); | ||||
| } | ||||
|  |  | |||
							
								
								
									
										23
									
								
								src/utils.ts
									
										
									
									
									
								
							
							
						
						
									
										23
									
								
								src/utils.ts
									
										
									
									
									
								
							|  | @ -57,6 +57,9 @@ export function setup() { | |||
| export var packageVersion = require("../package.json").version; | ||||
| 
 | ||||
| export function getVersion() { | ||||
|     return packageVersion; | ||||
| } | ||||
| export function getDisplayVersion() { | ||||
|     //Checks if the app version # has 4 sections (3.1.0.0) instead of 3 (3.1.0) / Shitty way to check if Kernel Mod is installed
 | ||||
|     if ((app.getVersion() == packageVersion) == false) { | ||||
|         return `${packageVersion} [Kernel Mod]`; | ||||
|  | @ -157,7 +160,25 @@ export async function getLang(object: string) { | |||
|         return parsed[object]; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export async function getLangName() { | ||||
|     if (language == undefined) { | ||||
|         try { | ||||
|             const userDataPath = app.getPath("userData"); | ||||
|             const storagePath = path.join(userDataPath, "/storage/"); | ||||
|             const langConfigFile = storagePath + "lang.json"; | ||||
|             let rawdata = fs.readFileSync(langConfigFile, "utf-8"); | ||||
|             let parsed = JSON.parse(rawdata); | ||||
|             language = parsed["lang"]; | ||||
|         } catch (e) { | ||||
|             console.log("Language config file doesn't exist. Fallback to English."); | ||||
|             language = "en-US"; | ||||
|         } | ||||
|     } | ||||
|     if (language.length == 2) { | ||||
|         language = language + "-" + language.toUpperCase(); | ||||
|     } | ||||
|     return language; | ||||
| } | ||||
| //ArmCord Window State manager
 | ||||
| export interface WindowState { | ||||
|     width: number; | ||||
|  |  | |||
|  | @ -4,7 +4,15 @@ | |||
| // I'm sorry for this mess but I'm not sure how to fix it.
 | ||||
| import {BrowserWindow, shell, app, dialog} from "electron"; | ||||
| import path from "path"; | ||||
| import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, setConfig, setLang, setWindowState} from "./utils"; | ||||
| import { | ||||
|     checkIfConfigIsBroken, | ||||
|     firstRun, | ||||
|     getConfig, | ||||
|     contentPath, | ||||
|     setConfig, | ||||
|     setLang, | ||||
|     setWindowState | ||||
| } from "./utils"; | ||||
| import {registerIpc} from "./ipc"; | ||||
| import {setMenu} from "./menu"; | ||||
| import * as fs from "fs"; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue