mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
* Peek (#22498) * Add peek dll project * add spacebar preview and launch on hotkey press * add todo * add process handle to handle continuous press of hotkey * add tool to stop all powertoys processes * Add a blank Peek page and update nav menu * Add some initial content to Peek page including a toggle * refactor settings parsing * rename spacebar peek to peek viewer * rename script to stop powertoys processes * remove tool * Adding FileUtils for retrieving selected file in File Explorer * Remove unnecessary SndPeekSettings * Add shortcut setting * Set the shortcut to ctrl+space * Launching viewer with selected FE file * Add PeekUI WinUI3 project with interop events * Moving FileTypeUtils into PeekFileUtils project * execute winui3 app on hotkey * Fix paths with spaces * remove winui3 project * Resolve comment * add wpf app with toggle visibility on hotkey * fix visibility on startup * remove window properties and add todos * Fixed hidden extension and system file handling * wip * Add working WPF app with FileExplorer querying * remove c++ projects * Move native awaiter * Working Image control with image files * Resize and move window based on explorer monitor * Image render, window positioning and sizing clean up * add window management logic and selection logic * add extension methods to add circular iterating capability to linkedlistnode * Add OnArrowKeyPresshandler * Added titlebar with file name and scaling with titlebar height * fix flashing window on startup and process kept alive when powertoys exits * remove wait for debugger loop in ui * Add KeyIsDown method * Fix KeyDown issue with Key handled and check for repeat * Add thumbnail logic * Add all folder items if only one item is selected * File type helper * Using hresult * Add cancellation and rotation handling * Use extension instead of path * fIX CONFLICTS * Fixing some file type checks * Add new icon for Peek * Update page with the new Peek icon * Initialize IsEnabled and hook ActivationShortcut to dllmain * add icon to taskbar and titlebar * Add theme sensitive backgrounds * rename event handlers * add settings image * Move window data into obserable object * Refactor viewmodel, interop and helpers * Clean up * Add loading spinner * Add todos * Fix conflicts * Move native code into its own folder * Add peek to installer * Fix building peek and peekui projects * Replace UWP namespaces to WinAppSDK * Working WASDK placeholder project * Add exit when powertoys runner exit * Working winui3 with image display * Add WIC project with <TreatWarningAsErros> false for now * Fit content to window * Use Size from Windows.Foundation * Change order * Add some todos * Refactored native/interop code and added helpers to imagepreviewer * Rename projects * Move some code * Remove using Co-authored-by: Michael Salmon <miksalmon@users.noreply.github.com> Co-authored-by: Michael Salmon 🐟 <michaelpsalmon@outlook.com> Co-authored-by: Alireza Ebadi Ghajari <alirezae@microsoft.com> Co-authored-by: Jessie Su <Jessie.Su@microsoft.com> Co-authored-by: sujessie <102062556+sujessie@users.noreply.github.com> * Bump Microsoft.Windows.SDK.BuildTools version * [Peek] Plugin pattern to enable any file type previewing (#22475) * [Peek] Fetching image size through PropertyStore (#22530) * Fetching metadata from PropertySTore * Releasing objects to fix crash * Creating new PropertyHelper Co-authored-by: Daniel Chau <dancha@microsoft.com> * Juliata/filetypes (#22538) * Using the same list of file extensions as Lightbox's AppxManifest, and ensuring we convert file extension to lowercase * Add IsFileTypeSupported to IPreviewer * respond to PR comments * Add scale awareness to window centering (#22541) * [Peek] Fix installer builds, project configs and update assets (#22540) * Update installer * Fix installer errors * Fix peek vcxproj * Add package signing * Add peek to arm64 * Add back ARM64 toMeasureToolUI * Add versions to project * Update assets and icons * Add correct icon * [Peek] Enable PropertyStore for offline files (#22567) * Enabling PropertyStore for offline files Co-authored-by: Daniel Chau <dancha@microsoft.com> * [Peek] Adding unsupported file previewer (#22598) * Unsupported file previewer * Fix file display info * Fix property store calls * Update TODO * [Peek] Add WebView2 integration (#22506) * First commit with WIP logic to support WV2 in Peek module * Minor code cleanup and try/catch block * Added control to wrap WebView2 logic * Cleanup * Added logic to handle HTML previewing Properly update FilePreview according to file type * Code cleanup Updated comments * Updated comment * Removed comment * Code cleanup * Improved opening of web browser preview to avoid "blank" or "seeing previous page" issue Removed unused method Added xaml fallback to guarantee default/starting state * Removed folder * Updated factory logic to match master * address code review * addressed PR review * address PR review * Address PR review * address PR review * Address PR review * [Peek] Add basic file querying and navigation (#22589) * Refactor to facilitate file data initialization * Extract file-related code to new FileManager class * Add temp basic version * Clean + add todo for cancellations * Fix various nav-related issues * Temp - start moving iteration-related code to bg thread * Minor tweaks * Add FEHelper todo * Rename FileManager + various tweaks * Add basic throttling * Improve bg thread synchronization * Clean * Clean * Rename based on feedback * Rename FileQuery * Rename properties * Rename remaining fields * Add todos for nav success/failures Co-authored-by: Esteban Margaron <emargaron@microsoft.com> * [Peek] Add customized title bar (#22600) * Add basic button UI * Add function to get default app name and to open file in default app * Correct error output * Add filename to titlebar * Remove titlebar text from Resw * Add basic button UI * Add function to get default app name and to open file in default app * Add filename to titlebar * Correct error output * Remove titlebar text from Resw * Add SetDragRectangles * Correct logic, update function name * Add localization * Cleanup and adaptive width * Add fileIndex/NumberOfFiles for multiple files activation * Refine titlebar styles * Update error message; Return HResult from native methods; Update variable initialisation and string null testing * Titlebar height and adaptive width refinement * Add fallback to launch app picker if fail to open default app * Temp change to hide AppTitle_FileCount * Update launch button to command; Add keyboard accelerator * Update titlebar inactive background color * Update tooltip to add keyboard accelerator * Add comments to resw file * Fix accidental deletion from previous merge Co-authored-by: Jojo Zhou <yizzho@microsoft.com> Co-authored-by: Yawen Hou <yawenhou@microsoft.com> * Fix crash * Fix wrong thread exception * Make CurrentItemIndex setter private * Update titlebar filecount text * Fix titlebar draggable region and interactive region (bump WinAppSdk to latest) * [Peek] Unsupported File Previewer - Formatting string from resources (#22609) * Moving to string resource usage * Moving ReadableStringHelper to common project * Fix comments * [Peek] Fix foregrounding (#22633) * Fixing foregrounding * Get window handle inside BringToForeground extension method Co-authored-by: Daniel Chau <dancha@microsoft.com> Co-authored-by: Samuel Chapleau <sachaple@microsoft.com> * [Peek] ImagePreviewer - Handle error states (#22637) * add better preview state handling * add error handling in imagepreviewer and better state handling * fix error handling so exception is not bubbled up * improve performance and hook up unsupported previewer on error * remove commented code * address pr comments * [Peek] add PDF viewing support (#22636) * [Peek] add PDF viewing support * Fixed issue which would redirect some HTML and PDF files to external browser * Fixed refactored interface name * [Peek] Refine titlebar adaptive width (#22642) * Adjust adaptive width of titlebar * Remove visualstate setters for AppTitle_FileCount Co-authored-by: Jojo Zhou <yizzho@microsoft.com> * [Peek] New File Explorer tabs break Shell API to get selected files (#22641) * fix FE tab bug * remove unnecessary unsafe keyword * [Peek] add extra logic to properly render PNG files with transparency (#22613) * [Peek] added extra logic to render PNG files with proper transparency * Moved logic to ThumbnailHelper Cleanup * Created a separated previewer for PNG to only load the preview image with thumbnail logic * removed unused code * Updated state loading change * [Peek] Unsupported File Previewer - Setting Window Size (#22645) * Adding setting for unsupported file window * Fix * [Peek] Add tooltip to File (#22640) * Add tooltip to File * Add placeholder text for no tooltip * Address comments * Use StringBuilder Co-authored-by: Jojo Zhou <yizzho@microsoft.com> * Add full image quality support (#22654) * [Peek] Window foregrounding simplification and fixes + keep window visible if FE single selection changed (#22657) * Use different apis to bring to foreground removing remote thread wait and work as well as library loading * Keep window open if single selected file in FE is different * Removed unused methods * [Peek] Add cancellation token OnFilePropertyChanged (#22643) * Cancel file loading before opening another file * Add omitted cancellation checks * Catch task cancelled exception; Add more cancellation checkpoints * Add cancellation checkpoint beofre GetBitmapFromHBitmapAsync * Correct typo * Update to pass cancellation token individually to each async methods * Add lost cancellationToken source * Add cancellation token to PngPreviewer Co-authored-by: Yawen Hou <yawenhou@microsoft.com> * [Peek] Unsupported File Previewer - Preserve Transparency For File Icons (#22650) * Preserving transparency or icons * Remove TODO Co-authored-by: Samuel Chapleau <sachaple@microsoft.com> * [Peek] Update some installer build steps + assets update (#22683) * Fix settings & peek.ui.wpf * Add back missing icon * Add missing files and actions to installer * Keep window open if the selected file in explorer is different (only works for single file selection) * Undo last * [Peek] Add copy keyboard accelerator (#22647) * add copy keyboard accelerator * Fix comments Co-authored-by: Samuel Chapleau <sachaple@microsoft.com> * [Peek] add WV2 improvements (behavior and UX) (#22685) * [Peek] added logic to get max monitor size for opening WebView2 * Removed ununsed dependency property * Added workaround for cases where the web page would not finish navigating in a quick timing, for example google.com. * Remove window extensions from common and use nullable size argument instead Co-authored-by: Samuel Chapleau <sachaple@microsoft.com> * [Peek] Merge main, self-contained .NET and fix WebView2 user data dir issue (#22899) * Merge remote-tracking branch 'origin/main' into peek * Test sc * Set WebView2 user data dir * spellcheck * Fix comment * Move check if higher quality image is already loaded to the exact line where we change the Preview bitmap (#23083) * Fix opening Peek when FE window is set to full name path (#23082) * Move check for png thubmnail loading priority * Remove Peek.UI.WPF project * Remove duplicated method in powertoys setup * [Peek] Fix selecting files from the correct focused opened File Explorer tab & from Desktop (#23489) * Get file based on active tab handle instead of window title * Refactor code to get active tab * Getting all items from the shell API working again, except for desktop * Refactor and cleanup com & native code * Add back removed peek xaml assets in Product.wxs * Remove some dependencies that do not seem necessary in Product.wxs * [Peek] Small images (#23554) * change stretch value * compare with actual window size * consider scaling factor * set max size * clean up * clean up * clean up previewers * scaling factor in bitmap previewer * max image size property * [Peek]Handle errors for HEIC/HEIF and fall back to default previewer if there is no thumbnail (#22684) * Handle errors when getting filesize by falling back to default previewer * Bringing back other file types that are fixed with these code changes --------- Co-authored-by: Samuel Chapleau <sachaple@microsoft.com> * [Peek] Add unsupported file icon fallback (#23735) * Refactor icon retrieval, refactor hbitmap to bitmap conversion, add icon fallback * Add svg to assets in installer * [Peek] Refactoring of file system models, removal of PngPreviewer, retrieving of folder size via Scripting com reference and other fixes (#23955) * Refactor icon retrieval, refactor hbitmap to bitmap conversion, add icon fallback * Add svg to assets in installer * - Refactor File class into IFileSystemItem, FileItem & FolderItem - Display size for folders using Scripting namespace - Remove default app buttons for files or folders not supporting it * Add better content type via storage apis * Add check for storagefile in PngPreviewer * Fix png stretching * Remove png previewer * Rename ThumbnailOptions.None to ThumbnailOptions.ResizeToFit * [Peek] Removed monitor percentage evaluation for the UnsupportedFilePreview control (#24002) * Remove settings for percentage of windows and keep default min size. * Fix margin on unsupported control * Use nullable Size for image size & open file on background thread (#24004) * [Peek] SVG support (#24237) * svg previewer * svg size * set scaling factor * set image size * changed image source type * non nullable image size * notify svg previewer changed * uncomment * rename BitmapPreviewer * move svg support * remove svg previewer * [Peek] Implementation of a performant and reliable Neighboring Files Query (#24943) * Use IShellItemArray as the backing array of item * Finalize and cleanup NFQ implementation * Cleanup remainder of the code * Remove unused using * [Peek] Pin the window position (#24927) * [Peek] Telemetry and logging (#25231) * text preview * scrolling * changed size * webview2 preview * common preview project * previewpane: use common project * peek: use common * previewpane: moved md * peek: md * previewpane: clean up * clean up * moved monaco files * moved formatters * rename * moved common monaco helper * dev files support * installer * removed versions * warnings: culture info * warnings: names * clean up * warnings: dispose * warnings: default values * warnings * warnings: charset * warnings: exceptions * suppress warning * installer: added peek * changed peek guid * monaco folders * peek deps * peek files * peek resources * removed additional monaco folder * set host name * Update installer * hardcode monaco path * leave single webview control * moved path to common * project * more meaningful todos * moved temp folder cleanup * todo * extension check * spell: monaco * spellcheck * spellcheck * fix id * fix spelling * key to spelling * id fix * Fix monaco resolution at install time * Fix user install. Add needed files * installer: remove peek localization files. It's a WinUI app * installer:fix signing * removed unused * settings: flyout enable/disable for Peek * simplify string * property changed handle * [Peek][Settings] Peek OOBE page (#25895) * [Peek] GPO (#25918) * Add Native methods file to exception * Fix merge issue on solution file * Adjust spellcheck * Remove boilerplate code * Add module interface telemetry * Remove change to README.md * Add entry to README * Clean up some non-changes * Fix order of Peek in Settings menu * [Settings] Make peek descriptions more descriptive --------- Co-authored-by: Michael Salmon <miksalmon@users.noreply.github.com> Co-authored-by: Michael Salmon 🐟 <michaelpsalmon@outlook.com> Co-authored-by: Alireza Ebadi Ghajari <alirezae@microsoft.com> Co-authored-by: Jessie Su <Jessie.Su@microsoft.com> Co-authored-by: sujessie <102062556+sujessie@users.noreply.github.com> Co-authored-by: Daniel Chau <d.chau@alumni.ubc.ca> Co-authored-by: Daniel Chau <dancha@microsoft.com> Co-authored-by: jth-ms <73617023+jth-ms@users.noreply.github.com> Co-authored-by: Robson <rp.pontin@gmail.com> Co-authored-by: estebanm123 <49930791+estebanm123@users.noreply.github.com> Co-authored-by: Esteban Margaron <emargaron@microsoft.com> Co-authored-by: Yawen Hou <Sytta@users.noreply.github.com> Co-authored-by: Jojo Zhou <yizzho@microsoft.com> Co-authored-by: Yawen Hou <yawenhou@microsoft.com> Co-authored-by: Jojo Zhou <39350350+Joanna-Zhou@users.noreply.github.com> Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Co-authored-by: Seraphima Zykova <zykovas91@gmail.com> Co-authored-by: Stefan Markovic <stefan@janeasystems.com> Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
141 lines
4.4 KiB
HTML
141 lines
4.4 KiB
HTML
<!doctype HTML>
|
|
<html>
|
|
<head>
|
|
<script>
|
|
// Set variables
|
|
|
|
// Get URL parameters:
|
|
// `code` contains the code of the file in base64 encoded
|
|
// `theme` can be "light" or "dark"
|
|
// `lang` is the language of the file
|
|
// `wrap` if the editor is wrapping or not
|
|
|
|
var theme = ("[[PT_THEME]]" == "dark") ? "vs-dark" : "vs";
|
|
var lang = "[[PT_LANG]]";
|
|
var wrap = ([[PT_WRAP]] == 1) ? true : false;
|
|
|
|
var base64code = "[[PT_CODE]]";
|
|
|
|
// Code taken from https://stackoverflow.com/a/30106551/14774889
|
|
var code = decodeURIComponent(atob(base64code).split('').map(function(c) {
|
|
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
}).join(''));
|
|
</script>
|
|
<!-- Set browser to Edge-->
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<!-- Set charset -->
|
|
<meta charset="utf-8" />
|
|
<!-- Title (normally not displayed)-->
|
|
<title>Previewer for developer Files</title>
|
|
<style>
|
|
/* Fits content to window size */
|
|
html, body{
|
|
padding:0;
|
|
}
|
|
#container,.monaco-editor {
|
|
position:fixed;
|
|
height:100%;
|
|
left:0;
|
|
top:0;
|
|
right:0;
|
|
bottom:0;
|
|
}
|
|
.overflowingContentWidgets{
|
|
/*Hides alert box */
|
|
display:none!important
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body oncontextmenu="onContextMenu()">
|
|
<!-- Container for the editor -->
|
|
<div id="container"></div>
|
|
<!-- Script -->
|
|
<script src="http://[[PT_URL]]/monacoSRC/min/vs/loader.js"></script>
|
|
<script src="http://[[PT_URL]]/monacoSpecialLanguages.js" type="module"></script>
|
|
<script type="module">
|
|
var editor;
|
|
import { registerAdditionalLanguages } from "http://[[PT_URL]]/monacoSpecialLanguages.js"
|
|
require.config({ paths: { vs: 'http://[[PT_URL]]/monacoSRC/min/vs' } });
|
|
require(['vs/editor/editor.main'], async function () {
|
|
await registerAdditionalLanguages(monaco)
|
|
// Creates the editor
|
|
// For all parameters: https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandaloneeditorconstructionoptions.html
|
|
editor = monaco.editor.create(document.getElementById('container'), {
|
|
value: code, // Sets content of the editor
|
|
language: lang, // Sets language fof the code
|
|
readOnly: true, // Sets to readonly
|
|
theme: theme, // Sets editor theme
|
|
minimap: {enabled: false}, // Disables minimap
|
|
lineNumbersMinChars: "3", //Width of the line numbers
|
|
scrollbar: {
|
|
// Deactivate shadows
|
|
shadows: false,
|
|
|
|
// Render scrollbar automatically
|
|
vertical: 'auto',
|
|
horizontal: 'auto',
|
|
|
|
},
|
|
wordWrap: (wrap?"on":"off") // Word wraps
|
|
});
|
|
window.onresize = function (){
|
|
editor.layout();
|
|
};
|
|
|
|
// Add switch wrap button to context menu
|
|
editor.addAction({
|
|
id: 'text-wrap',
|
|
|
|
label: 'Toggle text wrapping',
|
|
|
|
// A precondition for this action.
|
|
precondition: null,
|
|
|
|
// A rule to evaluate on top of the precondition in order to dispatch the keybindings.
|
|
keybindingContext: null,
|
|
|
|
contextMenuGroupId: 'navigation',
|
|
|
|
contextMenuOrder: 1.5,
|
|
|
|
// Method that will be executed when the action is triggered.
|
|
// @param editor The editor instance is passed in as a convenience
|
|
run: function (ed) {
|
|
if(wrap){
|
|
editor.updateOptions({ wordWrap: "off" })
|
|
}else{
|
|
editor.updateOptions({ wordWrap: "on" })
|
|
}
|
|
wrap = !wrap;
|
|
}
|
|
});
|
|
|
|
onContextMenu();
|
|
});
|
|
|
|
function onContextMenu(){
|
|
// Hide context menu items
|
|
// Code modified from https://stackoverflow.com/questions/48745208/disable-cut-and-copy-in-context-menu-in-monaco-editor/65413517#65413517
|
|
let menus = require('vs/platform/actions/common/actions').MenuRegistry._menuItems
|
|
let contextMenuEntry = [...menus].find(entry => entry[0]._debugName == "EditorContext")
|
|
let contextMenuLinks = contextMenuEntry[1]
|
|
|
|
let removableIds = ['editor.action.clipboardCutAction', 'editor.action.formatDocument', 'editor.action.formatSelection', 'editor.action.quickCommand', 'editor.action.quickOutline', 'editor.action.refactor', 'editor.action.sourceAction', 'editor.action.rename', undefined, 'editor.action.revealDefinition', 'editor.action.revealDeclaration', 'editor.action.goToTypeDefinition', 'editor.action.goToImplementation', 'editor.action.goToReferences', 'editor.action.changeAll']
|
|
|
|
let removeById = (list, ids) => {
|
|
let node = list._first
|
|
do {
|
|
let shouldRemove = ids.includes(node.element?.command?.id)
|
|
if (shouldRemove) { list._remove(node) }
|
|
} while ((node = node.next))
|
|
}
|
|
|
|
removeById(contextMenuLinks, removableIds)
|
|
}
|
|
</script>
|
|
|
|
<!-- Context menu-->
|
|
</div>
|
|
</body>
|
|
</html> |