mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-24 04:00:02 +01:00
* Added project template for common library * Added reference to stylecop.json * Fixed xml documetation file path for common project * Added reference to stylecop.json * Added COM interface interpolations to C# * Changed namespace to Common * Added xml doc to com interfaces * Removed AnyCPU configuration from solution file * Added Preview Hander and form User Control Implementation * Fix stylecop warnings * Added test control and handler * Added Xaml description for preview handler * Added Xml documenatation * Updated the control to form * Added registration and unregistration logic for the handler * Moved the files in separate folder and fix PR comments * updated the name of previewhandler class to base class * Added the DoPreview to PreviewHandlerControl Interface * Modified the Dopreview and Unload as virtual method * Uncommented the DocumentText to help bug repro * HTML Parsing Extension for preview pane markdown renderer (#1108) * Added Extension for html post processing * Added unit test poroject for preview pane * Added pipline test and base test function * Added Tests for extension * Added tests for url slashes * Added tests for url and figure caption * Markdown preview pane (#1128) * Added Extension for html post processing * Added unit test poroject for preview pane * Added pipline test and base test function * Added Tests for extension * Added handler and control for markdown * Tests added * Locally working version for markdown * Working image relative url's in markdown * Added CSS to preview display * Updates CSS for code block * Removed html file write comment in markdown control * Updated assembly version and web browser control test * Add Svg preview handler (#1129) * Added a new project for Svg preview handler * Added initial implementation of Svg Preview Handler * Fixed output path * Added Unit Test Project * Added StreamWrapper and Update Svg Control * Updated Svg Handler Guid * Removed migration backup folder * Removed Fluent Assertions NuGet * Added Comments for StreamWrapper * Removed the manual GC collect * Added unit tests for Svg preview Handler * Updated the xml doc for stream wrapper * User/lamotile/add_powerpreviewsettings (#1075) * Added powersettings to PowerToys Settings UI * added settings library * updated settings-web * updated project oncfiguration * updated project onfiguration * updated project .sln file * removed .etl file and added it to git-ignore * separated the PowerPreviewModule into split classes .cpp and .h * moved PowerPreviewModule implemnetations to .cpp file * fixed StringTable formatter * fixed spacing in resource.h * added m_ to member varibales * initiliaze m_isPreviewEnabled in the base class * removed duplication of objects by using pass by refference and std::move * made the getters const * updated naming convention * Split test calsses * Add const string * Replaced move with const string * Made attributes private * Made attributes private * removed unused constructor * Update resource.h formatted resource.h * Adding unit tests for preview handler common (#1156) * Changed the name of the Common library to PreviewHandlerCommon * Added unit tests project for PreviewHandlerCommon * Updated ComInterop accessor type * Added unit tests for PreviewHandlerbase * Added tests for file and stream based handler * Added unit tests for StreamWrapper * Added form handler unit tests * Added Unit tests for FormHandlerControl * Added file header * Add Powerpreview project * Add spacing in sln file * swapped string refferences (#1199) * added registry methods and enable/disable preview handlers (#1230) * added registry methods and enable/disable preview handlers * formatted .rc file. * formatted resource file * formatted .rc file. * formatted settings.cpp * formatted settings.h * formatted SVGPreviewSettingsClassTest.cpp * Formatted MarkDownPreviewSettingsClassTest.cpp * using wide strings * formatted settings.h * FileExplorerPreviewSettingsTest.cpp formatting * fixed typo and formatting * closing Registry and fixing typos * formmarted code using ctrl+k+d * fixed naming * fixed typo * changed if/else reverse order * Markdown preview pane (#1220) * Added rich text bar for information display * Added infobar * Added tests for extension and markdown control * Added xml docstring for markdown preview handler control * Updated assembly file for markdown preview pane * Updated removal of script tag without modifying CSS * Added info bar text string to resource file. * Removed error with infobar display on first rendering * Updated assembly version * Remove script and image element from Svg (#1231) * Added implementation to remove script and image tag * Added Unit tests for SvgPreviewHandlerHelper * Updated Unit tests for SvgPreviewControl * Moved the hardcoded string to resource file * Changed the LocalMachine to CurrentUser for preview handler registration * Added unit tests for multiple blocked elements tags * User/lamotile/update settings objects (#1263) * added registry methods and enable/disable preview handlers * formatted .rc file. * formatted resource file * formatted .rc file. * formatted settings.cpp * formatted settings.h * formatted SVGPreviewSettingsClassTest.cpp * Formatted MarkDownPreviewSettingsClassTest.cpp * using wide strings * formatted settings.h * FileExplorerPreviewSettingsTest.cpp formatting * fixed typo and formatting * closing Registry and fixing typos * formmarted code using ctrl+k+d * fixed naming * fixed typo * changed if/else reverse order * updated setiings_objects.cpp * removed changes on files that are not part of this PR * removed const ref on primative types * updated pass by ref semantic and removed pas by reff on primative types * fixed spaces in the commas * fixed spaces in brackets * Preview pane telemetry (#1299) * Added telemetry base class and markdown telemetry class * Updated docstring for telemetry event. * Added telemetry to markdown for error * Added try catch for markdown preview handler and display error bar * Updated markdown telemetry to make event names global variable * Updated parameter name to camel casing and telemetry event name naming. * Corrected assembbly version for svg renderer * Markdown Image files display (#1303) * Added telemetry base class and markdown telemetry class * Updated docstring for telemetry event. * Added telemetry to markdown for error * Added try catch for markdown preview handler and display error bar * Updated markdown telemetry to make event names global variable * Updated Markdown preview to display without vertical scrollbar and removed xml doc to html agility pack. * Updated parameter name to camel casing and telemetry event name naming. * Corrected assembbly version for svg renderer * Removed duplicate function * Add telemetry for Svg preview handler (#1314) * Added telemetry events for Svg Preview Handler * Added unit test in case preview handler throws * Updated the Error event name * Remove the not required return statement * User/lamotile/add read me (#1332) * add readme * moved images * re-added images' * Fixed gramma * Update figure number refference * improve preview handler intergration (#1319) * improve preview handler intergration * Fixed typo * updated typo * updated enable() function * updated is enabled() * re-updated is enabled() * added this-> key word * (0.16) - Install preview handler with msix (#1339) * Removed the registration logic from preview handlers * Updated the output path * Added logic to shim the activation of .net assembly * Updated manifest file * Fix the allowedsilenttakeover filed in manifest * Updated the appxmanifest file * Added AllowSilentDefaultTakeOver in manifest * Fix returned error code by DllGetClassObject * Moved the CLSID to a common header file * Added info about where CLSID needs to be updated * Added a .reg file for the Keys added in registry.dat * Added comments for DllGetClassObject * Svg Preview Handler block external component (#1368) * Removed the registration logic from preview handlers * Updated the output path * Added logic to shim the activation of .net assembly * Updated manifest file * Fix the allowedsilenttakeover filed in manifest * Updated the appxmanifest file * Added AllowSilentDefaultTakeOver in manifest * Fix returned error code by DllGetClassObject * Moved the CLSID to a common header file * Added info about where CLSID needs to be updated * Added a .reg file for the Keys added in registry.dat * Added comments for DllGetClassObject * Extended WebBrowserSite for setting flags in DISPID_AMBIENT_DLCONTROL * Added XML Documenatation * Removed the logic for deleting image and script element from Svg * Updated Unit Tests * Updated typecast of uint * Forwarded calls to Type.InvokeMember * Resolve PR Comments * Adding MSI Installation for Preview Handler (#1436) * Updated wxs for including dll and registry keys for preview handlers * Changed the casing for registry key * Resolve PR Comments * Added comments for File element * Call GC on preview unloading (#1456) * Call GC collect on preview unloading * Added github issue link * Update Web browser control for Markdown Previewer (#1464) * Updated Webbrowser control * Updated Unit tests * Disabled Navigation for Svg Previewer * Fix power preview unit tests (#1508) * Decoupled registry interaction logic * Updated File explorer settings * Updated unit tests for PowerPreview Settings * Added Asserrtion for Scope of registry key * Updated the registry value to match with installation registry value * Sync master settings.cpp * Merge settings changes from PreviewHandlers * Remove newline changes added into in example_powertoy\trace.cpp * Chaned .net framework to 4.7.2 * Updated Csproj files to auto generate Assembly.info files * Updated msi installer to use version variable for preview handlers assembly * Removed the signing of Assembly and updated wxs to not include PublicKeyToken * Updated the Path in Packaginglayout.xml to modules from Gac and the registry hive binary * Regenerated updated JS and html file * Resolve PR Comments * Readded the wprp file Co-authored-by: Divyansh <divyan@microsoft.com> Co-authored-by: Divyansh <somm14divi@gmail.com> Co-authored-by: Lavius Motileng <58791731+laviusmotileng-ms@users.noreply.github.com>
181 lines
6.4 KiB
TypeScript
181 lines
6.4 KiB
TypeScript
import React from 'react';
|
|
import {Stack, Text, Link} from 'office-ui-fabric-react';
|
|
import {BoolToggleSettingsControl} from './BoolToggleSettingsControl';
|
|
import {StringTextSettingsControl} from './StringTextSettingsControl';
|
|
import {IntSpinnerSettingsControl} from './IntSpinnerSettingsControl';
|
|
import {ColorPickerSettingsControl} from './ColorPickerSettingsControl';
|
|
import {CustomActionSettingsControl} from './CustomActionSettingsControl';
|
|
import {HotkeySettingsControl} from './HotkeySettingsControl';
|
|
import {ChoiceGroupSettingsControl} from './ChoiceGroupSettingsControl';
|
|
import {DropdownSettingsControl} from './DropdownSettingsControl';
|
|
|
|
export class ModuleSettings extends React.Component <any, any> {
|
|
references: any;
|
|
parent_on_change: Function;
|
|
|
|
constructor(props: any) {
|
|
super(props);
|
|
this.references={};
|
|
this.parent_on_change = props.on_change;
|
|
this.state = {
|
|
settings_key: props.settings_key,
|
|
powertoy: props.powertoy,
|
|
}
|
|
}
|
|
|
|
shouldComponentUpdate(nextProps:any, nextState:any) {
|
|
// This component and its children manage their state.
|
|
// React only to state changes when forceUpdate is called by the App component.
|
|
return false;
|
|
}
|
|
|
|
componentWillReceiveProps(props: any) {
|
|
this.setState({ powertoy: props.powertoy })
|
|
}
|
|
|
|
public get_data(): any {
|
|
let properties : any = {};
|
|
Object.keys(this.references).forEach(key => {
|
|
properties[key]= this.references[key].get_value();
|
|
});
|
|
let result : any = {};
|
|
result[this.state.settings_key] = {
|
|
name: this.state.powertoy.name,
|
|
properties:properties
|
|
};
|
|
return {powertoys: result};
|
|
}
|
|
|
|
private call_custom_action(action_name: any, action_values: any) {
|
|
let result = {action: {
|
|
[this.state.settings_key]: {
|
|
action_name: action_name,
|
|
value: action_values.value
|
|
}
|
|
}};
|
|
(window as any).output_from_webview(JSON.stringify(result));
|
|
}
|
|
|
|
public render(): JSX.Element {
|
|
let power_toys_properties = this.state.powertoy.properties;
|
|
return (
|
|
<Stack tokens={{childrenGap:20}}>
|
|
<Stack>
|
|
<Text variant='large'>{this.state.powertoy.description}</Text>
|
|
{ this.state.powertoy.hasOwnProperty('overview_link') || this.state.powertoy.hasOwnProperty('video_link') ? <br/> : null }
|
|
{
|
|
this.state.powertoy.hasOwnProperty('overview_link')
|
|
?
|
|
<Stack horizontal tokens={{childrenGap:5}}>
|
|
<Link
|
|
styles = {{
|
|
root: {
|
|
alignSelf:'center'
|
|
}
|
|
}}
|
|
href={this.state.powertoy.overview_link}
|
|
target='_blank'
|
|
>Module overview</Link>
|
|
</Stack>
|
|
:
|
|
null
|
|
}
|
|
{
|
|
this.state.powertoy.hasOwnProperty('video_link')
|
|
?
|
|
<Stack horizontal tokens={{childrenGap:5}}>
|
|
<Link
|
|
styles = {{
|
|
root: {
|
|
alignSelf:'center'
|
|
}
|
|
}}
|
|
href={this.state.powertoy.video_link} target='_blank'>Video demo</Link>
|
|
</Stack>
|
|
:
|
|
null
|
|
}
|
|
</Stack>
|
|
{
|
|
Object.keys(power_toys_properties).
|
|
sort(function(a, b) {
|
|
return ( // Order powertoys settings
|
|
(power_toys_properties[a].order || 0) -
|
|
(power_toys_properties[b].order || 0)
|
|
)
|
|
}).
|
|
map((key) => {
|
|
switch(power_toys_properties[key].editor_type) {
|
|
case 'bool_toggle':
|
|
return <BoolToggleSettingsControl
|
|
setting={power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'string_text':
|
|
return <StringTextSettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'int_spinner':
|
|
return <IntSpinnerSettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'color_picker':
|
|
return <ColorPickerSettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'custom_action':
|
|
return <CustomActionSettingsControl
|
|
setting={power_toys_properties[key]}
|
|
action_name={key}
|
|
action_callback={(action_name: any, action_values:any) => {this.call_custom_action(action_name, action_values);} }
|
|
key={key}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'hotkey':
|
|
return <HotkeySettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'choice_group':
|
|
return <ChoiceGroupSettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'dropdown':
|
|
return <DropdownSettingsControl
|
|
setting = {power_toys_properties[key]}
|
|
key={key}
|
|
on_change={this.parent_on_change}
|
|
ref={(input) => {this.references[key]=input;}}
|
|
/>;
|
|
case 'header_large':
|
|
return <Text
|
|
variant='large'
|
|
className="SubHeader">{power_toys_properties[key].value}</Text>;
|
|
default:
|
|
return null;
|
|
}
|
|
})
|
|
}
|
|
{/* An empty span to always give 30px padding in Edge. */}
|
|
<span/>
|
|
</Stack>
|
|
)
|
|
}
|
|
}
|