Compare commits

..

4147 Commits

Author SHA1 Message Date
Alekhya
fdffe20c0b Display Drive detection warning only for multiple drives (#7589)
* indexer drive detection helper code to not show the warning for a single drive

* removed interface from the namespace due to stylecop

* removed interfac which no longer exists

* filter out only fixed drives in the system and ignore the removable drives

* changed text to not all files are indexed, from not all drives are idnexed

* add additional info in the comment
2020-10-29 10:38:15 -07:00
Clint Rutkas
e30393e18f Merge pull request #6900 from microsoft/dev/dedavis/GIFSpec
Functional Spec for Video GIF Capture
2020-10-29 10:22:18 -07:00
Deondre Davis
6726abd37e Updated priorities to focus on GIF then video 2020-10-29 09:54:35 -07:00
Deondre Davis
2174e97286 Fixed some typos 2020-10-29 09:39:06 -07:00
Deondre Davis
698d19cb51 Update requirements and added release milestones 2020-10-29 09:31:19 -07:00
Clint Rutkas
5ac30cec73 Merge pull request #7620 from microsoft/lego/hb_2939_20201028230559693
LEGO: Pull request from lego/hb_2939_20201028230559693 to master
2020-10-28 21:00:05 -07:00
Avneet Kaur
2e5b6df3a7 Removed Wox.CrashReporter folder since it is not being used anywhere (#7591) 2020-10-28 17:58:09 -07:00
Avneet Kaur
175e962c0c [fxcop] Wox.Plugin devdocs update (#7595)
* Updated devdocs - Moved Log.cs from Wox.Infrastructure to Wox.Plugin

* Updated path to Log.cs
2020-10-28 17:19:24 -07:00
csigs
70f78c3189 LEGO: check in for master to temporary branch. 2020-10-28 23:06:00 +00:00
Clint Rutkas
8f12973c84 Merge pull request #7612 from microsoft/lego/hb_2939_20201028172704848
LEGO: Pull request from lego/hb_2939_20201028172704848 to master
2020-10-28 13:50:11 -07:00
Clint Rutkas
5ca11f3eac Merge pull request #7592 from microsoft/lego/hb_2939_20201027230544851
LEGO: Pull request from lego/hb_2939_20201027230544851 to master
2020-10-28 13:49:41 -07:00
Clint Rutkas
b00e5008af Merge pull request #7609 from microsoft/lego/hb_2939_20201028145308375
LEGO: Pull request from lego/hb_2939_20201028145308375 to master
2020-10-28 12:50:33 -07:00
Clint Rutkas
b8069ce657 Merge branch 'master' into lego/hb_2939_20201027230544851 2020-10-28 12:47:53 -07:00
Clint Rutkas
965f3813b2 Merge pull request #7574 from microsoft/lego/hb_2939_20201027110546671
LEGO: Pull request from lego/hb_2939_20201027110546671 to master
2020-10-28 12:09:08 -07:00
Clint Rutkas
97a51fc2a9 Merge pull request #7546 from microsoft/lego/hb_2939_20201026110534010
LEGO: Pull request from lego/hb_2939_20201026110534010 to master
2020-10-28 12:08:31 -07:00
Alekhya
3a7fc33943 added a main landmark to all settings pages (#7568) 2020-10-28 11:10:08 -07:00
csigs
8a006d27ca LEGO: check in for master to temporary branch. 2020-10-28 17:27:07 +00:00
csigs
3f45a521a0 LEGO: check in for master to temporary branch. 2020-10-28 14:53:13 +00:00
csigs
b7bcd4484a LEGO: check in for master to temporary branch. 2020-10-27 23:05:45 +00:00
Clint Rutkas
f97ed9c340 Merge pull request #7561 from alekhyareddy28/settings_version_accessibiltiy
Add help text to be read out before reading out the version number
2020-10-27 11:35:26 -07:00
Clint Rutkas
f03553e107 Merge pull request #7577 from ka1bi4/doc-fix-misspellings
Doc fix misspellings
2020-10-27 11:24:43 -07:00
Alekhya Reddy
4394491292 resolved merge conflicts and validated that it works as expected 2020-10-27 09:39:22 -07:00
Clint Rutkas
fe32e10dc1 Merge pull request #7565 from microsoft/lego/hb_2939_20201026230523649
LEGO: Pull request from lego/hb_2939_20201026230523649 to master
2020-10-27 09:21:34 -07:00
Arjun Balgovind
03ea90dced Select all text in Target App textbox on getting focus (#7566) 2020-10-27 09:14:00 -07:00
Arjun Balgovind
d7912e1e12 Added tooltips for Add and Delete buttons (#7564) 2020-10-27 09:13:39 -07:00
Clint Rutkas
ce464f4816 Merge pull request #7530 from microsoft/users/niels9001/settings-incorrecttheminglabels
[Settings] Fixing inconsistent theme/app mode naming
2020-10-27 08:55:42 -07:00
Roman Bug
a019ebb15e Update debugging.md 2020-10-27 17:50:01 +03:00
Roman Bug
674e24fd58 Update program.md 2020-10-27 17:48:58 +03:00
Roman Bug
eccc5b204c Update program.md 2020-10-27 17:48:34 +03:00
Niels Laute
c99fbe54bd Fix conflict 2020-10-27 15:48:15 +01:00
Roman Bug
71ed538285 Update README.md 2020-10-27 15:48:04 +03:00
Roman Bug
8eab2ef27c Update xaml-island-tweaks.md 2020-10-27 15:46:01 +03:00
Roman Bug
93da059454 Update viewmodels.md 2020-10-27 15:44:35 +03:00
Roman Bug
162ff4ab15 Update compatibility-legacy-settings.md 2020-10-27 15:43:34 +03:00
Roman Bug
07e600907b Update uri.md 2020-10-27 15:42:34 +03:00
Roman Bug
2c2a033e18 Update program.md 2020-10-27 15:41:58 +03:00
Roman Bug
ccd61c2d78 Update indexer.md 2020-10-27 15:40:34 +03:00
Roman Bug
877bd0954b Update debugging.md 2020-10-27 15:38:40 +03:00
Roman Bug
810ee0e290 Update keyboardmanagerui.md 2020-10-27 15:36:19 +03:00
Roman Bug
c00b4ba6ac Update runner.md 2020-10-27 15:32:49 +03:00
Roman Bug
23b854dedc Update unofficalInstallMethods.md 2020-10-27 15:32:12 +03:00
Roman Bug
d10d7d06fb Update README.md 2020-10-27 15:27:30 +03:00
Roman Bug
b4102eabe5 Update README.md 2020-10-27 15:25:45 +03:00
Niels Laute
3bd6e787ab Merge branch 'master' into users/niels9001/settings-incorrecttheminglabels 2020-10-27 12:11:16 +01:00
csigs
1758449b51 LEGO: check in for master to temporary branch. 2020-10-27 11:05:48 +00:00
Niels Laute
9c3c5725af Merge pull request #7261 from microsoft/users/niels9001/settings-accesbilitynarratorsupportforshortcutcontrol
[Settings] Added improved narrator support for custom shortcut control
2020-10-27 12:00:04 +01:00
Avneet Kaur
931fd66f66 [fxcop] Fixes for Wox.Plugin (3of3) - enable FxCop Analyzer (#7465)
* Enabled FxCopAnalyzer for Wox.Plugin

* Fixed build errors - CA1824: Mark assemblies with NeutralResourcesLanguageAttribute
2020-10-26 18:18:21 -07:00
Divyansh Srivastava
d2435262ec handle COM error to fetch description (#7563) 2020-10-26 16:37:27 -07:00
Luthfi Mawarid
cbb4307f6d [fxcop] Microsoft.Plugin.Uri.UnitTests (#7562)
* Enable FxCop for Microsoft.Plugin.Uri.UnitTests

* Fix indentation
2020-10-26 16:15:05 -07:00
csigs
46f5bfbe22 LEGO: check in for master to temporary branch. 2020-10-26 23:05:24 +00:00
Avneet Kaur
ca1e5d111a [fxcop] Fixes for Wox.Plugin (1of3) (#7457)
* Added CultureInfo (CA1307: Specify StringComparison for clarity / CA1304: Specify CultureInfo)

* Check arguments and throw ArgumentNullException (CA1062: Validate arguments of public methods)

* Changed url parameter from string to System.Uri and added null checks (CA1054: URI parameters should not be strings)

* Rethrow exception without specifying the exception explicitly (CA2200: Rethrow to preserve stack details)

* Changed from Collection property to methods for PluginMetadata::ActionKeywords (CA2227: Collection properties should be read only)

* Changed from Collection property to methods for Result::GetTitleHighlightData (CA2227: Collection properties should be read only)

* Made Collection property read-only and added parameter in constructor for Result::SubTitleHighlightData (CA2227: Collection properties should be read only)

* Made Collection property read only and added parameter in constructor for ResultUpdatedEventArgs::Results (CA2227: Collection properties should be read only)

* CA1507: Use nameof in place of string

* Removed initialization for ThemeManager::_disposed (CA1805: Do not initialize unnecessarily)

* Changed Query::Terms array property to ReadOnlyCollection and added private set (CA1819: Properties should not return arrays)

* CA1060: Move P/Invokes to NativeMethods class

* CA1806: Do not ignore method results

* CA2101: Specify marshaling for P/Invoke string arguments

* Removed unnecessary empty interface IFeatures (CA1040: Avoid empty interfaces)

- Removed IFeatures interface and references
- Renamed IFeatures.cs to IContextMenu.cs according to guidelines

* Added comments for CultureInfo (CA1307: Specify StringComparison for clarity / CA1304: Specify CultureInfo)

* Added localization for Wox.Plugin and localized strings in FilesFolders.cs
2020-10-26 15:14:33 -07:00
Alekhya Reddy
c76c4f026e Ensure the keyword version is read out before reading out the version number 2020-10-26 14:45:04 -07:00
Clint Rutkas
3906896947 Merge pull request #7537 from microsoft/user/martinchrzan/ColorPickerShowColorWhenFormatChanged
Update string color represention when color format changed, but mouse…
2020-10-26 11:29:01 -07:00
Clint Rutkas
825e7a7533 [Settings] FZ MDL2 icon fix (#7517)
* Fixed fancy zones MDL2 icon

* Updated FZ icon
2020-10-26 11:14:02 -07:00
Alekhya
e411e6dc75 Catch Exceptions when settings.json is corrupted (#7553)
* added a json exception catch statement as a fail safe to create a fresh configuration file when settings is corrupted

* change formatting

* add issue link

* add extra info in the comment
2020-10-26 11:13:53 -07:00
Luthfi Mawarid
39ebd82e20 [fxcop] Settings UI runner (#7485)
* Enable FxCop for Microsoft.PowerToys.Settings.UI.Runner

* Log exceptions in WindowsXamlHost_ChildChanged

* Add Debugger.Break in debug mode

* Move Debugger.Break into Logger class
2020-10-26 11:09:18 -07:00
Arjun Balgovind
ec22bc40bc Switch focus to last Image Size ListViewItem on adding new size (#7505) 2020-10-26 11:06:35 -07:00
yuyoyuppe
129342edff FZ: format FancyZones.cpp 2020-10-26 20:21:04 +03:00
yuyoyuppe
8ca0c35242 FZ: fix nullptr crash 2020-10-26 20:21:04 +03:00
Arjun Balgovind
e5f2810212 Add dev docs for Localization (#7481)
* Added localization doc

* Update

* Added details for C++ projects

* Added table of contents

* Added more info about C++ and C# loc

* Update localization.md

* Update localization.md

* Update localization.md
2020-10-26 08:56:34 -07:00
csigs
48292fb189 LEGO: check in for master to temporary branch. 2020-10-26 11:05:34 +00:00
stefansjfw
e6a5b589ff [FancyZones] Align zone numbers between Editor and FancyZonesLib (#7387)
* Align zone numbers between Editor and FancyZonesLib
Use zoneId on win+arrow

* Update tests

* Fix crash

* ZoneId starts from 0

* Define ZonesMap type

IFACEMETHOD_ macro is having trouble processing
std::map template when expanding, so return type needs
to be predefined

* Address PR comment

* Address more PR comments

* Handle .at
2020-10-26 09:07:11 +01:00
Aaron Junker
8ef91a528f Fixed #7524 (#7525) 2020-10-25 23:39:04 +01:00
Enrico Giordani
8ea09e0c95 [Keyboard Manager] new icon (#7492) 2020-10-25 22:54:48 +01:00
Martin Chrzan
854828e4ca Update string color represention when color format changed, but mouse is hovering on top of the same color 2020-10-25 18:00:59 +01:00
Niels Laute
bea1cf92d8 Updated FZ icon 2020-10-25 15:21:14 +01:00
Niels Laute
fa37d53cd9 Added Windows color settings link 2020-10-25 14:47:47 +01:00
Niels Laute
344013d860 Updated labels 2020-10-25 14:37:43 +01:00
Niels Laute
61a2e5297f Fix resource issue 2020-10-24 16:35:10 +02:00
Niels Laute
93627d2bbe Merge branch 'master' into users/niels9001/settings-accesbilitynarratorsupportforshortcutcontrol 2020-10-24 15:45:36 +02:00
csigs
2ef451aa4a LEGO: check in for master to temporary branch. (#7508) 2020-10-24 06:36:20 -07:00
Niels Laute
36b628df48 Fixed fancy zones MDL2 icon 2020-10-24 15:06:12 +02:00
Davide Giacometti
146e7866a6 [PT Run] Option for override theme (#7355)
* option for override PT Run theme

* fix startup theme detection and moved strings in resources

* xaml fixed

* fix title spacing

* launcher theme fix

moved theme enum
removed settings direct access

* missing files

* theme manager dispose removed

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-10-23 15:05:07 -07:00
Alekhya
6424667396 Define Heading levels in Settings App (#7496)
* Add shell page headings

* add headings for all the PTsettings

* add heading level 1 for the heading of each page

* Add heading level to the style instead of redifining it multiple times

* revert adding level2 for each control

* add heading level for run as admin because it does not follow the group style and rather the default style
2020-10-23 13:35:57 -07:00
Avneet Kaur
beecdc8d79 [fxcop] Fixes for Wox.Plugin (2of3) - Moved logger interface to Wox.Plugin (#7464)
* Moved Logger/Log.cs from Wox.Infrastructure to Wox.Plugin

- Installed Logger dependency in Wox.Plugin: NLog.Extensions.Logging
- Moved file Log.cs from Wox.Infrastructure/Logger/ to Wox.Plugin/Logger
- Moved file Constant.cs from Wox.Infrastructure to Wox.Plugin: This file was moved since Log.cs depends on this class
    - Copied Wox.Infrastructure.Helper.NonNull to Wox.Plugin.Constant since Constant.cs depends on this method
- Replaced all "using Wox.Infrastructure.Logger" to "using Wox.Plugin.Logger" in all files as needed
- Replaced Wox.Infrastructure.Constant to Wox.Plugin.Constant in all files as needed

* Removed Nlog.Extensions.Logging from Wox.Infrastructure

* Added logging and suppressed general exceptions (CA1031: Do not catch general exception types)

* Resolved fxcop errors introduced by newly added Log.cs

- CA1307: Specify StringComparison for clarity
- CA2000: Dispose objects before losing scope
- CA1062: Validate arguments of public methods

* Replaced Wox.Infrastructure.Logger with Wox.Plugin.Logger
2020-10-23 13:06:22 -07:00
Arjun Balgovind
6ae8d6749a Removed AnyCPU config (#7502)
Forcing this to merge a s build has completed successfully, and pr is approved.
2020-10-23 11:56:57 -07:00
Divyansh Srivastava
ba07b52cc2 Remove unused pinyin code (#7455)
* Remove pinyin

* Remove pinyin mappings and files

* Remove pinyin files from MSI
2020-10-23 10:34:24 -07:00
Niels Laute
87128ceee6 Merge branch 'master' into users/niels9001/settings-accesbilitynarratorsupportforshortcutcontrol 2020-10-23 16:16:09 +02:00
Niels Laute
773c57e609 File format limitations are now announced by Narrator 2020-10-23 16:10:16 +02:00
Niels Laute
7c42162618 Updated string 2020-10-23 15:57:34 +02:00
Niels Laute
466a0015e9 Fixed tooltip call out with narrator 2020-10-23 15:44:31 +02:00
Arjun Balgovind
859e9f8b04 Added ColorPicker unit tests to CI and moved the unit test project (#7484)
* Added ColorPicker unit tests to CI and moved the unit test project

* Updated output path
2020-10-22 19:26:48 -07:00
Luthfi Mawarid
c5bf549dde Update docs to reflect Settings.UI.Library project name change (#7458) 2020-10-22 19:25:24 -07:00
Arjun Balgovind
3f5810bfdb [Fix Build farm]Fix ImageResizer Loc and change C# language version in ColorPicker to 8.0 (#7483)
* Removed duplicate resx addition

* Changed version to 8.0
2020-10-22 17:28:25 -07:00
Clint Rutkas
5b86885cd1 Settings accessibility issues with clipping on large text (#7459)
* Fix issues found in 7068

* fixed a few more
2020-10-22 14:37:10 -07:00
Luthfi Mawarid
f92bd6ffd3 [fxcop] Settings UI library (part 4) - project/namespace renames (#7403)
* Rename Interface to Interfaces in namespaces

* Rename Lib to Library in namespaces

* Rename project and directory and enable fxcop

* Add CA2213 suppression

* Minor fixes
2020-10-22 09:45:48 -07:00
Davide Giacometti
aa0947061a [Image Resizer] Upgraded to .NET Core 3.1 (#7317)
* project converted to sdk style

* image resizer core31

* image resizer test core31

* project and setup fixes
2020-10-22 09:26:46 -07:00
Clint Rutkas
e2c94b592f Upgrade mahapps to 2.3 (#7466) 2020-10-22 08:30:18 -07:00
Mehmet Murat Akburak
31799cd019 Widen text labels (#7475) 2020-10-22 18:25:13 +03:00
yuyoyuppe
ec18e31ff1 settings: use actionable toast notifications for file explorer modules warning 2020-10-22 18:24:54 +03:00
yuyoyuppe
5e772340bc updating: remove previous progress toasts
toast notifications:
- add method for removing existing toasts
- add method for updating existing toast contents/title
- refactoring
2020-10-22 16:36:20 +03:00
yuyoyuppe
5593f81242 checkout git submodules as PowerToys.sln prebuild action 2020-10-22 16:14:37 +03:00
Mehmet Murat Akburak
3d0254bdeb [PowerRename] Fix UI for Localized Strings (#7467)
* Put the options in two columns. Rearrange options.

* Expand "Search for" label
2020-10-22 13:09:59 +03:00
yuyoyuppe
bc103ce25c update notice for spdlog and cxxotps 2020-10-22 12:52:04 +03:00
Avneet Kaur
cfe9e2328f FxCopAnalyzer fixes for Wox.Test (#7312)
* Added InvarientCulture info (CA1305: Specify IFormatProvider)

* Removed underscore from method names (CA1707: Identifiers should not contain underscores)

* Marked members as static (CA1822: Mark members as static)

* Removed initialization for DummyTestClass::IsFunctionCalled (CA1805: Do not initialize unnecessarily)

* Replaced Count with Any (CA1827: Do not use Count/LongCount when Any can be used)

* Changed WoxTest::DummyTestClass to private (CA1034: Nested types should not be visible)

* Suppressed warnings for uninstantiated internal classes used as TestFixtures (CA1812: Avoid uninstantiated internal classes)

* Enabled FxCopAnalyzer for Wox.Test

* Added suppression message for CA1812 in GlobalSuppressions.cs and removed inline supression messages (CA1812: Avoid uninstantiated internal classes)

* Changed InvariantCulture to Ordinal where appropriate

* Addressing comments: Updated justification for CA1812 in GlobalSuppressions.cs (Avoid uninstantiated internal classes)
2020-10-21 20:13:12 -07:00
Alekhya
dd2627dbbc Fix exceptions and incorrect results within the calculator plugin (#7438)
* remove functions which mages cannot interpret and add in functions which mages can

* set validResult when the result is explicitly created to differentiate it form an empty CalculateResult

* Add condition to check that the input is not ending with a binary operation

* add tests for all the cases

* use valid result while calculating hash as well

* add test for e is valid within regex

* removed i from regex

* remove valid result to use decimal? instead

* remove duplicate rand and exp
2020-10-21 16:19:37 -07:00
Luthfi Mawarid
86d77103e9 [fxcop] Settings UI library (part 3) - exception handling (#7385)
* Log general exceptions caught in Settings

* Rethrow argument-related exceptions in debug mode

* Log ColorPicker settings errors into Settings Logs
2020-10-21 12:32:53 -07:00
Roy
29ed39c7ae Enable starting apps with command line arguments when run as admin is selected (#6923)
* Enable Run as Admin Arguments

* Use a seperate function for both methods which were generating ProcessStartInfo fixes missing LnkResolvedPath missing in contextmenu (E.g. Shortcuts / PWA's).

* Update tests

* Move ProgramArguments to Result class

Co-authored-by: Roy <royvou@hotmailcom>
2020-10-21 11:49:55 -07:00
vldmr11080
8d9e85f4f5 [FancyZones] Add AutomationProperties.Name to focusable elements (#7372)
* Add AutomationProperties.Name to focusable elements

* Add AutomationProperties.Name to focusable elements

* Use AutomationProperties.LabeledBy with buttons / text boxes

* Address PR comments
2020-10-21 20:11:32 +02:00
Tobias Sekan
73df7b5deb [ColorPicker] CMYK, HSV and HSL color format (#6975)
* Add HSL and HSV color formats + cleanup + docu

* Fix build problem (lang version)

* Add CYMK color + replace float with double values

* ups - fix cmyk text format

* fix wrong settings text + doc typo fix

* Address feedback

* Address feedback + fix to small window size

* adress feedback + more cleanup

* typo fix

* Avoid possible division by zero + unit test

* Address feedback - move all represenation to own helper class + UnitTest

* Address feedback -> switch to mstest framework
2020-10-21 11:09:30 -07:00
Arjun Balgovind
cd8c9c5375 Tweaked KBM comment, removed redundant assignment, and avoid sending key up for one case when not necessary (#7315)
* Changed one case to release key only if it is pressed, tweaked a comment

* Remove redundant assignment
2020-10-21 10:24:43 -07:00
Arjun Balgovind
147b78ffce Dev docs for Keyboard Manager (#7340)
* Create kbm md file

* Documented KBM main module (without links)

* Completed docs for backend except links

* Added docs for UI and created doc file for KBM Common

* Added docs for KBM common and for tests

* Add table of contents for all files

* Started updating links

* Added some more links

* Updated links

* testing link

* Resolve all links on keyboardmanager.md

* Added links in KBM Common

* Added comments for keyboardeventhandlers

* Added links for KBM-UI

* Added mention of shortcut to key

* Add section link for settings update code.

* Include more information on updating remap tables
2020-10-21 08:30:40 -07:00
yuyoyuppe
9c341cc9bc bootstrapper: treat invalid flags as fatal errors 2020-10-21 15:11:54 +03:00
yuyoyuppe
f506980e4d previewpane: use RAII for FileExplorerPreviewSettings classes to avoid memory leaks 2020-10-21 15:10:56 +03:00
yuyoyuppe
6c62be1818 bootstrapper: add cmd argument for custom log location 2020-10-21 12:33:12 +03:00
yuyoyuppe
e05146acf9 update Microsoft.Windows.ImplementationLibrary nuget package 2020-10-21 12:31:22 +03:00
Mykhailo Pylyp
eaec26a012 Fix dropdown popup narrator bug (#7422) 2020-10-21 11:14:30 +03:00
csigs
3801ad3030 LEGO: check in for master to temporary branch. (#7436) 2020-10-20 21:17:06 -07:00
Arjun Balgovind
4da4673e24 [KBM] Ignore IME keys while checking keyboard state for Shortcut Remaps (#7386)
* Ignore IME keys while checking keyboard state for Shortcut Remaps

* Add bool check

* Update Shortcut.cpp
2020-10-20 16:14:48 -07:00
Divyansh Srivastava
466ed10f3d Fix autocomplete text issue on query change (#7392)
* Fix autocomplete text issue on query change

* Update from invariant to ordinal case for exact byte to byte matching

* Add tests for checking when autocomplete should be empty
2020-10-20 14:53:32 -07:00
Alekhya
0314b570cd Dev Documentation of PowerToys Run (#7333)
* Architecture and  (#7267)

* Added debugging steps for PT Run

* Updated architecture markdown for launcher

* updated project architecture markdown for launcher

* Added telemetry docs for launcher

* Added the basic folder structure and files

* Added a basic overview of all common functionalities of the plugins

* Added information about the functioning of the calculator plugin

* update score section of overview

* added information about the uri plugin

* added info about the indexer plugin

* Added the documentation for the indexer plugin

* Added information about the program plugin

* Added info about the shell plugin

* updated some plugin info and added information about the ww plugin

* documenting the folder plugin

* updated window walker docs

* dev docs for the folder plugin

* added images to each of the plugins

* Added link to pt run documents

* fix typos and some minor corrections

* Add table of contents for pt run dev docs

* Fix image path and project link for Wox.plugin

Co-authored-by: Divyansh Srivastava <somm14divi@gmail.com>
2020-10-20 14:28:23 -07:00
Alekhya
18eb6b4ffd Dev documentation of SettingsV2 (#7335)
* created a folder for settings and added an overview, hotkey information

* basic structure for communication between settings and runner

* Added information about the IPC communication between settings and runner

* Added information about the communication between the settings process and modules

* Added details on backward compatibility

* brief overview on settings utils

* added an overview of the viewmodels and anomalies

* minor modifications

* Settings v2 dev docs (#7334)

* Added settings architecture and tech stack dev docs

* Added telemetry and updated architecture docs for settings v2

* Fix image link in ui_architecture markdown

* Added table of contents for settings v2

* Correct file path for ui architecture image

* nit fix in table of contents heading

* Add doc for xaml island tweaks

Co-authored-by: Divyansh Srivastava <somm14divi@gmail.com>
2020-10-20 14:28:06 -07:00
Arjun Balgovind
9a9424a975 Add null check for WindowsXamlHost_ChildChanged handler (#7426) 2020-10-20 12:50:04 -07:00
Arjun Balgovind
51d6482ec2 [Localization] Fix Settings resw path on the build farm (#7383)
* Added loc debugging statements

* Added more debug statements

* Check path

* Fixed input path for Settings resources on pipeline
2020-10-20 11:58:32 -07:00
csigs
334e612bce LEGO: check in for master to temporary branch. (#7411) 2020-10-20 11:22:47 -07:00
Alekhya
14e74376d9 Use task delay instead of thread sleep (#7401)
* Use task delay instead of thread.sleep to free up the blocked thread

* fix formatting
2020-10-20 11:13:53 -07:00
Avneet Kaur
58cf165eb4 Enabled FxCopAnalyzers for Wox.Core.csproj (#7212) 2020-10-20 10:36:18 -07:00
yuyoyuppe
7c07bc2717 interop: fix possible crash in keyboardhook
also treat warnings as errors
2020-10-20 17:52:21 +03:00
yuyoyuppe
83872046fa autoupdating: ignore local builds 2020-10-20 17:46:50 +03:00
Avneet Kaur
701ccfdbcc FxCopAnalyzer fix for Wox.Core (PR#2of3) - Removing unused JsonRPC files (#7211)
* Removed unused JsonRPC related files and references

- Files Removed: ExecutablePlugin.cs, JsonRPCClientRequestModel.cs, JsonRPCErrorModel.cs, JsonRPCModelBase.cs, JsonRPCPlugin.cs, JsonRPCQueryResponseModel.cs, JsonRPCRequestModel.cs, JsonRPCResponseModel.cs, JsonRPCResult.cs, JsonRPCServerRequestModel.cs
- Modified PluginsLoader.cs:
	- Removed method ExecutablePlugins
	- In method Plugins(): Removed call to ExecutablePlugins()

* Suppressed warning for catching general exception type

* Addressing comments: Replaced in source suppression with attribute and logged exception information
2020-10-19 19:48:51 -07:00
Divyansh Srivastava
280d1907d8 Non localized module name (#7170)
* Added get_key to powertoysmodule interface

* Replace get_name with get_key

* Implement get_key function in modules

* Make key global constant in each module

* Update settings v1 to use key to load and save files

* Fixed fancyzones and preview pane unit tests

* Removed setings unit test as the case is not covered anymore

* Add constant files for modules and use it to reference module key

* Add constant string files to colorpicker, launcher and shortcut guide

* correct sunction signature in settings helper

* Fix powerpreview merge conflicts

* nit fix with include statement location

* add check for fields in from_json_string

* Updated preview pane tests with correct from_json_string signature

* Correct Image resizer naming

* Roll back changes for adding check for property and version

* Fix image resizer not working
2020-10-19 16:07:02 -07:00
Avneet Kaur
8b759094f7 FxCopAnalyzer fixes for Wox.Core (#7209)
* FxCop Fixes- added InvarientCulture info, suppressed warnings for general exception types

* Used IsNullOrEmpty to test for empty strings (CA1820: Test for empty strings using string length)

* Check if arguments are null and throw ArgumentNullException

* Removed unused function argument from PluginsLoader.cs

* Addressing comments- Using attributes to suppress errors for general exception types

* Addressing comments- Using attributes to suppress errors

* Addressed comments and changed InvariantCulture to CurrentCulture/Ordinal where appropriate

* Addressing comments - catching and logging specific exception in FontHelper.cs
2020-10-19 15:46:56 -07:00
yuyoyuppe
0aae535986 fix low-level kb hook disabling macro 2020-10-20 00:21:04 +03:00
Luthfi Mawarid
688f134051 [fxcop] Settings UI library (part 2) (#7257)
* Suppress warnings for read-only collection properties (see code comments)

* Call ConfigureAwait on tasks

* Add CultureInfo and StringComparison policy for certain string operations

* Add checks and exceptions for null arguments to public methods

* Rename RaisePropertyChanged to NotifyPropertyChanged

* Suppress CA1000 warning on SettingsRepository class

* Implement Disposable pattern in HotkeySettingsControlHook

* Modify null argument handling in KeyboardManagerViewModel::CombineShortcutLists
2020-10-19 13:32:05 -07:00
Andrey Nekrasov
03509e7f36 Logging improvements (#7377)
* bootstrapper: fix Windows SDK version

* devdocs: add spdlog usage readme
2020-10-19 10:54:39 -07:00
Gordon Watts
4660dd4970 Add action keywords for each plugin (#6129)
* Add action keywords for each plugin

- Added keywords for each plug-in
-  Change window walker search to use Query, not RawQuery (to get rid of action keyword)
- Make sure plug-ins that have action keywords as well as are in global list don't get added twice

All tests passed that passed before I started

Addressing issue #5823

* Fix bad formatting from the merge

* Do not add global plug-ins if we have an action keyword

Note side effect: you will not not be able to search for things that start with one of the plug-in keywords.

* Missed merge conflict repair!

* Revert "Do not add global plug-ins if we have an action keyword"

This reverts commit e3b0ecd708.

* Adjust keywords to suggested ones

* No need to ubild a query if we aren't going to use it

Didn't quite get the if statement right the first time I put it in.

* Do not add global plugins if we have an action keyword

This means, especially without a space, that global plugins do not become part of the search. Which really narrows down the search results, nicely.

* Update keywords as requested in the PR
2020-10-19 10:42:01 -07:00
csigs
12a84c01b1 LEGO: check in for master to temporary branch. (#7346) 2020-10-19 10:23:15 -07:00
csigs
06de5ffa07 LEGO: check in for master to temporary branch. (#7338) 2020-10-19 10:22:30 -07:00
Mykhailo Pylyp
7e0574cba2 Get rid of indexes in dropdowns (#7278) 2020-10-19 12:27:47 +03:00
Davide Giacometti
b80578b1b9 [PT Run] Open folder using shell instead of explorer.exe (#7292)
* pt run not using explorer.exe for opening path (#4622)

* updated explorer action name (#4622)
2020-10-16 16:30:11 -07:00
csigs
36dd29c056 LEGO: check in for master to temporary branch. (#7327) 2020-10-16 11:03:43 -07:00
csigs
6f5cdb4674 LEGO: check in for master to temporary branch. (#7319) 2020-10-16 08:59:49 -07:00
yuyoyuppe
c34c963121 bootstrapper: implement logging support
- add cxxopts and spdlog libraries
- implement cmd flag for severity
- add debug and error messages
2020-10-16 16:30:26 +03:00
stefansjfw
36bcbe9d95 [FancyZones] Minor refactoring of ZoneSet class (#7274)
* Minor refactoring of ZoneSet class

* Remove comment
2020-10-16 15:25:30 +02:00
Mykhailo Pylyp
4634c74f9e Remove Drop Down from combo box name as it is redundant (#7307) 2020-10-16 14:09:57 +03:00
csigs
c576bb611d LEGO: check in for master to temporary branch. (#7305)
Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-10-15 13:19:50 -07:00
Enrico Giordani
5f86956a41 [PowerRename] new icon (#7309) 2020-10-15 11:13:58 -07:00
csigs
fd7c7ffd57 LEGO: check in for master to temporary branch. (#7294) 2020-10-15 10:33:40 -07:00
Arjun Balgovind
438169e64f [KBM] Fix shortcut remap scenarios that should/should not open start menu (#7171)
* Modify  shortcut to key code more similar to shortcut to shortcuts code. Manually tested cases

* Fixed existing tests and fixed scenario with other keys pressed and action key released

* Fixed dummy key usage

* Updated comments and removed dummy key usage in key to shortcut remaps

* Added tests for disable and shortcut to key. Pending tests for dummy key

* Added test cases for each usage of dummy key event

* Remove redundant check
2020-10-15 08:53:43 -07:00
Ivan Stošić
598729f84c Remove m_drawHints, fix duplicate zone drawing (#7300) 2020-10-15 17:08:55 +02:00
Niels Laute
001c3304a2 Merge pull request #7259 from microsoft/user/niels9001/settings-placeholdertext
[Settings] Added placeholder labels
2020-10-14 20:31:16 +02:00
csigs
eeeae65493 LEGO: check in for master to temporary branch. (#7276) 2020-10-14 10:42:43 -07:00
csigs
184b6c5bd0 LEGO: check in for master to temporary branch. (#7265) 2020-10-14 10:42:15 -07:00
Arjun Balgovind
70bc967219 Updated double quotes logic (#7268) 2020-10-14 09:03:45 -07:00
vldmr11080
944e605f06 Allow negative spacing between zones up to -10 (#7284) 2020-10-14 17:42:47 +02:00
stefansjfw
d1372af581 [FancyZones] Refactor Zone class (#7022)
* Pass zoneId on zone creaton and make it const
Refactor IZone and Zone - make methods const
and remove SetId

* Update tests

* Fix Grid layout zone order
2020-10-14 09:00:50 +02:00
Niels Laute
3f4336697e Improvements 2020-10-13 23:30:29 +02:00
Deondre Davis
789816084e Added points from community and updated non-goals 2020-10-13 14:04:41 -07:00
Niels Laute
ac94bbe575 Added improved narrator support for custom shortcut control 2020-10-13 22:24:15 +02:00
Niels Laute
539b834da9 Added placeholder labels 2020-10-13 21:30:57 +02:00
Clint Rutkas
094136daec Update README.md 2020-10-13 11:50:23 -07:00
Clint Rutkas
5444bde283 Update README.md 2020-10-13 11:49:52 -07:00
csigs
8ade8fb2c5 LEGO: check in for master to temporary branch. (#7253) 2020-10-13 10:06:05 -07:00
Roy
844a68dae0 Improve DeduplicatePrograms by using a set instead of distinct (#7223)
Co-authored-by: Roy <royvou@hotmailcom>
2020-10-13 09:31:07 -07:00
vldmr11080
954705e3a0 [FancyZones] Screen enumeration improvement (#6908)
* Improvements in enumeration of available screens (work areas)

* Minor code style improvement

* Address PR comments

* Store map of display device name to device index

* Address PR comments

* Update comment

* Break when suitable device is found
2020-10-13 17:22:25 +02:00
Arjun Balgovind
dde19380e9 [Localization] Add localized resource dlls to the MSI installer (#6986)
* Added PowerLauncher resource files

* Fixed typo in language

* Updated localized .NET framework projects to include all resx files

* Fixed typo in FZEditor.csproj

* Added FZ Editor (.NET framework) resource dlls

* Updated pipeline

* Tweaked artifact statement to get all resource dlls in pipeline

* Fix SvgPreviewHandler resx inclusion in csproj

* Added condition to allow local MSI builds to run without resources

* Generalized directory code

* Added all resources that are to be added from C# projects, Settings UWP pending

* Added markdown prev handler as keypath

* Added loc script for Settings to move resw files to UWP file format

* Separate markdown and svg resource components to allow guid auto-generation

* Removed old image resizer resources

* Fixed formatting

* Changed tabs to space
2020-10-13 08:20:33 -07:00
Ivan Stošić
bb8cc0a305 Restart the launcher if it had crashed when invoked (#7127) 2020-10-13 10:26:04 +02:00
csigs
45124c2245 LEGO: check in for master to temporary branch. (#7246)
Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-10-12 21:44:15 -07:00
csigs
6e8cc67824 LEGO: check in for master to temporary branch. (#7236) 2020-10-12 19:22:52 -07:00
csigs
c6a82ef199 LEGO: check in for master to temporary branch. (#7217) 2020-10-12 16:59:32 -07:00
Aaron Junker
bd700a5b29 Change community health file names to the same name format (#7192)
* Rename LICENSE to LICENSE.md

* Rename community.md to COMMUNITY.md

* Rename contributing.md to CONTRIBUTING.md

* Rename LICENSE.md to LICENSE

* Update README.md

* Update SUPPORT.md
2020-10-12 15:33:58 -07:00
Roy
1f1cff3389 Fixed wrong name logged in Program Plugin (#7244)
Co-authored-by: Roy <royvou@hotmailcom>
2020-10-12 15:33:09 -07:00
csigs
d9d328173b LEGO: Pull request from lego/hb_2939_20201009230714095 to master (#7210)
* LEGO: check in for master to temporary branch.

* Update pipeline.user.windows.yml

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-10-12 15:31:47 -07:00
Ivan Stošić
6161531376 [FancyZones] Responsive drawing (#7125)
* Made drawing zones not clog message processing

* Fixed synchronization bugs

* call BufferedPaintInit

* Some refactoring, the animation is back

* Rename a function

* Align parameters
2020-10-12 11:05:22 +02:00
Seraphima Zykova
3807e98f23 [PT runner] Misplaced 'return' statement fix (#7202) 2020-10-12 11:57:50 +03:00
Luthfi Mawarid
889f20c4a7 [fxcop] Settings UI library (part 1) (#7187)
* Mark methods static and replace Count() with Length

* Use IsNullOrEmpty for null string checks

* Remove redundant initializations to default values

* Use nameof(property name) in place of string literals

* Add NativeMethods class

* Rename property getters in KeysDataModel & AppSpecificKeysDataModel

* Remove underscores from method names

* Mark Helper class static

* Address comments & typo fixes

* Add EncoderGuid property and fix failing build

* Update binding in GeneralPages.xaml
2020-10-09 17:58:52 -07:00
Arjun Balgovind
8643bfc977 Change declaration order of delay thread member in KeyDelay (#7206) 2020-10-09 16:13:48 -07:00
Arjun Balgovind
7fd5e18ef4 [File Explorer] Fix enable/disable for File Explorer PowerToy (#6883)
* Commented out enable/disable for File Explorer

* Revert UI changes

* Disable the toggles if PT is not running elevated

* Fixed compilation errors in tests

* Cleaned up preview pane code to separate thumbnail and preview panes as separate classes

* Fixed broken settings format and added elevation check and registry updated required logic. Preview Handler tested manually working, Thumbnail Enable/Disable needs to be fixed

* Updated Thumbnail enable/disable logic and added warning messages

* Update tests for File Explorer

* Fixed RegGetValue failing in Release config

* Renamed new classes

* Split wrappers for disable to work

* Modified enabled flag check to also check if user is on new settings. Fixed casing issue in powerpreview.h that caused a dialog prompt on first launch after install

* Update fontweight and margin

* Fixed release build not working

* Move UseNewSettings usage to powerpreview.cpp to avoid tests breaking. For new settings the enable check is done in constructor and for old settings it is done in enable

* Update src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Update src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Update src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Moved dup code to method

* Use correct versions of general settings for backwards compat test

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
2020-10-09 14:45:30 -07:00
csigs
d753179d1e LEGO: check in for master to temporary branch. (#7186)
Co-authored-by: Arjun Balgovind <32061677+arjunbalgovind@users.noreply.github.com>
2020-10-09 14:32:31 -07:00
Clint Rutkas
ff20ef26d8 Update README.md 2020-10-09 11:04:49 -07:00
csigs
bd3c877ca3 LEGO: check in for master to temporary branch. (#7195) 2020-10-09 09:38:36 -07:00
Niels Laute
274c009f20 [PT Run] Updated borderbrush to improve accessibility for dark mode (#7141)
* Updated borderbrush

* Update src/modules/launcher/PowerLauncher/LauncherControl.xaml

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Fixed bug

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
2020-10-08 20:14:00 -07:00
Arjun Balgovind
210426a020 Fixed lcl file bad merge (#7189) 2020-10-08 19:38:21 -07:00
Arjun Balgovind
c393db0b65 [KBM] Fix remaps to arrow keys/Home/Ins, etc not working with Windows Terminal (#7143)
* Added MapVirtualKey call to set scancode before calling SendInput

* Updated comment

* Update comment with link

* Added test for dummy key scan code
2020-10-08 17:52:19 -07:00
Nkateko
1390b57d3e [Settings] Adding Tests to Verify Backward Compatibility (#6161)
* compare config files

* create settings files

* updated path check

* reverted color picker changes

* added test files

* removed settings uralted files

* Modifying directory structure and adding properties for backcompat test.

* Updating Unit test to use mock repositories.
1) BackCompatTestProperties exposes mock repository implementation because SettingsRepository is a singleton, and settings utils isn't typed.
2) BackCompatTestProperties, encapsulates logic to verify that the correct file was read from.
3) Validating each file is read twice.  Once by the original file, and once via the view model.

* Adding 18.2 settings files.

* Fix compiler errors from latest merge

* Adding v0.19.2 test files.

* Adding in 0.20.1 settings.  Removing 0.20.2 (as this was a dev build number)

* Adding settings tests for 22.1

* General Settings should update version when they don't match

* Adding v0.22.0 files

* Removing not settings related files from TestData for PT Run 21.1

* Referencing module name as *Settings.ModuleName in tests.  Except for ImageResizer

* Using ImageResizerSettings to use Settings for the module name.

* Setting AllPlugins to empty list in case PluginManager.Save/Load/ReloadData is called before plugins are loaded

* Fixing fxcop errors

* using named parameters as per review feedback

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
2020-10-08 16:34:19 -07:00
ryanbodrug-microsoft
4451403c1e Setting AllPlugins to empty list in case PluginManager.Save/Load/ReloadData is called before plugins are loaded (#7173) 2020-10-08 16:32:31 -07:00
Tony Mitchell
38e03e6bb0 Detect potential errors copying metadata and avoid them (#2447) (#6997) 2020-10-08 16:16:32 -07:00
Arjun Balgovind
42ebc42c98 Changed dummy key event to send key down and key up to improve compatibility with applications (#7166) 2020-10-08 11:28:37 -07:00
Arjun Balgovind
e1d22c74b0 [KBM] Refactor KBM's thread safety logic to avoid mutex re-entrancy bugs and improve performance (#6803)
* Unlock mutex before ResetModifierForLowerLevelKeyHandlers method to avoid crash if two instances of KBM are running

* Added alias for Shortcut DWORD variant to clean up code

* Removed mutex usage in single key remap method and added GetSingleKeyRemap

* Added more alias

* Moved to boolean disable remapping

* Added missing ! in condition

* Remove lock statement from bad auto-merge
2020-10-08 11:28:24 -07:00
Clint Rutkas
9928579364 Adjusting to force all instances to use rounded vs result due to Mage's quirks (#7164) 2020-10-08 08:57:17 -07:00
Alekhya
cfe2bbd75e Fix Tab Trap in SettingsHotkey Custom Control (#7136)
* basic logic working

* Added a literal for ignore flag which cna be shared by all the files

* Added a condition that the other modifier keys should not be pressed

* Added comments to describe each scenario

* sometimes when multiple modified keys were involved the shift+tab key press was also being invoked, so added an additional check in the IsValid function

* use variable for vk_tab

* remove new line before initializing dwextraInfo

* move flag check if the filterKeyboardevent function

* use windows.system.virtualkey.shift instead of defining a constant for the shift key code

* removed latest settings to use internal settings instead. Removed the validity check while still within the hotkey other than if it's tab or shift+tab

* add a function to send input to the system instead of duplicating the send input code

* remove VKSHIFT declaration

* display all shortcuts/keys except tab and shift+tab

* remove header that is no longer needed
2020-10-08 08:45:09 -07:00
csigs
8a81bea413 LEGO: check in for master to temporary branch. (#7168) 2020-10-08 07:55:56 -07:00
csigs
9216aa465f LEGO: check in for master to temporary branch. (#7181) 2020-10-08 07:54:53 -07:00
Enrico Giordani
038087e076 [FancyZones] Clone parent data only for new VD (#7116)
* [FancyZones] Clone parent data only for new VD
2020-10-08 16:02:51 +02:00
csigs
de4436ccc0 LEGO: check in for master to temporary branch. (#7153) 2020-10-07 13:30:34 -07:00
csigs
5e30ad176a LEGO: check in for master to temporary branch. (#7144) 2020-10-07 13:30:12 -07:00
P-Storm
d011843113 Assert was switched in these instances, so I changed it to the "expected, actual" (#7142)
Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-10-07 13:12:59 -07:00
Alekhya
0c0aec0f2a catch security exception and access denied exception while trying to read a file (#7140) 2020-10-07 12:56:57 -07:00
Divyansh Srivastava
2bd6c5c664 Fix Docker desktop not found in program plugin issue (#6882)
* Fix docker lnk not found issue

* Add common desktop folder location to desktop program

* Add CommonDesktopDirectory to file watchers
2020-10-07 12:27:56 -07:00
Arjun Balgovind
eae0937db0 Add null check in SelectPrevTabItem (#7139) 2020-10-07 12:22:54 -07:00
Clint Rutkas
69e25cfefc Create SUPPORT.md (#7161) 2020-10-07 11:51:00 -07:00
P-Storm
163a699bff EnumerateFileSystemInfos uses EnumerationOptions (#6933)
* Changed EnumerateFileSystemInfos to EnumerationOptions we don't have to catch the exceptions ourself.

* Change Matchtype to mimic old search method.

Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-10-07 09:25:29 -07:00
P-Storm
8b66932036 Matching ExactName for known Win32 Programs (#6924)
* Matching explorer.exe also for explorer
Added unit test
Optimized multiple iterations for IProgram

* Fixed linter

Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-10-07 09:23:47 -07:00
Luthfi Mawarid
a2fce22973 [fxcop] Settings UI unit tests (#6987)
* Add FxCop to project

* Remove underscores from method names

* Add message to obsolete test method

* Mark method static

* Method renames and remove unused ToRGBHex method

* Method renames and replace Count() with the List.Count property

* Method renames, rename unused OnSend argument, validate argument for AssertHotkeySettings
2020-10-06 15:00:25 -07:00
P-Storm
206397dc86 Fixed the error that Files were named Folder (#6935)
* Fixed the error that Files were named Folder

* Add and use resources in Results.

* Last item without resources in Plugin.Folder

* Changed to CurrentCulture, added N0 to Folder truncate warning.

Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-10-06 09:08:41 -07:00
Yuhanun Citgez
ac3910580a Modernized unique pointer construction (#6982) 2020-10-06 18:17:20 +03:00
lai52066
bee1af427b Fix translate (#7005)
ORG <Val><![CDATA[輕]]></Val>
FIX <Val><![CDATA[淺色]]></Val>
2020-10-05 13:04:54 -07:00
Divyansh Srivastava
ea0de4f831 [Run] Fix for IndexOutOfBounds exception (#6981)
* Fix index out of bounds exception

* Race condition in query telemetry
2020-10-05 09:50:41 -07:00
Divyansh Srivastava
5d095efe90 Add exception handling in win32 program (#6958)
* Add exception handling to prevent program from failing due to error in one program

* Error handling for program path function

* Fix incorrect log value in ProgramLogger
2020-10-05 09:50:07 -07:00
vldmr11080
71765238b1 [FancyZones] Localize strings in FancyZones editor (#6943)
* Localize strings in FancyZones editor

* Move localized strings into resx file
2020-10-05 12:06:35 +02:00
Divyansh Srivastava
4feb0f209f Fix autocomplete due to error in returned autocomplete text (#6988) 2020-10-02 21:30:14 -07:00
Arjun Balgovind
7c607ad540 Add AppxBundlePlatform to remove warning (#6960) 2020-10-02 13:42:47 -07:00
Mykhailo Pylyp
3f25d7ccc8 Keyboard disable (#6874)
Added disable key/shortcut functionality
2020-10-02 15:36:36 +03:00
Arjun Balgovind
b2e72e1ca4 [KBM] Moved unregistering of key delays to always run on the dispatcher thread to avoid mutex re-entrancy (#6959)
* Moved unregistering of key delays to always run on the dispatcher thread

* Updated comments
2020-10-01 18:19:11 -07:00
Divyansh Srivastava
55fd8749c8 Shift to ControlzEx HC code (#6880)
* Use high contrast detection from controlzex

* Allow multiple theme changes
2020-10-01 16:08:06 -07:00
P-Storm
fd32a6f7d6 Fix throwing when there is no results (#6934)
Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-10-01 13:47:58 -07:00
Arjun Balgovind
b981467f1e [KBM] Avoid checking reserved/unassigned/oem-specific/undefined key codes during shortcut remaps (#6952)
* Updated list of key codes to be ignored

* Added comments
2020-10-01 12:43:54 -07:00
Clint Rutkas
c219fe0d1d [fxcop] image resizer ui (#6841)
* adjustments

* Settings fixed

* Getting resizing tests operational again

* fixed default vs loading from settings

* one small tewak
2020-10-01 11:33:23 -07:00
Clint Rutkas
19b519638f old logos moved (#6919) 2020-10-01 10:41:28 -07:00
stefansjfw
85f56f4ed8 [FancyZones] Fix stuck chrome tab when merging into existing window (#6931)
* Fix stuck Chrome tab when merging with existing window

* Rename struct fields
2020-10-01 15:38:24 +02:00
Android Dev Notes
8f81b9c662 Fix typos (#6937) 2020-10-01 14:11:11 +02:00
P-Storm
5c84de5400 Made Plugin Folder Unit tests & Expanding enviroment search (#6600)
* Made Plugin Folder Unit tests. Fixes '>' not recursive searching (with max). Added that paths with an UnauthorizedAccessException are ignored. Added expanding enviroment search.

* Fixed some merging errors

* Added feedback from review

* Made the change that  ryanbodrug-microsoft suggested

* Stupid merge request... fixed

Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-09-30 20:37:46 -07:00
Clint Rutkas
b2c00b1e1a Update README.md 2020-09-30 14:03:47 -07:00
csigs
67072b99d4 LEGO: check in for master to temporary branch. (#6907) 2020-09-30 10:26:54 -07:00
Matt Wojciakowski
07256c50ef Add link to the PowerToys ep of Tabs vs Spaces (#6903) 2020-09-30 09:49:16 -07:00
Clint Rutkas
6711a6bc7e 0.23 readme update (#6910)
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2020-09-30 09:34:30 -07:00
stefansjfw
39c61b9abd [FancyZones] Remove WindowMoveHander pImpl pattern (#6894)
* Remove WindowMoveHandlare pImpl pattern

Introduces runtime overhead and makes debugging unecessary more painful

* End file new line
2020-09-30 09:19:20 +02:00
Divyansh Srivastava
24ba7f08cf Add debugging section in preview pane (#6717)
* Added info on directly registering dll

* Update README.md

* Update README.md

* Update to regasm x64

* Add information related to assembly signing in readme preview pane handler

* Bold warning for taking registry route for installation
2020-09-29 14:36:28 -07:00
Clint Rutkas
fb8e80c09c FxCop for Preview handler (#6833) 2020-09-29 10:43:18 -07:00
Seraphima Zykova
240f67f15c Fixed crash with big 'Space around zones' values (#6815) 2020-09-29 13:12:21 +03:00
Enrico Giordani
8d18626659 Now working on 0.23.1 (#6881) 2020-09-29 12:05:36 +02:00
Alekhya
a5b22cffa2 Changed default theme in settings to be consistent with that of shortcut guide (#6832)
* changed default theme to be consistent with that of shortcut guide

* change the test to reflect that the initial settings theme or shortcut guide is 'system' and not 'light'.
2020-09-28 12:44:18 -07:00
Tobias Sekan
9f8202bc4f Add VS Preview to prerequisites install script (#6855) 2020-09-28 10:09:24 -07:00
Deondre Davis
bdd513b212 Updated STG info and noted static GIF copying 2020-09-28 08:48:27 -07:00
Arjun Balgovind
de870c843e Fix settings UpgradeConfiguration code path (#6839) 2020-09-25 13:59:14 -07:00
Arjun Balgovind
9c32e32097 Updated winUI version (#6840) 2020-09-25 13:52:43 -07:00
Alekhya
f61db8ed3f Add delay to File System watchers to prevent Calibre installation issue (#6821)
* add a separate task to dequeue and create an app on installation

* Added tests to validate the behavior of the event handler

* release unmanaged memory
2020-09-25 10:36:38 -07:00
Arjun Balgovind
9e1711cbb9 [Settings] Added recursive delete for IOProvider DeleteDirectory to prevent crash on non-empty directory (#6818)
* Added recursive delete flag

* Changed to named parameter
2020-09-24 11:36:26 -07:00
Alekhya
c941b5333c Fix settings changes that were made in PR #6620 (#6817)
* validated that restart elevated and check for updates work.Removed isettingsUtils and reused settings repository

* reverted the name to ImageResizer instead of using ImageResizerSettings.Modulename to make it backward compatible
2020-09-24 10:50:49 -07:00
csigs
8d934df0c0 LEGO: check in for master to temporary branch. (#6805) 2020-09-24 09:14:25 -07:00
csigs
2f0937951a LEGO: check in for master to temporary branch. (#6802) 2020-09-24 08:01:13 -07:00
Ivan Stošić
a676537e26 [FancyZones editor] Rudimentary crash handler (#6783)
* Handle crashes in the FZ editor

* Removed reference to .NET frameworks, added a message box

* log => txt

* Update text shown
2020-09-24 12:29:53 +02:00
Clint Rutkas
b071220b6c Improve logging for PT Run (#6800)
* init code pass

* adjusting tabbing for readabilty

* few small adjustments
2020-09-23 16:32:06 -07:00
Alekhya
dafc1e0c7d Fixed scaling Accessibility issues in Settings (#6774)
* fixed scaling issues in settings

* reduced the size to 375 from 380

* Set scrollviewer visibility to auto so that it is visible only when needed
2020-09-23 13:20:58 -07:00
Alekhya
5a07579b73 Fix for settings crash on toggling enable button for any PowerToy (#6620)
* Removed getSettings from moduleEnabled so that it doesn't have to reopen the file everytime

* To Lower to while checking the theme

* color picker doesn't reopen the file

* use the generalView model config directly for FZ

* Made the same change for all the viewmodels so that they access the general view model value directly instead of opening and reading the value from a file each time

* removed unused variable

* Fix initialization in tests

* should read the file only if general settings does not exist

* Added interfaces for all the powertoys to use the generalSettings singleton class

* Runner is responding to changes in settings, only issue is that every time the general settings page is loaded the information is being read because isInitialized property could not be ignored during serialization

* All tests pass

* Settings and runner are working as expected with the settings cache

* added a null check to read from the file only when the settings process is started

* use converter to deserialize an interface

* Renamed generalSettings within the cache to be called CommonSettingsConfig

* All tests pass, had to initialize the common settings config instance

* Added few comments to newly created classes

* encapsulating load and store of general view model

* reading from file is encapsulated

* settings and runner wotk with generic singleton

* Shortcut guide works as expected

* Fancyzones, shortcutguide and power preview use the settings repository and work as expected

* referencing GeneralSettings instead of the settingsRepository<GeneralSettings> within viewmodels

* unified access to General settings and removed the IGeneralSettingsData interface

* Passing settings to viewmodel as a parameter

* removed ISettingsConfig interface from the viewmodels which are not using the singleton to access settings

* have to use ISettingsConfig to use GetSettings

* refactored tests, all tests pass

* Added test for settingsRepository that a single instance is created

* Added comments and removed unnecessary headers/code

* added settings repository tests

* moq for each settings file

* Img resizer tests pass

* General tests pass

* FancyZones tests pass

* PowerPreview tests pass

* PowerRename tests pass

* shortcut guide tests pass

* Added GetModuleName to ISettingsConfig

* unify the way the Modulename is accessed. It was redeclared in multiple places and this would cause an issue if the name is changed only in one place. All the module names are accessed using the <T>Settings.ModuleName, eg: ShortcutGuideSettings.ModuleName.

* create PTRun settings file if it does not exist

* GetFile is now a private function. Modified the logic of KBM default.json access and PT Run so that we can re-use GetSettings instead of GetFile.

* Added UpgradeSettingsConfiguration to the ISettingsConfig interface so that the settings file can be upgraded based on some condition. Presently, only the GeneralSettings file is utilizing this to change the PT Version number based on the old PT version and the current PT version that it receives from the helper function. Verified that if the PT version is lower in the general settings.json file, settings saves the file with the new version info.

* The naming for the PowerToys was inconsistent and the variables were redeclared in multiple places. To have the settings.ModuleName as the main name, all other places should refer to that name. In the tests file the module name for ImgResizer was 'ImageResizer' and not 'Image Resizer'.

* renamed lock

* Remove unnecessary GetSettingsFileNAme function. It is no longer in use because the code does not use types to create a new BasePTModule object
2020-09-23 13:20:32 -07:00
Clint Rutkas
0148669e98 [fxcop] preview handler common (#6762)
* FxCop adjustments

* initing due to change for abstract
2020-09-23 10:22:17 -07:00
Arjun Balgovind
75ace74d37 [Keyboard Manager] Enabled horizontal scroll on scroll viewers and tweaked ScrollViewer layout (#6755)
* Enabled horizontal scroll on scroll viewers and tweaked layout

* Added code to constrain the minimum window sizes
2020-09-22 17:46:57 -07:00
Arjun Balgovind
1ef4c43382 [Keyboard Manager] Fix crash in Keyboard Manager by ignoring MapToSameKey warnings on loading (#6714)
* Add extra argument to ignore MapToSameKey error for Key To Shortcut mapping

* added comment
2020-09-22 13:54:53 -07:00
Clint Rutkas
c1e9f2de6a FxCop enabled (#6758) 2020-09-22 09:14:42 -07:00
Clint Rutkas
55b36d44fa adding in frontmatter and latex (#6711) 2020-09-22 09:10:18 -07:00
Enrico Giordani
d2201cbb79 [SG] change suppress key code (#6750) 2020-09-22 13:12:19 +02:00
Clint Rutkas
934949725b FxCop and StyleCop for SVG thumbnail (#6757)
* FxCop work for SvgThumbnail

* enabling stylecop
2020-09-21 19:44:12 -07:00
Clint Rutkas
57972c6653 Update README.md 2020-09-21 13:43:23 -07:00
ryanbodrug-microsoft
0f6428eed0 User/ryanbod/mock settings disk access (#6188)
* 1) Making Directory Methods private.
2) Removing the CreateDirectory / DeleteDirectory functionality from all Settings Unit Tests.

* Abstracting disk access via IIOProvider to be able to provide mocks for unit tests instead of writing to disk.   This also prevents developers who are running unit tests from interfering with the PowerToys settings on their local dev box.

* Dependency Injecting stub SettingsUtils for all tests

* Removing ISettingsUtils from constructors of objects that need to be deserialized (ColorPickerSettings/PowerLauncherSettings) as this breaks System.Text.Json

* Removing unused namespace reference

* Removing redifined mock

* As per PR feedback.  Stub Settings utils should work with any settings type if the intent is to compile / avoid null ref exceptions.

Strangely when implementing this fix it became apparent that a stub settings isn't enough, and disk access needed to be mocked.  I can't explain why the tests were passing previously.

* Leveraging GetMockIOProviderForSaveLoadExists
2020-09-21 10:14:44 -07:00
Ivan Stošić
6e89ef62e4 [Launcher] Kill the Launcher immediately (#6747)
* Kill the Launcher immediately

* Also rename the shared file
2020-09-21 13:51:30 +02:00
Ivan Stošić
b266e336b5 [Launcher] Use a keyboard hook in the runner to invoke the Launcher (#6660)
* Added a keyboard hook to the runner

* Update RootKeyboardHook

* Enable reading the whole JsonObject property

* Renamed RootKeyboardHook to CentralizedKeyboardHook

* Fixed build break, changed callback return type to bool

* Added Hotkey struct which somehow went missing

+ Cherry-pick fixes

* Reorganized the kb hook

* Basic version works

* Various fixes

* Finishing touches

* Fix potential threading issue

* int -> size_t

* Add default initializers to the Hotkey struct

* Added a suggested comment

* Unified a constant

* Use C# classes instead of native calls for sync

* Added a claryfing comment

* Use std::move

* Renamed a method

* Possible fix for compilation errors

* Fix a regression

* Show a message on failure

* Added DISABLE_LOWLEVEL_HOOK support

* Allow running Launcher as standalone

* Rename string constants
2020-09-21 12:44:16 +02:00
Arjun Balgovind
e135153c45 [Keyboard Manager] Fix focusable elements should have different names accessibility issue (#6672)
* Add listview

* Added row index to accessible names

* Cleanup rowIndex

* Fixed accessibility issue with ComboBox

* Updated comments
2020-09-18 17:12:37 -07:00
Divyansh Srivastava
28cae124d1 Nit fix in logging (#6708) 2020-09-18 13:32:28 -07:00
Clint Rutkas
94d8b4a122 rerouting to Log class vs custom logic (#6688) 2020-09-18 12:58:52 -07:00
Arjun Balgovind
ce835418cb Enable localization on all folders under PowerToys root (#6692)
* Changed to repo root

* Removed backslash

* Revert testing change

* Add comment
2020-09-18 10:27:59 -07:00
vldmr11080
3aa7a52c21 [FancyZones] Initial improvements in FancyZones exception handling (#6063)
* Initial improvements in FancyZones exception handling

* Add callback

* Disable FancyZones if error durign loading data occurrs

* Remove logs

* Add resource strings

* Add 1sec retry when failure during initialization occurs

* Rephrase error descriptions

* Error handling during loading of module in runner

* Pass error handling on the runner

* Remove unneeded string

* Remove unnedeed changes
2020-09-18 15:18:01 +02:00
yuyoyuppe
2bc3480396 common: fix trim functions for wchar_t 2020-09-18 13:33:02 +03:00
Remy Blok
7893f387d5 [FancyZones] Configurable sensitivity radius (#6554)
* Add the setting for the Sensitivity Radius to JSON and the Editor
Use the setting when determining Zones to highligh

* Fix FanzyZones unit tests
Add test for Json upgrade

* Updated texts in FancyZone Editor
More Text to Resources / Use Resources

* Added constant for default of Sensitivity Radius

* When installing from scratch of when a new device is added set the sensitivity radius to the default.
Move all the constant values to a single namespace

* restore correct formatting

Co-authored-by: Remy Blok <remy.blok@prodware.nl>
2020-09-18 09:16:06 +02:00
Divyansh Srivastava
00187269de handle error in Packaged program loading (#6674) 2020-09-17 16:17:02 -07:00
Roy
b3833fcf1a [PowerToys Run] Add Suport for Commandline arguments in Program Plugin (#5791)
* Implemented possibility to add commandline arguments in the Program Plugin

* Add missing return statement inc ommandArgumentParser loop

* Fix typos

* Fix Additional Typo

* Changed -c to /c to make it a valid cmd argument

* Added small comment about importance of order in _programArgumentParsers

Co-authored-by: Roy <royvou@hotmailcom>
2020-09-17 15:39:28 -07:00
Aaron Junker
923972dd49 Update contributing.md (#6636)
* Update contributing.md

* Update contributing.md
2020-09-17 15:06:40 -07:00
Arjun Balgovind
f19bad3761 Revert "[FxCop] Telemetry.csproj" (#6690)
* Revert "marking all warnings (#6642)"

This reverts commit b0f0940534.

* Added warning comment
2020-09-17 14:02:25 -07:00
stefansjfw
b5cc24fcff [FancyZones] Remove migration from registry logic and delete registry data if present (#6657)
* Remove migration from registry logic

* Address PR comments
2020-09-17 20:57:44 +02:00
yuyoyuppe
d414d52156 localization: move localizable strings to .resw for runner/bootstrapper 2020-09-17 20:32:18 +03:00
Clint Rutkas
85c0eaa598 Update readme.md (#6670) 2020-09-16 14:27:37 -07:00
Clint Rutkas
d409a71000 Getting FxCop online (#6668) 2020-09-16 12:26:58 -07:00
Clint Rutkas
0a716c253b Upgrade nuget packages (#6641)
* upgrade mahapps

* update nlog

* all launcher packages now updated

* tests and Setting UI

* markdown

* removing unneeded DLL now from nuget update
2020-09-16 12:24:21 -07:00
Clint Rutkas
13fd6bd6e1 [FxCop] Svg preview handler (#6647)
* Adjusting namespace

* Getting FxCop working e2e
2020-09-16 12:24:07 -07:00
Clint Rutkas
b0f0940534 marking all warnings (#6642) 2020-09-16 12:23:50 -07:00
Clint Rutkas
dc284d9cbb Clean up some unused dependencies, nlog and some newtonsoft (#6650)
* remove nlog

* removing unused referecnes to newtonsoft
2020-09-16 11:36:52 -07:00
Clint Rutkas
0a86360948 Fxcop markdown preview handler (#6646)
* migrating namespace conflict

* Fixing all errors

* removing todo

* tweak wxs
2020-09-16 11:15:34 -07:00
Deondre Davis
aff717ffce Updated Video Editor Menu and minor fixes 2020-09-16 10:20:38 -07:00
Divyansh Srivastava
e49900f927 Fix sync issue in SelectedItem (#6582) 2020-09-16 09:59:04 -07:00
Arjun Balgovind
5e301133ff [Settings] Fix settings process not terminating on closing settings while minimized (#6626)
* Added code to set CoreWindow to visible on closing while minimized

* Changed to environment.exit
2020-09-16 09:47:43 -07:00
Aaron Junker
5b684cca9a Update style.md (#6323) 2020-09-15 11:24:55 -07:00
stefansjfw
3d36779e19 [FancyZones] Do not zone window if it should be maximized (#6619)
* Do not zone window if it should be maximized

* Update comment

* Remove uneeded field

* Address PR comment
2020-09-15 13:03:17 +02:00
Enrico Giordani
eaf54ca525 Fix typo in URL (#6630) 2020-09-15 12:38:34 +02:00
Deondre Davis
ba7a598b2e Added links to figures and software referenced 2020-09-14 17:32:54 -07:00
Deondre Davis
dce4b2288b Added Mock ups and fixed Figure labelings 2020-09-14 16:51:32 -07:00
Deondre Davis
2a847eebb9 Added visaul assets 2020-09-14 13:47:10 -07:00
Arjun Balgovind
25f93e8b94 Fix for issue 3886 (#6585) 2020-09-14 13:12:02 -07:00
Arjun Balgovind
7328aa7df5 Fixed Visibility property changed invoked on clicking away from PT Run (#6588) 2020-09-14 13:10:56 -07:00
Divyansh Srivastava
d75dd71848 Fix for null reference exception (#6589) 2020-09-14 11:03:17 -07:00
Deondre Davis
a8dca61a3c fix image link 2020-09-14 10:02:20 -07:00
Deondre Davis
d32d5b8bac init commit 2020-09-14 09:53:39 -07:00
Ivan Stošić
3d5c790fb6 [FZ Editor] Improved a function in GridData.cs (#6565)
* Improved a function in GridData.cs

* Allocate the extra values proportionally

* Refactor a constant
2020-09-14 10:05:28 +02:00
Clint Rutkas
5af88de27b tweaking text and adding in headers (#6586) 2020-09-11 17:10:51 -07:00
Clint Rutkas
997a7bc60f adding in trim (#6584) 2020-09-11 16:15:18 -07:00
Arjun Balgovind
bfbd7b53a1 Unregister key delays on closing KBM windows (#6583) 2020-09-11 15:16:34 -07:00
Alekhya
1dec80902d unify the name as it is present in the plugin.json file (#6547) 2020-09-11 13:45:32 -07:00
Alekhya
0478d99aac To catch URI Format Exception in PT Run (#6580)
* add a catch block for uri format exceptions

* Added link to watson crash
2020-09-11 13:04:25 -07:00
stefansjfw
db9677bb4a [FancyZones] Do not zone window if it merges with other window (#6549)
* Do not zone window if it merges with other window (e.g. merge Chrome tab into other Chrome window

* Small move of func call

* Address PR comment

* remove include

* Address PR comment 2
2020-09-11 12:35:43 +02:00
Ivan Stošić
0e32edb603 [FancyZones] Use Ctrl+Win+Alt+arrows to Expand/shrink windows to adjacent zones (#6446)
* Added an Alt key hook

* Refactor a block of code into a method

* Again refactored existing code

* Apparently Win+Alt does not reach FancyZones

* Using Ctrl+alt instead of Win+alt for now

* It works

* Fixed VD change

* Remove unused member

* Fix compilation error

* Enable shrinking

* Fixed comments in .h files

* Remove newline

* Refactored a function into two

The next task is to simplify their code.

* Updated a comment

* Update a variable name

* Reverted to the old implementation of directional move

* More refactoring

* Remove space

* Fixed windows getting stuck

* Changed function name
2020-09-11 11:32:45 +02:00
Arjun Balgovind
82e1be2839 [Launcher] Categorize Lnk files in program plugin correctly as per the target file type (#6348)
* Updated UnregisteredApps code

* Added file type checking code and Folder and File classifications

* Added more file formats

* Removed run as admin for lnk folders

* Added script files as executable and changed hashset to case insensitive

* Removed runasadmin for generic files

* Removed FileTypes enum

* Extended ApplicationTypes enum

* Fix file format error

* Cleaned use of ApplicationType enum to public and match AppType and used ApplicationType in OnAppRenamed

* Modify tests to use ApplicationType enum

* Added tests for new App types

* Modified dummy appref

* Mock Directory.Exists and add tests for GetAppTypeFromPath

* Combined tests
2020-09-10 15:06:37 -07:00
Arjun Balgovind
ab8bec8866 [KBM] Prevent keyboard manager crash when index is not found (#6488)
* Added Sleep(5000) for repro

* Added check to prevent kbm crash for index not found

* Add more safeguards
2020-09-10 11:31:49 -07:00
Arjun Balgovind
3b8fa8b4ce Fixed KBM shortcut remapping not working after using Japanese IME (#6450) 2020-09-10 10:46:33 -07:00
ryanbodrug-microsoft
c4cb3df306 Adding FxCop to Microsoft.Plugin.WindowWalker (#6260)
* Adding FxCop to Microsoft.Plugin.WindowWalker

* Delete WindowResult.cs -- Fix for CA1812 WindowResult is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static members, make it static (Shared in Visual Basic).

* Fix for CA1806 UpdateOpenWindowsList calls EnumWindows but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method.

* Fix for: CA1066 Type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.RECT should implement IEquatable<T> because it overrides Equals

* Fix for:  CA1052 Type 'FuzzyMatching' is a static holder type but is neither static nor NotInheritable

* Suppress for CA1069 - These values are defined in
https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles.

CA1069 The enum member 'WS_EX_LTRREADING' has the same constant value '0' as member 'WS_EX_LEFT'
CA1069 The enum member 'WS_EX_RIGHTSCROLLBAR' has the same constant value '0' as member 'WS_EX_LEFT'

* Supress CA1069

Code Description
CA1069 The enum member 'SWP_NOREPOSITION' has the same constant value '512' as member 'SWP_NOOWNERZORDER'
CA1069 The enum member 'SWP_FRAMECHANGED' has the same constant value '32' as member 'SWP_DRAWFRAME'

* Suprress CA1069 for ShowWindow values.  See

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow

CA1069 The enum member 'ShowMaximized' has the same constant value '3' as member 'Maximize'

* Fix code formatting error

* Fix for CA2235: Making POINT serializable

CA2235 Field MinPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.POINT which is not serializable
CA2235 Field MaxPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.POINT which is not serializable

* Fix CA2235 Making RECT serializable

CA2235 Field NormalPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.RECT which is not serializable

* Fixes for CA2101 Specify marshaling for P/Invoke string arguments.

* Fixes for CA2007 Consider calling ConfigureAwait on the awaited task

* Fixes for the following (CA1822 / CA1801):
CA1822 Member 'OnOpenWindowsUpdate' does not access instance data and can be marked as static
Code Description
CA1801 Parameter value of method add_OnOpenWindowsUpdate is never used. Remove the parameter or use it in the method body.
CA1801 Parameter value of method remove_OnOpenWindowsUpdate is never used. Remove the parameter or use it in the method body.

* Fix: CA1710 Rename OpenWindowsUpdateHandler to end in 'EventHandler'

* Fix CA1822 Member 'GetProcessIDFromWindowHandle' does not access instance data and can be marked as static

* Fix CA1062 In externally visible method 'List<int> FuzzyMatching.FindBestFuzzyMatch(string text, string searchText)', validate parameter 'searchText' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.

* Fixes for CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings.

CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'FuzzyMatching.FindBestFuzzyMatch(string, string)' with a call to 'string.ToLower(CultureInfo)'.

Code Description
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'FuzzyMatching.FindBestFuzzyMatch(string, string)' with a call to 'string.ToLower(CultureInfo)'.

* Supressing warning for CA1814: Prefer jagged arrays over multidimensional however this might be something to consider if needing to optimize the window walker search.

* Fix: CA1062 In externally visible method 'List<List<int>> FuzzyMatching.GetAllMatchIndexes(bool[,] matches)', validate parameter 'matches' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.

* Fix for CA1062 In externally visible method 'int FuzzyMatching.CalculateScoreForMatches(List<int> matches)', validate parameter 'matches' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.

* Fixes for CA1806 Calls x...  but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method.

Using discard for methods that return void, and checking the hresult before returning parameters.

* Fix for CA1820 Test for empty strings using 'string.Length' property or 'string.IsNullOrEmpty' method instead of an Equality check

* Supress CA1031 Modify 'get_WindowIcon' to catch a more specific allowed exception type, or rethrow the exception

* Code Description
CA1062 In externally visible method 'List<Result> Main.Query(Query query)', validate parameter 'query' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.

* Fixes For CA1304 The behavior of 'string.ToUpper()' could vary based on the current user's locale settings.

CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'SearchController.SearchText.set' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'Window.ProcessName.get' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'Window.SwitchToWindow()' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToUpper()' could vary based on the current user's locale settings. Replace this call in 'Window.ToString()' with a call to 'string.ToUpper(CultureInfo)'.
CA1307 The behavior of 'string.Equals(string?)' could vary based on the current user's locale settings. Replace this call in 'Microsoft.Plugin.WindowWalker.Components.Window.SwitchToWindow()' with a call to 'string.Equals(string?, System.StringComparison)'.

* Fix: CA1710 Rename SearchResultUpdateHandler to end in 'EventHandler'

* Fix CA1060 Move pinvokes to native methods class

* Fix: CS0067 The event 'OpenWindows.OnOpenWindowsUpdateEventHandler' is never used

1) Remove SearchController::OpenWindowsUpdateHandler(object sender, SearchResultUpdateEventArgs e) as it wasn't being called and was redundant with Update Search Text.
2) In Main.cs calling UpdateOpenWindowsList before UpdateSearchText so that the latest enumerated windows will be called.
3) Removing unused OnOpenWindowsUpdateEventHandler and related code.

* Revert "Fixes for CA2101 Specify marshaling for P/Invoke string arguments."

This reverts commit b3dfe07915.

* Fixing CA2101 by turning off best fit mapping for methods that require ANSI marshalling.

See: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2101?view=vs-2019

* Previous fix for CA1806 misunderstood int result as hresult.  The actual return value is number of characters written.
NativeMethods.GetWindowText(hwnd, titleBuffer, sizeOfTitle);

* Previous fix for CA1806 misunderstood int result as hresult.  The actual return value is number of characters written.

NativeMethods.GetClassName(Hwnd, windowClassName, windowClassName.MaxCapacity);

* Removing unused window code.  This was done instead of validating fxcop changes in WindowIcon.

* Fixing typos in Window.cs (charachter -> character)
2020-09-10 09:44:22 -07:00
Alekhya
efd5c33a92 set object before using it (#6497) 2020-09-10 09:44:10 -07:00
Niels Laute
f589103f5d Change searchbox order to make text selectable (#6400)
Co-authored-by: Niels Laute <niels9001@hotmail.com>
2020-09-10 09:42:20 -07:00
vldmr11080
19175e9bde Introduce several fallback scenarios when obtaining GUID for current virtual desktop (#6534) 2020-09-10 14:42:36 +02:00
P-Storm
3137aaa660 Create unit tests for Calculator plugin (#6356)
* Refactored logic and made it unit testable

* Changes after code review

* Added to build steps, and modified bracket to new class with unittest. Validates complexer cases now.

Co-authored-by: p-storm <paul.de.man@gmail.com>
2020-09-09 20:01:30 -07:00
Clint Rutkas
cfda69a120 FxCop with ColorPicker (#6464)
* fxcop fixes

* more fixes, not done yet

* supressing 1031 and ca2000 since we are expressly disposing this correctly

* catching a possible crash due to null ref if run twice

* addressing feedback
2020-09-09 17:08:37 -07:00
Clint Rutkas
1027b7de72 Enabling FxCop on tests (#6481) 2020-09-09 15:33:18 -07:00
Arjun Balgovind
fb1888f01f Add in verbose error message and telemetry for SetWindowsHookEx failure (#6454)
* Updated error message when SetWindowsHookEx fails to show correct error message

* Added telemetry for exception in SG, FZ and KBM

* Rename exception to error
2020-09-09 14:27:40 -07:00
Divyansh Srivastava
f61e9d389f catch unhandled FileNotFoundException exception (#6456) 2020-09-09 11:33:28 -07:00
dependabot[bot]
936b02865f Bump http-proxy from 1.17.0 to 1.18.1 in /src/settings-web (#6455)
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.17.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.17.0...1.18.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-09 16:14:58 +02:00
yuyoyuppe
cbd3516fc4 installer: reduce notification spam 2020-09-09 12:50:31 +03:00
yuyoyuppe
c2d6f740a1 bootstrapper: handle the unhandled 2020-09-09 12:50:31 +03:00
Niels Laute
305a04ce69 [Settings] NumberBox headers fixes (#6227)
* Update from master

* Updated Numberbox headers
2020-09-08 15:28:57 -07:00
Arjun Balgovind
fdd7d6afa4 Add in missing telemetry for Keyboard Manager usage (#6393)
* Added key remap invoked telemetry event

* Added queryperformance call

* Added in telemetry for key and shortcut remaps

* Removed redundant if check
2020-09-08 14:40:02 -07:00
Alekhya
1a51f77fce Fix KBM Accessibility issues (#6379)
* Added an accessible name for the combo box

* Add name for the type shortcut button

* Add accessible name for the add new remapping button in both key remapping as well as shortcut remapping windows

* Set accessible names for the delete button

* Set the accessible name to the remapped to icon

* Fix the font icon issue faced while using narrator

* Fix accessible name for Add shortcut remapping button

* Set the accessible name for the target app text box when it loses focus

* fix comment
2020-09-08 12:24:59 -07:00
Arjun Balgovind
8ea8db7994 [PowerToys Run] Remove unused wox resources and move hardcoded strings to resx file (#6181)
* Removed xaml files, added resx file and removed references for PowerLauncher project

* Added resx file for wox.plugin

* Moved Calculator resources to resx

* Migrated resources for Folder and Indexer plugins

* Migrated resources for Program and Shell plugin

* Migrated resources for URI and Window Walker

* Removed GetTranslation, tests need to be refactored

* Removed internationalization classes

* Removed Wox.Core.Resource references

* Fixed Programs plugin tests

* Fixed tests

* Removed language xaml files from installer

* Added locProject.json files

* Fixed resource not found error

* Remove unused strings from PowerLauncher

* Removed all unused strings

* Reverted addition of resx file for Wox.Plugin

* Added more resources for Folder plugin

* Added resources for Folder and Indexer plugin

* Added resources for Program, Shell, Uri and WW plugins

* Changed string from Wox to PT Run

* managed common files
2020-09-08 11:51:24 -07:00
Divyansh Srivastava
cd906b0a6f Corrected querytext display on action keyword (#6341)
* Corrected querytexdisplay on action keyword

* Added tests for UpdateResultWithActionKeyword
2020-09-08 10:32:01 -07:00
Alekhya
85fa644aca Fix KBM Settings page Property related and screen reader Accessibility issues (#6289)
* Add accessible names for the KBM key remapping list and list item

* Add accessible name for the shortcut list item

* Add accessible name for shortcut remapping list

* Added accessible names to all icons

* Add accessible name for image

* Fix font icon narrator issue
2020-09-08 10:25:53 -07:00
Clint Rutkas
839d3f89d8 Update build-powertoys-ci.yml (#6384) 2020-09-08 10:24:33 -07:00
Divyansh Srivastava
52a06b5cdc [PT Run] Mitigate JSON Deserialization exception (#6295)
* Add error reporting window on deserialisation error

* Add message box to show launcher errors

* Change report window to messagebox

* nit fix in error window

* Localized string for error window

* update messagebox interface

* Correct ShowMessageBox argument order
2020-09-08 10:04:17 -07:00
Enrico Giordani
5065239266 [CDPx] add bootstrapper symbols (#6431) 2020-09-08 18:59:57 +02:00
vldmr11080
13426eac50 [FancyZones] Validate zone rect before adding it into layout (#6249)
* Validate zone rect before adding it into layout

* Rename variables for better code readability
2020-09-08 12:06:54 +02:00
Enrico Giordani
c5f90272d1 ImageResizer new icon (#6443) 2020-09-08 11:29:51 +02:00
yuyoyuppe
e0d6c2a4cd tools: add wmi monitor info powershell script 2020-09-07 15:47:40 +03:00
stefansjfw
3c76942799 [FancyZones] Update 'span zones across monitors' feature description and add message box warning accordingly (#6381)
* Update span accross monitors feature description in Settings App

* Add warning if scalings are different

* Address PR comments

* Address comment
2020-09-07 12:24:13 +02:00
twig
4ff888b2b0 Updated links under "How to create new PowerToys" (#6412)
They were 404'ing
2020-09-06 18:02:36 +02:00
Divyansh Srivastava
a0eaf077de [Pt Run] Show context menu for first folder plugin result (#6301)
* Added context menu to first folder result

* Added context menu to first folder result

* Add localization for string in folder plugin

* Fixed issue with context menu not showing on first selected item

* Add exception  logging
2020-09-04 15:12:04 -07:00
Arjun Balgovind
726f94e2a2 [Settings] Fix tabbing issues on KBM settings page (#6304)
* Removed listview items from tab ordering

* Removed tabstops on key/shortcut item controls to prevent double tab requirement
2020-09-04 12:42:41 -07:00
Kamesh Kotwani
19771b171c Updated .exe installer version number from 0.21.0 to 0.21.1 (#6355)
* fixed the .exe installer number

* updated .exe installer version number
2020-09-04 12:15:02 -07:00
Clint Rutkas
b4223967e8 Update README.md
adjusting to aka links
2020-09-04 10:39:50 -07:00
Niranjan
e57283460a devdocs: readme: fix grammar (#6375) 2020-09-04 09:22:28 -07:00
stefansjfw
78edaf5edc [FancyZones] Set 3-zones PriorityGrid as default layout (#6248)
* 3-zones Priority Grid as default layout

* Update tests

* Address PR comments
2020-09-04 16:37:06 +02:00
yuyoyuppe
91f0d40d1a docs: add bootstrapper cmd args description 2020-09-04 17:33:21 +03:00
yuyoyuppe
dacccf1415 docs: add monitor info report readme 2020-09-04 17:19:12 +03:00
yuyoyuppe
8fcb76e300 tools: monitor report info 2020-09-04 17:19:12 +03:00
vldmr11080
24906e6fa5 [FancyZones] FancyZones draw layout test tool (#6358)
* FancyZones draw layout test tool

* Fix formatting in resource file
2020-09-04 11:55:26 +02:00
Seraphima Zykova
570065175c [Settings] Temporary string showing the latest available version (#6254) 2020-09-04 11:56:52 +03:00
stefansjfw
e84a293642 Fix span accross monitors feature (#6335) 2020-09-04 10:11:05 +02:00
Adrian Campos
41559d8742 Fix typo in readme (#6350)
"Experiential" -> "Experimental"
2020-09-04 09:42:46 +02:00
martinchrzan
6e898ae52d Added pixel reveal effect, increased max zoom level to 4, added rounded corners to main and zoom window (#6242) 2020-09-03 23:31:27 +02:00
Arjun Balgovind
288d929477 [Settings] Changed ImageSize class to parse as double instead of int (#6299)
* Changed ImageSize class to parse as double instead of int

* Tweaked fix to resolve empty ImageResizer box fix
2020-09-03 13:43:55 -07:00
Jeremy Wu
807fbd4d89 fix missing fragment portion of LocalPath (#6257) 2020-09-03 12:46:34 -07:00
ryanbodrug-microsoft
6ce47e5cd9 Adding fxcop to PowerLauncher.TelemetryProject (#6259) 2020-09-03 10:44:51 -07:00
Clint Rutkas
712d5fbfa7 fixing the fody warning (#6164)
* fixing the fody warning

* removing the ignored item from the installer
2020-09-03 09:49:28 -07:00
Aaron Junker
8d3380b388 Implement #6312 (#6315) 2020-09-03 09:19:00 -07:00
Seraphima Zykova
c9855a2671 [FancyZones] Fixed type cast warning (#6311) 2020-09-03 17:50:49 +03:00
Enrico Giordani
c887f0ce5b [chore] disable PowerRename unit tests in CI (#6319) 2020-09-03 12:59:54 +02:00
Enrico Giordani
64ee0015d1 [chore] fix line endings (#6307) 2020-09-03 11:44:46 +02:00
Arjun Balgovind
1b598ad87e [Localization] Move PowerToys Run string resources from xaml files to resx (#6165)
* Removed xaml files, added resx file and removed references for PowerLauncher project

* Added resx file for wox.plugin

* Moved Calculator resources to resx

* Migrated resources for Folder and Indexer plugins

* Migrated resources for Program and Shell plugin

* Migrated resources for URI and Window Walker

* Removed GetTranslation, tests need to be refactored

* Removed internationalization classes

* Removed Wox.Core.Resource references

* Fixed Programs plugin tests

* Fixed tests

* Removed language xaml files from installer

* Added locProject.json files

* Fixed resource not found error

* Reverted addition of resx file for Wox.Plugin
2020-09-02 15:24:59 -07:00
Alekhya
c9f536c635 fix for argument out of range exception (#6269) 2020-09-02 13:39:57 -07:00
Divyansh Srivastava
742f4fe36d [Pt Run] Narrator support for result view navigation (#6146)
* Screen reader detecting List view

* Fixed narrator text for listview items and context menu items

* Renamed custom textbox to a more meanigful name

* Renamed custom textbox to a more meanigful name

* Fix formatting of LauncherControl.xaml

* Added support to control multiple elements
2020-09-02 13:34:07 -07:00
Clint Rutkas
fc34c05a2f Update README.md 2020-09-02 12:36:40 -07:00
Clint Rutkas
84055a420b 0.21 readme (#6291)
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2020-09-02 12:26:35 -07:00
Niels Laute
e5ec08ff9d [Read me] Adding videoconference images (#6287)
* Update from master

* Added videoconference images
2020-09-02 10:37:44 -07:00
Enrico Giordani
06267f5a03 Now working on 0.21.2 (#6286) 2020-09-02 10:18:14 -07:00
Enrico Giordani
824bec2784 Update version to 0.21.1 (#6284) 2020-09-02 09:57:55 -07:00
Seraphima Zykova
cb81f7b057 [FancyZones] Convert ARGB color values to RGB (#6277) 2020-09-02 19:27:35 +03:00
Seraphima Zykova
ce43b10b5b [FancyZones] HEX to RGB util (#6275) 2020-09-02 18:34:17 +03:00
Arjun Balgovind
0349383d08 [PowerToys Run] Fix error reporting window for exceptions that are not on the dispatcher thread (#6221)
* Possible fix for dispatcher error

* Revert changes on other files
2020-08-31 10:22:00 -07:00
Divyansh Srivastava
777e1dc48c Fix color issue in search box (#6222) 2020-08-28 17:18:46 -07:00
Divyansh Srivastava
fe8727bd94 Fix issue with autocomplete text remaining on clearing query (#6220) 2020-08-28 14:58:57 -07:00
Enrico Giordani
6a531ca57c Update version to 0.21.0 (#6219) 2020-08-28 20:57:03 +02:00
Clint Rutkas
1d9c15b1cc Update community.md 2020-08-28 10:09:06 -07:00
yuyoyuppe
fc4ac803aa common: do not accept invalid input in VersionHelper and add negative unit tests 2020-08-28 16:37:12 +03:00
yuyoyuppe
870f1095cd setup: add --help and --no_dotnet commands 2020-08-28 16:37:12 +03:00
yuyoyuppe
4e969a3701 bootstrapper: do not specify patch version of .net core in the notification msgs 2020-08-28 16:37:12 +03:00
stefansjfw
0a603449ad [FancyZones] Enable to manually zone child windows (#6182)
* Enable to manually zone child windows

* Refactor IsInterestingWindow in 2 separate functions

* Remove enum
2020-08-28 15:00:21 +02:00
Enrico Giordani
d51640c2f0 [PowerRename] fix build warning (#6210)
PowerRenameUWPUI uses the resources from powerrename\dll\Resources.resx
2020-08-28 14:45:24 +02:00
Ivan Stošić
be8695777c Fixed a stack overflow (#6212)
Credits to @gurnec for proposing the fix.
2020-08-28 13:54:59 +02:00
Enrico Giordani
eb825ae619 [FancyZones] fix warning (#6203) 2020-08-28 11:30:03 +02:00
Yevhenii Holovachov
40a4a6a1a8 Clean Up tool (#5994)
* Initial commit

* Code review changes

* Added PowerShell script to clean up PowerToys

* Removed commented code

* Added about and comments to script, fixed deleting of DontShowThisAgain directory inside registry

* Added type to var's, changed positions of comments

* Changed RegDeleteKey to RegDeleteTree
2020-08-27 11:19:49 +03:00
Arjun Balgovind
07dfa6f296 Fix runner crashing on launching Keyboard Manager UI (#6185)
* Added maxVersionTested back to the manifest

* Updated comment with link to docs
2020-08-26 15:57:25 -07:00
Ivan Stošić
cb52cb2549 Improved the KB Hook in Color Picker (#6175)
* Improved the KB Hook in Color Picker

* Update KeyboardMonitor.cs

* Further simplify a method

* Using var

* Update KeyboardMonitor.cs

Add return;
2020-08-26 18:21:22 +02:00
Enrico Giordani
26b73b0745 [ColorPicker] proper Trace::UnregisterProvider(); (#6155) 2020-08-26 18:15:09 +02:00
Chris Davis
fead0c5ad9 Allow embedded images in SVGs to be displayed (#6163)
* Add DLIMAGES to WebBrowserExt ambient control flags to allow display of img links in SVGs.  We still specify FORCEOFFLINE so we are not actually performing a download.  This is to target SVGs with xlink base64 encoded data.

* Fix unit test
2020-08-26 09:06:42 -07:00
Mehmet Murat Akburak
c3652786ff Use en-Us locale when using ToUpper() (#6177) 2020-08-26 17:54:28 +03:00
Arjun Balgovind
3bd6c363de Added missing ! to condition check (#6162) 2020-08-25 12:07:17 -07:00
stefansjfw
48b6654ad2 Introduce ZoneWindowDrawing files and move stuff to better place (#6142) 2020-08-25 18:55:29 +02:00
ryanbodrug-microsoft
2075f9fa71 Comparing exepected vs actual json strings. This fixes two issues. (#6145)
1) the same variables are being compared against each other.
2) BasePTSettingsTest doesn't override equals to Equals compares the objects. This change compares the json strings directly.
2020-08-25 09:07:44 -07:00
Seraphima Zykova
96fdb6169a Warning fix: __NULL_IMPORT_DESCRIPTOR already defined in Pathcch.lib (#6150) 2020-08-25 12:52:25 +03:00
Seraphima Zykova
6d47a5477a Warning fix: C++/CLI mode does not support C++ versions newer than C++17 (#5910) 2020-08-25 12:21:30 +03:00
Mehmet Murat Akburak
d3b80b26e3 [PowerRename] Add Filtering Feature (#6017)
* Implement basic functionality

* Change approach.
move filter controls to manager
edit redrawing to always work with new GetVisibleItemCount() and GetVisibleItemByIndex() calls

* Fix performance issues. Some refactoring.

* Handle toggleAll correctly

* Handle dangling elements when filter is on

Make an item visible if it has at least one visible subitem

* Support filtering for selected and shouldRename

* Refactor for readability, remove useless member from PowerRenameUI

* Change variable names in PowerRenameUI for clarity

Use wrapper function RedrawItems() and SetItemCount() for consistency

* Handle result value properly in getVisibleItemByIndex()

* Add FlagsApplicable filter

* Add visual indication of filters

* Improve performance

Check if no filter is selected
Call SetItemCount() only when necessary

* Refactor for readability

* Get lock in setVisible()

* Change function names to camel case

* Change function names to start with uppercase

* Change filter behaviour when search area is empty

Show all elements when search area is empty and ShouldRename filter is selected
Avoid warnings

* Resolve conflicts
2020-08-25 08:22:05 +03:00
Arjun Balgovind
3ede1a0b53 [Localization] Migrate resources to resx for PowerRename (#6112)
* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file

* Fixed file names

* Changed to check folder for LocProject files

* Updated folder

* Changed directory

* Changed to src directory

* Changed language set and name format, removed rc file localization

* Added all projects with resx/resw files

* Added newline to end of file

* Removed nuget source as it is not used

* Updated comments

* Updated keyboard manager to use resx file

* Tweaked resources.resx and added it to project files

* Added comments and added in string table to resx script

* Remove change from bad merge

* Fix syntax error in convert stringtable

* Changed file type to None

* Migrated color picker's resources

* Migrated resources for Microsoft.Launcher

* Migrated resources for fancy zones

* Revert fancyzones changes

* Migrated resources for ImageResizer and modified script to add language specific code

* Added try catch and checks for modification to avoid unnecessary file creation

* Changed tab insertion to 4 spaces to avoid mixed file types in rc file

* Migrated resources for power preview project

* Added LocProject.json file for 5 projects

* added resgen exception check

* Moved non-localizable strings out of resx for powerpreview

* Move out hardcoded strings from dialog box and set them at runtime from string table

* Migrated resources for powerrename

* Added locproj

* Added missing ImageBase extern declaration

* Added build script in UWP UI project since PowerRenameExt is not referenced

* Resolved merge conflicts
2020-08-24 17:51:48 -07:00
Arjun Balgovind
aebd7657ef [Localization] Migrate resources to resx for FancyZones (#6106)
* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file
2020-08-24 17:50:41 -07:00
Arjun Balgovind
15938a12be [Localization] Migrate resources to resx for Shortcut Guide (#6104)
* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file

* Fixed file names

* Changed to check folder for LocProject files

* Updated folder

* Changed directory

* Changed to src directory

* Changed language set and name format, removed rc file localization

* Added all projects with resx/resw files

* Added newline to end of file

* Removed nuget source as it is not used

* Updated comments

* Updated keyboard manager to use resx file

* Tweaked resources.resx and added it to project files

* Added comments and added in string table to resx script

* Remove change from bad merge

* Fix syntax error in convert stringtable

* Changed file type to None

* Migrated color picker's resources

* Migrated resources for Microsoft.Launcher

* Migrated resources for fancy zones

* Revert fancyzones changes

* Migrated resources for ImageResizer and modified script to add language specific code

* Added try catch and checks for modification to avoid unnecessary file creation

* Changed tab insertion to 4 spaces to avoid mixed file types in rc file

* Migrated resources for power preview project

* Added LocProject.json file for 5 projects

* added resgen exception check

* Moved non-localizable strings out of resx for powerpreview

* Migrated shortcut guide resources to resx

* Added LocProject.json
2020-08-24 17:49:28 -07:00
Arjun Balgovind
f2cfd90c46 [Localization] Move rc files to resx (#6057)
* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file

* Fixed file names

* Changed to check folder for LocProject files

* Updated folder

* Changed directory

* Changed to src directory

* Changed language set and name format, removed rc file localization

* Added all projects with resx/resw files

* Added newline to end of file

* Removed nuget source as it is not used

* Updated comments

* Updated keyboard manager to use resx file

* Tweaked resources.resx and added it to project files

* Added comments and added in string table to resx script

* Remove change from bad merge

* Fix syntax error in convert stringtable

* Changed file type to None

* Migrated color picker's resources

* Migrated resources for Microsoft.Launcher

* Migrated resources for fancy zones

* Revert fancyzones changes

* Migrated resources for ImageResizer and modified script to add language specific code

* Added try catch and checks for modification to avoid unnecessary file creation

* Changed tab insertion to 4 spaces to avoid mixed file types in rc file

* Migrated resources for power preview project

* Added LocProject.json file for 5 projects

* added resgen exception check

* Moved non-localizable strings out of resx for powerpreview
2020-08-24 15:10:50 -07:00
Divyansh Srivastava
f3a55d96f5 Remove the code for saving/writing program plugin cache (#6107) 2020-08-24 10:50:54 -07:00
Alekhya
392ca87dab Fix Accessibility issues of the shortcut guide settings page (#6091)
* set the labeled by property of number box to point to the textblock heading so that 'Press duration before showing (ms)' string is read when the number box is highlighted

* Added comments on the accessibility issues that are dependent on the winui radiobuttons control

* Added information to the shortcut guide image on the right, it previously said only the word graphic
2020-08-24 10:48:45 -07:00
Alekhya
ff48421e4f Add info about the color picker image (#6097) 2020-08-24 10:48:35 -07:00
Alekhya
f6579184a2 Add information about the image (#6099) 2020-08-24 10:48:24 -07:00
Alekhya
c0c68f6acd Fix Accessibility issues in the PowerRename settings page (#6101)
* add automation property to number box

* Set the automation property for the image
2020-08-24 10:48:12 -07:00
Alekhya
f2fd376363 Fix Accessibility issues of the Image Resizer settings page (#6109)
* Added an automation name to the custom list view

* Added an automation property for the text box

* changed the name to 'Configuration'

* Added an automation property for the combo box

* Add automation property for number box

* added a name for the times symbol

* Added the height name automation property

* Add automation property for image resizer size combo box

* Add name and uid for button

* Add automation name for the grouping of list views

* Add automation property label for number box

* Add name for the filename format edit box

* Added more information to the image
2020-08-24 10:47:59 -07:00
stefansjfw
9999a2b126 Refactor common and fancyzones/utils (#6073)
* Move module-specific functions to module

* Refactor FZ utils

* Remove 'zonable' from FancyZonesWindowInfo

* Address PR comments

* Address PR comments

* Fix stuff after rebasing
2020-08-24 19:38:15 +02:00
Enrico Giordani
2817bf4d62 [FancyZones] fix warnings (#6095)
unified data type to size_t in all methods that process the zone index set
2020-08-24 14:39:34 +02:00
Seraphima Zykova
845bb466c6 [FancyZones] Shift + StickyKeys behavior fix (#6039) 2020-08-24 10:19:39 +03:00
Clint Rutkas
f64df97652 adding in FxCop to Svg tests (#6111) 2020-08-21 17:23:42 -07:00
Divyansh Srivastava
9c6b2c3e81 Display colored icons for packaged apps (#5923)
* Added wox code for tiling

* nit fixes in plating function

* Added feature to plate images based on theme

* Improve code readability

* added altform based paths

* Error handling in fetching logo

* Re add fix sequence empty exception on calling max in program plugin

* Move path and logo setting code to setIcon function

* Add corner radius to packaged apps icon

* Revert "Add corner radius to packaged apps icon"

This reverts commit 9be496e662.
2020-08-21 13:39:08 -07:00
Clint Rutkas
83e8799610 init checkin (#6100) 2020-08-21 12:40:31 -07:00
Alekhya
80f8c0399b To remove the condition that space is needed after the Action keyword (#6003)
* Returning individual queries for each plugin

* Changed cancellation token from Query type to directly using the rawQuery

* Changed the way we get the plugins for which we execute the query

* updated UpdateResultView to take a string instead of query

* Changed the way we set a query for each plugin

* removed todo comment

* global plugins are added as a part of the query builder

* Fix for plugin.json of Folder plugin being copied into the shell plugin

* >,< and : are not allowed in file paths and indexer creates a query which searches compares if a file name is greater than or lesser than the query

* Reformatted the regex

* catching the exception

* fixed existing tests

* modified it so that it works with action keyword as well as action keywords

* Added unit tests for non global plugins

* fixed test

* add back whitespace that was removed by mistake

* fix regex

* modified the cold start query

* remove extra condition

* terms being modified as expected

* used key value pairs to iterate through the dictionary

* renamed variable

* added check for an empty dictionary

* remove : because it may appear in the file path

* fix some whitespace warnings that were being treated as errors
2020-08-21 12:21:42 -07:00
Alekhya
f6b5840e0e Fix Accessibility issues of the FancyZones Settings page (#6045)
* Added automation property for the button

* Added an automation property name for the glyph

* added name automation property for the shortcut window

* fixed the name null for zone highlight button

* fixed the name for the inactive color dropdown

* fixed the accessibility issue with the border color downdown button

* fixed the issue with dropdowb buttons

* add description to the image

* Capitalize Z otherwise it reads it in an expected way

* made the naming generic as it the custom window is not only specific to fancyzones but is also used by colorpicker and PTRun to set their shortcut
2020-08-21 12:21:23 -07:00
Alekhya
b5dec2e935 Fix Accessibility Issues of PT Run settings page (#6090)
* label number box

* Added information to the PTRun image on the right
2020-08-21 12:21:15 -07:00
ryanbodrug-microsoft
79bb68d784 User/ryanbod/shell plugin fxcop (#6043)
* Enabling FxCop static analysis.

* Fixes for CA2227 Change 'Count' to be read-only by removing the property setter.
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019

* Fix for:  CA1822: Mark members as static
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019

* Fix for CA1805: Do not initialize unnecessarily.
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019

* Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active

* Severity Code Description Project File Line Suppression State
Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active

* Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019

* Fix for CA1062: Validate arguments of public methods
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019

* Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
Ivan Stošić
976116a012 Win arrows revisited (#5932)
* Added the setting

* Refactored existing code, the main feature isn't implemented yet

* Renamed a method

* Updated a comment in IZoneWindow

* Added the zone selection algorithm, didn't test it

* Basic features work

* Single monitor cycling works

* Seems that the feature works well

* Polished the settings page

* Rebase fix

* Fixed a null pointer dereference

* Use classic if syntax

* Fixed bad indentation

How did these lines unindent themselves?

* Removed TODO comment

* Rebase fix

* Another rebase fix
2020-08-21 12:53:03 +02:00
Seraphima Zykova
64c51a49a0 [FancyZones] Failing unit tests update (#6065) 2020-08-21 08:56:25 +03:00
Clint Rutkas
cc0b808962 Blurry Text for PT Run improvements (#6049)
* Checking in adjustments based off @anuthadev pr's

* Forcing an improvement on the magnifier glass

* removing whitespace
2020-08-20 21:45:55 -07:00
Seraphima Zykova
9b567f9ba3 [FancyZones] capture strong_this (#6066) 2020-08-20 19:55:41 +03:00
Enrico Giordani
9a36b005a1 [Shortcut Guide] fix Virtual-Key codes range (#6025) 2020-08-20 12:24:06 +02:00
ryanbodrug-microsoft
2390368d03 Fix for Crash due to System.AccessViolationException when calling OleDBSearch from multiple threads. (#6052)
* Removing non thread safe member variables, as well as the check to ensure that they have been disposed.

* Removing 'ExecuteQuery_ShouldDisposeAllConnections_AfterFunctionCall'.

This call previously required the use of member variables that were not thread safe.   There is no reason to share this state across threads.  Arguably this test verifies an internal implementation detail and is not suitable for a unit test anyway.
2020-08-19 17:28:19 -07:00
Mehmet Murat Akburak
64106cba82 [PowerRename] Using File Attributes Update (#5250)
* Use only fff for milliseconds

* Refactor

* Handle double $ signs.
Move isFileAttributes check to Helpers.
Move File Attributes to perform before regex operation

* Fix typo

* Format date/time test

* Disable problematic features. Add comments

* Fix month/day names

* Add tests

* Add line between tests

* Add local month/day names support

* Make sure month/date names are capitalized

* Fix formatting
2020-08-20 02:53:09 +03:00
Divyansh Srivastava
69cb20e1cd Re add fix sequence empty exception on calling max in program plugin (#6054) 2020-08-19 16:16:45 -07:00
Arjun Balgovind
2a7bf7fb5b [Localization] Add localization step to pipeline and enable localization on C# projects with resx/resw resource files (#6033)
* Added localization code to pipeline and created one LocProject json for Settings

* Fixed typo

* Reordered nuget source

* Moved nuget install to restore step

* Added FZ.rc file to LocProj

* Added FZ resx file and modified rc file

* Fixed file names

* Changed to check folder for LocProject files

* Updated folder

* Changed directory

* Changed to src directory

* Changed language set and name format, removed rc file localization

* Added all projects with resx/resw files

* Added newline to end of file

* Removed nuget source as it is not used

* Updated comments

* Fixed formatting of json file

* Move loc step to end
2020-08-19 16:10:15 -07:00
Clint Rutkas
dc744f236e [warningsAsErrors] Getting settings online (#6053)
* getting everything to compile

* fixing json
2020-08-19 15:59:10 -07:00
Divyansh Srivastava
9724afd9ec Run UI contrast accessibility (#6027)
* Fix contrast ration for SecondaryTextForeground brush

* Improve contrast for context menu button
2020-08-19 11:38:49 -07:00
Alekhya
34e7467d16 Fix accessibility issues related to the General Settings page (#6034)
* grouped radio buttons together

* grouping radio buttons together

* the word version is now read along with the version number

* Information regarding the image is read

* added a comment with the link to the issue in the winui repository
2020-08-19 11:29:13 -07:00
stefansjfw
7eccb6fc7a Delete custom layout if malformed (#6011) 2020-08-19 18:12:57 +02:00
Nkateko
0445e89747 [Settings] Migrate PT Run Settings (#5768)
* added MSTest project

* Migrated PT Run Tests

* reverted changes to xaml file

* fixed Sttings.UI.csproj file

* added parameter for default key code
2020-08-19 08:12:07 -07:00
Nkateko
953ab958d5 [Settings] Migrate Fancy Zones Settings Tests (#5762)
* added MSTest project

* [Settings] Migrate Fancy Zones Settings Tests

* fixed errors

* reverted changes to xaml file

* updated varibale for test folder

* add ignore case flag

* fixed Sttings.UI.csproj file

* fixed Sttings.UI.csproj file
2020-08-18 14:46:32 -07:00
Nkateko
5e13152c73 [Settings] Migrated Image Resizer Tests (#5765)
* added MSTest project

* Migrated Image Resizer Tests

* fixed links

* removed exception
2020-08-18 13:43:58 -07:00
ryanbodrug-microsoft
8c98c7df29 attempting to run CI unittests for .netcore and .netframework projects (#5886)
* attempting to run CI unittests as seperate passes for .netframework and .netcore, based on assemblies.

* Mocking CSearchManager to avoid the following exception running in CI.

Retrieving the COM class factory for component with CLSID {7D096C5F-AC08-4F1F-BEB7-5C22C517CE39} failed due to the following error: 80070422 The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. (0x80070422).

* Setting proper connection string for unit test.

* Mocking sqlQuery with FilePath vs m*

* Temporarily Ignoring test that is throwing exception in CI.
2020-08-18 13:19:35 -07:00
Divyansh Srivastava
cedc4f710e Catch exception in save method for json class (#5950)
* Catch exception in save method for json class

* Update error message

* Correct error logging format

* Catch IO exception
2020-08-18 10:50:16 -07:00
Seraphima Zykova
13d61bd866 WinAppDriver tests update (#5882)
* tray button fix
* settings closing changed
* ignore old settings tests
* changed test init
* changed launch
* separated app history file
* select enabled modules on launch
2020-08-18 12:23:43 +03:00
Nkateko
c6c9839208 [Settings] KBM Migrated KBM Settings Tests (#5821)
* added MSTest project

* enabled settings tests run in the build pipeline

* migrated KBM settings

* fixed typo

* moved the callback function initialization to the top

* fixed build
2020-08-17 15:00:19 -07:00
Clint Rutkas
2ff439dc47 fixing warnings, per ryan suggestion, suprressing warning now. we'll revisit the if debug blocks later (#6010) 2020-08-17 14:52:27 -07:00
Niels Laute
dad8cbecc1 [Launcher] ReportWindow redesign and theming support (#5790)
* Updated adaptive trigger behavior

* Fixed wrapping for KBM subtitle textblock

* Fix

* Theme support for ReportWindow

* Fix

* Fix

* Spacing issue fix

* Revert "Fix"

This reverts commit 8b2812e2de.

* Revert "Fixed wrapping for KBM subtitle textblock"

This reverts commit aa9ec54121.

* Revert "Updated adaptive trigger behavior"

This reverts commit e6f4ed27a1.

* Update ReportWindow.xaml.cs

* Update ReportWindow.xaml.cs

* Update ReportWindow.xaml.cs

* Removed redundant code, fixed trailing issue

Co-authored-by: Niels Laute <niels9001@hotmail.com>
2020-08-17 13:48:54 -07:00
Arjun Balgovind
8f8b200f24 Move hardcoded strings in Keyboard Manager projects to rc file (#5921)
* moved all strings in c++ side to rc file

* Fixed formatting
2020-08-17 13:46:50 -07:00
Clint Rutkas
8dec9d5fe9 Fixing color picker warnings and enabling warnings as errors (#6006) 2020-08-17 13:13:45 -07:00
Clint Rutkas
e671c913ab Removind depercated fields (#6008) 2020-08-17 13:13:11 -07:00
Clint Rutkas
9d46fae865 Enabling warnings as errors and correcting StyleCop issues (#6007) 2020-08-17 13:11:59 -07:00
Clint Rutkas
315caaba1c [WarningsAsErrors] Getting Most online (#6005)
* Enabling errors as warnings.

* removing plugin since it throws an error for release mode,  WIll fix in other release
2020-08-17 13:11:40 -07:00
Nkateko
7af4ffe341 [Settings] Migrate File Explorer Preview Settings (#5785)
* added MSTest project

* migrate file explorer preview settings

* updated test file

* fixed build
2020-08-17 13:10:56 -07:00
Enrico Giordani
8bf730baae Remove 'AnyCPU' build configuration (#5999) 2020-08-17 20:17:16 +02:00
Clint Rutkas
0b3826d2dd Move alt installers to new file (#6001)
* Create unofficalInstallMethods.md

* Update README.md

* Update unofficalInstallMethods.md
2020-08-17 11:11:07 -07:00
Clint Rutkas
d055ba1c3b whitespace forced changes (#6002) 2020-08-17 10:00:56 -07:00
Aaron Junker
649e7e103d Update de.xaml (#5227)
* Update de.xaml

* Update de.xaml
2020-08-17 09:25:10 -07:00
Rashil Gandhi
bcdfb212fc Add Scoop (Unofficial) installation method (#5979) 2020-08-17 08:42:51 -07:00
Seraphima Zykova
947bf10c2f Warning fix: calling convention of '__cdecl ' ignored; '__clrcall ' used instead (#5931) 2020-08-17 16:41:11 +03:00
Ivan Stošić
2e48b583c0 Remove deleted files from the solution (#5996) 2020-08-17 13:24:39 +02:00
Roy
55dc5dc19d [Powertoys Run] Implemented "hidden files" flag in native Windows Search (#5500)
* Implemented "hidden files" flag in native Windows Search

* add missing file

* Change InitQueryHelper back to static

* Fix Line Endings

* Add files via github

Co-authored-by: Roy <royvou@hotmailcom>
2020-08-15 14:11:56 -07:00
martinchrzan
04c80915e5 Trying to dispose mouse hook earlier to potentialy fix the lagging mouse bug after selecting the color (#5530) 2020-08-15 17:28:53 +02:00
Clint Rutkas
be36b4aac1 correctin file ending (#5970) 2020-08-14 15:10:06 -07:00
Nkateko
2ce16bcdb7 [Settings] Migrate PowerRename Tests (#5787)
* added MSTest project

* migrated powerrename tests

* updated test

* reverted changes to xaml file
2020-08-14 14:26:41 -07:00
Nkateko
1683f191a9 [Settings] Migrate Shortcut Guide Settings Tests (#5789)
* added MSTest project

* migrated shortcut guide tests

* updated tests

* updated tests

* reverted changes to xaml file
2020-08-14 13:58:48 -07:00
Clint Rutkas
70d93a0bfc C26819 - Directly stating this fallthrough is correct (#5967)
* Directly stating this fallthrough is correct

* Update MockedInput.cpp

Adjust per Arjun
2020-08-14 13:35:58 -07:00
Clint Rutkas
6514712054 [stylecop] Launcher (#5968)
* Should be last stylecop change!

* two more tweaks
2020-08-14 13:35:06 -07:00
Clint Rutkas
e0a1b478a1 Program plugin fully on stylecop (#5964) 2020-08-14 12:46:23 -07:00
Clint Rutkas
be5d58c849 incorrect override of SA1401 (#5965) 2020-08-14 12:41:55 -07:00
Clint Rutkas
e4f9c02d11 Lots of small tweaks (#5960) 2020-08-14 11:50:14 -07:00
Clint Rutkas
b8d720d06f Update .gitattributes to make line endings consistent (#5942)
* Update .gitattributes

* Update .gitattributes

* Update .gitattributes
2020-08-14 11:38:10 -07:00
Clint Rutkas
5c1713f274 wrapping up everything minus var renaming (#5952) 2020-08-14 09:22:24 -07:00
Clint Rutkas
913615f1c2 more braces and whitespace style errors (#5951) 2020-08-14 09:22:12 -07:00
Arjun Balgovind
9e8b0d2807 Refactored Keyboard Manager UI code and added unit tests for Keyboard Manager UI (#5718)
* Added tests for loading and saving remappings in the UI

* Added tests for ApplyRemappings methods

* Moved single key remap validation logic to separate method so that it can be tested

* Added tests for single key remap validation in UI

* Refactored shortcut validation code to be testable

* Added some shortcut validation tests

* Refactored code to be cleaner

* Added tests for action key and modifier key selection and formatted file

* Added tests for selecting None

* Added tests for selecting Null

* Added tests for WinL error

* Added CtrlAltDel tests

* Added tests for MapToSameKey

* Added tests for mapping repeated shortcut

* Fixed const correctness

* Clean up type names with type alias

* Clean up ValidateAndUpdateKeyBufferElement tests and tweak ValidateShortcutBufferElement signature

* Fixed bug when None selected

* Refactored one test as per test case framework

* Cleaned up more tests

* Cleaned up buffer validation tests

* Added tests for KBM Common Helpers and Shortcut
2020-08-13 16:32:15 -07:00
Nkateko
0b5749d491 [Settings] Migrate Color Picker Settings Tests (#5759)
* added MSTest project

* migrated color picker settings

* undo changes for the .xaml page
2020-08-13 15:46:51 -07:00
Clint Rutkas
23a9fa40e7 Additional formatting tweaks (#5909) 2020-08-13 15:32:12 -07:00
Clint Rutkas
38b0d427f8 Fix all file naming tweaks (#5945) 2020-08-13 15:31:32 -07:00
Clint Rutkas
e02977edc0 Whitespace and type fixes (#5917) 2020-08-13 15:31:14 -07:00
Nkateko
24d7232559 [Settings Tests] Migrate General Settings tests (#5753)
* added MSTest project

* migrated general settings tests

* enabled settings tests run in the build pipeline

* added tests

* move relay command class to separate file

* added a foldername parameter for general settings view model
2020-08-13 15:02:05 -07:00
Clint Rutkas
e4ea8d2abd Correcting floating point error (#5949) 2020-08-13 14:02:38 -07:00
Nkateko
ebd1a6406b [Settings] Unit Tests Migration Feature Branch Merge (#5754)
* added MSTest project

* enabled settings tests run in the build pipeline

* re-added settings test project

* re-added test project and sample test

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* updated settings test output path

* updated output path for release config

* added xunit test project

* removed xunit test project

* fix build

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-ci.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-ci.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml
2020-08-13 13:51:01 -07:00
Clint Rutkas
d1ee9ebbd9 Update readme.md (#5939) 2020-08-13 11:32:36 -07:00
Clint Rutkas
5079ee67c3 [stylecop] program plugin unit tests part2 (#5925)
* Another batch

* Commenting out stylecop
2020-08-13 11:10:55 -07:00
Seraphima Zykova
9592fab414 Warning fix: removed additional dependencies in common project (#5930) 2020-08-13 15:25:36 +03:00
Enrico Giordani
f36858d074 update readme for WinAppDriver tests (#5927) 2020-08-13 13:08:36 +02:00
Seraphima Zykova
1b8bb7c445 Warning fix: Variable is uninitialized. Always initialize a member variable (#5928) 2020-08-13 13:48:15 +03:00
Divyansh Srivastava
f499ff81f2 Prevent copying of files from folder to shell plugin (#5893) 2020-08-12 15:16:29 -07:00
Alekhya
e80c7b6b45 Fix for PowerLauncher crash - Type Load Exception (#5906)
* Added the version number for all launcher projects so that they are in sync with the powerToys version number

* Removed internals visible to Wox.dll as we no longer have that library
2020-08-12 14:18:01 -07:00
Arjun Balgovind
f3babcb46e Fixed exceptions in indexer and delayed execution logic (#5912) 2020-08-12 12:44:55 -07:00
Clint Rutkas
95e82ca359 [stylecop] program plugin/unit test first pass (#5908)
* initial pass

* multiple whitespace fixes
2020-08-12 11:46:11 -07:00
Clint Rutkas
8888739867 fixing all warnings and info for infra (#5891) 2020-08-12 10:44:58 -07:00
ryanbodrug-microsoft
db6e9b6962 Adding FxCop to Program Plugin Unit Tests (#5884)
* Adding FxCop to Microsoft.Plugin.Program.UnitTests

* CA1707: Identifiers should not contain underscores
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1707?view=vs-2019

* CA1307: Specify StringComparison
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019

* CA1812: Avoid uninstantiated internal classes
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1812?view=vs-2019

* More CA1707: Identifiers should not contain underscores fixes now that class is public

* More fixes for https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1812?view=vs-2019

List Repository and Win32ProgramRepository

* More CA1707: Identifiers should not contain underscores fixes now that class is public

ListRepository and Win32ProgramRepository tests

* Adding `ConfigureAwait(false)` and removing Assert.DoesNotThrowAsync as thowing an exception will fail the test anyway, and the DoesNotThrowAsync method can't be awaited.

Fix for CA2007: Do not directly await a Task (Consider calling ConfigureAwait on the task).

CS1998 This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.

* Setting treat warning as errors to true for release and debug.
2020-08-12 10:03:34 -07:00
Clint Rutkas
a0832d3fb6 enabling stylecop (#5885) 2020-08-11 16:35:58 -07:00
Divyansh Srivastava
1c77887629 Reduce folder plugin results (#5631)
* Reduce folder plugin results

* Added warning message

* Added UI content for warning message in folder plugin

* nit fixes for folder plugin changes

* Localised warning message

* fix Merge conflicts

* nit fixes and move warning to end of results

* Add IDisposable interface to folder plugin

* Add images to MSI
2020-08-11 15:06:40 -07:00
Arjun Balgovind
dcd0ca8daa [PT Run] Split indexer plugin's queries into a fast and slow query (#5748)
* Added regex code

* Added regex based method to remove all LIKE queries

* Made regex readonly

* Added plugin interface and code to execute slower plugins after the fast plugins

* Added scoring for indexer and added statement to remove old indexer results

* Refactored from master and added thread sleep for debugging

* Removed lock from indexer plugin and added checks to avoid exceptions

* Remove debug statement

* Removed selected index update and fixed tests not building

* Added tests

* Removed scoring

* Removed lock

* Resolve merge conflicts

* Moved dispatcher code to function and add parallel foreach loop

* Removed DelayedExec metadata and modified QueryForPlugin to run only delayed exec plugins when bool param is true

* Removed metadata from plugin.json
2020-08-11 14:52:03 -07:00
Clint Rutkas
304981fcf2 [stylecop] Wox.Core - last amount needed to fully integrate (#5877)
* Looks like it was done

* StyleCop enabled for WoxCore
2020-08-11 14:12:08 -07:00
Clint Rutkas
f1bb533321 [StyleCop] Wox.Plugin - last amount needed to fully integrate (#5853)
* StyleCop for Plugin

* getting release mode working
2020-08-11 13:41:41 -07:00
Clint Rutkas
2c49df4be3 more fixes for getting styleCop up, this will need one more push to get another 15 that will require renaming of vars (#5875) 2020-08-11 13:40:26 -07:00
Roy
90502f7553 Add Microsoft.Plugin.Uri.UnitTests to CI + Fix Tests (#5878)
Co-authored-by: Roy <royvou@hotmailcom>
2020-08-11 11:49:44 -07:00
Mehmet Murat Akburak
18f5c7f691 [PowerRename] Use the same label size for all options (#5870) 2020-08-11 21:31:16 +03:00
Clint Rutkas
649606f32e Update bug_report.md 2020-08-11 11:19:39 -07:00
Clint Rutkas
0f54cc147e Update bug_report.md 2020-08-11 11:19:30 -07:00
Clint Rutkas
7781f41ebf Update bug_report.md 2020-08-11 11:19:13 -07:00
Divyansh Srivastava
2d2cb22806 Stable sorting of ResultCollection (#5850)
* Stable sorting of ResultCollection

* nit fixes for resultsViewModel and ResultCollection
2020-08-11 10:24:56 -07:00
ryanbodrug-microsoft
ac10c988b9 Enable Static Analysis on programs plugin (#5847)
* Removing unused ProgramSettings constructor paramaters.

* Fix for:

Severity Code Description Project File Line Suppression State
Error CA1829 Use the "Count" property instead of Enumerable.Count(). Microsoft.Plugin.Program C:\Repos\PowerToys\src\modules\launcher\Plugins\Microsoft.Plugin.Program\Views\ProgramSetting.xaml.cs 182 Active

Severity Code Description Project File Line Suppression State
Error CA1827 Count() is used where Any() could be used instead to improve performance. Microsoft.Plugin.Program C:\Repos\PowerToys\src\modules\launcher\Plugins\Microsoft.Plugin.Program\Views\ProgramSetting.xaml.cs 287 Active

* Fixes for CA1031:
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1031?view=vs-2019

* More fixes(Suppression) for CA1031 (Catching base exception)
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1031?view=vs-2019

* Fix for nested types being externally visible.  CA1034
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1034?view=vs-2019

* Fix for  CA1028 If possible, make the underlying type of Hresult System.Int32 instead of uint. Microsoft.Plugin.Program C:\Repos\PowerToys\src\modules\launcher\Plugins\Microsoft.Plugin.Program\Programs\UWP.cs 236 Active

* Fix for CA2227 Collection properties should be readonly.
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019

Fix rror CA2211 Non-constant fields should not be visible
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2211?view=vs-2019

* CA2208: Instantiate argument exceptions correctly
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2208?view=vs-2019

* Win32.cs Static analysis fixes:

CA2200: Rethrow to preserve stack details
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2200?view=vs-2019

CA1825: Avoid zero-length array allocations
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1825?view=vs-2019

CA2211: Non-constant fields should not be visible
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2211?view=vs-2019

* More Win32.cs static analysis fixes:

CA1307: Specify StringComparison
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019

Verifying query is not null before using it.
CA1062: Validate arguments of public methods
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019

CA1305: Specify IFormatProvider
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019

* UWPApplication.

CA2007: Do not directly await a Task
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2007?view=vs-2019

* Error CA2010 Consume the hresult returned by method 'Microsoft.Plugin.Program.Programs.AppxPackageHelper.IAppxManifestApplication.GetStringValue(string, out string)' and call Marshal.ThrowExceptionForHR.

Note:  CA2010 has been removed from future FXCop versions as it can provide incorrect advice for methods that don't return hresult (possibly when [PreserveSig] has been incorrectly labeled.)  I've verified the methods in question do still return hresults.

* More fixes for
Error CA2010 Consume the hresult returned by method and call Marshal.ThrowExceptionForHR.

* Fixes for:
Error CA2000 Call System.IDisposable.Dispose on object created before all references to it are out of scope.

* Suppress CA1031:Do not catch general exception types

* Fixes for
Error CA1034 Do not nest type ...

* Fixing Unit tests that were broken as per a previous fix.

* Fix for: CA1034: Nested types should not be visible:
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1034?view=vs-2019

* Suppressing CA1707 for native/com types.
CA1707:Identifiers should not contain underscores

* Fix for Error CA1307 The behavior of 'string.Replace(string, string?)' could vary based on the current user's locale settings.

* Fixes for Error CA1825 Avoid unnecessary zero-length array allocations.  Use Array.Empty<string>() instead.

* Fix for: Error CA1823 Unused field 'IndexLock'.

* Fixes for CA1822: Mark members as static:
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019

* Fix for Error CA1819 Properties should not return arrays

* Fix for Error CA1806 ContextMenus calls Trim but does not use the new string instance that the method returns. Pass the instance as an argument to another method, assign the instance to a variable, or remove the call if it is unnecessary.

* Fix for Error CA1801 Parameter settings of method UpdateSettings is never used. Remove the parameter or use it in the method body.

* Fix for Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'.

* Includes FxCop for static analysis

* Fix for Error CA1717 Only FlagsAttribute enums should have plural names

* Suppress Stgm flags: Error CA1714 Flags enums should have plural names Microsoft.Plugin.Program

* Rename Win32 to Win32Program

Fix for: Error CA1724 The type name Win32 conflicts in whole or in part with the namespace name 'Microsoft.Win32' defined in the .NET Framework. Rename the type to eliminate the conflict.

* Fixes for Error CA1507 Use nameof in place of string literal

* Using ordinal instead of invariant culture when not symbolic comparison

* CA1308: Normalize strings to uppercase
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1308?view=vs-2019

* CA1304: Specify CultureInfo
CA1305: Specify IFormatProvider

https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1304?view=vs-2019

* CA1062: Validate arguments of public methods
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019

* CA1056: URI properties should not be strings
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1056?view=vs-2019

Fix:   Making LogoURi private, as it is only used internally and operated on as a string

* Warning CA1052 Type 'AppxPackageHelper' is a static holder type but is neither static nor NotInheritable

* CA1060: Move P/Invokes to NativeMethods class
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1060?view=vs-2019

* Programs Plugin - Treat warnings as errors true

* CA1031:Do not catch general exception types
Missed release only compile issue.  Making debug and release behave the same.

* Renaming 'Create' to 'CreateWin32Program' based on PR feedback.
2020-08-11 09:08:44 -07:00
Ivan Stošić
83de1686c0 Don't wait for ColorPicker.exe to close (#5866) 2020-08-11 17:06:28 +02:00
vldmr11080
145347f7ae [FancyZones] Clasify strings in FancyZones to localizable and non-localizable (#5315)
* Clasify strings in FancyZones to localizable and non-localizable

* Address PR comments

* Better handling of FirePropertyChanged event

* Address PR comments

* Update properties
2020-08-11 13:51:06 +02:00
Ivan Stošić
b8b6dbe791 Potential fix for a crash in OnThreadExecutor (#5840) 2020-08-11 10:39:18 +02:00
Divyansh Srivastava
d21201e996 Reduce program plugin results (#5743)
* Added minimum score threshold

* nit fix for program plugin
2020-08-10 16:25:34 -07:00
Clint Rutkas
dc35fc450b Update community.md 2020-08-10 15:57:43 -07:00
Clint Rutkas
c4140dd38b Update community.md 2020-08-10 15:57:31 -07:00
Roy
ba2ef23414 [PowerToys Run] Add Support for Uris (#5160)
* url handler plugin

* updates

* Add seperate interface classes
rename to uri module

* Update path

* Update implementation to remove slow DNS lookup ( and let browser handle it)

* tabs to spaces

* - Update icon/assets
- Finalize Project

* Update wix project

* Implement UpdateBrowserIconPath

* Implemented Microsoft.CodeAnalysis.FxCopAnalyzers

* Add Language component to installer

* Update logic to determine icon

* Update Translation File to "Open in browser"

* Added test for typing http://test.com and which result to expect on each keystoke

* Implement StyleCop

* Added ipv6 tests

* Fix Solution LineBreaks

* Added Microsoft.Plugin.Uri as build Dependency

* Use ArgumentNullException instead of InvalidOperationException

* Fix wrong Directory in wix installer

Co-authored-by: Roy <royvou@hotmailcom>
2020-08-10 15:53:43 -07:00
Divyansh Srivastava
3781d1e06b Consolidate folder and shell plugin (#5843)
* Added folder plugin functionality to shell plugin

* Added QueryTextDisplay for shell plugin

* Remove QueryTextDisplay change

* Fix merge conflict issues
2020-08-10 15:51:02 -07:00
Clint Rutkas
082a78bd92 Getting remaining Tests on stylecop (#5846) 2020-08-10 15:49:36 -07:00
Clint Rutkas
7bfd0823db Enabling StyleCop for folder plugin (#5844) 2020-08-10 13:28:22 -07:00
Enrico Giordani
013ffe1626 Now working on 0.20.2 (#5834) 2020-08-10 16:30:25 +02:00
Divyansh Srivastava
b2006f2466 Remove all plugin results on query change (#5796) 2020-08-07 19:27:52 -07:00
Niels Laute
7d8931696d Localized Image resizer tooltip (#5529)
Co-authored-by: Niels Laute <niels9001@hotmail.com>
2020-08-07 17:54:56 -07:00
Niels Laute
e88812458e [Settings] Updated adaptive trigger behavior (#5434)
* Updated adaptive trigger behavior

* Fixed wrapping for KBM subtitle textblock

* Fix

Co-authored-by: Niels Laute <niels9001@hotmail.com>
2020-08-07 12:00:48 -07:00
Clint Rutkas
ada42f6e94 in theory this fixes all SA1649 issues now with any project with stylecop enabled (#5786) 2020-08-07 11:56:28 -07:00
Clint Rutkas
34c3b50b48 Incremental fix for StyleCop on Infra (#5729)
* Fixes file names and classes don't match.  All but PluginsSettings

* making it pluginsettings

* fixing due to conflict
2020-08-07 10:45:50 -07:00
Andrey Nekrasov
63c36d0dbf runner: don't try to restart explorer (#5763) 2020-08-07 15:26:34 +03:00
Andrey Nekrasov
bd80bb6bb3 bootstrapper: add support for silent arg (#5590) 2020-08-07 12:00:14 +03:00
Ivan Stošić
8f98866d71 [FancyZones] Feature to create zone layouts spanning multiple monitors (#5289)
* Added the setting

* Added a property to Editor Settings

This will be used later

* Fixed a bug in the previous commit

* Simplified a method

* Added snapping points to the editor

* Simplified a method in ZoneSet

* Updated ZoneSet testcases

* Add a method to FancyZones / ZoneWindowHost

* Almost works

* The editor now launches, but FZ does not understand the results

* Refactored some code

* Snapping to a zone by dragging seems to work

* Hotkeys seem to work

* Refresh the work area handler after changing settings

* Fixed zones not snapping to monitor edges when moved

* Remove unused method in FancyZones.h

* Fixed an issue with DPI awareness

* Renamed setting to spanZonesAcrossMonitors

* Renamed a function

* Fixed a bug with the magnetic effect

* Fix restoring window positions on layout changes
2020-08-07 10:06:25 +02:00
Clint Rutkas
26bf05dd7e whitespace changes (#5750) 2020-08-06 20:38:49 -07:00
Clint Rutkas
b815718c26 whitespace only (#5747) 2020-08-06 16:52:25 -07:00
Clint Rutkas
d7994ca67d style cop wox.core whitespace changes (#5744)
* whitespace changes

* undoing csproj tweak to keep stylecop off
2020-08-06 16:51:47 -07:00
Arjun Balgovind
b95a1fb604 Unlinked the MaxResults value from settings and set to fixed value of 30 (#5742) 2020-08-06 16:44:13 -07:00
martinchrzan
b04bb2ef8d Color picker respects right monitor side boundaries and does not go outside of the view (#5480) 2020-08-06 20:54:26 +02:00
martinchrzan
066aeec1e6 Fixed jerky zoom animation (#5483) 2020-08-06 20:53:16 +02:00
Clint Rutkas
d6e46d73b5 whitespace stylecop fixes for Wox.Infra (#5689)
* Limited to whitespace

* removing stylecop again
2020-08-06 11:28:13 -07:00
Clint Rutkas
7b767df0b5 getting stylecop undercontrol for UI warnings (#5630) 2020-08-06 11:16:25 -07:00
Clint Rutkas
ed36447bdf Fixing stylecop violations (#5629) 2020-08-06 10:10:44 -07:00
Clint Rutkas
0f90af3c7d URL audit (#5685) 2020-08-06 10:09:50 -07:00
stefansjfw
f50a8e5252 Fix difference in editor and applied focus layout zones size and increments (#5601) 2020-08-06 16:41:15 +02:00
vldmr11080
1d8ca28152 Don't restore minimized windows after layout is updated (#5603) 2020-08-06 16:22:47 +02:00
vldmr11080
6c4129d02a [FancyZones] Do not restore maximized windows (#5597)
* Do not restore maximized windows

* Fix show command comparison

* Move maximized check outside of RestoreWindowSize function
2020-08-06 15:12:49 +02:00
Andrey Nekrasov
9b4574ad06 CI: add installer (#5698) 2020-08-06 16:12:20 +03:00
Nkateko
4543b32bef fix settings path (#5692)
* fix settings path

* Update settings_window.cpp

* rollback commit #5487
2020-08-06 00:49:40 -07:00
Clint Rutkas
ff69f6ed7f fixing most whitespace issues, reordering namespaces and adding in headers (#5677) 2020-08-05 14:06:55 -07:00
Clint Rutkas
92a2b83bc8 smaller stylecop fixes in Wox.Core and Wox.Infra (#5671)
* Headers
unneeded usings
files need blank line at bottom
Fixed double returns
Returns after braces

* commenting out stylecop
2020-08-05 14:06:42 -07:00
Alekhya
30b65028fe Fix Code Related PT Run Accessibility issues (#5610)
* set the name automation properties for the result elements

* Added name properties to search box

* removed the name for the grid

* localized the automation property names of the launcher control

* Localized the automation name property for the result list

* Uncommented out the Hide() function which was commented out to run Accessibility Insights

* modified resources from static to dynamic

* reverted access modifier to internal as we are no longer using this

* updated csproj file
2020-08-05 13:43:47 -07:00
Clint Rutkas
4b72b291ef 0.20.1 readme (#5669) 2020-08-05 12:23:12 -07:00
Andrey Nekrasov
59ebe30b72 runner: initialize COM security, so toast notifications work in elevated context from non-admin account (#5314) 2020-08-05 19:06:50 +03:00
Alekhya
814f6213fa Added null check before using unregister hotkey function (#5627) 2020-08-05 08:06:03 -07:00
Andrey Nekrasov
dce3ee440b bootstrapper: use a dedicated solution (#5318) 2020-08-05 17:20:50 +03:00
Clint Rutkas
b87d14cd61 Proper fix for MSB3052. (#5618)
* fixing MSB3052

* adding back in to unblock build

* More agressive refactor.  Moved the define constant to wixproj and actual version into src file version prop

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-08-05 00:04:18 -07:00
Arjun Balgovind
5c10c78595 Fixed exceptions in dispose not allowing PT Run to terminate (#5615) 2020-08-04 21:06:07 -07:00
Clint Rutkas
a793cf4ac2 onboarding stylecop (#5622) 2020-08-04 16:39:25 -07:00
Roy
010732108c Add "AssemblyTitle" attribute which is used for the taskbar menu name. (#5487)
Co-authored-by: Roy <royvou@hotmailcom>
2020-08-04 16:36:59 -07:00
Clint Rutkas
296d103f68 Getting Shell on stylecop (#5620) 2020-08-04 16:27:35 -07:00
Clint Rutkas
1f590c45be Unit tests getting up-to-par for StyleCop (#5364)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-08-04 14:01:37 -07:00
Clint Rutkas
48b816fb36 fixing MSB3052 (#5609)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-08-04 11:28:41 -07:00
Hector Minaya
d11b5b3e02 Power Launcher | #5062 Moved Start Typing... to resource file (#5408) 2020-08-04 09:53:58 -07:00
Ivan Stošić
8f8787b2e0 Fixed Launcher not exiting when PT is terminated (#5588)
* Fixed Launcher not exiting when PT is terminated

* Added a null check to _hotkeyManager as well
2020-08-04 14:33:07 +02:00
Andrey Nekrasov
7581802498 Fix bootstrapper getting stuck on "installing dotnet" (#5565) 2020-08-04 13:34:09 +03:00
Andrey Nekrasov
371523d756 notifications: provide default app id to fix FZ toast crashes (#5551) 2020-08-04 11:12:49 +03:00
Clint Rutkas
1456be9feb wrapping agressively the timer. (#5560)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-08-03 16:46:15 -07:00
martinchrzan
62f57b134a Fixing potentially infinite loop with logs in Color Picker (#5558) 2020-08-03 22:03:00 +02:00
Niels Laute
84127d7a80 [Feature request.md] Fix typo (#5532) 2020-08-03 10:22:40 -07:00
Hector Minaya
8fc3f1ccbd [Fancy Zones] Add scrollbar to the input field for excluded apps in the settings page (#5410) 2020-08-01 07:48:38 +02:00
Clint Rutkas
c946f10d0c fixing all warnings and i think i got one larger one that was before stylecop was enabled, OnOpenWindowsUpdate (#5382)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-31 16:42:24 -07:00
Clint Rutkas
e03ef0b739 Remove InputSimulator nuget package (#5388)
* getting app to not use it, now installer

* removed windowinput.dll from inputsimulator nuget package

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-31 15:16:49 -07:00
Clint Rutkas
55b92ab263 supressing warning 8305 as there is nothing we can do about as this is a WinUI (#5393)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-31 15:15:50 -07:00
Divyansh Srivastava
fbc625478b Improve query cancellation and ResultCollection performance (#5370)
* Added cancellation token to downstream functions in query thread

* Remove initial lag in query

* Re add query delay

* Remove debug flag
2020-07-31 15:09:23 -07:00
ryanbodrug-microsoft
4da8aab44f Including valid package information when path is invalid. This is needed because the path will be invalid when uninstalling an application, but we still need the other information to remove it from the currently indexed list of uwp/packaged applications. (#5373) 2020-07-31 12:33:05 -07:00
Clint Rutkas
d9fd967c48 Style cop up and running (#5340)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-31 09:49:42 -07:00
Clint Rutkas
ab86fc9a5e enabling stylecop on ColorPicker (#5336)
* Getting all warnings fixed

* fixed feedback, missed resize for some reason as well.

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-31 09:13:05 -07:00
Clint Rutkas
8fb095e2f4 staging 0.20 readme (#5292)
* first pass for 0.20 readme

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* fixing link

* Update README.md

shifted per @enricogior feedback for requirements

* Update README.md
2020-07-31 09:09:03 -07:00
martinchrzan
2fe84b7510 Fixed an issue of not being able to change settings for ColorPicker (#5351) 2020-07-31 16:10:08 +02:00
Andrey Nekrasov
46ef13dd0f autoupdate: set app_id in time for download_update to use it (#5346) 2020-07-31 14:22:05 +03:00
Andrey Nekrasov
49b56d9b52 PowerToys interface: remove powertoys events and system_menu_helper functionality (#5323) 2020-07-31 14:06:13 +03:00
Enrico Giordani
cff654ae69 Now working on 0.20.1 (#5344) 2020-07-31 11:50:02 +02:00
Clint Rutkas
7abb4072b5 getting stylecop added and online SvgThumbnailProviderUnitTests (#5335)
* getting stylecop added and online

* shifting out of csproj and into packages.config

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 17:36:39 -07:00
Clint Rutkas
d91fd0027a stylecop online (#5341)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 17:31:41 -07:00
ryanbodrug-microsoft
8f17f7297d Enabling static analysis on indexer plugin and fixing errors (#5220)
* Enabling code analysis, and treating warnings as errors

* Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Indexer C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Indexer\Settings.cs 9 Active

* Removing keyword "Interface" from namespace to fix fxcop warnings

* Fixing static analysis warnings on ContextMenuLoader

* Fixing general exception warnings for static analysis

* Fixing public list variables, non static methods, and general exception warning

* Implementing IDisposable on OleDBSearch although in practice these objects were already being disposed.

Also Validated we were not using user input directly for sql strings.

* Removing VS generated comments from dispose methods as per PR feedback.

* Setting translated text to use current culture as per PR feedback.

* Explicity specifying 'internal' access modifier for Indexer 'Main' class, as per PR feedback

* Updating to FxCop 3.0.0
2020-07-30 16:39:47 -07:00
Clint Rutkas
aa8c31e79b adding in global supressions (#5337)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 16:23:58 -07:00
Clint Rutkas
cfc768caa9 StyleCop rules enforced (#5339)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 16:23:20 -07:00
ryanbodrug-microsoft
c48bd9b840 User/ryanbod/fix unittests (#5191)
* Fixing PowerLauncherViewModelTest.cs.  These OpenConsole functionality was accidentlly removed in a merge conflict, which broke the build.  The build was fixed, but the unit tests didn't work.  034079b441 is the offending change.

* Color picker tests need to remove the ShellPage.DefaultSndMSGCallback on cleanup.

* Fixing casing that was updated in previous change.
2020-07-30 15:58:01 -07:00
Clint Rutkas
c09919055a StyleCop for SvgThumbnailProvider (#5338)
* adding in global supression

* caught one more, stylecop was included vs linked

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 15:57:10 -07:00
Clint Rutkas
d35f1ea802 last nuget packages and fixed small errors (#5334)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 14:01:02 -07:00
dependabot[bot]
cfbf3cd4b3 Bump elliptic from 6.5.0 to 6.5.3 in /src/settings-web (#5302)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.0 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.0...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-30 12:36:53 -07:00
Clint Rutkas
a46103fc8c Adjusting interop tests for 5295 (#5296)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 12:22:33 -07:00
Clint Rutkas
d032956124 adding in stylecop goodness (#5301)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 12:17:08 -07:00
Clint Rutkas
ff93b38d23 upgrading all .NET assemblies, #5303 took care of ones where they needed consolidating (#5304)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 12:16:32 -07:00
Clint Rutkas
5b02ee5169 updated to Microsoft.Windows.CppWinRT.2.0.200729.8 (#5306)
* updated to Microsoft.Windows.CppWinRT.2.0.200729.8

* actually adding in packages.config and updating

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 11:37:15 -07:00
Clint Rutkas
aa770689f5 pointing toward linked global (#5297)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-30 11:37:00 -07:00
Andrey Nekrasov
de67fff731 autoupdate: handle exceptions in download_update (#5324) 2020-07-30 18:32:50 +03:00
Anish Asrani
7799783c9a Updated Administrator mode URL to new wiki page (#5309)
* Updated URL to wiki page

* Updated URL to aka.ms link

Co-authored-by: Anish Asrani <anasrani@microsoft.com>
2020-07-30 07:11:07 -07:00
Andrey Nekrasov
c854565e30 chore: add most used projects helper build script (#5317) 2020-07-30 14:30:06 +03:00
Andrey Nekrasov
52e9d37b93 chore: move codeAnalysis folder to src (#5311) 2020-07-30 11:59:24 +03:00
Clint Rutkas
e94cb34a25 Create run-as-admin-detection.md
#5308
2020-07-29 17:43:43 -07:00
martinchrzan
f541e7105e Generating AssemblyInfo.cs for ColorPicker.exe, added resources and version for ColorPicker.dll (#5299) 2020-07-29 14:45:41 -07:00
Andrey Nekrasov
4060e29c63 runner: make sure that explorer is restarted (#5293) 2020-07-29 12:58:15 -07:00
Niels Laute
d913285523 [Settings] Fix for theming aware titles (#5245)
* Fix for theming aware titles

* Converter fix
2020-07-29 11:38:03 -07:00
ryanbodrug-microsoft
d98d1193fc Removing hardcoded version numbers from c# telemetry events. (#5283)
* Removing hardcoded version numbers from c# telemetry events.

* Removing dependency on powertoysInterop for getting version string.

* Defensive checks around getting assembly version
2020-07-29 11:18:21 -07:00
Enrico Giordani
e23b406364 Update version to 0.20.0 (#5288) 2020-07-29 13:19:57 +02:00
martinchrzan
0b27fc39e6 Added telemetry for Color Picker module (#5259)
* Added telemetry for Color Picker module

* Closing color picker with Esc and added a telemetry for that

* Missed update of csproj

* updated installer to include telemetry.dll for color picker

* removed telemetry.dll it was alrady there

* after review changes
2020-07-29 09:01:04 +02:00
Clint Rutkas
704ca4eae2 reenabling multi-core (#5279)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-28 23:04:40 -07:00
Clint Rutkas
1fc3cfee68 adjust for modules (#5284)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-28 19:26:18 -07:00
Niels Laute
8fb446ad47 [Settings] Embed images (#5236)
* Added local images

* Margin fix

* Update Product.wxs

Added images to installer
2020-07-28 15:02:09 -07:00
Clint Rutkas
66ff661ff5 file moved to wiki (#5278)
deleting run as admin images and moving to wiki

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-28 13:41:00 -07:00
Andrey Nekrasov
57e69080c9 CDPx: revert parallel msbuild building also in build-powertoys-ci.yml (#5275) 2020-07-28 09:23:23 -07:00
Andrey Nekrasov
d78f7a9303 CI: sign new binaries (#5274)
* CI: sign colorpicker binaries

* CI: sign SVGThumbnailProvider binaries

* CPDx: revert parallel project building
2020-07-28 09:16:09 -07:00
Andrey Nekrasov
47cb34d26b chore: enable multiprocessor compilation (#5272) 2020-07-28 17:20:01 +03:00
Andrey Nekrasov
8354797406 CDPx: do not use span header (#5268) 2020-07-28 14:26:30 +03:00
Divyansh Srivastava
87ae1c6a9b Improving UI performance (#5216)
* Added fast observable collection

* Updated to use 1 collection changed event per query

* Moved result updating to background thread

* Changed collapsed to hidden for virtualization

* Moved all token cancellations inside try catch

* Fixed freeze on deleting first letter

* nit fixes

* Moved update logic to plugin result loop

* Updated doc comment for AddResults function

* fix result clear on empty query
2020-07-27 18:13:47 -07:00
Clint Rutkas
5fb7d43aff Update pull_request_template.md 2020-07-27 16:24:53 -07:00
Clint Rutkas
115c391191 Update bug_report.md 2020-07-27 16:20:22 -07:00
Clint Rutkas
c73fa4b0f6 Update feature_request.md 2020-07-27 16:19:42 -07:00
Clint Rutkas
f5894ac3c2 Update bug_report.md 2020-07-27 16:14:30 -07:00
Clint Rutkas
bcbeda5102 Update bug_report.md 2020-07-27 16:12:15 -07:00
Clint Rutkas
8891c305e3 Update documentation-issue.md 2020-07-27 16:07:58 -07:00
Clint Rutkas
c62f98db95 Update documentation-issue.md 2020-07-27 16:07:49 -07:00
Clint Rutkas
96bca43089 Update documentation-issue.md 2020-07-27 16:07:26 -07:00
Clint Rutkas
9ffd42d477 Update documentation-issue.md 2020-07-27 16:06:54 -07:00
Clint Rutkas
c57f051863 Update config.yml 2020-07-27 16:06:09 -07:00
Clint Rutkas
ab04874c11 Update config.yml 2020-07-27 16:05:10 -07:00
Clint Rutkas
481a47b638 Update config.yml 2020-07-27 16:03:18 -07:00
Aaron Junker
df2ef04558 Create config.yml (#5091) 2020-07-27 16:00:52 -07:00
Clint Rutkas
c3ad095553 Update NOTICE.md
Adding in Martin into notice for color picker
2020-07-27 15:37:27 -07:00
Clint Rutkas
3f2dbfbbd2 removing colorpicker (#5260)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-27 13:12:47 -07:00
Clint Rutkas
8eca70c338 adding in stable and installer to build status (#5255)
* Update README.md

* Update README.md
2020-07-27 13:12:31 -07:00
Niels Laute
ba7302a197 [Settings] Adding collapse button to settings navview (#5237)
* Adding collapse button to settings navview

* Custom panewidth
2020-07-27 09:57:28 -07:00
stefansjfw
d15b0a0285 [FancyZonesEditor] Don't load malformed custom layout and show appropriate message (#5248)
* Introduce const strings in LayoutModel.cs

* Don't load malformed custom layout and show apropriate message

* Add more checks

* Address PR comments

* Address PR comments
2020-07-27 18:56:26 +02:00
Andrey Nekrasov
3796a5ef97 Autoupdate: implement updating bootstrapper utility (#5204) 2020-07-27 19:53:29 +03:00
Bernard Vander Beken
5a48376a77 Fix casing (#5252) 2020-07-27 09:43:12 -07:00
stefansjfw
61669a73d9 [FancyZonesEditor] Introduce const strings in LayoutModel.cs (#5196)
* Introduce const strings in LayoutModel.cs

* Address PR comments - Update FirePropertyChanged
2020-07-27 10:12:35 +02:00
martinchrzan
5a2385c66b Set default shortcut for activating launcher, creating settings.json … (#5206)
* Set default shortcut for activating launcher, creating settings.json on a start if it does not exists

* After review fixes
2020-07-25 08:50:29 +02:00
Alekhya
d7721065dc Add theme aware default icons to usage dictionary (#5223)
* Added theme aware default icons to usage dictionary

* they should not be removed while resizing
2020-07-24 18:23:33 -07:00
Alekhya
025f2507f4 Drive Detection Indexer warning refinement (#5221)
* show results always and conditionally show warning

* changed test logic to show warning when expected

* renamed unit test
2020-07-24 17:45:07 -07:00
Alekhya
563fb3ff5c commenting out the test (#5224) 2020-07-24 17:43:48 -07:00
Clint Rutkas
9646ec5edd fixed another set of warnings (#5219)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-24 15:46:29 -07:00
Alekhya
cc990a1181 Fix for handling exceptions thrown by dispatcher which were crashing PT Run (#5199)
* fix report window error icon

* fix for launching web page to create new issue

* Made icon theme aware

* removed exception that was added by mistake

* modified the issue reporting link to match that in the settings page

* added comment
2020-07-24 13:58:40 -07:00
Arjun Balgovind
c4ddb7d351 [PT Run] Resolve text alignment issues for RTL input languages (not for mixed strings) (#5170)
* Added logic to switch TextBox/TextBlock flow direction on language change

* Move event handler to separate method

* Moved code to function
2020-07-24 13:34:49 -07:00
Arjun Balgovind
ab0047a9b7 Added additional checks in version info methods (#5173) 2020-07-24 13:34:17 -07:00
Arjun Balgovind
39ec10cbba Add telemetry event for measuring time taken to display PT Run (#5201)
* Added LauncherHotkeyEvent

* Split into cold state and warm state events
2020-07-24 12:38:16 -07:00
Niels Laute
65b6513207 [Settings] Multiple UX refinements (e.g. OOBE) (#5113)
* Updated FZ page with new resizing logic

* Multiple UX fixes. Added updated resizing logic to other pages

* Added ImageResizer file format example snippets to tooltip

* Added warning icon in hotkeysettingscontrol

* Fixed formatting

* Keys label can now be set

* Replaced custom titleblocks with converter

* Updated strings

* Added correct links to the images. Added PT description on General page as well.

* Colorpicker image updates

* Rounded corners

* Fix

* Added back in correct subtitles
2020-07-24 12:02:56 -07:00
Clint Rutkas
beb4494534 Adding back in key for FZ Json (#5210)
* Adding back in key for FZ Json

* defaulting key to string empty

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-24 11:35:03 -07:00
martinchrzan
983ff901f2 Prevent clicking through when selecting a color using color picker (#5203) 2020-07-24 18:44:46 +02:00
Ivan Stošić
5d66473a4f [FancyZones] Remove m_workArea from ZoneWindow (#5185)
* Removed m_workArea from ZoneWindow

* Remove another unused variable
2020-07-24 11:17:39 +02:00
Arjun Balgovind
ff1e04b957 [Keyboard Manager] Added in Shortcut to Key and Key to Shortcut remapping (#5070)
* Added union class

* Added key to shortcut backend implementation

* Added tests

* Added tests for CapsLock/modifier workaround for key to shortcut

* Added correct JSON loading step

* Cleaned shortcut remap code to use helper function for modifier keys

* Removed RemapKey class

* Enable Key to Shortcut in UI along with Type Shortcut in Remap key window

* Fixed orphaning and unsuccessful remap dialog

* Fixed column width

* Renamed second type key button

* Fixed Type Shortcut issues

* Fixed shortcut to key backend logic and manually tested most scenarios

* Added s2k in UI, manually verified its working

* Added one more k2s test

* Added tests for s2k

* Added tests for Caps Lock workaround in shortcut remaps

* Fixed formatting

* Fixed formatting

* Removed safety code since it can cause issues with code generated key up events

* Added test for key up scenario

* Tweaked warning text

* Tweaked text

* Tweaked text to fit in two lines

* telemetry additions
2020-07-23 16:43:49 -07:00
ryanbodrug-microsoft
53c4c6cbb8 User/ryanbod/folders enable staticanalysis (#5137)
* Enabling static analysis and settings treat warnings as errors

* Fixing/Supressing static analysis warnings in ContextmenuLoader and removing unused code

* Fixing static analysis errors in Main.cs

* Fixing static analysis warnings for folderpluginSettings.xaml.cs
2020-07-23 16:05:36 -07:00
Arjun Balgovind
47736603af Fix saving to JSON in PT Settings (#5197)
* Added argument to fix saving to JSON in PT Settings

* Added argument to fix saving to JSON in PT Settings
2020-07-23 16:04:04 -07:00
Clint Rutkas
b6e5a5e655 Color picker tweaks (#5194)
* Adjustments on default keystroke and removing key string whihc really didn't do anything

* moving color picker into alphabetical order

* removing removed property

* adjusting comment based on feedback from martin

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-23 15:53:12 -07:00
Clint Rutkas
84018f5b61 Fixing more warnings (#5189)
* classes need to be in new files

* adding in new lines

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-23 14:56:21 -07:00
Clint Rutkas
592d3afe6d shifting naming (#5190)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-23 13:08:20 -07:00
Clint Rutkas
2bd2ec7a2e Renaming properties to C# styling to fix warnings (#5166)
* Renaming properties

* Update PowerLauncherProperties.cs

trying to kick CI

* PowerLauncher is way for naming.

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-23 11:01:49 -07:00
Alekhya
f25d2b3a86 removed incrementalClean for launcher (#5172) 2020-07-23 10:34:32 -07:00
Clint Rutkas
886cea56f3 bring on all tests (#5118)
* Update build-powertoys-steps.yml

bring on all tests

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* adding in runsetting

* Delete unit.tests.x64.runsettings

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-23 09:24:16 -07:00
Niels Laute
ed21efc003 [Read me] Updated screenshots in the overview for settings page (#5148)
* Updated images

* Updated shorcut guide image ref

* Updated image titles

* Uppercase to lowercase

* Added high res colorpicker images

* Updated extension

* Updated extensions

* Added Color Picker description

* Updated readme

* Removed CP section

* Update README.md

Co-authored-by: Niels Laute <niels9001@hotmail.com>
2020-07-23 09:21:11 -07:00
ColdTune
c379cca2e5 [FancyZones Editor] Prevent new zones from being unreachable (#4457)
* stack new zones

* Changed startup location of window editor

* Zones start in upper left

* Changed Focus Zone Initialization

* Zones.Add

* Reset zone position when it goes off screen
2020-07-23 10:53:19 +02:00
Clint Rutkas
efa04b4cd8 Adding in headers (#5163)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-22 16:55:04 -07:00
Mehmet Murat Akburak
35a214603f [PowerRename] Clear capturing groups with more than 1 digit (#5116)
User has actually signed CLA, see #4722

* Clear capturing groups with more than 1 digit

* Fix issue in regex pattern

* Add unittest

* Fix regex patterns

* Edit unittest

* Fix regex pattern, add some tests
2020-07-22 14:12:46 -07:00
Chris Davis
3acc96cab1 Check the shell attributes of the items to see if we should show the Power Rename menu item and or perform a rename. Also fix a unit test for the SVG Thumbnail Provider. (#5158) 2020-07-22 13:27:58 -07:00
Clint Rutkas
14247fa75a Dev/crutkas/fixing warnings (#5161)
* new lines & braces

* Tabs /space auto fix

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-22 13:27:17 -07:00
Alekhya
6efec9d280 Minor text refinement in drive detection (#5132)
* minor text refinement

* removed the word Detected

* Revert "Merge branch 'tweakUIText_DriveDetectionWarning' of https://github.com/alekhyareddy28/PowerToys into tweakUIText_DriveDetectionWarning"

This reverts commit b193905d00, reversing
changes made to 0d0db138f8.

* Revert "Revert "Merge branch 'tweakUIText_DriveDetectionWarning' of https://github.com/alekhyareddy28/PowerToys into tweakUIText_DriveDetectionWarning""

This reverts commit b653814eec.

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-07-22 13:10:53 -07:00
Arjun Balgovind
063253d5e7 Updated menu key name, and added missing IME key codes (#5110) 2020-07-22 12:57:13 -07:00
Divyansh Srivastava
f773604dec Added functionality for left/right key navigation (#5067)
* Added functionality for left/right key navigation

* Update Behviour of left/right navigation

* Code cleanup

* Null check for results VM

* Added tests for results view model

* Update test namings
2020-07-22 12:48:42 -07:00
ryanbodrug-microsoft
25d43354b3 User/ryanbod/enable codeanalysis for calculatorplugin (#5130)
* Turning on static analysis and removing warning for NoMages.

* Fixing static analysis errors in NumberTranslator.cs

* Fix: Severity Code Description Project File Line Suppression State
Error CA1810 Initialize all static fields in 'Main' when those fields are declared and remove the explicit static constructor Microsoft.Plugin.Calculator C:\Repos\PowerToys\src\modules\launcher\Plugins\Microsoft.Plugin.Calculator\Main.cs 30 Active

* Throwing exception if arguments are null to fix static analysis errors.

* Ignoring CA1031

* Logging exceptions for Calculator queries.
2020-07-22 12:42:30 -07:00
Alekhya
b59ec5e78b Fix for internet shortcut app not showing up on installation (#5131)
* added changed for internet shortcut app

* Added AppChanged event for url files

* Tests added

* refactoring
2020-07-22 10:58:01 -07:00
ricardosantos9521
f7ad935dfb Copy Indexer Languages Folder during instalation (#5036)
* Copy Indexer Languages Folder during instalation

* add ja.xaml to IndexerLanguagesComponent

Co-authored-by: ricardosantos9521 <ricar@ASUS>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-07-22 09:47:29 -07:00
Clint Rutkas
1a210ae684 updating test related stuff (#5133)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-22 09:46:20 -07:00
Seraphima Zykova
92c666692d [FancyZones] Dragging a window across monitors transparency fix (#5102) 2020-07-22 19:00:03 +03:00
Chris Davis
761f0a78f4 Add registry entry for PowerRename to enable showing up on the context menu for OneDrive placeholders (#5140)
Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com>
2020-07-22 11:59:36 +02:00
stefansjfw
0027a0af40 [FancyZones] Split and reorganize FancyZonesData and JSON Helpers (#5028)
* Rename JsonHelpers to FancyZonesData
Add new JsonHelpers.[h|cpp] files

* Introduce FancyZonesDataTypes

* Move first part of JSON related stuff to JsonHelpers files

* Small refactor

* Move all json related stuff to JsonHelpers

* Minor refactoring

* Fix formating

* Remove GetPersistFancyZonesJSONPath() and GetPersistAppZoneHistoryFilePath()
Remove GetActiveZoneSetTmpPath(), GetDeletedCustomZoneSetsTmpPath and GetAppliedZoneSetTmpPath()
Simplify tests

* Address PR comment - Rename FancyZonesDataNS to FancyZonesData

* Address PR comment - Rename local var

* Delete obsolete stuff

* Remove double and uneeded includes
Introduce const non-localizable string variables
Address all othe PR comments

* Add comments to explain hardcoded values

* Remove FancyZonesData namespace

* Introduce const non-localizable string variables in FancyZonesDataTypes

* Add comments to explain FancyZonesData maps

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-07-22 10:39:13 +02:00
Clint Rutkas
4f45cf1386 Upgrading CppWinRT and adding in new packages.config (#5134)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-22 00:35:39 -07:00
Clint Rutkas
9dfa685fb1 update WinUI and Xaml Islands (#5135)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-21 17:41:07 -07:00
Chris Davis
40d2ef4f0a Add SVG Thumbnail Provider for Windows Explorer (#5048)
* Add SVG Thumbnail Provider

* Some cleanup

* Small settings changes

* Update PowerToys.sln

Remove Any CPU entries

* Fix project configuration issues

* Fix bad merge

* Update output path for SVG thumbnail provider

* Sync with latest
2020-07-21 16:27:12 -07:00
Clint Rutkas
8e5a877997 Update readme.md 2020-07-21 14:10:25 -07:00
Clint Rutkas
d1b3f77feb Update readme.md 2020-07-21 14:08:42 -07:00
Clint Rutkas
a5b7234d6f Update readme.md 2020-07-21 14:08:12 -07:00
Clint Rutkas
398991f3c1 Adjusting settings to leverage base class (#5127)
* renaming / deleting file

* adding in base class

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-21 14:06:39 -07:00
Arjun Balgovind
d01b93ae5f Move OS detection to common and PowerToysInterop (#5120)
* Remove os-detection project

* Removed os-detection project from sln

* Added os-detection to PowerToysInterop

* Removed references to os-detection and added PowerToysInterop.dll to the ImageResizer folder
2020-07-21 12:01:59 -07:00
Alekhya
b31d9761fa Fix for the issue where PT Run was preventing UWP apps from building in VS (#5109)
* We should not deny other processes access to this item

* added a catch block for argument exception

* using memory stream instead of URI

* removed denyNone as it is the default config
2020-07-21 10:26:37 -07:00
Clint Rutkas
1ba403db7b Update community.md (#5111)
Added in Martin and updated Chris to reflect new SVG feature
2020-07-21 08:14:01 -07:00
Alekhya
96cd135f82 Detect if all Drives are indexed and show a warning if they aren't (#5015)
* opens new settings search options

* Catching file not found exception

* removed unnecessary header files

* Added display strings and cleaned up code

* reduced the number of max results to 30

* added log statement for exception

* Added drive detection to settings ui but still doesn't reflect on toggling it

* added getter setter for DriveDetectionWarning

* Got UI and backend to work as expected

* Reading value from registry working as expected

* Added test for settings

* Added tests for drive detection

* rename drive detection

* Localized indexer string

* formatting

* resolving merge conflict

* Added theme aware warning icon

* changed text for the warning

* Added the warning images to the installer
2020-07-20 17:50:42 -07:00
Divyansh Srivastava
c85cd4ac24 Migrate files from Wox to PowerLauncher (#5014)
* Moved all files from Wox to Powerlauncher

* Removed Wox project

* Changed namespace for imported files

* Resolved errors for VM

* Added build dependency order

* Fixed errors in helper class

* Remove Wox files

* Fixed errors in SingleInstance class

* Fixed wox.tests

* Fixed MSI

* Removed obsolete methods from PublicAPI

* nit fixes

* Throw null exception

* Fix merge conflict
2020-07-20 11:22:03 -07:00
martinchrzan
177546bab6 Color picker documentation images (#5106)
* Added documentatino images for the color picker guide

* Added a screenshot of settings
2020-07-20 18:17:42 +02:00
vldmr11080
29e2c982d4 Handle desktop switch and open on active monitor functionality (#5065) 2020-07-20 11:55:19 +02:00
martinchrzan
bc301f269a New color picker module - integrated from github.com/martinchrzan/Col… (#4778)
* New color picker module - integrated from github.com/martinchrzan/ColorPicker

* Trying to fix build in github

* Replaced icon in the settings to use font icon instead of path icon

* Closing ColorPicker.exe when PowerToys process closed, added color picker project into runner dependencies, restoring cursors on exit, added ManagedCommon as a dependency into installer

* User/ryanbod/fix colorpicker release (#5046)

* Changing configuration to x64 instead of AnyCPU.   The previous configuration was preventing the ManagedCommon binary from being loaded in Release.

* Updating MSI Installer with new icons (#4998)

* Adding missed dll into installer

* Fixed potential exception

* Creating settings.json on the first start when there are none, fixed default keyboard shortcut

* Added ColorPicker.exe.config into installer

* Start filewatcher after default settings file is created

* Fixing build

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
2020-07-18 21:27:36 +02:00
Alekhya
d09253e532 Functionality to detect Win32 apps which are installed, deleted or renamed while PowerToys is running (#4960)
* Added file system wrapper and interface

* added win32program repository which would load store app and also handle new apps being added/deleted

* Added event handlers to win32 program repo

* added paths to monitor and setting FSWs for each location

* Events firing as expected

* filter extensions added, events fire as expected

* override gethashcode so that duplicates don't show up. OnCreated and OnDeleted events trigger as expected

* implemented setter for filters in FileSystemWatcher

* Rename adds item but does not seem to delete the previous app

* catching an exception when a duplicate item is inserted

* Removed notify filter for directory because we only need to monitor files

* Added exe programs to be indexed in the desktop and startmenu

* created a new class to init FileSystemHelpers instead of main

* Added fix for shortcut applications to work as expected while renaming and deleting them

* Added wrappers for file system operations

* Added some tests

* Added all tests for appref-ms and added a condition to search in sub directories

* Added tests for Exe applications

* Added lnk app tests

* Added tests for shortcut applications

* removed unnecessary wrappers

* override Equals for win32

* removed debug statements

* Fixed exe issue

* Fixed internet shortcut exception

* fixed renaming shortcut apps

* Added a retry block for ReadAllLines

* capitalized method name - RetrieveTargetPath

* made naming consistent, helper variables start with underscore

* Added the exception condition back

* renamed Win32ProgramRepositoryHelper to Win32ProgramFileSystemWatchers

* made win32Program repository variable static

* changed list to ilist

* disposed file system watchers

* make retrieveTargetPath upper case in tests
2020-07-17 22:32:21 -07:00
Nkateko
034079b441 fixed build failure (#5071)
Co-authored-by: Lavius Motileng <laviusntk>
2020-07-17 16:13:13 -07:00
Clint Rutkas
22f0e2615f Create SECURITY.md 2020-07-17 14:45:18 -07:00
Divyansh Srivastava
45bab578c4 Fix Focus issue on clicking list view (#5045)
* Focus working after right click

* Removed unnecessary focussable setter
2020-07-17 12:29:36 -07:00
Nkateko
e8de6f0ace [Settings]Change text color for disabled controls (#4837)
* change text color for disabled controls

* added custom textblock controls and updated FZ Xaml

* updated Image Resizer Page

* updated Shotcut Guid

* updated KBM Settings

* reverted unrealted changes

* reverted unrealted changes

* reverted unrealted changes

* reverted unrealted changes

* updated power launcher

* reverted unrealted changes

* Image Resizer: renoved spaces in file format hint text

* Image Resizer: restored file format header

Co-authored-by: Lavius Motileng <laviusntk>
2020-07-17 11:01:46 -07:00
Andrey Nekrasov
13c2ce3f31 autoupdate: wait for the .exe updater to exit before restarting PowerToys (#5004) 2020-07-17 11:51:20 +03:00
Divyansh Srivastava
3bf9a3833a Fix for result on empty query (#4927)
* Updated last query before clearing results

* Cancel last query expicitly
2020-07-16 16:23:01 -07:00
Enrico Giordani
c035bf2d37 Update version to 0.19.3 (#5033) 2020-07-16 17:15:05 +02:00
Kamesh Kotwani
2b9ab05888 updated the .msi installer version in README.md (#5032) 2020-07-16 17:06:49 +02:00
Mehmet Murat Akburak
a8153dd8db [PowerRename] Using File Date Time Attributes Feature (#4722)
* Add basic using file attributes functionality

* Correctly return result

* Refactor

* Move retrieving date attribute to get function

* Cover various milliseconds patterns, retrieve file attributes only when needed

* Correctly check if date/time pattern is used. Remove wstring cast

* Use correct flags on CreateFile call to handle directories

* rebase to master

* Perform transform operation at last to make it not mess with date/time variables

* Refactor, remove extra space
2020-07-16 14:24:49 +03:00
dependabot[bot]
ebe70a52d1 Bump lodash from 4.17.15 to 4.17.19 in /src/settings-web (#5024)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-16 12:19:58 +02:00
Seraphima Zykova
2282e72d03 [FZEditor] Grid layout resizers fixes (#4095)
* Swap resizers on drag
* Update resizers on split if existing split is used
* Fix accuracy error
* Zone ids are ordered
* Cancel merge on other actions
* Split if one of the snapped splitters is dragged
2020-07-16 12:54:15 +03:00
C. Augusto Proiete
5a590512bd Rename MarkDown -> Markdown to resolve differences for non-Windows machines (#3758) 2020-07-15 10:23:59 -07:00
ryanbodrug-microsoft
6131181ea4 Updating MSI Installer with new icons (#4998) 2020-07-15 05:35:08 -07:00
Roy
78946c11ea [PowerToys Run] Implemented Setting to Clear Search Query when PowerToys Run is Launched (#4995)
* Implemented Clear Input On Launch

* Move logic to seperate command on viewmodel

* Added Settings Sync
Moved logic from OnDeactivated to OnActivated

* Complete after testing

Co-authored-by: Roy <royvou@hotmailcom>
2020-07-14 17:54:21 -07:00
Alekhya
f59abe23c3 Fix for File Not Found exception while indexing invalid Package App (#4971)
* Catching file not found exception

* removed unnecessary header files

* Added a string.empty check for installed location

* reusing package wrapper instead of package installing event args
2020-07-14 11:44:50 -07:00
Divyansh Srivastava
74412766fa Remove redundant code from Wox project (#4878)
* Removed unnecessary files from wox

Removed themes, images and unused xaml files

* Removed unused functions from settings view model

* Removed update manager

* Cleaned helper class

* Delete SingletonWindowOpener.cs

* nit fixes
2020-07-14 09:05:21 -07:00
Ivan Stošić
39b0401c55 Allow selecting multiple adjacent zones even when they slightly overlap (#4974) 2020-07-14 14:51:24 +02:00
Niels Laute
5f0e8d3d8e [PowerToys Run] Updated (plugin) icons with MDL2 (#4149)
* Updated (plugin) icons with MDL2

* Image wasn't updating

* Based on feedback, updated app icon and windowwalker icon

* Updated app icon

* Updated Window Walker icon

* Change build action / Copy to output directory to None and Do Not Copy - like it was originally

* Fix

* Fix

* Resized images

* Added theme awereness based on somil55s PR

* Added theming to Shell and WindowWalker

* Revert "Added theming to Shell and WindowWalker"

This reverts commit f492c4efdb.

* Revert "Added theme awereness based on somil55s PR"

This reverts commit 8edd3226be.

* Typo fix

* Added new theming support for the new Calculator, Shell and WindowWalker icons

* Added Unit test reference back in
2020-07-13 22:59:19 -07:00
Kamesh Kotwani
01ca13cccb upgraded the version number of .msi installer file (#4954)
The previous version was 0.19.0 in line-77, upgraded that to 0.19.1.
2020-07-13 12:42:52 -07:00
Arjun Balgovind
6a9badd31b [Keyboard Manager] Cleanup header file references to improve incremental build time (#4880)
* Remove WinUI include in KeyboardManagerState.h

* Changed include steps

* Clean up headers in KeyboardManagerUI except XamlBridge.h

* Cleaned up headers in KeyboardManager common and test

* Cleaned up headers in KeyboardManager project

* Removed headers from XamlBridge

* Removed some headers from kbm common pch

* Added MP flag to reduce build time

* Added missing include
2020-07-13 11:49:09 -07:00
Arjun Balgovind
7db5d6a307 [Keyboard Manager] Fixed app-specific shortcut causing app to lose focus scenario (#4902)
* Fixed focus issue and added tests

* Changed key names

* Use constant instead of hardcoded empty string
2020-07-10 17:53:41 -07:00
Arjun Balgovind
bb2049411b [Keyboard Manager] Add JSON support for App Specific shortcuts (#4840)
* Enable app specific shortcut remapping

* Fixed lowercase function call

* Add test file

* Moved GetForegroundProcess to II and added tests

* Fixed runtime error while testing due to heap allocation across dll boundary

* Renamed function

* Changed shortcutBuffer type

* Linked App specific UI to backend

* Added shortcut validation logic on TextBox LostFocus handler

* Moved Validate function and changed default text

* Changed to case insensitive warning check

* Changed to case insensitive warning check at OnClickAccept

* Fixed alignment and spacing issues

* Added app-specific JSON support in backend

* Updated landing page

* Make listview horizontally scrollable

* Added tests

* Consider all case variants of All Apps in textbox to be global shortcuts
2020-07-10 17:07:28 -07:00
Divyansh Srivastava
653ae777d5 Packaged apps test (#4921)
* Added wrapper for PackageManager and Package class

* Added tests for package in development and framework mode

* Renamed UWP test file

* Improved readability of UWP tests
2020-07-10 13:43:02 -07:00
Niels Laute
ec803d63c8 [Run] Updated tooltip styling and fixed casing (#4877)
* Added custom tooltip style (with theming support) that represents the UWP tooltip style.

* Removed unnecessary space in text

* Fixed run as admin casing

* Fixed casing for Indexer plugin
2020-07-10 12:06:57 -07:00
Ivan Stošić
412d80efe3 [FancyZones] Hold Ctrl to select any number of zones (#4850)
* Started work

* Did something, not yet sure that it works

* Sort of works

* Cleari highlighted zones when using Ctrl after leaving a monitor

* Remove unnecessary line

* Enhanced UX. Maybe refactor?

* Changed the logic behind zone selection when dragging

* Various fixups
2020-07-10 11:06:01 +02:00
ryanbodrug-microsoft
b1d662a5b1 Improving performance of Adding and Removing Packaged Apps (#4521) (#4900)
* Merging in Theme changes and moving win32Tests to Microsoft.Plugin.Program.UnitTests

* Fixing message format for exception

* Changing test structure.  Need to add unit tests.

* Updating packagerepository comment based on pr feedback

* Fixing potential race condition in ListRepository.  Now internally implemented as a concurrent dictionary.

* Removing unecessary implementation of IRepository interface as this is implemented by the base class.

* Restoring checks for invalid uwp apps based on PR feedback. This was accidentally removed when moving the initialize outside the constructor.

* Fixing comments

* Adding newline to end of file for IProgramRepository
2020-07-09 13:14:53 -07:00
ryanbodrug-microsoft
12d9d59d85 Revert "Improving performance of Adding and Removing Packaged Apps" (#4898)
* Revert "Adding newline to end of file for IProgramRepository"

This reverts commit d55cac80bf.

* Revert "Fixing comments"

This reverts commit a1ecdc9bfa.

* Revert "Restoring checks for invalid uwp apps based on PR feedback. This was accidentally removed when moving the initialize outside the constructor."

This reverts commit 0e8c1cb0fd.

* Revert "Removing unecessary implementation of IRepository interface as this is implemented by the base class."

This reverts commit 1c724280f5.

* Revert "Fixing potential race condition in ListRepository.  Now internally implemented as a concurrent dictionary."

This reverts commit 9ff8246a9d.

* Revert "Updating packagerepository comment based on pr feedback"

This reverts commit 2c45956030.

* Revert "Changing test structure.  Need to add unit tests."

This reverts commit 1c267a55d5.

* Revert "Fixing message format for exception"

This reverts commit f60bdc3dd4.

* Revert "Merging in Theme changes and moving win32Tests to Microsoft.Plugin.Program.UnitTests"

This reverts commit 030dfc2370.
2020-07-09 12:10:48 -07:00
Enrico Giordani
b13e719ab3 Update version to 0.19.2 (#4896) 2020-07-09 18:17:30 +02:00
Arjun Balgovind
451aea87aa Added dummy key event to prevent Start Menu from popping up (#4874) 2020-07-09 08:14:47 -07:00
ryanbodrug-microsoft
d55cac80bf Adding newline to end of file for IProgramRepository 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
a1ecdc9bfa Fixing comments 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
0e8c1cb0fd Restoring checks for invalid uwp apps based on PR feedback. This was accidentally removed when moving the initialize outside the constructor. 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
1c724280f5 Removing unecessary implementation of IRepository interface as this is implemented by the base class. 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
9ff8246a9d Fixing potential race condition in ListRepository. Now internally implemented as a concurrent dictionary. 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
2c45956030 Updating packagerepository comment based on pr feedback 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
1c267a55d5 Changing test structure. Need to add unit tests. 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
f60bdc3dd4 Fixing message format for exception 2020-07-09 07:02:19 -07:00
ryanbodrug-microsoft
030dfc2370 Merging in Theme changes and moving win32Tests to Microsoft.Plugin.Program.UnitTests 2020-07-09 07:02:19 -07:00
Rahul Das
3295ea84a4 Update readme.md (#4893)
Fixed the broken link for The "Wiki"
2020-07-09 14:23:25 +02:00
TheTank20
ef2041b919 Changed to where it is in line with PowerToys (#4885) 2020-07-09 09:51:41 +02:00
Arjun Balgovind
4634085402 [Keyboard Manager] Add app-specific shortcuts to Remap shortcuts UI (#4804)
* Enable app specific shortcut remapping

* Fixed lowercase function call

* Add test file

* Moved GetForegroundProcess to II and added tests

* Fixed runtime error while testing due to heap allocation across dll boundary

* Renamed function

* Changed shortcutBuffer type

* Linked App specific UI to backend

* Added shortcut validation logic on TextBox LostFocus handler

* Moved Validate function and changed default text

* Changed to case insensitive warning check

* Changed to case insensitive warning check at OnClickAccept

* Fixed alignment and spacing issues
2020-07-08 16:24:30 -07:00
Alekhya
411140c3ea Add run as admin context menu item for application results returned by the Indexer Plugin (#4807)
* Added run as admin context menu item to apps returned by indexer plugin

* Added a test and localized strings

* localize strings

* Add more tests for folder and other file types

* fixed run as admin -> run as administrator

* resolved merge conflict

* refactored tests

* moved common code to helper and added logs

* moved start process to the helper class

* added more info in a comment

* fixed count in tests as open in console was added

* removed additional code that was added while fixing merge conflicts
2020-07-08 13:05:57 -07:00
Divyansh Srivastava
638cd1dd48 [Run] Open in console functionality (#4739)
* Added open in console for indexer

* Added open in console fpr indexer and folder plugin

* Added open in console to program plugin

* Added string localization for program plugin

* Added test for win32 program

* Added test for win32 programs

* Added test for indexer plugin

* Localization for context menu title

* Added tests for folder plugin

* Added tests for indexer plugin

* Code cleanup

* Improved logging and nit fixes

* Updated tooltip for open in console

* Updates tests

* Removed subtitle property from contextmenuresult class

* Improved logging for context menu loaders
2020-07-08 09:56:26 -07:00
Yevhenii Holovachov
e3e6b23b7c fixed unit tests (#4865) 2020-07-08 18:00:44 +03:00
vldmr11080
ac5a3e7a65 [FancyZones] Update app zone history on window removal (#4696)
* Update app zone history on every new window assignment to zone

* Compare window positions with already placed windows

* Remove window property only after processing window removal from zone
2020-07-08 16:59:36 +02:00
stefansjfw
106c316442 [FancyZones] Don't create new custom layout when applying Focus layout (#4755)
* Only persist data when applying existing layout if it is scaled

* Fix applying edited Focus layout

* Fix different Focus zone sizes in editor and engine

* Fix codestyle
2020-07-08 15:34:19 +02:00
vldmr11080
db229cf1bf [FancyZones] Open window on active monitor (#4361)
* Initial design for opening window on active monitor

* Perform entire handling in DPI unaware thread

* Codestyle improvement

* Improve resizing mechanism and optimise code a bit

* Remove unneeded code, make simple helper functions inline

* Make this feature configurable

* Code optimization, improve positioning for some applications

* Retry positioning for certain applications

* Improve readability

* Address PR comments: Minor code style improvements

* Remove retries in custom positioning

* Position new toggle in settings menu
2020-07-08 10:37:42 +02:00
Kamesh Kotwani
94f66b812a Fixed the broken link for example_settings.png (#4843)
Due to changes in the directory structure of the `doc/images` folder, the link for `examples_settings.png` was broken and image was not showing up. I have fixed the link and image is showing up in the README.md file.
2020-07-08 07:31:53 +02:00
Alekhya
a314106b7e Set the name(not the description) as the Title of the Result (#4745)
* Added tests to verify that the name is always set as the title and never the description

* removed AppType as an argument

* refactored code

* added comments

* localized strings

* removed empty constructor

* made setsubtitle private

* removed the mock Win32 class used for unit testing

* removed the UWP tests
2020-07-07 15:00:17 -07:00
Divyansh Srivastava
8d72bc0ea4 Tooltip for indexer and program plugin (#4589)
* Fix multiline title issue

* Added code to display tooltip for program and indexer plugin

* Added tests for Result class

* Theme based color for tooltip

* Added colors for tooltip

* Added string tags to tooltip

* Add initial show delay

* Seperated textbox for title and path
2020-07-07 13:02:39 -07:00
Arjun Balgovind
1533c9315f [Keyboard Manager] Enable App-specific shortcuts in the KBM backend (#4628)
* Enable app specific shortcut remapping

* Fixed lowercase function call

* Add test file

* Moved GetForegroundProcess to II and added tests

* Fixed runtime error while testing due to heap allocation across dll boundary

* Renamed function

* Remove unused code

* Changed process checking step to include substrings

* Changed back to exact match included match without file extension
2020-07-06 16:45:53 -07:00
stefansjfw
70405045d7 [FancyZones] Remove Editor tmp files paths cmd args and make Editor 'debugable' easier (#4279)
* Remove Editor cmd args - tmp files
Add 'Debug mode' startup for Editor

* Remove fixed device info string

* Move if file exist check

* Add enum to improve readability

* Introduce ParseDeviceMode enum

* Organize strings

* Move title to localizable strings
2020-07-06 17:40:25 +02:00
vldmr11080
3d623506a8 [FancyZones] Invalidate cached work areas when display resolution or taskbar position changes (#4800)
* Invalidate cached work areas when display resolution or taskbar position changes

* Update comments in code
2020-07-06 17:34:28 +02:00
stefansjfw
11df74c292 Fix different grid layout shown by editor than the engine (#4758) 2020-07-06 17:04:40 +02:00
Nkateko
a935d69408 added null value handle for image resizer size input (#4721)
* addle null value handle for image resizer size input

* check for negative withd and height

* check for negative withd and height

* Update ImageSize.cs

Co-authored-by: Lavius Motileng <laviusntk>
2020-07-03 15:40:53 -07:00
Arjun
cffe0196e2 Added unit tests 2020-07-03 11:08:21 -07:00
Arjun
ac2a9deb75 Changed flags for newly pressed key after invoking shortcut 2020-07-03 11:08:21 -07:00
Alekhya
282e0adfe2 Removed the race condition (#4735) 2020-07-03 10:25:11 -07:00
Alekhya
ce60bcedb0 Add keyboard shortcut in tooltip for context menu items (#4702)
* Folder plugin - copy path

* indexer plugin - localized

* removed program plugin reference as it was not needed

* program plugin localized

* shell plugin localized

* removed extra semi colon

* Added loc files in other languages as well for indexer
2020-07-03 09:42:44 -07:00
Mehmet Murat Akburak
c9fd409650 Add trailing slash to OutDir (#4708) 2020-07-03 19:37:16 +03:00
Arjun Balgovind
8a908aa33f Rework the HotkeyManager and KeyboardHook interop classes (#4710)
* Use GetAsyncKeyState calls and remove additional thread usage

* Removed Environment.Exit
2020-07-03 08:21:06 -07:00
Enrico Giordani
f9a5242e75 [FancyZones] draw active zones on top of inactive zones (#4727) 2020-07-03 17:04:52 +02:00
Divyansh Srivastava
7dabcc00ed Added fix to update text on navigation using up/down arrow (#4626)
* Added fix to update text on navigation using up/down arrow

* Fix incorrect alignment with ghost text

* Added tests
2020-07-02 18:29:39 -07:00
Alekhya
18f4e9db31 Fix for Memory issue with context menu items (#4597)
* Added the inotifyPropertyChanged to all the properties and that stops the memory for shooting up

* some more inotify properties added

(cherry picked from commit 26fa05d9b661dadc5ab0257d540ab838a07c43a6)

* Revert "some more inotify properties added"

This reverts commit 845a94c9b2.

* Removed unnecessary inotifypropertychanged interfaces and cleaned up the code

* removed the ctrl+c from folder plugin

* removed unnecessary init

* Added unit test to check if PropertyChanged is called

* renamed var

* refactored the tests

* formatting and adding comments

* changed access modifier in test

* Used observable collection instead of a list

* clearing the observable collection instead of setting it to a new one
2020-07-02 13:48:41 -07:00
Clint Rutkas
593ab6b014 unifying a lot of test packages (#4667)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-02 11:02:05 -07:00
Arjun Balgovind
656c33e942 Moved each test class to a separate file (#4592) 2020-07-02 10:25:57 -07:00
Clint Rutkas
4330338285 adjustment for #3191 (#4674)
* adjustment for #3191

* forgot DE

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-02 10:09:25 -07:00
Clint Rutkas
44c41d52b2 upgrading wincppwinrt across the board (#4669)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-02 09:42:51 -07:00
Clint Rutkas
449a3f479f unified mahapps (#4664)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-07-02 09:42:31 -07:00
Divyansh Srivastava
159a7c4947 Removed undeclared binding (#4590) 2020-07-02 09:32:53 -07:00
Mehmet Murat Akburak
30f442d774 [PowerRename] upper/lower/titlecase transform feature (#4183)
* Add basic transform functionality

* Add basic transform functionality

* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.

* Avoid wcslen() in for statement

* Avoid wcslen() in for statement

* Add basic transform functionality

* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.

* Avoid wcslen() in for statement

* Avoid wcslen() in for statement

* Add basic transform functionality

* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.

* Avoid wcslen() in for statement

* Adjust Powerrename Interface

* Add trimming rename string

* Remove leading and trailing spaces from rename string

* Add support for transforming only item name or extension. Temporarily remove trimming to refactor. Change CAPITALIZED to TITLECASE

* Fix bug when search for area is empty

* Add trimming back with refactor(leading spaces, trailing spaces, trailing dots)

* Now supports transforming when search area is empty

* Add smarter titlecase

Transformation breaks when new filename contains an unusable character (\/?:*?"<>|)
These characters need to be removed from new name anyway.

* minor bugfix

* Add unittests, contains failing tests

* Remove unnecessary/failing tests

* remove generated file

* some code formatting and fix memory leak issues

* Use proper allocation, change int to size_t

* Refactor. Move transforming to Helpers.cpp

* Refactor. Move trimming to Helpers.cpp

* Change StrDup to SHStrDup. Some refactoring.

* Fix memery leak, add proper result controls, use newNameToUse in functon calls becaause it is where the final form of the string is tracked

* Change declarations of strings, add proper result controls

* Slightly widen the labels to cover the whole text

* Add extended characters support

* Rename a variable

* Correctly identify the last word for titlecase

* Add empty line to last line of resource.h
2020-07-02 11:52:01 +03:00
Yevhenii Holovachov
e8685de7f7 [FancyZones] Fixed shift behavior (#4653) 2020-07-01 18:23:57 +03:00
Ivan Stošić
4c08b591f1 [FancyZones] Restore size of zoned windows (#4463)
* Started work

* I can't debug anything, cleaning

* Added settings, [[Not Tested]]

Not even compiled

* Tested, the most basic features work

* Refactor, add RestoreSize

* Added DPI awareness

* Fixed a potential issue with resizing zoned windows

* Fixup: Potentially unsafe memory-layout of std::pair replaced with std::array

* Fixup: Use .data() instead of a pointer

* Further refactoring

* Integrated Win+Arrow keys with the Restore size feature

* Fixed an issue where window's on-screen position is not restored properly

* Fixed a bug pointed out by Enrico
2020-07-01 15:36:05 +02:00
Andrey Nekrasov
16528888df Shortcut guide: add support for hotkeys + comments (#4517) 2020-07-01 12:37:50 +03:00
Andrey Nekrasov
738b5f5707 PowerLauncher: fix disabling by adjusting OpenProcess params (#4577) 2020-07-01 12:36:26 +03:00
Enrico Giordani
17343210c0 Now working on 0.19.1 (#4602) 2020-06-30 18:40:16 +02:00
Clint Rutkas
43aa2f5cd9 0.19 readme update (#4583)
* Update README.md

* Update README.md

* Update README.md

* Update README.md
2020-06-30 09:32:15 -07:00
martinchrzan
423cd20922 Merge pull request #4596 from microsoft/user/martinchrzan/nugetConfig
Clearing any nuget configuration that might be coming from parent dir…
2020-06-30 09:38:26 +02:00
Martin Chrzan
69d5ef36e2 Clearing any nuget configuration that might be coming from parent directories, fixes #4595 2020-06-30 08:50:53 +02:00
Arjun Balgovind
0dd17cc175 Cleanup null reference fix with correct code practice (#4587)
* Fixed null reference exception on context menu buttons

* Cleaned up fix with correct practices
2020-06-29 15:47:10 -07:00
Arjun Balgovind
16e56c4edb Fixed null reference exception on context menu buttons (#4586) 2020-06-29 13:47:35 -07:00
Yevhenii Holovachov
f46b876fd6 Removed hook creating from constructor (#4572) 2020-06-29 18:19:43 +03:00
Clint Rutkas
1181ab67ba fixing installer by removing file no longer used (#4545)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-06-27 11:10:50 -07:00
Niels Laute
014c26be25 Fix for visual glitch (#4537) 2020-06-27 09:39:02 -07:00
Divyansh Srivastava
99eb9429fd Add calculator images to MSI (#4530) 2020-06-26 23:01:15 -07:00
Divyansh Srivastava
d3b10d0d4d Theme aware plugin (#4499)
* Migrate theme manager to infrastructure and added it as input to public API instance

* Working event-delegate for PublicAPIInstance

* Theme aware UWP applications

* Theme aware program plugin

* Update query icon on theme change

* Theme aware calculator plugin

* Fix issue with query running before theme change

* Theme based changes in ImageLoader

* Removed ErrorIcon direct references and added references from ImageLoader

* Nit fixes

* Removed unnecessary TODO in UWP.cs

* Added preference to theme based icons

* Added IDisposable interfaces to unsubscribe events
2020-06-26 17:42:06 -07:00
Niels Laute
d9597d5ad5 [Run] Minor UX tweaks (#4526)
* Tweaked the shadows so it's conform to Windows standards. Fixed margins so UI elements are more aligned

* Fix
2020-06-26 16:12:26 -07:00
Arjun Balgovind
55272e5ea2 Fix settings issue where settings.json would get reset on runner startup (#4524)
* Added flag to avoid saving before modules is initialized

* Added comment
2020-06-26 14:46:47 -07:00
Alekhya
d17fc86fa4 [PT Run] Clear binary and json storage files on version upgrade (#4479)
* Clean termination of powertoys process.

* Fixed issue with run not responding to WM_CLOSE

* Fixed serialization error in pinyin and image cache

* Fixed merge conflict

* Fixed nit wrt to master

* Basic framework of clearing up of cache is working

* formatting

* removed the default argument of load

* fixed nit comment

* rewriting the PowerToys version

* Each storage file has an associated version file which helps decide whether or not to delete that file on loading

* removed unnecessary reference

* renamed file to StoragePowerToysVersionInfo

* adding log files

* Checking whether the version strings are null, if so, we would clear the cache

* Added filepath to log files to make it more informative

* fixed nit naming

* using lesser than to compare instead of portable version

Co-authored-by: Divyansh Srivastava <somm14divi@gmail.com>
2020-06-26 11:54:42 -07:00
Clint Rutkas
0b391584d4 Update README.md 2020-06-26 11:35:37 -07:00
Arjun Balgovind
e3e02aa30b Skip ErrorIcon and DefaultIcon while resizing the dictionary (#4520)
* Skip ErrorIcon and DefaultIcon while resizing the dictionary

* Removed autogenerated using statement
2020-06-26 11:30:04 -07:00
Arjun Balgovind
403f53a397 Fixed ghost text casing (#4498) 2020-06-26 10:29:34 -07:00
Alekhya
bfd79e1af2 reduced the description weight by half (#4519) 2020-06-26 10:20:54 -07:00
Alekhya
5745a984aa Partial Fix for Memory issue - Limiting the number of ImageSources cached (#4433)
* reducing storage of images

* Added task.run

* cleaned up code and added comments

* Renamed variable

* refactored code

* Removed task.run because it was leading to race conditions in the concurrent dictionary and it was taking only upto 10 ms for reordering the dictionary

* Added comments and fixed variable name
2020-06-26 10:20:35 -07:00
Enrico Giordani
d2f1f67a22 Update version to 0.19.0 (#4518) 2020-06-26 19:01:03 +02:00
Enrico Giordani
d98cb50d7a Update version to 0.19.0 (#4518) 2020-06-26 19:00:27 +02:00
Yevhenii Holovachov
cc4864976a Changed position of callback(false) call on disabling hook for shift (#4515) 2020-06-26 17:20:10 +03:00
Divyansh Srivastava
92fa8b7421 PowerToys Run cache issue (#4472)
* Clean termination of powertoys process.

* Fixed issue with run not responding to WM_CLOSE

* Fixed serialization error in pinyin and image cache

* Fixed merge conflict

* Fixed nit wrt to master

* Fixed undeterministic behaviour of Environment.Exit function

* Update timing for terminate process
2020-06-25 16:03:50 -07:00
Arjun Balgovind
aad2e8012b Add environment exit statement (#4496) 2020-06-25 14:21:09 -07:00
Enrico Giordani
b3eae80ece [CI, test] add prefix to common lib test dll (#4491) 2020-06-25 18:04:50 +02:00
Enrico Giordani
b58d5b6066 [CI, test] add common lib unit tests (#4489) 2020-06-25 16:20:43 +02:00
Arjun Balgovind
f1b6e6570c Fix remapping issues to Home/PgUp and other keys which are also present on NumPad (#4398)
* Added extended key flag to more keys

* Add test for extended key flag

* Move shlwapi.lib reference

* Added shcore ref

* Fixed pipeline incompatibility

* Fixed lib declaration in common

* Fixed formatting

* Remove unused statements

* removed another statement
2020-06-24 20:28:54 -07:00
Arjun Balgovind
8e758507b1 Enable code analysis on Keyboard Manager projects (#4455)
* Enable code analysis and fix GetTickCount warning

* Fix arithmetic casting warning
2020-06-24 14:55:02 -07:00
Arjun Balgovind
2601d8b702 Fix missing dlls in MSI for 0.19 (#4474)
* Add/remove missing dlls and add search.interop nuget package ref

* Fixed formatting
2020-06-24 14:48:16 -07:00
Yevhenii Holovachov
fa0545e4b3 Added info to ManagedCommon project (#4468) 2020-06-24 18:36:37 +03:00
Yevhenii Holovachov
690208fd4e Fixed info for powerrename, previewpane and shortcutguide (#4447) 2020-06-24 18:08:55 +03:00
Chakib Ljazouli
3272575f70 Dynamic dialog titles for Key/Shortcuts remapping (#4251)
* Fix typo in dialog title

* Pass Remap Keys/Shortcuts dialog titles as argument
2020-06-23 20:00:58 -07:00
ryanbodrug-microsoft
fad3142a47 Fix for warning: Error CA1806 BringProcessToForeground calls SendInput but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 73 Active 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
1f74dcff14 Changing 'Any CPU' to 'x64' for Managed Common project. 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
62c7183922 Setting 'Treat warnings as errors' to 'All' 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
ef73b0a07f Setting treat warnings as errors to true for release as well. 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
ec7d42d1fd Supressing NU1701 warning on known working nuget packages. This will allow us to turn warnings as errors on. 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
256a17f2c9 Fixing:
Error CS0436 The type 'ActionKeywords' in 'C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml.cs' conflicts with the imported type 'ActionKeywords' in 'Wox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in 'C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml.cs'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml 7 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
165ffed9e6 Fix CA 1060 by moving PInvokes to a common NativeMethodsClass
Severity Code Description Project File Line Suppression State
Warning CA1060 Move pinvokes to native methods class PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 24 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
b89d6d78ef Fix or the following warning. Removing unused ReportWindow from Launcher
Warning CA1812 ReportWindow is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static members, make it static (Shared in Visual Basic). PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ReportWindow.xaml.cs 15 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
6890561723 Severity Code Description Project File Line Suppression State
Warning CA1307 The behavior of 'string.IndexOf(string)' could vary based on the current user's locale settings. Replace this call in 'PowerLauncher.MainWindow.ListView_FirstItem(string)' with a call to 'string.IndexOf(string, System.StringComparison)'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 269 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
849ce04def Fix for Warning CA1823:
Severity Code Description Project File Line Suppression State
Warning CA1823 Unused field '_progressBarStoryboard'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 27 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
a29baf19d0 Fix for:
Severity Code Description Project File Line Suppression State
Warning CA2007 Consider calling ConfigureAwait on the awaited task PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 305 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
10d6a1fa54 Severity Code Description Project File Line Suppression State
Warning CA1801 Parameter text of method DelayedCheck is never used. Remove the parameter or use it in the method body. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 303 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
6ea181c286 Fix for:
Warning CA1820 Test for empty strings using 'string.Length' property or 'string.IsNullOrEmpty' method instead of an Equality check. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 291 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
2d890603c6 Fix for Warning CA1822 Member 'Hyperlink' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ReportWindow.xaml.cs 45 Active 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
d1ca30a28f Fix for Warning CA1822 Member 'GetHighContrastBaseType' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ThemeManager.cs 65 Active 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
35fccf8af8 Fix for Warning CA1031: Removing catch, as it doesn't recover from the exception, but hides the exception from showing up in crash reports / telemetry.
Warning CA1031 Modify '.ctor' to catch a more specific allowed exception type, or rethrow the exception. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 33 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
f5baa56e05 Fix for CA1031.
Settings.json is locked by the settings application and throws a system IO Exception.   This should be syncronized with the settings application, but for now I'm just fixing the exception to be more specific and not hide unexpected exceptions.

System.IO.IOException: 'The process cannot access the file 'C:\Users\ryanbod\AppData\Local\Microsoft\PowerToys\PowerToys Run\settings.json' because it is being used by another process.'

Severity Code Description Project File Line Suppression State
Warning CA1031 Modify 'OverloadSettings' to catch a more specific allowed exception type, or rethrow the exception. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 76 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
d2c1be5c2d Warning CA2002 Do not lock on objects with weak identity PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 43 Active 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
fd6525a9de Fix for Warning CA1822 :
Severity Code Description Project File Line Suppression State
Warning CA1822 Member 'ConvertHotkey' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 85 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
ba03a134da Fix for CA1822:
Severity Code Description Project File Line Suppression State
Warning CA1822 Member 'WaitForPowerToysRunner' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 130 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
9184c64ecb Fix for
Severity Code Description Project File Line Suppression State
Warning CA1401 P/Invoke method 'OpenProcess' should not be visible PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 125 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
653a9664e4 Removing warnings relative to passing in unlocalized string literals. Most of these pertain to debug messages and aren't user facing. We may want to revisit localizing these later. 2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
51d0cedb29 Fix for:
Warning CA1806 Main calls TryParse but does not explicitly check whether the conversion succeeded. Either use the return value in a conditional statement or verify that the call site expects that the out argument will be set to the default value when the conversion fails. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 45 Active
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
fa6d1bb23c Fix for:
Warning CA1062 In externally visible method 'void App.Main(string[] args)', validate parameter 'args' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
0f3b154699 Fix for the following:
Warning CA1001 Type 'MainWindow' owns disposable field(s) '_firstDeleteTimer' but is not disposable PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs

    Warning CA1816 Change App.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs
2020-06-23 17:51:17 -07:00
ryanbodrug-microsoft
d6e2b096ca Adding static analysis (Microsoft.CodeAnalysis.FxCopAnalyzers) to PowerLauncher Project 2020-06-23 17:51:17 -07:00
Arjun Balgovind
2104a1250e Added step to dispose the keyboard hook object (#4449) 2020-06-23 17:19:36 -07:00
Alekhya
ca99f60964 [PT Run] Find applications using the PATH env variable (#4418)
* Search for programs in the path env variable

* removing list of disabled programs

* Added env variable string to classify apps

* reverted the fullpath change

* removing full paths while calculating dups

* removed dups

* removed debugging code

* Renamed to run command

* Added condition to filter run commands unless there is an exact match

* renamed occurances to RUN COMMAND

* localized the subtitle - Run command

* Added tests

* add fullpath back to hash calculation

* renamed the function
2020-06-23 11:40:11 -07:00
Yevhenii Holovachov
147c08bd71 Added info to FancyZones, KeyboardManager and PowerLauncher projects (#4445) 2020-06-23 18:36:39 +03:00
Yevhenii Holovachov
ad440f70fa Added info to projects inside root, tests and common folders (#4413) 2020-06-23 16:53:16 +03:00
Yevhenii Holovachov
bb22155482 Added info to new settings projects (#4417) 2020-06-23 16:47:07 +03:00
Seraphima Zykova
5c1999b3d0 [Settings] 'Check for updates' button behavior changed (#4385) 2020-06-23 15:53:02 +03:00
Arjun Balgovind
87f0fcfd52 Added hack to show window if open (#4428) 2020-06-22 15:38:55 -07:00
Clint Rutkas
f6d53bc337 upgrade xaml based nuget packages (#4426)
* Settings packages updated

* removing WinUI references from wox base

* removing unneeded reference

Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-06-22 15:23:39 -07:00
Arjun Balgovind
720fad80c3 Fix Launcher focus for most cases (#4362)
* Add SendInput hack

* Cleaned up code

* Fixed formatting

* Moved Activate fn call

* Add more comments with link to issue
2020-06-22 14:47:33 -07:00
Divyansh Srivastava
196055e50e Index Desktop Applications (#4422)
* Added support to index desktop app

* Fixed dedup for url files

* Added internet shortcut scheme for epic games

* Added test for internet shortcut dedup

* Updated hostname for steam game
2020-06-22 12:34:57 -07:00
Andrey Nekrasov
73125574e6 MSI: fix include dirs causing MSI pre-build event fail to build (#4415) 2020-06-22 17:00:39 +03:00
Ivan Stošić
27a35a0388 Fixed an issue with the shift key (#4411) 2020-06-22 15:57:30 +02:00
Andrey Nekrasov
8c6085b933 Runner: move Launcher to its own folder and simplify dll loading (#4379) 2020-06-22 13:01:33 +03:00
Andrey Nekrasov
bef14f551e FancyZones: fix possible crash in GetWorkAreasByDesktopId (#4380) 2020-06-22 12:46:54 +03:00
Yevhenii Holovachov
e56c2eb6ca Fixed version property to pull from Version.props in C# projects (#4382) 2020-06-22 12:14:00 +03:00
Lavius Motileng
165365473f [Settings][Fix][Image Resizer ] Unused text box when selecting custom percent in new settings (#4344)
* save general settings to file upon launch

* ImageResizer: Added flags to disable and hide extra boxes

Co-authored-by: Lavius Motileng <laviusmotileng-ms>
2020-06-19 13:18:37 -07:00
Andrey Nekrasov
3bdd9a850f Runner: improve debugging experience with hooks (#4377)
* Runner: improve debugging experience with hooks
2020-06-19 14:13:38 +03:00
yuyoyuppe
b84ea020f2 fixup! forgot to rename 2020-06-19 13:27:29 +03:00
Seraphima Zykova
90efc5740f [WinAppDriver tests] Affection on user setting files fix (#4186) 2020-06-19 11:09:12 +03:00
Alekhya
c78e6588ad init description (#4391) 2020-06-18 17:15:21 -07:00
Divyansh Srivastava
a21a3827fd Remove hidden files from indexer results (#4325)
* Added functionality to not display hidden files

* Added interfaces for seperating db layer

* Updated variable naming and refactored Database connection class

* Added tests for WindowsSearchAPI class

* Fixed nit with braces

* Added function to test that all connections from database are closed
2020-06-18 15:42:28 -07:00
yuyoyuppe
2effbd0baf Runner: improve debugging experience with hooks 2020-06-18 14:27:20 +03:00
Andrey Nekrasov
7ed03c8b90 Runner: autoupdate should prefer .exe installer instead of .msi (#4216) 2020-06-18 13:43:09 +03:00
Niels Laute
59ce90e924 [PowerToys Run] Vertical scrollbar for results list (#4343)
* Enabling vertical scrollbar and colors

* Extending the list under the scrollbar

* Fix
2020-06-17 09:48:30 -07:00
Yevhenii Holovachov
da38e6a23d [FancyZones] Changed Shift key capture method (#4274)
* Used windows hook to capture shift key instead of getting state of key on window move
2020-06-17 16:06:16 +03:00
vldmr11080
698e5ec6ea [FancyZones] Move window into last known position on active work area (if possible) (#4218)
* Move window into last known position on active work area (if possible)

* Refactor code to avoid double checks

* Address PR comments

* Perform all HWND checks at one place

* Improve handling of active/primary work area in app zone history

* Address PR comments: naming, arguments checks

* Rename some functions to increase readability

* Implement special handling in 2+ monitor scenario

* Minor naming change

* Simplify

* Improve readability

* Remove blank line

* Don't move away from secondary monitor if there is no app zone history

* Update comment

* FancyZonesEditor should not be zoned

* Preserve width and height (if possible) when opening on active monitor

* Maintain w/h whenever possible

* Remove scaling, add window coordinates on active monitor top-left corner

* If there is no app zone history on secondary screen, fallback to default windows behavior.
2020-06-17 11:55:14 +02:00
ryanbodrug-microsoft
7f25e3ba97 Allowing launcher to be run as startup project with no command line args (#4267) 2020-06-16 10:53:27 -07:00
Clint Rutkas
1a3500cad3 moving the editor config out the the root folder (#4289)
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
2020-06-16 08:59:38 -07:00
stefansjfw
31c30a7602 Apply general settings on runner startup (#4302) 2020-06-16 10:55:15 +02:00
Mehmet Murat Akburak
014f3b9873 [PowerRename] capturing groups fix (#4181)
* Fix capturing group bug when Match All Occurrences is not checked

* Capture groups are now available when Match All Occurences option is not selected

* Bug fix when capture group is indicated with leading zeros. $01 should be considered as $1 etc

* Use flags in regex_replace() when Match All Occurences is not selected

Now the behaviour is consistent with how regex works when Match All Occurences is selected.
2020-06-16 11:04:14 +03:00
Arjun Balgovind
49cbcf01c6 Add workaround for IME Caps Lock issue (#4123)
* Add workaround for Japanese IME Caps Lock issue

* Changed tweak to reset modifier key rather than Caps Lock

* added tests

* Fixed test comment

* Moved environment initialization in KBM tests to TEST_METHOD_INITIALIZE
2020-06-15 16:48:00 -07:00
stefansjfw
f8cc129f04 [FancyZones] Move Trace::VirtualDesktopChange (#4320)
* Move Trace::VirtualDesktopChange to catch only the actual VD changes

* Update the check

* Add double check
2020-06-15 19:44:07 +02:00
Alekhya
236c1208e6 PWAs should not show up when searching for the main app (#4221)
* Search shows up steam games

* Formatting

* Filtering only those steam shortcuts which run an application

* Using equals instead of ==

* PWAs should not show up when searching for the main app

* Modified the subtitle to say progressive web application

* renamed to web application

* To search for web applications for all chromium based browsers

* Renamed it to WebApplication

* Added unit tests and refactored code

* made string global const

* Added localization tags

* Added a separate function for localization as the IPublic API was not available to all

* Removed unnecessary references and variables

* Update src/modules/launcher/Plugins/Microsoft.Plugin.Program/Languages/de.xaml

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>

* Added enum for application types

Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
2020-06-12 13:11:24 -07:00
Davide Giacometti
4c70e75bfc fix launcher network path (#4224) 2020-06-12 11:42:31 -07:00
pekspro
e8c5f3a882 Fixes null reference exception. (#3436) 2020-06-12 11:42:13 -07:00
Divyansh Srivastava
302df56ee1 Added support to run apps in development mode (#4217) 2020-06-11 18:24:45 -07:00
chrisgch
ccfc4d68f3 Setting WS_CHILD on preview handler (#3048) 2020-06-11 15:32:35 -07:00
Arjun Balgovind
071ea1dc97 KBM - Set up tests for keyboard hook remapping logic (#4004)
* Add test proj, refactor proj with filters, and move single remap function to a separate header

* Moved all methods to header files

* remove more unused commented code

* Reverted sln file

* Fixed sln file

* Added interface wrapping SendInput calls

* fixed formatting

* Created test mock class

* Added keyboard input logic

* Fixed compilation errors and added nuget reference to CppWinRT

* Added tests for single key remapping

* Refactored code for adding shortcut remap tests

* Separated test classes

* Fixed tests in release mode

* Added more tests

* Resolved comments
2020-06-11 13:07:46 -07:00
Tomas Agustin Raies
670033c4da [Settings/Run] LowLevel Keyboard hooking for Hotkeys (#3825)
* [Launcher/Settings] Low Level Keyboard Hooks

* [Run] LowLevel Keyboard Hook for Hotkeys

* Prevent shortcuts from auto repeating when keeping the keys pressed down
2020-06-11 12:59:36 -07:00
Arjun Balgovind
fa7e4cc817 Tweaked OS Detection project structure and added os check for PT Run (#4253)
* Tweaked OS Detection project structure and added check in Launcher

* Reverted formatter change to minimize diff
2020-06-11 11:47:15 -07:00
Clint Rutkas
67c8d80190 Safeguarding end user links in settings (#4226)
* first adjustment to wiki move

* Image Resizer and deleting imgs for FZ

* updating stuff to aka links

* updating app to leverage aka links

* moving files to wiki

* KBM adjustment

* updating

* getting PT Run moved over

* Shortcut guide and fixing launcher's readme text

* Update README.md

* img for shortcut guide moved to wiki

* updated setting img to be aka link as well
2020-06-11 10:16:39 -07:00
vldmr11080
792ce53992 Fix invalid namespace (#4259) 2020-06-11 17:03:02 +02:00
vldmr11080
b0a25f59d9 [Installer] Restart explorer.exe programatically after successful update (#4215)
* Restart explorer.exe programatically after successful update

* Move RestartManager related code into common

* Add newline at the end of files

* Note that explorer.exe should not be localized string
2020-06-11 10:09:06 +02:00
Niels Laute
d76234c112 [PT Run] Updated themes (dark/light/highcontrast) (#4119)
* Updated themes (dark/light/highcontrast)

* Updated semi-transparent colors to opague colors (for ClearType)

* Added theme brushes (light/dark/high contrast) for scrollbar.
2020-06-10 11:15:15 -07:00
Yevhenii Holovachov
6fdfd3b9e7 [PT Run] Closing PT Run and new settings app when PowerToys is not running (#3853)
Closing PowerLauncher, FZ Editor and new settings app when PowerToys is not running
2020-06-10 20:58:34 +03:00
dependabot[bot]
38350a1ae4 Bump websocket-extensions from 0.1.3 to 0.1.4 in /src/settings-web (#4108)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-10 19:36:53 +02:00
Alekhya
ce2bba751c Fix for Steam games not showing up (#4124)
* Search shows up steam games

* Formatting

* Filtering only those steam shortcuts which run an application

* Using equals instead of ==

* Case change in Internet shortcut
2020-06-10 10:34:48 -07:00
Arjun Balgovind
f149736a20 Add additional shortcut validation logic in Remap Shortcuts UI (#4068)
* Add more validation logic for shortcut remaps UI

* Fixed a bug in CheckRepeatedModifier logic
2020-06-10 08:25:41 -07:00
Alekhya
40330be123 Added case insensitive hash code calculation (#4206) 2020-06-09 14:12:53 -07:00
Divyansh Srivastava
93af4fc6b0 Fixed initial focus on WPF issue (#4113)
* Fixed initial focus on WPF issue

* Added comment for property change

* Updated function naming for visibility callback
2020-06-09 09:16:20 -07:00
Josh Soref
b574d4e388 Spelling - remaining code changes (#3963)
* spelling: commit

* spelling: exclusion

* spelling: initial

* spelling: occurred

* spelling: programmatically

* spelling: should

* spelling: successfully

* spelling: committed

* spelling: directly
2020-06-09 10:11:02 +02:00
Ivan Stošić
eb4b429e19 [Action runner] Support running generic targets as non-elevated (#3863)
* Initial work, not tested

* Forgot the most important part

* Use target argument instead of hardcoded string

* Removed old way of running Launcher

* Completed rebase, updated some code
2020-06-08 22:53:40 +02:00
Josh Soref
21929b1db2 Spelling misc (#4199)
* spelling: accessibility

* spelling: occurrences
2020-06-08 22:43:59 +02:00
Clint Rutkas
a5197ee039 making alt-f4 ignored (#4023) 2020-06-08 13:18:42 -07:00
Clint Rutkas
e974981725 Update community.md 2020-06-05 15:46:52 -07:00
Niels Laute
9ae4dd3dfe Updated the PT Run icon to #4041 (#4114) 2020-06-05 15:45:18 -07:00
Alekhya
d0e4dabe90 Fix for UWP icons not showing up (#4008)
* Added fix for UWP icons not showing up

* updated comment and reversed the list of target sizes

* find the icon closest in size to the appIcon size

* Remove nlog reference that was added by mistake
2020-06-05 15:05:00 -07:00
Clint Rutkas
a3c569137e Getting system up and going instructions (#4013)
* Update readme.md

* Update readme.md

* Update readme.md

* adjusted based off Raf's comments

* Update readme.md
2020-06-05 14:21:06 -07:00
Arjun Balgovind
3edb360d79 Fix remapping from Num Lock (#4083)
* Added num lock remap workaround

* Added comments

* Changed to 2 suppressed key events

* Fixed typos
2020-06-05 12:54:52 -07:00
Arjun Balgovind
f5285b48b1 Fix remapping to Alt+Tab/Win+Space style shortcuts (#3965)
* Add skip to currently invoked shortcut code - should change no behavior

* Fixed Alt tab issue

* Added comment

* Added step to check if original shortcut action key should be pressed

* Fix number of cases in comment
2020-06-05 11:39:38 -07:00
Alekhya
c01b76e098 Fix for PWAs and command prompt not showing up as the first result (#4020)
* Added code which increments the score for the app without any arguments

* Removed magic number and added var
2020-06-05 11:34:16 -07:00
Divyansh Srivastava
6adb47c447 Theming for powertoys run (#4007)
* Removed Wox Theme Manager

* Added Light and dark theme and template for high contrast theme

* Updated themeManager to remove strings

* Fixed issue with high contrast theme not being applied

* Fixed formatting

* Updated MSI to include dll for Mahapps and controlzex

* Added support for multiple high contrast themes
2020-06-05 09:58:30 -07:00
vldmr11080
b0b2d3a727 [FancyZones] App zone history on multiple desktops (#3932)
* Remove app zone history belonging to deleted virtual desktop.

* Implement support fancy zones app zone history on multiple desktops.

* Break when device id is located to avoid unnecessary loop iterations.

* Fix failing unit tests after JSONHelpers API changes.

* Use valid UUIDs in json helper unit tests.

* User properly formated test data in app zone history unit tests.

* Don't delete entire app history when moving out of zone on one desktop.
2020-06-05 17:25:52 +02:00
Yevhenii Holovachov
8410d7b08e [FancyZones] Secondary mouse buttons click to toggle zones activation (#3989)
* Changed option name in settings, changed behaviour of zones activation by mouse to switch
* Removed IsDragEnabled from ZoneWindow
2020-06-05 17:53:08 +03:00
Enrico Giordani
e6408a0c37 [runner] Change way of dropping privileges to start PT Run 2020-06-05 10:35:11 +02:00
Seraphima Zykova
e96c82b171 Uniform style for button designations in settings (#4070) 2020-06-05 09:51:09 +03:00
Enrico Giordani
ee31813a0d Now working on 0.18.3 2020-06-05 07:27:45 +02:00
Lavius Motileng
ac62fd6204 added error handling for FZ Hotkeys (#4057)
* added error handling for FZ Hotkeys

* moved hint to hot key control text

* updated icon size 16px

* updated styling and fixed typos

* fixed typo

* moved text to string resource

Co-authored-by: Lavius Motileng <laviusmotileng-ms>
2020-06-04 14:52:04 -07:00
Clint Rutkas
25fbcc144c Update README.md
tweaking to 18.2
2020-06-04 11:18:41 -07:00
Lavius Motileng
30cb7e62fd removed restrictions for image-resizer file format (#3377) 2020-06-04 11:05:28 -07:00
smiley
7c7ccc3a07 [PowerToys Run] Add "ignore hotkeys in fullscreen" setting (#3262) (#3604)
Connect Wox's existing "ignore hotkeys in fullscreen mode" setting to PowerLauncher and the PowerToys settings UI.

This allows PowerLauncher to ignore hotkeys if any application is currently in fullscreen mode, whether it's real exclusive fullscreen or borderless windowed mode. This applies to things like fullscreen games, video and presentations but not maximized windows.
2020-06-04 10:21:16 -07:00
vldmr11080
fb3f4fa0a8 Connect appZoneHistory settings with rest of the stack in settings v2 (#4047) 2020-06-04 14:33:03 +02:00
stefansjfw
2b62244806 Cleanup Editor cmd args (#4022) 2020-06-04 13:01:42 +02:00
stefansjfw
f5dc197e8b [example_powertoy] Remove example_powertoy (#3955)
* Remove example_powertoy

* Address PR comments
2020-06-04 12:28:30 +02:00
Josh Soref
e6060048bd spelling: restart 2020-06-04 11:38:21 +02:00
Clint Rutkas
f83ff068ae Update README.md 2020-06-03 16:03:36 -07:00
Clint Rutkas
b21a6b76e0 Expanding 'community' section (#4028)
* updating for #3977

* spelling
2020-06-03 15:28:59 -07:00
Arjun Balgovind
70527022d9 Moved component to KBM directory (#4009) 2020-06-03 10:41:35 -07:00
Alekhya
8cddd595d4 Fix for File explorer not showing up and multiple notepads (#3969)
* reverted the dedup code, file explorer shows up but so do duplicates

* Fixed file explorer and dedup

* Formatting

* Added tests for all the cases

* Formatting

* Tests

* take name and exe into consideration while calculating hash

* unique primes while calculating hash code
2020-06-02 14:36:32 -07:00
Niels Laute
96b79d5f06 Fabric UI reference update (#3991)
Microsoft changed the name of Fabric UI to Fluent UI. Updated title and URL (which still links to the same page, just with a direct link instead of a redirect).
2020-06-02 12:04:58 -07:00
vldmr11080
1c7b07d614 Remove workarounds related to 0000 dekstop GUID. (#3931) 2020-06-02 12:06:36 +02:00
Niels Laute
0d59de5767 Fixed spacing issue 2020-06-02 11:26:58 +02:00
Niels Laute
e3613c54e9 'Autocomplete' is more common than 'autocompletion' 2020-06-02 11:26:58 +02:00
Niels Laute
5956e6d9c1 Updated strings for PowerRename 2020-06-02 11:26:58 +02:00
Niels Laute
ec895f271b Page header is now center aligned with first item, similiar to W10 Settings 2020-06-02 11:26:58 +02:00
Niels Laute
751f30e316 Changed numberbox to slider for FZ. Added opacity value textblock for all sliders 2020-06-02 11:26:58 +02:00
Niels Laute
cee8253cd3 Fixed width for controls so they are nicely aligned 2020-06-02 11:26:58 +02:00
stefansjfw
ae4cb6e372 Move FancyZones to separate build&install dir (#3961) 2020-06-02 10:48:07 +02:00
Arjun
398f976f3e Added KeyboardManager directory 2020-06-02 10:26:21 +02:00
Clint Rutkas
5f049beb04 Update pipeline.user.windows.yml 2020-06-01 16:10:34 -07:00
Alekhya
a8d67a1c60 Take space into consideration while calculating the first matched index (#3874) 2020-06-01 15:25:14 -07:00
Clint Rutkas
26aa9727a1 Update pipeline.user.windows.yml 2020-06-01 15:21:38 -07:00
Clint Rutkas
3cef696a65 Update pipeline.user.windows.yml 2020-06-01 13:54:12 -07:00
Divyansh Srivastava
397b1533f0 Somil55/merge wpf to master (#3840)
* Basic WPF searchbox working

* Updated key navigation and removed coldstart for searhbox

* refactored and added code back in commented

* Removed XAML Island references

* Basic searchbox+listview working

* Getting a bit more back

* got color there

* Result list bit better now

* Added image loader for WPF Image

* Partially got the context menus rendering again

* adjusting coldstart to load, control will load with main form

* getting context menus back

* mouse over works now

* Click now works, started to remove Win.XAML references

* being a bit more forcusful on focus

* Shadow text is not aligned

* fixing focus if listbox was used

* small tweak to fix shadow text

* inputs don't work but gotta figure out why.  commenting out

* preview text

* adding back in delay

* fixed height issue

* Applied the correct context button styles

* Created custom ItemContainerStyle to fix the blue highlights behind the command buttons

* Applied the correct highlight / mouseover styling

* Removed vertical scrollbar in listview

* fixed for alt-space prompt

* Fixed right click focus issue

* Somil55/wpf modifier keys (#3378)

* Removed DPI change as it was not required

* Global key hooks for context menu items

* Updated Key for shell, folder and indexer plugin

* Updated key mapping for indexer plugin

* Somil55/wpf context menu selection (#3389)

* Removed DPI change as it was not required

* Global key hooks for context menu items

* Updated Key for shell, folder and indexer plugin

* Updated key mapping for indexer plugin

* Add trigger to selection on tabbing

* Minor shadow adjustments so its more similiar to default shell shadow. Added intro/outro animations

* Added UWP-like scrollbar style for the results list

* Fixed formating and naming

* Removed Powerlauncher UI project

* Update PowerToys.sln

* Commented out scrollbar and fade in/out animations

* Added missing features from UWP branch

* Fixed formatting for Product.wxs

* Add dragging to WPF window

Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
2020-06-01 12:35:37 -07:00
Clint Rutkas
5680a34ec1 Update pipeline.user.windows.yml 2020-06-01 10:26:10 -07:00
stefansjfw
84a197299f [KeyboardManager&Installer] Move Keyboard Manager to separat build&install folder (#3949)
* Move Keyboard Manager to separat build&install folder

* Update pipeline
2020-06-01 18:29:40 +02:00
Clint Rutkas
4307882fa8 Update pipeline.user.windows.yml 2020-06-01 09:01:44 -07:00
Alekhya
d2dfbff832 Add resource only when it is not already present (#3842) 2020-06-01 08:17:28 -07:00
stefansjfw
8cc58d0b89 Move ImageResizer to separate folder (#3868) 2020-06-01 17:07:06 +02:00
Clint Rutkas
971fc462ab Update pipeline.user.windows.yml 2020-06-01 07:44:19 -07:00
Ivan Stošić
8d2256d359 Removed the stampZone argument (#3852) 2020-06-01 16:14:29 +02:00
Enrico Giordani
8f3b863edd [PowerRename] fix for documentation (#3952) 2020-06-01 14:05:52 +02:00
Clint Rutkas
4cc6c5ec35 Update pipeline.user.windows.yml 2020-05-31 22:19:50 -07:00
Clint Rutkas
cf53614721 Update pipeline.user.windows.yml 2020-05-31 21:05:02 -07:00
Clint Rutkas
efe84e58d7 Update pipeline.user.windows.yml 2020-05-31 15:45:35 -07:00
Clint Rutkas
cf59ad76fb Update pipeline.user.windows.yml 2020-05-31 10:16:51 -07:00
vldmr11080
2216cda2f1 [FancyZones] Improve monitor work area handling (#3418)
* Initial design for improving handling of different engaged work areas in fancyzones.

* Remove active device id check in ZoneWindow.

* Remove concept of active device identifier in JSONHelpers.

* Refactor interface description and add new method.

* Simplify ZoneWindow initialization.

* Default value for active ZoneWindow during move/size.

* Add newline at the end of file.

* Use COM pointers for ZoneWindow instead of passing raw ptr.

* Solve few issues after merging with master.

* Fix typo in documentation.
2020-05-31 12:36:45 +02:00
Clint Rutkas
595b15fcd9 Update pipeline.user.windows.yml 2020-05-29 20:57:17 -07:00
Clint Rutkas
a104c7f0f8 Update pipeline.user.windows.yml 2020-05-29 20:49:54 -07:00
Clint Rutkas
059392d257 Update pipeline.user.windows.yml 2020-05-29 20:46:47 -07:00
Clint Rutkas
5a1b3da394 Update pipeline.user.windows.yml 2020-05-29 20:42:43 -07:00
htcfreek
92d7c2926c [Settings] Change settings header to "Remap keys" on KBM pagr (#3654)
* Update settings header: Remap keys

We write "Remap Keyboard" but it must be "Remap keys" because we not remapping the whole keyboard. We only remap single keys.

* Tweaked c++ side naming

Co-authored-by: Arjun <arjunbalgovind@gmail.com>
2020-05-29 12:01:29 -07:00
Enrico Giordani
8f39697e3d [CDPx] publish symbols (#3864) 2020-05-29 17:28:57 +02:00
stefansjfw
ff328381af [FancyZones] Custom canvas layouts scaling (#3644)
* Make canvas layout scaling sensitive

* Revert "Make canvas layout scaling sensitive"

This reverts commit 705dab7e36.

* Revert "Revert "Make canvas layout scaling sensitive""

This reverts commit b9dd27644c.

* Cleanup

* Minor refactoring

* Address PR comments
2020-05-29 09:38:29 +02:00
Arjun Balgovind
3bb3c06456 KBM - Set treat warnings as errors, and clean up the dllmain.cpp file (#3203)
* Add test proj, refactor proj with filters, and move single remap function to a separate header

* Moved all methods to header files

* remove more unused commented code

* Undo test project addition

* Treat warnings as errors
2020-05-28 14:47:32 -07:00
vldmr11080
1cbcd41b17 [PowerRename] Move PowerRename module installation into separate folder (#3821)
* Move PowerRename module installation into separate folder.

* Update build pipeline.

* Correct order between modules.
2020-05-28 16:53:16 +02:00
stefansjfw
5ebd9eb577 [ShortcutGuide&Installer] Move Shortcut Guide to separate build and install folder (#3810)
* Move Shortcut Guide to separate build and install folder

* Rename shortcut_guide to ShortcutGuide

* Propagate change to the pipeline
2020-05-28 16:23:03 +02:00
Clint Rutkas
850d9ee095 Update README.md 2020-05-27 20:39:06 -07:00
Seraphima Zykova
5db1f91b01 [FancyZones] Unit-tests fix: keeping user settings unchanged (#3500) 2020-05-27 21:09:18 +03:00
Josh Soref
ac6b9712ad Spelling: ... shortcut guide (#3790)
* spelling: dimension

* spelling: hidden

* spelling: miniature

* spelling: parent

* spelling: popin

* spelling: signal

* spelling: suppress
2020-05-27 19:57:19 +02:00
stefansjfw
df93f4ba99 Use correct resource for Shourtcut Guide theme setting (#3788) 2020-05-27 19:45:21 +02:00
Clint Rutkas
7c20d46eeb Update README.md 2020-05-27 09:59:04 -07:00
Clint Rutkas
fe432fcca8 Update README.md 2020-05-27 09:53:41 -07:00
Clint Rutkas
5b1638ea59 Update README.md 2020-05-27 09:52:08 -07:00
htcfreek
87a1d4088b [Readme.md] Adding an uninstall hint (#3522)
* Adding Uninstall instaructions to ReadMe

* Fixed issue link

* Move "uninstall hint" link

* Did requested changes

Remove hand emoji, move link and fix text mistakes.
2020-05-27 09:48:54 -07:00
Josh Soref
038c346500 spelling: calculator (#3750) 2020-05-27 08:22:18 -07:00
Josh Soref
0bcaa13056 Spelling: ... runner settings (#3783)
* spelling: default

* spelling: elevated

* spelling: instance

* spelling: relative
2020-05-27 17:06:50 +02:00
Josh Soref
c0e62372e6 Spelling: ... core (#3782)
* spelling: administrator

* spelling: appearance

* spelling: expected

* spelling: explorer

* spelling: implementation

* spelling: integration

* spelling: successful

* spelling: windows
2020-05-27 08:06:17 -07:00
Josh Soref
84169cce10 Spelling: ... wox (#3775)
* spelling: arguments

* spelling: config

* spelling: deactivated

* spelling: exception

* spelling: folder

* spelling: initialize

* spelling: makesure

* spelling: response

* spelling: storage

* spelling: visibility

* spelling: serialized

* spelling: zipped
2020-05-27 08:05:54 -07:00
Josh Soref
c2c163ac4e Spelling: ... common (#3781)
* spelling: alignment

* spelling: awareness

* spelling: background

* spelling: bottom

* spelling: buttons

* spelling: comparison

* spelling: cortana

* spelling: exiting

* spelling: initialization

* spelling: middle

* spelling: properly

* spelling: succeeded

* spelling: unknown
2020-05-27 16:58:47 +02:00
Josh Soref
ecb5d2ae1c Spelling: ... fancyzones (#3777)
* spelling: defined

* spelling: excluded

* spelling: guid

* spelling: highlight

* spelling: original

* spelling: nonexistent
2020-05-27 16:55:46 +02:00
PrzemyslawTusinski
3d619f1670 [FancyZones] Outlook new message restore placement bug (#2534) 2020-05-27 16:52:59 +02:00
Josh Soref
3265549911 spelling: separator (#3751) 2020-05-26 18:10:58 -07:00
Sam Chivers
d5c3a3e5e8 Update README.md (#3753)
After reading the rest of the paragraph, I believe the intention was for this to read "This project welcomes contributions of all types" rather than "This project welcomes contributions of all times" or "..at all times"
2020-05-26 14:33:04 -07:00
Josh Soref
30dff09d7e spelling: toggle (#3749) 2020-05-26 20:12:20 +02:00
Clint Rutkas
85f7d19eb2 upgrade to cppwinrt after the last merge conflict (#3745) 2020-05-26 10:53:46 -07:00
vldmr11080
6adda5c29c [FancyZones] Remove "keep windows pinned to virtual desktop location" settings (#3687) 2020-05-26 17:06:12 +02:00
Josh Soref
4a03756b5b Spelling: ... (#3398) 2020-05-26 17:02:36 +02:00
Josh Soref
b1554ebf37 Spelling: ... src/modules (#3712) 2020-05-26 16:56:25 +02:00
Clint Rutkas
b6307b4fd6 Nuget updates (#3683)
* Sync'ing nuget packages. more to do

JSON, islands

* updating sql and oledb

* upgrading to 2.0 RTM for MahApps

* consolidated Microsoft.NETCore.UniversalWindowsPlatform

* updating Microsoft.Windows.ImplementationLibrary

* Microsoft.Windows.SDK.Contracts
2020-05-26 07:42:04 -07:00
Ivan Stošić
6f22c7ad19 [FancyZones] Added persistence to app zone history (#3132)
* Persist app zone history in a separate file

* Almost ready to be functionally tested

* Now all unit tests pass

* Bug fixes, it seems to work

* Various fixups

* Improved performance of FancyZones::UpdateWindowsPositions()
2020-05-26 16:01:12 +02:00
Andrey Nekrasov
bc9add783c sln: specify WinSDK version for cpp projects (#3728) 2020-05-26 17:00:09 +03:00
Niels Laute
ee67221068 [Settings] About section headers are now on a single line in collapsed mode (#3696)
* About section headers are now on a single line in collapsed mode

* Removed the more button, since the colorpickers are now in flyouts anyways
2020-05-26 09:34:14 +02:00
Josh Soref
71e528139c Spelling: ... src/modules/launcher (#3694) 2020-05-25 17:27:13 -07:00
Clint Rutkas
c674fe1f04 Migrate numberboxes to compact mode (#3375) 2020-05-25 08:58:29 -07:00
Niels Laute
d047e95bb5 [Settings] UX improvements to the FancyZones config page (#3658) 2020-05-25 11:47:32 +02:00
stefansjfw
791518d6c4 Don't migrate custom layout if type is invalid (#3645) 2020-05-25 10:59:05 +02:00
Niels Laute
83afd55e0e Updated titles (#3464) 2020-05-25 10:45:27 +02:00
vldmr11080
7870a66790 [FancyZones] Snap out of maximized window into zones with win + left/right arrow (#3097)
* Snap out of maximized window into zones with win + left/right arrow.

* Determine if there is anything to process before swallowing keypress.
2020-05-25 10:15:42 +02:00
Andrey Nekrasov
c923e96f3e sln: do not use PCH on CI (#3106) 2020-05-25 10:59:05 +03:00
Andrey Nekrasov
dd79834137 CI: remove unnecessary build commands (#3300) 2020-05-25 10:56:44 +03:00
Enrico Giordani
8995f0af55 Now working on 0.18.2 (#3542) 2020-05-22 20:28:49 +02:00
Clint Rutkas
e75a74565b Update README.md 2020-05-22 10:21:43 -07:00
vldmr11080
1792849b98 Expose InMoveSize from WindowMoveHandler. (#3525) 2020-05-22 16:42:29 +02:00
ricardosantos9521
c7fb1f6d17 bug fix #3209 (#3457)
Co-authored-by: ricar <ricar@ASUS>
2020-05-21 11:02:03 -07:00
Enrico Giordani
a856263081 [PowerToys Run] run non-elevated when runner is elevated (#3451)
* run Launcher non-elevated

* Implemented acquiring PID of Launcher

Co-authored-by: ivan100sic <ivan100sic@gmail.com>
2020-05-21 19:44:32 +02:00
Ivan Stošić
582d1320a3 [KBM] Fix compilation error 2020-05-21 11:06:50 +02:00
Josh Soref
3789da4305 Use check boxes (#3396) 2020-05-20 22:53:12 -07:00
sakariya
a36f97adfb Dev/saahmedm/fixlabel (#3366)
* Update EditShortcutsWindow.cpp

* Update EditKeyboardWindow.cpp

* Update README.md

* Update EditShortcutsWindow.cpp

* Update EditShortcutsWindow.cpp
2020-05-20 14:52:10 -07:00
Tim De Pauw
2cda53d3af Capitalize GitHub properly (#3356) 2020-05-20 14:28:25 -07:00
Bret
74007ea465 Merge pull request #3360 from microsoft/TheMrJukes-patch-1
Delete README.md
2020-05-20 14:10:37 -07:00
Bret
c88a7dba6b Delete README.md
This is no longer accurate and also talks about internal shares which we shouldn't do publically
2020-05-20 13:17:16 -07:00
Clint Rutkas
66b7863d43 Update README.md 2020-05-20 12:21:37 -07:00
Clint Rutkas
19b318a488 Update README.md (#3355) 2020-05-20 12:15:31 -07:00
ryanbodrug-microsoft
c606e3db43 Disabling IsRightTapEnabled on all UI Elements that steal focus from the text box. (#3349) 2020-05-20 11:38:14 -07:00
wolf99
f89ab74b29 Add 1903 requirement (#3321)
Have not seen this requirement mentioned anywhere until PowerToys is already installed.
For those installing PowerToys specifically to try this, it would be useful to know the requirement in advance, especially given that https://github.com/microsoft/PowerToys/blob/master/README.md mentions only 1803.
2020-05-20 11:20:11 -07:00
Clint Rutkas
4bbdec5044 Update README.md 2020-05-20 11:05:53 -07:00
Arjun Balgovind
56a727cf0d Added check for Type key/shortcut open but not in focus (#3235) 2020-05-20 09:56:00 -07:00
Arjun Balgovind
32f74e41ef Fix publish on local machines (#3270)
* Moved publishing to publish.cmd script

* Moved publish back to pre-build event
2020-05-20 09:55:17 -07:00
Ivan Stošić
e249bc5856 [FancyZones] Fix a regression with Chrome tabs jamming FZ (#3338) 2020-05-20 18:52:48 +02:00
Arjun Balgovind
32b8a344a6 Moved publishing to publish.cmd script (#3259) 2020-05-20 09:35:02 -07:00
Clint Rutkas
61c0c35e92 Fix for 3116, changing uwp to packaged (#3123) 2020-05-20 09:17:46 -07:00
Andrey Nekrasov
2eecaf4570 Revert "[FancyZones] Remove "keep windows pinned to virtual desktop location" settings (#3093)" (#3292)
This reverts commit 8f59247acb.
2020-05-20 11:57:17 +03:00
vldmr11080
8f59247acb [FancyZones] Remove "keep windows pinned to virtual desktop location" settings (#3093)
* Remove keep windows pinned to virtual desktop location FancyZones settings

* Remove virtual desktop switch handling for this scenario.
2020-05-20 10:49:28 +02:00
Clint Rutkas
eb3ec26279 fixing images so they deep link to module overview versus the img in readme (#3240)
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2020-05-19 17:12:35 -07:00
Alekhya
f07d37ce0d [launcher] - Increase the score for Exact matches in the Name of the Application (#3213)
* Increase score for exact matches in the name

* Added tests for exact matching

* Used TestCase

* variable for bonus score

* Removed comment, variable is self explanatory
2020-05-19 16:10:40 -07:00
Alexander Sklar
2e8602eb43 Update win_hook_event_data.h (#3092) 2020-05-19 15:07:06 -07:00
Cloud Han
4277041b0e correct url (#3142) 2020-05-19 10:29:06 -07:00
Enrico Giordani
6801190180 Now working on 0.18.1 (#3141) 2020-05-19 18:20:35 +02:00
Clint Rutkas
067a9cf54d Dev/crutkas/change log0.18 (#3138)
* Update README.md

* Update README.md

* Update README.md

* Update README.md
2020-05-19 08:48:53 -07:00
Divyansh Srivastava
d31a8c203f Updated query delay in launcher (#3113) 2020-05-18 11:00:53 -07:00
Niels Laute
99e8a393b6 Fix for hero image not showing in GitHub mobile app (#3105)
Replaced the image MD tag with HTML. Seems to solve the issue.
2020-05-18 10:58:43 -07:00
Enrico Giordani
42ba0a2642 [CDPx] update to use telemetry nuget package v2 (#3087) 2020-05-16 19:48:41 +02:00
Alekhya
cc0cd51658 default four results in launcher (#3081) 2020-05-15 18:51:56 -07:00
sakariya
9d3014e39c adding readme (#3045)
* adding readme

* adding links

* Update README.md

* responding to edits

* update readme

* Update README.md

* adding image

* update

* Update README.md

* adding numbers
2020-05-15 17:16:04 -07:00
ryanbodrug-microsoft
1ac3a9da4f Revert "Remove binaries from signing list" (#3078)
* Revert "Remove binaries from signing list (#3029)"

This reverts commit 64d9e9054c.

* Removing wox.exe from cdpx build assemblies
2020-05-15 15:11:38 -07:00
Tomas Raies
7c80bbecd9 [Hotfix] Add VCRuntime dlls to \modules folder
This fixes the ImageResizer crash.
2020-05-15 12:42:04 -07:00
Tomas Raies
d55e6191c2 Remove VCRedist Merge Modules, copy dlls instead
* VC++ redistributables for CRT are copied into \PowerToys, \PowerToys\SettingsUIRunner and \PowerToys\modules\launcher
2020-05-15 12:01:21 -07:00
ryanbodrug-microsoft
3875603285 Wox project should only produce a .dll not an exe. (#3068) 2020-05-15 11:44:37 -07:00
Enrico Giordani
a62261343c Update version to 0.18.0 (#3063) 2020-05-15 18:51:49 +02:00
Lavius Motileng
8b0a995f23 [Settings V2] Updated general settings tests (#2971)
* updated general settings tests

* reverted changes to solution files

* fetch test strings from a string resource

* updated bidning variable name to avoid confusion

Co-authored-by: Lavius Motileng <laviusmotileng-ms>
2020-05-15 09:38:47 -07:00
Arjun Balgovind
4734cb3428 Fix FZ not forwarding events to next hook (#3044) 2020-05-15 09:37:11 -07:00
ryanbodrug-microsoft
34f814717b Adding privacy event tags to each telemetry event. (#2879)
* Adding privacy event tags to each telemetry event.

* Moving Privacy events to Telemetry base, Removing tag values, and fixing namespaces.

* Adding documentation comments to fix style cop errors in release

* UTCReplace_AppSessionGuid boolean property to all C# telemetry events.

* Adding hardcoded version number to boot events.

* Adding reference to telemetry in settings unittest

* Adding Preview Pane events for loading w/ hardcoded version number

* Adding telemetry.h to msi for svg and markdown events

* removing unused explicit interface exception
2020-05-15 09:08:39 -07:00
Alekhya
d4b56f99ff [launcher] Remove Program Plugin dll (AppxPackagingTlb.dll) (#3037)
* Removed AppxPackaging dll

* Added helper class and fixed some AppxPackage errors

* Modified it to use the COM interface

* Got it to build without errors but UWP apps don't show up

* Added app to the array

* Deleted the AppxPackaging.dll

* Added github reference

* Removed unnecessary uwp app argument

* Removed dll from installer wxs file
2020-05-15 08:49:44 -07:00
PrzemyslawTusinski
f51d51abf4 Fz Settings excluded apps multiline behavior - fix (#3055) 2020-05-15 17:37:50 +02:00
Ivan Stošić
a13a0ee5a9 Fixed a crash in Settings/ImageResizer (#3053) 2020-05-15 17:03:30 +02:00
Jessica Yuwono
19f4ad0361 Update launcher readme (#3034)
* Added readme and module overview link

* Fixed image link

* Added a known issue per review comment

* Changed images location
2020-05-14 17:24:17 -07:00
Divyansh Srivastava
93dc96f150 Fixed folder naming for app data (#3033) 2020-05-14 16:26:45 -07:00
Enrico Giordani
64d9e9054c Remove binaries from signing list (#3029) 2020-05-14 15:02:59 -07:00
Divyansh Srivastava
b1ed7227d7 Fix launcher height (#3013)
* Added height for searchbox

* Updated top calculation for launcher window
2020-05-14 13:52:48 -07:00
Clint Rutkas
48215c1eae Update README.md 2020-05-14 13:34:24 -07:00
Enrico Giordani
7399a978f5 Update icons for Settings v2 (#3023) 2020-05-14 21:45:44 +02:00
Lavius Motileng
3737ad6524 [Settings V2] Updated default color values for fz (#2972)
* updated default color values for fz

* moved default values to shared constants

Co-authored-by: Lavius Motileng <laviusmotileng-ms>
2020-05-14 11:58:56 -07:00
Clint Rutkas
b37695bc6f Update build-powertoys-steps.yml 2020-05-14 11:57:58 -07:00
Yevhenii Holovachov
6e97d588e4 Updated .dll's and .exe's in pipeline.user.windows.yml (#3012) 2020-05-14 21:22:13 +03:00
Enrico Giordani
17319b15b0 Update application icon (#2999) 2020-05-14 20:19:06 +02:00
Arjun Balgovind
0692afcd90 Hotfix - Fix broken Type Shortcut (#3006)
* Fix broken type shortcut
2020-05-14 10:56:36 -07:00
Arjun Balgovind
91ac3f7931 Add auto scroll when adding a remap (#2969) 2020-05-14 09:24:50 -07:00
Arjun Balgovind
9d5990311f Fixed overflow in Type Shortcut (#2930)
* Fixed overflow in Type Shortcut

* hide the stackpanel if it is not required

* changed loop
2020-05-14 09:23:51 -07:00
Andrey Nekrasov
6f38cdec5a Fix various MSI issues (#2985)
* wix: add Notice.md #2442

* wix: close PowerToys which might be running during installation process #2887

* wix: update dotnet core to 3.1.4
2020-05-14 18:20:06 +02:00
Lavius Motileng
7a1f3a0cb1 [Settings V2] Remove multiple pop-ups on double tap (#2928)
* remove multiple pop-ups on double tap

* removed e0l space and updated bool variable
2020-05-14 09:12:40 -07:00
Andrew Baker
99356f7880 Update URL so it points to the general repository rather than the issues page (#2996) 2020-05-14 08:45:48 -07:00
Yevhenii Holovachov
d38d7b8ff6 Version required warning label changed, rebuilded bundle.js (#2991) 2020-05-14 17:48:33 +03:00
htcfreek
834ac42d24 Change Auto-download settings' title (#2966)
* Change auto-download setting's title

The update don't get automatically downloaded when the user is connected over an metered connection.
This is something the user should known about. Because of not have to be afraid on having extra costs and to not being confused if it not works on metered connections.

* auto-download title (old settings)

Did the same change also for the old web-settings.
2020-05-14 15:30:18 +02:00
Yevhenii Holovachov
e80fac4900 Disabling toggles for Powertoys Run and Keyboard Manager (#2983)
* Disabling toggles for Powertoys Run and Keyboard Manager
2020-05-14 15:09:49 +03:00
Yevhenii Holovachov
a13c8cb71e Autoupdate option visible only for administrators group (#2945)
* Added isAdmin value to Settings.UI. Changed elevation check to user group check for AutoDownload toggle
2020-05-14 12:36:27 +03:00
Niels Laute
3dc61962de [Read me] Adding hero-image (including new icon) and module screenshots (#2946)
* Adding screenshots and hero image

* Added screenshots and KBM + Launcher descriptions

* Commented out 0.18 features (KBM + Launcher)

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Updated contribution link

* Linebreak added

* tweaks

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-05-13 21:31:36 -07:00
Divyansh Srivastava
5c3acf61b4 Fixed powertoys run not reacting to change in settings (#2968)
* Fixed powertoys run project name in settings

* Rename save directory
2020-05-13 17:50:19 -07:00
Tomas Raies
953d835ded Revert "wix: Install .NET Core 3.0.x instead of .NET Core 3.1.x (#2943)"
This reverts commit 01f11d94b0.
2020-05-13 13:34:23 -07:00
Tomas Raies
1537ca4e71 [Launcher] Add missing Microsoft.Extensions.. dlls 2020-05-13 13:34:23 -07:00
Divyansh Srivastava
2d94ace89f Update Launcher naming settings (#2961)
* Renamed LAuncher to Run

* Updated Run to PowerToysRun

* Updated naming for settings v1
2020-05-13 13:16:34 -07:00
Alekhya
ea9c0b919f Remove Program Plugin dll (ShObjldITIb.dll) (#2952)
* Deleted the dll

* Added Shell Link helper class

* Add activation manager helper

* Use helper shell link and remove shell namespace

* removed using shell and added Activation helper namespace

* Removed the dll from the installer

* formatting

* nit formatting
2020-05-13 11:43:56 -07:00
Arjun Balgovind
d178fa5bdb KBM - Change behavior to hold enter to accept rather than hold and release (#2931)
* Changed to hold enter

* Changed code such that hold enter does not trigger a re-open

* Fixed tab ordering

* Changed text
2020-05-13 10:13:44 -07:00
Andrey Nekrasov
01f11d94b0 wix: Install .NET Core 3.0.x instead of .NET Core 3.1.x (#2943)
* wix: Install .NET Core 3.0.x instead of .NET Core 3.1.x

* fixup! review comments

* fixup! review comments
2020-05-13 18:23:56 +02:00
Arjun Balgovind
58f1a8e916 Fix failing build pipeline (#2932)
* Add extra libpath load statement

* Add QSpectre flags on Release

* Revert cmd change

* Added spectre flag for debug

* added flag for more projects
2020-05-12 20:52:02 -07:00
Tomas Agustin Raies
688fefc4dd [Launcher] Fix Copying of calculator value (#2929) 2020-05-12 16:41:49 -07:00
Arjun Balgovind
ce96e34d25 Fixed some warnings and added code to close active windows on disable (#2915) 2020-05-12 15:58:11 -07:00
Divyansh Srivastava
a1e1d663c3 Migrate Search box to WPF control (#2917)
* Replaced UWP searchbox with WPF

* Updated foreground color scheme for textbox

* Add focus on visibility changed

* Updated initial hiding of window

* Fixed list box border

* vis issue on start, fixing border

* Revert "Merge branch 'somil55/MigrateSearchBoxToWPF' into fewTweaks"

This reverts commit 3525171621, reversing
changes made to b5daffca55.

* Remove change in startup visibility

Co-authored-by: Clint Rutkas <clint@rutkas.com>
2020-05-12 15:42:21 -07:00
Clint Rutkas
245b52d8e2 Update pipeline.user.windows.yml 2020-05-12 13:12:36 -07:00
Arjun Balgovind
1de93be0f0 Fix KBM compile time warnings (#2912) 2020-05-12 11:32:17 -07:00
PrzemyslawTusinski
e723e87c74 PowerLauncher can be snapped to zone - fix (#2896) 2020-05-12 19:33:42 +02:00
Michiel Vermeersch
c9535749f5 Fixed tables in MarkDown previews displaying incorrectly. (#2883) 2020-05-12 10:20:39 -07:00
Arjun Balgovind
497a66ea38 Fixed KBM default window size not being DPI Aware (#2873)
* Fixed KBM default window size not being DPI Aware

* Fixed missing lib file on Release

* Changed to be only DPI dependent
2020-05-12 10:17:27 -07:00
Alekhya
62d9735a7e [Settings] Add Image Resizer Settings hyperlink on feature detection of older OS Versions (#2868)
* Added the settings hyperlink code back

* Moved the os detection code to a different file so that it can be imported by image resizer

* Added code to the Image resizer project to react to import the dll

* Added an empty dll project

* Added a dll which can be imported by image resizer

* ImageResizer binding works

* Added the setDllDirectory to load the os-detection dll

* Removed the OS detection files that has been added to the common project

* Added reference to os-detect and removed reference to common/OS-Detection.h

* Modified project files

* Revert "Modified project files"

This reverts commit 75f9d73f30.

* Removed unnecessary showAdvanced bool variables

* Removed OS Detection code from common project

* Cleaned configuration properties of soln and projects

* runner is dependent on os-detection

* Added the os-detection.dll to wxs file

* nit space formatting

* Added reference to os-detection

* Added os-detection header file

* Add os-detection reference

* Added os-detection.dll

* removed the set dll directory and using relative paths instead

* Add relative path
2020-05-12 09:58:29 -07:00
Seraphima Zykova
0f8fbf6a1e removed .net core dlls (#2897) 2020-05-12 18:37:33 +02:00
Arjun Balgovind
66c2d1cba1 Revert buttons on KBM Landing page (#2870)
* Revert buttons

* Fixed button placement
2020-05-12 09:21:54 -07:00
Andrey Nekrasov
69cde6092b build: use x64 platform for *Telemetry projects (#2895) 2020-05-12 15:27:19 +03:00
Seraphima Zykova
3e9face818 removed dlls causing build error in installer (#2889) 2020-05-12 13:55:36 +03:00
Tomas Agustin Raies
4dfac02065 KeyboardManager icon (#2875) 2020-05-11 20:13:07 -07:00
Arjun Balgovind
7551509f41 Fix inconsistent landing page remap list (#2866)
* Added pre-processing code

* Refactored code on c++ side to match

* Fixed comment
2020-05-11 17:18:12 -07:00
Tomas Agustin Raies
5f42866cea Add VC142 CRT MergeModules to installer (#2862) 2020-05-11 15:05:10 -07:00
Lavius Motileng
50d91670ec updated file explorer icon (#2863) 2020-05-11 14:43:13 -07:00
Tomas Agustin Raies
8c04421387 [Keyboard Manager] Confirmation Dialog for orphaned keys and partial remappings. (#2811)
* WIP Confirmation dialog for orphaned keys

* Confirmation Dialog for orphaned keys

* White OK button, Anyways capitalizef

* Change Apply to Ok for shortcuts

* Validate that mappings can be made before changing keyboardManagerState

* Set fixed MinWidth for OK button

* Fix typo

* Partial remappings confirmation dialog

Both for Shortcuts and SingleKey

* Remove warning icon callback in OnClickAccept

* Add text wrapping for OrphanKeys dialog
2020-05-11 12:45:55 -07:00
Niels Laute
c39be3dbc9 [Settings] Various UX tweaks (#2822)
* Updated the add button styles to a standard used in W10 settings

* Updated the "About this feature" text to About [Module name]

* Set larger changes to the Shortcut Guide opacity numberbox

* Re-organised the General page

* Improved width of the add button so it's inline with the corresponding listview.

* Seperated warning label from header. Re-organised general settings

* Consistent formatting of the word 'administrator'

* Typo fix

* Warning text is collapsed when the user runs the app as admin

* Removed underline of version number

* XAML fix
2020-05-11 12:36:55 -07:00
Andrey Nekrasov
8aa8c296e1 FancyZones: FZ & FZE now live in a dedicated dir (#2837) 2020-05-11 21:22:23 +03:00
Arjun Balgovind
592c55c524 Change warnings from icon to flyouts but it no longer interrupts searching (#2816)
* Fixed foreground issue and added arrow

* Tweaked Remap Keyboard UI

* Fix errors in warning handling and update UI layout

* Tweaked sizes and centered to screen

* Fixed flyouts appearing on search for Single key remaps

* Fixed flyouts appearing on search for Shortcut remaps

* Remove warning exclamation icon and tooltip

* Fixed a bug where setting None on a drop down which would create a shortcut with a conflict would cause a crash

* Remove IsTypeKey logic

* Changed warning text

* Resolve comments
2020-05-11 10:10:36 -07:00
Ivan Stošić
eafaf35790 [Settings] Updated text shown on the settings page of Shortcut Guide (#2840) 2020-05-11 14:46:32 +02:00
PrzemyslawTusinski
585c66a4d0 PowerRename settings bugfix (#2796)
* PowerRename settings bugfix

* Changed visibility to enability of PowerRename_Toggle_MaxDispListNum

* Added unit tests and changed maximum value
2020-05-11 14:37:29 +02:00
Arjun Balgovind
1ecedd5566 Hide xaml island loading icon for Settings and Launcher (#2827)
* Hide xaml island window

* Remove using WUC statement
2020-05-09 14:10:57 -07:00
Arjun Balgovind
3a0a5a7754 KBM - UI Tweaks (#2798)
* Fixed foreground issue and added arrow

* Tweaked Remap Keyboard UI

* Fix errors in warning handling and update UI layout

* Tweaked sizes and centered to screen

* Changed size to scale based on resolution

* Fixed comments
2020-05-08 17:34:24 -07:00
ryanbodrug-microsoft
d329406eb8 Adding Telemetry Events for svg and markdown enable/disable (#2814)
* Raising Telemetry events when svg and markdown preview pane is turned off

* Properly serializing Bool property.  This allows us to be backwards compatible with .17 settings but interact with the properties as boolean elements, and fire events on property changed notification
2020-05-08 16:12:37 -07:00
Divyansh Srivastava
e654999fdf Add support for win32 packaged apps to run as admin (#2812)
* Updated UWP app to set entry point type for each app

* Working run as admin for packaged app with permission

* Updated UWP to allow apps with mediumIl trust level to be run as admin

* cleanup variables not required
2020-05-08 14:31:15 -07:00
Clint Rutkas
efe98f7fad Fixing ordering in settings and text tweaks (#2809)
* ordering alphabetically.

* test tweaks
2020-05-08 14:13:48 -07:00
Clint Rutkas
87bc957662 adding in ignore for alt-space (#2799) 2020-05-08 13:59:49 -07:00
Tomas Agustin Raies
15e93d6304 [Launcher] Replace default app icons with MDL2 EB3B (#2797) 2020-05-08 13:34:21 -07:00
Arjun Balgovind
5471735419 Fix double compile issue for Launcher and Settings (#2759)
* Fix double compile issue

* Removed debugging code

* added prebuild event

* Updated output folders
2020-05-08 09:07:18 -07:00
Lavius Motileng
6b2955f135 [settings] loading powerpreview module from subfolder (#2709)
* loading module in sub-folders

* reverted un-related change
2020-05-08 08:23:18 -07:00
Lavius Motileng
1ab0a5182f [Settings V2] Upated Fancy Zone and Shortcut Guid default values. (#2786)
* upated Fancy Zone and Shortcut Guid default values.

* upated fz tests
2020-05-08 08:22:57 -07:00
Ivan Stošić
dad65998cc Update ImageResizerPage.xaml (#2794) 2020-05-08 13:32:13 +02:00
Tomas Agustin Raies
abd30f3e41 Change build order in build.cmd (#2787)
This seems to fix the missing Generated Files\version_gen.h error
2020-05-07 16:37:00 -07:00
Seraphima Zykova
7f42d9784e updated FancyZones checkboxes corresponding to settings (#2785) 2020-05-07 23:29:02 +03:00
Tomas Agustin Raies
1056dac070 Add WIL to common-md-flag nuget packages (#2780) 2020-05-07 12:02:37 -07:00
Andrey Nekrasov
c05622484d chore: add common project as a dependency for some C++ projects, so we have version_gen.h (#2781) 2020-05-07 21:31:00 +03:00
PrzemyslawTusinski
59659a13f1 Fancy zones settings - Color pickers saved ARGB value fix (now saves RGB) (#2776) 2020-05-07 20:24:19 +02:00
Andrey Nekrasov
73c6cbb562 wix: install dotnet 3 after installation if needed (#2775) 2020-05-07 17:39:32 +03:00
Ivan Stošić
9f724221fa Removed unsupported platforms in Visual Studio (#2768) 2020-05-07 15:12:57 +02:00
Seraphima Zykova
dfcd86ea09 multi-line input for excluded apps (#2770) 2020-05-07 16:11:10 +03:00
Seraphima Zykova
555393d328 Close Shortcut Guide on right Win release (#2751) 2020-05-07 12:21:29 +03:00
Yevhenii Holovachov
febacfcb79 Added informaton to notifications dll (#2687)
Added informaton to notifications dll
2020-05-07 12:01:01 +03:00
ryanbodrug-microsoft
1891bd494c Merge pull request #2760 from ryanbodrug-microsoft/merge/build-features-to-master-05062020
Merge/build features to master 05062020
2020-05-06 20:02:09 -07:00
ryanbodrug-microsoft
ba5d53914e Merge branch 'dev/build-features' into merge/build-features-to-master-05062020 2020-05-06 19:32:10 -07:00
ryanbodrug-microsoft
2ae38e20ab Merge pull request #2711 from ryanbodrug-microsoft/merge/build-features-to-master
Mege build features to master
2020-05-06 19:25:15 -07:00
ryanbodrug-microsoft
5f14b2e738 Merge branch 'master' into merge/build-features-to-master 2020-05-06 18:39:25 -07:00
Yevhenii Holovachov
bc53951648 Option to disable zones activation by mouse (#2717)
* Added option to enable/disable mouse to activate zones, added telemetry and unit tests
2020-05-07 02:21:32 +03:00
Tomas Agustin Raies
9a323e3387 [Launcher] Remove ASP .NET dependencies (#2697)
* Remove ASP .NET dependencies

* Replaced NLog.Web.AspNetCore with NLog.Extensions.Logging

* Remove NLog.Web.AspNetCore.dll from installer

* Add missing dlls
2020-05-06 15:55:53 -07:00
ryanbodrug-microsoft
72fe972cc0 fixing nit: comments 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
88dfd90e3b Removing unecessary event name from SettingsEnabledModuleEvent 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
1f9c1ce8e4 Removing unecceary EventName requirement. EventSource<T>.Write will use the type name of T if null is passed in. This saves us passing an extra string uneccesarily as the public property would be serialized into the event data as well as being specified as the EventName 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
b4d75e3240 Adding telemetry events for Settings Enabled or Disabled Modules 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
def0d7a519 Small refactor to use common powertoys telemetry event source accross modules. 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
a9cc4dabb7 Adding launcher telemetry for context buttons clicked. 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
e29e8ca0a3 Add launcher telemetry for show / hide, and query (elapsed time, num chars, num results). 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
5cda4135b1 Add telemetry event for when the user presses delete within the first 2 seconds of showing the launcher. 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
221e153f4c Adding BootEvent for load time telemetry 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
3a24e4703d Adding PowerLauncherTelemetry events 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
2b158c2b4e Removing unused reader namespace from telemetrybase. 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
8b715ad9cd Link including telemetry base, to preview pane. 2020-05-06 15:10:22 -07:00
ryanbodrug-microsoft
07cf527ddf Moving TelemetryBase to common/Telemetry to be referenced for all Managed Telemtry hooks. 2020-05-06 15:10:22 -07:00
Alekhya
63f1429a69 Fix incorrect merge which had reverted some parts of the Microsoft.Launcher.rc file (#2728)
* Had reverted the changes made in the Microsoft.Launcher.rc file by mistake while resolving merge conflicts

* reverted company name to how it was before
2020-05-06 12:49:34 -07:00
Niels Laute
d881fc2fe0 Merge pull request #2700 from niels9001/users/niels9001/settingsV2UXtweaks
[Settings v2] UX tweaks
2020-05-06 21:12:39 +02:00
Arjun Balgovind
d5090ee24b KBM - Fix all descriptions and text and minor UI tweaks (#2705)
* Add new text for Remap Keyboard

* Added text in KBM windows

* Tweaked KBM landing page view

* Changed to transparent background

* Tweaked text

* Tweaked text
2020-05-06 08:34:26 -07:00
vldmr11080
56c0a78c64 [FancyZones] Only process windows located on currently active work area when moving them (#2691)
* Only process windows located on currently active work area when moving them.

* Move all editor exit handling into dedicated method.
2020-05-06 17:16:16 +02:00
ryanbodrug-microsoft
47037220e0 fix compile issues for missing <thread>. I'm not sure why this wasn't needed before or in master. 2020-05-06 00:54:06 -07:00
ryanbodrug-microsoft
640fade438 merge master 2020-05-06 00:49:46 -07:00
Clint Rutkas
98ede836d4 Merge branch 'dev/build-features' into users/niels9001/settingsV2UXtweaks 2020-05-05 21:28:44 -07:00
Arjun Balgovind
e75916fd92 Fixed SettingsV2 crash (#2704)
* Fixed crash

* Initialize theme string
2020-05-05 21:17:43 -07:00
Divyansh Srivastava
e01ed8ad3c Fix for indexer symbol error (#2702)
* Removed error sent as result in indexer plugin

* Added code to filter query based on reserved keyword regex
2020-05-05 16:07:32 -07:00
Tomas Agustin Raies
3beea79b38 Workaround for Settings ViewModel tests (#2693) 2020-05-05 16:01:55 -07:00
Alekhya
1a29870958 OS Detection and setting the old or new settings UI page accordingly (#2674)
* Added code to detect os build number

* To set the settings.exe according to the powerToys version that is running

* Modified the description of old UI for launcher and keyboard remapper

* Using API contracts instead of registry

* Removing file that was included by mistake
2020-05-05 15:53:30 -07:00
Niels Laute
7f3fae5a02 Re-order of the autocomplete setting (for Image resizer) under the right section 2020-05-05 23:43:56 +02:00
Lavius Motileng
c2adf56b2f updated header text and tests for PowerRename (#2607) 2020-05-05 14:28:44 -07:00
Niels Laute
7a8f5a606c Removed underline of the attribution links 2020-05-05 23:19:21 +02:00
Tomas Agustin Raies
462c17a0c3 Close Settings Window on runner exit (#2695) 2020-05-05 14:13:52 -07:00
Niels Laute
e59e3019e3 Typo fix 2020-05-05 23:03:34 +02:00
Lavius Motileng
d65e2ab2d4 FIX : [Settings] - Can start multiple settings dialogs (#2421)
* Launch new wpf process with same/old ipc names

* updated bring window to front

* reverted change

* removed unused string
2020-05-05 14:02:55 -07:00
Niels Laute
3f6120e122 Tweaked the vertical spacing of the module description so the module toggle switch stands out a bit more. 2020-05-05 22:58:48 +02:00
Niels Laute
e66e5e6f6e Fixed visual inconsistency for the image resizer sizes listview 2020-05-05 22:47:59 +02:00
Niels Laute
b0bc57466e Fixed inconsistency of the Image Resizer enable toggleswitch 2020-05-05 22:13:19 +02:00
Niels Laute
154dc555c5 Remove underline from sidepanel hyperlink buttons 2020-05-05 22:03:48 +02:00
Arjun Balgovind
36559d0264 Added telemetry to KBM (#2670)
* Added telemetry to KBM

* Reverted set_config change

* resolving comments
2020-05-05 12:30:50 -07:00
Lavius Motileng
a722ce460c [Settings UI] Updated General Settings (#2676)
* updated general settings view

* moved text to string resource

* Update App.xaml.cs

* set run-elevated as a start-up argument
2020-05-05 10:02:31 -07:00
Divyansh Srivastava
67b2f28064 Added code to sanitize folder path (#2673) 2020-05-05 09:41:11 -07:00
yuyoyuppe
8b988409e2 FancyZones: LowLevelKeyboardProc & other improvements 2020-05-05 15:16:37 +03:00
yuyoyuppe
57c4658021 FancyZones: prevent WinHookEventProc reentrancy bugs by serializing events to FancyZones::WndProc 2020-05-05 15:16:37 +03:00
Davide Giacometti
283bfde3d9 better layout alignment for image resizer (#2611)
Co-authored-by: Davide Giacometti <davide.giacometti@softwareuno.it>
2020-05-05 13:15:47 +02:00
vldmr11080
41935aa9aa Split general module settings and UI flags to separate files. (#2613) 2020-05-05 12:39:15 +02:00
stefansjfw
9206d1f5f1 Make transforming struct field names to dash case region invariant (#2679) 2020-05-05 11:39:18 +02:00
vldmr11080
f5381ae3e3 [FancyZones] Clean up resources taken by closed virtual desktops on module startup (#2616)
* Clean up resources taken by closed virtual desktops on FancyZones module startup.

* Overload GetVirtualDesktopIds to return wide string.

* Refactor OnDisplayChange method.
2020-05-05 10:13:50 +02:00
theaquamarine
95c4bf5854 Enable FancyZones to react to right Windows key (#2624)
Check the status of VK_RWIN as well as VK_LWIN

Fixes #436
2020-05-05 09:21:55 +02:00
vldmr11080
2b4b23f726 [ImageResizer] Migrate settings from registry to JSON. (#2604)
* Migrate ImageResizer settings from registry to JSON.

* Update last loaded time read/write IO operations.

* Rename registry helper functions.
2020-05-05 09:00:50 +02:00
ryanbodrug-microsoft
64c17767ed Reading correct json property for "Run" program. This prevents the Run (Previously PowerLauncher) from being opened when settings has it disabled. 2020-05-04 20:34:34 -07:00
ryanbodrug-microsoft
32d75749a0 Updating MSI installer to use Microsoft.Plugin.* directory paths. 2020-05-04 20:34:34 -07:00
ryanbodrug-microsoft
e776f9c7d8 Moving Plugins from Wox.Plugin.* to Microsoft.Plugin.*. This is to rename the assemblies that get saved to the settings directory. External plugins will get saved to their on assembly folder in the future. 2020-05-04 20:34:34 -07:00
ryanbodrug-microsoft
3bdcf1077b Updating wox infrastructure to save to "AppData\\Local\\Microsoft\\PowerToys\\Run" directory. 2020-05-04 20:34:34 -07:00
ryanbodrug-microsoft
da550a4a67 Moving launcher save settings under AppData/Local/Microsoft/PowerToys/Run 2020-05-04 20:34:34 -07:00
ryanbodrug-microsoft
1655594514 fix for crash when tabbing with no selected item 2020-05-04 20:33:52 -07:00
Arjun Balgovind
c4f884f104 Change behavior on Edit Keyboard screen to be physical keys (#2666)
* Commented out ToggleToMod and AppSpecific function calls

* Added logic to make sure key remaps don't occur on Edit Keyboard Window

* Changed behavior such that remappings only apply after window is closed
2020-05-04 15:49:37 -07:00
Divyansh Srivastava
855f3d74fe Remove WW module (#2664)
* Removed WW module from sln file

* Remove WW from product.wxs

* Removed WW from runner
2020-05-04 15:40:15 -07:00
Tomas Agustin Raies
7fc140af01 [Settings] Update version in General Settings (#2601)
* Update version in General Settings

* Set version in settings.json file

* Only overwrite the settings.json file if it is newer than the old version.

* Fix tests

* Fix test names and added comment
2020-05-04 14:40:32 -07:00
Arjun Balgovind
d401474981 Add post-build event for publishing Launcher (#2561)
* Added post build script

* Added comments

* Added unset statement

* Added debug checks

* added more debug statements

* Added dir and cat statements to check pipeline output

* revert installer change

* Moved nuget package reference from update to include

* Removed debug cat command

* Removed debugging statements

* Added build script for launcher

* Added launcher scripts

* Removed launcher scripts

* Fixed interop folder and added hacked powerlauncher script

* Added publish only for Release
2020-05-04 13:30:38 -07:00
Tomas Agustin Raies
0f6563e8e0 Fix crashing in Windows Insiders builds (#2562)
Added missing initialization of winrt apartment
2020-05-04 11:36:57 -07:00
Alekhya
6cd0f83496 Fix FancyZones issue of dlls being overwritten by PreviewPane's MarkDig (#2589)
* Added output folder

* Added FileExplorerPreview output folder for all projects

* Added extra dlls and FileExplorerPreview to path

* Added folder and modified path for registry setup of preview handlers
2020-05-04 07:42:05 -07:00
Lavius Motileng
b428fc97e9 fix: Start as Admin Error: Unable to open app when running elevated (#2411)
* fixed run-elevated error and powerpreview settings not working

* removed EXTENDED_STARTUPINFO_PRESENT flag

* removed test string

* Update Microsoft.PowerToys.Settings.UnitTest.csproj

* Rename PowerLauncher.cs to PowerLauncherViewModelTest.cs
2020-05-03 03:17:06 -07:00
Tom Dörr
c14c51f551 Fix license file (#2626)
By removing `(MIT)` from the `LICENSE` file, the license type is displayed on the PowerToys start page.
2020-05-02 15:59:18 -07:00
Arjun Balgovind
8e18104f38 [KBM] Constrain the buttons such that only one of the windows can be opened (#2566)
* Bypass XamlBridge Window focus handling

* Constrain only one window can be opened at a time

* Revert changes on files changed in another PR

* Changed WM_DESTROY to WM_NCDESTROY

Co-authored-by: Tomas Raies <tomas.raies@gmail.com>
2020-05-01 17:34:42 -07:00
Divyansh Srivastava
06fcc2bf46 Updated file path/description of plugins (#2593)
* Updated file path/description of plugins

* Updated file paths to include plugin tag

* Code cleanup
2020-05-01 17:26:02 -07:00
Tomas Agustin Raies
1656b4c5b9 [Launcher] Remove Win+R checkbox (#2513)
* Remove Win+R

* Comment out all unused options

* Fix PowerLauncherViewModel tests
2020-05-01 15:58:55 -07:00
Clint Rutkas
431f7ab37c Adjusting text for 2564 (#2606) 2020-05-01 15:25:56 -07:00
Divyansh Srivastava
f44109abae [launcher] Location and multi monitor support (#2446)
* Fixed left and top window

* Added dpi Aware launcher positioning code

* Code cleanup

* Added support to drag window

* Multi monitor support added

Remaining fix : Launcher doesn't open first time on changing monitor

* removed code handling change in DPI manually

* Code cleanup

* Fix to support multimonitor display

* Code cleanup

* Revert "Code cleanup"

This reverts commit 38f39924f0.

* Revert back to WOX helper for calculating normalized DPI
2020-05-01 14:25:06 -07:00
Arjun Balgovind
8cb134f56b Add post-build event for publishing SettingsV2 (#2473)
* Added post build script

* Added comments

* Added unset statement

* Added debug checks

* added more debug statements

* Added dir and cat statements to check pipeline output

* revert installer change

* Moved nuget package reference from update to include

* Removed debug cat command

* Removed debugging statements

* Added build script for launcher

* Added launcher scripts

* Removed launcher scripts

* Changed taskkill to throw error

* Added back old config properties
2020-05-01 13:17:30 -07:00
Clint Rutkas
032aa2d1d6 making teams launch, not updater. this will also fix a lot of cmd style lnks too. Made null ref on boot fix too. (#2598) 2020-05-01 10:55:01 -07:00
grahamaj
cbe20d9c96 Grammar update for the FZ README (#2592) 2020-05-01 18:21:52 +02:00
stefansjfw
e6b74b10eb [FancyZones] Make snapping windows using Windows Snap Hotkeys across monitors optional (#2583)
* Make moving window across monitors optional

* Update tests

* Address PR comment: Update description of the toggle
2020-05-01 16:17:16 +02:00
Andrey Nekrasov
8c4dbbfbec FZ: run AnimateWindow and InvalidateRect in a dedicated thread (#2582) 2020-05-01 17:14:35 +03:00
Andrey Nekrasov
9bde15d4ac FancyZones: subscribe only to handled WinHook events (#2584)
* FancyZones: subscribe only to handled WinHook events

* formatting fix
2020-05-01 17:13:52 +03:00
vldmr11080
fd32dad7eb [FancyZones] Send message from VirtualDesktopUpdates thread to FZ thread when update happens (#2568)
* Move part of the virtual desktops related logic from FancyZones to VirtualDesktopUtils.

* Post WM message from vritual desktop tracker thread to FZ thread.

* Minor improvements in RegisterVirtualDesktopUpdates method.

* Close registry key after HandleVirtualDesktopUpdates thread finishes execution.

* Remove comment explaining workaround to VirtualDesktopUtils namespace.

* Move HandleVirtualDesktopUpdates to VirtualDesktopUtils namespace. Resolve PR comments.

* Fix typos in window messages description.

* Remove lock from OnKeyDown method to avoid deadlock.
2020-05-01 16:13:16 +02:00
vldmr11080
64df515c63 [PowerRename] Use int type instead of long in PowerRename Settings (#2502)
* Fix signed/unsigned comparison in power rename Settings.

* Use int instead of long (same on 64-bit windows).
2020-05-01 13:26:38 +02:00
stefansjfw
8908bd9889 Remove unused ZoneSetPersistedDataOLD struct (#2581) 2020-05-01 12:35:37 +02:00
Divyansh Srivastava
5c3159cbca Update plugin ID for WW (#2512) 2020-04-30 18:47:03 -07:00
Clint Rutkas
9afe72d508 Update README.md 2020-04-30 11:53:52 -07:00
Tomas Agustin Raies
c002d2c99f Merge pull request #2510 from microsoft/dev/traies/merge-powerlauncher
Merge missing commits from power launcher
2020-04-30 10:19:45 -07:00
Nghia M. Luong
c768b6bd0c Remove unused headers (#2471) 2020-04-30 20:14:33 +03:00
Seraphima Zykova
7903fe52b4 FancyZones decomposition (#2485)
* FancyZones refactoring
Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
2020-04-30 13:16:08 +03:00
Ivan Stošić
313b1b39a7 FancyZones now does its own event processing (#2347)
* FancyZones now does its own event processing

* Removed temporary variable
2020-04-30 11:40:13 +02:00
vldmr11080
648f3abcbd Handle scenario with only primary desktop and no desktop switch in current session. (#2339)
* Handle scenario with only primary desktop and no desktop swithc in current session.

* Add scoped lock when changing current desktop id. Address PR comments.

* Explain purpose of UpdatePrimaryDesktopData method.

* Fix typo in documentation.
2020-04-30 11:16:25 +02:00
Ivan Stošić
2db98715cc "Unhooked" the Shortcut guide module from the PT event dispatcher (#2318)
* "Unhooked" the Shortcut guide module from the PT event dispatcher

* Fixup: warning/undefined behavior/terrible bug

* SetWindowsHookEx and UnhookWindowsHookEx now fail silently

* Updated a comment in shortcut_guide.h

* Renamed a method, added an error message
2020-04-30 11:05:18 +02:00
Arjun Balgovind
5e3da57e21 Fix Keyboard Navigation and Xaml Island focus issues for KBM (dev/build-features) (#2429)
* Added XamlBridge code and implemented keyboard focus navigation for xaml islands

* Change global pointer to static
2020-04-29 17:58:31 -07:00
Tomas Raies
dceef35aac Merge branch 'dev/PowerLauncher' into dev/traies/merge-powerlauncher 2020-04-29 15:28:54 -07:00
vldmr11080
2d23952181 Don't poll for changes in HKEY_CURRENT_USER, but only for VirtualDesktops reg key. (#2496) 2020-04-30 00:10:53 +02:00
Tomas Agustin Raies
518da7e81d Merge pull request #2489 from microsoft/dev/traies/fix-bad-build-features-launcher-merge
Fix bad build-features/PowerLauncher merge
2020-04-29 14:45:34 -07:00
Clint Rutkas
8db1eb69dc Update README.md 2020-04-29 13:56:45 -07:00
Rafael Rivera
d16ebba9e0 Move from sdk-provided cppwinrt-1.x to cppwinrt-2.x nuget package (#2246) 2020-04-29 22:02:18 +02:00
Enrico Giordani
ee0420188c Now working on 0.17.1 (#2493) 2020-04-29 22:01:16 +02:00
Tomas Raies
b9d14d31ae Merge branch 'dev/traies/build_features_launcher_integration' into dev/traies/fix-bad-build-features-launcher-merge 2020-04-29 12:00:36 -07:00
Tomas Raies
c505875fef Settings + PowerLauncher integration
* Fix project references

* Fix MaxResultsToShow

* Fix Alt + Space display

* Fix settings defaults
2020-04-29 11:36:43 -07:00
Tomas Raies
6029f0ed36 Revert "Merge PowerLauncher branch (#2345)"
This reverts commit d9c4abe0df.
2020-04-29 11:32:00 -07:00
Clint Rutkas
734bed4821 Update README.md 2020-04-29 11:25:21 -07:00
Niels Laute
26b3185933 [Launcher] Fluent UX enhancements (#2477)
* Removed unnecessary styling resources.
Fixed searchbox overlay.
Fixed a bug where the command buttons would fall of the list

* Fixed a bug where the app icon could overlap the title/path textblocks

* Consistent background / border color

* Tweaked shadow, background color now theme depended
2020-04-29 10:33:58 -07:00
Clint Rutkas
5efa9ff0b2 correct spelling mistakes for en-us :) (#2475) 2020-04-29 10:29:31 -07:00
Enrico Giordani
ac6a013bf5 FZ Readme and backlog update (#2418) 2020-04-29 10:14:35 -07:00
Tomas Agustin Raies
d9c4abe0df Merge PowerLauncher branch (#2345)
* minor modifications in README

* Added launcher project and changed references to common

* Added the code to launch another process

* added shellapi header

* Added launcher to runner

* added functions to remove the abstract class error

* added the wox launcher dll

* Readded the reference to common

* modified the additional include directories for the release version

* changed the name to be displayed from Wox.Launcher to Launcher

* Localized the strings of Launcher

* Added a SearchResult Helper class

* Created a helper class to use indexer and return search results

* Added the main and settings file which declare most of the plugin interfaces

* Added references and renamed a class

* Added the images folder which contains the windows indexer icon

* Added the image

* Added the plugin.json file

* Minor changes in project files

* Added plugin.json to the project

* Modified the output paths to create the dll for the plugin in the correct location

* Refactored the code to make it unit testable

* Made the code unit testable and added unit tests for the indexer plugin

* Removed commented out code

* Code to terminate wox when we exit PowerToys

* Copy from Jeremy's fork PR

* Removed unnecessary plugins from source tree

* add missing files

* Fix postbuild event

* Added x64 for all Wox project - Debug mode

* Removed the AnyCPU config - Debug

* Added the build paths for release x64 (removed AnyCPU)

* Set warning level to 4 : Release

* Set warning level 4 : Debug

* set optimize code to false

* Removed notify icon component

* Removed setting UI XAML file and references

* Readded necessary callback functions

* Removed python path and python plugin functions

* Removed UI related to python path and the bindings related to that

* Remove python bindings

* Removed the localized string translations from pythonDirectory and SelectPythonDirectory

* Manually resolving conflicts

* Fix Wox build in project settings

* deleting unused project files

* Undo change internal

* Fix internal variable

* All wox exceptions in debug are getting rethrown, and thus causing the app to crash.  This change removes the debug specific code and allows exceptions to be handled the same was as release.

* Ported Indexer plugin to .net core 3

* Added the test project back

* Removed the .net framework indexer folder

* readding the plugin.json file

* Changed the anyCPU config to x64 for windows indexer plugin

* Adding dependency to wox project on the runner.  This should make sure the wox.exe can be build and launched by the runner so wox can run as a background process.

* Updating build dependencies.  Wox.Launcher wasn't built as part of the F5 Experience, and nor were the plugins

* removing locks from the ResultListBox code behind file.  All callbacks are accessed from the Main/UI thread.

* Remove anyCPU config and changed it to x64

* Removed anycpu of test proj

* Adding dependency

* Renaming executable to PowerLauncher.  Replaceing icons with placeholder. Deleting Docs folder

* Renaming AppData directory from 'Wox' to 'PowerLauncher'.  Also replacing issue link with powertoys github.

* adding support for xaml islands

* Added Neils UI code

* Replace Niels Code references

* Added assets and behaviours

* Add missing reference

* Add main view model binding

* Using proper executable name when closing 'PowerLauncher' process

* changed x:bind to Binding to avoid reference

* Updated bindings for launcher

* Added binding on searchBox

* Adding Directory.Build.targets file to kill the PowerLauncher pprocess on Build or Clean operations of all 'Launcher' projects.

* Fixed exception preventing result display

* Fixed issue with wpf marshalling events to a non UI thread

* Optimised result binding by inserting search result from multiple plugin in parallel

* copy resource files to output folder

* Corrected the output path for the indexer plugin

* windows indexer plugin is working

* Remove console print statement

* Added callback function for mouse click on search result

* Working App execution

* Cherry picked pinyin performance changes from jjw24's master branch

* change nuget package to msft for winrt compat

* Working up/down arrow key

* updating references and removing a few that seem uneeded for how stuff is referenced

* adding two back in

* Removing Squirrel dll.  unsure on updating so i kept that logic in

* Updated functionality on suggestion chosen in autosuggestbox

* Added the <useWPF> tag to remove the warning

* Removed an unnecessary <useWindowsForms> tag

* Removed the item group for properties from calculator plugin

* Removed the item group for properties from folder plugin

* Removed the item group for properties from indexer, program and shell plugin

* Removed itemgrp from wox.core and wox.test csprojs

* Removed the unnecessary wox files to clean up codebase

* Renamed Wox.Plugin.Indexer to Microsoft.Plugin.Indexer

* Renamed Wox.Launcher to Microsoft.Launcher

* To avoid DBNull to String typecast exception

* Added query submitted event to handle default action on clicking a list view item

* Merge pull request #42 from microsoft/AddPinyinPerformance

Cherry picked pinyin performance changes from jjw24's master branch

(cherry picked from commit b9e437c6cd)

* Rectyfying title display

* Title display working correctly

* Removed .yml files

* adding checks

* Making wox.csproj build wox assembly instead of powerlauncher

* Removing update logic from PowerLuanch App.xaml.cs as was done in Wox project.

* Making Query internals visible to wox.

* Update Powerlauncher nuget packages to be same version as wox.csproj.   Note:  FoxyWeavers.xsd change is automatically done as part of nuget package update.

* Updating build dependencies to so that wox.launcher depends on powerlauncher.csproj not wox.csproj

* Removing 'Wox' branded logos from powerlauncher.csproj as was done previously or wox.csproj

* Downgraded the library to the latest stable version

* single thread execution of the indexer plugin and InvalidOperationException due to connection being closed on ExecuteReader, handled separately

* Modified the test, the connection need not be null after being disposed. There is no direct way of checking if an object has been disposed other than to throw the InvalidOperationException

* Removing x86,ARM,ARM64, build configurations, as these were added accidentally when adding xaml island support.

* Removed STAThread

* Modified the output folder produced

* Renamed the dll produced

* Added dependency on PowerLauncher to the Microsoft.Launcher project

* modified the name of the dll in the indexer plugin

* Ignoring 128 errors from taskkill, as this means the process isn't running. We don't want htis to show up in the warnings list on build

* Added fix for closing wox on pressing escape and app execution (#75)

* adding useWPF to get rid of warning

* Launcher resize issue on selecting search result (#77)

* Added fix for closing wox on pressing escape and app execution

* Added fix to prevent autosuggestbox resize

* Fixing xaml catastrophic failure, based on Miguels suggestion here: https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues/210

* suggested fix

* removing unused mutex string

* Searches for keyword only in title and not content to improve the quality of results

* Display the title from System.Title directly instead of extracting it from the path

* Removed additional README instructions before moving to the powerToys repo

* Fix Query builder test (#86)

* Revert base viewModel class to fix tests.

* Removing unused post build and deploy scripts.

* tweaked url

* Update plugin.json

* Update README.md

* removed unused dep (#2080)

* removed reference to everything (#2133)

* SearchIndexer - Modifying QueryContentProperties and QuerySelectColumns to use System.FileName

* Search result thumbnail for PowerLauncher (#2124)

* Replace WPF Imaging library with UWP

* Removed UWP and WPF namespace conflicting files from Wox

* Removed Image hashing as it wasn't used anywhere

* Updated formatting

* Set MainViewModel visibility to hidden on startup

* Enable CI build on PowerLauncher Branch (#2181)

* Enable CI build on PowerLauncher Branch

* Updated Nuget restore to latest and added AssetTargetFallback property

* tweak text (#2177)

* [Window Walker] Migrate to Launcher (#2093)

* Copy the existing calc. plugin foldeR

* Blindly rename a bunch of things to Window Walker

* Update the solution to reference the new plugin

* Get basic Yo returned

* Remove all the languages except english

* Lower quality of icon as well as test showing it

* Add the core non-ui parts to the plugin

* Delete calculator png

* Get it to compile

* Added the actual code which apparently doesn't work

* Finally start showing results

* Fix up strings

* Switch working

* Remove unused classes

* Remove unneeded async

* Added MSI support for Launcher (#2242)

* Fixed typo in output folder of calculator plugin

* Calculator plugin works

* Modified the name of the image to remove space as space is assumed to be a separator in wcx file

* Fixed typo in calculator dll

* Fixed typo in calculator plugin

* Shell, Program, Folde and indexer plugin working

* Added the ww plugin

* Fixed typos in the calculator plugin

* Delete file that was added unintentionally

* revert calculator rename changes

* Reverted other files changed

* Reverted renaming of file with space

* Pull changes from master to dev/powerLauncher (#2255)

* Dpi unaware placement bug (#2121)

Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap

* Move markdown parsing logic outside control thread (#2099)

* Move markdown parsing logic outside control thread

* Update MarkdownPreviewHandlerControl.cs

* Remove trailing whitespace.

That'll teach me for trying to make an edit from the GitHub page.

* Migrate power rename MRU lists from registry to JSON (#2090)

* Handle most recently used search/replace strings within settings.

* Check for last modified time of json file and reload it if needed.

* Handle changes in MRU search / replace lists size.

* Improve handling of changes in MRU list size.

* Don't check for last modified time in every getter method. Load only when starting application.

* Add const identifier to getter methods.

* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.

* Add error checking when getting values from registry.

* Implementing changes suggested in #1992 (#2116)

* Implementing changes suggested in #1992

* Update Product.wxs

Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>

* Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)

* Fix for issue #1532

[PowerToys] Show version on tooltip

* Update src/runner/tray_icon.cpp

Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* FZ editor: Splitted zones positioning (#2158)

* Added a mutex to ZoneWindow, ensured no data races occur (#2154)

* Added a mutex to ZoneWindow, ensured no data races occur

* Protected draggedWindow* members with a mutex

* Ensured that critical reads happen in a single transaction

* Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)

* Dpi unaware placement bug - multimontior with same DPI settings fix

* Using different enumerating method

* Changed AllMonitorHaveSameDpiScaling method

* Removed accidental file

* small rename

* Changed some methods to CamelCase

* Review comments fixes

Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>

* Somil55/merge custom ui into launcher (#2271)

* Remove Autosuggest box (#2192)

* Update Settings.Designer.cs

* Revert "Update Settings.Designer.cs"

This reverts commit a1bc0dda56.

* Updated LauncherControl XAML to add textbox and listview

* List View displayed

* Hooking up execution on the selected index, removing two way binding on selection, and experimenting with popup that doesn't work

* Updated MainViewModel to Remove context menu and history

* Added Resultist XAML Island project

* Updated SelectedItem and SelectedList Binding.
Issues :  List box doesn't open when query is written for first time but opens in subsequent queries.

* 1. Mouse Click working
2. List View is can't be focused
3. Fixed width of Launcher

* Removed two way QueryText box binding

* Removed SelectedItem two way binding and replaced with a callback

* [Cleaning] Remove redundant UWP project

* [Cleaning] Updated files to keep only atomic changes against dev/powerLauncher

* Thmbnail fixed for NEW UI

* Removed PreviewMouseDown function required by older WOX code

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>

* Added the auto-complete feature

* Removing ContextMenuPluginInfo, and ContextMenuTopMost as these commands are not used int the new design.

* Fixed merge conflicts

* Set only when index is 0

* One way binding

* Removed unnecessary binding

* Deleting unused (commented out code) that was legacy from wox project.

* Binding Buttons to appropriate context menu commands.
1. Buttons are dynamically loaded in a listview based on the actions supported be each plugin.

This change also deletes unused commands.

Note:  Most button events don't seem to be getting routed to the Selected Item.  Currently using 'PointerEntered' to validate the behavior.  The actions should be trigged by the button command property in the future.

* manually handling tab in mainwindow

* Loading context buttons on Selecting a suggestion list item

* Allowing hover event to load content menu items and display them as well.

* Adding context buttons to Indexer plugin.  This allows for the following:
1. [Files] Open Containing folder
2. [Folders/Files] Copy Path

* Remove White background of list (#2218)

* Remove white background of list

* Removed comments

* Changed to ContainerContentChanging event

* add const variables instead of numbers

* Added comment before the updatelistSize function

* Search box UI (#2224)

* Added backdrop and rounded corner

* Fix for two alt+space press to bring searchbox issue

* Fixed merge conflict

* Clean Mainwindow.xaml code

* Fix for textbox focus on first visible

* Allowing users to tab between the context buttons for the selected resut.  Also allowing users to press 'enter' to action on the selected items.

* Renaming SelectedIndex to ContextMenuSelectedIndex

* Enabling key accelerators on context buttons.
1. Add new object ContextMenuResult instead instead of reusing Result for both query results and context menu results.
2. Binding KeyboardAccelerator keys to contextmenuitemviewmodel
3. Enabling and disabling contextmenu items when selecting or deselecting each row.  Because we are manually maintaining selectionwe can't use ScopeOwners as the textbox is really the only item ever in focus.

* Launching explorer instead of the UWP application when selecting 'open file location'.

* Added fix for border showing up when result count is zero

* Updated fix for border on no result

* Adding visibility  after clearing result in MainViewmodel

* Launcher Light/Dark mode (#2235)

* Fixed issue with list view background not updating with Windows theme change

* Added theme change for WPF

* updated ShadowDepth for dropshadow

* Updated border thicknes of searchbox and listview

* Diff issue with ResultList.xaml

* Removed change in result delay

* Added code to pull colors from UWP

* Updated border resource to use system based SystemControlHighlightAccentBrush

* Updated corner radius in dark mode

* Updated Launcher description text

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Alekhya Reddy <reddykalekhya@gmail.com>

* Changed to SystemChromeLow from Accent brush (#2272)

* Removed ListView animations

* Positioning ContextButtons and adding background.

* Disabling scrollbars for gridview items.

* Removed folder plugin

* removed deployment for uwp apps (#2298)

* Simulating Win+backspace key press, instead of Win+Control as it was launching WW (#2250)

* text is selected whenever launcher gets hidden and is then set to visible (#2315)

* Update nuget packages across solution to latest (#2334)

* simplifying the xaml and making things tighter (#2327)

* Setting runcommand as the default execution method, and turning off run as admin by default.

* Opening explorer if the user has types a file path.

* Enable PowerLauncher toggle

* Launcher MSI - Added a required dll and removed folder plugin (#2355)

* Modified the product.wxs file

* Added the x64 config

* Modify scoring algorithm for fuzzy search (#2361)

* Modify scoring

* modified to if else

* Fixes race conditions with PointerEnter/Exit events conflicting with Selection and unselection.   This change provides better encapsulation of the logic to enable a selected item for accelerator (hotkey) events, and allow mouse input on results where the pointer is over.

* Fixes an issue where PointerExit would hide the selected context buttons.

* Result List - Bad rebase overwrote margin and translation fields.

* Fixed process executing on clicking enter if no text in search box

* Codeflow cleanup when selectedItem is not null

* adjusting how programs are displayed. (#2369)

* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps

* Revert "Removed folder plugin"

This reverts commit 064d638588.

We will use the folder plugin to better mimic the way the start menu and run prompt deal with directories

* Updating JetBrains.Annotations to 2020.1.0 to be consistent with other projects.

* Replacing submenu text with full path as 'Ctrl-Enter' doesn't do anything.  Also reducing the String of CreateOpenCurrentResult to fit in one line.

* - Making Open Directory subtitle fixed, and the title as the current directory.

* Adding back binding to QueryText and updating the cursor position similar to how wox originally did it.

* Add the folder plugin wxs back in (#2374)

* Deduping results for program plugin (#2375)

* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps

* Getting dups removed from list if LNK exists

* adjusting subtitle

* removing accidently paste

* Getting dups removed from list if LNK exists

* changed to normal forloop

* Removing WinR (#2381)

* Updated program execution to call action on background thread. (#2370)

* PowerLauncher Settings integration

* Added cold start fix (#2385)

* - Fixes cursor jumping around issue.
- Seperating the ability to set the text from initiating a query.
- Plugins have to explicitly request the query be updated.
- Updating Folder plugin to explicty update the query on folder selection.
- Removing unused changes from 'Wox' that don't compile.

* Fixing gap in logic where query was triggering when programatically setting text.

Updating the binding and settext both will trigger the TextChanged event on a seperate event dispatcher.  For this reason we dynamically detect which eventhandler is most approapriate on the textchanging event.

* Updating the QueryText to the selected item when navigating up/down with the  arrow keys.

* Removing action on folder result, and displaying folder path on selecting a folder result from the folder plugin.

* Making folder results from the search indexer plugin behave like folder results from folder plugin.

* Folder Results open the explorer window when selected.

* The Open Current Folder result shouldn't change the query text to 'Open {folder path}' when selecting the results.

* Initializing query text strings.

* Defensive check for QueryText being empty

* Adding file watchers for UWP detecting when apps are installed or deleted and reindexing the uwp apps

* Removing unused namespace.

* Looking at files and not filtering is better because the timer is more likely to reset while an install is happening, preventing uneeded indexing

* Fix project references

* Fix MaxResultsToShow

* Fix Alt + Space display

* Fix settings defaults

Co-authored-by: Alekhya Reddy Kommuru <reddykalekhya@gmail.com>
Co-authored-by: bkudiess <bakudies@microsoft.com>
Co-authored-by: Divyansh <somm14divi@gmail.com>
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Barbara Kudiess <bkudiess@me.com>
Co-authored-by: Jeremy Wu <jeremy24wu@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: udit3333 <udit3333@gmail.com>
Co-authored-by: Betsegaw (Beta) Tadele <betsegaw.ta@gmail.com>
Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
2020-04-28 15:06:01 -07:00
Clint Rutkas
ae9e257e56 Update NOTICE.md 2020-04-28 10:42:16 -07:00
yuyoyuppe
bb82a9bcf4 FZ: remove RestoreOrginalTransparency() from ZoneWindow::~ZoneWindow() and from ZoneWindow::MoveSizeEnter() 2020-04-28 15:17:20 +03:00
yuyoyuppe
df61ea0a62 Revert "Added a mutex to ZoneWindow, ensured no data races occur (#2154)"
This reverts commit af4678ff18.
2020-04-28 15:17:20 +03:00
Niels Laute
371926b202 [Launcher] Fluent UX fixes for the results list (#2427)
* Fixed right margin

* Fixed issue where the background of the gridview would light up on pointerover.

* Fixed issue where application title/path run through command buttons. Centrally aligned image/icon.

* Updated the shadow so it looks more like a UWP ThemeShadow.
2020-04-27 17:35:33 -07:00
Tomas Raies
fe77a7e01a Merge branch 'dev/PowerLauncher' into dev/traies/build_features_launcher_integration 2020-04-27 11:52:20 -07:00
Tomas Raies
e6b43e19c2 Merge branch 'dev/build-features' into dev/traies/build_features_launcher_integration 2020-04-27 10:48:32 -07:00
Arjun
96b2145ba1 Merge branch 'master' into dev/build-features 2020-04-27 08:42:42 -07:00
Enrico Giordani
feb950be3c Increment version to 0.17.0 (#2415) 2020-04-27 16:25:25 +02:00
Andrey Nekrasov
5b02bda277 runner: download_updates_automatically option is disabled by default for non-admin users (#2412) 2020-04-27 16:02:28 +03:00
Andrey Nekrasov
ce4643d650 runner: autoupdate improvements (#2346) 2020-04-27 13:39:47 +03:00
Yevhenii Holovachov
55c311cd39 "Download updates automatically" toggle enabled only for administrator account (#2357)
* Added condition to disable auto updates toggle in settings for non-administrator accounts
2020-04-27 11:04:20 +03:00
Tomas Agustin Raies
8f8bfb9446 Make Edit Shortcut/Single Key window scrollable (#2409)
* Make Edit Shortcut/Single Key window scrollable

* Don't scroll header and buttons

* added margin beneath the add button
2020-04-26 21:57:51 -07:00
Lavius Motileng
8f2a33dcaa Added Image Resizer Settings (#2324)
* added image resizer settings

* updated string resource and binding

* added tests and removed sett advanced settings from image resizer

* fixed string resource spacing

* moved conbo box strings to string resource

* updated name of contributor

* Capitalized size names

* updated fallback encoder and sizers configs

* removed interence between settings | used static resource binding

* fixed build error
2020-04-26 17:34:03 -07:00
Tomas Agustin Raies
4946daeea4 Fix incompatible assemblies building issues (#2394)
* Remove reference to TwoWayIPCLib
* Downgraded System.Text.Json package in Settings.Lib
2020-04-26 16:44:14 -07:00
Arjun Balgovind
38ecc82e97 Improve warnings for KBM (dev/build-features) (#2386)
* Handled invalid input for single key remaps

* Added some functions

* Added better error message functions and finished warnings for edit keyboard

* Updated dropdown order of keys

* Added new warning template for shortcuts

* Added show warning on Apply code

* Removed old flyout code

* Fixed issue where tooltips were replaced on Apply

* Simplified == operator
2020-04-26 15:09:40 -07:00
Tomas Agustin Raies
7ec8d02c1f PowerLauncherSettings unit tests (#2276) 2020-04-26 13:15:40 -07:00
ryanbodrug-microsoft
a047ff2228 Looking at files and not filtering is better because the timer is more likely to reset while an install is happening, preventing uneeded indexing 2020-04-26 09:57:27 -07:00
ryanbodrug-microsoft
3dd181c912 Removing unused namespace. 2020-04-26 09:57:27 -07:00
ryanbodrug-microsoft
3753ecd8e5 Adding file watchers for UWP detecting when apps are installed or deleted and reindexing the uwp apps 2020-04-26 09:57:27 -07:00
ryanbodrug-microsoft
eaf05aa31a Defensive check for QueryText being empty 2020-04-25 12:24:57 -07:00
ryanbodrug-microsoft
ad0f965f3a Initializing query text strings. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
53e68c0567 The Open Current Folder result shouldn't change the query text to 'Open {folder path}' when selecting the results. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
9f609ac80f Folder Results open the explorer window when selected. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
2b04d7a92d Making folder results from the search indexer plugin behave like folder results from folder plugin. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
8f7305e347 Removing action on folder result, and displaying folder path on selecting a folder result from the folder plugin. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
9d3720557e Updating the QueryText to the selected item when navigating up/down with the arrow keys. 2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
aa79325d76 Fixing gap in logic where query was triggering when programatically setting text.
Updating the binding and settext both will trigger the TextChanged event on a seperate event dispatcher.  For this reason we dynamically detect which eventhandler is most approapriate on the textchanging event.
2020-04-25 12:14:03 -07:00
ryanbodrug-microsoft
15b7b20500 - Fixes cursor jumping around issue.
- Seperating the ability to set the text from initiating a query.
- Plugins have to explicitly request the query be updated.
- Updating Folder plugin to explicty update the query on folder selection.
- Removing unused changes from 'Wox' that don't compile.
2020-04-25 10:54:54 -07:00
Divyansh Srivastava
6290630787 Added cold start fix (#2385) 2020-04-25 10:27:36 -07:00
Tomas Raies
ad9e7b5eae Merge branch 'dev/PowerLauncher' into dev/traies/build_features_launcher_integration 2020-04-24 22:45:51 -07:00
Tomas Raies
fa31fbb343 PowerLauncher Settings integration 2020-04-24 22:29:42 -07:00
Arjun Balgovind
ca7b6f139f MSI update for SettingsV2 and KBM (#2351)
* Removed SettingsV2 deployment

* Adjusted project output directory

* Added all Settingsv2 and KBM files

* Added all Settingsv2 and KBM files

* Updated configuration and nuget packages

* Removed Interop.TwoWayIPCLib from MSI
2020-04-24 18:03:29 -07:00
Divyansh Srivastava
a6e8cbc50d Updated program execution to call action on background thread. (#2370) 2020-04-24 13:31:36 -07:00
Clint Rutkas
368640b59b Removing WinR (#2381) 2020-04-24 11:10:40 -07:00
Tomas Raies
22cb0b6afb Merge branch 'dev/build-features' into dev/traies/buld-features-integration 2020-04-24 10:26:06 -07:00
Clint Rutkas
08a7394c1b Deduping results for program plugin (#2375)
* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps

* Getting dups removed from list if LNK exists

* adjusting subtitle

* removing accidently paste

* Getting dups removed from list if LNK exists

* changed to normal forloop
2020-04-24 09:35:21 -07:00
Alekhya
8a2fd5bf5e Add the folder plugin wxs back in (#2374) 2020-04-23 19:16:17 -07:00
ryanbodrug-microsoft
7add40ae93 Adding back binding to QueryText and updating the cursor position similar to how wox originally did it. 2020-04-23 19:04:01 -07:00
ryanbodrug-microsoft
d4da98bae5 - Making Open Directory subtitle fixed, and the title as the current directory. 2020-04-23 18:39:36 -07:00
ryanbodrug-microsoft
92bbd83b33 Replacing submenu text with full path as 'Ctrl-Enter' doesn't do anything. Also reducing the String of CreateOpenCurrentResult to fit in one line. 2020-04-23 18:39:36 -07:00
ryanbodrug-microsoft
b0c647e50c Updating JetBrains.Annotations to 2020.1.0 to be consistent with other projects. 2020-04-23 18:39:36 -07:00
ryanbodrug-microsoft
1ddd94b95c Revert "Removed folder plugin"
This reverts commit 064d638588.

We will use the folder plugin to better mimic the way the start menu and run prompt deal with directories
2020-04-23 18:39:36 -07:00
Clint Rutkas
845c6be95f adjusting how programs are displayed. (#2369)
* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps
2020-04-23 18:25:57 -07:00
Tomas Agustin Raies
63d989cab4 Deprecate ATL based IPC wrapper library (#2248)
* Deprecate ATL based IPC wrapper library

* C# projects now use named pipe server implementations from two_way_pipe_message
through the interop C++/Cli library.

* Added Unit testing to interop library
2020-04-23 17:11:02 -07:00
Divyansh Srivastava
92daf156f5 Codeflow cleanup when selectedItem is not null 2020-04-23 16:16:15 -07:00
Divyansh Srivastava
d0822ab1fe Fixed process executing on clicking enter if no text in search box 2020-04-23 16:16:15 -07:00
ryanbodrug-microsoft
65cda38cc8 Result List - Bad rebase overwrote margin and translation fields. 2020-04-23 16:15:30 -07:00
ryanbodrug-microsoft
dcc1d545e9 Fixes an issue where PointerExit would hide the selected context buttons. 2020-04-23 16:15:30 -07:00
ryanbodrug-microsoft
e13967cb83 Fixes race conditions with PointerEnter/Exit events conflicting with Selection and unselection. This change provides better encapsulation of the logic to enable a selected item for accelerator (hotkey) events, and allow mouse input on results where the pointer is over. 2020-04-23 16:15:30 -07:00
Alekhya
46d1bc274c Modify scoring algorithm for fuzzy search (#2361)
* Modify scoring

* modified to if else
2020-04-23 15:39:55 -07:00
Clint Rutkas
81551104ce stopping deployment (#2356) 2020-04-23 15:38:07 -07:00
Alekhya
8b10fe4053 Launcher MSI - Added a required dll and removed folder plugin (#2355)
* Modified the product.wxs file

* Added the x64 config
2020-04-23 12:07:36 -07:00
Arjun Balgovind
b5bd2df814 Update the KBM UI to use a Grid based layout rather than stack panels (#2299)
* Added grid to edit keyboard

* Fixed all issues for Edit keyboard window with grid

* Added step to delete row definition and move row indices

* Handled grid operations for Edit Shortcuts

* Added dynamic layout for edit shortcuts

* Fixed resize windows message behaviour and removed warnings
2020-04-23 09:14:16 -07:00
Arjun Balgovind
32ddf3246c Add support for Common Win key in KBM (#2308)
* Added common win key to layoutmap

* Added common win key support for edit shortcuts

* Adjusted key names
2020-04-23 08:37:52 -07:00
Andrey Nekrasov
8ccc996e63 PreviewHandler: change install to per machine (#2320) 2020-04-23 17:33:56 +03:00
stefansjfw
bd7150d676 Use HKEY_CLASSES_ROOT for powertoys_toast_clsid (#2069)
* Use –HKEY_CLASSES_ROOT for powertoys_toast_clsid

* ImageResizer fix
2020-04-23 16:31:35 +02:00
Tomas Raies
c35e70173b Enable PowerLauncher toggle 2020-04-22 22:11:48 -07:00
ryanbodrug-microsoft
86f209a302 Opening explorer if the user has types a file path. 2020-04-22 20:50:10 -07:00
ryanbodrug-microsoft
44943feb8b Setting runcommand as the default execution method, and turning off run as admin by default. 2020-04-22 20:50:10 -07:00
Tomas Raies
4331e9ae80 Merge branch 'dev/PowerLauncher' into dev/traies/build_features_launcher_integration 2020-04-22 17:52:38 -07:00
Clint Rutkas
9ae97de780 simplifying the xaml and making things tighter (#2327) 2020-04-22 15:59:32 -07:00
Tomas Agustin Raies
d941b31c45 Display Key Mappings in Settings (#2314)
* Move changes

* Display Key Mapping in Settings

* Fix display of empty keys list

Co-authored-by: Udit Singh <udsing@microsoft.com>
2020-04-22 14:55:45 -07:00
Clint Rutkas
fed254f355 Update nuget packages across solution to latest (#2334) 2020-04-22 14:19:26 -07:00
Alekhya
7f53877283 text is selected whenever launcher gets hidden and is then set to visible (#2315) 2020-04-22 13:42:08 -07:00
Arjun
ca3a436fe5 Merge latest master: 4/22/20 2020-04-22 10:02:17 -07:00
Alekhya
d48ef90fb0 Simulating Win+backspace key press, instead of Win+Control as it was launching WW (#2250) 2020-04-21 19:46:10 -07:00
Clint Rutkas
29bbe84f69 removed deployment for uwp apps (#2298) 2020-04-21 15:50:54 -07:00
Arjun Balgovind
d079f0ca44 Changed output dir to modules and resolved conflicts (#2233) 2020-04-21 14:14:50 -07:00
Arjun Balgovind
394f52a725 Fix issue where key list would change based on keyboard state (#2221) 2020-04-21 13:43:52 -07:00
Arjun Balgovind
5828508218 Fix colors in KBM UI and add support for light/dark theme (#2256)
* Fixed colors for Edit Keyboard

* Fixed colors for Edit Shortcuts
2020-04-21 13:42:06 -07:00
Arjun Balgovind
2f244bca85 Fix Ctrl/Alt/Shift single key remapping (#2217)
* Added preprocessing step for edit keyboard buffer

* Fixed Ctrl\Alt\Shift single key remapping
2020-04-21 13:40:31 -07:00
Divyansh Srivastava
064d638588 Removed folder plugin 2020-04-21 12:56:28 -07:00
Tomas Agustin Raies
7856495d59 Fix compilation problems related to the Interop project (#2290)
* Added missing c++17 compile flag to common-md-flag
* Remove .NET native tool chain from Settings.UI release config
* This flag has to be removed because .Net Native does not support
  mixed assemblies, like PowerToysInterop.
2020-04-21 12:55:04 -07:00
ryanbodrug-microsoft
c3bded6947 Disabling scrollbars for gridview items. 2020-04-21 12:37:28 -07:00
ryanbodrug-microsoft
3a584e318a Positioning ContextButtons and adding background. 2020-04-21 12:37:28 -07:00
Clint Rutkas
48d744b6bd updated app icons (#2289) 2020-04-21 11:02:39 -07:00
Clint Rutkas
6eba8130ba Adding community page (#2285)
* first pass for community

* tweak in language

* added in Raf's WinCPP upgrade
2020-04-21 11:02:26 -07:00
vldmr11080
5ac7eddd03 Compare window desktop id with currently active work area desktop id. (#2110)
* Compare window desktop id with currently active work area desktop id.

* Improve error handling and conform to coding guidelines.

* Move virtual desktop helper functions to ZoneWindowUtils namespace.

* Ensure thread safety when creating instance of VirtualDesktopManager.

* Remove static qualifier from ServiceProvider.

* Return instead of break, as there is no need to check for other monitors, virtual desktop is the same for all.

* Move virtual desktop related helper functions to separate files.

* Skip comparing desktop ids if zone window has empty GUID for desktop id.

* Add comment describion scenario for which we need this fix.
2020-04-21 19:57:21 +02:00
Andrey Nekrasov
b5dfe6320d msi: detect and set previous installation path via a custom action (#2108) 2020-04-21 20:52:28 +03:00
udit3333
19ee55a303 Enable CI for dev/build-features branch (#2186)
* Updated Yaml to include dev/build-feature

* Added default icons
2020-04-21 10:29:02 -07:00
Arjun Balgovind
b715a008c5 Fixed KBM interaction with Shortcut Guide (#2220) 2020-04-21 10:25:14 -07:00
Divyansh Srivastava
1d4b834204 Removed ListView animations 2020-04-21 09:42:16 -07:00
Alekhya
aa271423f9 Changed to SystemChromeLow from Accent brush (#2272) 2020-04-21 08:43:28 -07:00
Andrey Nekrasov
0354026292 runner: initial automatic update (#2141) 2020-04-21 10:30:12 +03:00
Tomas Agustin Raies
93752fb6cb Display Unicode character for keys in HotkeySettingsControl (#2249)
* Fix HotkeyControl virtual key display

* A new interop project was setup to provide wrappers for C# projects
  that want to access functionality in the common project.

* Add assembly info

* Remove WIN32 configurations
2020-04-20 21:01:21 -07:00
Divyansh Srivastava
7da8689bf2 Somil55/merge custom ui into launcher (#2271)
* Remove Autosuggest box (#2192)

* Update Settings.Designer.cs

* Revert "Update Settings.Designer.cs"

This reverts commit a1bc0dda56.

* Updated LauncherControl XAML to add textbox and listview

* List View displayed

* Hooking up execution on the selected index, removing two way binding on selection, and experimenting with popup that doesn't work

* Updated MainViewModel to Remove context menu and history

* Added Resultist XAML Island project

* Updated SelectedItem and SelectedList Binding.
Issues :  List box doesn't open when query is written for first time but opens in subsequent queries.

* 1. Mouse Click working
2. List View is can't be focused
3. Fixed width of Launcher

* Removed two way QueryText box binding

* Removed SelectedItem two way binding and replaced with a callback

* [Cleaning] Remove redundant UWP project

* [Cleaning] Updated files to keep only atomic changes against dev/powerLauncher

* Thmbnail fixed for NEW UI

* Removed PreviewMouseDown function required by older WOX code

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>

* Added the auto-complete feature

* Removing ContextMenuPluginInfo, and ContextMenuTopMost as these commands are not used int the new design.

* Fixed merge conflicts

* Set only when index is 0

* One way binding

* Removed unnecessary binding

* Deleting unused (commented out code) that was legacy from wox project.

* Binding Buttons to appropriate context menu commands.
1. Buttons are dynamically loaded in a listview based on the actions supported be each plugin.

This change also deletes unused commands.

Note:  Most button events don't seem to be getting routed to the Selected Item.  Currently using 'PointerEntered' to validate the behavior.  The actions should be trigged by the button command property in the future.

* manually handling tab in mainwindow

* Loading context buttons on Selecting a suggestion list item

* Allowing hover event to load content menu items and display them as well.

* Adding context buttons to Indexer plugin.  This allows for the following:
1. [Files] Open Containing folder
2. [Folders/Files] Copy Path

* Remove White background of list (#2218)

* Remove white background of list

* Removed comments

* Changed to ContainerContentChanging event

* add const variables instead of numbers

* Added comment before the updatelistSize function

* Search box UI (#2224)

* Added backdrop and rounded corner

* Fix for two alt+space press to bring searchbox issue

* Fixed merge conflict

* Clean Mainwindow.xaml code

* Fix for textbox focus on first visible

* Allowing users to tab between the context buttons for the selected resut.  Also allowing users to press 'enter' to action on the selected items.

* Renaming SelectedIndex to ContextMenuSelectedIndex

* Enabling key accelerators on context buttons.
1. Add new object ContextMenuResult instead instead of reusing Result for both query results and context menu results.
2. Binding KeyboardAccelerator keys to contextmenuitemviewmodel
3. Enabling and disabling contextmenu items when selecting or deselecting each row.  Because we are manually maintaining selectionwe can't use ScopeOwners as the textbox is really the only item ever in focus.

* Launching explorer instead of the UWP application when selecting 'open file location'.

* Added fix for border showing up when result count is zero

* Updated fix for border on no result

* Adding visibility  after clearing result in MainViewmodel

* Launcher Light/Dark mode (#2235)

* Fixed issue with list view background not updating with Windows theme change

* Added theme change for WPF

* updated ShadowDepth for dropshadow

* Updated border thicknes of searchbox and listview

* Diff issue with ResultList.xaml

* Removed change in result delay

* Added code to pull colors from UWP

* Updated border resource to use system based SystemControlHighlightAccentBrush

* Updated corner radius in dark mode

* Updated Launcher description text

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Alekhya Reddy <reddykalekhya@gmail.com>
2020-04-20 19:53:20 -07:00
Divyansh Srivastava
afd22768fc Pull changes from master to dev/powerLauncher (#2255)
* Dpi unaware placement bug (#2121)

Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap

* Move markdown parsing logic outside control thread (#2099)

* Move markdown parsing logic outside control thread

* Update MarkdownPreviewHandlerControl.cs

* Remove trailing whitespace.

That'll teach me for trying to make an edit from the GitHub page.

* Migrate power rename MRU lists from registry to JSON (#2090)

* Handle most recently used search/replace strings within settings.

* Check for last modified time of json file and reload it if needed.

* Handle changes in MRU search / replace lists size.

* Improve handling of changes in MRU list size.

* Don't check for last modified time in every getter method. Load only when starting application.

* Add const identifier to getter methods.

* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.

* Add error checking when getting values from registry.

* Implementing changes suggested in #1992 (#2116)

* Implementing changes suggested in #1992

* Update Product.wxs

Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>

* Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)

* Fix for issue #1532

[PowerToys] Show version on tooltip

* Update src/runner/tray_icon.cpp

Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* FZ editor: Splitted zones positioning (#2158)

* Added a mutex to ZoneWindow, ensured no data races occur (#2154)

* Added a mutex to ZoneWindow, ensured no data races occur

* Protected draggedWindow* members with a mutex

* Ensured that critical reads happen in a single transaction

* Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)

* Dpi unaware placement bug - multimontior with same DPI settings fix

* Using different enumerating method

* Changed AllMonitorHaveSameDpiScaling method

* Removed accidental file

* small rename

* Changed some methods to CamelCase

* Review comments fixes

Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
2020-04-20 17:33:30 -07:00
Mattwmaster58
e9ecdb3f56 update github releases to latest link (#2223) 2020-04-20 17:18:38 -07:00
Alekhya
e14ef2c671 Added MSI support for Launcher (#2242)
* Fixed typo in output folder of calculator plugin

* Calculator plugin works

* Modified the name of the image to remove space as space is assumed to be a separator in wcx file

* Fixed typo in calculator dll

* Fixed typo in calculator plugin

* Shell, Program, Folde and indexer plugin working

* Added the ww plugin

* Fixed typos in the calculator plugin

* Delete file that was added unintentionally

* revert calculator rename changes

* Reverted other files changed

* Reverted renaming of file with space
2020-04-20 14:33:27 -07:00
Arjun
d45c4740ad Fixed a bug added in #2237 2020-04-20 11:03:32 -07:00
Arjun
62bae55fd1 Merge branch 'master' into dev/build-features 2020-04-20 09:15:32 -07:00
PrzemyslawTusinski
dcee505f6b Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)
* Dpi unaware placement bug - multimontior with same DPI settings fix

* Using different enumerating method

* Changed AllMonitorHaveSameDpiScaling method

* Removed accidental file

* small rename

* Changed some methods to CamelCase

* Review comments fixes
2020-04-20 18:09:10 +02:00
Arjun Balgovind
ddf800de10 Move KBM warnings at Apply to Flyouts (#2237)
* Moved warning to Flyout

* Fixed formatting
2020-04-20 08:59:35 -07:00
udit3333
325db535c0 [Kbm] Save the remaps to file[part-1] (#2184)
* Added Inital FileWatcher Implementation

* Added logic to read remap from file

* Added remap logic save to file

* Refactor code

* Moved the strings to constant file

* Added logic to handle Win key

* Updated filewatcher logic to avoid duplicate events

* Added comments

* Fix spacing

* Fix spacing

* Update logic to accomodate upstream merge

* Added global property name for os level shortcuts

* Added subkey for inprocess keys

* Remove non required file

* Added Changes required after merge

* Fix spacing in Helper.cpp
2020-04-20 08:22:36 -07:00
Ivan Stošić
af4678ff18 Added a mutex to ZoneWindow, ensured no data races occur (#2154)
* Added a mutex to ZoneWindow, ensured no data races occur

* Protected draggedWindow* members with a mutex

* Ensured that critical reads happen in a single transaction
2020-04-20 16:32:49 +02:00
Lavius Motileng
cae77ae291 added shortcut guide settings (#2247) 2020-04-20 06:03:26 -07:00
Seraphima Zykova
cab5a97117 FZ editor: Splitted zones positioning (#2158) 2020-04-20 11:54:25 +03:00
Arjun Balgovind
0417b6266a Add drop down key selection support to Keyboard Manager UI (dev/build-features) (#2140)
* Added combobox

* Formatted and removed unused code

* Added drop down support for Edit Keyboard window

* Reordered the displayed key list

* Add shortcut stack panels and drop downs linked to detect shortcut

* Add more selected item logic

* Added complete dropdown support for edit shortcuts window

* Added Flyout warning for incorrect drop down input

* Tweaked warnings

* Removed MainWindow code

* Changed SelectedValue toSelectedIndex

* Removed unnecessary assignments

* Added a warning for two dropdowns and the first one is changed to an action key

* Added function comments in cpp file

* Fixed some comments

* Fixed all allocation and out of scope issues

* Fix most issues except reloading shortcuts

* Fixed issue while reloading shortcuts

* Fixed type cast warnings

* Changed delete to delete[]

* tweaked
2020-04-18 16:12:26 -07:00
Arjun Balgovind
fc7103f56e Keyboard Manager UI tweaks (dev/build-features) (#2179)
* Fix Issue 2163

* Commented out profiles UI

* Added banded list view rows

* Fixed spacing
2020-04-17 18:06:36 -07:00
Betsegaw (Beta) Tadele
ffe9ec1c76 [Window Walker] Migrate to Launcher (#2093)
* Copy the existing calc. plugin foldeR

* Blindly rename a bunch of things to Window Walker

* Update the solution to reference the new plugin

* Get basic Yo returned

* Remove all the languages except english

* Lower quality of icon as well as test showing it

* Add the core non-ui parts to the plugin

* Delete calculator png

* Get it to compile

* Added the actual code which apparently doesn't work

* Finally start showing results

* Fix up strings

* Switch working

* Remove unused classes

* Remove unneeded async
2020-04-17 16:43:34 -07:00
Lavius Motileng
3fc738b53a Added Tests and Refactored code (#2129)
* Added Tests and Refactored code

* removed un-used file

* delete test files when test completes

* removed extra build configs

* added clean-up method

* removed unused variable

* re-added removed attributtion

* added error handling and move strings to string resource

* added error handling to file explorer view model

* moved varible assignment to if statement block

* removed savin of settings file from the UI

* re-added open source notice

* added missing controls for powerrename and fancy zones

* removed dead coded

* remove un-used configuration

* added error handling for file saving and updated powerreanme constructor

* removed added configurations

* added settings state
2020-04-17 15:25:08 -07:00
Udit Singh
7e1f554c4e Merge Master Latest in dev/build-features 4/17/20 2020-04-17 10:54:27 -07:00
Nghia M. Luong
5cfa8889f4 Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)
* Fix for issue #1532

[PowerToys] Show version on tooltip

* Update src/runner/tray_icon.cpp

Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
2020-04-17 11:47:24 +03:00
eduardodextil
0cbe7a16e3 Implementing changes suggested in #1992 (#2116)
* Implementing changes suggested in #1992

* Update Product.wxs

Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
2020-04-17 11:43:36 +03:00
Clint Rutkas
0cf3c097fb tweak text (#2177) 2020-04-16 21:06:02 -07:00
udit3333
15061af796 Enable CI build on PowerLauncher Branch (#2181)
* Enable CI build on PowerLauncher Branch

* Updated Nuget restore to latest and added AssetTargetFallback property
2020-04-16 20:25:54 -07:00
Niels Laute
2cfcad6a50 [Settings V2] Release notes link + minor styling fixes (#2176)
* Added release notes link

* Minor styling fixes
2020-04-16 16:19:52 -07:00
Arjun Balgovind
13a8ac3e50 Handle RAlt, RCtrl and other extended keys correctly (dev/build-features) (#2145)
* Fixed SendInput for RAlt and RCtrl

* Fixed shortcuts containing Del, Arrow keys, etc
2020-04-16 15:17:57 -07:00
Alekhya Reddy
7c5993d75b Set MainViewModel visibility to hidden on startup 2020-04-16 14:12:15 -07:00
Lavius Motileng
10c0325f18 added Fancy Zones Settings (#2161) 2020-04-16 11:45:27 -07:00
Divyansh Srivastava
367cb41121 Search result thumbnail for PowerLauncher (#2124)
* Replace WPF Imaging library with UWP

* Removed UWP and WPF namespace conflicting files from Wox

* Removed Image hashing as it wasn't used anywhere

* Updated formatting
2020-04-16 11:01:38 -07:00
Tomas Agustin Raies
c37884bdb7 Detect Shortcut: Hold Esc/Enter to Cancel/Accept (#2135)
* Detect Shortcut: Hold Esc/Enter to Discard/Apply changes

Bypass shorcut/single key remapping by holding the navigation keys
2020-04-16 09:16:48 -07:00
ryanbodrug-microsoft
37a551ecd3 SearchIndexer - Modifying QueryContentProperties and QuerySelectColumns to use System.FileName 2020-04-15 17:21:22 -07:00
Clint Rutkas
dafc514353 removed reference to everything (#2133) 2020-04-15 15:10:27 -07:00
vldmr11080
aa6cb7d650 Migrate power rename MRU lists from registry to JSON (#2090)
* Handle most recently used search/replace strings within settings.

* Check for last modified time of json file and reload it if needed.

* Handle changes in MRU search / replace lists size.

* Improve handling of changes in MRU list size.

* Don't check for last modified time in every getter method. Load only when starting application.

* Add const identifier to getter methods.

* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.

* Add error checking when getting values from registry.
2020-04-15 23:14:17 +02:00
Ben Randall
67e6688e69 Move markdown parsing logic outside control thread (#2099)
* Move markdown parsing logic outside control thread

* Update MarkdownPreviewHandlerControl.cs

* Remove trailing whitespace.

That'll teach me for trying to make an edit from the GitHub page.
2020-04-15 13:10:55 -07:00
Udit Singh
5d9b71b038 Merge Master Latest: 4/15/20 2020-04-15 07:55:17 -07:00
PrzemyslawTusinski
2077cd4864 Dpi unaware placement bug (#2121)
Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap
2020-04-15 12:34:11 +02:00
Alekhya Reddy
65276f45f1 Merge branch 'master' of https://github.com/microsoft/PowerToys into dev/PowerLauncher 2020-04-14 21:27:04 -07:00
Clint Rutkas
95eb17bdb7 xaml adjustments, including contributors (#2118)
* xaml adjustments

* verbage change.
2020-04-14 10:42:27 -07:00
udit3333
a88d66b48b Integrate keyboard manager with settings v2[Part-2] (#2107)
* Added CustomAction Data Models

* Updated data model

* Updated Button command trigger for keyboard manager

* Integerated custom actions in Keyboard manager module backend

* Allow Runner to launch windows on foreground

* Refactor and moved the execution logic to background thread

* Removed non-required unlock calls

* Fixed typo

* Resolve PR comments
2020-04-14 09:24:11 -07:00
Clint Rutkas
a200c5397a removed unused dep (#2080) 2020-04-14 08:41:24 -07:00
PrzemyslawTusinski
87fb6fc3d1 Added unit test for non-resizable window placement (#2017) 2020-04-14 10:40:30 +02:00
Tomas Raies
79fcd45d5f Change key mappings according to Keyboard Layout 2020-04-13 11:41:32 -07:00
Arjun Balgovind
e0ddaa74d0 Add unicode naming for keys (dev/keyboardManager) (#1978)
* Added key names

* Display names in detect keyboard UI

* Added keyboard layout for edit keyboard window

* Removed commented code

* removed unused code

* fixed argument modifiers

* Added newline at EOF

* Added unicode changes to edit shortcuts window
2020-04-13 11:41:32 -07:00
Clint Rutkas
d584dc5632 Update NOTICE.md 2020-04-13 10:48:05 -07:00
Andrey Nekrasov
86704efcec FancyZones: optimize elevation detection logic (#2103) 2020-04-13 18:22:37 +03:00
Andrey Nekrasov
6bb0f18d53 chore: format PowerToys custom actions (#2104)
* chore: format PowerToys custom actions

* add curly braces
2020-04-13 16:00:51 +03:00
yuyoyuppe
77e4984468 chore: fix window walker warning 2020-04-11 11:24:33 +03:00
yuyoyuppe
4e18c67ec5 chore: fix linking warnings 2020-04-11 11:24:33 +03:00
Clint Rutkas
6fbed4ad5c Settingsv2 fix warnings (#2076)
* updating a ton of warnings.

* bunch of cleanup

* few smaller ones

* fixed naming

* reversing an oops

* adjusting json to use attribute

* more json properties
2020-04-10 15:22:07 -07:00
Clint Rutkas
0fb42c6129 Update README.md 2020-04-10 14:47:58 -07:00
Clint Rutkas
41ab94fe13 updated notice (#2075) 2020-04-10 12:39:25 -07:00
Niels Laute
3a46f4589b Updated KeyboardManager page to the right styles/margins. Updated visuals for the mapped keys. (#2031) 2020-04-10 12:11:21 -07:00
Seraphima Zykova
14441ec144 WinAppDriver tests fix (#2006)
* updated wait methods and launch
* canvas zone resize tests updated
* updated editor opening
2020-04-10 18:52:16 +03:00
stefansjfw
f589dd2f26 Only clone layout from parent desktop when creating new virtual desktop (#1904)
* Fix issue #1343

* Add Unit Tests

* Revert non intended rename

* Address PR comments
2020-04-10 16:29:18 +02:00
Ivan Stošić
629ba763d7 Basic support for snapping to multiple zones (#1955)
* Refactor a method which resizes windows

* Completed initial work for MultiZones

Without changing any test, they all pass!

* Implemented a basic version of Multizones, updated some tests

* Reduced the sensitivity radius

* Added a few must-have unit tests for Multizones

* Some fixups

* Took care of the conflict between this and #1938

* Improved how zones are detected, reverted a change in one unit test

* Resolved another merge conflict

* Fixed bugs related to stamping
2020-04-10 16:09:08 +02:00
Clint Rutkas
e896e1b3dd fixing a bunch of warnings from Window Walker (#2014)
* first set of warning fixes

* Since this is a Interop item, it should have a _

* Update Window.cs

* Update InteropAndHelpers.cs

looks like there was a space a the top

* Update Window.cs
2020-04-10 06:41:19 -07:00
Yevhenii Holovachov
b92a127200 Added icon for FZEditor (#1388)
* Added icon for FZEditor
2020-04-10 12:15:59 +03:00
Clint Rutkas
e02b8e227d Merge pull request #98 from microsoft/adjustUrl
tweaked url
2020-04-09 16:20:22 -07:00
Clint Rutkas
367a7309bc Update plugin.json 2020-04-09 16:20:04 -07:00
Clint Rutkas
6ecd2ed186 tweaked url 2020-04-09 14:40:17 -07:00
Alekhya
0ada26ccc2 Merge pull request #89 from microsoft/EditREADME
Removed additional README instructions before moving to the powerToys public branch
2020-04-09 10:27:04 -07:00
Alekhya
a39faeec32 Merge pull request #76 from microsoft/MicrosoftLauncher
Rename Wox.Launcher -> Microsoft.Launcher and Wox.Plugin.Indexer -> Microsoft.Plugin.Indexer
2020-04-09 10:26:51 -07:00
ryanbodrug-microsoft
4e35b58d59 Merge pull request #90 from microsoft/user/ryanbod/remove_postbuild_script
Removing unused post build and deploy scripts.
2020-04-09 10:25:44 -07:00
ryanbodrug-microsoft
d03be75184 Removing unused post build and deploy scripts. 2020-04-09 09:42:36 -07:00
Divyansh Srivastava
59b0109918 Fix Query builder test (#86)
* Revert base viewModel class to fix tests.
2020-04-09 09:41:30 -07:00
ryanbodrug-microsoft
154e5aab8e Merge pull request #78 from microsoft/user/ryanbod/fix_killtask_warning
Ignoring 128 errors from taskkill
2020-04-09 09:41:00 -07:00
ryanbodrug-microsoft
5c38b9109e Merge pull request #85 from microsoft/user/ryanbod/fix_catastrophic_failure
Fixing xaml catastrophic failure,
2020-04-09 09:40:31 -07:00
Alekhya Reddy
70b4b33823 Removed additional README instructions before moving to the powerToys repo 2020-04-09 08:39:57 -07:00
Jaime Bernardo
6419c6b1ba settings: fix minimist package vulnerable version (#2021)
Updates nested dependencies so that a vulnerable version of minimist
is not being used.
2020-04-09 17:20:17 +02:00
Seraphima Zykova
1f9d9c619e FZ editor: splitter thickness set to 1px when space around zones is zero (#2020) 2020-04-09 16:47:25 +03:00
Udit Singh
2aa9f4c079 Updated Settings UI project output directory 2020-04-08 21:38:34 -07:00
Tomas Agustin Raies
70495d9ce9 Display keys in Shorcut modal as buttons (#1996)
* Display keys in Shorcut modal as buttons

* Refactor: rename currentShortcutUI and currentSingleKeyUI

* Change GetKeyVector signature
2020-04-08 21:17:20 -07:00
Clint Rutkas
b3b7f8b980 Merge pull request #82 from microsoft/fixOverlayProblem
Fix for Xaml Island
2020-04-08 21:10:00 -07:00
Alekhya Reddy
b7e6d8646f Fixing merge conflicts 2020-04-08 19:44:38 -07:00
Alekhya
466522fb12 Merge pull request #88 from microsoft/extractBasedOnTitle
Searches for keyword only in title and Improving quality of results displayed
2020-04-08 18:28:41 -07:00
Alekhya Reddy
549d68d3e8 Display the title from System.Title directly instead of extracting it from the path 2020-04-08 18:16:40 -07:00
Alekhya Reddy
42a54648a1 Searches for keyword only in title and not content to improve the quality of results 2020-04-08 17:51:43 -07:00
Alekhya
dc9b338cb9 Merge pull request #80 from microsoft/indexerWarning
Adding useWPF tag to get rid of warning for Indexer
2020-04-08 17:44:25 -07:00
ryanbodrug-microsoft
b7d0455377 removing unused mutex string 2020-04-08 17:02:08 -07:00
Clint Rutkas
df0b11a960 suggested fix 2020-04-08 16:53:16 -07:00
ryanbodrug-microsoft
111956e2f3 Fixing xaml catastrophic failure, based on Miguels suggestion here: https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues/210 2020-04-08 16:28:11 -07:00
Arjun Balgovind
52c12731cb Refactor Shortcut remaps to distinguish modifiers and action keys (#1927)
* Added unique lock mutexes for thread safety

* Fixed a bug in detect key logic

* Changed dword to word

* Added early unlock statements to fix issue with shortcut guide

* Fixed type conversion warnings

* Migrated detect shortcut window to use Shortcut class

* made changes in Apply button logic

* Revert thread safety changes

* refactored code works on the UI side

* Refactored remapping code to use new Shortcut class

* Refactored to SetKeyEvent function

* Moved function to cpp file and added more comments

* Refactored map variable and handled common Win key

* Remove debug code

* Change arguments to const references
2020-04-08 14:49:00 -07:00
ryanbodrug-microsoft
cf54a4919b Adding a build dependency to the runner project for PowerKeys. This should allow developers to F5 with the runner as startup and have all the dependencies properly build, and thus make the PowerKeys UI functional. 2020-04-08 14:49:00 -07:00
Arjun Balgovind
ac26818005 Added unique lock mutexes to KeyboardManagerState (dev/keyboardManager) (#1789)
* Added unique lock mutexes for thread safety

* Fixed a bug in detect key logic

* Added early unlock statements to fix issue with shortcut guide

* Added comments for unlocks before SendInput and changed some unique_locks to lock_guards
2020-04-08 14:49:00 -07:00
Arjun Balgovind
467cf919be Removed ARM/x86 configs and minor refactors (dev/keyboardManager) (#1785)
* Removed ARM and x86 configs

* renamed files and references and localized strings
2020-04-08 14:49:00 -07:00
udit3333
f48040a4d7 Remap Keyboard UI (dev/keyboardManager) (#1698)
* Added initial UI implementation

* Added backend logic for remap key interaction

* Added single key remap control

* Updated Edit keyboardWindow UI

* Commented out ui logic

* Fixed issue with remap window UI and uncommented the code

* Updated customdialog window foreground color

* Updated buttons foreground color

* Added info header

* Added null check for detected key

* Removed fully qualified namespaces

* updated the background color as ligtht gray
2020-04-08 14:35:52 -07:00
Arjun Balgovind
90ddcb30bf Add support for shortcuts with >2 keys (dev/keyboardManager) (#1697)
* Added check keyboard state function

* Added keyboard state check to avoid n-key shortcuts being affected by 2 key shortcuts

* Added support for n key shortcuts in backend and UI

* Added a fix to ensure mouse buttons states are not checked

* reverted some debugging changes

* reverted some debugging changes
2020-04-08 14:35:52 -07:00
Arjun Balgovind
b713083574 Edit Shortcuts UI (dev/keyboardManager) (#1647)
* Added EditShortcuts Window and added Detecting shortcuts functionality

* Fixed build error

* Changed detection to take place only when window is in focus

* Added solution folder

* Added a common project and refactored shared variables to an object with wrapper functions

* Added dynamic addition of shortcuts

* Moved all shared variables in detection to state variable with wrapper functions

* Added code to re-load saved shortcuts in the UI

* Added comments

* Fixed argument modifiers in Helpers

* Updated arg modifiers in all functions

* Removed unused headers and added precompiled headers
2020-04-08 14:35:52 -07:00
Arjun Balgovind
fc7e7074ce Move keyboard manager POC code to dev branch (#1455)
* Created PowerKeys project

* Swapping tab with shift

* Added hash map and iterators for remapping code

* Added PowerKeys flag and added toggletomod function

* Added shortcut base code

* Fixed os level shortcut functionality

* Added 1 extra event

* Added check for same modifier and comments

* Added app-specific remapping for 4 apps including UWP apps

* Changed foreground window logic

* Added a separate hook for PowerKeys which can be re-hooked by enabling and disabling

* Added a separate hook for PowerKeys which can be re-hooked by enabling and disabling

* Fixed all priority issues and changed injection flags

* Added another msedge.exe shortcut

* Added a UI which is linked to the backend hook

* Cleaned code and added comments

* Added second button

* Renamed some files/variables and added an extra button
2020-04-08 14:28:39 -07:00
Alekhya
e88e9bdf11 Merge pull request #79 from microsoft/mergePTmaster
Pulling changes from PowerToys master
2020-04-08 14:26:43 -07:00
udit3333
bc4ea885dc Add keyboard manager settings ui[Part-1] (#1979)
* Added view and data models for keyboard remapper settings page

* Added intial UI of Keyboard manager settings page

* Fixed Sln file configs

* Resolve UI changes PR comments

* Added UId for UI elements

* Moved Ui strings to resx

* resolve stylecop warnings

* Fixed missing tag from resx file
2020-04-08 13:53:09 -07:00
Divyansh Srivastava
723ace2724 Launcher resize issue on selecting search result (#77)
* Added fix for closing wox on pressing escape and app execution

* Added fix to prevent autosuggestbox resize
2020-04-08 13:07:00 -07:00
Alekhya Reddy
aeb454f31d adding useWPF to get rid of warning 2020-04-08 12:36:14 -07:00
Alekhya Reddy
12c44dceb6 Merged powerToys master into Launcher master 2020-04-08 11:49:32 -07:00
Divyansh Srivastava
9d1b8fbd3e Added fix for closing wox on pressing escape and app execution (#75) 2020-04-08 11:32:59 -07:00
ryanbodrug-microsoft
124e0412b2 Ignoring 128 errors from taskkill, as this means the process isn't running. We don't want htis to show up in the warnings list on build 2020-04-08 11:19:28 -07:00
Alekhya Reddy
3a46260937 modified the name of the dll in the indexer plugin 2020-04-08 10:52:03 -07:00
Alekhya Reddy
7151d5eac2 Added dependency on PowerLauncher to the Microsoft.Launcher project 2020-04-08 10:39:02 -07:00
Alekhya Reddy
5e28d39f09 Renamed the dll produced 2020-04-08 10:38:26 -07:00
Tomas Raies
c7774d3d6c Add Settings.UI as dependency of runner 2020-04-08 10:21:40 -07:00
Tomas Raies
a85b84fd56 Stylecop compliance 2020-04-08 10:21:40 -07:00
Tomas Raies
443b3c8b82 PowerLauncher Settings
* Cherry Picked commit branch due to merge conflicts
* add HotkeySettingsControl
* add localization strings
* add PowerLauncherPage ViewModel
* fix build dependency - settings.ui.runner depends on TwoWayIPCLib
* uncomment IPC settings propagation
2020-04-08 10:21:40 -07:00
Alekhya Reddy
d69383d78b Modified the output folder produced 2020-04-08 10:13:48 -07:00
vldmr11080
c355a2b61e Use JSON data file for storing PowerRename settings instead of registry (#1909)
* Use JSON data file for storing PowerRename settings instead of registry

* Address PR comments and made several improvements

* Remove WindowsApp.lib dependencies in test app and unit tests

* Revert changes in vcxproj for unit test

* Solve linker warnings generated while linking WindowsApp.lib

* Don't migrate enabled flag. Always read / write from registry.
2020-04-08 19:12:46 +02:00
Alekhya Reddy
93415ee36c Merging with master 2020-04-08 10:06:14 -07:00
Alekhya
0648ecf2d2 Merge pull request #70 from microsoft/indexerException
Fix for Indexer exceptions
2020-04-08 09:26:18 -07:00
PrzemyslawTusinski
17022d50d4 Fancy zones preserve size of non-resizable windows (#1974)
* fancy zones preserve size of non-resizable windows

* Changed the method of determining if window is resizable

* minor merge fix
2020-04-08 18:22:43 +02:00
Alekhya Reddy
c4573e46a9 Removed STAThread 2020-04-08 09:19:49 -07:00
PrzemyslawTusinski
fa515604dc MoveWindowIntoZoneByIndexWithInvalidIndex failing TC fix (#2009) 2020-04-08 18:01:51 +02:00
ryanbodrug-microsoft
3b12d70e45 Merge pull request #67 from microsoft/launcherUI-mergemaster
Merge LauncherUI into master
2020-04-08 07:37:51 -07:00
Seraphima Zykova
efb86f453c Draw border inside zone (#2000) 2020-04-08 16:59:17 +03:00
stefansjfw
569c18c9f1 Remove uneeded TmpMigrateAppliedZoneSets() (#1850)
This was needed while we were migratin device-info so
active layout could be migrated as well. At some point
we dropped migration of device-info. Therefore, this has no
puprose anymore.
2020-04-08 15:43:19 +02:00
Yevhenii Holovachov
91223a8431 Tests: Editor settings tests (#1682)
* Added tests for padding checkbox, padding values
2020-04-08 16:33:05 +03:00
PrzemyslawTusinski
d95e49b535 Dragging by upper part of application bar doesn't trigger fancy zones display - fix (#1953)
* Dragging by upper part of application bar doesn't trigger fancy zones - fix

* reversed if logic
2020-04-08 15:12:04 +02:00
Niels Laute
4cb89b3fc2 FZ - Styling updates to GridZone and CanvasZone controls so they look more Fluent (#1778)
* Improved styling so it looks more Fluent and native to W10

* CanvasZone border is now using the active accent color

* Updated GridZone to a similiar Fluent styling as the CanvasZone. Added a mouseover state to the GridResizer.
2020-04-08 14:46:05 +02:00
Andrey Nekrasov
5e56c66201 msi: fix icon bug due to wix quirk (#2001) 2020-04-08 13:19:58 +03:00
ryanbodrug-microsoft
e6393c105b Removing x86,ARM,ARM64, build configurations, as these were added accidentally when adding xaml island support. 2020-04-07 20:25:16 -07:00
Alekhya Reddy
bb16313024 Modified the test, the connection need not be null after being disposed. There is no direct way of checking if an object has been disposed other than to throw the InvalidOperationException 2020-04-07 18:40:13 -07:00
Alekhya Reddy
a5ce2a5a62 Merging with master 2020-04-07 17:57:48 -07:00
Alekhya Reddy
3885cbd045 single thread execution of the indexer plugin and InvalidOperationException due to connection being closed on ExecuteReader, handled separately 2020-04-07 17:52:03 -07:00
Alekhya Reddy
00940d66b1 Downgraded the library to the latest stable version 2020-04-07 17:48:38 -07:00
ryanbodrug-microsoft
cafba71671 Removing 'Wox' branded logos from powerlauncher.csproj as was done previously or wox.csproj 2020-04-07 16:21:16 -07:00
Betsegaw (Beta) Tadele
cb454734b0 [Window Walker] Handle UWP process names (#1858)
* Fixed UWP app search

* Use new methods

* Updated comments
2020-04-07 15:22:17 -07:00
Arjun Balgovind
4f29f998c5 Fixed telemetry calls in Image Resizer (#1983) 2020-04-07 15:19:22 -07:00
vhanla
c241d48df3 Better app listing like Alt-Tab supports UWP apps and hidden apps running including in another Virtual Desktops (#1956)
* Better app listing like Alt-Tab supports UWP apps and hidden apps running in another virtual desktop just like Windows Alt-Tab

* Modified not to hide cloaked apps i.e. also show apps running in another virtual desktop

* Improved listing apps, with readability and reusable abstract properties.
Including a function to detect cloaked UWP apps for future use.
2020-04-07 15:02:14 -07:00
ryanbodrug-microsoft
2afc268a04 Updating build dependencies to so that wox.launcher depends on powerlauncher.csproj not wox.csproj 2020-04-07 14:52:13 -07:00
ryanbodrug-microsoft
94017c1e53 Update Powerlauncher nuget packages to be same version as wox.csproj. Note: FoxyWeavers.xsd change is automatically done as part of nuget package update. 2020-04-07 14:46:22 -07:00
Lavius Motileng
cea6b7067a added stylecop (#1933)
* added stylecop

* removed xml documentation

* used common stylecop file
2020-04-07 14:42:31 -07:00
Lavius Motileng
89b44f5126 User/lamotile/add powerrename settings (#1813)
* added powerrename settings

* removed pop-up message

* removed unused files

* revrted changes to old settings

* updated solution file

* added ToJsonString() method

* added JSON property for the powertoy name
2020-04-07 14:42:15 -07:00
Niels Laute
3015ffd950 Settings V2: new FancyZones, ImageResizer XAML, sidepanels are now in the settings pages for more flexibility (#1792)
* Added FZ settings page

* Added FZ page

* Added sidepanel to all settings pages + UX improvements. New Fancy zones page.

* Added ImageResizer page + sidepanel improvements

* Revert "Added ImageResizer page + sidepanel improvements"

This reverts commit 75bc37a6ba.

* Removed contributors on general page

* Added ImageResizer page
2020-04-07 14:42:14 -07:00
Lavius Motileng
8c465d22e0 updated general settings model 2020-04-07 14:42:14 -07:00
Lavius Motileng
f1951d0d5f Setting v2: added power preview settings (#1702)
* added power preview settings

* Added link to module oververview

* create settings file if one is not found

* removed run oon start up speficic callback

* Update src/core/Microsoft.PowerToys.Settings.UI.Lib/ModuleSettings.cs

Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* fixed merge conflicts

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
2020-04-07 14:42:14 -07:00
Niels Laute
a84be2ba60 New settings pages (XAML) and improvements to ShellPage. Added more styles for typical margins and textblocks (#1735) 2020-04-07 14:42:14 -07:00
Lavius Motileng
4243feaf37 Added functionality for General Settings Page (#1664)
* archive

* formmated code

* reverted changes to test class file.

* reverted changes to test file: reverted name

* added class models and updated link

* removed test console project
2020-04-07 14:42:13 -07:00
ryanbodrug-microsoft
e004f96b65 Making Query internals visible to wox. 2020-04-07 14:41:33 -07:00
ryanbodrug-microsoft
a98cbc3a9d Removing update logic from PowerLuanch App.xaml.cs as was done in Wox project. 2020-04-07 14:39:12 -07:00
ryanbodrug-microsoft
5877918fe8 Making wox.csproj build wox assembly instead of powerlauncher 2020-04-07 14:37:09 -07:00
ryanbodrug-microsoft
b45b585edf Merging master into changes from launcherUI. Wox.Infrastructure assembly info I took the changes from both branches as they will be needed. This currently doesn't build I will make the changes to get it building atomically. 2020-04-07 14:33:45 -07:00
ryanbodrug-microsoft
983b2ebe0e Merge pull request #62 from microsoft/user/ryanbod/cherry_pick_pinyin
Merge pull request #42 from microsoft/AddPinyinPerformance
2020-04-07 14:26:10 -07:00
Lavius Motileng
2a0e92e4e2 add two way IPC 2020-04-07 14:19:33 -07:00
Niels Laute
b351e60d52 Added a General tab page with XAML layout and controls according to spec (#1546) 2020-04-07 13:49:14 -07:00
Clint Rutkas
69e7a581fd fixed default loading. 2020-04-07 13:49:13 -07:00
Clint Rutkas
0a20be85ab just diff icons to make it much clearer. still hitting the xaml parse errror a ton ..... :( 2020-04-07 13:49:13 -07:00
Clint Rutkas
3f5a54f9f1 Added in generic ViewModel 2020-04-07 13:49:13 -07:00
Clint Rutkas
e2c7941542 using non-winui navview for stability, fixed revert error on runner's csproj 2020-04-07 13:49:13 -07:00
Clint Rutkas
8433119ac9 getting navview unbroke 2020-04-07 13:49:13 -07:00
Clint Rutkas
43589096c3 Revert "fixed runtime xaml load failure"
This reverts commit f5686cc154.
2020-04-07 13:49:13 -07:00
Clint Rutkas
05d14166e4 code directly borrowed from the WinUI app ... still same issue 2020-04-07 13:48:20 -07:00
Clint Rutkas
0d0f7724b6 checking in code for navview as a test 2020-04-07 13:48:20 -07:00
Lavius Motileng
d28152566d fixed runtime xaml load failure 2020-04-07 13:48:20 -07:00
Lavius Motileng
fb805de552 fixed 2020-04-07 13:47:55 -07:00
Lavius Motileng
5ade906a7b archive 2020-04-07 13:46:33 -07:00
Lavius Motileng
8f02cbc234 updated namespaces 2020-04-07 13:46:33 -07:00
Lavius Motileng
59a2415a0d Lavius / Base Project for New Settings Project (#1481)
* base WPF Project

* Added tests

* Update build configuration .sln file

* removed unnessesary asset files
2020-04-07 13:46:06 -07:00
Alekhya Reddy
c1b3686190 adding checks 2020-04-07 11:29:46 -07:00
Divyansh Srivastava
662eeafbb5 Merge pull request #58 from microsoft/launcherUIAppExecution
Launcher UI app execution
2020-04-07 09:35:18 -07:00
Seraphima Zykova
5ff146bc69 KeePass window showing from tray (#1938) 2020-04-07 19:30:12 +03:00
Alekhya
9380a243ba Merge pull request #61 from microsoft/removeWoxFiles
Removed the unnecessary wox files to clean up codebase
2020-04-07 09:14:56 -07:00
Alekhya Reddy
587291ab86 Removed .yml files 2020-04-07 09:14:17 -07:00
Alekhya
2cd62621df Merge pull request #60 from microsoft/removeRedXProps
Remove red x props
2020-04-07 08:19:23 -07:00
Alekhya
3630fc63d7 Merge pull request #59 from microsoft/addUseWPF
Add <useWPF> tag to calculator and remove <useWindowsForms> from Indexer plugin
2020-04-07 08:18:07 -07:00
Yevhenii Holovachov
de42d9f310 Opening settings when user is opening already running Powertoys (#1957)
* Added code to open general settings when opening second instance of powertoys
2020-04-07 13:17:18 +03:00
Seraphima Zykova
f5ed9f1c33 Editor: fixed zone offset scaling (#1876) 2020-04-07 12:03:57 +03:00
JordanAnthonyKing
01ec472314 Issue #1849: Fix for windows in the last zone being placed in the first zone when decreasing the zone count. (#1884) 2020-04-07 10:23:59 +02:00
Divyansh
9ddee84954 Title display working correctly 2020-04-06 18:01:59 -07:00
Divyansh
dc0715dc2a Rectyfying title display 2020-04-06 17:38:48 -07:00
Alekhya
b6b9fad5da Merge pull request #42 from microsoft/AddPinyinPerformance
Cherry picked pinyin performance changes from jjw24's master branch

(cherry picked from commit b9e437c6cd)
2020-04-06 16:42:27 -07:00
Divyansh
553922bef6 Added query submitted event to handle default action on clicking a list view item 2020-04-06 16:08:31 -07:00
Alekhya Reddy
4b08c0b56b To avoid DBNull to String typecast exception 2020-04-06 15:52:19 -07:00
Alekhya Reddy
ba081c7837 Renamed Wox.Launcher to Microsoft.Launcher 2020-04-06 15:48:58 -07:00
Alekhya Reddy
f4a2741ba0 Renamed Wox.Plugin.Indexer to Microsoft.Plugin.Indexer 2020-04-06 14:00:14 -07:00
Alekhya Reddy
e6b926c87f Removed the unnecessary wox files to clean up codebase 2020-04-06 13:35:45 -07:00
ryanbodrug-microsoft
4be1195e5d Merge pull request #37 from microsoft/user/ryanbod/kill_powerlauncher_exe
Adding Directory.Build.targets for launcher
2020-04-06 13:21:28 -07:00
Enrico Giordani
84ef245b56 Now working on 0.16.2 (#1959) 2020-04-06 21:38:04 +02:00
Alekhya Reddy
7b39bae673 Removed itemgrp from wox.core and wox.test csprojs 2020-04-06 11:26:32 -07:00
Alekhya Reddy
7c505fd02a Removed the item group for properties from indexer, program and shell plugin 2020-04-06 11:24:10 -07:00
Alekhya Reddy
11f7f9a231 Removed the item group for properties from folder plugin 2020-04-06 11:23:05 -07:00
Alekhya Reddy
4f1eedcf7c Removed the item group for properties from calculator plugin 2020-04-06 11:22:09 -07:00
Alekhya Reddy
99f85b800c Removed an unnecessary <useWindowsForms> tag 2020-04-06 11:02:32 -07:00
Alekhya Reddy
2e4f81f63d Added the <useWPF> tag to remove the warning 2020-04-06 11:02:05 -07:00
Divyansh
abbaca3c71 Updated functionality on suggestion chosen in autosuggestbox 2020-04-06 09:23:08 -07:00
Clint Rutkas
a9b6f976a2 Merge pull request #44 from microsoft/dev/crutkas/updatingNugetPackages
Dev/crutkas/updating nuget packages
2020-04-04 12:05:04 -07:00
Clint Rutkas
64b2a8d4a5 Merge branch 'master' into dev/crutkas/updatingNugetPackages 2020-04-04 12:04:49 -07:00
Clint Rutkas
2b550b104f Merge pull request #46 from microsoft/dev/crutkas/removeUpdater
Removing Squirrel dll.  unsure on updating so i kept that logic in
2020-04-04 12:01:36 -07:00
ryanbodrug-microsoft
564e76956a Merge pull request #26 from microsoft/user/ryanbod/removing_unnecessary_locks
User/ryanbod/removing unnecessary locks
2020-04-04 11:53:08 -07:00
Clint Rutkas
dd734c3c8a Merge branch 'master' into dev/crutkas/updatingNugetPackages 2020-04-03 19:54:50 -07:00
Clint Rutkas
35e9091863 Removing Squirrel dll. unsure on updating so i kept that logic in 2020-04-03 17:30:33 -07:00
Alekhya
b9e437c6cd Merge pull request #42 from microsoft/AddPinyinPerformance
Cherry picked pinyin performance changes from jjw24's master branch
2020-04-03 17:21:50 -07:00
Alekhya
de5f7f9b05 Merge pull request #29 from microsoft/portIndexer
Port indexer plugin to .NET Core
2020-04-03 17:08:02 -07:00
Clint Rutkas
44a9db1c2f adding two back in 2020-04-03 16:49:21 -07:00
Clint Rutkas
d7dc4bf496 updating references and removing a few that seem uneeded for how stuff is referenced 2020-04-03 16:37:59 -07:00
Divyansh
1a15a062ef Working up/down arrow key 2020-04-03 14:45:02 -07:00
Clint Rutkas
5b02501038 Merge pull request #41 from microsoft/dev/crutkas/fixCircularReference
change nuget package to msft for winrt compat
2020-04-03 14:37:04 -07:00
Enrico Giordani
c3a98b265f Add basic telemetry to WindowWalker (#1925) 2020-04-03 13:31:43 -07:00
Clint Rutkas
b92bcd1789 change nuget package to msft for winrt compat 2020-04-03 13:07:27 -07:00
Jeremy Wu
949e504ad5 Cherry picked pinyin performance changes from jjw24's master branch 2020-04-03 12:31:18 -07:00
Divyansh
293a8a8199 Working App execution 2020-04-03 12:02:57 -07:00
PrzemyslawTusinski
2806c386d3 fancyzones unity3d crash fix (#1914)
* fancyzones unity3d crash fix

* intelisence warning fix, and review issue fix

* Fix for review comment
2020-04-03 11:17:12 -07:00
Heiko
75f3a30d38 changed info text in search box (#1917)
I have changed the info text in search box to indicate the user also can search for windows.
2020-04-03 11:07:34 -07:00
Andrey Nekrasov
7cfe74b384 runner: implement automatic MSIX package uninstallation on startup (#1920) 2020-04-03 18:51:28 +02:00
udit3333
38d537bb8a Fix preview handlers failing unit tests in CI (#1856)
* Enable Unit tests for PreviewPane Test Assemblies in CI

* Added Preview handlers unit tests project back

* throw for Svg to debug tests

* Removed failing test

* Removed throw statement

* Added MD unitests in yml

* Run ui tests on STA thread

* Throw svg to debug failing tests

* Updated test adaptor

* Removed failing test to validate CI

* throw svg failing test with full stack trace

* Check if mock stream is causing the issue

* narrow down the failing tests code - 1

* narrow down the failing tests code -2

* dispose all controls

* Restore SVg preview control

* Update test adaptor and dependency to latest
2020-04-03 08:12:12 -07:00
Divyansh
b6f927c454 Added callback function for mouse click on search result 2020-04-02 18:08:02 -07:00
Alekhya Reddy
57c616abfe Remove console print statement 2020-04-02 18:03:40 -07:00
Alekhya Reddy
ad6ca65d4b windows indexer plugin is working 2020-04-02 17:49:43 -07:00
Alekhya Reddy
38490195e3 Corrected the output path for the indexer plugin 2020-04-02 15:55:30 -07:00
Alekhya Reddy
6a43b8b159 copy resource files to output folder 2020-04-02 15:53:39 -07:00
Clint Rutkas
a760acc399 Update README.md 2020-04-02 15:05:50 -07:00
Yevhenii Holovachov
cea5668a9f Disabling powertoy only if it's explicitly off (#1888)
* Disabling powertoy only if it's explicitly off
2020-04-02 21:39:40 +03:00
Divyansh
d73ab36dc3 Optimised result binding by inserting search result from multiple plugin in parallel 2020-04-02 10:30:57 -07:00
Betsegaw (Beta) Tadele
5c01e0e852 Set focus on text box control on hotkey invoke (#1859) 2020-04-02 10:24:44 -07:00
Divyansh
5a13850043 Fixed issue with wpf marshalling events to a non UI thread 2020-04-02 10:10:36 -07:00
Geert van Horrik
96fbc968ef Support device names with underscores (such as 'Default_Monitor') in JSONHelpers.isValidDeviceId (#1826)
* #1821 Support device names with underscores (such as 'Default_Monitor') in JSONHelpers.isValidDeviceId

* Make support for '#' in device names optional

* Add more unit tests for isValidDeviceId
2020-04-02 18:51:36 +02:00
Clint Rutkas
cf26a5da3d Update README.md 2020-04-01 14:23:16 -07:00
Clint Rutkas
3e21758aac Update README.md 2020-04-01 14:22:46 -07:00
Clint Rutkas
942799637e Update README.md 2020-04-01 14:22:07 -07:00
Clint Rutkas
07dd33f6de Update README.md 2020-04-01 11:57:05 -07:00
Clint Rutkas
a924af79c1 Update README.md 2020-04-01 11:56:24 -07:00
Arjun Balgovind
2422ca0847 Added unlocalized english strings to all string tables in Image Resizer (#1844) 2020-04-01 11:44:15 -07:00
Charles Pigott
5b900e7b9c off of -> on (#1842) 2020-04-01 10:30:27 -07:00
Clint Rutkas
8539a297fa Update README.md 2020-04-01 08:40:26 -07:00
Enrico Giordani
b6b873f699 Now working on 0.16.1 (#1835) 2020-04-01 17:27:13 +02:00
udit3333
94ccabd5ce Update file explorer readme (#1780)
* Updated readme

* Updated readme for file explorer module and demo gif

* Updated figure description

* Fixed typo

* Moved the localizaton instruction to separate file

* Updated coding guidance readme
2020-04-01 08:26:19 -07:00
Seraphima Zykova
ea18fa95ad Tests updates (#1793)
* updated tests for v0.16.0
Co-Authored-By: Yevhenii Holovachov <55396981+yevhenii44@users.noreply.github.com>
2020-04-01 17:05:01 +03:00
Betsegaw Tadele
b5f2c8b583 [Window Walker] Enable tabbing to scroll (#1814)
* Enable tabbing to scroll

* Also handle Shift + Tab
2020-04-01 06:09:37 -07:00
PrzemyslawTusinski
90a228619e Version helper compare operator fix (#1824)
* Version helper compare operator fix

* Simplyfy compare code
2020-04-01 13:30:21 +02:00
Seraphima Zykova
a6b7ba41ee removed tests with unused scenario that slowdown CI (#1820) 2020-04-01 13:12:29 +03:00
Clint Rutkas
bef8c846f8 Update README.md 2020-03-31 16:53:47 -07:00
Divyansh
ce2bf5ac53 Fixed exception preventing result display 2020-03-31 15:25:23 -07:00
Clint Rutkas
2fec555756 Update README.md 2020-03-31 12:58:38 -07:00
Clint Rutkas
2faaad6d3d Update README.md 2020-03-31 10:54:45 -07:00
Clint Rutkas
3a4b970c62 Main readme for 0.16 - DO NOT MERGE (#1759)
* Prep work for 0.16

* 0.16 notes first draft

* Update README.md

* small tweak
2020-03-31 10:48:42 -07:00
Clint Rutkas
05491309c2 When / why PowerToys needs to run elevated docs (#1790)
* initial doc work

* rename file to match current naming, got images working

* adjusting the "keep us functioning" section sooner

* Update run-as-admin-detection.md
2020-03-31 10:33:10 -07:00
Seraphima Zykova
e122217101 Editor custom layouts tests (#1757) 2020-03-31 15:15:51 +03:00
ryanbodrug-microsoft
81eb7de665 Adding Directory.Build.targets file to kill the PowerLauncher pprocess on Build or Clean operations of all 'Launcher' projects. 2020-03-30 19:17:01 -07:00
Barbara Kudiess
c9fe2f649a Added binding on searchBox 2020-03-30 17:58:24 -07:00
Divyansh
6dd13e4939 Updated bindings for launcher 2020-03-30 16:27:26 -07:00
Divyansh
6cc00a5a0f changed x:bind to Binding to avoid reference 2020-03-30 15:52:20 -07:00
Brice Lambson
5661be3ebd Clarify "fallback encoder" (#1788) 2020-03-30 15:35:44 -07:00
ryanbodrug-microsoft
59a2c5ce9c Merge pull request #28 from microsoft/user/ryanbod/rename_wox
Renaming Wox references
2020-03-30 11:30:17 -07:00
ryanbodrug-microsoft
73a7adea63 Using proper executable name when closing 'PowerLauncher' process 2020-03-30 09:34:58 -07:00
vldmr11080
3896384339 Set window walker overview link (#1772) 2020-03-28 19:58:39 +01:00
Clint Rutkas
3028e70a0f fixes for WindowWalker (#1767)
* #1744, #1743, #1742

* disabling commands
2020-03-27 16:25:49 -07:00
Barbara Kudiess
64416aef2b Add main view model binding 2020-03-27 16:10:49 -07:00
Arjun Balgovind
e0340dadf4 tweaked image resizer strings (#1764) 2020-03-27 15:53:03 -07:00
Barbara Kudiess
83e0cdfa1e Add missing reference 2020-03-27 15:47:54 -07:00
Divyansh
22ed3c0ca5 Added assets and behaviours 2020-03-27 15:42:25 -07:00
Barbara Kudiess
f95bc17e39 Replace Niels Code references 2020-03-27 15:32:37 -07:00
Divyansh
64a4451868 Added Neils UI code 2020-03-27 15:20:42 -07:00
stefansjfw
ead47b2aa2 Remove unneded assignments (#1755)
* Remove uneeded assignments

* Use const iterators
2020-03-27 23:12:41 +01:00
udit3333
3e9e6c3e73 Added overview link (#1762) 2020-03-27 15:10:56 -07:00
Barbara Kudiess
b8e957ff9a adding support for xaml islands 2020-03-27 15:04:34 -07:00
Arjun Balgovind
2aa12631f8 Changed default value of m_enabled (#1756) 2020-03-27 14:35:42 -07:00
ryanbodrug-microsoft
7feaa505c2 Renaming AppData directory from 'Wox' to 'PowerLauncher'. Also replacing issue link with powertoys github. 2020-03-27 14:11:00 -07:00
ryanbodrug-microsoft
b0e6e31d92 Renaming executable to PowerLauncher. Replaceing icons with placeholder. Deleting Docs folder 2020-03-27 14:11:00 -07:00
Arjun Balgovind
068e803bc8 Added GetEnabled in constructor (#1753) 2020-03-27 13:53:21 -07:00
Arjun Balgovind
a4749d376a Removed registry writing code (#1748) 2020-03-27 13:52:54 -07:00
Barbara Kudiess
71992f5b17 Merge pull request #18 from microsoft/dotnet-core-upgrade
.NET Core Upgrade
2020-03-27 13:38:37 -07:00
Clint Rutkas
3897fc5666 Update README.md 2020-03-27 11:42:52 -07:00
Clint Rutkas
315b303b4f Create README.md 2020-03-27 11:41:47 -07:00
Barbara Kudiess
d665c37bc3 Adding dependency 2020-03-27 11:30:44 -07:00
Barbara Kudiess
c5df7d4249 Merge branch 'master' into dotnet-core-upgrade
# Conflicts:
#	src/modules/launcher/Wox.Core/Wox.Core.csproj
2020-03-27 10:25:39 -07:00
Andrey Nekrasov
c5988e412d Bump PowerToys version 🥳 (#1739) 2020-03-27 18:26:07 +03:00
PrzemyslawTusinski
f2744493b9 Dragging to another monitor doesn't activate fancy zone placement fix (#1736) 2020-03-27 16:09:37 +01:00
Ivan Stošić
a6793588c6 Fixed some recent compiler warnings (#1734) 2020-03-27 16:01:24 +01:00
Andrey Nekrasov
958198b65a Settings: fix broken "Restart as administrator" button (#1733) 2020-03-27 17:38:58 +03:00
Ivan Stošić
5605256c75 Prevent Window Walker from having multiple running instances (#1729)
* Prevent Window Walker from having multiple running instances

* Removed "Global" to allow multiple users to run Window Walker
2020-03-27 15:24:27 +01:00
Enrico Giordani
35c7124617 Add Window Walker icon (#1731) 2020-03-27 15:17:36 +01:00
Seraphima Zykova
f124cd9c7e Disabled FancyZones unit tests related to disabled features (#1728) 2020-03-27 15:40:41 +03:00
PrzemyslawTusinski
f9a756d1ff FancyZones editor display zone numbers & PowerRename fix (#1726)
* Fix for issue #1218

Design Change: Default Enter Action

* Fix for issue #1085

* change zone's number color and font
remove the light blue background

* Fix for disappearing zone number in editor

* Grid layout reversed order fix

Co-authored-by: sqrlmn <sqrlmn@users.noreply.github.com>
Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
2020-03-27 13:07:19 +01:00
Andrey Nekrasov
0aeecc7a99 MSI: sign remaining binaries (#1725) 2020-03-27 14:56:45 +03:00
Andrey Nekrasov
3646e6ea13 MSI: add WindowWalker module (#1723)
* MSI: add WindowWalker module
2020-03-27 14:35:01 +03:00
Andrey Nekrasov
d2a60c7287 FZ: disable flash zones option for 0.16 (#1721)
* FZ: disable flash zones option for 0.16

* fixup! review comments
2020-03-27 13:24:27 +03:00
yuyoyuppe
e794604cae settings: add "Learn more about Admin mode" link 2020-03-27 13:23:37 +03:00
yuyoyuppe
60fa6071b9 FZ: warn w/ a toast if an elevated window cannot be dragged and offer learning more 2020-03-27 13:23:37 +03:00
Alekhya
cdad6f74cf Merge pull request #27 from microsoft/UpdateConfigsTox64
Update configs tox64
2020-03-26 18:20:17 -07:00
Alekhya Reddy
549de55b57 Removed anycpu of test proj 2020-03-26 18:05:07 -07:00
Alekhya Reddy
686432aa8a Remove anyCPU config and changed it to x64 2020-03-26 18:03:42 -07:00
Divyansh Srivastava
c2e219b446 Display infobar for blocked relative image path (#1695)
* Updated Parsing extension to show infobar when relative URL isblocked and updated corresponding tests

* Updated Controller to display infobar when html img tag is embedded in markdown
2020-03-26 15:17:28 -07:00
udit3333
15cefc664a Svg Icon for Power preview module (#1718)
* Added svg icon for power preview

* Updated bundle.js
2020-03-26 13:58:52 -07:00
Betsegaw Tadele
38fc9f00a2 Kill WW app on exit (#1699)
Co-authored-by: Beta Tadele <betadele@microsoft.com>
2020-03-26 13:43:01 -07:00
ryanbodrug-microsoft
2673b9dd03 Merge pull request #25 from microsoft/user/ryanbod/adding_build_dependency_on_woxlauncher_and_plugins_on_wox
Updating build dependencies.  Wox.Launcher wasn't built as part of th…
2020-03-26 13:17:35 -07:00
Arjun Balgovind
ff6c86b932 Set the fill property to currentColor in the Image Resizer svg (#1714) 2020-03-26 11:25:51 -07:00
PrzemyslawTusinski
c247e49c2a Fancy zones on all monitors - when dragging window to another monitor sometimes zone stays marked as active on previous FIX (#1709) 2020-03-26 17:48:01 +01:00
Andrey Nekrasov
0c0dddab12 chore: fix WinRT-related warnings (#1710) 2020-03-26 16:31:59 +03:00
Andrey Nekrasov
1c39b76b83 MSIX: update PowerRenameUWPUI path (#1708) 2020-03-26 15:25:19 +03:00
Seraphima Zykova
f72dd7fdb6 added telemetry for editor launch event (#1705) 2020-03-26 13:54:12 +03:00
stefansjfw
5a5b5292a1 Order PowerToys aplhabetically Settings (#1706)
* Order PowerToys aplhabetically in both Settings list and General Settings enable's list

* Remove uneeded include
2020-03-26 11:51:05 +01:00
ryanbodrug-microsoft
d6fce7c099 removing locks from the ResultListBox code behind file. All callbacks are accessed from the Main/UI thread. 2020-03-25 16:34:56 -07:00
Alekhya
93e2cc367b Merge pull request #21 from microsoft/removePythonDependency
Remove python dependency in Wox code
2020-03-25 16:30:10 -07:00
ryanbodrug-microsoft
de3ee932b6 Updating build dependencies. Wox.Launcher wasn't built as part of the F5 Experience, and nor were the plugins 2020-03-25 15:46:34 -07:00
Barbara Kudiess
b051a3981d Merge branch 'master' into dotnet-core-upgrade
# Conflicts:
#	src/modules/launcher/Wox/Wox.csproj
2020-03-25 14:40:41 -07:00
ryanbodrug-microsoft
ed3b4088d9 Merge pull request #24 from microsoft/user/ryanbod/add_wox_build_dependency_to_runner
Adding dependency to wox project on the runner.  This should make sur…
2020-03-25 13:25:15 -07:00
ryanbodrug-microsoft
2aae667e15 Adding dependency to wox project on the runner. This should make sure the wox.exe can be build and launched by the runner so wox can run as a background process. 2020-03-25 11:46:07 -07:00
Alekhya
a6604172d9 Merge pull request #23 from microsoft/portIndexerPlugin
Port indexer plugin to .NET Core 3.1
2020-03-25 11:06:43 -07:00
vldmr11080
e85427f1da Disable Win+Ctrl+Number feature for 0.16 release (#1689) 2020-03-25 18:32:33 +01:00
ryanbodrug-microsoft
572a121492 Merge pull request #22 from microsoft/user/ryanbod/remove_throw_from_log_exception_in_debug
Remove code to rethrow exceptions in debug
2020-03-25 09:28:14 -07:00
PrzemyslawTusinski
f8f7fe4f33 Fancy zones ui update( zone numbering as numbers, dragged window transaprency option, zone coloring customization) (#1666)
* Fancy zones ui update (#4)

* Draft of numeric fancyzones with numbers

* Added support for zone color configuration, improved zone number display

* Changed order of settings to more logical

* Added option to edit zone border color

* Trancparency of dragged window, transparency of displayed zones, changed font of zone numbers

* Fix for compilation

* Some refactor

* Introduced gdiplus to draw zone and zone index

* Fix for dissappering windows

* Some fixes

* another merge fix

* another merge fix

* Unit test merge fix

* Transparency with show zones on all fix

* indentation fix

* Fix for failing test

* Changed order of color pickers

* "Zone Opacity"

* Zone opacity (%)

* Added option to turn off dragged window transparency, changed default zones color values
2020-03-25 15:38:44 +01:00
stefansjfw
b835716e36 Set PowerRename context menu hotkey to 'w' (#1673) 2020-03-25 11:12:38 +01:00
stefansjfw
1476395829 Enable non-ascii chars (#1669)
* Enable non-ascii chars

* Follow file naming policy

* Use stream read and write methods

* Remove obsolete close() calls

* Revert "Remove obsolete close() calls"

This reverts commit 7006bcb038.

* Revert "Use stream read and write methods"

This reverts commit ec06a1a05b.
2020-03-25 11:11:27 +01:00
stefansjfw
8156279025 Use JsonSerializer instead of Utf8Writer (#1670)
* Use JsonSerializer instead of Utf8Writer

* Rename method
2020-03-25 11:11:18 +01:00
Alekhya Reddy
1822f36aba Changed the anyCPU config to x64 for windows indexer plugin 2020-03-24 16:27:49 -07:00
udit3333
7f1a854769 Update settings logic for file explorer preview (#1651)
* Update logic of settings for File Explorer preview

* Updated logic and added Unit tests

* Fix compiler warning for powerpreview project

* Update enable logic

* Update Disable logic

* Updated telemetry events
2020-03-24 16:23:27 -07:00
Alekhya Reddy
0c8e3515fe readding the plugin.json file 2020-03-24 16:18:26 -07:00
Alekhya Reddy
5b5f48014b Removed the .net framework indexer folder 2020-03-24 16:15:58 -07:00
Alekhya Reddy
d9e1dce393 Added the test project back 2020-03-24 16:13:02 -07:00
Alekhya Reddy
79fd5dc7b1 Ported Indexer plugin to .net core 3 2020-03-24 16:07:17 -07:00
ryanbodrug-microsoft
7183bea412 All wox exceptions in debug are getting rethrown, and thus causing the app to crash. This change removes the debug specific code and allows exceptions to be handled the same was as release. 2020-03-24 16:01:37 -07:00
Barbara Kudiess
6e2ad28676 Fix internal variable 2020-03-24 14:21:06 -07:00
Barbara Kudiess
444b0b30c3 Undo change internal 2020-03-24 14:07:52 -07:00
Barbara Kudiess
cdef2dee5a deleting unused project files 2020-03-24 13:54:06 -07:00
Barbara Kudiess
a1036577a2 Fix Wox build in project settings 2020-03-24 13:37:49 -07:00
Arjun Balgovind
badcccab76 Added icon for Image Resizer in PowerToys Settings (#1662)
* Added PictureStretch icon for Image Resizer

* Changed to old hash font setting

* Fixed missing icon

* Reverted changes on subset and settings files

* Added Image resizer svg icon
2020-03-24 11:32:01 -07:00
vldmr11080
9e8facaa6f Windows snap hotkeys to move windows between screens (#1603)
* When moving window into zones using arrow keys, support multi-monitor scenario

* Minor coding style adjustments

* Split implementation into separate functions because of readability

* Rename certain arguments

* Modify unit tests after API changes

* Address PR comments and add unit tests

* Return true from MoveWindowIntoZoneByDirection only if window is successfully added to new zone

* Improved monitor ordering (#1)

* Implemented improved monitor ordering v1

* Fixed some embarrassing bugs, added some tests

* Added one more test

* Extracted a value to a variable

* ASCII art in unit test comments describing monitor layouts

* Removed empty line for consistency

* Update comment to match the code

* Refactored tests, added tests for X,Y offsets

Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
2020-03-24 18:50:26 +01:00
Seraphima Zykova
7c0c75ca42 Editor templates tests update (#1667)
* added zone count tests
* fixed launch flag
2020-03-24 17:27:22 +03:00
Seraphima Zykova
e32d619677 Editor tests: apply templates (#1648)
* apply templates tests
* moved settings reset methods
2020-03-24 11:32:12 +03:00
pi1024e
6f2801cea8 C++ headers (#1660) 2020-03-24 08:51:23 +01:00
Barbara Kudiess
76d402fcfa Merge branch 'master' into dotnet-core-upgrade
# Conflicts:
#	src/modules/launcher/Plugins/Wox.Plugin.BrowserBookmark/Wox.Plugin.BrowserBookmark.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Calculator/Wox.Plugin.Calculator.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Color/Wox.Plugin.Color.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.ControlPanel/Wox.Plugin.ControlPanel.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Everything/Wox.Plugin.Everything.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Folder/Wox.Plugin.Folder.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Indexer/Properties/AssemblyInfo.cs
#	src/modules/launcher/Plugins/Wox.Plugin.Indexer/Wox.Plugin.Indexer.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.PluginIndicator/Wox.Plugin.PluginIndicator.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.PluginManagement/Wox.Plugin.PluginManagement.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Shell/Wox.Plugin.Shell.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Sys/Wox.Plugin.Sys.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.Url/Wox.Plugin.Url.csproj
#	src/modules/launcher/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj
#	src/modules/launcher/Wox.Core/Wox.Core.csproj
#	src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj
#	src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj
#	src/modules/launcher/Wox.Test/Wox.Test.csproj
#	src/modules/launcher/Wox/Wox.csproj
2020-03-23 17:28:10 -07:00
Arjun Balgovind
a55b0aeb5f Update Image Resizer Readme and add Settings Verbiage (#1661)
* Fixed rc file settings description string

* Added moved settings verbiage

* Updated Image Resizer readme

* Fixed section link

* minor changes to readme

* Fixed extra space

* Updated figures to markdown

* removed html center and img tags
2020-03-23 17:13:47 -07:00
Alekhya Reddy
75e5b1c7cd Manually resolving conflicts 2020-03-23 16:18:52 -07:00
Divyansh Srivastava
7af2f4a98a Merge pull request #20 from microsoft/somil55/removeSystemtray
Somil55/remove systemtray
2020-03-23 16:09:26 -07:00
udit3333
f50bcb981a Updated Preview handler readme for installation section (#1654)
* Updated Preview handler readme for installation section

* fix typo

* Added warning in MSIX installation section
2020-03-23 15:45:16 -07:00
Alekhya Reddy
08bcebfc1c Removed the localized string translations from pythonDirectory and SelectPythonDirectory 2020-03-23 15:38:35 -07:00
Alekhya Reddy
ae31ecf706 Remove python bindings 2020-03-23 15:35:06 -07:00
Alekhya Reddy
4dac1ae9f8 Removed UI related to python path and the bindings related to that 2020-03-23 15:33:39 -07:00
Alekhya Reddy
db253cdaf8 Removed python path and python plugin functions 2020-03-23 15:23:09 -07:00
Divyansh
4b05929dd5 Readded necessary callback functions 2020-03-23 14:54:11 -07:00
Divyansh
7c174b9c05 Removed setting UI XAML file and references 2020-03-23 14:37:43 -07:00
Arjun Balgovind
82596b9c3f MSIX: Fix for Heap Corruption bug in ImageResizer (#1655) 2020-03-23 12:14:03 -07:00
Divyansh
6414fe8cf8 Removed notify icon component 2020-03-23 12:13:13 -07:00
Alekhya
8e2b18ea1d Merge pull request #19 from microsoft/removePluginsSourceTree
Remove plugins from source tree and convert anyCPU config to x64
2020-03-23 10:56:18 -07:00
Alekhya
c57b55ede6 Merge pull request #15 from microsoft/terminateLauncher
Terminate wox when we exit PowerToys
2020-03-23 08:53:54 -07:00
Seraphima Zykova
72a0341a0e Editor templates tests (#1639)
* edit-cancel tests for templates
* edit-save tests for templates
2020-03-21 16:35:23 +03:00
Alekhya Reddy
98b9503461 set optimize code to false 2020-03-20 17:31:27 -07:00
Alekhya Reddy
417310b5c5 Set warning level 4 : Debug 2020-03-20 17:23:09 -07:00
Alekhya Reddy
08d0db87d1 Set warning level to 4 : Release 2020-03-20 17:19:13 -07:00
Alekhya Reddy
18bf1400a7 Added the build paths for release x64 (removed AnyCPU) 2020-03-20 17:05:58 -07:00
Alekhya Reddy
3b3dca4a26 Removed the AnyCPU config - Debug 2020-03-20 16:53:47 -07:00
Alekhya Reddy
82ee5bf1fd Added x64 for all Wox project - Debug mode 2020-03-20 16:40:39 -07:00
Alekhya Reddy
398666a8b4 Merge branch 'master' of https://github.com/microsoft/Launcher into terminateLauncher 2020-03-20 16:20:50 -07:00
Barbara Kudiess
7d1e60a019 Fix postbuild event 2020-03-20 15:01:38 -07:00
bkudiess
d7736f798b add missing files 2020-03-20 14:51:02 -07:00
Alekhya Reddy
c20be3dbea Removed unnecessary plugins from source tree 2020-03-20 14:46:11 -07:00
Andrey Nekrasov
e52c5d38d3 Cleanup project output/intermediate dirs (#1640)
* sln: set output dir prefix to "modules\" for all modules

* sln: CopyToOutputDirectory only when necessary

* sln: intermediate dir for csprojs

* sln: intermediate dir for vcxprojs

* sln: add PT as runner project deps + remove nonexisting project confs

* sln: remove AnyCPU for win-app-driver project
2020-03-20 21:41:48 +03:00
Clint Rutkas
6662cf6245 Verbage changes, including #1274 (#1629)
* verbage changes

* lower cased extention

* fixing oops
2020-03-20 11:31:59 -07:00
bkudiess
0f78f1b333 Copy from Jeremy's fork PR 2020-03-20 09:43:42 -07:00
Alekhya
2efe58209f Merge pull request #7 from microsoft/windowsIndexerPlugin
Windows indexer plugin
2020-03-20 08:38:41 -07:00
udit3333
d420fad489 Add info bar if blocked elements present in Svg (#1620)
* Added logic to check for blocked elements

* Added unit tests

* Fix warnings from msi solution
2020-03-20 08:28:47 -07:00
vldmr11080
49868d8f7c Fix migration of rows and columns percents from registry (#1641) 2020-03-20 13:48:24 +01:00
Yevhenii Holovachov
dee6dc1e6c Added zone count test and "WaitElementBy..." methods (#1645) 2020-03-20 12:47:57 +02:00
Seraphima Zykova
35054c1f59 Editor opening tests (#1633)
* editor opening tests
* moved fancy zones opening method
* moved settings restore to base class
* changed launch
* fixed tray button search 
* added exit function
2020-03-19 19:25:51 +03:00
Enrico Giordani
f507ef5e56 Update dev doc github workflow (#1618) 2020-03-19 17:10:25 +01:00
vldmr11080
57f763b0b6 Check key existance before getting it from JSON (#1632) 2020-03-19 09:21:10 +01:00
Alekhya Reddy
7a3c326442 Code to terminate wox when we exit PowerToys 2020-03-18 16:13:36 -07:00
Alekhya Reddy
1842c9ed3b Merge branch 'master' of https://github.com/microsoft/Launcher into windowsIndexerPlugin 2020-03-18 14:53:41 -07:00
Alekhya
855f092682 Merge pull request #4 from microsoft/launcherInRunner
Added wox to the runner of PowerToys
2020-03-18 14:05:37 -07:00
Alekhya Reddy
cafe267bf0 Removed commented out code 2020-03-18 13:57:01 -07:00
Clint Rutkas
81710ff3b0 update bundle with fixes (#1608) 2020-03-18 09:52:08 -07:00
Ivan Stošić
1c90107571 Implement canceling edits in FZE, fix crashes related to canceling. (#1610)
* Implemented proper canceling for CanvasEditor

* Implemented proper canceling for GridEditor

* Possible fix for a crash in my implementation of canceling

* Fixed a crash in FZE/Grid editor
2020-03-18 14:13:25 +01:00
vldmr11080
ff0c021162 Check if settings file is open before parsing JSON content from it (#1616) 2020-03-18 11:17:57 +01:00
Alekhya Reddy
ca916deda9 Made the code unit testable and added unit tests for the indexer plugin 2020-03-17 15:37:30 -07:00
Betsegaw Tadele
f0f044b766 Add Window Walker to module list (#1613) 2020-03-17 15:19:36 -07:00
Alekhya Reddy
69758b80a5 Refactored the code to make it unit testable 2020-03-17 11:28:21 -07:00
stefansjfw
98ed178d7b Double-qoute the paths when passing them as cmd args (#1604) 2020-03-17 18:12:32 +01:00
Seraphima Zykova
419fc15d77 WinAppDriver tests (#1371)
* added test project
* added FancyZonesSettings tests
2020-03-17 18:03:02 +03:00
PrzemyslawTusinski
72eb76191f Fixed issue with autostarting as admin even if it should as user, fixed issue with autostart permissions bug (#1538)
* Fixed issue with autostarting as admin even if it should as user, fixed permissions issue for autostart configuration

* Indentation fix

* Added support for all cases of autostart task modifying

* Fix for compilation
2020-03-17 11:04:45 +01:00
Alekhya Reddy
7164260f6e Modified the output paths to create the dll for the plugin in the correct location 2020-03-17 06:07:21 +05:30
Alekhya Reddy
f5e474f250 Added plugin.json to the project 2020-03-17 06:03:11 +05:30
Alekhya Reddy
9a84fc5b47 Minor changes in project files 2020-03-17 06:01:34 +05:30
Alekhya Reddy
248a689de2 Added the plugin.json file 2020-03-17 06:01:05 +05:30
Alekhya Reddy Kommuru
4da33b81fd Added the image 2020-03-16 17:25:04 -07:00
Alekhya Reddy Kommuru
657a1aaed5 Added the images folder which contains the windows indexer icon 2020-03-16 14:58:25 -07:00
Alekhya Reddy Kommuru
415b7bf4d1 Added references and renamed a class 2020-03-16 14:45:37 -07:00
Clint Rutkas
d8c1cb2629 fix for #1595 (#1598)
* fix for #1595

tweaking this fixed it.

* Update msi_to_msix_upgrade_lib.vcxproj
2020-03-16 14:43:58 -07:00
Alekhya Reddy Kommuru
ea75a56d33 Added the main and settings file which declare most of the plugin interfaces 2020-03-16 14:42:40 -07:00
Alekhya Reddy Kommuru
8e45c41f20 Created a helper class to use indexer and return search results 2020-03-16 14:37:28 -07:00
Alekhya Reddy Kommuru
dacd13ee30 Added a SearchResult Helper class 2020-03-16 14:30:38 -07:00
Seraphima Zykova
f49727e0b6 Invalid json test cases + strings validation (#1558)
* added tests for invalid json types
* guid strings validation
* device id validation
2020-03-17 00:29:13 +03:00
dependabot[bot]
1fc67984a2 Bump acorn from 5.7.3 to 5.7.4 in /src/settings-web (#1588)
Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-16 10:24:45 -07:00
Ivan Stošić
2cc6d2ef11 Fixed some compiler warnings (#1577)
* Fixed some compiler warnings

* Changed long to int
2020-03-16 17:54:30 +01:00
Alekhya
40cc4f32d0 Merge pull request #2 from microsoft/updateREADME
Update readme
2020-03-16 09:18:41 -07:00
Alekhya Reddy Kommuru
9537dd793d Localized the strings of Launcher 2020-03-16 08:34:26 -07:00
Enrico Giordani
96a7e4f7ac disable unit tests in CI (#1592)
due to continue failures in CI for no apparent reason.
2020-03-16 16:19:13 +01:00
Alekhya Reddy Kommuru
16d1245b64 changed the name to be displayed from Wox.Launcher to Launcher 2020-03-16 08:03:53 -07:00
Alekhya Reddy Kommuru
06eac367f2 modified the additional include directories for the release version 2020-03-16 08:01:00 -07:00
Alekhya Reddy Kommuru
78a6ab89f9 Readded the reference to common 2020-03-16 07:55:51 -07:00
Alekhya Reddy Kommuru
f77bacb8a6 added the wox launcher dll 2020-03-16 07:55:27 -07:00
Alekhya Reddy Kommuru
94387e8698 added functions to remove the abstract class error 2020-03-16 07:46:56 -07:00
Alekhya Reddy Kommuru
aebdc0c5d6 Added launcher to runner 2020-03-16 07:45:01 -07:00
Alekhya Reddy Kommuru
113c39c11c added shellapi header 2020-03-16 07:38:35 -07:00
Alekhya Reddy Kommuru
078656fb8b Added the code to launch another process 2020-03-16 07:38:12 -07:00
Alekhya Reddy Kommuru
c4b49ce6cd Added launcher project and changed references to common 2020-03-16 07:34:05 -07:00
udit3333
97e98d2725 Remove failing Svg Preview Handler Unit Tests in CI (#1583)
* Commented out failing unit tests and changed the output directory of unit tests project

* Enabled Assembly redirect

* removed SvgPreviewHandlerUnitTests and PreviewPaneCommonUnitTests from the solution

* Removed the commented code project itself is removed from sln
2020-03-16 13:34:16 +01:00
Yevhenii Holovachov
02857d1b7f Some refactoring of FancyZones::IsInterestingWindow and added Unit Tests (#1521)
* Some refactoring of FancyZones::IsInterestingWindow and added UnitTests
2020-03-16 14:25:30 +02:00
Ivan Stošić
04027b9c32 Temporarily removed a test with huge running time on Azure (#1591) 2020-03-16 13:18:19 +01:00
Enrico Giordani
969d71b264 Fix for build break (#1573) 2020-03-13 19:40:28 +01:00
Alekhya
174789e2e1 Merge pull request #1 from microsoft/integrateWox
Integrate Wox projects into PowerToys
2020-03-13 11:33:50 -07:00
Alekhya Reddy Kommuru
eb535acb95 minor modifications in README 2020-03-13 11:29:50 -07:00
Alekhya Reddy Kommuru
5540c8b06f updated README with setup, build launcher and pull code from other repositories 2020-03-13 11:25:53 -07:00
Clint Rutkas
8c17d825d9 moving the license.rtf file out of the root dir. compiled both msix and msi and both worked. (#1565) 2020-03-13 08:48:24 -07:00
PrzemyslawTusinski
0af6348913 Fancy zones: show active layouts on all monitors (#1553)
Added option to show fancy zones on all monitors with layouts simultaneously
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
2020-03-13 15:56:23 +01:00
Andrey Nekrasov
0ac6c01d65 runner: simplify powertoy_module interface (#1560) 2020-03-13 12:55:15 +03:00
Seraphima Zykova
4c1dfbaddd Run unit tests in CI (#1568) 2020-03-13 12:53:55 +03:00
Alekhya Reddy Kommuru
258acfdf5a fixing merge conflicts 2020-03-12 16:03:40 -07:00
Microsoft Open Source
d875dab29b Initial SECURITY.md commit 2020-03-12 14:43:34 -07:00
Microsoft Open Source
1f9b2cd48c Initial README.md commit 2020-03-12 14:43:33 -07:00
Microsoft Open Source
6ee4a6a5b4 Initial LICENSE commit 2020-03-12 14:43:32 -07:00
Microsoft Open Source
4989396abc Initial CODE_OF_CONDUCT.md commit 2020-03-12 14:43:30 -07:00
Andrey Nekrasov
398b7a5a25 MSIX: add debug configuration option for package building (#1561) 2020-03-13 00:37:30 +03:00
Clint Rutkas
3e267bc77a simplifying CoC and point to CoCmd 2020-03-12 13:48:38 -07:00
Arjun Balgovind
d84cc370c9 Merge ImageResizer into master (#1469)
* Import Image Resizer for Windows

* getting code analysis and stylecop hooked in

* upgrading to 4.7.2

* adding copyright

* getting stuff to work

headers and trailing commas

adding braces

updated encoder

* Revert "getting stuff to work"

This reverts commit 5310866120.

* update to .net 4.7.2

* access modifier

* zero errors

* Fixed unit tests not running issue

* Fixed ImageResizer.Test stylecop warning

* Formatted ShellExtensions project with clang-format

* Fixed annotation warnings

* Suppressed 6031 and 26812 warnings for specific lines

* Shifting ImageResizer projects to PowerToys solution (#1054)

* Shifted ImageResizer projects to PowerToys solution: Builds, all tests pass, ImageResizer C# project works independently

* Deleted extra files

* Deleted nuget config file and fixed code analysis paths

* Convert ImageResizer to a PowerToy (#1073)

* Updated vcxproj file with common project references and cpp version flags

* Added module template code to dllmain and updated headers for successful build

* Removed unnecessary include

* Added dll to runner and add fixes to show up in PT Settings

* Added settings file

* Added support for enabling/disabling based on PowerRename codebase

* Fixed missing braces

* Fixed call_custom_action

* Add ImageResizer to msi installer (dev/imageResizer) (#1094)

* Updated vcxproj file with common project references and cpp version flags

* Added module template code to dllmain and updated headers for successful build

* Removed unnecessary include

* Added dll to runner and add fixes to show up in PT Settings

* Added settings file

* Added support for enabling/disabling based on PowerRename codebase

* Fixed solution file configurations

* Removed Any CPU from ImageResizer csprojs

* Renamed registry writing and removed build time registry addition

* Added ImageResizer installation details to msi

* Fixed comment on conditions to close explorer.exe

* Sync dev/imageResizer with master (#1105)

* tweaking language

* adjusting elevated permission verbiage to match Windows

* npm audit fix to update stuff

* slight bump for fabric ui

* Remove unwanted files (#1037)

Add temp build files to gitignore

* Ensure previous search and replace texts are evaluated and updated in the UI at startup (#1043)

Ensure stored settings get evaluated after initial enumeration

There was a bug where the list view was not getting updated with the results of the search and replace on launch when we are using a stored search or replace text from a previous session.

* adding fancy zone opacity setting, enhancement #631 (#1008)

* adding fancy zone opacity setting, enhancement #631

* applying zone opacity setting to all zones during zone selection

* changing opacity setting to percentage

* runner: show message box when restarting with different elevation fails (#1061)

Also make the message box appear on top of the settings window.

* Fix misaligned display of zones in layout priview and grid editor (#1010)

Fix misaligned display of zones in layout preview and grid editor

* MSIX: Extract MSIX building functionality from msix_reinstall.ps1 to a separate script (#1068)

* MSIX: label PowerToys as Preview (#1090)

* MSIX: Code sign msixbundle (#1093)

* Update to MSIX README.md (#1095)

* Update README.md

few adjustments

* Update README.md

* Update README.md

* adding in privacy statement, removing About in dialog (#1087)

* adding in privacy statement, removing About in dialog

* added Preview

* Revert "Fix misaligned display of zones in layout priview and grid editor (#1010)" (#1097)

This reverts commit d03690cffd.

* Fix reversed order of zones in layout (#1071)

* Shifted three functions to common (#1101)

Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com>
Co-authored-by: Chris Davis <chrisdavis@outlook.com>
Co-authored-by: Yosef Durr <yodurr@microsoft.com>
Co-authored-by: Bartosz Sosnowski <bzoz@users.noreply.github.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: yuyoyuppe <yuyoyuppe@users.noreply.github.com>

* Revert "Sync dev/imageResizer with master (#1105)"

This reverts commit db7f15541f.

* Added icon to Resize pictures context menu entry (dev/imageResizer) (#1113)

* Updated vcxproj file with common project references and cpp version flags

* Added module template code to dllmain and updated headers for successful build

* Removed unnecessary include

* Added dll to runner and add fixes to show up in PT Settings

* Added settings file

* Added support for enabling/disabling based on PowerRename codebase

* Fixed solution file configurations

* Removed Any CPU from ImageResizer csprojs

* Renamed registry writing and removed build time registry addition

* Added ImageResizer installation details to msi

* Shifted to MII, TODO: Fix position

* Incorporated ImageResizer Icon in context menu entry

* Fixed typo

* Merged with dev/imageResizer

* Renamed Advanced Options to Settings and removed About tab (dev/imageResizer) (#1123)

* Removed about tab, renamed advanced opt to settings, changed assembly info

* Restored Resource designer file

* Reverted changes on AssemblyInfo

* MSI: Fix ImageResizer menu item position (dev/imageResizer) (#1114)

* Updated vcxproj file with common project references and cpp version flags

* Added module template code to dllmain and updated headers for successful build

* Removed unnecessary include

* Added dll to runner and add fixes to show up in PT Settings

* Added settings file

* Added support for enabling/disabling based on PowerRename codebase

* Fixed solution file configurations

* Removed Any CPU from ImageResizer csprojs

* Renamed registry writing and removed build time registry addition

* Added ImageResizer installation details to msi

* Shifted to MII, TODO: Fix position

* Incorporated ImageResizer Icon in context menu entry

* Changed registry entries to SystemFileAssociations and added index changes in InsertMenuItem

* Fixed extra newline

* Fixed merge conflict

* Refactor ImageResizer code base naming to match PowerRename (#1121)

* Created empty README file

* Renamed dll project

* Removed ShellExtensions references in src

* Fixed ImageResizerUI assembly name and added changes to MSI

* added the helper functions

* localized dllmain powerrename

* localized powerRenameExt

* localized the settings file

* built the proj

* Modified resourceIDs for strings in the table

* added common as a reference project

* Removed get_res_string_wchar and used the get_resource_string() function instead which returns a wstring typecast into wchar*

* Added new lines to the end of the file

* Removed string resources from the settings.cpp file

* rebuilt project PowerRename

* moved app name to constructor to init only once

* updated formatting of common.cpp

* reverting formatting of files

* Removed some IDs from resource file. Changed SHIFT to Shift

* Localizing C# Project of FancyZones (FancyZonesEditor) (#199) (#1122)

* removed hardcoded strings from CanvasEditorWindow.xaml

* removed hardcoded strings from GridEditorWindow.xaml

* loc

* Localized MainWindow

* reverting MainWindow.xaml as it is not rendering the window as expected

* Changed the resource settings from internal to public

* the culture is set based on the culture of the system UI set in the system settings

* Removed the french resource files used for testing

* Localized canvasWindow and mainwindow

* Removed setting the UI culture explicitly as it would be implicitly set to the culture of system UI

* Removed redundant header file

* Localize the Shortcut guide PowerToy (#199) (#1126)

* Localized shortcut_guide.cpp

* localized overlay_window.cpp

* formatting changes

* Localize overlay window

* removed the README link from the set of localized resources

* Typo: changed upper to lower

* Localize C++ Projects of FancyZones (#1130)

* localized dllmain.cpp  of fancyzones project

* localized FancyZones.cpp

* format fancyzones.rc file

* Moved SuperFancyZones back to being a string instead of having it in the resource file as it is the window class name

* reverted changes for window name

* Formatted fancyzones rc file

* Align zone dimensions from layout preview with those from grid editor (#1115)

* MSIX: add a dedicated .rc for UWPUI which joins both UI and DLL .rc's (#1139)

* Runner: fix restarting with same elevation (#1133)

* MSIX: reinstall script uses bundle instead of .msi to be able to reinstall in all cases

* Telemetry: add WebView init failure errors

* Settings: initialize COM security to allow communication between elevated Settings and WebView

* Common: implement on_scope_exit helper and typed_storage

* Changes for #1140 and #569 (#1152)

* MSIX build instructions adjustmnet (#1170)

* MSIX: hide the "Run at Startup" option if running as packaged

* MSIX: update identity name and publisher (#1176)

* Runner: fix startup task state setting for MSIX (#1181)

* Add ImageResizer to MSIX installer and make the code MSIX-compatible (#1219)

* Removed ImageResizer.exe location registry key

* Added working resize pictures to MSIX context menu without icon

* Fixed missing icon on MSIX build

* Added comments

* Changed to single context handler entry

* Made changes as per PR comments

* Localize ImageResizer (#1261)

* Removed hardcoded strings

* Added resource dlls to MSIX installer

* Save ImageResizer settings in JSON format (#1258)

* Combined settings files

* Added JSON settings functionality in PowerToys format with thread safety

* Reverting changes to csproj file

* Removed settings.settings and designer file and added target sdk tools to fix warning

* Added NewtonSoft Json package

* Added 3 tests

* Added propertychanged test

* Removed unused libraries

* Removed additional allocation statements in test

* Added comments on test

* Added one-time setup code

* Added Newtonsoft.Json.dll to MSI and MSIX installer

* Fixed copyright header

* Fixed folder location in MSIX

* Renamed jsonMutex to _jsonMutex

* Fixed line endings

* Created private setup functions and added Arrange, Act, Assert comments

* Created private setup functions and added Arrange, Act, Assert comments

* Suppressed copyright warning on AppFixture and enabled treat warnings as errors

* Added comments on Reload/AppFixture and added constructor andispose

* Added telemetry to ImageResizer Shell Extension code (dev/imageResizer) (#1272)

* Added telemetry to C++ ImageResizerExt

* Added Register and unregister calls

* Changed default enable setting

* Set startup location to center of the screen (ImageResizer) (#1452)

* Added ImageResizer resources.dlls to the MSI installer (#1448)

* Implemented fix for foreground issue for ImageResizer (#1434)

* Fixed conflict in installer README.md file

* Fixed conflict in bundle.js

* Auto-generate AssemblyInfo in ImageResizer (#1467)

* Updated assembly info

* Added auto-generation of AssemblyInfo.cs

* Fixed minor issues

* Remove the  License file since Notice.md have been added

* Fix errors due to resolving merge conflicts

Co-authored-by: Brice Lambson <brice@bricelam.net>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Arjun Balgovind <arbalgov@microsoft.com>
Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com>
Co-authored-by: Chris Davis <chrisdavis@outlook.com>
Co-authored-by: Yosef Durr <yodurr@microsoft.com>
Co-authored-by: Bartosz Sosnowski <bzoz@users.noreply.github.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: yuyoyuppe <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Alekhya Kommuru <alkommur@microsoft.com>
Co-authored-by: Alekhya <reddykalekhya@gmail.com>
Co-authored-by: yuyoyuppe <a.yuyoyuppe@gmail.com>
Co-authored-by: Udit Singh <udsing@microsoft.com>
2020-03-12 09:02:34 -07:00
udit3333
7f12288b2c Remove Constants from Debug config (#1549) 2020-03-12 08:18:56 -07:00
Andrey Nekrasov
20e89f21ff runner: only launch update threads when we know we won't be elevated and show windows for the child (#1537) 2020-03-12 10:59:10 +03:00
udit3333
bd2cf19ec1 Updated build definition link in readme (#1542) 2020-03-11 17:35:30 -07:00
Alekhya Reddy Kommuru
de47efdda5 Removed the unneeded plugins 2020-03-11 16:54:11 -07:00
Alekhya Reddy Kommuru
95231faa87 removed the tests for URL plugin 2020-03-11 16:53:57 -07:00
Alekhya Reddy Kommuru
567b846de1 Added the folder plugin 2020-03-11 16:41:08 -07:00
udit3333
83ce8a2197 [0.16]: Merge Preview Handlers in Master (#1516)
* 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>
2020-03-11 15:53:49 -07:00
Clint Rutkas
f170cef506 Create NOTICE.md 2020-03-11 15:46:48 -07:00
Alekhya Reddy Kommuru
c2d8ed271b Modified the post build script of wox infrastructure project 2020-03-11 14:49:07 -07:00
Alekhya Reddy Kommuru
e38224d758 Reverted the platform target to All CPU, was made x86 by mistake 2020-03-11 14:48:26 -07:00
stefansjfw
83901e5fbb Improve readability of EditorWindow (#1515) 2020-03-11 16:38:13 +01:00
Alekhya Reddy Kommuru
db05cc48e8 Modified output folder from Wox to launcher 2020-03-10 15:23:35 -07:00
Ivan Stošić
4632224e9b Fixed a Grid editor issue (#1308)
* Fixed a Grid editor issue

* Explained the fix in ExtendRangeToHaveEvenCellEdges

* Simplified code in ExtendRangeToHaveEvenCellEdges

* Removed redundant comment, more camelCase
2020-03-10 23:23:35 +01:00
Alekhya Reddy Kommuru
5684c450f4 Changed wox to launcher in the build events 2020-03-10 15:20:10 -07:00
Alekhya Reddy Kommuru
4bcf8215b6 Modified build paths for plugins in debug mode 2020-03-10 15:06:28 -07:00
Alekhya Reddy Kommuru
36a3b6f479 Modified the build paths for plugins in Release mode 2020-03-10 15:04:57 -07:00
Alekhya Reddy Kommuru
b31215c257 Changed release build paths of base projects 2020-03-10 15:02:52 -07:00
Alekhya Reddy Kommuru
1f558590a8 Changed the debug output file paths and build events for base projects 2020-03-10 15:01:21 -07:00
Alekhya Reddy Kommuru
ad5e2a3d0e Added the wox projects to the powerToys solution 2020-03-10 14:53:52 -07:00
Alekhya Reddy Kommuru
b26255e60a Add 'src/modules/launcher/' from commit '28acd466b352a807910cebbc74477d3173b31511'
git-subtree-dir: src/modules/launcher
git-subtree-mainline: 852689b3df
git-subtree-split: 28acd466b3
2020-03-10 14:15:29 -07:00
Enrico Giordani
852689b3df Now working on 0.15.3 (#1525) 2020-03-10 18:09:11 +01:00
Ivan Stošić
197bc54ac6 FancyZones editor magnetic snapping effect (#1503)
* FancyZones editor magnetic snapping effect

Implemented a solution to Issue #585: FancyZones: Alignment/Snapping/Ruler

* Fixed VS complaining about names and access modifiers

* Removed reference to unused implementation of snapping in FZE

* Converted integer constants to enums in FZE/Canvas

* Convert a portion of code to a switch statement

* Improved code maintainability

* Fixed a screen resolution bug in FZE/Canvas

Fixed a bug where the editor doesn't respect the new screen resolution.

* Further maintainability improvements

* Fixed a compiler warning

* Changed some variables to camelCase
2020-03-10 15:50:44 +01:00
vldmr11080
013a58e634 Move window to last known zone. Support movement in multi-monitor scenario (#1511) 2020-03-10 09:59:34 +01:00
stefansjfw
4dbe535e1e Use default options for Utf8JsonWriter (#1497) 2020-03-09 23:28:43 +01:00
stefansjfw
7ac378dcd3 Fix compiler warning (#1492) 2020-03-09 23:21:33 +01:00
stefansjfw
965b098d66 Fix deleting custom layouts when closing on SaveApply (#1512)
* Fix deleting custom layouts when closing on SaveApply

* Only serialize if SaveApply, not on Cancel or X
2020-03-09 23:06:39 +01:00
Clint Rutkas
6379c3210b added in dialog, tweaked layout to be more resiliant to longer text (#1361) 2020-03-09 14:20:57 -07:00
vldmr11080
7653d5fec9 Document fancy zones (#1496) 2020-03-09 19:22:53 +01:00
PrzemyslawTusinski
7e1f7bd7fd Ui rename Zone highlight Opacity (%) - > Zone Opacity (#1504) 2020-03-09 12:27:35 +01:00
stefansjfw
5581e25a21 Editor IO exception handling (#1491)
* Close input stream
Show MessageBox with exception message
Remove unused arguments
Guard all of the Editor input/output code parts and show MessageBox
with appropriate message and issue reporting link

* Extract showing messageBox into method
2020-03-09 10:41:06 +01:00
Enrico Giordani
52e08a2784 Update bundle.js and html index files. (#1502) 2020-03-09 08:26:37 +01:00
William Kent
f6047b8733 Switch WindowWalker C# project to use PackageReference (#1374)
* Switch WindowWalker C# project to use PackageReference

* Remove packages.config leftovers

Co-authored-by: William Kent <wjk@users.noreply.github.com>
2020-03-07 16:28:53 -08:00
pi1024e
bea8e647d9 Remove unused check for pClassFactory (#1419)
* Update dllmain.cpp

* Update dllmain.cpp
2020-03-07 16:25:12 -08:00
stefansjfw
1cf8634152 Move ZoneSetPersistedDataOLD to JsonHelpers (#1405) 2020-03-07 10:59:00 +01:00
ItzLevvie
141b63587b Fix spelling mistake (#1476) 2020-03-06 13:38:59 +01:00
Ivan Stošić
2b91903129 Fixed one mishandled case when computing zones (#1470) 2020-03-05 21:51:58 +01:00
Clint Rutkas
32de0ae4a4 adding in a Code of Conduct 2020-03-05 10:11:27 -08:00
Ivan Stošić
985a0b9bce Fixed resizer thumbs not being shown (#1309) 2020-03-05 16:00:18 +01:00
Ivan Stošić
9860e2bc75 Fixed an issue where zones do not fill up the whole screen (#1458)
* Fixed an issue where zones do not fill up the whole screen
* Fixup: Added comments, removed extra semicolons
2020-03-05 15:54:06 +01:00
Andrey Nekrasov
db8472a6e5 Unify version specifying (#1439)
* installer: extract version number into separate file and use it where possible

* MSIX: rename package to include version on CDPx

* installer: generate assembly info for FZ editor

* MSIX: inject correct version to appxmanifest
2020-03-05 17:52:21 +03:00
Ivan Stošić
8a22da0acb Fix too many zones crashing (#1337)
Fix for an issue where creating too many zones causes a crash
2020-03-05 14:59:47 +01:00
Andrey Nekrasov
cf1b53831f Formatting chores (#1441)
* format_sources: exclude 3rd party sources

* format common project

* format leftovers in runner & settings projects

* move source formatting-related files according to #939
2020-03-05 13:07:06 +03:00
Ivan Stošić
92f64188d5 Fixed multi-monitor scaling bug (#1293)
Fixed an issue (#365) where a window gets resized after it gets dropped into a zone.
2020-03-05 10:57:45 +01:00
stefansjfw
6a0061dde3 Fix PowerRename UI doesn't handling DPI changes (#1424)
* Fix PowerRename UI doesn't handling DPI changes

* Address PR comments

* Address PR comments
2020-03-05 10:21:25 +01:00
yuyoyuppe
84fbdba9f5 MSIX: use com_object_factory for powerrename 2020-03-05 10:41:36 +03:00
vldmr11080
39cac396f5 Swallow shift keyboard event when dragging window (#1423) 2020-03-05 08:01:58 +01:00
Clint Rutkas
75ed3ce60c Fix for msi not loading on visual studio (#1385)
* adding preview tag for desktop and start menu

* getting to load, code from https://github.com/wixtoolset/issues/issues/5700#issuecomment-335525293
2020-03-04 12:37:32 -08:00
Enrico Giordani
8373204c94 Now working on 0.15.2 (#1432) 2020-03-04 05:52:16 +01:00
Enrico Giordani
6787af413e Increment version to 0.15.1 (#1428) 2020-03-03 22:31:57 +01:00
stefansjfw
0199b4e212 Handle exception while editor is parsing custom layouts (#1430)
* Fix migrating never applied custom zonesets

* Handle json parsing exception in LoadCustomModels()
2020-03-03 22:31:22 +01:00
stefansjfw
121be772df Fix migrating never applied custom zonesets (#1427) 2020-03-03 21:48:22 +01:00
Enrico Giordani
f3b3e3eded Sanity check for imported settings that may have invalid data. (#1426) 2020-03-03 21:45:25 +01:00
Clint Rutkas
02c08c942d 0.15 update to readme to master (#1408)
* Getting ready for v0.15 update for readme.

* getting ready for 0.15

* spelling tweak

* filled in update section

* fixed spelling mistakes

* updating to what POR is

* Update README.md

* Update README.md

* adding back in MSI

* getting readme ready for 0.15

* tweaks

* adding oss to oss links

* fixing links

* tweaking file names

* Update README.md

* Update README.md

* Update README.md

fixing typo

* Update README.md
2020-03-03 11:14:30 -08:00
Clint Rutkas
b2370f5c5f Update README.md (#1412) 2020-03-02 16:21:51 -08:00
vldmr11080
6556e1b4a2 Skip cloning device information from parent virtual desktop if it is deleted. (#1415) 2020-03-02 18:52:38 +01:00
Jeremy Wu
28acd466b3 Merge branch 'dev' 2020-03-01 20:12:51 +11:00
Clint Rutkas
699921d464 build break, seeing if this was root case 2020-02-28 14:13:43 -08:00
Enrico Giordani
5c84fbba9a [CDPx] archive symbols to Symbol Server (#1407) 2020-02-28 13:44:37 -08:00
yuyoyuppe
0b02422e7d wix: add (Preview) for MSI product name 2020-02-28 12:23:43 +03:00
Clint Rutkas
677bff55c2 Update pipeline.user.windows.yml (#1398) 2020-02-27 17:29:22 -08:00
Enrico Giordani
3d03bea582 [CDPx] move build script out of .pipeline (#1394) 2020-02-27 19:18:11 +01:00
Enrico Giordani
278a77247d [CDPx] use explicit filenames for the MSIX assets (#1393)
Approved
2020-02-27 07:46:00 -08:00
Enrico Giordani
b83a8dcb5d [CDPx] remove 'signing_options' for package (#1390)
A global signing option is already defined.
2020-02-27 16:03:38 +01:00
Enrico Giordani
9bce103dad [CDPx] sign MSIX package and bundle (#1389) 2020-02-27 13:41:11 +01:00
Clint Rutkas
dfcc4e1b3a adding preview tag for desktop and start menu (#1384) 2020-02-27 13:10:08 +01:00
vldmr11080
66892aea60 Secure acces from multiple threads to JSONHelpers (add missing lock) (#1375) 2020-02-27 09:52:14 +01:00
yuyoyuppe
5c708b43c2 wix: add missing libs for FZ editor 2020-02-27 11:27:59 +03:00
stefansjfw
e2026aedbc Fix typo in powerrenamer README (#1378) 2020-02-26 16:33:50 -08:00
Jeremy Wu
3184f8d275 Update readme with main features released from this fork (#149)
* Update readme with main features released from this fork

* update
2020-02-27 00:16:09 +02:00
Jeremy Wu
8ec78688b8 Add empty actionParameters check (#148) 2020-02-27 00:14:45 +02:00
Enrico Giordani
1911fc2e65 Update BinSkim exclude list (#1377) 2020-02-26 13:44:25 -08:00
TorchGM
e0446a73fa Change Windows Store to Microsoft Store in README (#1369)
The Windows Store was renamed to the Microsoft Store back in 2017, best to keep things up-to-date to avoid potential confusion.
2020-02-26 12:34:05 -08:00
yuyoyuppe
16b1bfa4d0 increment version to 0.15 🎉 2020-02-26 23:21:17 +03:00
PrzemyslawTusinski
f015995ac4 Now updater is comparing versions instead of comparing thier strings 2020-02-26 23:06:44 +03:00
yuyoyuppe
0016836022 runner: periodically check if there's a new version available on github and offer a visit 2020-02-26 23:06:44 +03:00
yuyoyuppe
c543b7585a notifications: add support for unpackaged apps and protocol activation 2020-02-26 23:06:44 +03:00
yuyoyuppe
b90f1fc237 common: always use 0 for build number and make get_product_version return "vX.X.X" 2020-02-26 23:06:44 +03:00
Enrico Giordani
f892338098 [CDPx] fix for makeappx, update SDK for MSI (#1373) 2020-02-26 11:05:15 -08:00
Enrico Giordani
defead108a [CDPx] remove nuget.config and update restore script (#1370) 2020-02-26 10:23:53 -08:00
vldmr11080
1f8f9aaf81 Revert "Swallow shift keyboard event when dragging window (#1362)" (#1363)
This reverts commit 2f9b753c5b.
2020-02-26 08:11:39 +01:00
Enrico Giordani
3b32a3164b [CDPx] update nuget feed (#1364) 2020-02-25 19:38:47 -08:00
Jeremy Wu
e5cc2ccaab Merge pull request #145 from jjw24/pluginInitFail
plugin init fail continue - create query builder and re-enable tests.
2020-02-26 07:25:20 +11:00
vldmr11080
2f9b753c5b Swallow shift keyboard event when dragging window (#1362) 2020-02-25 21:03:14 +01:00
Jeremy Wu
cbcca9cf5b Merge branch 'dev' 2020-02-26 07:02:11 +11:00
Seraphima Zykova
b1ac1859be Removed FancyZones unit-test (#1360) 2020-02-25 17:14:59 +03:00
Jeremy Wu
cecb65cd40 Installed & portable mode: Enhance auto updates (#142)
* Add handling of portable mode when updating

Additionally: 
1. Changed getting version from internally rather than from RELEASES file
2. Added PortableDataPath as a constant so can be used  to determine if portable mode is used

* Fix incorrectly wired auto update event handler

* Fix Sys plugin missing Shutdown command icon

* Add check update command to Sys plugin

* Add message if current Wox version is latest

* Add default silent when auto checking updates in background

Silent when current is still the latest version

* Move UserData folder to new version location

* Changes per review

1. Move IsPortableMode to Constant
2. Merge if statement

* Per comment- change variables to be more descriptive

UpdateInfo and UpdateManager renamed

* Per comment- Add exception handling and message if failed.
2020-02-25 12:08:51 +02:00
Enrico Giordani
74b076e31f [CDPx] update SDK, restore telemetry, build MSIX (#1358) 2020-02-24 23:49:28 +01:00
Bartosz Sosnowski
e3057b5e46 tools: add tool to debug FancyZones zonable windows (#1355)
Uses FancyZones logic to test if window is zonable or not. Displays
window styles and results for various tests if the window should be
zonable or not.
2020-02-24 17:45:50 +01:00
clueless
e1e7387c73 create query builder and re-enable tests.
make the plugin manager plugin data the source for disabled plugins
2020-02-22 11:02:07 +02:00
Jeremy Wu
73705bec23 Merge pull request #144 from jjw24/pluginInitFail
Plugininitfail
2020-02-22 09:47:19 +11:00
clueless
cb9e045c7f catch plugin init fails - stop Wox from not starting up and crushing and disable and explain the user what is the probalmatic plugin 2020-02-21 23:12:58 +02:00
Enrico Giordani
92a8b5aa4d MSIX is "Experimental" (#1348) 2020-02-21 11:13:21 +01:00
Enrico Giordani
9b7f92188d Runner check for MSI and MSIX (#1345)
* Add startup check for the MSI version of PT

* Alert if another instance of PowerToys is already running
2020-02-21 11:12:04 +01:00
Clint Rutkas
77301e2930 bug fix 2020-02-19 13:10:42 -08:00
Clint Rutkas
babfc9ade3 Adding in HitTester App 2020-02-19 13:09:18 -08:00
Andrey Nekrasov
883bbf102a settings: add a clarifying label if running as elevated (#1330) 2020-02-19 19:31:09 +03:00
Andrey Nekrasov
e21f83267a settings: remove Restart as a user button in an elevated context (#1328) 2020-02-19 18:51:24 +03:00
yuyoyuppe
27f0782465 settings: fix general settings hanging on save for a non-admin user 2020-02-19 17:20:09 +03:00
yuyoyuppe
d45b0dee10 runner: fix Restart as... option 2020-02-19 17:20:09 +03:00
Enrico Giordani
2c2a29cd91 Setup: sign PowerRenameExt.dll (#1313) 2020-02-18 22:02:39 +01:00
Yevhenii Holovachov
607a297c4a "Always run as administrator" and "Restart as ..." only for administrator account (#1318) 2020-02-18 20:56:34 +01:00
Clint Rutkas
e177c5c94c moving to https://github.com/microsoft/PowerToys/wiki/Version-1.0-Strategy (#1315) 2020-02-18 10:50:43 -08:00
Clint Rutkas
7fb3456e83 Update v1.0.md 2020-02-18 10:19:21 -08:00
Clint Rutkas
d37bb2c7f9 v1 spec (#1275)
* v1 spec, from here we'll create a roadmap much like Terminal.  (https://github.com/microsoft/terminal/blob/master/doc/terminal-v1-roadmap.md)

* adding in more issue xref links

* add in UX migration time

* Update v1.0.md

* Update v1.0.md

* Update v1.0.md
2020-02-18 09:27:00 -08:00
Andrey Nekrasov
20519e3b81 MSIX: prompt and uninstall MSI PT version (#1248) 2020-02-18 18:11:01 +03:00
vldmr11080
733613ad28 Introduce handling of new/old work areas (#1296)
* Introduce handling of new/old work areas (defined by virtual desktop id and monitor)

* Save data to JSON storage only once after we register all deleted virtual desktops

* Update saving mechanism

* Remove resolution from unique identifier

* Update comments related to new unique identifier

* Don't handle NULL GUID as it is default one

* Revert "Remove resolution from unique identifier"

This reverts commit 5a36651217.

* Revert "Update comments related to new unique identifier"

This reverts commit 8e89802549.

* removed MigrateDeviceInfoFromRegistry

Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
2020-02-18 11:55:08 +01:00
Seraphima Zykova
604070763d Add telemetry event for FZ editor (#1294)
* trace zones settings changes
2020-02-17 19:40:02 +03:00
yuyoyuppe
93f88800b8 MSIX: do not kill explorer.exe, since it's only necessary for the MSI version 2020-02-17 18:38:14 +03:00
yuyoyuppe
9607888fc5 PowerRename: bring the rename dialog to foreground 2020-02-17 18:38:14 +03:00
Andrey Nekrasov
1e6936a8c3 Thread safety for FanncyZonesData (#1281)
* FancyZones: make FancyZonesData thread-safe

* fixup: format affected sources

* fixup: clang-format case-style and format FancyZones.cpp

* fixup! add missing lock
2020-02-17 18:28:49 +03:00
Jeremy Wu
56c2964e96 Fix issue incorrect dll reference (#141) 2020-02-15 08:24:29 +02:00
Jeremy Wu
d5f223fc88 Add file path to files search result in Folder Plugin (#139)
* Add file path to files in Folder Plugin

* Add folder subtitle display path when wildcard '>' is used
2020-02-15 08:23:17 +02:00
Clint Rutkas
cdf2f6b5b4 moving stuff to wiki (#1302) 2020-02-14 13:49:31 -08:00
Andrey Nekrasov
fa3ce8de64 MSIX: add missing dependencies for the FancyZonesEditor (#1298) 2020-02-14 11:57:20 +03:00
Seraphima
59d218d623 Add telemetry event for PowerRename settings (#1279)
* moved MAX_INPUT_STRING_LEN constant
* added settings changed event log
2020-02-13 12:44:03 +03:00
Jessica Yuwono
49fa1b6762 Added PowerLauncher spec and images (#1109)
* Added PowerLauncher spec and images

* Fixed images path

* Addressed review comments

* Fixed images

* Addressed review comments, and added link to keyboard shortcut manager PowerToy

* Added Ueli in comparison table

* Added keyboard input element

* Added suggestions from community

* Moved default shell and terminal settings

* Addressed feedback

* Added community suggestion

* Modified spec based on feedback

* Modified spec based on suggestions

* Added keyboard shortcuts to context menu options
2020-02-12 15:30:40 -08:00
Clint Rutkas
a2fe4a0b80 removing done specs to wiki (#1276) 2020-02-12 14:55:39 -08:00
vldmr11080
86e7a19a98 Update FancyZones-DCR.md (#1280) 2020-02-12 19:06:15 +01:00
Seraphima
8c86c3dc1b Update FancyZones telemetry event for settings changed (#1268) 2020-02-12 13:08:11 +03:00
Seraphima
2bef7631ae Add telemetry event for general settings (#1269)
* telemetry for general settings
2020-02-12 13:03:40 +03:00
vldmr11080
550d76a447 Add design change request for improvements in virtual desktops handling (#1270) 2020-02-12 08:18:57 +01:00
Chris Davis
679b26cde4 Set the rename button to the default button on the dialog. Prior to this change, users would setup the rename inputs and hit return only to discover the cancel button had the key focus and all work would be lost. (#1271) 2020-02-11 11:33:30 -08:00
Seraphima
79c625d737 Persist app zone history in real time (#1257)
* save settings every time changes are performed
* settings are not saved on app exit
2020-02-11 14:34:37 +03:00
Seraphima
a1d277e771 Unit-tests fixes (#1265)
* fixed typecast warnings
* removed unneded tests
2020-02-11 14:33:41 +03:00
vldmr11080
bde0f2f0ba Fix crash when saving any module settings while module being disabled (#1259) 2020-02-11 07:57:11 +01:00
stefansjfw
53f830bb38 Migrate FancyZones data persisting from Registry to JSON file (#1194)
* Migrate FancyZones data persisting from Registry to JSON file

* Address PR comment: Remove redundant check

* Addres PR comment: Remove unused Dpi and add CmdArgs enum

* Address PR comment: Make methods const and inline

* Address PR comments: Expose GenerateUniqueId function and use const ref instead of passing wstring by value

* Address PR comment: Use lamdba as callback

* Address PR comment: Move GenerateUniqueId to ZoneWindowUtils namespace

* Address PR comment: Use regular comparison instead of std::wstring::compare

* Address PR comment: Use std::wstring_view for tmp file paths

* Address PR comment: Use scoped lock when accessing member data

* Address PR comment: Remove typedefs to increase code readability

* Address PR comment: removed nullptr checks with corresponding tests

* Address PR comment: Move ZoneSet object instead of copying

* Address PR comment: Make FancyZonesData instance const where possible

* Remove unnecessary gutter variable during calculating zone coordinates

* Remove uneeded subclass

* Avoid unnecessary copying and reserve space for vector if possible

* Save FancyZones data after exiting editor

* App zone history (#18)

* added window and zone set ids to app zone history

* Rename JSON file

* Remove AppZoneHistory migration

* Move parsing of ZoneWindow independent temp files outside of it

* Unit tests update (#19)

* check device existence in map
* updated ZoneSet tests
* updated JsonHelpers tests

* Use single zone count information

* Remove uneeded tests

* Remove one more test

* Remove uneeded line

* Address PR comments - Missing whitespace

* Update zoneset data for new virtual desktops (#21)

* update active zone set with actual data

* Introduce Blank zone set (used to indicate that no layout applied yet). Move parsing completely outside of ZoneWindow.

* Fix unit tests to match modifications in implementation

* Fix applying layouts on startup (second monitor)

Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
2020-02-10 14:59:51 +01:00
Andrey Nekrasov
a5e3207715 sln: fix project dependency order (#1249) 2020-02-10 16:07:01 +03:00
Scott Hanselman
b357a085c8 Small English grammer issue "in the desktop" -> "on the desktop" (#1238)
Small English grammer issue "in the desktop" -> "on the desktop"
2020-02-07 16:51:57 -08:00
Arjun Balgovind
9722d808f9 Update MSIX Readme with sideloading steps (#1237) 2020-02-07 14:22:49 -08:00
Bartosz Sosnowski
0fdc1d0a1f ShortcutGuide, FancyZones: split window filtering (#1225)
Splits the code use to filter windows for FancyZones and the
"active window" for the ShortcutGuide. The FancyZones logic is preserved
and merged into a single function. We keep it in common.h, as it might
be also used in other PowerToys, like maximized to new desktop. We do
however change the return type to be more descriptive. It also returns
a separate flag for if the window has a visible owner. This can be used
to implement the approved apps list.

For the ShortcutGuide, the logic is relaxed to include more windows. One
example are Explorer properties windows. Those are (and should) filtered
by the FancyZones, but should appear in the window preview in the SCG.

The new return type also includes information if the window will react
to the default Windows Snap. This is not ideal though. Currently, SCG
can only disable the entire "Windows Controls" group. OTOH windows like
"Save As..." dialogs can be snapped to corners etc., but cannot be
minimized nor maximized. Until SCG can separately disable those buttons
we will display the buttons in the enabled state only if the window
supports all settings. In the future, we should integrate FancyZones
snap override here too.
2020-02-07 15:53:57 +01:00
Andrey Nekrasov
f963d28ba8 MSIX: keep PowerRename local COM server in memory (#1222) 2020-02-07 14:21:10 +03:00
Bartosz Sosnowski
09d1af9c46 Common: remove hwnd_data_cache (#1223)
The cache was introduced to improve performance by not querying the
OS for the window process path every time we need to check if the window
is interesting to FancyZones. Since then other changes were made to the
the way we check the windows. Right now, the IsInterestingWindow function is
called when:

  1) WinKey + arrows are used
  2) window is started to be dragged
  3) window is created

1) and 2) are initiated by the user, happen only once per interaction so
their performance impact can be dismissed. The 3) happens all the time
but for the most part the check for WS_CHILD or
GetAncestor(window, GA_ROOT) == window will filter those out. In the
end, only top-level windows will be queried for their path.

Removing the cache improves code readability and will make code
maintenance easier.
2020-02-06 18:04:10 +01:00
Bartosz Sosnowski
5d8e894802 FancyZones: if window is not interesting, allow Windows snap (#1186)
Do not swallow WinKey+Arrow events for non-interesting windows. This makes apps that are in the "excluded apps" list behave as if "Override windows snap keys" is disabled - they will react to the Windows default snap.
2020-02-06 13:12:59 +01:00
Bartosz Sosnowski
0ecfbfad53 FancyZones: filter out WM_POPUP windows if they dont have maximize/minimize button or a sizable frame (#1212)
This filters out TaskView and Win32 menus.
2020-02-05 12:31:35 +01:00
Bartosz Sosnowski
ed35a143ec FancyZones: allow windows with invisible or zero-sized owner to be zonable (#1216) 2020-02-05 12:27:51 +01:00
yuyoyuppe
5089729b18 MSIX: implement initial version of notifications library (#1178) 2020-02-04 19:41:00 +03:00
yuyoyuppe
b41d2d64cb MSIX: fix uninstallation from msix_reinstall and split the scripts (#1183) 2020-02-04 18:56:10 +03:00
Bartosz Sosnowski
25e882eb78 Fancyzones: unify window filtering (#1184)
Makes FancyZone use the same code for filtering windows when windows are
being dragged and when moved by WinKey + arrows.
2020-02-03 09:32:38 +01:00
Clint Rutkas
4ef8f3da2b Update README.md (#1198) 2020-01-31 18:17:07 -08:00
sakariya
b00ce8789f Adding KeyManager spec (#1112)
* Adding KeyManager spec

* adding req changes

* req changes

* changed wording

* md edits

* edit md

* Update doc/specs/KeyboardManager.md

Co-Authored-By: Jeroen van Warmerdam <jeronevw@hotmail.com>

* further edits

* Update KeyboardManager.md

* Update KeyboardManager.md

Co-authored-by: Jeroen van Warmerdam <jeronevw@hotmail.com>
2020-01-31 16:10:30 -08:00
Betsegaw Tadele
b4f81a0c2a Import the source code for Window Walker (#1177)
Import the codebase for Window Walker 

- Not loaded into the module list 
- Not added it to the installer list.
2020-01-31 15:14:37 -08:00
yuyoyuppe
aa714f7d80 Runner: fix startup task state setting for MSIX (#1181) 2020-01-31 20:35:21 +03:00
yuyoyuppe
ca203435d1 MSIX: hide the "Run at Startup" option if running as packaged 2020-01-29 16:15:18 +03:00
Enrico Giordani
ee8893a884 MSIX: update identity name and publisher (#1176) 2020-01-29 13:06:19 +01:00
Clint Rutkas
bf89238bdf MSIX build instructions adjustmnet (#1170) 2020-01-28 15:01:17 -08:00
yuyoyuppe
360f7cf9c3 Telemetry: add WebView init failure errors 2020-01-27 20:01:36 +03:00
yuyoyuppe
482ad0e5ee Settings: initialize COM security to allow communication between elevated Settings and WebView 2020-01-27 18:49:35 +03:00
yuyoyuppe
cd6ac4f8c2 Common: implement on_scope_exit helper and typed_storage 2020-01-27 18:49:35 +03:00
Clint Rutkas
79ac2be617 Changes for #1140 and #569 (#1152) 2020-01-27 07:00:41 -08:00
yuyoyuppe
9b4b7cf5d4 MSIX: reinstall script uses bundle instead of .msi to be able to reinstall in all cases 2020-01-27 17:33:50 +03:00
Jeremy Wu
9b970ae1a4 Merge pull request #134 from jjw24/everythingFixes
Everythingfixes
2020-01-26 19:05:30 +09:30
clueless
fec7912870 remove 2020-01-26 11:14:38 +02:00
Jeremy Wu
8bb855e657 Merge pull request #133 from jjw24/clueless/pinyinFixBug
fix
2020-01-26 18:26:08 +09:30
clueless
9488864f47 everything updates -
- support ~cancellation in api.
- API refactoring.
- API - locked to enable collisions.
- other small changes
2020-01-26 01:34:11 +02:00
clueless
beefc6a86e fix 2020-01-25 00:12:32 +02:00
Bartosz Sosnowski
cc99abcd14 Runner: fix restarting with same elevation (#1133) 2020-01-23 15:12:02 +01:00
yuyoyuppe
f8bcf52741 MSIX: add a dedicated .rc for UWPUI which joins both UI and DLL .rc's (#1139) 2020-01-23 14:42:28 +03:00
vldmr11080
1a10366ab7 Align zone dimensions from layout preview with those from grid editor (#1115) 2020-01-22 20:15:35 +01:00
Alekhya
925b6694ac Localize C++ Projects of FancyZones (#1130)
* localized dllmain.cpp  of fancyzones project

* localized FancyZones.cpp

* format fancyzones.rc file

* Moved SuperFancyZones back to being a string instead of having it in the resource file as it is the window class name

* reverted changes for window name

* Formatted fancyzones rc file
2020-01-22 10:24:00 -08:00
Alekhya
1ad16ade86 Localize the Shortcut guide PowerToy (#199) (#1126)
* Localized shortcut_guide.cpp

* localized overlay_window.cpp

* formatting changes

* Localize overlay window

* removed the README link from the set of localized resources

* Typo: changed upper to lower
2020-01-22 09:43:49 -08:00
Alekhya
45e3f02832 Localizing C# Project of FancyZones (FancyZonesEditor) (#199) (#1122)
* removed hardcoded strings from CanvasEditorWindow.xaml

* removed hardcoded strings from GridEditorWindow.xaml

* loc

* Localized MainWindow

* reverting MainWindow.xaml as it is not rendering the window as expected

* Changed the resource settings from internal to public

* the culture is set based on the culture of the system UI set in the system settings

* Removed the french resource files used for testing

* Localized canvasWindow and mainwindow

* Removed setting the UI culture explicitly as it would be implicitly set to the culture of system UI

* Removed redundant header file
2020-01-21 12:02:31 -08:00
Alekhya
ba1a681aab Merge pull request #1106 from alekhyareddy28/locPowerRename
Localize PowerRename
2020-01-20 12:11:07 -08:00
Alekhya Kommuru
23bba969dd Merge remote-tracking branch 'upstream/master' into locPowerRename 2020-01-20 11:54:20 -08:00
Alekhya Kommuru
9c743acd2d Removed some IDs from resource file. Changed SHIFT to Shift 2020-01-20 11:52:46 -08:00
Bartosz Sosnowski
62da7c7be4 FancyZones: remove dialog boxes filtering (#1076)
* FancyZones: remove dialog boxes filtering

* FancyZones: add the "no owner window" filter to the WinKey + arrow zone snapping
2020-01-20 11:02:12 +01:00
Jeremy Wu
07310c7714 Fix pinyin fuzzysearch (#131)
* fix typo

* make function obsolete 

it is not used in the code

* rewrite the function that converts chinese chars to pinyin

1. Only difference in this rewrite is instead of returning 2D array, return as a combined single string of all the possible pinyin combination. Since fuzzy search does character matching, this shouldn't be a problem.

2. Added a function that returns a custom language converter. In this case Pinyin converter. New converters can be added.

* Use new language converter param + strip out ScoreForPinyin method

* update

* Change parameter name

* fix failing tests

* WIP

* Remove todo

There should be some distinction between score after precision filter and actual raw score derived from FuzzySearch. Although so far RawScore is used in testing, but it seems to describe the structure. Originally it was to avoid assigning score directly as it would be hard to reason about that output of FuzzySearch score is.

* Add constructors, remove default to enforce required properties

* remove setting rawscore in SearchPrecision

* Change method name to reflect intention

* Change parameter name + update comment

* update

* Remove params comment

Co-authored-by: theClueless <14300910+theClueless@users.noreply.github.com>
2020-01-20 01:06:16 +02:00
Jeremy Wu
ee93f7e018 Merge pull request #130 from jjw24/clueless/packrefMine
Update sln to use package references
2020-01-18 20:59:50 +11:00
Jeremy Wu
21fae1f457 Merge branch 'dev' 2020-01-18 12:10:38 +11:00
Alekhya Kommuru
653a84d3a9 reverting formatting of files 2020-01-17 14:38:41 -08:00
Alekhya Kommuru
8132bbac2e updated formatting of common.cpp 2020-01-17 14:32:02 -08:00
Alekhya Kommuru
197286c21e moved app name to constructor to init only once 2020-01-17 14:23:07 -08:00
Alekhya Kommuru
bf48729354 rebuilt project PowerRename 2020-01-17 11:57:53 -08:00
Alekhya Kommuru
a504a75166 Removed string resources from the settings.cpp file 2020-01-17 11:25:42 -08:00
Alekhya Kommuru
44ac22c0de Added new lines to the end of the file 2020-01-17 11:12:23 -08:00
Alekhya Kommuru
df1c6b9b0b Removed get_res_string_wchar and used the get_resource_string() function instead which returns a wstring typecast into wchar* 2020-01-17 11:06:57 -08:00
AT
7ce45d2b11 fix pre build event 2020-01-17 14:56:26 +02:00
Alekhya Kommuru
bde0e0b86a Merge remote-tracking branch 'upstream/master' into locPowerRename 2020-01-16 13:58:59 -08:00
Arjun Balgovind
c1232a7001 Shifted three functions to common (#1101) 2020-01-15 23:06:22 -08:00
Alekhya Kommuru
12c4dbf0e5 added common as a reference project 2020-01-15 16:44:18 -08:00
Alekhya Kommuru
31a01ab227 Modified resourceIDs for strings in the table 2020-01-15 13:57:05 -08:00
vldmr11080
5dc60b9f35 Fix reversed order of zones in layout (#1071) 2020-01-15 20:20:10 +01:00
vldmr11080
588f134de8 Revert "Fix misaligned display of zones in layout priview and grid editor (#1010)" (#1097)
This reverts commit d03690cffd.
2020-01-15 19:34:23 +01:00
Clint Rutkas
2ae867a7e0 adding in privacy statement, removing About in dialog (#1087)
* adding in privacy statement, removing About in dialog

* added Preview
2020-01-15 10:16:22 -08:00
Clint Rutkas
c77b029ee2 Update to MSIX README.md (#1095)
* Update README.md

few adjustments

* Update README.md

* Update README.md
2020-01-15 10:15:24 -08:00
Alekhya Kommuru
d0648d1754 built the proj 2020-01-14 16:40:40 -08:00
Alekhya Kommuru
1e3486af94 localized the settings file 2020-01-14 16:39:03 -08:00
Alekhya Kommuru
8f2b2aba12 localized powerRenameExt 2020-01-14 15:23:21 -08:00
Alekhya Kommuru
0b1232b65d localized dllmain powerrename 2020-01-14 15:17:08 -08:00
Alekhya Kommuru
969abe015c added the helper functions 2020-01-14 15:00:05 -08:00
Jeremy Wu
f39144cc51 Merge pull request #119 from theClueless/deploymentUpdates
Auto update improvements: Updater
2020-01-15 09:08:45 +11:00
AT
725df15012 update to package reference 2020-01-14 21:10:54 +02:00
yuyoyuppe
9e296cdb46 MSIX: Code sign msixbundle (#1093) 2020-01-14 22:05:09 +03:00
yuyoyuppe
b07627611f MSIX: label PowerToys as Preview (#1090) 2020-01-14 19:36:08 +03:00
Jeremy Wu
6cad4bc986 Merge pull request #112 from theClueless/fuzzyMatchUpdates
Fuzzy match logic update
2020-01-14 08:26:45 +11:00
Jeremy Wu
504c08a0fc Update test per comment 2020-01-14 07:53:59 +11:00
Jeremy Wu
592f1cafdb update allSubstringsContainedInCompareString calculation as per comment 2020-01-14 07:36:53 +11:00
Jeremy Wu
71d8c2080c update comment typo 2020-01-14 07:30:40 +11:00
Jeremy Wu
6095933847 simplify condition as per comment 2020-01-14 07:29:21 +11:00
theClueless
92febf0b00 Merge pull request #117 from jjw24/folderplugin_updatesearch_sorting
Folder plugin updates to searching and sorting of results
2020-01-13 00:51:27 +02:00
theClueless
1c711aef3c Merge pull request #124 from jjw24/update_readme_badges
Update readme badges
2020-01-13 00:22:14 +02:00
Jeremy Wu
0bec780a1b Update yaml file comment 2020-01-13 07:50:34 +11:00
Jeremy Wu
ed01a46a3f Update maintenance and all releases badge 2020-01-13 07:46:27 +11:00
Jeremy Wu
4f8fa9f9eb Merge branch 'master' into update_readme_badges 2020-01-13 07:42:03 +11:00
Jeremy Wu
2f99ccdd4a Merge pull request #123 from jjw24/theClueless-updateReadme-withdevops
Update README.md
2020-01-13 06:54:43 +11:00
Jeremy Wu
2dd1013075 Update to new org name 2020-01-13 06:50:39 +11:00
theClueless
6552aeaa3b Update README.md
update to show the azure devops pipeline badge
2020-01-12 13:06:08 +02:00
theClueless
b92b93e233 Merge pull request #122 from jjw24/azure-pipelines
Set up CI with Azure Pipelines
2020-01-12 12:53:53 +02:00
theClueless
10036b148c Update azure-pipelines.yml
updated to work on both dev and master and update pool to work
2020-01-12 12:50:03 +02:00
Jeremy Wu
cccec8382f Set up CI with Azure Pipelines
[skip ci]
2020-01-11 12:16:13 +11:00
yuyoyuppe
5e30721e01 MSIX: Extract MSIX building functionality from msix_reinstall.ps1 to a separate script (#1068) 2020-01-10 16:38:35 +03:00
vldmr11080
d03690cffd Fix misaligned display of zones in layout priview and grid editor (#1010)
Fix misaligned display of zones in layout preview and grid editor
2020-01-09 22:40:38 +01:00
Bartosz Sosnowski
dad732b7e6 runner: show message box when restarting with different elevation fails (#1061)
Also make the message box appear on top of the settings window.
2020-01-09 18:17:42 +01:00
AT
d74b5c8764 another 2020-01-09 01:13:56 +02:00
AT
0f19010e52 oops 2020-01-09 01:10:13 +02:00
Jeremy Wu
ac6ee28c5f Add sorting
order by result title asc, then type being folder first.
2020-01-08 21:50:29 +11:00
Jeremy Wu
c509c02546 Update search wild card
when retrieving folders and files based search term, use wildcard to match everything before and after search term
2020-01-08 20:39:34 +11:00
Jeremy Wu
1258c44bad Merge pull request #104 from theClueless/queryPluginsUpdates
Querypluginsupdates
2020-01-08 07:34:07 +11:00
Jeremy Wu
fe65e7a0c4 Merge branch 'WIP_fuzzyMatchUpdates' into fuzzyMatchUpdates 2020-01-07 22:31:21 +11:00
Jeremy Wu
76727d09bf Update StringMatcher's UserSettingSearchPrecision property type
makes more sense and less conversion to int for actual precision score
2020-01-07 22:30:36 +11:00
Jeremy Wu
2a49b3899a Update tests
Two scoring changes only as a result of substring matching.
2020-01-07 20:26:26 +11:00
AT
49b85d150c initial work, added github to setting,
change update manage from static
created log folder prop for log class
2020-01-07 02:34:46 +02:00
Jeremy Wu
b54241a5b2 Update scoring for all substrings contained in compare string 2020-01-07 08:28:27 +11:00
Jeremy Wu
78a2086535 Remove containedFully variable state
Not necessary to have and not needed to add another dimension to the scoring
2020-01-07 08:04:56 +11:00
Jeremy Wu
24cc5dbaa0 Add unit tests for checking substrings
checking if all substrings contained in compareString
2020-01-07 07:55:02 +11:00
Jeremy Wu
0093838a75 fix variable state which failed to represent correctly
Failed if query text is 'sql servman'- returns true when should be false
- moved it up so evaluation is included in the final substring check
2020-01-07 07:25:13 +11:00
Jeremy Wu
dde658a514 rename variable state allWordsFullyMatched 2020-01-07 07:22:00 +11:00
Jeremy Wu
13996740e0 Add additional test which should pass for regular precision 2020-01-07 07:12:34 +11:00
Jeremy Wu
e4b017b304 fix index out of range exception
occurs when query contains more than one whitespace eg. 'sql  manag'
2020-01-07 05:59:47 +11:00
Yosef Durr
a2a683d31e adding fancy zone opacity setting, enhancement #631 (#1008)
* adding fancy zone opacity setting, enhancement #631

* applying zone opacity setting to all zones during zone selection

* changing opacity setting to percentage
2020-01-06 09:59:18 -08:00
Jeremy Wu
5040f09f0c Update method summary only 2020-01-06 21:38:07 +11:00
Jeremy Wu
19911d9f1f Update comment only 2020-01-06 21:19:15 +11:00
Jeremy Wu
04b0f8b2a4 Remove fuzzy match github repo reference + add logic context in summary
1. Remove the github repo reference as we have mixed in substring matching
2. Added context on how the logic is run
2020-01-06 21:06:41 +11:00
Jeremy Wu
e453dceacd Move condition checking into functions
- Moved if statement that checks if all query substrings are matched into a funciton
- convert into shorthand expression the if statement that checks if all words are fully matched
2020-01-06 20:51:27 +11:00
Jeremy Wu
42a938b50b Simplify IfElse 2020-01-06 19:15:05 +11:00
Jeremy Wu
4cf3cff74d Merge pull request #115 from theClueless/imageOptimization
Imageoptimization
2020-01-06 18:11:13 +11:00
Chris Davis
3ffd007cc0 Ensure previous search and replace texts are evaluated and updated in the UI at startup (#1043)
Ensure stored settings get evaluated after initial enumeration

There was a bug where the list view was not getting updated with the results of the search and replace on launch when we are using a stored search or replace text from a previous session.
2020-01-04 00:39:02 -08:00
AT
28b098cfb7 make image created in hash freeze 2020-01-04 00:40:37 +02:00
AT
fd59088528 made data images freeze as well 2020-01-03 22:33:00 +02:00
AT
05bd32f750 remove comment 2020-01-03 22:01:15 +02:00
AT
e80147d24e removed a duplicate check 2020-01-03 21:17:58 +02:00
AT
72e1a19ea5 remove using 2020-01-03 21:16:38 +02:00
AT
b14d6c9216 adding hash ability to image loader (reducing the load on memory) 2020-01-03 21:16:17 +02:00
Enrico Giordani
c894d72b52 Remove unwanted files (#1037)
Add temp build files to gitignore
2020-01-03 16:10:32 +01:00
Jeremy Wu
220dbd7e30 Move some logic into functions
- Move checking if there is a prev compare string char match into function
- Move updating of index list when a better match is found for the first substring logic into function
2020-01-03 08:02:02 +11:00
Jeremy Wu
84d6fc2787 Update variable names
Make variables more descriptive of the state they represent
2020-01-03 07:58:20 +11:00
Jeremy Wu
f6d0738c79 debug logging 2020-01-02 08:04:16 +11:00
Jeremy Wu
52615c6f52 WIP variables 2020-01-02 08:02:23 +11:00
theClueless
34342599b9 Update MainWindow.xaml
removed delay in binding
2019-12-30 01:28:10 +02:00
AT
42edb20b07 fixes to string matcher alg and some logging stuff 2019-12-30 01:13:33 +02:00
Clint Rutkas
a14784cfd4 Merge pull request #1026 from microsoft/updatePackages
Update packages for NPM
2019-12-27 13:48:20 -08:00
Clint Rutkas
32440567ad Merge pull request #1025 from microsoft/languageTweaks
Language tweaks for #937
2019-12-27 13:41:50 -08:00
Clint Rutkas
25f1dc325d slight bump for fabric ui 2019-12-27 13:35:34 -08:00
Clint Rutkas
38feeee464 npm audit fix to update stuff 2019-12-27 13:19:51 -08:00
Clint Rutkas
b2701ad911 Merge pull request #1024 from microsoft/DocTweakForSettings
Update settings-web.md
2019-12-27 12:51:08 -08:00
Clint Rutkas
d41962f9d1 adjusting elevated permission verbiage to match Windows 2019-12-27 12:28:27 -08:00
Clint Rutkas
ec5d01545a Update settings-web.md 2019-12-27 11:12:43 -08:00
Clint Rutkas
03ddadc1ed tweaking language 2019-12-27 10:26:00 -08:00
Bartosz Sosnowski
3e55b61ac0 Runner: fix run as elevated wording (#1023) 2019-12-27 16:20:36 +01:00
Bartosz Sosnowski
5a7f022e40 settings-web: use Windows build-in commands (#1019) 2019-12-27 13:25:34 +01:00
Clint Rutkas
f651e10684 Merge pull request #1017 from microsoft/languageTweaks
#768
2019-12-26 14:20:38 -08:00
Clint Rutkas
b753f920e1 #768 2019-12-26 11:06:59 -08:00
Enrico Giordani
415a0cdf28 Coding style (runner) (#1013) 2019-12-26 17:26:11 +01:00
Enrico Giordani
9708961654 Coding style (settings) (#1012) 2019-12-26 17:25:56 +01:00
Bartosz Sosnowski
47bcb117b4 FancyZones: do not zone windows on startup (#982) 2019-12-24 15:47:28 +01:00
yuyoyuppe
3eb38e558e project template: fix rc file in module template (#992) 2019-12-24 17:06:58 +03:00
yuyoyuppe
a321eb8737 MSIX: minor cleanup, add certificate generation script 2019-12-24 17:06:10 +03:00
yuyoyuppe
62c65659cc format changed files 2019-12-24 17:06:10 +03:00
yuyoyuppe
249addebff powerrename: implement shellext support for UWP 2019-12-24 17:06:10 +03:00
yuyoyuppe
860087d291 MSIX: implement initial msix installer 2019-12-24 17:06:10 +03:00
Jeremy Wu
c63e8d32c9 Merge branch 'master' into dev 2019-12-24 20:17:52 +11:00
Jeremy Wu
91e4603917 Add usage tips 2019-12-24 20:16:27 +11:00
Jeremy Wu
276278db41 Merge branch 'dev' 2019-12-24 20:05:38 +11:00
Clint Rutkas
b58d4e306a Merge pull request #1000 from crutkas/crutkas/923
fix for #923
2019-12-23 20:17:17 -08:00
Clint Rutkas
21a57a0c58 Merge pull request #1001 from microsoft/980
Update for #980
2019-12-23 20:16:03 -08:00
Clint Rutkas
06b1e43492 Update for #980
clearly stating when "Match all" needs to be enabled
2019-12-20 15:49:14 -08:00
Clint Rutkas
2c1ffde3ed fix for #923 2019-12-20 14:53:56 -08:00
vldmr11080
918ebc62a2 When spacing is set to 0 or turned off display 1px border so user can distinguish zone edges. No spacing will be applied in actual layout. (#994) 2019-12-20 19:46:14 +01:00
ryanbodrug-microsoft
465de438ce User/ryanbod/vstemplate fix issue 971 (#990)
* Updating ModuleTemplate zip, with vstemplate file.
* Exporting Template with powertoy icon
2019-12-19 13:39:08 -08:00
Bartosz Sosnowski
6ee848b279 FancyZones: handle minimized windows correctly (#986) 2019-12-19 16:36:24 +01:00
Bartosz Sosnowski
db5f1622bd FancyZones: do not zone invisible windows (#983) 2019-12-19 16:02:24 +01:00
Enrico Giordani
5e2f681761 Docs tweaks (#960)
Change header levels
Add Github workflow
Add reference to coding style
Minor tweaks
Fix links
Add border to images
Scale images
2019-12-17 17:02:45 +01:00
Bartosz Sosnowski
ad506d78ba Imrpove the settings doc (#958) 2019-12-17 15:18:27 +01:00
yuyoyuppe
48b89609e2 fancyzones: restrict dpi unaware windows horizontally to the current display to avoid unwanted resize 2019-12-17 15:37:10 +03:00
yuyoyuppe
0fd0a8b7cc format dpi_aware 2019-12-17 15:37:10 +03:00
yuyoyuppe
2e922019d7 DPIAware: implement GetAwarenessLevel and cleanup 2019-12-17 15:37:10 +03:00
yuyoyuppe
303d1fef6b PCH: remove headers which are actually could be changed (#950) 2019-12-17 11:21:46 +03:00
Bartosz Sosnowski
619ed234a9 Do not run elevated by default (#884)
Make the runner not run as elevated by default. Add a setting for
"run PowerToys as elevated" and buttons to restart the process
with the different elevation levels.
2019-12-16 18:36:52 +01:00
Enrico Giordani
fd8fc679be Run the Settings process un-elevated when possible
and if not possible run it elevated and let the Settings
process deal with it.
Add wrappers for GetModuleFileNameW.
2019-12-16 18:03:37 +01:00
Enrico Giordani
5a3c852b32 format 2019-12-16 18:03:37 +01:00
yuyoyuppe
4c7de77bfb fix solution configuration (#948) 2019-12-16 17:01:08 +03:00
Jeremy Wu
b08c1eeaa9 Merge pull request #107 from jjw24/add_programplugin_hidewhenrunasadmin
For Program plugin hide context menu immediately after selected run as administrator
2019-12-16 21:18:46 +11:00
yuyoyuppe
7e91121a33 PowerToy project template update (#934)
* Add PowerToy project template to the PowerToys solution
* Update PowerToy project template and create a separate solution for it
2019-12-16 13:12:36 +03:00
Jeremy Wu
cb78e10a76 Add threading task run for StartProcess
Context menu hides immediately after user selection
2019-12-16 21:03:44 +11:00
Jeremy Wu
9d031c1600 Remove obsolete bool return
because hiding is now delegated to MainWindow.xaml's OnDeactivated()
2019-12-16 21:01:45 +11:00
Tajetaje
7efe6f1d53 Correct readme links (#943)
Now in line with #913
2019-12-16 09:40:15 +01:00
Jeremy Wu
bf33c82b19 Merge pull request #106 from jjw24/fix_folderplugin_contextmenu_wordingimages
Fix wording and images for Folder plugin context menu
2019-12-16 07:03:45 +11:00
Jeremy Wu
2330454838 Fix wording and images for context menu 2019-12-16 06:58:39 +11:00
Jeremy Wu
0d0aa49eb9 Merge pull request #105 from jjw24/add_folderplugin_runasuser
Add run as different user option when file is of certain type
2019-12-15 18:11:14 +11:00
Jeremy Wu
c279f405cf Add run as different user option when file is of certain type 2019-12-15 18:08:36 +11:00
Jeremy Wu
725eee726d Merge pull request #103 from theClueless/folderPluginUpdates
Folderpluginupdates
2019-12-15 17:14:25 +11:00
AT
4c2a09369d added catch 2019-12-14 00:41:29 +02:00
AT
e6e1aab098 updates 2019-12-14 00:17:05 +02:00
Clint Rutkas
511f71c369 Merge pull request #927 from microsoft/dev/crutkas/codeAnalysis
code analysis / style cop adjustments for .NET
2019-12-13 14:09:19 -08:00
AT
3dfccea522 Revert "results and query update fixes"
This reverts commit ced0faf916.
2019-12-14 00:07:27 +02:00
AT
ced0faf916 results and query update fixes 2019-12-14 00:06:13 +02:00
vldmr11080
d284ecdab4 Fix outstanding warning messages (#924) 2019-12-13 18:55:30 +01:00
AT
be77bf94aa Merge branch 'upstreamdev' into queryPluginsUpdates 2019-12-13 18:17:11 +02:00
AT
2c87c00906 added context menu support (same as everything plugin) 2019-12-13 03:20:16 +02:00
Clint Rutkas
0ff2e212d5 #817 2019-12-12 17:11:47 -08:00
AT
92e4b5cc16 merged from upstream 2019-12-13 02:07:48 +02:00
AT
4e3228628a Merge branch 'dev' of https://github.com/jjw24/Wox into upstreamdev 2019-12-13 01:48:37 +02:00
AT
dde03eca7c started update with cancellation token 2019-12-13 01:48:05 +02:00
Clint Rutkas
107595fcb2 last stylecop issue 2019-12-12 15:18:31 -08:00
Clint Rutkas
32fb634a4d few more fixes 2019-12-12 15:07:52 -08:00
Clint Rutkas
51fbcc736e fix for CA0507 2019-12-12 15:02:22 -08:00
Clint Rutkas
360a22c537 fixed rest of info items 2019-12-12 15:00:24 -08:00
Clint Rutkas
63cb5ab883 fixed a bunch of infos 2019-12-12 14:50:25 -08:00
Clint Rutkas
151a937c10 fixed a bunch more 2019-12-12 14:34:25 -08:00
Clint Rutkas
4c88c9b029 adjusting event names 2019-12-12 13:59:58 -08:00
Clint Rutkas
24664cc859 moving converters, fixing spacing issues 2019-12-12 13:51:58 -08:00
Clint Rutkas
a187456ac3 Fixed a lot of line issues, few auto 2019-12-12 13:44:06 -08:00
Clint Rutkas
9e4752b114 fix line issues 2019-12-12 13:34:06 -08:00
Clint Rutkas
de64b33bb8 Fixing blank lines 2019-12-12 13:26:02 -08:00
Jeremy Wu
e66b64650d Merge pull request #100 from jjw24/fix_merge_bug_folderplugin
Fix merge bug in Folder plugin
2019-12-13 07:41:09 +11:00
Jeremy Wu
5139bc326a Fix bug from merge in Folder plugin 2019-12-13 07:36:12 +11:00
Clint Rutkas
826858c170 Adding in sytlecop and fixing issues 2019-12-12 12:13:31 -08:00
Clint Rutkas
f2400ee089 Getting analysis up and going 2019-12-12 11:23:36 -08:00
Seraphima
6e3587dd43 Settings unit tests (#921) 2019-12-12 18:24:00 +01:00
Jeremy Wu
7a61db9a70 Merge pull request #98 from jjw24/add_shellplugin_runas_different_user
Add Run as different user to Shell plugin
2019-12-12 21:02:07 +11:00
Jeremy Wu
da798e7a5a add run as different user option to context menu 2019-12-12 20:55:41 +11:00
yuyoyuppe
f385e46927 Devdocs reorganisation (#913)
* docs: split usage and dev docs

* # This is a combination of 2 commits.
# This is the 1st commit message:

docs: split usage and dev docs

# The commit message #2 will be skipped:

# fixup add docs

* docs: add runner documentation and move hooks documentation to devdocs

* docs: add stubs for modules technical description

* docs: add paragraph about event thread-safety

* docs: add 'Current modules' section header
2019-12-12 12:25:19 +03:00
vldmr11080
c31262b97e Flash zones only when new virtual desktop is created (#818) 2019-12-12 10:10:55 +01:00
Jeremy Wu
2e9acc1fa8 Merge pull request #85 from SysC0mp/highlight-how-results-matched
Highlight how results matched
2019-12-12 07:24:22 +11:00
SysC0mp
0f9da7f519 Always return filled result again 2019-12-11 19:10:11 +01:00
SysC0mp
971e1cdbec Fix highlighting for UWP results 2019-12-11 19:08:52 +01:00
ryanbodrug-microsoft
9fad2d68af Merge pull request #912 from ryanbodrug-microsoft/user/ryanbod/fix_unit_tests_fancyzones
[FancyZones][UnitTests] Fixing TestDeviceId, and TestUniqueId.
2019-12-11 08:49:45 -08:00
ryanbodrug-microsoft
51180adeb4 Autoformatting document. 2019-12-11 08:34:18 -08:00
SysC0mp
8ded683796 Merge branch 'dev' into highlight-how-results-matched 2019-12-11 16:50:17 +01:00
vldmr11080
31c4ab8ac0 Make sure FancyZones Editor window is on top of PowerToys settings window (#911) 2019-12-11 09:41:05 +01:00
ryanbodrug-microsoft
4f9d31e832 [FancyZones][UnitTests] Fixing TestDeviceId, and TestUniqueId to unit tests.
1. Creating a mock ZoneWindowHost.   Previously creating a ZoneWindow would throw an exception if the ZoneWindowHost is null.
2. Passing in HWND() instead of null to get rig of SAL annotation warnings.
2019-12-10 17:17:40 -08:00
Clint Rutkas
22e13e8c40 SVG logo for PowerToys 2019-12-10 16:30:53 -08:00
AT
bec52b81fd adding conetxt menu start 2019-12-11 02:21:50 +02:00
ryanbodrug-microsoft
7fc168532c Merge pull request #902 from ryanbodrug-microsoft/user/ryanbod/getexampleprojecttobuild
Getting the example project to compile, and build.
2019-12-10 15:31:31 -08:00
ryanbodrug-microsoft
69b55bcbd3 Merge pull request #905 from ryanbodrug-microsoft/user/ryanbod/fixing_unit_tests_powerrenameregex
Fix for broken unit test in power rename using regular expressions and wildcard.
2019-12-10 14:13:12 -08:00
ryanbodrug-microsoft
c6e839271a This test brake was introduced in the following fix:
1efe5bff9f

It looks to me like the test cases just was also wrong and just wasn't updated with the fix.

I've modified some of the test cases to verify the expected behavior:
1) Slight refactor of the tests to pass in the SearchReplaceExpected and flags for the tests.
2) Using Assert::AreEqual instead of Assert::IsTrue for better error meesaging when failed.
3) Verifying that the behavior is the same with or without match all occurances when using *.
4) Verifying that without the `UseRegularExpressionsFlag` the `.*` characters get replaced, including when MatchAllOccurances is set.
2019-12-10 10:11:21 -08:00
Jeremy Wu
f3a1e09042 Merge tag 'v1.3.524+JJW24.v1.26.13' 2019-12-10 22:17:31 +11:00
Jeremy Wu
b157ec1b28 Merge pull request #95 from jjw24/add_win32_runasuser_contextmenu
Add ability to run as a different user for win32 programs
2019-12-10 22:09:47 +11:00
Jeremy Wu
695be89656 Add ability to run as a different user for win32 programs 2019-12-10 22:01:12 +11:00
AT
3f3deb8e2a added share folder 2019-12-10 12:38:03 +02:00
AT
06b9d68eb7 merge from upstream 2019-12-10 12:21:06 +02:00
AT
bcc9379ebc typo in log 2019-12-10 12:18:24 +02:00
Jeremy Wu
9855e2edee Merge pull request #87 from jjw24/add_shell_plugin_runasadmin
Add option to run as administrator for Shell plugin
2019-12-10 20:27:51 +11:00
Jeremy Wu
e60e574902 update 2019-12-10 20:24:18 +11:00
Jeremy Wu
c22ab4afdf Revert changes to other plugin. Will refactor as a separate PR 2019-12-10 20:11:12 +11:00
Jeremy Wu
b123d95b71 Add run as admin toggle option to plugin settings 2019-12-10 20:03:43 +11:00
yuyoyuppe
1760af50c8 Format unittests (#906) 2019-12-10 10:28:24 +03:00
ryanbodrug-microsoft
73e33d7ba9 Getting the example project to compile, and build.
1) Adding example project to Debug / Release Builds.
2) Including <string> in common.h
3) Using std::optional instead of PowerToysValues::is_[type]_value
4) Fixing warnings generated by unreferenced 'ex' variable in exception handling.
5) Updated relative path of version.h in exeample_powertoy.rc
2019-12-09 15:04:02 -08:00
Jeremy Wu
201c26f7c8 Add run as administrator to Shell plugin settings 2019-12-10 08:23:34 +11:00
Jeremy Wu
1fd31d83bf Merge branch 'dev' into add_shell_plugin_runasadmin 2019-12-10 07:19:11 +11:00
SysC0mp
7d5c827dec Remove whitespace 2019-12-09 21:08:38 +01:00
SysC0mp
ce89ff3c85 FIx test methods
Use RawScore or Score depending on the test case. Also removed
unnecessary test settings introduced earlier.
2019-12-09 21:08:17 +01:00
SysC0mp
e60797cd0f Introduce RawScore property
New property RawScore is used to save the calculated score without any
search precision filtering added.
2019-12-09 21:06:31 +01:00
SysC0mp
49c5c5bbde Pass "ShouldUsePinyin" to StringMatcher
Flag is used in method "ShouldUsePinyin()" to avoid calling Alphabet
service. Otherwise, tests applying to StringMatcher.FuzzySearch() would
fail because the pinyin helper library fails to initialize.
2019-12-09 20:57:59 +01:00
SysC0mp
78f243651e Pass Settings instance to Alphabet again 2019-12-09 20:47:24 +01:00
yuyoyuppe
776a4d657d wix: run ngen on FancyZonesEditor (#898) 2019-12-09 19:02:47 +03:00
yuyoyuppe
8f0b962507 docs: add paragraph about clang-format (#896) 2019-12-09 16:37:43 +03:00
Jeremy Wu
8dc8431c0e Merge pull request #94 from jjw24/add_folderplugin_displaytip
Add Folder search tips results' subtitle
2019-12-09 21:36:11 +11:00
Jeremy Wu
5aa15ef731 Add tips string to folder subtitle 2019-12-09 21:27:33 +11:00
Enrico Giordani
1519843f6f Update WiX to 3.11.2 (#883) 2019-12-09 09:03:07 +01:00
AT
37a4eefc46 updated to use share folder 2019-12-09 00:26:21 +02:00
Jeremy Wu
1efcb2f80b Merge pull request #91 from jjw24/fix_folderplugin_exceptions
Fix exceptions in Folder plugin search + other fixes
2019-12-09 08:34:50 +11:00
Jeremy Wu
0acb4f5aed lower the score for folder results
A search of other scores shows highest is 500, except for calculated score from String.Matcher
2019-12-09 08:29:20 +11:00
Jeremy Wu
4f38a953ac Add handling when query action keyword is empty 2019-12-09 08:28:22 +11:00
Jeremy Wu
f05767afe8 Add exceptions for unauth and arg not found when searching 2019-12-09 08:27:50 +11:00
Jeremy Wu
ddbf23df68 Merge pull request #90 from jjw24/fix_folderplugin_missingactionkeyword
Add action keyword when changing query in Folder plugin
2019-12-09 07:47:34 +11:00
Jeremy Wu
6c4ab3b7f4 add action keyword when changing qury 2019-12-09 07:45:19 +11:00
Jeremy Wu
4d902c01a6 Merge pull request #89 from theClueless/addAltHomeforFirstResult
Addalthomeforfirstresult
2019-12-08 21:12:16 +11:00
Jeremy Wu
d1a5ba2b8e Merge pull request #88 from theClueless/folderPluginUpdates
Folderpluginupdates
2019-12-08 21:10:58 +11:00
Jeremy Wu
982cac3472 Merge pull request #86 from theClueless/smallFixes
Smallfixes
2019-12-08 20:55:09 +11:00
AT
431f22283d added goto first result command (alt home) 2019-12-07 16:57:21 +02:00
AT
7e61b1ecad updated folder plugin 2019-12-07 12:44:58 +02:00
AT
a2d685815f updated 2019-12-06 22:36:00 +02:00
vldmr11080
014c2c5249 Use same zone set initially for new virtual desktops of same monitor (#815) 2019-12-06 15:09:27 +01:00
Kevin Horecka
add63d2dde FancyZones: Added ability to use mouse only for interactions with zones (#729) 2019-12-06 12:32:43 +01:00
yuyoyuppe
81bed3d3d5 Format shortcut_example_powertoy according to .clang-format 2019-12-06 14:16:24 +03:00
yuyoyuppe
f22a30ca87 Format shortcut_guide according to .clang-format 2019-12-06 14:16:24 +03:00
yuyoyuppe
946e74a918 Use .clang-format style file from Terminal project 2019-12-06 14:16:24 +03:00
yuyoyuppe
3cd3cf9830 Implement powershell script which enables devs to clang-format modified source files 2019-12-06 14:16:24 +03:00
yuyoyuppe
bc634c5f8f Add initial .clang-format style file 2019-12-06 14:16:24 +03:00
yuyoyuppe
7357e40d3f Use WinRT JSON parser instead of custom cpprestsdk solution (#822) 2019-12-06 11:40:23 +03:00
Jeremy Wu
92bde25a49 Add option to run as administrator for Shell plugin 2019-12-06 07:49:20 +11:00
Enrico Giordani
e714cb9e8b Now working on 0.14.2 (#871) 2019-12-05 19:09:32 +01:00
Bartosz Sosnowski
fed81c8e22 Improve FancyZones window filtering (#856)
Improve FancyZones window filtering and filter out dialog windows
2019-12-04 17:53:54 +01:00
vldmr11080
3a65d5ce23 Revert: Keep window in their zone after layout changes (#852) 2019-12-04 01:55:12 +01:00
Clint Rutkas
6d482cd934 Merge pull request #849 from matthidinger/patch-1
Add link to releases tab
2019-12-03 15:35:10 -08:00
AT
02511b7785 some more 2019-12-04 00:15:46 +02:00
AT
b3fdc4bb96 updated user selected record 2019-12-03 23:37:55 +02:00
AT
c90dd0e818 updated top most record 2019-12-03 23:02:24 +02:00
Bartosz Sosnowski
0e2d93c630 Make FancyZones not zone invisible, child and tool windows
Fixes "Move newly created windows to their last known zone"
2019-12-03 19:45:03 +01:00
Matt Hidinger
de328c9dfd Add link to releases tab 2019-12-03 10:33:16 -08:00
SysC0mp
f4a2f67db3 Fix wrong comparison parameter
Wrong string was used for FuzzySearch comparison which resulted wrong highlighted letters in the results.
2019-12-03 19:23:01 +01:00
SysC0mp
601d6f37af Highlight how results matched 2019-12-03 15:31:23 +01:00
SysC0mp
a004ef65af Set title & subtitle highlight data 2019-12-03 15:31:23 +01:00
SysC0mp
8997c27819 Add highlight converter component 2019-12-03 15:31:23 +01:00
SysC0mp
2aeceb7ea8 Fix tests for new search precision handling 2019-12-03 15:31:23 +01:00
SysC0mp
627e99859d Directly calculate pinyin if needed
The MatchResult will always get the maximum score from either
ScoreForPinyin() or CalculateSearchScore(). ScoreForPinyin() is
completely dependant on the "ShouldUsePinyin" global setting.
2019-12-03 15:31:23 +01:00
SysC0mp
6ebca7fa7c Apply search precision filter on assignment
The search precision must be used, so it makes sense to apply the filter
directly on score assignment. Score will be "0" if precision filter
was not met.
2019-12-03 15:31:23 +01:00
SysC0mp
3d55ad783e Only pass needed setting to Alphabet
As Alphabet class is static, its methods could be used without
ever calling Alphabet.initialize(_settings) beforehand which would end
in an exception.  Therefor only _shouldUsePinyin settings needed will
be transferred with a given default value.
2019-12-03 15:31:08 +01:00
SysC0mp
05f66f9bea Improve code formatting 2019-12-03 15:31:07 +01:00
Jeremy Wu
434ba82705 Fix build fail from task reindex run 2019-12-03 15:31:07 +01:00
Enrico Giordani
cbe6d19c79 Update FancyZone README for v0.14.0 (#806) 2019-12-02 18:00:14 +01:00
Jeremy Wu
b47e7f068c Merge pull request #83 from theClueless/smallFixes
Smallfixes
2019-12-01 17:49:30 +11:00
Jeremy Wu
20a59a2c58 Merge pull request #82 from theClueless/fixProgramLock
Fixprogramlock
2019-12-01 17:46:00 +11:00
vldmr11080
57845a2739 Don't flash current zone setup when focused window is in full screen (#796) 2019-11-30 14:38:27 +01:00
vldmr11080
9a8ab29330 Reverse logic for keep windows in their zones when fancyzone layout changes (#812) 2019-11-30 12:15:16 +01:00
AT
406cc71f96 remove unused new list 2019-11-29 02:05:48 +02:00
AT
132d0631d2 program lock bug 2019-11-29 01:38:50 +02:00
Enrico Giordani
3095ade94c Now working on 0.14.1 (#797) 2019-11-28 11:06:23 +01:00
yuyoyuppe
221df3d26d Fix lack of tray icon #268 by handling initial Shell_NotifyIcon failure (#789)
* Fix lack of tray icon #268 by handling initial Shell_NotifyIcon failure
2019-11-27 17:19:10 +03:00
yuyoyuppe
40db3a5d7d Wix installer: kill explorer if shellext is detected (#790) 2019-11-27 16:53:18 +03:00
Bartosz Sosnowski
ee1a1fd614 Prevent number being swallow while dragging. (#788) 2019-11-27 10:32:09 +01:00
Chris Davis
8e8be502fd Handle DPI change gracefully (#786)
* Ensure icon in context menu is not leaked

* Hande theme/dpi size change gracefully
2019-11-26 19:45:18 -08:00
Bartosz Sosnowski
ae4413d0aa Improve key code to key name mapping. (#784)
Use the key detected by WebUI and our mapping only for from_settings call.
Replace the old Win + ~ with the correct value
2019-11-26 16:14:34 +01:00
Enrico Giordani
51b791f9c0 Version 0.14.0 (#782) 2019-11-26 11:46:22 +01:00
Mike Harsh
767c3c942b Update README.md 2019-11-25 06:11:34 -08:00
Mike Harsh
3fcace6660 December update with info on 0.14, 0.15 and 0.16 2019-11-25 06:10:44 -08:00
Mike Harsh
4c600f5748 Updated shortcut key information 2019-11-25 06:06:29 -08:00
Bartosz Sosnowski
d84342733d Prevent ShortcutGuide from crashing when it is being disabled while shown. 2019-11-25 15:06:06 +01:00
Bartosz Sosnowski
d6f0f9ec0e FancyZones settings: show proper hotkey even when wrong key was saved before
This makes the Hotkey settings object ignore the key value stored in
json. Instead it will be deduced from the current keyboard layout and
the vk_code.
2019-11-25 11:54:10 +01:00
Bartosz Sosnowski
fbc922fe97 Add some margins to settings icons 2019-11-22 16:19:36 +01:00
Enrico Giordani
4be84e035f revert overrideSnapHotkeys logic after regression (#756) 2019-11-22 10:56:11 +01:00
Bartosz Sosnowski
254474d12d Make the hotkey control display correct key
Credit to @doterik for the idea in https://github.com/microsoft/PowerToys/issues/700#issuecomment-554329895

RApplies to https://github.com/microsoft/PowerToys/issues/700
2019-11-20 10:00:53 +01:00
Bartosz Sosnowski
5615987ea2 Make some settings descriptions wrap correctly
Applies to https://github.com/microsoft/PowerToys/issues/712
2019-11-20 10:00:53 +01:00
Bartosz Sosnowski
3a93246f08 More padding after PowerToy description
Applies to https://github.com/microsoft/PowerToys/issues/716
2019-11-20 10:00:53 +01:00
Bartosz Sosnowski
633784fae2 Use dynamic version in settings
Applies to https://github.com/microsoft/PowerToys/issues/736
2019-11-20 10:00:53 +01:00
Bret
af127468a6 Merge pull request #739 from TheMrJukes/master
FancyZones: Remove legacy editor
2019-11-19 10:00:49 -08:00
Clint Rutkas
f892c1284b Merge pull request #740 from docs-product/patch-1
Update README.md
2019-11-18 23:35:54 -08:00
docs
d762b5a017 Update README.md 2019-11-18 18:16:46 -08:00
Bret
28d7835327 User/bretan/fz remove legacy editor (#1)
* Removed and runs
Still needs some extra cleanup and addressing open issues

* Removed and runs
Still needs some extra cleanup and addressing open issues

* Clean

* Update
2019-11-18 15:29:42 -08:00
Bartosz Sosnowski
03438f9192 FancyZones: improve windows and apps filtering (#673)
Unifies the way windows are considered "interesting" by FancyZone.
Berfore the change WinKey + arrows would use different method than
dragging. This PR makes both use the WinKey + arrows method.

Cleans up FancyZones Settings.cpp by removing m_configStrings variable.
Contrary to its name it was used to create color picker control.

Adds a multiline option to the text input to settings. Uses this to
provide the user with a way to exclude certain apps from snapping to
zones.
2019-11-18 10:29:56 +01:00
Jeremy Wu
09c7955149 Merge pull request #80 from jjw24/fix_buildfail_task_reindex
Fix build fail from task reindex run
2019-11-17 18:07:40 +11:00
Jeremy Wu
9a2a88a703 Fix build fail from task reindex run 2019-11-17 18:06:25 +11:00
Jeremy Wu
820ae7d6e3 Merge branch 'master' into dev 2019-11-17 17:49:18 +11:00
Jeremy Wu
9c69f22f79 Merge pull request #77 from theClueless/pinyinInfraSettings
Pinyin infra settings
2019-11-17 17:35:08 +11:00
Jeremy Wu
85ad6b12ba Merge pull request #78 from theClueless/programSyncIssue
fixed lock issue
2019-11-17 17:30:04 +11:00
Jeremy Wu
79706b4a1a Merge pull request #76 from theClueless/uwpErrorFix
fixed broken log
2019-11-17 17:26:19 +11:00
theClueless
72180d4248 Merge branch 'dev' into uwpErrorFix 2019-11-16 11:48:09 +02:00
AT
8446c9563d fixed lock issue 2019-11-16 02:37:01 +02:00
Clint Rutkas
4df1d2093f Merge pull request #323 from casungo/master
Added Hi-res logo (4k PNG)
2019-11-15 15:28:18 -08:00
AT
9d98d26cc7 added log into Alphabet service since it can induce a large perf hit 2019-11-16 01:28:07 +02:00
AT
0c762e610f fixed broken log 2019-11-16 00:57:30 +02:00
casungo
62a019cc5d Moved png to doc/images 2019-11-15 23:41:05 +01:00
casungo
36c78e9686 Delete Logo-HiRes.png 2019-11-15 23:36:36 +01:00
AT
dcb9e34d59 alphabet settings 2019-11-16 00:34:27 +02:00
yuyoyuppe
cb13cfdda7 FancyZonesEditor: open a tab with the selected layout on startup (#715) 2019-11-15 10:40:10 +03:00
Clint Rutkas
0082f56b58 Update README.md 2019-11-13 15:45:59 -08:00
Chris Davis
b490a72c1d Ensure icon in context menu is not leaked (#709) 2019-11-13 14:13:14 -08:00
Chris Davis
3c0b479669 Merge pull request #697 from chrdavis/master
Update to PowerRename
2019-11-12 14:16:10 -08:00
Chris Davis
c9ad09226b Remove call to save_to_settings_file 2019-11-12 13:56:12 -08:00
yuyoyuppe
4e771ecfb7 initialize all OnThreadExecutor fields and clarify intent further (#701) 2019-11-12 18:29:54 +03:00
vldmr11080
be86cd4028 Customize system menu items through dedicated API (#677)
Document new interface changes.
2019-11-12 11:48:14 +01:00
Chris Davis
3ddbe92f37 Fix incorrect setting type in set_config handler 2019-11-11 23:28:31 -08:00
Chris Davis
ca67ea9b4c Merge pull request #2 from microsoft/master
PR from upstream
2019-11-11 23:03:31 -08:00
Clint Rutkas
9f78af29bf Merge pull request #694 from crutkas/master
adding in specs
2019-11-11 21:55:40 -08:00
Clint Rutkas
6821a05f76 Update Gif-Maker.md 2019-11-11 21:54:54 -08:00
Chris Davis
e328c5d505 * Fix crashing bug in event vector cleanup
* Fix warnings in settings.cpp
* Add settings to ui of powertoys
2019-11-11 20:58:39 -08:00
Clint Rutkas
f814d26a4a change of filename 2019-11-11 13:59:03 -08:00
Clint Rutkas
3fc06e6f4f Adding in specs from GH and from MIke's repo 2019-11-11 13:57:46 -08:00
Clint Rutkas
d876c267d6 Merge pull request #692 from microsoft/Readme-adjustment
Updates for readme
2019-11-11 13:16:29 -08:00
Clint Rutkas
1268a463ac Merge branch 'master' of https://github.com/microsoft/PowerToys 2019-11-11 12:46:06 -08:00
Clint Rutkas
e64d75a297 Revert "Work for .12 release. adjusted formatting a bit too"
This reverts commit cd9208b541.
2019-11-11 12:45:51 -08:00
Jeremy Wu
1960262435 Merge branch 'dev' 2019-11-12 07:41:09 +11:00
Jeremy Wu
c227062a37 Merge pull request #74 from jjw24/add_browserpath_userselection
Allow user to set browser for Url, WebSearch and BrowserBookmark plugins
2019-11-12 07:40:18 +11:00
Jeremy Wu
e9376af13c Merge pull request #73 from jjw24/allow_option_websearch_openintab
Add option to open web search in new tab or new window
2019-11-12 07:39:59 +11:00
Jeremy Wu
8edebb9f75 Merge branch 'add_browserpath_userselection' into dev 2019-11-12 07:22:32 +11:00
Jeremy Wu
8abe31341d Add browserpath display on load 2019-11-12 07:22:03 +11:00
Clint Rutkas
7900edc96c Merge pull request #691 from enricogior/remove-icons-from-root
Remove images from the root
2019-11-11 12:16:32 -08:00
Jeremy Wu
c1eca93609 update path textbox layout browser bookmarks 2019-11-12 07:16:32 +11:00
Jeremy Wu
cd953bc7b9 Update layout for Url plugin setting + remove apply button 2019-11-12 07:14:58 +11:00
Clint Rutkas
692421ee13 Updates for readme
- added in processor support type with issue links
- added in section to call out WinStore support issue
- reduced size on image
2019-11-11 11:57:10 -08:00
Chris Davis
1e89054897 * Ensure rename dialog is centered
* Ensure children are renamed before parent items
* Add settings handler
* Replace old text referencing smart rename with power rename
2019-11-11 11:00:42 -08:00
Enrico Giordani
ae1112ae11 Remove images from the root
the images are already available (and used) in doc/images/
2019-11-11 17:03:32 +01:00
Jeremy Wu
205b505242 Browser bookmarks update display and remove apply button 2019-11-11 22:29:15 +11:00
Jeremy Wu
f77cd9bd52 add browser path to open method in browser bookmark plugin 2019-11-11 22:05:19 +11:00
Jeremy Wu
11948c1cce Add browser selection to WebSearch plugin 2019-11-11 22:04:01 +11:00
Jeremy Wu
d7e6f97d9c Add browser path selection for browserbookmark plugin 2019-11-11 21:17:37 +11:00
Jeremy Wu
e324856301 Merge branch 'allow_option_websearch_openintab' into add_browserpath_userselection 2019-11-11 20:35:24 +11:00
Jeremy Wu
8fb873b085 Merge branch 'allow_option_websearch_openintab' into dev 2019-11-11 08:01:05 +11:00
Jeremy Wu
c17eb5fce5 Add user selection option for browserbookmark plugin 2019-11-11 08:00:31 +11:00
Jeremy Wu
91e9bdfc31 update 2019-11-11 07:36:58 +11:00
Jeremy Wu
c83edc1689 Add user selection option to url plugin 2019-11-11 06:49:17 +11:00
Jeremy Wu
dcbd4f3356 add option to Url plugin 2019-11-11 06:04:16 +11:00
Jeremy Wu
3929043eec fixed enable suggestions display 2019-11-11 05:59:37 +11:00
Jeremy Wu
23712ce590 Add option in WebSearches plugin settings panel for user selection 2019-11-10 20:43:40 +11:00
Jeremy Wu
adb2582856 Reverse out common open browser call and update open browser in tab 2019-11-10 20:15:14 +11:00
Jeremy Wu
3e292d7604 Reverse changes made to new browser window call 2019-11-10 20:12:45 +11:00
Jeremy Wu
b565d1ab76 Update naming 2019-11-10 19:51:50 +11:00
Jeremy Wu
2debabe664 Add option to open in tab for WebSearch plugin 2019-11-10 19:12:43 +11:00
Jeremy Wu
e1fc11218f Merge pull request #72 from theClueless/upstreamdev
Fix bug throwing exception for IcoPath null
2019-11-10 17:00:12 +11:00
AT
ed59d6acf5 when both icopath and icon delegdate are empty\null it will raise an exception.
currently delegate is verified and an error icon will be presented (same as before) but without raising an excpetion.
2019-11-09 11:55:53 +02:00
Chris Davis
800984489d Merge pull request #679 from chrdavis/master
Small bugs fixes to PowerRename
2019-11-09 00:31:34 -08:00
Chris Davis
997ea3a2f5 A couple minor bug fixes 2019-11-09 00:30:00 -08:00
Chris Davis
b9b60a1346 Merge pull request #1 from microsoft/master
Sync with master
2019-11-08 12:05:57 -08:00
yuyoyuppe
e8edbd5394 clear FancyZones::m_zoneWindowMap on Destroy, since it stores 'this', causing a leak (#664) 2019-11-07 22:05:12 +03:00
yuyoyuppe
f3e25ae3e6 Fix for different per-monitor scaling (#657)
* Use DPIAware::DEFAULT_DPI

* Make runner DPI-unaware, since it doesn't need to use a Per Monitor V2 DPI.

* Programmatically enable "Per Monitor V2 DPI" for the runner proccess and use a separate DPI-unaware thread for the corresponding API calls

* Increase PCH memory limit for settings project

* Address review issues

* Draw zoneWindows properly scaled
2019-11-07 21:56:32 +03:00
Jeremy Wu
93c952b344 Update README.md 2019-11-08 05:47:54 +11:00
Jeremy Wu
d818a15aea Merge branch 'master' into dev 2019-11-08 05:40:45 +11:00
Jeremy Wu
6a664d976f Merge pull request #69 from jjw24/fix_error_message
Fix error message logging for prod run
2019-11-08 05:39:06 +11:00
Jeremy Wu
5b7a71fb08 Fix missing required parameter in logger 2019-11-08 05:38:40 +11:00
Jeremy Wu
b29d83968b Merge branch 'master' into fix_error_message 2019-11-08 05:37:42 +11:00
Jeremy Wu
3e14c8e80d Merge branch 'dev' 2019-11-08 05:35:15 +11:00
Jeremy Wu
62bbe39bb4 Merge pull request #66 from jjw24/Add_known_programplugin_error
Add known errors during debug run
2019-11-08 05:34:33 +11:00
Jeremy Wu
4305ec34d0 Merge branch 'dev' 2019-11-08 05:33:11 +11:00
yuyoyuppe
a9518c2e55 Wrap around colorIndex in a colors array (#669) 2019-11-07 17:50:04 +01:00
yuyoyuppe
c4fc67301c Add switch to turn off keyboard hooks while debugging, since they could mess system-wide input 2019-11-07 09:52:34 +01:00
Jeremy Wu
c92db272e0 Merge pull request #68 from theClueless/uwpErrorFix
Uwperrorfix
2019-11-07 18:43:16 +11:00
Jeremy Wu
46274acb3e Add error message specification 2019-11-07 07:46:18 +11:00
Jeremy Wu
8a676c573a Fix error message logging for prod run 2019-11-07 07:40:04 +11:00
Enrico Giordani
39cbc59c12 Don't auto close issues referenced in PR (#663)
Remove space in checkboxes
2019-11-06 10:37:42 +01:00
Bartosz Sosnowski
96aa6ae3ef Fix Chrome tab move leaving zone highlighted (#656)
Fixes: https://github.com/microsoft/PowerToys/issues/534
2019-11-05 14:29:42 +01:00
Mike Harsh
94d07833c5 Removed the batch renamer now that PowerRename is released 2019-11-04 09:42:29 -08:00
Chris Davis
1d3acbe40b Merge pull request #655 from chrdavis/master
Switch to modeless experience and resize list view columns on dialog size
2019-11-03 22:24:39 -08:00
Chris Davis
389590e45d Ensure columns are resized when the dialog is resized. Also switch to a modeless experience instead of modal for the dialog. We no longer disable the parent window. 2019-11-03 22:22:35 -08:00
Chris Davis
ea3cb026c7 Merge pull request #647 from chrdavis/master
Fix single regex search replace bug
2019-11-01 23:57:22 -07:00
Chris Davis
1efe5bff9f Fix single regex search replace
Fix an issue where regular expression search and replace was not being done correctly when MatchAllOccurences is not specified.
2019-11-01 23:56:29 -07:00
AT
d2ca74ecdf added protection when creating uwp 2019-11-01 21:44:55 +02:00
Chris Davis
df4fa549ef Allow resizing of PowerRename dialog (#635) 2019-11-01 08:54:49 -07:00
Chris Davis
cc7a706f52 Fix painting issue with buttons after resize 2019-11-01 08:52:54 -07:00
Chris Davis
d4256dad30 Allow resizing of PowerRename dialog 2019-10-31 23:57:42 -07:00
Chris Davis
d9320b7c05 Update README.md
Add example for appending an extension to files that do not have an extension
2019-10-31 11:20:50 -07:00
Chris Davis
27c9a4a6a9 Update README.md
Add example to append an extension for files that do not have an extension
2019-10-31 11:05:23 -07:00
Hyeonwoo Kang
18d4dc7321 Update README.md (#626)
Fix broken links in src/modules/README.md
2019-10-31 18:25:45 +01:00
Bartosz Sosnowski
6f241ef001 Now working on 0.13.0 (#617) 2019-10-31 17:51:20 +01:00
Chris Davis
296be2fbd5 Update README.md
Added more info about regular expression usage
2019-10-31 09:14:30 -07:00
Chris Davis
c1957272ea Bug Fixes for PowerRename (#614)
* Bug Fixes

Fixes include:
* Pass parent HWND to UI so dialog is no longer appearing in top corner all the time
* Fix duplicate entries for PowerRename in context menu for shortcuts
* Fix crashing bug due to telemetry not getting unregistered on unload
* Ensure we show the file extension in the UI even if extensions are hidden in Windows Explorer

* Update PowerRenameExt.cpp

Fix missed line to set parent HWND
2019-10-31 06:57:38 -07:00
Bartosz Sosnowski
e6afd33621 Hide Shortcut Guide when screenshots are taken (#605) 2019-10-31 10:26:24 +01:00
Bartosz Sosnowski
b767773742 ShortcutGuide: change vk_code to suppress Start
Use reserved 0xCF virtual key-code to suppress the Start menu from
appearing instead of 0x07 which is used by the Xbox Controller for the
Xbox Guide button.

Fixes: https://github.com/microsoft/PowerToys/issues/595
2019-10-31 10:26:01 +01:00
Mike Harsh
52ead7ad1b Updated the news section 2019-10-29 10:10:01 -07:00
Mike Harsh
b8e083f8fc Updated PowerRename image with the new name 2019-10-29 10:07:18 -07:00
Mike Harsh
6e3f8bdefd Merge pull request #577 from crutkas/master
prepping for 0.12 release
2019-10-29 10:04:21 -07:00
Clint Rutkas
8e55f2bf58 prepping for 0.12 release
Adjusted formatting a bit based on a linting project, also added in privacy policy.
2019-10-29 04:12:47 -07:00
Clint Rutkas
cd9208b541 Work for .12 release. adjusted formatting a bit too 2019-10-29 04:08:11 -07:00
Enrico Giordani
a58e99f942 Fix setup event names (#576) 2019-10-29 11:38:41 +01:00
Enrico Giordani
248a66fa46 Add index-dark.html to the setup (#575) 2019-10-29 10:40:43 +01:00
Enrico Giordani
3e9a0ea925 version 0.12.0 (#573) 2019-10-28 22:24:25 +01:00
Enrico Giordani
78a2c325c3 Remove whitespace in "Power Rename" (#570)
Use PT version number
2019-10-28 21:48:52 +01:00
Bartosz Sosnowski
ad1f1afed0 Settings: fix default theme selected option (#571)
The call to load_general_settings will throw an exception if the
settings.json file for the general settings is not present. This leaves
settings_theme variable uninitialized, resulting in no value selected in
the general settings screen for users that did not make any changes to
the general settings. This fixes this issue by initializing the value
with a "system" default value.

Fixes: https://github.com/microsoft/PowerToys/issues/560
2019-10-28 21:04:37 +01:00
Enrico Giordani
dc34379344 Fix telemetry event names
add setting changed event for ShortcutGuide
2019-10-28 19:07:32 +01:00
Chris Davis
b892e731d9 Add new icon as well as telemetry (#563)
* Update icon and add telemetry calls

This change adds the new PowerRename icon and includes telemetry calls

* Ensure string is freed

* Update event naming convention

* Delete PowerRenameDemo.gif

Deleting this gif as I added it with a separate commit with the README.md update for PowerRename
2019-10-28 10:14:59 -07:00
Clint Rutkas
a1669fd34e Merge pull request #558 from microsoft/enricogior-patch-1
Update README.md
2019-10-27 11:45:05 -07:00
Jeremy Wu
67e53906f0 Merge branch 'dev' 2019-10-27 21:00:05 +11:00
Jeremy Wu
cde7f2ab1c Merge pull request #63 from jjw24/add_contextmenu_return_afterselection
Add return to main query window from context menu after selection
2019-10-27 20:50:28 +11:00
Jeremy Wu
1cd9c57f87 Merge pull request #62 from jjw24/add_hidedeactive_defaulttrue
Set HideWhenDeactive default as true
2019-10-27 20:49:19 +11:00
Jeremy Wu
c625ad32c5 Merge pull request #60 from jjw24/update_allow_plugindisabled_default
Fix plugin start up disabled by default + disabling Everything & HelloWorldCSharp plugins
2019-10-27 20:47:56 +11:00
Jeremy Wu
15eca63ff0 Merge pull request #31 from jjw24/enable_userselected_programloading
Enable users to configure what programs to load
2019-10-27 20:43:50 +11:00
Jeremy Wu
d149df2a6e Merge branch 'master' into enable_userselected_programloading 2019-10-27 20:43:22 +11:00
Jeremy Wu
30fdcf4efb Merge pull request #24 from jjw24/add_reindix_program_suffix
Add reindex call to Plugin.Program file suffixes update
2019-10-27 20:41:43 +11:00
Jeremy Wu
ea54abdfde Add file being held by another process error to known
This occurs during app initialisation, and add empty list to allow continuing during debug
2019-10-27 19:04:10 +11:00
Chris Davis
70ce6705dd Update README.md
More details on usage and demo gif addition
2019-10-26 22:47:47 -07:00
Chris Davis
5cee2e8a53 Delete foo 2019-10-26 22:28:10 -07:00
Chris Davis
484c902cf1 Add PowerRename demo gif 2019-10-26 22:25:09 -07:00
Chris Davis
b8f202642d Create foo 2019-10-26 22:24:35 -07:00
Chris Davis
fdbe909f3c Add PowerRename entry 2019-10-26 22:22:28 -07:00
Jeremy Wu
2757dc7205 Add known error when trying to retrieve UWP program's thumbnail 2019-10-27 14:22:50 +11:00
Jeremy Wu
e35ad892eb Merge branch 'add_dedicated_programplugin_logger' into dev 2019-10-27 12:28:26 +11:00
Jeremy Wu
140e2a026e Merge branch 'dev' into add_dedicated_programplugin_logger 2019-10-27 12:23:16 +11:00
Jeremy Wu
c89ab4e47c Merge remote-tracking branch 'origin/dev' into dev 2019-10-27 12:22:31 +11:00
Jeremy Wu
ab05e34805 Merge pull request #61 from theClueless/defualtMatchOption
Defualt match option
2019-10-27 12:21:13 +11:00
AT
4a201c1890 defualt match option and some small updates to help testing 2019-10-26 11:30:51 +03:00
Clint Rutkas
cb566739be Merge pull request #559 from microsoft/enricogior-patch-2
Update organization.md
2019-10-25 17:55:15 -07:00
Enrico Giordani
4da104c7a6 Update organization.md 2019-10-25 15:23:24 +02:00
Enrico Giordani
5cb54d3bbd Update README.md 2019-10-25 15:21:16 +02:00
Jeremy Wu
cb3e863957 Merge branch 'update_allow_plugindisabled_default' into dev 2019-10-25 13:12:34 +11:00
Jeremy Wu
8e20e54b53 Merge branch 'add_dedicated_programplugin_logger' into dev 2019-10-25 13:12:20 +11:00
Jeremy Wu
3cf4b4ed8b Create better logging dedicated for Programs plugin 2019-10-25 13:11:52 +11:00
Jeff Bogdan
329392b7d6 Merge pull request #542 from enricogior/small-screens-support
FZ Editor support for small screens
2019-10-24 14:07:10 -07:00
Jeff Wilcox
cc3c79102a Updating README
- Fixing casing of GitHub
- Making release link accessible and specific
- Correcting CLA text (labels were replaced with status checks)
2019-10-24 22:17:44 +02:00
Enrico Giordani
661ac4e841 revert change based on PR feedback 2019-10-24 21:36:09 +02:00
Jeremy Wu
10241a37c2 Merge branch 'enable_userselected_programloading' into dev 2019-10-24 13:33:00 +11:00
Jeremy Wu
0eb3a5cab3 update 2019-10-24 13:32:12 +11:00
Jeremy Wu
4945767bd8 prevent duplication from loading start menu programs 2019-10-24 13:31:09 +11:00
Jeremy Wu
217760148c remove white space 2019-10-24 12:59:47 +11:00
Jeremy Wu
210e219778 rename get program methods 2019-10-24 12:57:07 +11:00
Jeremy Wu
50896ee23b prevent duplication from loading custom program sources 2019-10-24 12:51:33 +11:00
Jeremy Wu
41432b4165 Remove duplicated programs loading from registry 2019-10-24 12:42:35 +11:00
Jeremy Wu
d41b8e7441 Merge branch 'enable_userselected_programloading' into dev 2019-10-24 10:06:59 +11:00
Jeremy Wu
aed17bde9b Merge branch 'add_hidedeactive_defaulttrue' into dev 2019-10-24 10:06:25 +11:00
Jeremy Wu
5b430fc376 Merge branch 'add_contextmenu_return_afterselection' into dev 2019-10-24 10:06:15 +11:00
Jeremy Wu
e1064275a0 Remove unused packages 2019-10-24 09:27:27 +11:00
Jeremy Wu
6f8d252dc6 add prevention from double clicking disable in context menu 2019-10-24 09:23:57 +11:00
Jeremy Wu
b89e296390 Set HideWhenDeactive default as true 2019-10-24 08:20:12 +11:00
Enrico Giordani
57cd5b5b10 don't quit the FZ editor if no layout is selected when clicking on the "Edit selected layout" (#548)
don't exit when clicking on "Apply" if no layout is selected

Credit to @AlexR3 for the fix. Alex provided a more extensive fix that  disable the button when no layout  is selected, but it requires more changes to the XAML and we preferred to avoid that now.
2019-10-23 21:22:36 +02:00
Bartosz Sosnowski
8f8f4506ff Make sure m_callback is not null before using it (#541) 2019-10-23 18:42:40 +02:00
Barath Nadar
70f40e207a Update README.md (#546)
a small typo at line 42
utilitity was written
changed to utility
2019-10-23 18:03:16 +02:00
Jeremy Wu
99b5e3565d Add return to main query window from context menu after selection 2019-10-23 20:20:33 +11:00
Jeremy Wu
6ec33db50e Set HelloWorldCSharp plugin as disabled by default 2019-10-23 16:19:22 +11:00
Jeremy Wu
aa4922840b Set Everything plugin as disabled by default 2019-10-23 16:18:55 +11:00
Jeremy Wu
28239c4a51 Fix to allow plugin to start up disabled as default 2019-10-23 16:18:21 +11:00
Enrico Giordani
b26ee410d1 Allow FZ Editor windows to minimize
this is useful on small screens
2019-10-22 14:16:16 +02:00
Enrico Giordani
425a418599 FZ Editor support for small screens 2019-10-22 09:52:17 +02:00
Bartosz Sosnowski
e4c7ed9c3e fixup: move the test to IsWindowVisible 2019-10-22 09:46:15 +02:00
Bartosz Sosnowski
b17106e88d Don't zone hidden windows 2019-10-22 09:46:15 +02:00
Enrico Giordani
4b1d2ee106 fix bug in multi monitor scenario (#528)
the zone rect.X and rect.Y coordinates are relative to the current monitor.
2019-10-22 08:19:15 +02:00
Enrico Giordani
a07a42624b Telemetry events
* Don't trace event on exit
change 'PowertoyModuleDeleter' to not call 'module->disable();' before 'module->destroy();' so the module can distinguish between being turned off and PowerToys exiting.
Code formatting.

* uppercase for event name

* Trace on/off event for ShortcutGuide module

* Trace the 'hide' event only if the guide was visible
'on_hide()' is invoked when the module is turned off, in that case don't trace the hide event.

* Remove spaces in data field names
Remove 'ShowGuide' event since it's not providing any useful data.

* Include build number in version number
2019-10-22 08:11:23 +02:00
Enrico Giordani
5fb59cd64a Add PowerRename icon (#537)
remove unused icons.
2019-10-21 13:28:21 +02:00
AT
8ee8f2c085 added the abitliy to opt out of pinyin in control panel and in program plug in - this give a major perf boost (and I'm guessing it is not relevant for most users) 2019-10-20 22:15:24 +03:00
Amir Tepper
a3ba2276e2 renamed for Defualt match option 2019-10-20 15:45:06 +03:00
Amir Tepper
aefc90dc19 revert the change so you need declare an IGNORE_UWP in order to not use the windwos SDK 2019-10-20 15:43:50 +03:00
Bartosz Sosnowski
123999febd Make Start menu not appear if Shortcut Guide fade-in animation completes. 2019-10-18 13:40:57 +02:00
Jeremy Wu
511c0dd17c Merge branch 'enable_userselected_programloading' into dev 2019-10-18 21:39:49 +11:00
Bartosz Sosnowski
68d3450ff4 Send undefined keystroke instead of Ctrl to suppress the start menu. 2019-10-18 10:23:30 +02:00
Chris Davis
e1d5dd263a Initial add of PowerRename from SmartRename repo (#499)
* Initial add of PowerRename from SmartRename repo
2019-10-17 20:57:19 -07:00
Jeremy Wu
e1b211ed8e update 2019-10-18 08:16:07 +11:00
Jeremy Wu
08f409993a update 2019-10-18 08:01:07 +11:00
Jeremy Wu
2e90cda34c Add reindex requirement for startup 2019-10-18 07:53:00 +11:00
Jeremy Wu
b97d674108 Update button positioning and label 2019-10-18 07:38:21 +11:00
Bartosz Sosnowski
04b9422ea6 Update settings-web module dependencies 2019-10-17 15:06:26 +02:00
Jeremy Wu
f8cbe053cc Add right click option on query to disable program 2019-10-17 22:47:00 +11:00
Amir Tepper
0e241a0fc5 added empty match option 2019-10-17 13:37:09 +03:00
Amir Tepper
31916384c1 update query defualt to string empty instead of null and update result plugin id to be internal 2019-10-17 13:11:23 +03:00
Amir Tepper
e6f17834a0 added sdk const by default 2019-10-17 12:21:57 +03:00
Amir Tepper
e1f2bc0a19 for unit tetsing 2019-10-17 12:19:52 +03:00
Jeremy Wu
12d3ca2d50 fix delete logic 2019-10-17 08:00:54 +11:00
Jeremy Wu
aa08125e43 fix directory drag drop 2019-10-17 07:35:27 +11:00
Jeremy Wu
9ce94a8398 update 2019-10-17 07:04:56 +11:00
Jeremy Wu
34a3535abe Add dynamic Delete to the Enable/Disable button 2019-10-17 06:43:18 +11:00
Bret
6d3ce4e3cd Merge pull request #504 from TheMrJukes/master
Fix rcNormalPosition in SetWindowPlacement
2019-10-16 09:54:08 -07:00
Jeremy Wu
ac79803f1b Update setting description summary 2019-10-16 22:38:44 +11:00
Jeremy Wu
006ec1abb8 Fix add button action to not duplicate + implement new model 2019-10-16 22:38:02 +11:00
Bartosz Sosnowski
41842048a3 Save the zone when window is moved by hotkeys 2019-10-16 10:23:22 +02:00
Bartosz Sosnowski
52b15f29ad Add darkmode support for the settings window (#494) 2019-10-16 10:21:44 +02:00
Enrico Giordani
c8039828fa fixes for zone resize 2019-10-16 01:14:40 +02:00
Daniel Eisterhold
67337ba269 Update README.md
Fix spelling.
2019-10-16 00:02:12 +02:00
Hugo Dahl
efb53e912a Update PowerToysBacklog.md
Fix typo in "Resource" on suggestion 3
2019-10-15 21:17:57 +02:00
Jeremy Wu
b2a47e6216 Add uniqiue identifier when adding customer user program source 2019-10-15 22:40:33 +11:00
Jeremy Wu
85638c23ae Add reindex call for enable/disable button
For when program source enable && disable + where program not in cache
2019-10-15 22:39:55 +11:00
Jeremy Wu
44c1c93e81 Change DisabledProgramSource class to inherit ProgramSource 2019-10-15 20:22:20 +11:00
Jeremy Wu
06c9ff49a0 Fix identation + display disabled program sources 2019-10-15 20:21:55 +11:00
Jeremy Wu
bbe72f52ba Update reindex call to use disabledprogramsources 2019-10-15 20:20:55 +11:00
Roger Fu
98a920d8cb Fix typo in organization.md 2019-10-15 09:09:09 +02:00
Sasha Pierson
788f37e467 put items in base yaml (#505) 2019-10-14 14:08:08 -07:00
Jeremy Wu
5793b85c5b Add Enable program source to Program plugin view 2019-10-15 08:05:21 +11:00
Bret Anderson
03cb04823c Fix rcNormalPosition in SetWindowPlacement 2019-10-14 12:17:55 -07:00
Jeremy Wu
eccc3717bc Merge branch 'master' into enable_userselected_programloading 2019-10-15 05:49:00 +11:00
Sasha Pierson
ba7698a473 ignore these (#502) 2019-10-14 10:28:31 -07:00
Enrico Giordani
f9be71eca5 Add version number to telemetry event
use defines from version.h in .rc files and other places.
2019-10-14 19:22:14 +02:00
Amir Tepper
a89b2ca450 remove the need for windows SDK 2019-10-14 14:22:20 +03:00
Jeremy Wu
41e5d2524b Merge branch 'add_reindix_program_suffix' into dev 2019-10-14 21:50:17 +11:00
Jeremy Wu
de55be515d Merge branch 'master' into add_reindix_program_suffix 2019-10-14 21:49:06 +11:00
Mike Harsh
eb1ef65fac October news update; note about not supporting Windows ARM 2019-10-11 11:28:52 -07:00
Jeremy Wu
6a0c6047e6 Merge branch 'master' into dev 2019-10-11 21:36:23 +11:00
Jeremy Wu
0db8898577 Merge pull request #55 from jjw24/dev
Merge PR 54 from Dev to Master
2019-10-11 21:27:47 +11:00
Jeremy Wu
a38695ff8a Merge pull request #50 from jjw24/enable_manual_reloaddata
Enable manual plugin data reload
2019-10-11 20:58:39 +11:00
Jeremy Wu
5ab45a1185 Merge pull request #51 from jjw24/update_browserbookmark_subtitle_wording
Remove BrowserBookmark subtitle wording "Boomark"
2019-10-11 20:56:27 +11:00
Jeremy Wu
805d892dbb Merge pull request #49 from jjw24/fix_websearch_globalpluginwildcard_search
Fix WebSearch plugin missing query part when searching with global wildcard
2019-10-11 20:55:33 +11:00
Sasha Pierson
f254afbd00 Ignore wix toolset items (#491)
* ignore wix dll

* allow buddy build test runs

* ignore another

* ignore wix dll

* ignore wix exe
2019-10-10 08:25:09 -07:00
Sasha Pierson
d7859f03db Dev/sashapie/wix nuget sacl (#489)
* point to csproj instead

* version

* rs1 container

* nuget

* nuget and msbuild

* vs2019

* msbuild path

* new container, clear up feeds

* change step names, verify build output

* further dig into outputs

* point to right output, add draft installer script

* narrow down output, change signing option

* new container, try installer

* set vs dev environment

* add NuGet package for WiX

* modify project files to use the WiX NuGet package
the MSI can now be built using MSBUILD after running nuget restore

* ready installer sln to use nuget

* install and build scripts and new container

* src/editor was renamed to src/settings, fix rebase error

* check if file is present

* try again
2019-10-09 12:21:21 -07:00
Antti Kuntsi
c069f6a555 fix FancyZonesEditor CLI dpi parsing with comma decimal locales 2019-10-09 16:18:36 +02:00
Patrick D
67c139cae9 change window name from window1 to FancyZones Editor
this will fix issue #453 but I'm not sure about the. I'll change it if required
2019-10-09 15:57:32 +02:00
Bartosz Sosnowski
892fed6011 Rename CustomSettingsScreen to ModuleSettings 2019-10-09 13:16:37 +02:00
Chris Davis
f77945111b Update PowerToys-settings.md
fix typos
2019-10-08 23:25:32 -07:00
Jeremy Wu
d5348cec70 remove duplicate 'success' as a result of merge from PR 50 2019-10-09 06:42:24 +11:00
Jeremy Wu
167ef06209 remove single white space, no code change 2019-10-09 06:24:42 +11:00
Jeremy Wu
d64a7cb739 Merge branch 'enable_manual_reloaddata' into dev 2019-10-09 06:18:55 +11:00
Jeremy Wu
b2584bb01b Add hide query window before actual reload + show success msg 2019-10-09 06:18:09 +11:00
Jeremy Wu
8b8cb12763 Add reload success message 2019-10-09 06:17:34 +11:00
Jeremy Wu
127e28a6f4 Remove task to wait for the program reload to complete 2019-10-09 06:16:53 +11:00
Jeremy Wu
73c46f2a85 Merge pull request #54 from ismailcarlik/dev
Added Turkish translation and some other i18n work.
2019-10-08 23:08:04 +11:00
Jeremy Wu
36e1fcc24a Reverse out test package for merge prep 2019-10-08 23:04:02 +11:00
İsmail Carlık
ed0e637207 fixed mistakes and added new translation keys 2019-10-08 14:48:56 +03:00
Enrico Giordani
6bea03fee9 update destination folder
this is a regression from renaming the 'editor' folder to 'settings'
2019-10-08 11:06:53 +02:00
İsmail Carlık
6b8a55f55b Added Turkish translation and some other i18n work. 2019-10-07 18:08:06 +03:00
Enrico Giordani
b50df5afe1 rename 'src/editor' to '/src/settings' 2019-10-07 15:58:21 +02:00
Enrico Giordani
4b273a7e39 exit Settings on fatal error
fix error checking
2019-10-07 14:39:54 +02:00
Bartosz Sosnowski
5f8c4ea143 Improve window filter to include start menu and Cortana search box. (#474)
Also moves GetProcessPath* functions to common, renaming both to
get_process_path.
2019-10-07 11:12:44 +02:00
Jeremy Wu
509049d95a update package 2019-10-06 15:41:36 +11:00
Jeremy Wu
83280de352 Merge branch 'update_browserbookmark_subtitle_wording' into dev 2019-10-06 15:39:45 +11:00
Jeremy Wu
a4e4c8baaa Remove BrowserBookmark subtitle wording "Boomark" 2019-10-06 15:39:12 +11:00
Jeremy Wu
00d27bc313 update package 2019-10-06 14:18:06 +11:00
Jeremy Wu
78ce12bc60 Merge branch 'enable_manual_reloaddata' into dev 2019-10-06 14:16:19 +11:00
Jeremy Wu
7e8d7ef0c0 Update wording 2019-10-06 13:52:04 +11:00
Jeremy Wu
d1c01f476d update 2019-10-06 13:48:52 +11:00
Jeremy Wu
bb3c38a3b1 update 2019-10-06 13:47:52 +11:00
Jeremy Wu
8ca6e8c478 Add command for user to call in Plugin.Sys 2019-10-06 13:45:36 +11:00
Jeremy Wu
96660ebd2a Exposes reload command via IPublicAPI 2019-10-06 13:44:38 +11:00
Jeremy Wu
9e69d01db7 Add reload call for Programs plugin 2019-10-06 13:15:06 +11:00
Jeremy Wu
1c015e31f1 Add IReloadable interface and method 2019-10-06 11:58:36 +10:00
Jeremy Wu
bf12b127ac Move code from Main class to Bookmarks class for cleanliness 2019-10-06 11:55:57 +10:00
Jeremy Wu
dd733092a1 create static bookmark class that will contain bookmark functions 2019-10-06 11:52:18 +10:00
Jeremy Wu
30fd5fcf14 Add interface that will be used by plugins 2019-10-06 11:50:25 +10:00
Jeremy Wu
483940a98d Allow PluginManager class to manage the reload call 2019-10-06 11:49:47 +10:00
Jeremy Wu
615bc17cec Expose reload data call in PublicAPIInstance wider usage 2019-10-06 11:48:40 +10:00
Jeremy Wu
94cf350e5c update package 2019-10-05 18:31:17 +10:00
Jeremy Wu
fa594e732f Merge branch 'fix_websearch_globalpluginwildcard_search' into dev 2019-10-05 18:29:00 +10:00
Jeremy Wu
4c0c9eb7fb Fix missing query part when using global wildcard sign
when using global wildcard sign that is the same as action keyword
2019-10-05 18:24:12 +10:00
Jeremy Wu
e9cd95fc6a Update package 2019-10-05 12:30:27 +10:00
Jeremy Wu
b68675d9fd Merge branch 'fix_firefox_bookmarks_notshowing' into dev 2019-10-05 12:20:39 +10:00
Jeremy Wu
d4abfffa2f Merge branch 'fix_firefox_bookmarks_plugin' into dev 2019-10-05 12:20:30 +10:00
Jeremy Wu
2d6d664f77 Merge pull request #46 from jjw24/fix_firefox_bookmarks_notshowing
Fix Firefox bookmarks not showing
2019-10-05 11:51:43 +10:00
Jeremy Wu
c1f08cf2ea Merge pull request #45 from jjw24/fix_firefox_bookmarks_plugin
Fix BrowserBookmarks plugin crashing when using Firefox bookmarks
2019-10-05 11:49:22 +10:00
Enrico Giordani
298a8787d5 drop privileges if running elevated
make sure the Settings process is not running elevated otherwise the WebView control will fail to start
2019-10-04 11:50:27 +02:00
Enrico Giordani
25510b23e1 remove mutex
the mutex is not necessary since the global window handler is set after the WM_CREATE event is fired.
2019-10-04 11:50:27 +02:00
Enrico Giordani
1fc351b088 code refactoring
fix casting warning
disable automatic window content refresh on resize, this is required by the upcoming support for WebView2
2019-10-04 11:50:27 +02:00
Enrico Giordani
7db627df1b global variable name 2019-10-04 11:50:27 +02:00
Enrico Giordani
c00733ea11 error handling and error checking 2019-10-04 11:50:27 +02:00
Enrico Giordani
7a94ee04c8 global variables name 2019-10-04 11:50:27 +02:00
Enrico Giordani
799ac545a2 supress warning C26451 arithmetic overflow 2019-10-04 11:50:27 +02:00
Enrico Giordani
11396015fb WinMain annotation and argument name 2019-10-04 11:50:27 +02:00
Enrico Giordani
6839b4773a NULL -> nullptr 2019-10-04 11:50:27 +02:00
Enrico Giordani
a2b0671d6d rename variables and functions
supress warning C26444
2019-10-04 11:50:27 +02:00
Enrico Giordani
99e5680f33 code refactoring for local stream uri 2019-10-04 11:50:27 +02:00
Enrico Giordani
f93bcd875a remove unused WebViewControlProcessOptions 2019-10-04 11:50:27 +02:00
Enrico Giordani
576f75d230 rename global variables 2019-10-04 11:50:27 +02:00
Enrico Giordani
f28e9bdb96 remove namespace prefix
since it is declared to be used
2019-10-04 11:50:27 +02:00
Enrico Giordani
7c43e814e9 remove unused libs 2019-10-04 11:50:27 +02:00
Bartosz Sosnowski
d96db2a408 Add dropdown settings UI element 2019-10-04 09:26:40 +02:00
reviewher
f1c2a66023 Cleanup LICENSE 2019-10-04 02:04:48 +02:00
Bartosz Sosnowski
bf82e04ddb Add radio button group and add theme select for ShortcutGuide 2019-10-03 10:12:36 +02:00
Jeremy Wu
f4d762c19b fix not closing the db connection after opening 2019-10-03 08:09:11 +10:00
Jeremy Wu
1ed7d34200 Update how plugin locates profile path 2019-10-03 08:06:56 +10:00
Jeremy Wu
4f5d805725 Merge branch 'fix_firefox_bookmarks_plugin' into fix_firefox_bookmarks_notshowing 2019-10-03 07:32:37 +10:00
Bartosz Sosnowski
64f606daaa Add a hotkey settings control and use it in FancyZones (#450)
Add a hotkey settings control and use it in FancyZones
2019-10-02 17:18:55 +02:00
Jeremy Wu
bde8dbba05 Fix BrowserBookmarks plugin for Firefox bookmarks 2019-10-02 07:28:25 +10:00
Jeremy Wu
f6b5404a04 Add package 2019-10-01 20:28:52 +10:00
Tomer Cohen
de08485db8 FancyZone documentation typo fixes
Miscellanious→Miscellaneous
maintining→maintaining
2019-09-30 19:54:05 +02:00
Jeremy Wu
ce9f2157e8 Update README.md 2019-09-30 22:58:02 +10:00
Jeremy Wu
64cd9c0dd2 Merge pull request #43 from jjw24/fix_controlpanel_search
Fix ControlPanel plugin search bug
2019-09-30 22:02:43 +10:00
Jeremy Wu
ab4cc74aca Merge pull request #42 from jjw24/merge_hibernation_function
Add hibernation feature Sys plugin from upstream Dev
2019-09-30 22:01:21 +10:00
Jeremy Wu
8cdb5fe346 Merge pull request #39 from jjw24/make_fuzzysearch_userfriendly
Make fuzzy search user friendly
2019-09-30 21:55:37 +10:00
Jeremy Wu
aae7987df0 update 2019-09-30 21:51:15 +10:00
Jeremy Wu
1817105c94 Fix ControlPanel plugin search bug 2019-09-30 21:11:34 +10:00
Jeremy Wu
88ca98c5a6 Add code 2019-09-30 20:03:06 +10:00
Jeremy Wu
8717cd077c Add ui for user preference selection 2019-09-29 20:04:30 +10:00
Jeremy Wu
9658af4aa9 update 2019-09-29 15:18:50 +10:00
Jeremy Wu
d40a79576b Update ControlPanel plugin with new code 2019-09-29 15:18:34 +10:00
Jeremy Wu
481bd4ac68 Update Sys plugin with new code 2019-09-29 15:18:05 +10:00
Jeremy Wu
6625a2afd3 Update mainview model with new code 2019-09-29 15:17:40 +10:00
Jeremy Wu
cc23495591 Update Program plugin with new code 2019-09-29 15:03:30 +10:00
Jeremy Wu
acd42f9cc6 Update test with updated method name 2019-09-29 14:43:49 +10:00
Jeremy Wu
a2e439a155 Update browserbookmark plugin with new code 2019-09-29 14:42:34 +10:00
Jeremy Wu
d0fac80eb4 Update browserbookmark plugin with new code 2019-09-29 14:30:33 +10:00
Jeremy Wu
3f90611edf Initial prep of settings and start up default 2019-09-29 14:27:46 +10:00
Jeremy Wu
d8a9630548 Update test 2019-09-29 14:27:07 +10:00
Jeremy Wu
fbb5d4a4a6 Make FuzzMatcher class obsolete and keep backwards compatibility 2019-09-29 14:26:15 +10:00
Jeremy Wu
e5753c54a6 Convert StringMatcher class to static and move code from FuzzySearch 2019-09-29 14:24:38 +10:00
Jeremy Wu
9ab9ea4c2e Add precision score tests for new function 2019-09-29 13:27:28 +10:00
cedi
faf1fae873 Modifying the startup behaviour of the FancyZones Layout Editor
Add setting to allow to choose if the FZ editor opens in the screen where mouse cursor is or where the active windows is.
2019-09-28 16:29:29 +02:00
Jeremy Wu
2301478b3f update 2019-09-29 00:09:56 +10:00
Jeremy Wu
df9b09eeae Add tests for fuzzy search and CalScore method 2019-09-29 00:09:03 +10:00
Jeremy Wu
7e7b2797d7 Update README.md 2019-09-28 11:34:59 +10:00
Jeremy Wu
287f1ae042 Update readme project description 2019-09-28 11:33:32 +10:00
ebbyd3
a8f0d3298f Fixed some minor code styling issues. Removed some minor redundant calculations for a small performance enhancement with zone detection. 2019-09-26 23:23:09 +02:00
ebbyd3
af67f7782c Added more in-depth check for zone determination when dragging around
the screen. Previously, it would iterate through the zones in the order
they were added and find the first one that fit the description. While
this works in most cases, if a user wants to have overlapping zones, it
is better to iterate through all of them and find the zone that the user
expects. There are cases where a zone is completely inaccessible on drag
because of the current code. To resolve this, the zone search will look
for the smallest zone possible. The reason I chose this solution is
because this guarantees that zones are at least reachable since if a
zone was bigger than another zone, then there must be a part of it
that is exposed, therefore reachable itself. Note: this solution is for
the scenario between two zones. More than that is not guaranteed. But I
feel like this covers enough scenarios to warrant its addition.

Example:
  ----------------
  - Zone1        -
  -  ----------  -
  -  - Zone2  -  -
  -  -        -  -
  -  ----------  -
  ----------------

Previously, zone2 was inaccessible since it would iterate through 1 then
2. But 1 would always be seen first when dragging a window. With this
fix it zone2 will be accessible.
2019-09-26 23:23:09 +02:00
Bartosz Sosnowski
50dae8a37b Make detection of windows creation more robust 2019-09-26 08:54:00 +02:00
Bartosz Sosnowski
0b86941a3b Make FancyZone distinguish different modern apps. 2019-09-26 08:54:00 +02:00
José I. Escudero
5d75feebdc Update README.md
Fix typo
2019-09-26 08:26:29 +02:00
Jeremy Wu
4bc665c0d2 Merge pull request #37 from austintrose/fix-typo
Fix typo 'launche' -> 'launcher'.
2019-09-26 08:17:39 +10:00
Jeremy Wu
5390d0668b Merge pull request #36 from jjw24/update_testframework_add_adaptor
Update Test Framework + Add Test Adaptor
2019-09-26 08:07:44 +10:00
Jeremy Wu
f55724bf58 Update Test Framework + Add Test Adaptor 2019-09-26 07:53:56 +10:00
Austin Rose
4300b3a9e0 Fix typo 'launche' -> 'launcher'. 2019-09-25 15:03:35 -04:00
Jeremy Wu
c085b263a7 Add latest release link to badge 2019-09-22 21:54:44 +10:00
Jeremy Wu
3877014f83 Add badges 2019-09-22 21:38:20 +10:00
Jeremy Wu
83b1613002 Update readme with release package link 2019-09-22 20:41:37 +10:00
Jeremy Wu
329f7a2e00 Merge pull request #17 from jjw24/update_websearch_when_suggestions_on
Speed up WebSearch plugin when suggestions turned on
2019-09-22 18:30:12 +10:00
Jeremy Wu
0e0785db7b Merge branch 'master' into update_websearch_when_suggestions_on 2019-09-22 18:25:53 +10:00
Jeremy Wu
9638a4a4e6 Merge pull request #16 from jjw24/tunoff_auto_update
Set AutoUpdates off as default setting
2019-09-22 17:52:50 +10:00
Jeremy Wu
91be43169c Merge pull request #19 from jjw24/enable_portable_mode
Enable portable mode
2019-09-22 17:45:21 +10:00
Jeremy Wu
01af7e36cd Merge pull request #30 from jjw24/fix_folderplugin_equalitybug
Fix Result object comparison bug causing Folders plugin to open wrong location
2019-09-22 17:39:17 +10:00
Jeremy Wu
d30ca2345e Merge pull request #23 from jjw24/add_save_settingsmenue_close
Save all plugins' settings on closing Settings menu
2019-09-22 17:33:18 +10:00
Mike Harsh
e8327eed36 Merge pull request #350 from mkevenaar/feature/GH-349
Add documentation about Chocolatey installation
2019-09-19 18:57:33 -07:00
Bartosz Sosnowski
b85f722e09 When moving window to a zone, ensure it does not remain in maximized state. 2019-09-18 10:41:51 +02:00
Bartosz Sosnowski
1a400bd7fd Filter windows moved by keyboard in FancyZones 2019-09-18 10:41:16 +02:00
Bartosz Sosnowski
487c485911 Move window filter to separate function, filter more windows. 2019-09-18 10:41:16 +02:00
Bret
a54e4299aa Merge pull request #391 from microsoft/user/bretan/fz-multimon
Fix for #195 - Fancy Zones new editor needs to support multiple monitors
Fix for #292 - Zone Editor opens behind PowerToys Window
2019-09-17 17:58:53 -07:00
Bret Anderson
209ec55912 PR feedback 2019-09-17 17:53:43 -07:00
Enrico Giordani
390ad0561f remove previous version upon upgrade
fix link to documentation
2019-09-17 09:53:05 +02:00
Bret Anderson
2c3c4e7519 Need to adjust x/y by scaled diff between monitor and work area rect 2019-09-16 12:48:55 -07:00
Bret Anderson
1078101631 Fix for #292 (Zone Editor opens behind PowerToys Window) 2019-09-15 13:48:56 -07:00
Bret Anderson
c0cdf7aaa6 Everything is working. 2019-09-15 13:34:00 -07:00
Gary Hunt
7eedda30db Fix typos in src/README.md (#364) 2019-09-14 12:53:54 +02:00
William Kent
54b883397c Use PTLicenseDlg in lieu of the standard license dialog 2019-09-13 18:07:15 +02:00
William Kent
f9c3ab3921 Use friendlier font in License.rtf file 2019-09-13 18:07:15 +02:00
Jeremy Wu
26be6ae7c5 bug fix 2019-09-13 07:26:24 +10:00
Jeremy Wu
31c0fc5742 Merge pull request #22 from jjw24/add_save_allsettings
Add to Sys plugin- save all Wox settings
2019-09-12 08:27:52 +10:00
Jeremy Wu
1a7f8d5319 Merge pull request #21 from jjw24/fix_success_word_typo
Fix typo of 'success'
2019-09-12 08:25:19 +10:00
Jeremy Wu
14e4a052bb Update btn name to 'All Programs' 2019-09-12 08:05:09 +10:00
Jeremy Wu
ae3d8860be Update multi-selection 2019-09-12 07:53:19 +10:00
Jeremy Wu
2eede422a4 Add sorting 2019-09-12 07:42:42 +10:00
Enrico Giordani
8221f5e641 activate zones for windows with custom titlebar
fixes https://github.com/microsoft/PowerToys/issues/209
2019-09-11 21:12:39 +02:00
Enrico Giordani
1430332b98 default 'flashZones' to false 2019-09-11 21:11:55 +02:00
Maurice Kevenaar
6cf3486387 Add documentation about Chocolatey installation (#349) 2019-09-11 12:51:03 +02:00
Bartosz Sosnowski
7aeac4996b Don't show the tasklist arrows when taskbar is autohide (#340)
Ref: https://github.com/microsoft/PowerToys/issues/291
2019-09-11 12:38:58 +02:00
Bartosz Sosnowski
1737128b1d Make Alt-F4 always close the settings window (#334)
Fixes: https://github.com/microsoft/PowerToys/issues/289
2019-09-11 12:38:40 +02:00
Bartosz Sosnowski
8ac6db8b5a Fix cppcheck reported issues (#333)
Fixes: https://github.com/microsoft/PowerToys/issues/266
2019-09-11 12:38:20 +02:00
Jeremy Wu
24debbf349 remove debug code 2019-09-11 08:05:20 +10:00
Jeremy Wu
81e252d564 Update load programsources with uniqueidentifier 2019-09-11 08:01:38 +10:00
Jeremy Wu
1ca9389110 Update class to inherite from Settings.ProgramSource 2019-09-11 07:16:38 +10:00
Jeremy Wu
10fb76377c Update disable logic and add unique identifier for programs 2019-09-10 07:57:03 +10:00
William Kent
12cd7bb49f Advertise shortcuts
* Change shortcut to advertised

Note that I had to remove the ability to not install a
Start Menu shortcut, as advertised shortcuts must always
be installed.

Also note that I had to change the "Core" feature to always
be installed (disabling Install-on-Demand) as having that
turned on broke the Scheduled Task installer.

* Disable ARPNOMODIFY
2019-09-09 18:19:17 +02:00
casungo
38029efe50 Added Hi-res logo (4k PNG) 2019-09-09 16:58:37 +02:00
Enrico Giordani
21bf5b11d7 add build status to readme 2019-09-09 15:40:47 +02:00
Enrico Giordani
bc0495fe79 Update CI pipeline
update Visual Studio version to 16
move CI pipeline to .pipelines folder
2019-09-09 15:13:21 +02:00
Alaric von Teplitz
ffa1b1e6a3 Cleanup settings-web (#280) 2019-09-09 13:47:18 +02:00
Bret Anderson
d4c8c84445 Pass DPI through to editor. It is more reliable. 2019-09-08 23:53:30 -07:00
Bret Anderson
3836aaa9d1 Almost working. Doesn't apply on my small monitor running at 150% scaling. 2019-09-08 14:54:44 -07:00
Jeremy Wu
4a6242b3a0 Add initial disable program code 2019-09-08 22:18:55 +10:00
Jeremy Wu
b540cc8ac4 Refactor Plugins.Program 2019-09-08 22:16:47 +10:00
Bret Anderson
e562b29ecd Editor should come up on the monitor with the foreground window. Defaults to primary monitor if there is no foreground window. 2019-09-08 01:47:12 -07:00
Jeremy Wu
5fb0402216 Updated button positions and name 2019-09-07 16:28:16 +10:00
Jeremy Wu
bc202ecc98 Add disable programs functionality 2019-09-07 15:58:13 +10:00
Ewout ter Hoeven
5f5402aa0a [ImgBot] Optimize images (#225)
*Total -- 3,268.30kb -> 2,584.85kb (20.91%)

/doc/images/example_powertoy/settings.png -- 126.39kb -> 56.48kb (55.31%)
/src/modules/fancyzones/FancyZonesSettings.png -- 177.46kb -> 116.84kb (34.16%)
/Logo.jpg -- 37.32kb -> 26.97kb (27.73%)
/doc/images/Logo.jpg -- 37.32kb -> 26.97kb (27.73%)
/src/modules/fancyzones/Picker.png -- 35.86kb -> 26.45kb (26.25%)
/doc/images/runner/tray.png -- 3.40kb -> 2.52kb (25.95%)
/doc/images/shortcut_guide/usage.png -- 95.94kb -> 72.74kb (24.19%)
/doc/images/shortcut_guide/settings.png -- 40.33kb -> 30.76kb (23.73%)
/src/modules/fancyzones/FancyZones.png -- 1,266.91kb -> 982.63kb (22.44%)
/doc/images/MTNDWidget.jpg -- 5.74kb -> 4.73kb (17.59%)
/MTNDWidget.jpg -- 5.74kb -> 4.73kb (17.59%)
/src/modules/fancyzones/TableEditor.png -- 288.73kb -> 237.93kb (17.59%)
/WindowsKeyShortcutGuide.jpg -- 323.86kb -> 273.17kb (15.65%)
/doc/images/WindowsKeyShortcutGuide.jpg -- 323.86kb -> 273.17kb (15.65%)
/src/modules/fancyzones/WindowEditor.png -- 277.95kb -> 245.99kb (11.5%)
/doc/images/FZTutorial.jpg -- 214.13kb -> 195.51kb (8.7%)
/src/settings-web/src/components/fabric.png -- 7.36kb -> 7.26kb (1.31%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2019-09-06 19:53:54 +02:00
trident-job
335bf0cb95 Fix typos in README.md (#258)
Minor typos and more concise language.
2019-09-06 19:42:57 +02:00
Jay Tulk
6acddfb0c7 Fix typo in fancyzones/README.md (#259) 2019-09-06 19:27:45 +02:00
Exec
8d53187d0f Fix typo in PowerToysBacklog.md (#231) 2019-09-06 19:16:04 +02:00
John
164462da8b Fix typo in README.md (#221) 2019-09-06 19:12:34 +02:00
Michael Cooper
fdab2d01b9 Escape less-than-sign in fancyzones/README.md (#222)
Without escaping this is rendered as an HTML, which is invisible.
2019-09-06 19:12:03 +02:00
rayburger
d855853699 Fix typo in PowerToysBacklog.md (#220) 2019-09-06 19:07:48 +02:00
Chase Maier
b686880e7f Fix typo in README.md (#214) 2019-09-06 19:05:57 +02:00
Rich Turner
8d80f32a95 Fix typo in src/README.md (#207) 2019-09-06 19:03:36 +02:00
Enrico Giordani
8ef4339057 Update backlog links (#201)
- Update FZ backlog links
- Update ShortcutGuide backlog links
2019-09-06 19:02:33 +02:00
Steven Robbins
71b38bba88 Fix typo in README.md (#153) 2019-09-06 19:01:39 +02:00
Jeremy Wu
9d3f0d45d5 Add display of all loaded applications 2019-09-06 08:06:51 +10:00
Jeremy Wu
f51c391e84 Enable user selected program loading only
Update logic, add program source only loading
2019-09-05 08:05:17 +10:00
Jeremy Wu
909fbaab95 Fix Result object comparison bug 2019-08-31 16:58:15 +10:00
Jeremy Wu
67655d15cc Add reindex when updating plugin.program suffix 2019-08-25 17:40:59 +10:00
Jeremy Wu
83b4a3da30 Save all plugins' settings on settings menu close 2019-08-23 07:38:39 +10:00
Jeremy Wu
768a195c10 update showmsg 2019-08-23 07:20:50 +10:00
Jeremy Wu
16e8cfdf31 Revert get translation as none is provided 2019-08-22 22:03:51 +10:00
Jeremy Wu
c0c55a7af8 Add to Sys plugin- save all Wox settings 2019-08-22 21:37:36 +10:00
Jeremy Wu
e625dc63b4 Fix typo 'success' 2019-08-21 20:18:20 +10:00
Jeremy Wu
dedac39d99 Increase error message fade from 1 to 5 secs 2019-08-21 08:37:50 +10:00
Jeremy Wu
fe6d7d16c8 Handling chrome browser not installed 2019-08-21 08:30:18 +10:00
Jeremy Wu
de8e248f29 update 2019-08-20 21:47:03 +10:00
Jeremy Wu
7217ef5ec5 Move comment to PR 2019-08-20 21:43:32 +10:00
Jeremy Wu
6a33173384 Enable portable mode 2019-08-20 21:29:30 +10:00
Jeremy Wu
b520b26bd0 Add check null for event 2019-08-20 10:25:37 +10:00
Jeremy Wu
1761f63acd Merge pull request #13 from jjw24/update_browserbookmarks_open_newbrowser
Update BrowserBookmarks plugin to open in new browser window
2019-08-20 07:48:14 +10:00
Jeremy Wu
e58b09c1ea Merge branch 'master' into update_browserbookmarks_open_newbrowser 2019-08-20 07:47:01 +10:00
Jeremy Wu
7c7e2c4f3d Merge pull request #12 from jjw24/add_sharedplugin_commands
Add shared commands for all default plugins to use
2019-08-20 07:45:24 +10:00
Jeremy Wu
20abcaa011 Merge pull request #6 from jjw24/update_websearchplugin_as_systemplugin
Wox.Plugin.WebSearches- Update plugin to search web without specific action key word
2019-08-20 07:43:37 +10:00
Jeremy Wu
297e6543de Merge pull request #5 from jjw24/update_plugin_openurl_newbrowser
Wox.Plugin.URL- Open URL in new window browser
2019-08-20 07:38:09 +10:00
Jeremy Wu
ec54f9a549 Update README.md build instructions for VS 2017/2019 2019-08-20 06:44:51 +10:00
Jeremy Wu
c064ca3ca9 Merge pull request #4 from jjw24/update_readme_buildinstructions
Update readme VS build instructions
2019-08-20 06:37:28 +10:00
Jeremy Wu
56bd31fe22 Update README.md build instructions for VS 2017/2019 2019-08-20 06:30:25 +10:00
Jeremy Wu
ac8e042333 Speed up WebSearch plugin when suggestions turned on 2019-08-19 21:14:29 +10:00
Jeremy Wu
718b189f19 Merge pull request #11 from jjw24/add_browserbookmarks_defaultplugin
Add BrowserBookmarks plugin as default plugin
2019-08-15 23:06:16 +10:00
Jeremy Wu
1fa9543e47 Set AutoUpdates off as default setting 2019-08-13 20:02:26 +10:00
Jeremy Wu
563209d080 Merge pull request #7 from jjw24/fix_postbuild_script
Fix post_build.ps1 script failing due to PS ExecutionPolicy
2019-08-07 20:04:55 +10:00
Jeremy Wu
ca71c700c7 Merge pull request #10 from jjw24/add_blackandwhite_theme
Add Black And White Theme
2019-08-07 19:58:49 +10:00
Jeremy Wu
585e2627bf Use shared command and open in new browser window 2019-08-06 22:23:41 +10:00
Jeremy Wu
579bbe2b86 Merge branch 'add_sharedplugin_commands' into update_browserbookmarks_open_newbrowser 2019-08-06 22:20:57 +10:00
Jeremy Wu
5138644dc8 Merge branch 'add_browserbookmarks_defaultplugin' into update_browserbookmarks_open_newbrowser 2019-08-06 22:15:10 +10:00
Jeremy Wu
2310d36604 update 2019-08-06 22:00:38 +10:00
Jeremy Wu
7d9e848edb use shared commands 2019-08-06 21:58:46 +10:00
Jeremy Wu
a3770a8947 Merge branch 'add_sharedplugin_commands' into update_plugin_openurl_newbrowser 2019-08-06 21:51:46 +10:00
Jeremy Wu
06d4a82706 Add shared commands and move to shared 2019-08-06 21:49:51 +10:00
Jeremy Wu
c0095dc385 Merge branch 'add_sharedplugin_commands' into update_websearchplugin_as_systemplugin 2019-08-06 21:40:46 +10:00
Jeremy Wu
07060a8584 Add shared commands for plugins to use 2019-08-06 21:27:54 +10:00
Jeremy Wu
784e54f217 Add BrowserBooks plugin as default plugin 2019-08-06 20:36:28 +10:00
Jeremy Wu
104156d084 update 2019-08-04 22:08:38 +10:00
Jeremy Wu
48180b7ee8 update 2019-08-04 22:06:32 +10:00
Jeremy Wu
ef34a63f7a Update Initialisation of plugin method
Handle when plugin has a mix of global and non-global action keywords
2019-08-04 21:47:05 +10:00
Jeremy Wu
45483809c5 Update RemoveActionKeyword method
Update the method to handle removal when a plugin has multiple ActionKeywords ie. mix of global and non-global ActionKeywords
2019-08-04 21:44:56 +10:00
Jeremy Wu
9d89c1d692 update 2019-08-04 21:38:36 +10:00
Jeremy Wu
cb4fde9a0b Mini refactor
Move Process.Start to static class level
2019-08-04 11:42:08 +10:00
Jeremy Wu
8f17a49a24 Add Black And White Theme 2019-08-02 22:35:58 +10:00
Jeremy Wu
e18e923ac6 Bugfix and update
Fix bug when no browser path specified will be null instead of .Length == 0. 

Add open url in new browser window by default
2019-08-02 22:14:08 +10:00
Jeremy Wu
ed3b939477 Merge branch 'fix_postbuild_script' into update_plugin_openurl_newbrowser 2019-08-02 19:31:14 +10:00
Jeremy Wu
977d21c929 Bug fix- Edit & Delete buttons will crash if selected search source is null
SelectedSearchSource will be null if the user clicks on Edit or Delete after finishing with previous edit and not highlighting the search source again.
2019-08-02 13:18:38 +10:00
Jeremy Wu
89f0cdffc7 Update Main.cs 2019-08-02 12:32:02 +10:00
Jeremy Wu
9685dca4de Simplified command with Bypass 2019-08-02 00:39:08 +10:00
Jeremy Wu
010218b5ce Fix post_build.ps1 script failing due to PS ExecutionPolicy 2019-08-01 23:27:21 +10:00
Jeremy Wu
52252453d9 Update WebSearch plugin as System Plugin or User Plugin 2019-08-01 20:55:13 +10:00
Jeremy Wu
057108882f Open URL in new window browser 2019-08-01 20:52:50 +10:00
Jeremy Wu
90b3cfcf9f Merge pull request #3 from itziksi/branch_itziksi_1
Added build instructions for VS 2019
2019-08-01 08:00:46 +10:00
Jeremy Wu
4231d7b50a Merge pull request #1 from jjw24/add_folderplugin_displaylocation
Add folder location display to Wox.Plugin.Folder
2019-07-31 20:39:26 +10:00
Jeremy Wu
b85632cc99 Add folder location display 2019-07-31 20:11:50 +10:00
Itzik S
1b81570338 added build instructions for VS 2019 2019-06-24 18:01:00 +03:00
CHU Zhaowei
0e03b951d4 Merge branch 'dev'
# Conflicts:
#	Wox.Core/Resource/AvailableLanguages.cs
2019-06-21 14:34:11 +08:00
Jan-Henrich Mattfeld
6d05600eaf Link F1 help to current website (#2414)
Pressing F1 leads to the - now unavailable - old wox website.

The updated URL should be http://doc.wox.one/

#2413
2019-06-21 14:29:18 +08:00
ScratchBuild
807422c377 Update Japanese translation (#2511) 2019-06-20 16:53:37 +08:00
蝦米
768cef57c7 fix cs 2019-03-05 03:21:39 +08:00
CHU Zhaowei
bcf1d32cdd follow up for new language support 2019-03-04 11:04:04 +08:00
Vladimír Kubala
def67eca3b Added Slovak translation (#2376) 2019-03-04 11:02:14 +08:00
蝦米
388a8b6346 fix #2363 theme font changes both whenever one is changed 2019-03-04 11:00:57 +08:00
Vladimír Kubala
7ab937cf7b Added Slovak translation (#2376) 2019-02-25 22:34:00 +08:00
jhdxr
4bb460528f Merge branch 'dev' 2019-02-23 04:06:45 +08:00
KallistiMan
1ab636a4f1 fix unexpected hovor without mouse moving (#2368)
fix #975 
close #2043
2019-02-23 04:05:10 +08:00
magicdmer
a6e82475a3 Add everything plugin context menu and add settings in Url plugin (#2299)
1. Add useful context menu items in everything
2. Add settings in Url plugin, can set browser path

* let url plugin support multi Languages
2019-02-23 04:03:59 +08:00
蝦米
9de8b16aeb update badge to show status for master only
[ci skip][skip ci]
2018-12-25 14:32:33 +08:00
jhdxr
0baf7744bc error handling for theme loader 2018-12-25 13:33:50 +08:00
jhdxr
580c2b9e84 use Pack URIs for Base.xaml (as a demo for 3rd party themes) 2018-12-25 13:33:50 +08:00
jhdxr
84673f26f3 support user defined theme files in %appdata% (close #1267, #662) 2018-12-25 13:33:50 +08:00
Kanglai Qian
ab1efb0749 Open With Editor (#2261) 2018-12-25 13:17:35 +08:00
jhdxr
4b0532b072 fix loading language package for it, nb-NO, pt-br, sr, uk-UA (fix #1319) 2018-12-23 02:57:29 +08:00
jhdxr
d458500113 fix #1456 Error when empty recycle bin 2018-12-22 14:44:40 +08:00
jhdxr
d9fe2e0974 improve chinese translation 2018-12-22 14:44:39 +08:00
jhdxr
3fddb77564 validate path before save (fix #1869) 2018-12-22 14:44:39 +08:00
蝦米
3dd7a82dcc Update README.md 2018-12-22 12:48:16 +08:00
jhdxr
3dac6fd1c3 hide tray icon (close #563) 2018-12-19 12:15:05 +08:00
jhdxr
7fe01f0764 skip calculation of pinyin score if source string is too long (#1683) 2018-12-19 12:14:52 +08:00
Benedikt Strasser
d7da96b387 Removed FontFamily entries in Base Theme (#2186) 2018-12-19 00:36:28 +08:00
Patrick Sletvold
3f95584dac Translate to Norwegian Bokmål (dev branch, properly this time) (#2184)
* Translate to Norwegian Bokmål

* Add Norwegian to AvailableLanguages.cs
2018-12-18 23:36:02 +08:00
Lorenzo Marcolin
de5578c8f7 Add Italian language (#2143)
* Add Italian language
2018-12-18 23:35:52 +08:00
Tulio Leao
1d410fdb7d Add support for Portuguese (Brazil) (#2119)
Translates Language file into Portuguese (Brazil)
2018-12-18 23:35:43 +08:00
蝦米
54545d0bfc Update ISSUE_TEMPLATE.md
provide chinese translation for issue template
2018-07-16 00:04:21 +08:00
jhdxr
01131b2296 fix appveyor build failure 2018-07-16 00:04:09 +08:00
Zepp
9b2239d4fa UWP HiDPI icon support (#1515)
* Add HiDPI support for UWP on Windows 10

* Code structure improvement
2018-07-15 23:32:22 +08:00
Jonathan Clark
1b55201fbd Fix typo (#2055) 2018-07-15 23:32:08 +08:00
Dandjinh
be43c2156f skip broken folder when re-index (#2004)
* skip broken folder when re-index

* add log for DirectoryNotFoundException
2018-07-15 23:31:54 +08:00
Đorđe Pekić
c393db9c9f Added support for Serbian (#2029) 2018-07-15 23:31:40 +08:00
庄秋彬
4a749ce00d Update README.md (#2006)
Update README.md, set latest version link to 1.3.524
2018-07-15 11:25:19 +08:00
Yuichi Hirano
13e6c5eefc Translate some words into Japanese. (#1982) 2018-04-30 10:23:39 +08:00
Boris Makogonyuk
343b904607 ImageLoader now loads everything through IShellItemImageFactory::GetImage (#1836)
* Added thumbnail loader

* Deleted old shell icon extraction logic.
Refactored ImageLoader.Load to improve readibility.

* Moved error handling down into the API call itself

* Minor renamings in ImageLoader

* Load icons only for files that are not images. Fixes stutters when loading folders.

* Added the ability to load a full image through ImageLoader.
ImageLoader.Load now also has a "loadFullImage" parameter.

* Max image cache is now 5000 instead of 200.

* Added some commentaries on how thumbnails are loaded
2018-04-30 10:20:36 +08:00
bao-qian
553a6e8ff6 back 2018-02-25 02:56:41 +08:00
bao-qian
9423b8da57 update website 2018-02-25 02:18:35 +08:00
jhdxr
a7470345ff disable input method when binding hotkey (fix #1876) 2018-02-14 12:12:12 +08:00
Boris Makogonyuk
2aca12a49c Issue template update (#1846)
* Update to ISSUE_TEMPLATE

Template partially based on https://github.com/facebook/react-native/blob/master/.github/ISSUE_TEMPLATE.md
2018-01-19 23:12:39 +01:00
Duncan Ogilvie
810ee422a1 Execute the OpenResultComand with Ctrl and Alt modifiers when pressing enter (#1685) 2017-12-25 02:10:46 +08:00
Boris Makogonyuk
1c10ee106e Program paths fix + #1779 (#1780)
* ProgramPaths now searches for files on a per-folder basis using a Queue instead of calling EnumerateFiles.  This allows us to escape permission errors.
Issue #1779 is fixed because of this too.
2017-12-24 11:52:53 +01:00
Boris Makogonyuk
e251c59da1 Merge pull request #1783 from smallg0at/patch-1
Update README.md
2017-12-24 11:44:59 +01:00
YC L
df35844bb2 Update README.md
minor fix for "pinyin" part
2017-12-24 17:08:14 +08:00
Boris Makogonyuk
d8006087a2 Merge pull request #1778 from lances101/hotfix/detailed-aggregate-exception
Changed exception formatting back to default ToString call
2017-12-22 20:00:48 +01:00
Boris Makogonyuk Vasylev
1fa91cbb6f Changed ReportWindow's exception formatting back to Exception.ToString() call as it is more detailed and provides more information for AggregateException and others. 2017-12-22 19:44:40 +01:00
Boris Makogonyuk
3aacfdca20 Merge pull request #1776 from lances101/feature/cache-being-used
#1394 caching fix
2017-12-22 17:05:31 +01:00
Boris Makogonyuk Vasylev
b886422416 Added file length check before loading cache and removed BinaryStorage.Save when file was already locked. 2017-12-22 16:59:55 +01:00
Keul
a29ea0374c Updated French Translation (#1522)
added :
lastQueryMode
LastQueryPreserved
LastQuerySelected
LastQueryEmpty
checkUpdatesFailed
downloadUpdatesFailed
2017-12-16 15:10:34 +08:00
jhdxr
e6a09e7cf7 Merge branch 'dev' 2017-10-21 16:44:21 +08:00
jhdxr
83282ebcb8 fix #1397 action keywords should not be set to empty string 2017-10-21 16:23:22 +08:00
jhdxr
d3169b10f8 Merge branch 'master' into dev 2017-10-21 15:11:53 +08:00
蝦米
197c22c7fe Merge pull request #1628 from shufflecode/dev
since Yamp is not maintained anymore, replaced with Mages
2017-10-21 14:59:40 +08:00
Michael Wirth
cfe923b8c4 re-enabled exception during debug 2017-10-17 20:01:41 +02:00
Michael Wirth
742048f24e Fixed typos and swapped Brackets for parentheses, Corrections due to PR 2017-10-16 20:17:53 +02:00
Michael Wirth
36111aa001 since Yamp is not maintained anymore, i switched it for Mages
https://github.com/FlorianRappl/Mages
fixes also #1022
2017-10-15 20:21:23 +02:00
bao-qian
8a0f80181e Notes for maintenance 2017-04-23 23:33:53 +01:00
Hüseyin Tüfekçilerli
fd4fec5340 Removed extra leading space char (#1368) 2017-04-11 15:43:10 +01:00
LiuJianhua
808523b814 Fix folder UnauthorizedAccessException #1282 #1357 2017-04-11 15:40:11 +01:00
Michael Eichhorn
5640b2157f ContextMenu 4: for non c# plugin #1366 2017-04-11 14:50:26 +01:00
Michael Eichhorn
f3d79d906e ContextMenu 3: Format #1366 2017-04-11 14:50:25 +01:00
Michael Eichhorn
5198f70ebf ContextMenu 2: Extract DeserializedResult #1366 2017-04-11 14:50:25 +01:00
Michael Eichhorn
de12208d4a ContextMenu 1: Rename #1366 2017-04-11 14:50:09 +01:00
bao-qian
e20247d055 Merge pull request #1364 from martian-f/calculator-user-locale
Convert calculator numbers from/to user locale.
2017-04-11 11:45:34 +01:00
martian-f
0862326a79 Convert calculator numbers from/to user locale.
Tries to convert numbers in query string to invariant culture format before passing to YAMP, and the other way around when presenting result from
YAMP. Nothing fancy, just a regular expression scanning for substrings consisting of number, decimal separator and group separator, trying a
parse and convert on them. Translation is skipped if no conversion between user locale and invariant culture number format is necessary.

Closes #436.
2017-04-10 23:43:23 +02:00
bao-qian
16531653ab Merge branch 'master' into dev 2017-04-07 11:55:56 +01:00
bao-qian
2f3a2d495a Update ISSUE_TEMPLATE.md 2017-04-06 16:28:16 +01:00
bao-qian
baa9837702 Update ISSUE_TEMPLATE.md 2017-04-06 15:26:11 +01:00
bao-qian
cfa7d9820b remove annoying fail prompt #1339 2017-04-05 13:59:16 +01:00
bao-qian
3554d9fda2 Handle more exceptions for UWP #1309 2017-04-01 19:15:23 +01:00
bao-qian
cb2eebef40 More exception info 2017-04-01 18:56:29 +01:00
bao-qian
f4d0cc4dd1 Misc 2017-04-01 18:50:22 +01:00
bao-qian
d31347c0e0 Revert "Remove first chance exception"
This reverts commit 4aa4d98c08f3bcc176bd3ac1b9b718ab98298ca4.
The squirrel crash is not caused by this #1320
2017-04-01 18:45:57 +01:00
bao-qian
911a43337b error report windows won't crashs 2017-04-01 13:13:53 +01:00
bao-qian
f62f15cea7 Decouple runtime info and dependencies info 2017-04-01 13:02:07 +01:00
bao-qian
dcd27a5f7a Add more NonNull check 2017-04-01 12:54:05 +01:00
bao-qian
bf4c4561ce Remove some useless code for error reporting 2017-04-01 12:49:51 +01:00
bao-qian
cc6c18b5ad fix debug info 2017-04-01 12:49:51 +01:00
bao-qian
6b536ced92 let it crash 2017-04-01 12:49:51 +01:00
bao-qian
60ca0cbae3 Add build instruction 2017-03-31 11:39:20 +01:00
bao-qian
b16abfba9c Remove more duplicated dll 2017-03-30 18:52:49 +01:00
bao-qian
0a34143388 Ensure UpdateManager is Disposed #1320 2017-03-30 18:43:52 +01:00
bao-qian
1e79f202f4 Merge branch 'master' of https://github.com/Wox-launcher/Wox 2017-03-29 10:19:12 +01:00
bao-qian
90f7b5259b Remove first chance exception
Remove first chance exception,
it crash the app frequently when squirrel throw/catch exception internally.
2017-03-28 22:30:55 +01:00
bao-qian
2d143abda6 update #1266 help info 2017-03-27 00:18:47 +01:00
bao-qian
128671f5e9 fix github update error handling #1266 2017-03-27 00:10:02 +01:00
bao-qian
6945eb548f Add default config 2017-03-14 20:28:05 +00:00
bao-qian
ca3cd36887 add script into solution 2017-03-14 02:24:41 +00:00
bao-qian
31da08d186 fixup 2017-03-14 02:16:30 +00:00
bao-qian
1c90b09e2d Make the name same as post build event in vs 2017-03-14 02:14:20 +00:00
bao-qian
18056139fd ignore more files 2017-03-14 02:12:34 +00:00
bao-qian
0898632ba4 Clean solution items 2017-03-14 02:12:34 +00:00
bao-qian
f79a493083 Merge appveor build script and visual studio build script into one 2017-03-14 02:12:33 +00:00
bao-qian
2b159e24a7 fixup 2017-03-14 02:12:33 +00:00
bao-qian
d8032836bf Rewrite appveyor build script 2017-03-14 00:45:41 +00:00
bao-qian
b881f3c1c8 misc 2017-03-07 19:37:38 +00:00
bao-qian
6f42bcfa4f Use own update manager, so we can pass proxy #1266 2017-03-07 19:23:42 +00:00
bao-qian
ade6c46cca let it crash for http get 2017-03-07 18:57:47 +00:00
bao-qian
c6d0bf8d98 misc 2017-03-07 18:33:18 +00:00
bao-qian
c41035058a Merge update logic #1266 2017-03-06 01:54:06 +00:00
bao-qian
e66f7a206e Add new version popup 2017-03-06 01:30:47 +00:00
bao-qian
cec3d986a7 add local buil script 2017-03-06 01:04:51 +00:00
bao-qian
c6e65b4e24 test 2017-03-06 01:01:58 +00:00
bao-qian
ccb7e5270c Misc 2017-03-06 00:05:03 +00:00
bao-qian
ff29b6e84f fix can't catch exception issue
- Origin code can't catch exception in code, and all exceptions goes
into first chance exception hanlding.
- releated: #1266
- http://stackoverflow.com/a/5383408/2833083
-
https://msdn.microsoft.com/en-us/magazine/jj991977.aspx?f=255&MSPPError=-2147217396
2017-03-05 23:59:10 +00:00
bao-qian
6ed9e09451 More exception info 2017-03-04 16:41:03 +00:00
bao-qian
75ce6d42d0 update nuget package 2017-03-04 16:35:24 +00:00
Jason Ko
3bb0b93c79 make the font list sorted (#1263) fix #790 2017-03-02 11:07:52 +00:00
bao-qian
87834b74ef Update ISSUE_TEMPLATE.md 2017-03-02 00:42:23 +00:00
bao-qian
6ef434f26d Update README.md 2017-03-02 00:30:06 +00:00
bao-qian
15b4152dce fixup 2017-03-02 00:29:18 +00:00
bao-qian
4aa19d700d Update README.md 2017-03-02 00:27:16 +00:00
bao-qian
3edf667958 Add coding style 2017-03-02 00:16:58 +00:00
bao-qian
c9b3b6c1b8 Merge pull request #1265 from bagjob/master
Add Korean language.
2017-03-01 23:49:53 +00:00
bao-qian
6e3bc5e65d Save more 2017-03-01 23:47:50 +00:00
bao-qian
886e35477e Add more error handling, fix #1252 2017-03-01 23:21:34 +00:00
bagjob
2f7fbea567 Add Korean language.
Add Korean language.
2017-03-01 15:17:39 -08:00
bao-qian
b7ecbd3b51 fixup 2017-02-28 00:31:46 +00:00
bao-qian
92b636ab75 Don't remove /Theme/Dark.xaml 2017-02-28 00:12:53 +00:00
bao-qian
28c57f75e8 Fix #1255 2017-02-28 00:12:06 +00:00
bao-qian
cb1305c87f typo 2017-02-27 23:21:08 +00:00
bao-qian
392bfcca2d Add universal pretty print method 2017-02-26 20:44:35 +00:00
bao-qian
2f95b8f6b2 more error handling for i18n 2017-02-26 20:44:35 +00:00
bao-qian
96330b6f03 Update README.md 2017-02-24 12:25:39 +00:00
bao-qian
b509ae78b7 Merge pull request #1250 from jhdxr/bugfix/1199
PageUp/PageDown for result list
2017-02-23 14:52:30 +00:00
bao-qian
3a8a16bf48 fix #1252 #1251 2017-02-23 11:13:05 +00:00
jhdxr
8d2cab7b12 fix #1199 PageUp/PageDown for result list 2017-02-23 13:04:44 +08:00
bao-qian
9034d6194a update badges 2017-02-23 02:17:42 +00:00
bao-qian
f8e400deb9 fix mainwindow position issue #823 #1172
thanks @slav for https://github.com/Wox-launcher/Wox/pull/960
2017-02-23 02:01:27 +00:00
bao-qian
13290efac1 misc 2017-02-21 11:54:39 +00:00
bao-qian
1df4da210f remove useless code 2017-02-21 11:54:39 +00:00
bao-qian
d0c426a7f9 Completely rewrite resource load / update / remove
1. part of #468
2. fix #1245, bug introduced in 7e1c77beddf2c978fa1440e799fec4eb9554739d
2017-02-21 11:53:57 +00:00
bao-qian
17e5bb8d53 catch more json exception 2017-02-20 12:16:49 +00:00
bao-qian
019cd51333 click event will occur when setting is clicked and cause blur in center of setting window #711 2017-02-20 00:33:32 +00:00
bao-qian
d62458b07b Fix unremoved resource bug #711 2017-02-19 23:29:13 +00:00
bao-qian
2e01153363 remove blur when there is no blur in theme #711 2017-02-19 22:28:42 +00:00
bao-qian
50ef826114 add note 2017-02-19 20:27:25 +00:00
bao-qian
ddb28a9b90 null enhance 2017-02-13 09:38:48 +00:00
bao-qian
0656ddd50a fixup 30dfad29f6100153247db4edb6753d8db5112888 2017-02-13 00:49:09 +00:00
bao-qian
afdbf0adbf Add last query mode #1141 #1050
https://github.com/Wox-launcher/Wox/issues/1050
https://github.com/Wox-launcher/Wox/issues/1141
2017-02-12 22:34:12 +00:00
bao-qian
a5f5098beb backup existing broken file 2017-02-12 20:03:32 +00:00
bao-qian
e5c98e61c8 add nonnull check 2017-02-12 19:40:28 +00:00
bao-qian
2793c8dd03 add issue link to comment 2017-02-12 17:56:39 +00:00
bao-qian
e4e226b2c7 force pinyin library static constructor initialize #858 2017-02-12 17:22:56 +00:00
bao-qian
46f98ded10 change init order 2017-02-12 17:10:42 +00:00
bao-qian
86b2391543 Cache for pinyin https://github.com/Wox-launcher/Wox/issues/1189 2017-02-12 16:57:41 +00:00
bao-qian
00ea4f8701 Move initia and save from MainViewModel to App 2017-02-12 16:57:24 +00:00
bao-qian
f7c9a12510 remove storage dependency from jsonstorage 2017-02-07 00:21:39 +00:00
bao-qian
b6a7e049e6 fix null bug in 4c07698c99a1e30f441af5d2782a679c5ff68968 2017-02-07 00:20:55 +00:00
bao-qian
45b3863353 move constant into local scope 2017-02-06 22:16:58 +00:00
bao-qian
c2764fda45 use proper plugin metadata 2017-02-06 22:15:28 +00:00
bao-qian
d358a9d9fd remove useless virtual method 2017-02-06 22:04:52 +00:00
bao-qian
1a08ba0b57 Merge pull request #1210 from barakyaari/master
Fixed typo in HelloWorldCSharp plugin
2017-01-30 00:32:13 +00:00
bao-qian
974efc55ac remove custom exception 2017-01-30 00:26:11 +00:00
BarakYaari
dc46277d0c Fixed typo in HelloWorldCSharp 2017-01-28 11:29:06 +02:00
bao-qian
052048ad4c unfied log format validation and log format example 2017-01-25 00:24:00 +00:00
bao-qian
c361d8d16b fixup 2017-01-25 00:23:28 +00:00
bao-qian
045fd20d8c Rewrite all log message format 2017-01-24 01:02:32 +00:00
bao-qian
fdfd684e7a remove useless stream.close and more log 2017-01-14 14:21:02 +00:00
bao-qian
0a2592893d rename cache file 2017-01-14 14:10:30 +00:00
bao-qian
4c6c310e0a Use cache type directly instead of a new class, decouple binarystorage and storage 2017-01-13 15:40:32 +00:00
bao-qian
a5aa305773 remove unused stop watcher 2017-01-13 15:39:46 +00:00
bao-qian
196cf1cd18 faster startup time for control panel plugin 2017-01-13 14:15:48 +00:00
bao-qian
0cf654aa88 fixup 2017-01-13 01:32:54 +00:00
bao-qian
2cf20f4b6c genuine cache for program plugin 2017-01-13 01:21:00 +00:00
bao-qian
6b0ba94288 format 2017-01-12 20:50:17 +00:00
bao-qian
870ad008bf calculate score for addtional info 2017-01-12 20:50:12 +00:00
bao-qian
767aaa80a0 add pinyin cache for control panel plugin #858 2017-01-12 20:49:13 +00:00
bao-qian
5eadaa08aa prefill pinyin cache for program plugin #858 2017-01-12 20:47:29 +00:00
bao-qian
5cdc3e694f Add cache for pinyin query #858 2017-01-12 20:46:40 +00:00
bao-qian
e96382fdd9 auto change log level 2017-01-12 19:52:37 +00:00
bao-qian
a486319cc2 temp fix for slow pinyin query #1017 2017-01-12 02:16:53 +00:00
bao-qian
1432866798 add startup boundary to log 2016-11-30 02:35:56 +00:00
bao-qian
4a375b6563 fix 0 init time record 2016-11-30 01:08:29 +00:00
bao-qian
743658032a speedup program load time 2016-11-30 01:07:48 +00:00
bao-qian
e2f8f5095f fix stopwatch logging type 2016-11-30 00:39:03 +00:00
bao-qian
a22ca5b57f refactoring stopwatch 2016-11-30 00:32:30 +00:00
bao-qian
b43c6c00bb enhance exception logging 2016-11-30 00:32:30 +00:00
bao-qian
c56e4557f9 enhance lnk program exception handling 2016-11-30 00:32:30 +00:00
bao-qian
6b640ea55e fix location null 2016-11-29 01:55:11 +00:00
bao-qian
70f8a771a9 reorganize methods 2016-11-29 01:46:29 +00:00
bao-qian
4b4aec5bbd fix log logic 2016-11-29 01:26:47 +00:00
bao-qian
00198d5e49 fix image 2016-11-29 01:23:40 +00:00
bao-qian
8a19d25396 rewrite uwp by not using GetAppListEntriesAsync,
because
1. logo is not squarelogo44x44
2. can't get details info (background etc)
2016-11-29 01:23:40 +00:00
Enzo
8533f6edf1 Update Themes URL link 2016-11-29 01:23:40 +00:00
Enzo
bc9693d6f6 Updated French Translation 2016-11-29 01:23:40 +00:00
bao-qian
43a03d85a8 update ignore file 2016-11-21 22:03:23 +00:00
bao-qian
f0d63bed58 update nuget package version 2016-11-21 21:55:39 +00:00
bao-qian
0a3978ab8c update nuget package version 2016-11-18 00:29:36 +00:00
bao-qian
1c09b8baef Merge branch 'master' of https://github.com/Wox-launcher/Wox 2016-11-16 23:14:32 +00:00
Boris Makogonyuk
547b610454 Merge pull request #1012 from HA3IK/lang--uk-UA
Interface: added the Ukrainian language and corrected error in text in the Russian language
2016-11-11 23:05:49 +01:00
Boris Makogonyuk
9d39bed852 added getting started guide line 2016-11-11 22:12:55 +01:00
Boris Makogonyuk
70ff7cf74c 1.3.67 version link bumped to 1.3.183 2016-11-11 12:41:33 +01:00
Boris Makogonyuk
8908fb07a0 Merge pull request #1066 from jhdxr/patch-1
fixes typo in issue template
2016-11-08 20:10:25 +01:00
xiami
f2c4ac061c fix typo 2016-11-09 02:29:56 +08:00
HA3IK
b2871d8fc5 Corrected obvious error in the text in the template of Russian interface (ru.xaml) 2016-10-11 07:04:23 +01:00
HA3IK
f4c6e5a6fa Ukrainian language was added to the main list of languages 2016-10-11 06:47:34 +01:00
HA3IK
67d838b5fc Added new interface template (uk-UA.xaml) & was translated into the Ukrainian language 2016-10-11 06:44:26 +01:00
bao-qian
f15a354c29 comments 2016-09-06 01:25:00 +01:00
bao-qian
281e03055d Fix non exe lnk
for lnk like control panel.lnk, it has no target and no exe extension.
2016-09-06 01:16:42 +01:00
bao-qian
216e9c0125 fix uwp parts for #964 2016-09-05 22:41:09 +01:00
bao-qian
2c14f8b43b partial fix for #964 2016-09-05 22:30:29 +01:00
bao-qian
89a77feea7 temp hack for multipla application mismatch problem #198
e.g. mail and calendar, skype video and messaging

https://github.com/Wox-launcher/Wox/issues/198#issuecomment-244778783
2016-09-05 22:10:08 +01:00
bao-qian
5ca880c8fd Better logo handling for uwp #198 2016-09-05 20:33:31 +01:00
bao-qian
17671493bf Leave only exe programs from start menus #198 2016-09-05 18:08:30 +01:00
bao-qian
0d687eb348 fix js based application logo #198 2016-09-05 17:45:29 +01:00
bao-qian
1e01f94540 Merge branch 'master' into dev 2016-08-31 16:41:38 +01:00
Alex Meyer-Gleaves
335ef67971 Improve UWP indexing #954
1. enable WinJS based UWP
2. ms bug of InstalledLocation:
https://connect.microsoft.com/VisualStudio/feedback/details/1690879/vs2015-cannot-auto-uninstall-universal-windows-appss-debug-item
2016-08-31 16:39:13 +01:00
bao-qian
429d0c8df8 add common known problems 2016-08-30 21:11:33 +01:00
bao-qian
72b41f4322 fixup 2016-08-22 09:49:32 +01:00
bao-qian
fb5938280e Move context menu and socre into program model 2016-08-22 02:21:28 +01:00
bao-qian
2d72c58ae7 fixup 2016-08-22 02:21:28 +01:00
bao-qian
ad99e8edce Update README.md 2016-08-21 01:56:35 +01:00
bao-qian
d463f5a032 fixup 2016-08-20 21:46:48 +01:00
bao-qian
1415f74fe5 Check AppListEntry #198 2016-08-20 19:19:33 +01:00
bao-qian
8de84f03a0 Better title and subtitle 2016-08-20 18:50:14 +01:00
bao-qian
fe85ce5885 Fix multi application uwp package #198 2016-08-20 18:25:55 +01:00
bao-qian
9dc7142e4a fixup 2016-08-20 18:19:49 +01:00
bao-qian
34a8d0b99b fixup 2016-08-20 18:19:13 +01:00
bao-qian
176e2726e9 Fix unicode in lnk dexcrption 2016-08-20 18:18:41 +01:00
bao-qian
2e4a1680b9 Parallel linq everywhere
1. Parallel linq
2. remove depth
3. fix #257
2016-08-20 17:11:02 +01:00
bao-qian
1eddae9da6 Remove overlay of shortcut icon again
1. remove GDI dependency
2. remove unused pinvoke define
3. Remove overlay of shortcut icon
2016-08-20 13:10:33 +01:00
bao-qian
f217dbac51 fixup 2016-08-20 02:36:36 +01:00
bao-qian
eb74414b16 disable file watcher
Filewatcher will only watch directory given by user,
a bit useless.
disable for now
2016-08-20 01:18:43 +01:00
bao-qian
ee542f0fec Merge models 2016-08-20 01:17:28 +01:00
bao-qian
0c0ec29821 Add icon constant 2016-08-20 01:02:47 +01:00
bao-qian
955ce1dd2d Ignore broken cache #783 2016-08-20 01:02:20 +01:00
bao-qian
f32f37cfbb rename 2016-08-19 23:25:36 +01:00
bao-qian
8684788f1f rename 2016-08-19 23:25:13 +01:00
bao-qian
9e033d1673 rename 2016-08-19 23:24:21 +01:00
bao-qian
69c00d272b Fix can't find file exception caused by abnormal scale 2016-08-19 23:15:40 +01:00
bao-qian
19617e9dae Refactoring start menu source
1. refactoriong start menu source
2. fix depth problems involved in last commit
2016-08-19 23:05:59 +01:00
bao-qian
f8cc54d4f2 Refactoring App Paths source 2016-08-19 22:08:45 +01:00
bao-qian
8764aa9829 Remove suffixes from model 2016-08-19 20:34:20 +01:00
bao-qian
fb68f6eb60 Remove enable property from model 2016-08-19 19:16:06 +01:00
bao-qian
d09c42366a Remove bonus points 2016-08-19 19:09:11 +01:00
bao-qian
0298fa602a Code refactoring #198 2016-08-19 19:02:29 +01:00
bao-qian
30cbcbb3c4 Fix uwp background color / plated icon #198 2016-08-19 02:37:39 +01:00
bao-qian
1127d323d3 add missing dll 2016-08-18 01:29:45 +01:00
bao-qian
01e812aebf Initial support for uwp app #198
1. basic support, better than nothing...
2. thanks great contribution from @talynone
3. #198
2016-08-18 01:16:40 +01:00
bao-qian
e690bae7d1 Merge pull request #917 from meixger/issue846
Fixes issue #846 IndexOutOfRangeException when reading empty icon fro…
2016-08-15 14:58:24 +01:00
Martin Meixger
58c2c84120 Fixes issue #846 IndexOutOfRangeException when reading empty icon from registry in ControlPanel plugin 2016-08-10 14:33:58 +02:00
bao-qian
a96947c7e7 Merge pull request #904 from jondaniels/calc_fix3
fix typo preventing last PR from taking effect
2016-08-05 06:46:56 +01:00
Jon Daniels
45b40d903c fix typo preventing last PR from taking effect 2016-08-04 17:52:11 -07:00
bao-qian
b19033aa4f Merge pull request #903 from jondaniels/calc_fix2
added sqrt as calculator keyword too
2016-08-05 00:57:17 +01:00
Jon Daniels
adac0f3e51 added sqrt as calculator keyword too 2016-08-04 16:43:32 -07:00
bao-qian
3441482e8c Merge pull request #902 from jondaniels/calc_fix
added various operator keywords to calculator
2016-08-04 21:31:13 +01:00
Jon Daniels
781845905c added various keywords to calculator
Added functions I commonly use on e.g. google calculator but were missed by parser.

Specifically I added:
e (constant like pi)
tan, arcsin, and arctan
log and ln
2016-08-04 13:17:00 -07:00
bao-qian
b3c9b58350 Merge branch 'master' into dev 2016-08-03 23:19:19 +01:00
Salas
337a2cf319 update zh-tw locale strings for plugins (#898)
* update zh-tw locale strings for plugins
2016-08-03 23:18:57 +01:00
Salas
06fa04a448 update zh-tw locale strings 2016-08-03 23:17:35 +01:00
Gopal Adhikari
93e86b141d Change WindowIntelopHelper to WindowIntelopHelper (#887) 2016-08-01 14:12:53 +01:00
bao-qian
fc56027929 Merge branch 'dev' 2016-07-30 16:17:13 +01:00
Damir Ainullin
d2287328ad Simple fixes (#871) 2016-07-30 16:16:28 +01:00
bao-qian
b91834b813 Merge pull request #885 from zhiyue/dev
fixed the origin root images directory of web search plugin
2016-07-30 16:02:40 +01:00
zhiyue
8faf991bcb fixed the origin root directory of web search plugin ICon images directory. 2016-07-30 09:44:47 +08:00
bao-qian
84ac30b8d2 Merge pull request #884 from zhiyue/dev
fixed #881
2016-07-30 02:21:48 +01:00
zhiyue
0f17aebc52 fixed #881
could not normally display the Icon
2016-07-30 08:22:25 +08:00
bao-qian
2bff13d9e1 Merge branch 'master' into dev 2016-07-27 19:58:37 +01:00
bao-qian
7683db70cd Merge branch 'master' of https://github.com/Wox-launcher/Wox 2016-07-27 19:58:11 +01:00
bao-qian
94ba2ad24a Merge pull request #879 from he4d/dev
Added German and Danish language support
2016-07-27 19:57:53 +01:00
Tobias Tschinkowitz
e42a22d1f2 Added german and danish language support 2016-07-27 20:41:49 +02:00
Tobias Tschinkowitz
11b6946e00 Providing User Agent for Http.Download method (#874) 2016-07-27 14:25:16 +01:00
bao-qian
ba8a675eaa Update ISSUE_TEMPLATE.md 2016-07-22 15:30:16 +01:00
bao-qian
10f8941258 Program plugin: simple refactoring 2016-07-21 20:49:01 +01:00
bao-qian
0816fdf318 Program plugin: remove lock
lock is not needed since assignment is atomic
2016-07-21 20:07:23 +01:00
bao-qian
bcf43640fa Merge branch 'master' of https://github.com/Wox-launcher/Wox 2016-07-21 19:52:56 +01:00
bao-qian
1de68051e3 Program plugin: remove complicated inheritance 2016-07-21 19:52:48 +01:00
bao-qian
0c9015bb77 Program plugin: move files 2016-07-21 19:52:37 +01:00
bao-qian
a8c200f25a simple refactoring 2016-07-21 19:52:36 +01:00
Jordy Hulck
59fbb2acb1 Fix SearchSource editing when action keyword is not changed (#856)
* Fixed SearchSource edit

* Remove temp var
2016-07-21 19:52:35 +01:00
bao-qian
3b53527e9e fix #813 2016-07-21 19:52:25 +01:00
bao-qian
3c53c2c56c Program plugin: remove complicated inheritance 2016-07-21 19:51:52 +01:00
bao-qian
13a51b6bd3 move files 2016-07-21 19:51:52 +01:00
bao-qian
c8d81518cc simple refactoring 2016-07-21 19:51:52 +01:00
Jordy Hulck
390d49d599 Fix SearchSource editing when action keyword is not changed (#856)
* Fixed SearchSource edit

* Remove temp var
2016-07-21 14:50:37 +01:00
bao-qian
3604e6fa7d fix #813 #823 2016-07-20 23:37:06 +01:00
bao-qian
206532f195 add more exception info 2016-07-20 02:01:51 +01:00
bao-qian
c9f38fef45 fixup 2016-07-20 02:01:51 +01:00
bao-qian
b55c05095a Update ISSUE_TEMPLATE.md 2016-07-20 01:43:03 +01:00
Boris Makogonyuk
8f073c5b6f Hardcoded supported accents version 8 (Windows 8 is 6.2, Windows 7 is 6.1). (#817)
Added check before applying blur.
2016-07-20 00:30:15 +01:00
Jordy Hulck
f45ca180e9 Fixed hide on startup problem (#852)
* Fixed HideOnStartup
* Fixed tray icon not showing up and hiding properly
2016-07-20 00:25:36 +01:00
Søren Kottal
1eb549b137 Create da.xaml
Thanks for a great app - heres a danish translation!
2016-07-05 22:40:20 +02:00
bao-qian
3a9bfc84cd Merge pull request #828 from liubiantao/patch-1
Ramen Bless Your Repo
2016-07-05 16:02:43 +01:00
Haitao Yin
c9a8a2af07 Ramen Bless Your Repo 2016-07-05 22:44:14 +08:00
bao-qian
f5069aef6e fix everything error text 2016-06-23 23:01:20 +01:00
bao-qian
eb1af1e27e fix bug introduced in 2a3bf727be1c8bc185f1b436893b1c4385d982ac 2016-06-23 22:55:38 +01:00
bao-qian
d84ac0df9c fix names 2016-06-23 22:53:30 +01:00
Korzo
04275cd702 Add ability to configure Everything executable working directory (#718) 2016-06-23 22:45:34 +01:00
bao-qian
746bc7d7bd Merge pull request #798 from Wox-launcher/dev
History query related refactoring
2016-06-23 22:24:10 +01:00
bao-qian
15c5e9833a Bring history back
1. bring history back, disabled in
56d08663410916df0a4e408da6e4af3d2a2722c0
2. fix #632 #722
3. hotkey: ctrl+H
2016-06-23 22:17:47 +01:00
bao-qian
b589a1a13e Move ResultListBox Visibility
1. Move ResultListBox Visibility from MainViewModel to ResultsViewModel
2. Refactoring
2016-06-23 02:26:54 +01:00
bao-qian
5102770ad5 move properties into models 2016-06-23 02:25:55 +01:00
bao-qian
47f396cfce Fix #791 2016-06-23 00:03:01 +01:00
bao-qian
759d0a825b fixup 2016-06-22 00:57:27 +01:00
bao-qian
a8869c46b8 Temp fix for #667 by add wox.py to PYTHONPATH 2016-06-22 00:42:24 +01:00
bao-qian
4b31f40026 Fix python plugin bug introduced in d7399204 2016-06-22 00:00:53 +01:00
bao-qian
4f8dee8fcf Merge pull request #786 from Wox-launcher/dev
MVVM refactoring for web search plugin
2016-06-21 00:22:13 +01:00
bao-qian
cf5ab0ddef reformat 2016-06-21 00:18:35 +01:00
bao-qian
91e9d7431a MVVM refactoring for web search plugin, part 2
1. #486
2. rename
2016-06-21 00:17:55 +01:00
bao-qian
6e13440f1f MVVM refactoring for web search plugin, part 1
1. #486
2. fix #778 #763 #742
3. MVVM refactoring
4. remove IMultipleActionKeywords interface, use PluginManager directly
2016-06-21 00:14:32 +01:00
bao-qian
3efeb4a0a6 Refactoring proxy, part 2 2016-06-19 16:22:45 +01:00
bao-qian
764a372e9f Refactoring proxy, part 1 2016-06-19 16:18:08 +01:00
bao-qian
340087076e move nuget auto deploy back
not sure why I can't appveyor environment
2016-06-16 20:35:21 +01:00
bao-qian
ec5716c436 Fix #730 #766 2016-06-16 02:59:31 +01:00
bao-qian
3f3a34f788 Fix #762 2016-06-16 02:25:42 +01:00
bao-qian
e7879384b1 fix #749 2016-06-16 02:06:12 +01:00
bao-qian
853ee4bef1 Fix #706 , bug introduced in 2a3bf727be1c8bc185f1b436893b1c4385d982ac 2016-06-16 01:49:15 +01:00
Paweł Pastuszak
9be90dd035 Added plugins Polish translations (#764) 2016-06-16 01:29:38 +01:00
Xaver Schulz
4c7acca85a Update German translations (#759)
- some changes after review from @gappeh
- update for #505
2016-06-16 01:24:31 +01:00
jhdxr
d235bf9822 refactor IsWindowFullscreen. fix #687. (#712) 2016-06-16 01:24:30 +01:00
bao-qian
688d37fe76 update ignore file 2016-06-16 01:11:11 +01:00
Paweł Pastuszak
6c5f606682 Fixed languages files not included in build (#753) 2016-06-16 01:05:41 +01:00
bao-qian
ce5092036a Update README.md 2016-06-16 00:52:41 +01:00
Paweł Pastuszak
b745626a9f Added Polish language (#750) 2016-06-16 00:52:37 +01:00
bao-qian
c9d73bf1a4 fix #751 2016-06-16 00:52:33 +01:00
Paweł Pastuszak
6e76b7a7dd Improved English translations (#748)
* Improve English translation

* Improve plugins English translations
2016-06-16 00:52:14 +01:00
Kreen
fd41f0fe0d Update zh-tw.xaml (#725)
Make some adjustment to Chinese Traditional term.
2016-06-16 00:52:11 +01:00
bao-qian
d2e81d14d9 Update README.md 2016-06-16 00:52:05 +01:00
bao-qian
7d674b44d3 fix progressbar animation, bug introduced in 2a3bf727be1c8bc185f1b436893b1c4385d982ac 2016-06-16 00:51:55 +01:00
bao-qian
7d3617c27f add version number in installer, fix #696 2016-06-16 00:51:43 +01:00
bao-qian
cf6fca8e76 Fix #705 2016-06-16 00:51:30 +01:00
bao-qian
1560a823c3 fix #695 2016-06-16 00:51:04 +01:00
bao-qian
aba41d41ac fix #690 2016-06-16 00:50:48 +01:00
bao-qian
245cffc4f7 Refactoring visibility related events
1. remove unnecessary events from MainViewModel
2. remove usage of Obsolete api (show, hide etc)
3. fix space problem in #660
4. part of #486
5. fix up/down key bug introduced in 92b7ca6a1bafd254e39ee92812ff691906cd85c1
6. fix #678
2016-05-25 01:19:46 +01:00
bao-qian
3aada68eb9 temp disable history command 2016-05-25 01:06:26 +01:00
bao-qian
d15611fd44 Remove redundant OnPropertyChagned 2016-05-25 01:06:25 +01:00
bao-qian
82d4b866c0 fixup 2016-05-25 01:06:24 +01:00
Zaycn
4645dd0011 Add dutch translation (#683) 2016-05-25 01:03:55 +01:00
bao-qian
bec81ddbfe misc 2016-05-25 01:03:54 +01:00
bao-qian
6e4279e30f rename 2016-05-25 01:03:53 +01:00
bao-qian
e1131dcf3d More data bindings (MaxResultsToShow + ActivatedTimes) 2016-05-25 01:03:52 +01:00
bao-qian
762de84f34 Rename log file 2016-05-25 01:03:51 +01:00
bao-qian
e480cdbf9b fix #665 2016-05-25 01:03:51 +01:00
bao-qian
95cdc89795 Hotkey for mainwindow 2016-05-25 01:03:50 +01:00
bao-qian
e7f5491239 Save and close for setting tab 2016-05-25 01:03:48 +01:00
bao-qian
ba78637361 misc 2016-05-25 01:03:47 +01:00
bao-qian
b3119749d9 Databinding for proxy tab 2016-05-25 01:03:43 +01:00
bao-qian
cb56b98222 Databinding for hotkey tab
part of #660
2016-05-25 01:03:43 +01:00
bao-qian
2256183422 misc 2016-05-25 01:03:42 +01:00
bao-qian
0bfa8219ca remove unused code 2016-05-25 01:03:41 +01:00
bao-qian
4c21a68139 remove tab selection 2016-05-25 01:03:40 +01:00
bao-qian
38cf74d83b Databinding for theme tab 2016-05-25 01:03:39 +01:00
bao-qian
1867e56739 misc 2016-05-25 01:03:39 +01:00
bao-qian
826a69c531 misc 2016-05-25 01:03:38 +01:00
bao-qian
7056be0870 Databinding for plugin tab + faster image load 2016-05-25 01:03:37 +01:00
bao-qian
708dba6cb1 misc 2016-05-25 01:03:36 +01:00
bao-qian
164a34a340 Refactoring for tab selected event 2016-05-25 01:03:36 +01:00
bao-qian
3593a918b7 Databinding for general tab 2016-05-25 01:03:35 +01:00
bao-qian
7d2ac2f55d Introduce viewmodel for settingwindow 2016-05-25 01:03:34 +01:00
bao-qian
cc4b343cf4 Misc 2016-05-25 01:03:33 +01:00
bao-qian
597931f79b use propertychanged helper 2016-05-25 01:03:32 +01:00
bao-qian
299864a9cf rename 2016-05-25 01:03:32 +01:00
bao-qian
014757a0f7 update translation 2016-05-22 15:36:09 +01:00
bao-qian
032b5b8776 update gitignore 2016-05-21 18:47:38 +01:00
bao-qian
44107f9821 rename 2016-05-21 01:22:12 +01:00
bao-qian
b49e45827f fix #608 2016-05-21 00:16:58 +01:00
bao-qian
3cd405e9ea fix #628 2016-05-20 22:20:41 +01:00
bao-qian
b17a54a2d2 Use Segoe UI
#655
2016-05-20 22:01:31 +01:00
bao-qian
2d6d4d2db0 Update ISSUE_TEMPLATE.md 2016-05-20 21:20:02 +01:00
bao-qian
646b7a3118 Refactoring error report
1. fix #627
2. fix #646
3. remove exceptionless
2016-05-20 21:16:25 +01:00
bao-qian
e4c7842f34 rename, part 1 2016-05-20 19:38:38 +01:00
bao-qian
7490cb81b8 fix #655 2016-05-20 19:24:01 +01:00
bao-qian
9e105a362f fix #461 2016-05-20 19:24:01 +01:00
bao-qian
9c8cbdd0e6 Merge pull request #642 from jhdxr/master
move disabled plugins to the bottom of the list
2016-05-20 17:15:58 +01:00
xiami
635a8a24f2 fix null error when plugin doesn't set Action (#656) 2016-05-20 17:14:24 +01:00
jhdxr
6354d4b911 move disabled plugins to the bottom of the list 2016-05-20 16:40:42 +08:00
bao-qian
452e8ed8c5 Merge pull request #647 from Arthur2e5/patch-3
README: 看来我是对奇怪的大小写有种强迫症(
2016-05-20 02:43:41 +01:00
Mingye Wang
8a93e3c64c README: 看来我是对奇怪的大小写有种强迫症( 2016-05-19 20:56:40 -04:00
Mingye Wang
76fc9b78fe plugin/everything/lang/en: enlint (#645) 2016-05-20 01:40:29 +01:00
Mingye Wang
cf685b404d lang/en: enlint (#644) 2016-05-20 01:28:46 +01:00
bao-qian
747d97ecfc Misc 2016-05-20 00:03:12 +01:00
bao-qian
be5fd86aa7 rename, part 2 2016-05-19 23:44:08 +01:00
bao-qian
963f57868d rename 2016-05-19 23:34:51 +01:00
bao-qian
97f0516630 Misc 2016-05-19 23:28:13 +01:00
bao-qian
c896b445bd rename 2016-05-19 09:11:40 +01:00
bao-qian
f06c4f4049 Bring run command functionality back
#636
2016-05-19 09:04:31 +01:00
bao-qian
937ce34c36 Rename 2016-05-18 19:38:43 +01:00
bao-qian
cddfd1b319 fix #625 2016-05-18 19:35:37 +01:00
bao-qian
c42892ee35 Update README.md 2016-05-18 15:02:29 +01:00
bao-qian
bb3003dc3b Misc 2016-05-17 22:48:18 +01:00
bao-qian
2858dce664 Fix #620, part of #614 2016-05-17 22:23:37 +01:00
bao-qian
1517ae3fc9 Misc 2016-05-15 17:19:33 +01:00
bao-qian
cf9c41f437 Log first change exception 2016-05-15 17:03:06 +01:00
xzhao
87497d2d09 Fixed #586
- add option to hide main window on startup
- Fixed #586
2016-05-14 14:48:58 +01:00
bao-qian
67ab979a9b fix download plugin 2016-05-14 00:08:57 +01:00
bao-qian
05f23f89ae Fix #608 2016-05-13 23:55:03 +01:00
bao-qian
cdc244ec06 Misc 2016-05-13 23:54:41 +01:00
bao-qian
71308316b1 Add auto updates gui option 2016-05-13 23:54:37 +01:00
bao-qian
2d1dfece25 Use system web proxy 2016-05-13 23:28:17 +01:00
bao-qian
65577a67dc Add option to disable auto updates 2016-05-12 03:01:33 +01:00
bao-qian
45d5da98ca fix disable plugin + fix #575 #609 2016-05-12 02:45:39 +01:00
bao-qian
455e067e73 Update README.md 2016-05-12 00:54:40 +01:00
bao-qian
6359826fd9 use unified http method for plugin installation + add more exceptions
#573
#610
2016-05-10 20:26:52 +01:00
bao-qian
8325083402 Log more update exceptions #611 2016-05-10 20:26:52 +01:00
bao-qian
0f1a1d5f56 Update README.md 2016-05-10 01:12:30 +01:00
bao-qian
52d6f4343c Merge pull request #607 from Wox-launcher/dev
Dev
2016-05-10 01:10:14 +01:00
bao-qian
405d55f3f6 Don't call init() and constructor for disabled plugins
part of #351
2016-05-10 01:08:54 +01:00
bao-qian
06010b1366 Merge remote-tracking branch 'refs/remotes/origin/master' into dev 2016-05-10 00:00:18 +01:00
bao-qian
21aa31f963 Fix proxy for github update 2016-05-09 23:51:10 +01:00
bao-qian
3f709cc39e Fix notify icon + move hotkey into MainViewModel 2016-05-09 23:35:20 +01:00
bao-qian
f376e1ab01 Fix #606 2016-05-09 22:56:05 +01:00
bao-qian
fb3ba16a92 fix SingleInstance 2016-05-09 22:45:24 +01:00
bao-qian
21285f02b8 Refactoring updater
1. move into a separate class
2. remove unused nuget package
2016-05-09 22:45:24 +01:00
bao-qian
05adf6f907 Update README.md 2016-05-09 22:10:20 +01:00
bao-qian
06fa171f7a Update README.md 2016-05-09 22:08:55 +01:00
bao-qian
4eae5be995 Update README.md 2016-05-09 22:05:38 +01:00
bao-qian
6d02617422 Add hello world csharp example 2016-05-09 05:04:33 +01:00
bao-qian
c2f07d14f3 Update README.md 2016-05-09 04:32:05 +01:00
bao-qian
52fe91f8bc Update README.md 2016-05-09 04:05:18 +01:00
bao-qian
98cb0f978e Finally 1.3 !!!! 2016-05-09 03:49:40 +01:00
bao-qian
977a83cce8 Merge pull request #605 from Wox-launcher/dev
Dev
2016-05-09 03:47:55 +01:00
bao-qian
4d92f9bf18 ignore more files 2016-05-09 03:45:20 +01:00
bao-qian
c459d60fc6 remove commit number 2016-05-09 03:42:32 +01:00
bao-qian
ad2e8a3c96 fix ci 2016-05-09 03:26:19 +01:00
bao-qian
7dd9b3fa0c Misc 2016-05-09 03:18:36 +01:00
bao-qian
340a151302 fixup 2016-05-09 03:15:37 +01:00
bao-qian
9f70af009f Remove prerelease 2016-05-09 03:15:37 +01:00
bao-qian
bf1a65b8e8 msbuild based installer generation is not working in appveyor, not sure why 2016-05-09 03:06:11 +01:00
bao-qian
037ab02a71 fixup 2016-05-09 02:59:42 +01:00
bao-qian
0039ec2958 fixup ci 2016-05-09 02:42:19 +01:00
bao-qian
08571d51fa Misc 2016-05-09 02:41:46 +01:00
bao-qian
6ac33b0568 Add manually check updates option
1. manually check updates
2. refactoring get http request to use async
3. remove some generic exception catch
4. remove unused code
2016-05-09 02:32:47 +01:00
bao-qian
373da78b7b Misc 2016-05-08 22:26:46 +01:00
bao-qian
c3d22335e2 move installer into msbuild 2016-05-08 22:26:37 +01:00
bao-qian
4216eec494 fix dynamic assembly 2016-05-08 22:22:36 +01:00
bao-qian
e88e912c3c Remove unused updater and command line arguments 2016-05-08 22:13:23 +01:00
bao-qian
d06fb83fee Dispose when restart 2016-05-08 17:47:28 +01:00
bao-qian
e0b9a81c9b Installer + auto update on startup
1. installer
2. auto check update on startup
3. auto start on next startup
4. remove command line arguments which breaks squirrel
5. auto generate installer on continue integration
2016-05-08 17:28:02 +01:00
bao-qian
192e4b8877 Refactoring results update 2016-05-08 17:28:02 +01:00
bao-qian
02d44a6cca Misc 2016-05-08 17:28:01 +01:00
bao-qian
39ba1e0582 Move websearch images to %APPDATA% 2016-05-08 17:28:00 +01:00
roose
ae121895e9 Added solution for executable plugins 2016-05-08 17:28:00 +01:00
bao-qian
11ecf20f89 fix tests 2016-05-08 17:27:59 +01:00
bao-qian
3646a7d12d Update README.md 2016-05-08 17:27:58 +01:00
bao-qian
db5f45da83 rename plugin main file, part 2 2016-05-08 17:27:58 +01:00
bao-qian
52a4bfa25f rename plugin main file, part 1 2016-05-08 17:27:57 +01:00
stafford
099b62b645 Cleanup proxy enable/disable, fix #518 2016-05-08 17:27:56 +01:00
stafford
e37332a5d2 Allow open settings from main window context menu, fix #519 2016-05-08 17:27:56 +01:00
bao-qian
f36cc56c81 Fix #548 2016-05-08 17:27:55 +01:00
bao-qian
b20750b936 fix #587 2016-05-08 17:27:54 +01:00
bao-qian
407f58da54 fix selected item
part of #412
2016-05-08 17:27:54 +01:00
bao-qian
fe5bb1d885 parallel foreach + list is not thread safe 2016-05-08 17:27:53 +01:00
bao-qian
92f45567d7 Focuses first textbox on load
fix #516
thanks @staff0rd for idea!
2016-05-06 00:29:27 +01:00
bao-qian
a4c0e0a59c Fix select result when there is no results
part of #412
2016-05-06 00:00:54 +01:00
bao-qian
d536377329 Refactoring multithreading
1. ThreadPool -> Task
2. fix deadlock
3. remove unnecessory application.dispatcher.invoke
4. enable non-main thread access to results collection
5. Misc
6. part of #412
2016-05-06 00:00:43 +01:00
bao-qian
923f4ed045 We don't need use ping to test website speed 2016-05-05 20:26:19 +01:00
bao-qian
9191cae144 temp hack for folder plugin results 2016-05-05 16:30:56 +01:00
bao-qian
e8c142353c Fix default icon path when add new web search 2016-05-05 16:21:35 +01:00
bao-qian
ba1e22955e Web search suggestion is loaded async
1. suggestion is async
2. if ping time of domain less than 300ms, then suggestion is still sync
3. #578 #539
2016-05-05 16:08:48 +01:00
bao-qian
c41847c0d7 Update README.md 2016-05-05 12:42:25 +01:00
bao-qian
e1d7c25c98 Update README.md 2016-05-05 12:41:57 +01:00
bao-qian
3d8e845233 Update ISSUE_TEMPLATE.md 2016-05-05 12:38:43 +01:00
bao-qian
0fa126a6b8 fixup test code 2016-05-05 12:30:23 +01:00
bao-qian
1961816ba7 Fix #572 2016-05-05 02:54:26 +01:00
bao-qian
4410b679a0 Add missing sdk files 2016-05-05 02:38:35 +01:00
bao-qian
e6214b3c97 Misc 2016-05-05 02:29:57 +01:00
bao-qian
7e7637a1b3 Misc 2016-05-05 02:21:04 +01:00
bao-qian
86b201623d Delete unused files 2016-05-05 02:21:03 +01:00
bao-qian
785843198a Use existing installed python
1. use installed python
2. add settings to choose python directory
3. add py3 compability
4. create hello world python example
2016-05-05 01:57:03 +01:00
bao-qian
bc0f5a9136 Use existing Everything, dll is loaded by platform
fix #574
2016-05-04 02:26:19 +01:00
bao-qian
461e650e05 fix missing image cache 2016-05-03 23:36:47 +01:00
bao-qian
c2132e3772 Fix file associated icon 2016-05-03 23:21:03 +01:00
bao-qian
174c7a776e Refactoring Refactoring icon, part 2
1. Add baidu, fix #576, #582
2. Refactoring
2016-05-03 21:22:11 +01:00
bao-qian
730864609f Refactoring icon, part 1, rename 2016-05-03 21:18:51 +01:00
bao-qian
784137fdac Misc 2016-05-03 00:04:04 +01:00
bao-qian
c6aff8424c Save when exit
1. fix image cache
2. fix save when exit since destructor won't be called
3. fix #583 #582 (partially)  #581 (partially)  #580
2016-05-02 22:37:01 +01:00
bao-qian
a7a34ac6b2 fixup 2016-04-27 23:17:06 +01:00
bao-qian
57492023f9 manually deploy use appveyoe 2016-04-27 23:04:18 +01:00
bao-qian
aff1e160b4 fixup 2016-04-27 23:00:59 +01:00
bao-qian
b8d12bd0cd rename 2016-04-27 22:54:27 +01:00
bao-qian
5ab33e831d Fix logger name and move logger to %APPDATA% 2016-04-27 22:52:53 +01:00
bao-qian
dc3b01dc15 use %APPDATA%
1. Fix can't find Result.ctor bug for plugin introduced in
c0889de1f9ae460b2cc189eb59e5bd90ddb7d17e
2. use %APPDATA% for all data, part of #389
3. MISC
2016-04-27 02:35:17 +01:00
bao-qian
e96bd5a0e7 Misc 2016-04-26 22:45:31 +01:00
bao-qian
57c33fe693 Fix #472 #476 #509 #523 #525 #557
Fix numerous web search plugin bugs
2016-04-26 02:40:23 +01:00
bao-qian
fc2d7b41d8 Move ImageLoader to Wox.Infrastructure, part 2 2016-04-26 01:20:10 +01:00
bao-qian
fd139d4903 Move ImageLoader to Wox.Infrastructure, part 1 2016-04-26 01:19:09 +01:00
bao-qian
813d33fc4d Json: Overwriting instead of add to list
http://stackoverflow.com/questions/29113063/json-net-why-does-it-add-to-list-instead-of-overwriting
2016-04-26 00:54:09 +01:00
bao-qian
26addf809e Use consistent new icons
https://icons8.com
2016-04-26 00:25:43 +01:00
bao-qian
a9e090c454 Fix bug introduced in 7c2e2a01c2 by @aaroncampf 2016-04-26 00:24:50 +01:00
bao-qian
59355cf79f Add plugin info entry for all context menu 2016-04-26 00:24:50 +01:00
bao-qian
c200c53268 Misc 2016-04-26 00:24:49 +01:00
bao-qian
a572ff9fca Fix #483
Thanks @wjcsharp to provide method
2016-04-26 00:24:48 +01:00
bao-qian
1ab4f99a37 Fix progressbar loading 2016-04-26 00:24:48 +01:00
bao-qian
99006465e6 fix #412
- use Task instead of QueueUserWorkItem
- add CancellationTokenSource when updating result panel and executing
query for all plugins
2016-04-26 00:24:47 +01:00
bao-qian
4a7e9c16d0 Fix flashing bug introduced in 152a7d719b15b3fb4559bea09b378b963555fe45
part of #565
2016-04-26 00:24:27 +01:00
bao-qian
d416a77866 Fix #559
fix program suffixes
2016-04-24 18:34:49 +01:00
bao-qian
07fe141f8a Fix #565
1. Fix resultlistbox visibility
2. Fix #565
3. Remove unused convertor
2016-04-24 17:06:28 +01:00
bao-qian
c2de80f532 Add Development / Author Status 2016-04-24 16:32:13 +01:00
bao-qian
e742bdfacf Update README.md 2016-04-24 16:29:38 +01:00
bao-qian
24950a098f fix #570 2016-04-24 14:47:18 +01:00
bao-qian
bed65745cc Use WorkingDirectory when strat process
As proposed in #569
2016-04-24 13:35:21 +01:00
bao-qian
04a4833c6e Fix uninitialized ui
fix #569
2016-04-24 03:49:04 +01:00
bao-qian
4aa0a733fc Merge branch 'dev' 2016-04-24 02:53:45 +01:00
bao-qian
082191412e Fix suffixes converter, part 2
rename file
2016-04-24 02:53:20 +01:00
bao-qian
e3a7d0807e Fix suffixes converter, part 1
1. fix #568, fix #566 fix #553, fix #559
2. simple refactoring
2016-04-24 02:53:20 +01:00
bao-qian
0ee3d1160a Remove NLog schema from git 2016-04-24 02:53:19 +01:00
bao-qian
b600bce23f Refactoring pinyin
1. use custom patched pinyin library Pinyin4Net
2. fix memory leak on startup: 360mb -> 160mb when using vs15 debugger
2016-04-24 02:53:18 +01:00
bao-qian
952b5fab89 Add custom patched pinyin library 2016-04-24 02:53:15 +01:00
bao-qian
6c705e1e25 Add RequireNonNull
http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy
2016-04-24 02:53:15 +01:00
bao-qian
349e8b2da7 Use resharper annotation nuget package 2016-04-24 02:53:14 +01:00
bao-qian
39ce74c1e0 Update appveyor.yml 2016-04-24 02:53:13 +01:00
bao-qian
77cf392300 Update READEME.md 2016-04-24 02:53:12 +01:00
bao-qian
b6225ccc38 Add Github prerelease for stable master build 2016-04-24 02:53:12 +01:00
bao-qian
a38eaad281 Add gitter 2016-04-24 02:53:11 +01:00
bao-qian
1b6d8a2b8d Remove NLog schema from git 2016-04-24 01:50:18 +01:00
bao-qian
cbc1c935bf fix missing pinyin file 2016-04-24 01:43:23 +01:00
bao-qian
391bf4113a fixup (bump library version) 2016-04-24 00:46:35 +01:00
bao-qian
718bff7469 Refactoring pinyin
1. use custom patched pinyin library Pinyin4Net
2. fix memory leak on startup: 360mb -> 160mb when using vs15 debugger
2016-04-24 00:37:25 +01:00
bao-qian
e67f60182d Add custom patched pinyin library 2016-04-23 02:34:47 +01:00
bao-qian
6bb0d736be Add RequireNonNull
http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy
2016-04-22 23:29:38 +01:00
bao-qian
5bc74fc296 Use resharper annotation nuget package 2016-04-22 23:13:14 +01:00
bao-qian
fea237a3ea Merge branch 'master' into dev 2016-04-22 23:04:05 +01:00
bao-qian
6f3cdeda70 Refactoring Program plugin to use parallel linq
much master when use parallel
2016-04-22 23:03:32 +01:00
bao-qian
8476baacc7 Use default thread pool settings 2016-04-22 22:42:43 +01:00
bao-qian
681f57f703 Misc 2016-04-22 22:42:26 +01:00
bao-qian
03051a95cf Refactoring image cache
use parallel linq to preload images, should be faster
2016-04-22 01:42:37 +01:00
bao-qian
80f31f75ad Rename, part 3 2016-04-21 22:41:30 +01:00
bao-qian
e0da4c81da Rename. part 2 2016-04-21 22:40:03 +01:00
bao-qian
57a5b90be7 Rename, part 1 2016-04-21 22:39:47 +01:00
bao-qian
98928dba9d Stop everything before every build 2016-04-21 22:36:49 +01:00
bao-qian
c83577cb81 Remove unused code 2016-04-21 21:04:33 +01:00
bao-qian
39edf1a8ed Remove instance logic for BinaryStorage and JsonStorage, part 2
1. part of #389
2. file rename
3. fixup
2016-04-21 20:56:53 +01:00
bao-qian
8d10c9aa41 Remove instance logic for BinaryStorage and JsonStorage, part 1
1. part of #389
2. huge refactoring
2016-04-21 20:42:07 +01:00
Goren G
0bcb76fa81 Load Everything base on CPU architecture 2016-04-21 20:37:08 +01:00
bao-qian
aceb9e4de7 Bump library version
Fix #538
2016-04-21 20:36:19 +01:00
bao-qian
a249ced37c Update appveyor.yml 2016-04-19 10:15:41 +01:00
bao-qian
375078a9a4 Update READEME.md 2016-04-18 23:17:11 +01:00
bao-qian
273a7d82a2 Add Github prerelease for stable master build 2016-04-18 23:04:41 +01:00
bao-qian
26f5e52ad8 Merge branch 'master' into dev 2016-03-28 19:26:13 +01:00
bao-qian
2a32f8f681 Add gitter 2016-03-28 15:02:53 +01:00
bao-qian
7dad0aa1da Bump library version
Fix #538
2016-03-28 13:56:38 +01:00
bao-qian
c742b73133 Merge pull request #540 from cmzy/dev
Add Chinese translation for ignoreHotkeysOnFullscreen resources
2016-03-28 12:10:37 +01:00
Andy Zhang
fece31a9aa Add Chinese translation for ignoreHotkeysOnFullscreen resources 2016-03-28 15:59:40 +08:00
bao-qian
b22a4501cc Use variable instead of global static method
1. introduce variable
2. part of #389
3. refactoring program suffix in program plugin
4. 全局变量一时爽,代码重构火葬场
2016-03-28 03:09:57 +01:00
bao-qian
c596039453 Rearrange query execution order
1. remove usage of PushResult
2. rearrange query execution order
3. decouple UserSetting dependency
4. remove instant query
5. remove backkeydown event
6. part of #389
2016-03-28 03:02:30 +01:00
bao-qian
7eea6ebe57 Remove unused code 2016-03-27 23:23:37 +01:00
bao-qian
b6a42ecf48 Kill Wox before solution build
ref:
http://stackoverflow.com/questions/2295454/solution-wide-pre-build-event/2295583#2295583
2016-03-27 18:43:48 +01:00
bao-qian
95f3d4fffa Update git ignore file 2016-03-27 18:15:10 +01:00
bao-qian
95becde93d Add error info when file/application can't be open
1. Fix #492
2. FIx #478
2016-03-27 02:49:05 +01:00
bao-qian
0538d082dc Fix dll has been blocked problems
1. Fix #536
2. Fix #279
ref: https://msdn.microsoft.com/en-us/library/dd409252(v=vs.110).aspx
2016-03-27 00:55:05 +00:00
bao-qian
c3b6b8d821 Remove unused code 2016-03-26 18:15:28 +00:00
bao-qian
c41fbbb93e Cleanup using Resharper 2016-03-26 04:46:39 +00:00
bao-qian
0728d96339 Bump nuget package version 2016-03-26 04:45:03 +00:00
bao-qian
abc335143b Misc 2016-03-26 03:15:28 +00:00
bao-qian
dc9908eac1 Refactoring ContextMenu
1. Remove ItemDropEvent
2. Remove ShowContextMenus from API
3. Fix context menu item can't be opened ( #535 ), bug introduced from PR #494 (commit 45dbb50)
4. Move open result command and load context menu command back to
MainViewModel
5. unify load context menu logic
6. other performance enhancement and potential bug fixed
2016-03-26 03:01:39 +00:00
bao-qian
6274b617f4 Fix position
1. Fix "Remember launch location", this was introduced since e7aa6022.
Fix #511
2. Fix opening position ( #510 ), bug introduced from PR #494 (commit e7aa602)
2016-03-26 03:01:37 +00:00
bao-qian
c5d45c6b44 Refactoring CustomizedPluginConfig
1. Reorder the sequence of initialization of UserSettings.
2. Use dictionary for CustomizedPluginConfigs, so code logic like
`.FirstOrDefault(o => o.ID == id);` are removed
3. part of #389
2016-03-26 03:01:36 +00:00
stafford
ef1a195036 made margins consistent 2016-03-26 03:01:35 +00:00
bao-qian
5ac0837be3 Refactoring ContextMenu
1. Remove ItemDropEvent
2. Remove ShowContextMenus from API
3. Fix context menu item can't be opened ( #535 ), bug introduced from PR #494 (commit 45dbb50)
4. Move open result command and load context menu command back to
MainViewModel
5. unify load context menu logic
6. other performance enhancement and potential bug fixed
2016-03-26 01:26:21 +00:00
bao-qian
fbc6f78cb5 Fix position
1. Fix "Remember launch location", this was introduced since e7aa6022.
Fix #511
2. Fix opening position ( #510 ), bug introduced from PR #494 (commit e7aa602)
2016-03-26 01:25:56 +00:00
bao-qian
d6f9fddc94 Refactoring CustomizedPluginConfig
1. Reorder the sequence of initialization of UserSettings.
2. Use dictionary for CustomizedPluginConfigs, so code logic like
`.FirstOrDefault(o => o.ID == id);` are removed
3. part of #389
2016-03-25 01:22:31 +00:00
bao-qian
199011feb8 Merge pull request #505 from schulz3000/add_german_translations
Add German Translation
2016-03-24 21:51:45 +00:00
bao-qian
98f1d5cd9b Merge pull request #517 from staff0rd/settings_margins
Consistent margins
2016-03-24 21:48:38 +00:00
bao-qian
b9c83ca06d Merge branch 'dev' 2016-03-24 21:46:26 +00:00
bao-qian
f0b7a00ae6 Emphasize the master build 2016-03-24 17:07:10 +00:00
bao-qian
a8a9a93317 Merge branch 'master' of https://github.com/Wox-launcher/Wox 2016-03-23 20:32:30 +00:00
bao-qian
32e9a7fa06 Misc 2016-03-23 20:31:59 +00:00
stafford
88a47e7788 made margins consistent 2016-03-11 12:13:47 +11:00
bao-qian
4b4a414259 Merge pull request #514 from staff0rd/websearchsetting_spelling
Fix spelling
2016-03-11 00:53:13 +00:00
bao-qian
68281dce66 Merge pull request #513 from staff0rd/websearch_plugin_en
Cleanup english
2016-03-11 00:52:55 +00:00
stafford
221cc8ab10 spelling 2016-03-11 11:39:41 +11:00
stafford
c6e47a868b grammar 2016-03-11 11:34:49 +11:00
stafford
0c5c261196 cleanup english translation 2016-03-11 11:32:51 +11:00
bao-qian
c7372aabfd Add issue template 2016-03-01 18:03:45 +00:00
Xaver Schulz
7d1dbbb27a Add German Translation
Add German Translation to Core and Defaultplugins
2016-02-28 17:22:51 +01:00
bao-qian
c00583dd98 Remove harder coded text
1. Remove harder coded text, part of refactoring for PR #494
2. Remove other arguments redundant
2016-02-27 00:10:39 +00:00
bao-qian
49ca3bfd00 Refactoring 2016-02-26 23:43:57 +00:00
bao-qian
3adc3ed5d2 Fix textbox keyboard focusing 2016-02-26 21:34:27 +00:00
bao-qian
bdca59b3d7 merge dev 2016-02-26 12:13:04 +00:00
bao-qian
d5ab4093a9 Refactoring for PR #499, part 2 2016-02-26 12:08:56 +00:00
bao-qian
e6df19efbc Refactoring for PR #499, part 1 2016-02-26 12:01:48 +00:00
bao-qian
b7948c5344 Merge pull request #499 from rmterra/issue_495
Fix MainWindow.xaml preview
2016-02-26 11:55:19 +00:00
rmterra
a13557d71d Merge branch 'dev' 2016-02-23 23:07:35 -03:00
bao-qian
e2338fcedf Remove yoda conditions
part of refactoring for PR #494
2016-02-22 21:47:58 +00:00
bao-qian
43bfeff2be Remove redundant code 2016-02-22 21:43:37 +00:00
bao-qian
1a489652ff Merge branch 'dev' 2016-02-22 19:20:52 +00:00
rmterra
1ac92c561b removes VisibilityConverter .cs 2016-02-21 18:27:45 -03:00
rmterra
cb952b0d3a updates MainWindow visibility bindings to use System.Windows.Visibility instead of bool 2016-02-21 18:27:05 -03:00
rmterra
5919dd998b adds System.Windows.Visibility extension methods to validates if current value is Visible or not 2016-02-21 17:49:43 -03:00
bao-qian
320f78b31b Remove redundant code
1. remove this
2. auto property should be only 1 line
3. misc
4. part of refactoring for PR #494
2016-02-21 18:46:04 +00:00
bao-qian
533bc4c2fe Misc
part of refactoring for PR #494
2016-02-21 17:10:24 +00:00
bao-qian
eb8aa195c2 ResultItem -> Result, part 2
part of refactoring for PR #494
2016-02-21 17:10:23 +00:00
bao-qian
4197580b04 ResultItem -> Result, part 1
part of refactoring for PR #494
2016-02-21 17:10:22 +00:00
bao-qian
0e92f7bfff UserControl -> ListBox 2016-02-21 17:10:21 +00:00
bao-qian
927277a6cd ActionPanel -> ContextMenu
part of refactoring for PR #494
2016-02-21 17:10:21 +00:00
bao-qian
d5696010d9 ResultPanelViewModel -> ResultsViewModel, part 2
part of refactoring for PR #494
2016-02-21 17:10:15 +00:00
bao-qian
9db37c2799 ResultPanelViewModel -> ResultsViewModel, part 1
part of refactoring for PR #494
2016-02-21 17:04:29 +00:00
bao-qian
7e7b41cd8c ResultPanel -> ResultListBox, part 2
part of refactoring for PR #494
2016-02-21 17:04:28 +00:00
bao-qian
fc3a369d3d ResultPanel -> ResultListBox, part 1
part of refactoring for PR #494
2016-02-21 17:04:27 +00:00
bao-qian
5df766466a Misc
part of refactoring for PR #494
2016-02-21 15:26:57 +00:00
bao-qian
6814130570 ResultItem -> Result, part 2
part of refactoring for PR #494
2016-02-21 15:19:42 +00:00
bao-qian
cb6160f1e4 ResultItem -> Result, part 1
part of refactoring for PR #494
2016-02-21 15:13:27 +00:00
bao-qian
b00214bdbd UserControl -> ListBox 2016-02-21 14:53:32 +00:00
bao-qian
4643810b75 ActionPanel -> ContextMenu
part of refactoring for PR #494
2016-02-21 14:40:10 +00:00
bao-qian
45246bccd7 ResultPanelViewModel -> ResultsViewModel, part 1
part of refactoring for PR #494
2016-02-21 14:33:18 +00:00
bao-qian
78b44a1319 ResultPanelViewModel -> ResultsViewModel, part 1
part of refactoring for PR #494
2016-02-21 14:30:13 +00:00
bao-qian
0e6cd0f72a ResultPanel -> ResultListBox, part 2
part of refactoring for PR #494
2016-02-21 14:22:34 +00:00
bao-qian
0aeba7c5af tmp rename 2016-02-21 14:14:27 +00:00
bao-qian
525c00ea18 ResultPanel -> ResultListBox, part 1
part of refactoring for PR #494
2016-02-21 13:53:20 +00:00
bao-qian
c056bd4d4c Delete unnecessary file
part of refactoring for PR #494
2016-02-20 15:59:29 +00:00
bao-qian
93682fb42b Merge pull request #494 from LingForCC/MVVM_MainWindow_ResultPanel
Refactor MainWindow and ResultPanel
2016-02-19 18:39:41 +00:00
Colin Liu
aa9ec603a9 Try to fix the problem that the designer preview is empty 2016-02-20 01:47:47 +08:00
Colin Liu
6f83bf3af2 Remove ResultOpened related events
Since we are going to refactor plugin-UI interaction mechanism in the
near future, we just keep current implementation as simple as possible.
2016-02-19 23:26:13 +08:00
Colin Liu
d5245f0730 Bug Fixing - The caret is not at the last of search text when switching back from context menu 2016-02-19 22:59:01 +08:00
Colin Liu
1b4cc556be Revert Hotkey from InputBinding back to KeyDown event 2016-02-19 22:58:27 +08:00
Colin Liu
2efcbd060a Implement ToString and GetHashCode methods for ResultItemViewModel 2016-02-19 22:55:58 +08:00
Colin Liu
68ee35d03b Bug Fixing - IsSelected is not implemented in ResultItemViewModel
If this property is not implemented, the Theme of selected search result
won't take effect.
2016-02-19 21:36:44 +08:00
Colin Liu
1b6a43ae15 Add support for design time DataContext binding
Add this support to suppress the warning from Resharper
2016-02-19 21:25:55 +08:00
Colin Liu
8de26af246 Fix UI Flickering issue 2016-02-18 22:53:41 +08:00
Colin Liu
c3fd732243 Refactor according to MVVM implementation 2016-02-18 20:56:53 +08:00
Colin Liu
3ce0b8bc97 Remove unused code
- ListBoxItem_OnDrop Event Handler
- ItemDropEvent Handler
- UpdateItemNumber method
2016-02-18 20:29:51 +08:00
Colin Liu
2846eea956 Remove unused code 2016-02-18 19:44:07 +08:00
Colin Liu
ca3bedc9a1 Fix dependency bugs 2016-02-18 19:43:35 +08:00
Colin Liu
2d4d7b80c1 Support for Sys Tray Icon 2016-02-18 19:42:57 +08:00
Colin Liu
df85543337 Implement the support for shortcut key 2016-02-18 19:40:47 +08:00
Colin Liu
e15baeb4a2 Remove unused code and add required code for MVVM 2016-02-18 19:35:17 +08:00
Colin Liu
f16804c0f8 Comment out code for later update 2016-02-18 19:32:48 +08:00
Colin Liu
934a41e414 Refactor ResultPanel/ResultItem with MVVM 2016-02-18 19:31:15 +08:00
Colin Liu
8621fe2e3c Refactor MainWindow with MVVM
- Add MVVM structure(BaseViewModel)
- Create ViewModel for MainWindow
- Refactor MainWindow.xaml to support MVVM
- Move PublicAPI implementation from MainViewModel to PublicAPIInstance
2016-02-18 19:30:36 +08:00
bao-qian
bbf2c29a4a Merge branch 'dev' 2016-02-17 16:59:09 +00:00
bao-qian
0a148166e1 Fix websearch plugin query content 2016-02-17 16:58:32 +00:00
bao-qian
79b4716b95 Fix "NoTranslation" bug for plugins
1. fix #475
2. remove GetLanguagesFolder, part of #468
3. bug introduced since 1f939ff3
2016-02-17 15:49:55 +00:00
qianlifeng
57437f04c9 Merge pull request #490 from qazbnm456/master
fix typo
2016-02-15 15:33:23 +08:00
Leo
8bbcd267cd fix typo 2016-02-15 13:03:04 +08:00
qianlifeng
e885cb6c45 Merge pull request #485 from niwatolli3/niwatolli3/japanese_support
Japanese support
2016-02-14 17:44:59 +08:00
niwatolli3
8182141e93 refs #485
* Add more Japanese support
2016-02-09 23:53:06 +09:00
niwatolli3
d7d2efd58e refs #484
* Add japanese Support.
* I add following language file
* Plugins/Wox.Plugin.WebSearch/Languages/ja.xaml
* Wox/Languages/ja.xaml
2016-02-09 23:30:54 +09:00
bao-qian
02033a675a Merge pull request #477 from Kingwl/master
Misc
2016-01-22 13:12:39 +00:00
kingwl
ca0f7bb74c comment fix 2016-01-22 20:47:00 +08:00
bao-qian
d676ecfaa8 Merge pull request #469 from Wox-launcher/dev
Refactoring directory handling
Fix #353
2016-01-08 02:23:04 +00:00
bao-qian
a0f556b2a9 Refactoring directory path for plugins 2016-01-08 02:18:19 +00:00
bao-qian
6071319acd Refactoring directory path for misc 2016-01-08 01:57:11 +00:00
bao-qian
e9ddfa6cf9 Refactoring directory path for python plugin 2016-01-08 01:55:24 +00:00
bao-qian
8ee94d75ca Refactoring directory path for plugin 2016-01-08 01:49:00 +00:00
bao-qian
ec40956721 Merge language and theme into resource folder 2016-01-07 20:04:37 +00:00
bao-qian
8504d01688 Refactoring directory path for UI resource 2016-01-07 04:47:28 +00:00
bao-qian
c8a932b6b3 Refactoring directory path for storage 2016-01-07 02:31:17 +00:00
bao-qian
b1ed51e72c Fix missing using directive 2016-01-07 00:14:16 +00:00
bao-qian
b386af4121 Add executable directory path 2016-01-06 22:18:27 +00:00
bao-qian
0daa3a8f57 ReSharper: remove redundant code 2016-01-06 21:34:42 +00:00
bao-qian
ae42c4df16 Fix accident bug 2016-01-06 21:18:36 +00:00
bao-qian
252ff9d3c5 Merge branch 'master' into dev 2016-01-06 19:33:40 +00:00
bao-qian
38c9ad6986 remove roslen cache 2016-01-06 19:33:11 +00:00
bao-qian
ad84b222a5 merge 'master' 2016-01-06 19:22:24 +00:00
bao-qian
c3e4a08b00 Fix using for Release build 2016-01-06 19:07:33 +00:00
bao-qian
f589bdc78d Optimize using 2016-01-06 06:45:08 +00:00
bao-qian
1a8efdbf2c Replace DelayInvoke with Task + Async 2016-01-06 06:31:17 +00:00
bao-qian
b78e0144de Remove unused files 2016-01-06 06:03:50 +00:00
bao-qian
3c27b50ff6 Update score when titles are same 2016-01-06 04:58:40 +00:00
bao-qian
e8e5c8dff1 Merge pull request #464 from lances101/translations-line-endings
Changed line endings for translation files to CL from CRLF, fix #463
2016-01-04 17:40:47 +00:00
bao-qian
f66dd51084 Merge pull request #462 from lances101/bugfix-447
Fix #447 Trailing slash for folders plugin
2016-01-04 17:36:51 +00:00
Boris Makogonyuk
54096d56d3 Changed line endings for translation files to CL from CRLF 2016-01-04 18:36:40 +01:00
Boris Makogonyuk
832119f6b1 Now checks if path has trailing slash before adding a new one 2016-01-04 18:30:11 +01:00
Boris Makogonyuk
5abd4dcc66 Added trailing slash to saved folders action for Folder plugin 2016-01-04 16:17:04 +01:00
bao-qian
a4936a6ff3 Ignore Roslyn caches 2016-01-04 05:04:20 +00:00
bao-qian
ebe4804b00 Including more web search by default
1. Fix #376
2. Thanks @ishu3101
2016-01-04 05:03:23 +00:00
bao-qian
098db9adf6 Remove unused file since ShellRun has been removed 2016-01-04 00:48:35 +00:00
bao-qian
38b3c82ece Remove ShellRun
1. Remove ShellRun using p/invoke
2. Remove ResolveShortcut when open contanning folder
3. fix #88
2016-01-04 00:01:48 +00:00
bao-qian
99a7453f28 Merge pull request #454 from Wox-launcher/dotnet45
Upgrade Wox to .net 4.5
2016-01-03 17:32:02 +00:00
bao-qian
8ade52c8d9 Merge pull request #423 from lances101/bugfix-271-positioning
Bugfix #271 positioning
2016-01-03 17:31:44 +00:00
bao-qian
a3ca1febbc ResultPanel should be empty when there is no result 2016-01-02 23:22:58 +00:00
bao-qian
767430d065 Merge pull request #426 from lances101/bugfix-404
Fix Crash when open containing folder of *.lnk item
Fix #404
2016-01-02 22:41:56 +00:00
bao-qian
f9e27ef67c Fix UI flickering under .net 4.5
1. This is part of .net 4.5 fix, check #393 to see more
2. This bug is introduced since commit df4ca3fecc9784a3b55f93806d8b2a662523056f
2016-01-02 06:59:35 +00:00
bao-qian
4d25d505e0 Fix color of selected item and mouse item
This is part of .net 4.5 fix, check #393 to see more
2016-01-02 04:34:20 +00:00
bao-qian
74fb470647 Merge pull request #453 from Wox-launcher/master
Merge branch 'master' into 'dotnet45'
2016-01-02 02:10:37 +00:00
bao-qian
6404aac986 update build script
1. remove update generator from build script
2. add build version to release binary file name
3. remove installer script from deploy folder
2016-01-02 02:05:15 +00:00
bao-qian
4fcb8d5540 Merge branch 'dev' 2016-01-02 00:23:12 +00:00
bao-qian
4251ad7d45 Fix crashes for context menu on empty query
Fixed issue #434, thanks @pieper126
2016-01-02 00:22:43 +00:00
bao-qian
d87317f937 Merge pull request #427 from lances101/bugfix-397
Bugfix for issue #397
2016-01-01 17:09:40 +00:00
bao-qian
b202b75bf7 Merge remote-tracking branch 'refs/remotes/origin/master' into dev 2015-12-16 20:15:36 +00:00
bao-qian
5761ede9e1 Update README.md 2015-12-15 20:41:41 +00:00
bao-qian
cf15cb1e13 Recover downloads count. 2015-12-15 20:40:25 +00:00
bao-qian
e5c6136950 The bitdeli badge is useless 2015-12-15 12:14:56 +00:00
bao-qian
37f90e6f1c Update README.md
download badges is not working.
2015-12-15 12:13:44 +00:00
bao-qian
6416fe1934 Update link for badges 2015-12-15 00:57:38 +00:00
bao-qian
3b50428f82 Add downloads count 2015-12-15 00:55:06 +00:00
bao-qian
d4b22ee472 Merge pull request #432 from bitdeli-chef/master
Add a Bitdeli Badge to README
2015-12-15 00:42:18 +00:00
Bitdeli Chef
35c8197881 Add a Bitdeli badge to README 2015-12-15 00:58:21 +00:00
bao-qian
a860acaf0d Remove .net 4 compability 2015-12-14 10:32:45 +00:00
bao-qian
dccd240b66 fixup 2015-12-14 00:31:40 +00:00
bao-qian
35522ae77d Update demo 2015-12-14 00:31:39 +00:00
bao-qian
e40c1ff09e Fix leave open option for cmd plugin
Add "Wait for a key press before closing" option.
See #141 for more info.
2015-12-14 00:30:24 +00:00
Boris Makogonyuk
d71ddd7ad0 Stripped ShortcutHelper of unneeded p/invoke methods 2015-12-13 23:37:27 +01:00
Boris Makogonyuk
ba8300508d - Removed IWshRuntimeLibrary. It is no longer needed for the plugin.
- Added ShortcutHelper for invocation calls.
2015-12-13 22:22:17 +01:00
Boris Makogonyuk
734505ee73 Bugfix for issue #397
Wallpaper is not cached in Wox's memory, so that the wallpaper file remains unlocked
2015-12-13 21:43:58 +01:00
Boris Makogonyuk
dd65c173a9 Bugfix for #404
When opening containing folder for `*.lnk` that cannot be resolved to a file name, the folder containing the `.lnk` will be opened.
2015-12-13 20:58:51 +01:00
bao-qian
ebae675961 Fixup missing reference 2015-12-13 13:36:29 +00:00
bao-qian
539eadf533 Merge master 2015-12-13 13:32:30 +00:00
bao-qian
3beebd42a8 delete junk 2015-12-13 13:16:33 +00:00
Boris Makogonyuk
66e00bb79a Messages should now display correctly on high dpi devices: now using Device Aware Pixels too. 2015-12-13 04:50:23 +01:00
Boris Makogonyuk
83985aa44c Added Pixel to Device Independent Pixel transformation to WindowIntelopHelper
MainWindow GetWindowsTop and GetWindowsLeft will use DIP when searching for the center of the screen
2015-12-13 04:22:01 +01:00
bao-qian
bb9684f7d3 Remove https link to getwox due to ssl certificate expired
Fix #421
2015-12-09 19:25:29 +00:00
bao-qian
ddfe79b3ac Merge pull request #417 from Wox-launcher/dev
Change https to http becuase the SSL has expired
2015-12-06 18:27:31 +00:00
qianlifeng
c852ad1d45 change https to http becuase the SSL has expired 2015-12-03 23:21:53 +08:00
bao-qian
29f535da94 Upgrade json package 2015-11-30 22:45:04 +00:00
bao-qian
d5b6744a41 Update README.md 2015-11-30 21:57:07 +00:00
bao-qian
cbc3cfc33b Fix duplication of tray icons
Fix #413
2015-11-30 19:49:46 +00:00
bao-qian
547bd46bb3 Disable blur when os is not supported
Releated: #330
2015-11-29 12:47:04 +00:00
bao-qian
8b8a303365 Fix hardcode
Fix #385
2015-11-29 08:50:17 +00:00
bao-qian
7b386c4f41 Fix FindResource
http://windowsasusual.blogspot.ie/2015/10/wpf-applicationcurrentfindresource-and.html
2015-11-29 08:20:13 +00:00
bao-qian
5b8fa5ec8d Refresh UI after change font 2015-11-29 07:40:56 +00:00
bao-qian
2c81ff90da Use opacity to set blur
releated: #330
2015-11-29 07:23:05 +00:00
bao-qian
66e118abdf Misc 2015-11-29 07:19:58 +00:00
bao-qian
38791e50ea Refactoring blur
1. Refactoring blur, see discussion in : 7f8bb80
2. Releated issue: #330
2015-11-29 06:29:32 +00:00
bao-qian
a8c6a97579 Better mutex cleanup 2015-11-29 05:14:56 +00:00
bao-qian
5bb90828f8 Fix Wox restart by wait Mutex to be released
Fix bug in 24866ff032829e9bd34704d3d5970d227a4c8db3.
Wait existing Mutex to release itself instead of create a new one.
Relate issue: #322
2015-11-29 03:28:47 +00:00
bao-qian
e3e5085214 Merge branch 'master' into dev 2015-11-28 11:48:28 +00:00
bao-qian
9be12da34e Merge pull request #408 from vankasteelj/dev
add french locale & xaml
2015-11-28 11:23:43 +00:00
bao-qian
8e7b40efec Misc 2015-11-28 10:55:07 +00:00
bao-qian
d7d71d9ff1 Add solution level AssemblyInfo file, and bump version
1. Add solution level AssemblyInfo file
2. Bump assembly version
3. Fix #324
2015-11-28 10:47:49 +00:00
vankasteelj
2d68e3d4f3 add fr to csproj 2015-11-27 23:22:29 +01:00
vankasteelj
53236faaa0 add french locale & xaml 2015-11-27 22:04:13 +01:00
bao-qian
daca1b3615 Update README.md 2015-11-26 11:09:56 +00:00
bao-qian
9a8032a673 Add more badges. 2015-11-26 08:15:50 +00:00
bao-qian
b11972d1b7 Merge remote-tracking branch 'origin/master' into dotnet45 2015-11-26 07:45:12 +00:00
bao-qian
041ea2fbb1 Merge branch 'master' into dev 2015-11-26 07:43:44 +00:00
bao-qian
5167611da5 Merge remote-tracking branch 'origin/master' into dotnet45 2015-11-26 07:43:00 +00:00
bao-qian
4526378b33 Merge remote-tracking branch 'origin/master' into dotnet45 2015-11-26 07:42:09 +00:00
bao-qian
bc2a9cf1c0 Misc
IDE Misc
2015-11-26 07:09:08 +00:00
bao-qian
c4a5eeabcc merge master 2015-11-26 06:57:12 +00:00
bao-qian
00836cd38b Update faq for how to report bugs 2015-11-26 05:33:44 +00:00
bao-qian
c0009c7e62 Manually restart is no longer needed.
24866ff032829e9bd34704d3d5970d227a4c8db3 fix the restart
2015-11-26 05:24:27 +00:00
bao-qian
6023f415a4 Fix Wox restart
1. refactoring restart
2. delte some windows forms methods
3. using string inteperlation and delete hard coeded new line char

should fix #322
2015-11-26 05:01:00 +00:00
bao-qian
f55daf65e3 Merge pull request #406 from marshallmick007/master
Updated spelling and grammar
2015-11-26 03:52:21 +00:00
marshallmick007
fe3c23d29c Updated spelling and grammar 2015-11-25 20:43:34 -07:00
bao-qian
f0765ba743 Fix System Command plugin
1. Fix error code handle for 39191a55187a36141bff42fcaf803135c0fe0b3c
2. use WPF MessageBox
3. Fix postion / window handle for
39191a55187a36141bff42fcaf803135c0fe0b3c
2015-11-26 01:27:18 +00:00
bao-qian
672c623757 Merge pull request #405 from SweBeat/NewSystemFeatures
Add more system commands
2015-11-26 00:15:21 +00:00
Tobias Johansson
e33799701b *Moved everything to dev branch
- Sorry for the trouble
2015-11-25 18:49:44 +01:00
bao-qian
e5e64a4b6d Merge pull request #399 from ReadmeCritic/master
Update README URLs based on HTTP redirects
2015-11-23 17:36:47 +00:00
ReadmeCritic
63f1c1f7b5 Update README URLs based on HTTP redirects 2015-11-23 07:34:59 -08:00
bao-qian
005de550c1 Merge pull request #396 from kayone/master
Updated google search logo
2015-11-17 18:42:05 +00:00
Keivan Beigi
20fd3bdc20 Updated google search logo 2015-11-17 10:35:08 -08:00
bao-qian
e29f53a82d Merge branch 'master' into dotnet45 2015-11-13 05:15:00 +00:00
bao-qian
f272470871 Add equality checking for old keyword and new keyword 2015-11-13 05:14:27 +00:00
qianlifeng
9c082a573c Merge pull request #383 from lances101/dev
Wox now has Blur
2015-11-13 11:05:29 +08:00
bao-qian
7de0a0a44a Fix "The type initializer for 'System.Windows.Application' threw an exception." 2015-11-12 22:14:22 +00:00
bao-qian
e848c78dba Merge branch 'master' into dotnet45 2015-11-12 22:02:40 +00:00
bao-qian
3f60723425 Fix some unresolved reference for xaml 2015-11-12 20:36:32 +00:00
bao-qian
8b97914438 Fix web search icon
part of #384
bug introduced in 38cc115c1f9e1efbb2256f6e88168493797adb5c
2015-11-12 19:53:43 +00:00
bao-qian
a8967bab39 Fix incorrect fuzzy match result for program plugin
Fix #270
2015-11-11 06:20:52 +00:00
bao-qian
1248307b96 Fix the order of everything results
Try to fix #381
2015-11-11 05:42:06 +00:00
bao-qian
de1491a310 Temp fix for CMD hotkey 2015-11-11 05:12:37 +00:00
bao-qian
b5a08c3ba4 Merge branch 'dev' 2015-11-11 01:18:16 +00:00
bao-qian
49bf86a8d5 Fix missing dll for CMD plugin
1. Fix #382
2. Part of #387
2015-11-11 01:17:37 +00:00
bao-qian
5e4cfbaf3f Better error log 2015-11-11 00:42:49 +00:00
bao-qian
11aed2ab61 Fix output path for Wox.Core 2015-11-11 00:42:34 +00:00
bao-qian
e6f19a4abf Fix unhandled exception 2015-11-11 00:33:33 +00:00
bao-qian
b3b6dc2e94 Update faq for how to report bugs 2015-11-10 20:05:18 +00:00
Boris Makogonyuk
ece09a93cd Changed WindowsAccentMode (int32) Theme setting to ThemeBlurEnabled (boolean):
- Exposed a new function "SetBlurForWindow" in WindowIntelopHelper that handles the blur.
- Deleted Accent and Test themes
- Changed SimpleBlur and Base themes according to changes
2015-11-10 12:18:03 +01:00
Boris Makogonyuk
9a56ebea81 Black and White Themes updated and staged 2015-11-10 06:54:23 +01:00
Boris Makogonyuk
287e15fddc *forgot to stage files on last commit 2015-11-10 06:36:08 +01:00
Boris Makogonyuk
724cb0787d Applying theme before actually setting the theme accent.
UserSettingStorage now stores current theme accent mode.

Themes:
Added a bunch of them. Testing what works.
2015-11-10 06:35:09 +01:00
Boris Makogonyuk
d8b806966a Reversing MainWindow Blur call and settings window modification
Added WindowsAccentMode to Base theme
2015-11-10 03:37:34 +01:00
Boris Makogonyuk
f24a6f0e3c MainWindow: AllowsTransparency set to True
WindowIntelopHelper: Added accent handling
SettingsWindow: Added combobox with accent selector to Theme tab (not functional yet)
Languages: Added entries for accent colors (all are in english for now)

[TEMP] Blur and Accent themes experiments
[TEMP] blur set in mainwindow on load.
2015-11-10 00:51:22 +01:00
bao-qian
34c516709b Merge pull request #377 from Wox-launcher/dev
Fix UI flickering
2015-11-09 16:21:55 +00:00
bao-qian
6d03eac9a1 Remove outdated chocolatey downloads 2015-11-09 05:40:32 +00:00
bao-qian
c456ef9118 Fix namespace
bug introduced since  e037e88
2015-11-09 03:59:20 +00:00
bao-qian
4351080aea Fix icon path for Web Search plugin 2015-11-09 03:56:56 +00:00
bao-qian
8aee2858ea Fix setting for multiple action keywords
1. completed rewrite the action keyword setting logic.
2. Fix setting for multiple action keywords in #352
3. Fix setting for Web Search plugin
2015-11-09 03:20:02 +00:00
bao-qian
da5a930e89 Move namespace 2015-11-09 01:32:33 +00:00
bao-qian
5131cc8e43 Typo 2015-11-08 23:49:33 +00:00
qianlifeng
60f06f97fa fix a null pointer issue 2015-11-08 19:31:44 +08:00
qianlifeng
c0216e0800 Merge branch 'dev' of https://github.com/Wox-launcher/Wox.git 2015-11-08 19:22:07 +08:00
qianlifeng
2be68342bb use caculated score for sys plugin item 2015-11-08 19:21:48 +08:00
bao-qian
c43a29f058 Update readme 2015-11-08 05:03:34 +00:00
bao-qian
ab14b9c8bb Update readme
Because of the ongoing refactoring, the doc is outdated.
2015-11-08 04:56:50 +00:00
bao-qian
fa3e496aae Update readme 2015-11-08 04:54:40 +00:00
bao-qian
543cd5af80 Fix progress bar
Bug introduced in 9962ddf2ed80a00036ebdb2965429675c4355472
2015-11-08 03:06:34 +00:00
bao-qian
e3cdfe27d1 Fix query history for the new result panel 2015-11-08 02:50:33 +00:00
bao-qian
d946e18fa2 Fix CMD plugin for new result panel 2015-11-08 02:27:37 +00:00
bao-qian
b33b696336 Misc 2015-11-08 02:27:13 +00:00
bao-qian
e928b4c9e0 Fix web search plugin for new result panel 2015-11-08 02:27:08 +00:00
bao-qian
2b27e84956 Enhance result panel update
The last commit f132cb54baa000a245feb5da87149960f6dbd9f5 only fix UI
flickering for different icon. This commit also fix the commit for same
icon. e.g. in web search plugin, although the title is different, but
the icon is not changes.
part of #350
2015-11-08 01:44:28 +00:00
bao-qian
9627272b57 Fix clearance of old results
part of #350
2015-11-07 20:48:18 +00:00
bao-qian
705354a3d6 Better logger
1. Throw exception for fatal/error log when debugging
2. Write to debug output for warn/debug/info log when debugging
3. part of #355
2015-11-07 17:32:58 +00:00
bao-qian
7d52b0cc96 Fix exclusive for action keyword 2015-11-07 03:50:26 +00:00
bao-qian
8662e963ac Misc 2015-11-07 03:50:15 +00:00
bao-qian
08594f0b96 Upgrade to .net 4.5 2015-11-07 03:09:10 +00:00
bao-qian
7db73cbd44 tmp 2015-11-07 02:23:40 +00:00
bao-qian
cae8485092 Fix UI flickering
See #350
2015-11-06 21:30:38 +00:00
bao-qian
64e020b1ad Better crash report 2015-11-06 19:55:48 +00:00
bao-qian
2dd2208f48 Fix ui for action keywords 2015-11-06 18:12:46 +00:00
bao-qian
ddc28c43c8 Merge pull request #372 from Wox-launcher/dev
Multiple action keywords implemented
2015-11-06 02:37:11 +00:00
bao-qian
7c889e3523 Add more comments
See #352
2015-11-06 02:34:50 +00:00
bao-qian
af7beb2c34 Improve UI for multiple action keywords
See #352
2015-11-06 02:29:32 +00:00
bao-qian
7b50febba3 Misc 2015-11-06 01:19:13 +00:00
bao-qian
00543bca17 Fix PluginManagement plugin for multiple action keyword
1. Fixup, part of #352
2. Windows.Form -> WPF
3. Refactoring
2015-11-06 01:17:34 +00:00
bao-qian
178710dabc Fix PluginIndicator for multiple action keywords
1. Fixup, part of #352
2. Refactoring
2015-11-06 01:16:37 +00:00
bao-qian
99d9d14d3b Misc
1. Rename
2. Fix progress bar: progress bar should not be loaded when only white
spaces typed
2015-11-06 01:09:08 +00:00
bao-qian
a07d6aa1e7 Enable multiple action keywords
See issue #352
2015-11-05 19:29:45 +00:00
bao-qian
59a4abff7c Better name
Timeit.Stopwatch -> Stopwatch.Normal
Timeit.StopwatchDebug -> Stopwatch.Debug
2015-11-05 19:29:45 +00:00
bao-qian
df0f310ddd Replace Dispose with Lambda
1. Faster
2. Fix #361
2015-11-04 21:35:04 +00:00
bao-qian
57a06aa122 Merge pull request #363 from Wox-launcher/dev
Auto completion for the folder plugin
2015-11-04 18:06:04 +00:00
bao-qian
f110dce520 Merge branch 'master' into dev 2015-11-04 18:02:58 +00:00
bao-qian
3085799c3c Fix #357
Fix bug introduced since a5abe9234faafcd170f9468a70f42bf60eda0f0d
2015-11-04 17:21:45 +00:00
bao-qian
3d9b9af55e Fix #362 2015-11-04 17:08:27 +00:00
bao-qian
ad21909b5c Remove unused reference 2015-11-04 16:40:10 +00:00
bao-qian
d98d00556d Merge branch 'master' into dev 2015-11-04 16:23:50 +00:00
bao-qian
5c7a4323e3 Merge branch 'ci' 2015-11-04 16:20:08 +00:00
bao-qian
183701a00a bat -> ps1 Fix bug for 8fe993ddd5 2015-11-04 16:17:10 +00:00
bao-qian
549987296c Merge branch 'ci' 2015-11-04 16:12:51 +00:00
bao-qian
9918e49bb1 Only deploy to NuGet when API changed (interface or implementation), see #360 2015-11-04 16:07:46 +00:00
bao-qian
d57ef1e928 Only tested build should be deployed 2015-11-04 16:03:05 +00:00
bao-qian
203af0fc76 Better instruction 2015-11-04 05:04:08 +00:00
bao-qian
a446c0a9c9 Change nuget api keys 2015-11-04 04:47:14 +00:00
bao-qian
b2aba7918d Update instruction for ci builds 2015-11-04 04:46:29 +00:00
bao-qian
fc2c877a57 Merge pull request #359 from Wox-launcher/ci
Fix continue integration in AppVeyor
2015-11-04 04:38:17 +00:00
bao-qian
f2a93887c9 Fix continue integration in AppVeyor 2015-11-04 04:30:54 +00:00
qianlifeng
b1eb48d201 Fix typo 2015-11-04 10:04:54 +08:00
bao-qian
d372d786ef Appveyor is case sensitive now 2015-11-04 01:21:51 +00:00
bao-qian
dc8df9c62f Enable PreLoadImages
Fix bug introduced in
cf87f68b42
2015-11-04 01:10:54 +00:00
bao-qian
5b3ea08b39 Ignore query test
Current query is tightly integrated with GUI, can't be tested.
2015-11-04 01:05:03 +00:00
bao-qian
72a754676a Misc 2015-11-04 00:29:13 +00:00
bao-qian
cb1da686ec Fix System.NullReferenceException for #356 2015-11-04 00:26:15 +00:00
bao-qian
8a78e4e9f4 Update build script for new nuget retore 2015-11-04 00:12:40 +00:00
bao-qian
b9b59ac2e0 Add simple usage 2015-11-03 23:21:27 +00:00
bao-qian
549b982c5f Update installation instruction 2015-11-03 22:32:23 +00:00
bao-qian
558f527f20 Change copyright 2015-11-03 21:16:29 +00:00
bao-qian
d897d64aa5 Ignore python in github language statistics 2015-11-03 21:15:26 +00:00
qianlifeng
59463958d3 Update README.md 2015-11-03 23:34:59 +08:00
qianlifeng
d4a606884c Update README.md 2015-11-03 18:50:41 +08:00
qianlifeng
ff3a2f6b67 Merge pull request #347 from happlebao/refactoring
Refactoring
2015-11-03 18:21:15 +08:00
bao-qian
288ac62448 Refactoring Query initialisation 2015-11-03 05:09:54 +00:00
bao-qian
f5d3df65b0 Misc 2015-11-03 01:33:53 +00:00
bao-qian
fc6ac662cd Refactoring instant query 2015-11-03 00:34:27 +00:00
bao-qian
cd0d9052e8 Misc 2015-11-02 22:15:06 +00:00
bao-qian
86da8cbd17 Refactoring Plugin.Feature 2015-11-02 19:27:46 +00:00
bao-qian
7a38143f5e Remove AssemblyHelper 2015-11-02 19:27:36 +00:00
bao-qian
818802cf5e Refactoring GetPlugins<T>() 2015-11-02 18:52:34 +00:00
bao-qian
a668ed5e24 Refactoring LoadPluginInterfaces 2015-11-02 18:13:53 +00:00
bao-qian
c9edc217fd Misc 2015-11-02 13:43:19 +00:00
bao-qian
89dc9e7e7f Better log info 2015-11-02 13:43:09 +00:00
bao-qian
96b6832dff Remove LoadInterfacesFromAppDomain
Much faster. ApplyPluginLanguages is 10 times faster now. 7ms vs 100ms.
2015-11-02 13:42:52 +00:00
bao-qian
881e414043 Fix ResourceMerger
1. Fix duplication for loading resource.
2. Fix null reference when plugin is not loaded.
3. speedup.
2015-11-02 02:49:38 +00:00
bao-qian
b5a8312167 Add startup time measurement 2015-11-02 02:47:43 +00:00
bao-qian
ac3a282876 Fix bug for CMD
This bug is introduced since commit:
73dadde5f077896129aa574d028c0343485f3ddc
2015-11-02 01:06:57 +00:00
bao-qian
a3117fa61d Misc 2015-11-02 00:09:42 +00:00
bao-qian
bfa0db3ba3 Replace all Stopwatch with Timeit 2015-11-02 00:04:05 +00:00
bao-qian
79fdba969b Don't sort plugins every time, sort it when set it 2015-11-01 23:32:17 +00:00
bao-qian
79461d52c2 Rearrange code
Fields -> Properties -> Init method -> Query methods -> Is methods ->
Get Methods
2015-11-01 22:59:56 +00:00
bao-qian
8c7bac7dbb Refactoring GetExclusivePlugin and GetActionKeywordPlugin
System plugin = plugin with action keyword *
Non system plugin = exclusive plugin + action keyword plugin
2015-11-01 19:47:20 +00:00
bao-qian
bb3b982dea Refactoring Query Dispatch
half lines of code :)
2015-11-01 17:28:13 +00:00
bao-qian
f3038e4fef Fix System.ArgumentException
Fix System.ArgumentException("Illegal characters in path") when parsing
path string
2015-11-01 01:19:00 +00:00
bao-qian
cfeb637685 Use Nlog.Schema from Nuget 2015-11-01 01:18:59 +00:00
bao-qian
f37fd5c5e3 Move NLog.xsd, let it handled by nuget 2015-11-01 01:18:54 +00:00
bao-qian
4368602684 Use consistent name convention 2015-11-01 01:18:53 +00:00
bao-qian
a67ced29a3 Remove sensitive information 2015-11-01 01:18:53 +00:00
bao-qian
ca8293ebdb Migrate MSBuild-Integrated solutions to use Automatic Package Restore
http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
2015-11-01 01:18:40 +00:00
bao-qian
4a95dd8ba3 Use NuGet for NAppUpdate 2015-10-31 18:49:37 +00:00
bao-qian
1616aa87bd Remove PluginDebugger 2015-10-31 18:20:43 +00:00
bao-qian
9d9400f4d9 Fix Debug output
DebugHelper is useless, bacuase the return statement is always executed before the actual code.
2015-10-31 18:06:57 +00:00
bao-qian
a6f8eb28f2 Refactoring Query 2015-10-31 16:02:56 +00:00
bao-qian
251834143c Better comment 2015-10-30 23:23:08 +00:00
bao-qian
ad8b6c806d Optimize using directives 2015-10-30 23:23:01 +00:00
bao-qian
26a6264039 Refactoring DelayInvoke
In MainWindow.xaml.cs, the reference of originQuery, lastQuery and
tbQuery.Text are same, so remove originQuery is fine.
2015-10-30 23:22:54 +00:00
bao-qian
2dfcee6b25 Remove unnecessary thread switch 2015-10-30 23:22:47 +00:00
bao-qian
b283977281 Remove unnecessary decoration 2015-10-30 23:22:42 +00:00
bao-qian
2538a79ef0 Remove unused reference
System.xaml also removed because .net 3.5 doesn't has this dll, and it resolve the issue when using code metrics
2015-10-30 23:22:25 +00:00
qianlifeng
267f2afab6 Merge pull request #341 from lances101/master
Fixed #339. Hotkeys were ignored on desktop
2015-10-15 12:17:52 +08:00
Boris Makogonyuk
559eebbb70 Issue: If Wox was set to ignore hotkeys on full-screen it would fail.
Cause: Compared IntPtr with null. IntPtr is never null.
2015-10-14 18:41:45 +02:00
qianlifeng
326ee9a9c2 Merge pull request #340 from lances101/master
Option to ignore hotkeys on fullscreen windows
2015-10-08 12:14:29 +08:00
Boris Makogonyuk
dc4c33c0d5 Reflected functionality changes from the last commit on the whole project. 2015-10-08 01:02:36 +02:00
Boris Makogonyuk
3fbebfc283 ~Changed how the fullscreen detection work. Checking by Topmost was a stupid idea. It will now check for the window to fill the whole screen area. 2015-10-08 00:52:52 +02:00
Boris Makogonyuk
7273e1218a Wox now has an option to ignore hotkeys when the focused window is topmost. This will ignore not only the main Wox hotkey but also plugin hotkeys.
~ WindowIntelopHelper edited
~ User settings entry added
~ Checkbox added to General tab (as well as its events)
~ Language entries added for en/ru
2015-10-08 00:17:37 +02:00
qianlifeng
69e96f24c2 Merge pull request #339 from lances101/master
Fixed commit #334 multiple SelectionChanged firing
2015-10-07 18:24:09 +08:00
Boris Makogonyuk
92ddf2ca41 Fixed commit #334 multiple SelectionChanged firing 2015-10-06 14:46:12 +02:00
qianlifeng
3662afeaa7 Merge pull request #334 from JohnTheGr8/master
Couple improvements to settings
2015-09-28 12:34:29 +08:00
Ioannis G
860210628e close settings with esc 2015-09-26 00:50:22 +03:00
Ioannis G
a1988f91c1 fix tab populating in settings (fixes #291) 2015-09-25 23:43:09 +03:00
qianlifeng
6f6393493b Merge pull request #329 from lances101/master
Added Russian translation
2015-09-06 13:14:16 +08:00
Boris Makogonyuk
878213887f Change Russian to Русский for the language selector 2015-09-04 22:38:28 +01:00
Boris Makogonyuk
805b83da9c Added Russian translations to Wox 2015-09-04 22:35:52 +01:00
qianlifeng
fe4319ad07 Merge pull request #323 from renzhn/fix-wox
Fix wox
2015-08-28 09:41:12 +08:00
renzhn
1bda9d5a26 fix disable plugin not working 2015-08-28 08:02:30 +08:00
renzhn
9ce239dedb fix StringNullOrEmptyToVisibilityConverter has no 0 parameter constructor 2015-08-28 08:02:23 +08:00
renzhn
bc86c9b57d setting window: plugin 2015-08-28 08:02:09 +08:00
renzhn
d9b9e02412 set port number if not zero 2015-08-28 08:01:41 +08:00
renzhn
2f7b5dd041 update plugin program translation 2015-08-28 08:01:28 +08:00
qianlifeng
5ffb7bba83 Merge pull request #319 from danisein/dev
Auto completion for the folder plugin
2015-08-24 00:07:12 +08:00
qianlifeng
436bffcb0e Merge pull request #320 from druellan/master
readme.md corrections and suggestions on the redaction
2015-08-24 00:05:48 +08:00
Dario Ruellan
99ce747720 readme.md corrections and suggestions on the redaction 2015-08-23 12:38:11 -03:00
danisein@qq.com
f3fbbed7ee Auto completion for the folder plugin 2015-08-23 15:40:18 +08:00
qianlifeng
b7c024d275 Merge pull request #312 from junjie020/master
Specify a working directory when run a program from a process
2015-08-17 11:31:50 +08:00
junjie020
cf76c943b8 Fix ShellExecCmdLine fucntion. Using global::System.Diagnostics.Process.Start to run program without working directory specifying. 2015-08-17 11:22:45 +08:00
qianlifeng
2a0e641de7 Update README.md 2015-07-19 23:08:13 +08:00
qianlifeng
630456f700 add missing sleep images and translations 2015-07-17 15:38:50 +08:00
qianlifeng
618ba376b2 Ajust maxium result item UI 2015-07-17 15:23:38 +08:00
qianlifeng
c8a445275b merge with master 2015-07-17 15:08:39 +08:00
qianlifeng
68b3c449a6 misc 2015-07-17 14:37:38 +08:00
qianlifeng
aee7d171c5 Merge pull request #303 from kerams/sleep
Add option to put computer to sleep
2015-07-15 09:12:52 +08:00
kerams
2089406eaf Add option to put computer to sleep 2015-07-14 17:59:24 +02:00
qianlifeng
298e041b80 Merge pull request #302 from kerams/max-results
Make the number of results shown at a time customizable
2015-07-13 10:17:05 +08:00
kerams
c79bf1ca3a Make the number of results show at a time customizable 2015-07-12 21:13:30 +02:00
qianlifeng
207546b53c Update README.md 2015-06-10 13:08:40 +08:00
qianlifeng
a54898b062 Update README.md 2015-06-10 13:05:12 +08:00
qianlifeng
124803c89d Merge pull request #288 from Leon99/dev
Support for assigning any key as a hotkey; minor refactoring
2015-06-08 10:21:50 +08:00
Leon V
825128b630 Support for assigning any key as a hotkey; minor refactoring 2015-06-07 13:45:06 +10:00
qianlifeng
dcd20f42b9 Merge pull request #278 from dstiert/program-source-details
Improve configurability of Programs plguin
2015-05-03 14:25:46 +08:00
Devin Stiert
b6f14a752c Google translated translations 2015-05-02 10:31:20 -04:00
Devin Stiert
40f58d7054 Support editing 2015-05-02 10:17:42 -04:00
Devin Stiert
485afcfa6e Allow disabling of default program sources 2015-05-02 09:47:03 -04:00
Devin Stiert
e82bc859f5 Fix csproj 2015-04-22 09:22:55 -04:00
Devin Stiert
5615e02cdb fix proj file 2015-04-20 20:35:03 -04:00
Devin Stiert
4c5a046bc0 Add max depth and suffixes per program source 2015-04-20 20:32:10 -04:00
qianlifeng
6b6ab5e752 fix #249 Characters not being properly escaped in Python plugins 2015-03-08 14:58:14 +08:00
qianlifeng
6d3f3985a2 Remove context shell load codes and change image cache path 2015-03-07 16:30:54 +08:00
qianlifeng
64e57c5419 Update README.md 2015-03-04 09:25:19 +08:00
qianlifeng
7e11c319e7 fix #249, replace escapes before sending json rpc request to plugin [WIP] 2015-03-03 18:29:36 +08:00
qianlifeng
12265def19 Add translation for CMD plugin 2015-02-28 18:30:08 +08:00
qianlifeng
45f60ae646 Fix UI issues when using web search plugin with suggestions 2015-02-28 18:20:06 +08:00
qianlifeng
72988cc6fb Using new thread to check upgrade 2015-02-27 18:04:49 +08:00
qianlifeng
4d3df4cda6 fix #256 2015-02-27 09:28:07 +08:00
qianlifeng
a0b7768a86 Fix #255, can't delete items in folder plugin 2015-02-26 17:12:21 +08:00
qianlifeng
7aae1b262e Add translation for icon tray. 2015-02-21 21:57:00 +08:00
qianlifeng
5ace62a5fd Merge branch 'dev' of https://github.com/qianlifeng/Wox.git 2015-02-20 22:29:29 +08:00
qianlifeng
48e01d3ea3 adding fixed height for caculating windows top 2015-02-20 22:18:27 +08:00
qianlifeng
d93c705737 fix #251 add auto center Wox option 2015-02-20 21:45:42 +08:00
qianlifeng
b1a97eca39 fix #252 web search items lost after restart Wox 2015-02-20 21:14:15 +08:00
qianlifeng
d91088879c Implement ShellContextMenu [WIP] 2015-02-12 18:58:39 +08:00
qianlifeng
21e5f33487 Add shell context [WIP] 2015-02-12 00:12:28 +08:00
qianlifeng
48f7c37d3b Merge branch 'V1.2.0' 2015-02-11 00:01:44 +08:00
qianlifeng
815d911143 Add log for storage crashing 2015-02-10 23:48:09 +08:00
qianlifeng
d90baed5b5 Add bountysource 2015-02-10 09:42:52 +08:00
qianlifeng
e767cee4c0 Update query history language 2015-02-09 22:14:38 +08:00
qianlifeng
eafce4442c Change project generate sequence 2015-02-09 21:59:23 +08:00
qianlifeng
3652394dab Update version 2015-02-09 21:34:29 +08:00
qianlifeng
a942882c73 Add QueryHistory to Wox (Ctrl+Up and Ctrl+Down) 2015-02-09 19:16:13 +08:00
qianlifeng
b8f829dbc3 Add item number [WIP] 2015-02-09 00:13:08 +08:00
qianlifeng
8d33644749 Add a new theme 2015-02-08 21:25:59 +08:00
qianlifeng
268df23739 Add uninstalleverything command as everything serivce will prevent move/remove wox folder. 2015-02-08 17:09:14 +08:00
qianlifeng
6c731f50a9 Improve Everything plugin user experience 2015-02-08 16:27:41 +08:00
qianlifeng
dc2f3cd166 Improve setting window performance (theme). 2015-02-08 10:38:32 +08:00
qianlifeng
877ad53ead fix a plugin query issue 2015-02-08 00:06:22 +08:00
qianlifeng
bc7dce6026 Add IContextMenu interface & lazy load context menus 2015-02-07 23:49:46 +08:00
qianlifeng
c24e216f26 fix #246 prompt restart wox after uninstall plugin 2015-02-07 21:40:25 +08:00
qianlifeng
2d05ecc81f Add title translations 2015-02-07 21:27:48 +08:00
qianlifeng
437c1a154c Add plugin title translations 2015-02-07 20:17:49 +08:00
qianlifeng
82d30c6e74 Allow searches in context menu 2015-02-07 16:53:33 +08:00
qianlifeng
998eecb94d fix regressive issues 2015-02-06 18:13:22 +08:00
qianlifeng
02e22e5781 Add top most function. 2015-02-05 23:29:41 +08:00
qianlifeng
ad11ca0a87 Add IExclusivePlugin 2015-02-05 22:20:42 +08:00
qianlifeng
7b0a643de3 Add IExclusiveSearch interface [WIP] 2015-02-05 18:43:05 +08:00
qianlifeng
fa53bce27a Add init time and query time to setting view 2015-02-05 00:03:35 +08:00
qianlifeng
1d3f1fd7d0 Improve instant search ue 2015-02-04 23:16:41 +08:00
qianlifeng
5d9a94466a Add drop event. 2015-02-03 18:32:16 +08:00
qianlifeng
b5175ae8b0 Update README.md 2015-02-03 12:45:41 +08:00
qianlifeng
38948053cc Merge 2015-02-03 12:29:58 +08:00
qianlifeng
4a5a496802 Merge branch 'V1.2.0' of https://github.com/qianlifeng/Wox into V1.2.0 2015-02-03 12:29:26 +08:00
qianlifeng
30b6c8aa03 Add hotkey for navigating result items. 2015-02-03 12:27:59 +08:00
qianlifeng
95e468c90a Add drop event [WIP] 2015-02-02 23:28:40 +08:00
qianlifeng
d74dd48d24 Merge branch 'V1.2.0' 2015-02-01 22:48:33 +08:00
qianlifeng
5ef72b81ae Add upgrade dialog 2015-02-01 22:46:56 +08:00
qianlifeng
691cf1ce72 Merge remote-tracking branch 'origin/V1.2.0' into V1.2.0 2015-02-01 12:39:01 +08:00
qianlifeng
5b70064fa4 Update upgrade feed url 2015-02-01 12:32:22 +08:00
qianlifeng
80e01a4d3d Merge pull request #242 from Boelensman1/V1.2.0
Added open in folder to the program plugin.
2015-01-31 23:09:51 +08:00
Boelensman1
b30f3d6b8f Forgot to remove some lines.
No longer opening explorer with admin rights.
2015-01-30 15:54:02 +01:00
Boelensman1
4672628ee2 Added open in folder to the program plugin. 2015-01-30 02:18:18 +01:00
qianlifeng
a112c6d9ee Remove autohotkey and add toggle command args 2015-01-29 22:35:01 +08:00
qianlifeng
2b1e343186 Add autohotkey 2015-01-29 18:26:50 +08:00
qianlifeng
36ce0c8271 Merge 2015-01-28 10:16:10 +08:00
qianlifeng
b521318e82 proj file changes. 2015-01-28 10:13:48 +08:00
qianlifeng
9f64a384d6 Implement IInstantSearch for CMD and WebSearch plugin 2015-01-27 22:59:03 +08:00
qianlifeng
4ecff94aec Change update logic 2015-01-27 21:51:29 +08:00
qianlifeng
c7e73924c8 Add clean script to Wox.csproj 2015-01-27 19:29:32 +08:00
qianlifeng
87958d9db8 Move web search setting to its own project 2015-01-26 22:50:38 +08:00
qianlifeng
56fa719931 API changes 2015-01-26 20:54:01 +08:00
qianlifeng
6ee6cd3977 Add everything plugin 2015-01-26 19:06:03 +08:00
qianlifeng
7821f41723 some API changes for Query class and renames. 2015-01-26 17:46:55 +08:00
qianlifeng
ddf6154600 Remove all obsolete methods 2015-01-24 22:42:06 +08:00
qianlifeng
929cc2727d Add pluginID for result. 2015-01-24 22:34:55 +08:00
qianlifeng
4379145231 Add activate statistics 2015-01-23 21:52:46 +08:00
qianlifeng
42d86fab8e make some renames 2015-01-23 20:49:00 +08:00
qianlifeng
cb41a4c386 update cleanup.bat 2015-01-23 20:12:52 +08:00
qianlifeng
672abbcaad Implement #202 2015-01-23 18:28:14 +08:00
qianlifeng
17bc9c35a7 add Cleanup CI job 2015-01-23 13:01:52 +08:00
qianlifeng
50587735b5 Update CI 2015-01-22 23:02:13 +08:00
qianlifeng
21edfdb62e Add Wox.UpdateFeedGenerator 2015-01-22 22:57:54 +08:00
qianlifeng
bda67afd4f Update CI 2015-01-22 21:02:52 +08:00
qianlifeng
c4ca06d5e5 Sort plugin and themes in setting dialog 2015-01-22 20:24:15 +08:00
qianlifeng
f4904e06c8 Change CI 2015-01-22 19:02:34 +08:00
qianlifeng
1273a6fb74 update ci 2015-01-21 23:51:12 +08:00
qianlifeng
3c626fd01e Update CI builds. 2015-01-21 23:25:57 +08:00
qianlifeng
00953850b3 Improve the update progress. 2015-01-21 23:00:56 +08:00
qianlifeng
563370f10b Remove unnecessary unit test 2015-01-21 21:09:35 +08:00
qianlifeng
62a33fe7fc remove unnessary files. 2015-01-20 22:41:19 +08:00
qianlifeng
ea18fda0a3 Merge with v1.2.0 2015-01-20 22:35:53 +08:00
qianlifeng
1ef163f827 Change log facility. 2015-01-20 22:33:45 +08:00
qianlifeng
3f6cb3cd73 Fix an issue if update failed 2015-01-20 20:05:38 +08:00
qianlifeng
284767409a Merge branch 'V1.2.0' of https://github.com/qianlifeng/Wox.git 2015-01-19 23:09:00 +08:00
qianlifeng
5e3d29df4c Add Auto Updater [WIP] & remove UAC project 2015-01-19 23:08:53 +08:00
qianlifeng
c380049b21 Refactoring 2015-01-19 19:14:02 +08:00
qianlifeng
b49209a0d9 Add query history plugin & upgrade all third-party packages 2015-01-18 18:21:48 +08:00
qianlifeng
9d39b616f9 Better exception report. 2015-01-16 23:42:12 +08:00
qianlifeng
32e0074f26 downgrade to .net framework 3.5 2015-01-15 21:01:43 +08:00
qianlifeng
8d746cd206 Upgrade to .net framework 4.5 2015-01-15 20:47:48 +08:00
qianlifeng
bc341d193f Upgrade to .net framework 4.0 2015-01-14 22:19:44 +08:00
qianlifeng
3ad2b2bfcc close #233 2015-01-13 09:47:56 +08:00
qianlifeng
acfad7ec5b add translation for crash reporter 2015-01-12 22:46:36 +08:00
qianlifeng
5be6511529 Add Wox.CrashReporter 2015-01-11 21:52:30 +08:00
qianlifeng
f20b4d570e Change output folders for plugins in Release 2015-01-09 12:45:56 +08:00
qianlifeng
06a9478555 Merge pull request #232 from allanpk716/V1.2.0
1,fix ImageLoader GetIcon() trigger FileNotFoundException when file not ...
2015-01-09 10:43:02 +08:00
716
6e3ca5391a 1,fix ImageLoader GetIcon() trigger FileNotFoundException when file not exist;
2,In FolderPluginSettings when trigger Delete Action need confirm;
3,Add drag and drop functionality in ProgramSetting and FileSystemSettings.

Signed-off-by: 716 <525223688@qq.com>
2015-01-09 10:30:12 +08:00
qianlifeng
2422a4200c Merge 2015-01-09 09:45:40 +08:00
qianlifeng
56788c8b8f Project structure change 2015-01-09 09:44:03 +08:00
qianlifeng
220ac2fa2d Fix a global hotkey issues in CMD, which will hang Wox on init. 2015-01-08 22:49:42 +08:00
qianlifeng
3143d0d8aa Merge pull request #230 from allanpk716/patch-1
FIx FileNotFoundException in GetIcon
2015-01-08 09:41:26 +08:00
Chin allan
0bb1669efa 修复 GetIcon 可能出现的 FileNotFoundException 异常
重启电脑的时候会提示 FileNotFoundException ,所以在这里加一个检查。
2015-01-08 08:47:24 +08:00
qianlifeng
288be8dd71 update plugin languages 2015-01-07 22:23:10 +08:00
qianlifeng
d3bf71a22d Add translation for folder plugin 2015-01-07 18:59:55 +08:00
qianlifeng
12abca39a2 Add translation for CMD plugin 2015-01-07 18:51:11 +08:00
qianlifeng
898c8854aa Add translation for web search plugin 2015-01-07 18:45:55 +08:00
qianlifeng
492e33aeda Add translations for Program plugin. 2015-01-06 23:24:11 +08:00
qianlifeng
ce9c832e00 Implement plugin i18n [WIP] 2015-01-06 18:28:23 +08:00
qianlifeng
5e0821417e Merge 2015-01-06 09:44:42 +08:00
qianlifeng
ce451e4dd4 Move some user settings to its own dll (cmd,folder plugin and etc) 2015-01-05 22:41:17 +08:00
qianlifeng
714d8c7092 Fix a issue when deserialize binary storage. 2015-01-05 18:18:29 +08:00
qianlifeng
6162904c59 Refactoring 2015-01-04 23:08:26 +08:00
qianlifeng
4d65b4c7a5 Fix crash issues when deserialize failed 2015-01-04 18:14:50 +08:00
qianlifeng
4243843951 Refactoring. Move system plugins to seperate DLLs. 2015-01-03 15:20:34 +08:00
qianlifeng
203965043e Add i18n support [WIP] 2015-01-02 23:07:49 +08:00
qianlifeng
bf87500e35 Add multiple language. [WIP] 2015-01-02 16:16:09 +08:00
qianlifeng
a038587224 Fix typo 2015-01-01 23:07:14 +08:00
qianlifeng
96d908094b Merge branch 'V1.2.0' of https://github.com/qianlifeng/Wox into V1.2.0 2014-12-31 12:43:02 +08:00
qianlifeng
61dc148d34 Fix a crash issue. 2014-12-31 12:42:49 +08:00
qianlifeng
f753369d1a Add unittest [WIP] 2014-12-29 23:02:50 +08:00
qianlifeng
72c2fa3863 Fix issues if didn't has permission to create dir 2014-12-29 22:09:54 +08:00
qianlifeng
ba0bda6aa6 Update the installer 2014-12-29 21:55:27 +08:00
qianlifeng
890397bae7 Refactoring. Move plugin related work to Wox.Core 2014-12-28 15:17:58 +08:00
qianlifeng
d9b2863382 Refactoring. 2014-12-27 12:34:51 +08:00
qianlifeng
ccc8d7e5cd Refactoring. 2014-12-26 22:51:04 +08:00
qianlifeng
50f6044a2f Refactoring [WIP] 2014-12-26 19:36:43 +08:00
qianlifeng
31281c7faa Update README.md 2014-12-24 18:32:57 +08:00
qianlifeng
e9b545a187 Update README.md 2014-12-24 18:31:08 +08:00
qianlifeng
be1ecdb0c8 Update README.md 2014-12-24 10:27:00 +08:00
qianlifeng
115e08d0c8 Fix a http request issues. 2014-12-23 22:22:20 +08:00
qianlifeng
e2a892eda3 Upgrade to v1.1.1 2014-12-23 21:17:15 +08:00
qianlifeng
5d536dd975 Upcate CI Scripts 2014-12-22 23:05:31 +08:00
qianlifeng
af258dcf41 Update CI 2014-12-22 22:54:05 +08:00
qianlifeng
bbb46a29a9 Add installer 2014-12-22 22:52:27 +08:00
qianlifeng
3f7c1b0750 Remove unittest for httprequest 2014-12-22 19:17:55 +08:00
qianlifeng
2b211c2ba0 Refactoring 2014-12-21 22:03:03 +08:00
qianlifeng
c20314f83c fix Wox handled exception at launch #221 2014-12-21 20:44:31 +08:00
qianlifeng
57bc1f2032 Preload top used images. 2014-12-18 19:22:47 +08:00
qianlifeng
d370f7e721 Change icon for thirdpartyplugin indicator. 2014-12-18 12:23:07 +08:00
qianlifeng
00c8ebbfe8 Revert "Add crashreproter"
This reverts commit ad81dfa001493272d1ea7e4a19ae74ca65c84622.
2014-12-18 12:20:58 +08:00
qianlifeng
17951d7fe0 Add crashreproter 2014-12-17 19:10:28 +08:00
qianlifeng
3e5288836d Add new version window 2014-12-16 23:29:25 +08:00
qianlifeng
6c94c3aa7b Add About Page. 2014-12-16 22:25:22 +08:00
qianlifeng
6a24794457 Remove unnessary codes. 2014-12-16 21:36:48 +08:00
qianlifeng
443e7df1b6 fix #216. Cound't open url with port 2014-12-16 00:07:12 +08:00
qianlifeng
82106c1c8b fix #185. Loading index cache on startup. 2014-12-15 22:58:49 +08:00
qianlifeng
32867d3666 make plugin folder name readable. 2014-12-15 20:38:42 +08:00
qianlifeng
384b4226f2 fix #151. 2014-12-15 18:50:28 +08:00
qianlifeng
cecd4aa36a Merge branch 'dev' of https://github.com/qianlifeng/Wox.git 2014-12-15 18:29:42 +08:00
qianlifeng
0dffd66651 Fix a crash issues when inputing after wox start. 2014-12-15 18:29:16 +08:00
qianlifeng
c34afae250 fix #203. Improve the weight of user selected items. 2014-12-15 18:26:15 +08:00
qianlifeng
128453fad1 Add upgrade check. 2014-12-14 23:16:29 +08:00
qianlifeng
ac3b86fb85 Update wpm to use the new api 2014-12-14 22:24:05 +08:00
qianlifeng
e303982ad8 Deploy nuget only when commits on master branch. 2014-12-13 22:01:23 +08:00
qianlifeng
df763c4dbd update ci scripts 2014-12-13 16:47:17 +08:00
qianlifeng
85fd46e1c6 update ci scripts 2014-12-13 16:33:19 +08:00
qianlifeng
51b37a49d5 update CI scripts 2014-12-13 16:30:00 +08:00
qianlifeng
4838813a38 update ci scripts. 2014-12-13 16:17:54 +08:00
qianlifeng
9867bd257f Update CI scripts 😢 2014-12-13 16:09:44 +08:00
qianlifeng
259985d328 Update CI scripts 😢 2014-12-13 15:17:44 +08:00
qianlifeng
2c4a9897ea Update CI scripts 2014-12-13 15:09:46 +08:00
qianlifeng
2dbc404544 Update CI scripts 2014-12-13 14:59:47 +08:00
qianlifeng
3d622a2c5a Update CI build script. 2014-12-12 19:12:30 +08:00
qianlifeng
8b342c2ddb Update CI build script 2014-12-12 18:59:44 +08:00
qianlifeng
ca1f441f5a Update CI build script 2014-12-12 18:36:01 +08:00
qianlifeng
0fefead7d5 Update auto build script 2014-12-12 18:32:21 +08:00
qianlifeng
cb9bc6ad12 Auto publish Wox.Plugin to nuget. 2014-12-12 18:22:17 +08:00
qianlifeng
b6d01133c4 Reduce the icon size and remove unnecessary images. 2014-12-12 13:02:13 +08:00
qianlifeng
9ddaee9830 Remove unnecessary codes merged from v1.1.0 2014-12-12 12:37:01 +08:00
qianlifeng
a5b54c50d1 Remove all third-party plugins into separate repos (except WPM). 2014-12-12 12:32:58 +08:00
qianlifeng
5c84ffe5dc Merge branch 'V1.1.0' into dev 2014-12-12 12:21:23 +08:00
qianlifeng
f178c8cce2 Solution files change. 2014-12-10 10:02:39 +08:00
qianlifeng
36bcafea98 Change the default width for themes. 2014-12-10 09:50:55 +08:00
qianlifeng
95cd051a4f Remove unnecessary files. 2014-12-10 09:49:42 +08:00
qianlifeng
125c5523e6 Merge pull request #211 from JohnTheGr8/dev
Display plugin icons
2014-12-10 09:43:31 +08:00
Ioannis G
374ed12811 display plugin icons in 'wpm list/uninstall' 2014-12-09 17:45:23 +02:00
Ioannis G
b489e54da4 display plugin icons in 'activate plugin' query 2014-12-09 17:42:20 +02:00
qianlifeng
e928c78749 Change the default with of Wox.
Remove Aero themes.
2014-11-27 13:01:12 +08:00
qianlifeng
34dbed7733 Merge branch 'master' into V1.1.0 2014-11-27 12:55:58 +08:00
qianlifeng
6df3066b49 Remove XP related description
We will not provide support for Wox in XP.
2014-11-27 12:38:13 +08:00
qianlifeng
10c4b93b60 Merge branch 'dev' 2014-11-27 12:20:33 +08:00
qianlifeng
3fabd2975e Update assemblyinfo 2014-11-27 12:19:01 +08:00
qianlifeng
217a7a34f8 fix #189 startup is too slow 2014-11-27 12:14:02 +08:00
qianlifeng
5855ff0d27 Fix errors that collections has been changed while foreach collections 2014-11-04 18:21:07 +08:00
qianlifeng
3c4a9a05a0 Add search monitor 2014-11-03 18:49:18 +08:00
qianlifeng
9481d04a19 Add custom context menu setting for findfile plugin and improve the search speed. 2014-11-03 17:30:48 +08:00
qianlifeng
90c7bf4413 Merge 2014-10-27 20:47:11 +08:00
qianlifeng
0b09f788c5 Merge 2014-10-27 20:38:47 +08:00
qianlifeng
3045611452 Reduce memory usage. 2014-10-27 18:22:25 +08:00
qianlifeng
0b3d028c2f Merge branch 'V1.1.0' of https://github.com/qianlifeng/Wox into V1.1.0 2014-10-27 17:16:24 +08:00
qianlifeng
a64be42f39 Update AssemblyInfo.cs 2014-10-27 16:50:09 +08:00
qianlifeng
8405301500 Merge branch 'dev' 2014-10-27 15:11:20 +08:00
qianlifeng
07ed6a6416 fix #189 startup is too slow 2014-10-27 15:08:32 +08:00
qianlifeng
970c9e70e4 Move MFTSearch to find file plugin. 2014-10-27 14:53:44 +08:00
qianlifeng
f76f29f533 Merge branch 'V1.1.0' of https://github.com/qianlifeng/Wox into V1.1.0 2014-10-24 19:47:24 +08:00
qianlifeng
c3ecf2d84e Merge branch 'V1.1.0' of https://github.com/qianlifeng/Wox into V1.1.0 2014-10-24 16:48:24 +08:00
qianlifeng
a7dfb9cb97 Allow unsafe codes in Release build. 2014-10-24 16:48:14 +08:00
qianlifeng
225d46b228 Update README.md 2014-10-24 16:14:36 +08:00
qianlifeng
f399ef8f69 fix #151 Add context menu for programs 2014-10-24 13:09:51 +08:00
qianlifeng
c61db8c957 Revert MFT Changes. 2014-10-24 09:43:43 +08:00
qianlifeng
30afc095b9 Revert MFTSearch changes. 2014-10-23 23:23:40 +08:00
qianlifeng
755e7bc232 Add Context menu 2014-10-23 18:39:11 +08:00
qianlifeng
80e38fc430 Add find file plugin. 2014-10-22 22:49:34 +08:00
qianlifeng
581423a87c Add MFT Searcher 2014-10-22 18:36:49 +08:00
qianlifeng
3634ca624d Fix a issues that JSONPRCAction could be null. 2014-10-22 16:20:50 +08:00
qianlifeng
be33ac3c4f Refactoring command args and change the signal instance implement. 2014-10-21 18:16:05 +08:00
qianlifeng
1cf79d8fbc Add more python plugin api. 2014-10-17 16:36:19 +08:00
qianlifeng
acba67f67d Merge branch 'master' 2014-10-13 17:14:53 +08:00
qianlifeng
1573738584 Revert readme 2014-10-13 17:13:35 +08:00
qianlifeng
5376171538 #192 fix json loads encoding issues. 2014-10-13 13:57:55 +08:00
qianlifeng
90c41aceab #191 add pip.bat for pip installing. 2014-10-11 18:08:43 +08:00
qianlifeng
6e10dc2893 Merge branch 'dev' of https://github.com/qianlifeng/Wox into dev 2014-09-19 17:26:28 +08:00
qianlifeng
87ce03e13e Move Log to Infrastructure project. 2014-09-19 16:57:48 +08:00
qianlifeng
4db7577448 Fix #181 that directory could be removed by user when wox running. 2014-09-19 16:23:43 +08:00
qianlifeng
afdee44dd1 Fix #183 2014-09-19 16:18:54 +08:00
qianlifeng
d929205bec fix typo 2014-09-19 11:02:28 +08:00
qianlifeng
0758d4f567 Merge pull request #171 from zlsun/dev
WebSearch: convert search word to url encoding before opening the url
2014-08-25 17:17:22 +08:00
zlsun
db0f228f4d WebSearch: convert search word to url encoding before opening the url 2014-08-25 16:20:08 +08:00
qianlifeng
a30f60c2ba Fix a clipboard crash issues & don't default exit Wox when exception happens. 2014-08-20 22:12:45 +08:00
qianlifeng
1d13943caf Merge branch 'dev' of https://github.com/qianlifeng/Wox into dev 2014-08-19 18:10:54 +08:00
qianlifeng
e91e4042ba close #150 Use tab to cycle switch candidates 2014-08-19 15:21:26 +08:00
qianlifeng
18720904f9 Update README.md 2014-08-19 13:13:23 +08:00
qianlifeng
8d2aa1fc09 Update README.md 2014-08-19 13:09:44 +08:00
qianlifeng
0e5155c85a Fix plugin API issues. 2014-08-17 22:35:46 +08:00
qianlifeng
3144a54c5b Including PythonHome in CI building 2014-08-17 16:15:01 +08:00
qianlifeng
49362ce5ab Add afterload event for LoadDefaultConfig 2014-08-17 15:57:25 +08:00
qianlifeng
13e629e17d fix #46 Reload index cache when the file changed in index directories 2014-08-14 22:21:07 +08:00
qianlifeng
8eb2f66b14 #149 fix Path including space in their name issues 2014-08-14 21:07:56 +08:00
qianlifeng
4fb0279f9a Expose index suffix setting 2014-08-14 19:45:48 +08:00
qianlifeng
5d1006f05b Expose index file suffixes config [WIP] 2014-08-13 23:16:45 +08:00
qianlifeng
eee76222bd Add reindex button to programs setting dialog. 2014-08-12 23:07:54 +08:00
qianlifeng
4121bbc772 Fix a programs bug if custom program folder is not exist. 2014-08-12 12:21:04 +08:00
qianlifeng
7926dd9aeb Add F1 to open wox function guide page. 2014-08-10 22:47:37 +08:00
qianlifeng
20ffcfb91e Refactoring Programs system plugin and adding re-index function when adding new location. 2014-08-10 22:22:54 +08:00
qianlifeng
961bfcc481 Fix sys plugin setting panel style issue. 2014-08-10 18:27:36 +08:00
qianlifeng
eee50eef46 close #137 2014-08-10 17:05:27 +08:00
qianlifeng
1329f3d2c7 Merge branch 'master' of https://github.com/qianlifeng/Wox 2014-08-10 16:50:45 +08:00
qianlifeng
0e812b911e Adjust score weight for programs. 2014-08-10 16:50:35 +08:00
qianlifeng
28bd5f33c6 Merge pull request #145 from dgoon/master
fix a typo: suggeestion -> suggestion
2014-07-30 17:10:09 +08:00
dgoon
673b72f327 fix a typo: suggeestion -> suggestion 2014-07-30 12:11:33 +09:00
qianlifeng
3fea8eb820 Fix a crash in Win8 2014-07-27 17:15:12 +08:00
qianlifeng
6e2e067d66 Merge pull request #134 from aaroncampf/master
Changes: See Comment
2014-07-25 10:02:42 +08:00
Aaron Campf
e09fe4acf0 Forgot to add Files 2014-07-24 17:32:19 -07:00
Aaron Campf
0385662197 Changes: Added Sys Folder, Moved Sys into folder, Added SysSettings, Made Sys use an AddRange and added ISettingProvider 2014-07-24 17:27:59 -07:00
qianlifeng
4ba222f19c Merge pull request #133 from aaroncampf/master
Combined Redundant Cases
2014-07-24 12:19:45 +08:00
Aaron Campf
6820a05efc Finally Fixed AutoFormatting 2014-07-23 13:46:19 -07:00
Aaron Campf
0982e12a80 Corrected Automatic Formatting 2014-07-23 13:36:07 -07:00
Aaron Campf
0536a2be33 Combined 2 cases
Stupid automatic formatting changed more then I wanted

Here is the change I made if you just want the code
case Key.Tab:
case Key.Enter:
AcceptSelect(resultCtrl.GetActiveResult());
e.Handled = true;
break;
2014-07-23 13:20:24 -07:00
qianlifeng
24c5aae77f Merge pull request #132 from CoenraadS/master
Optimize default icon method.
2014-07-22 19:37:25 +08:00
CoenraadS
a972a52be4 Optimize default icon method.
Simply return the first pointer, ignore the others. Assume if the first
one doesn't work, none of them will work.
2014-07-22 13:30:39 +02:00
qianlifeng
f473c29430 Merge pull request #131 from CoenraadS/master
Fix default icon retrieval.
2014-07-22 19:30:23 +08:00
CoenraadS
7cd9768880 Fix default icon retrieval.
And replace continue; with if() statements (supposably more compile
friendly)
2014-07-22 13:13:26 +02:00
qianlifeng
0a45a6fea9 #129 exclude system plugins results when searching websearch. 2014-07-21 23:18:39 +08:00
qianlifeng
9805ab8761 #129 fix space issues in searching programs 2014-07-21 22:54:18 +08:00
qianlifeng
b4bb98b230 Fix websearch setting issues. 2014-07-21 22:35:40 +08:00
qianlifeng
e11e141b5e remove bing search suggestions. 2014-07-21 22:30:04 +08:00
qianlifeng
83e199a0de #129 Make web search suggestion optional and add baidu suggeestion source. 2014-07-21 22:27:57 +08:00
qianlifeng
4e87211d39 Replace all obsoleted method 2014-07-21 19:48:17 +08:00
qianlifeng
88208285a4 Contron panel item priority should be lower when compared to programs. 2014-07-21 19:45:47 +08:00
qianlifeng
ae062586d7 Update README.md 2014-07-21 19:32:22 +08:00
qianlifeng
fa72389c07 Update Backup Download Link. 2014-07-21 19:28:21 +08:00
qianlifeng
ea94cb8650 Merge pull request #127 from CoenraadS/master
Control Panel Command handeling
2014-07-20 23:10:39 +08:00
Coenraad Stijne
39d6ccd11c Control Panel Command handeling
Now works for everything
2014-07-20 10:54:12 +02:00
qianlifeng
a62b225fe0 Merge pull request #125 from CoenraadS/master
Control Panel Split Logic
2014-07-20 10:13:38 +08:00
Coenraad Stijne
a72d1a13b6 Better path handeling
Thanks @orzFly
2014-07-19 18:14:31 +02:00
Coenraad Stijne
60df499584 Better icon-handeling.
And enumerate through ICON instead of GROUP_ICON
2014-07-19 15:34:52 +02:00
Coenraad Stijne
10204a4526 Save icons using GUID filename 2014-07-19 14:31:19 +02:00
Coenraad Stijne
a5d63bc383 Control Panel Split Logic 2014-07-19 12:39:26 +02:00
qianlifeng
fcd276dccb Update README.md 2014-07-19 10:58:36 +08:00
qianlifeng
fc66fba577 Refactoring FolderLink and URL plugin. 2014-07-19 10:12:11 +08:00
qianlifeng
f1697313c0 Fix potential issues in control panel. 2014-07-19 08:15:51 +08:00
qianlifeng
6d8244ba5c Merge pull request #122 from CoenraadS/master
Update Control Panel
2014-07-19 07:47:19 +08:00
Coenraad Stijne
102d5fdd7f Update Control Panel
The Control Panel now also includes third party panel items.
2014-07-18 20:15:35 +02:00
qianlifeng
2a86b06e0c Fix python env issues. 2014-07-18 23:12:50 +08:00
qianlifeng
7b4d6ba57e Pack python env to zip 2014-07-18 20:00:55 +08:00
qianlifeng
7be02731ee Fix issues in ControlPanel plugin. 2014-07-18 14:09:52 +08:00
qianlifeng
3cfa4f9cb7 Merge pull request #119 from CoenraadS/master
Added Control Panel
2014-07-18 09:43:16 +08:00
CoenraadS
10302f4bc9 Optimized search
Removed redundant check.
2014-07-17 20:05:09 +02:00
CoenraadS
b576ee300b Save icon's as .bmp
.ico hack was unneccassary.
2014-07-17 19:37:51 +02:00
CoenraadS
77afcc2293 Only return top 2 relevent results 2014-07-17 17:47:58 +02:00
CoenraadS
574e711f33 Added priority to title results 2014-07-17 17:43:29 +02:00
CoenraadS
4cab77a57d Trim query 2014-07-17 17:36:19 +02:00
CoenraadS
6cbc9493c9 Cosmetic changes
Setting => Settings
2014-07-17 17:24:08 +02:00
CoenraadS
1d5f72f9ab Added Control Panel 2014-07-17 17:14:58 +02:00
qianlifeng
b8e034e33c Add proxy setting UI #118 2014-07-17 19:20:00 +08:00
qianlifeng
4f8c6e64fb Fix an issue when switch between plugin with icons and without icons. 2014-07-17 18:51:34 +08:00
qianlifeng
39aadaa220 close #113 can't check checkbox by clicking label 2014-07-17 18:42:11 +08:00
qianlifeng
5c373f0d25 Add browse more plugin and theme link to setting dialog. 2014-07-16 20:17:51 +08:00
qianlifeng
088c3984d8 Merge branch 'master' of https://github.com/qianlifeng/Wox 2014-07-16 18:52:37 +08:00
qianlifeng
3a61a7992a Async loading item images => huge performance improvements for old machines. 2014-07-16 18:52:00 +08:00
qianlifeng
d694791d0f Merge pull request #110 from caoyue/master
get firefox default profile directory from profiles.ini
2014-07-15 18:18:29 +08:00
caoyue
5e9ea4196c get firefox default profile directory from profiles.ini 2014-07-15 16:54:01 +08:00
qianlifeng
e7f000147b Add open pluign directory link in plugin setting page. 2014-07-14 23:18:57 +08:00
qianlifeng
15e27e7e1d Merge branch 'json-rpc' 2014-07-14 22:28:54 +08:00
qianlifeng
855d75f1bb Add image loader class 2014-07-14 19:03:52 +08:00
qianlifeng
e8f3a30a72 Python plugin loader bug fix. 2014-07-11 18:36:39 +08:00
qianlifeng
948e44d867 Merge pull request #106 from CoenraadS/master
Cosmetic changes
2014-07-11 09:41:40 +08:00
Coenraad Stijne
c0e671d506 Pixel perfect alignment
Seems the designview differs from reality
2014-07-10 21:25:25 +02:00
Coenraad Stijne
2d895b52a4 Cosmetic changes
Taskbar Setting => Settings

Alignment of combo boxes
Alignment of checkboxes and text
2014-07-10 21:07:44 +02:00
qianlifeng
4436a72b9f Merge pull request #105 from CoenraadS/master
[WebSearch/Programs] Fix MessageBox behaviour
2014-07-10 23:58:27 +08:00
qianlifeng
f1ce98eb07 Implement #15 2014-07-10 23:57:08 +08:00
Coenraad Stijne
418aa44960 Fix spelling mistake
seleted => selected
2014-07-10 17:16:46 +02:00
Coenraad Stijne
b91850262d [Programs] Fix MessageBox behaviour
Fix MessageBox asking user to select item if he clicks No after trying
to Delete an item in Programs Settings.
2014-07-10 17:06:50 +02:00
Coenraad Stijne
ed2dc101bb [WebSearch] Fix MessageBox behaviour
Fix MessageBox asking user to select item if he clicks No.
2014-07-10 16:52:18 +02:00
qianlifeng
d89968cfa5 Add HackerNews python plugin as the Demo. 2014-07-10 18:39:04 +08:00
qianlifeng
5f7c1ea4f4 Add v2ex python plugin demo. 2014-07-09 23:44:57 +08:00
qianlifeng
e307524458 Add missing files. 2014-07-09 18:24:42 +08:00
qianlifeng
53cb4189d8 Add portable python environment 2014-07-09 18:15:23 +08:00
qianlifeng
3efe3d63ce Refactoring [WIP] 2014-07-07 23:05:06 +08:00
qianlifeng
e44a05f18d Update README.md 2014-07-07 17:46:31 +08:00
qianlifeng
d9574591fd Update README.md 2014-07-07 17:39:06 +08:00
qianlifeng
55c27516b2 Refactoring Plugin Loader [WIP]. 2014-07-06 22:57:11 +08:00
qianlifeng
659ff866e1 Add Executable Plugin Loader 2014-07-05 23:10:34 +08:00
qianlifeng
f01de3a69d Move CMD settings to CMD plugin details. 2014-07-04 15:34:31 +08:00
qianlifeng
0c75cf6055 Some plugin style changes. 2014-07-04 15:12:22 +08:00
qianlifeng
95613a1881 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-07-04 12:08:45 +08:00
qianlifeng
7bcbe5d791 close #21 Allow user to set their custom ActionKeyword 2014-07-04 12:08:37 +08:00
qianlifeng
bcc2ca7ce9 Merge pull request #100 from JohnTheGr8/master
Improvements for Firefox bookmarks
2014-07-04 08:54:47 +08:00
Ioannis G
365ca9180f improved Firefox bookmark-parsing query
now gets bookmark title from moz_bookmarks table instead of moz_places
2014-07-03 21:10:48 +03:00
Ioannis G
cfe1e7745f cache Firefox bookmarks and support pinyin search 2014-07-03 21:08:18 +03:00
qianlifeng
d0d9de8583 Merge pull request #99 from JohnTheGr8/master
Firefox bookmarks
2014-07-03 21:11:16 +08:00
qianlifeng
a304d75645 Update README.md 2014-07-03 13:19:18 +08:00
Ioannis G
9f4f27d08f update plugin.json for the BrowserBookmarks plugin 2014-07-02 18:44:19 +03:00
Ioannis G
73530f59de Make sure the places.sqlite file exists
before loading Firefox bookmarks.
2014-07-02 18:43:54 +03:00
Ioannis G
6807dcbd5d add search for Firefox bookmarks 2014-07-02 18:01:31 +03:00
qianlifeng
e275ce6063 #21 Add Disable option for each plugin. 2014-07-01 22:19:46 +08:00
qianlifeng
6352408d87 Add folder existence check for USERPROFILE environment variable. 2014-07-01 18:14:41 +08:00
qianlifeng
6870e03ffe Add Empty Check for GetEnvironmentVariable Method. 2014-07-01 18:04:35 +08:00
qianlifeng
d4641b45ac Merge pull request #98 from zlsun/master
Change cwd to %USERPROFILE% before executing command.
2014-07-01 17:50:42 +08:00
zlsun
fad796f834 Change cwd to %USERPROFILE% before executing command. 2014-07-01 17:37:28 +08:00
qianlifeng
9e874b241a Revert 3bbe54bb71 2014-07-01 09:56:10 +08:00
qianlifeng
3f83361a7a Merge pull request #96 from zlsun/master
Fix the problem of sleep command and change the behavior of executing command.
2014-07-01 09:28:30 +08:00
qianlifeng
a75b7b9be6 Bug fix for drag drop plugin installer. 2014-06-30 22:55:27 +08:00
qianlifeng
e4898bbbb3 Allow drag drop to install wox plugin. 2014-06-30 22:50:54 +08:00
zlsun
132d5ec8cc Revert "Use sleep instead of ping."
This reverts commit 3f1064b22d.
2014-06-30 22:38:51 +08:00
qianlifeng
59741ed04a Optimize files. 2014-06-30 22:27:56 +08:00
qianlifeng
fad6a406a1 Add system plugin descriptions. 2014-06-30 21:31:13 +08:00
qianlifeng
4ee0731472 fix some bookmark plugin issues. 2014-06-30 18:29:14 +08:00
qianlifeng
4fe530d257 close #83 Merge Plugin tab and Feature tab 2014-06-30 18:12:45 +08:00
qianlifeng
d23eb291f7 #94 and close #91. Make bookmark as plugin. 2014-06-30 18:05:42 +08:00
zlsun
3bbe54bb71 Change cwd to %HOME% before executing command. 2014-06-20 17:34:01 +08:00
qianlifeng
7aca726c33 Merge pull request #90 from zlsun/master
Some modifications.
2014-06-16 17:03:56 +08:00
zlsun
3f1064b22d Use sleep instead of ping. 2014-06-16 14:08:48 +08:00
zlsun
6fdbc9cdfa Remove unnecessary code. 2014-06-16 14:08:11 +08:00
zlsun
12b03518ee Add remember window position support. 2014-06-16 14:06:24 +08:00
qianlifeng
fcd3a86589 Merge pull request #89 from antigravity/plugin-colors
Colors
2014-06-04 23:29:15 +08:00
Yaroslav Zyubanov
2ee671a1ae Add post-action 2014-06-04 21:22:34 +06:00
Yaroslav Zyubanov
47a0642c4d Missed logo and title 2014-06-04 17:26:41 +06:00
Yaroslav Zyubanov
db1cd3efbc HEX colors plugin 2014-06-04 16:15:38 +06:00
qianlifeng
f6803a2c52 Merge branch 'master' of https://github.com/qianlifeng/Wox 2014-06-04 16:47:39 +08:00
qianlifeng
f8d810a787 When user querying thirdparty plugins, system plugins shouldn't be included 2014-06-04 16:47:14 +08:00
qianlifeng
c8d865e26b #87 Add plugin deatails in Plugin tab. [WIP] 2014-06-01 23:23:48 +08:00
qianlifeng
e1c7705182 Revert last two commits pushed by @aaroncampf, which will cause build erros. 2014-05-25 18:11:27 +08:00
Aaron Campf
6aed2ec311 Error Fix 2014-05-24 19:02:22 -07:00
Aaron Campf
4c3f51cae3 Added Enabled & PluginId to BaseSystemPlugin
We still need a way to save the Enabled property
2014-05-24 18:57:02 -07:00
Yeechan Lu
f3088d1c49 Merge pull request #84 from antigravity/dev
Dev
2014-05-24 03:34:35 -05:00
Yaroslav Zyubanov
be25226172 URL plugin 2014-05-24 14:29:56 +06:00
Yaroslav Zyubanov
33d7e40e7c Namespaces fix 2014-05-24 14:07:03 +06:00
Yaroslav Zyubanov
9eefd8839c Extract all converters into separate folder 2014-05-24 14:06:09 +06:00
Aaron Campf
d748e34d7e Working on Adding CheckBox 2014-05-20 21:53:32 -07:00
Aaron Campf
cefa8326e3 FileSystemPlugin
Check for invalid paths
[Open this directory] Action always appears at top is path is existing
directory or parent is
2014-05-20 16:45:11 -07:00
Aaron Campf
60f4937aae Updated Ignore List 2014-05-13 10:20:05 -07:00
Aaron Campf
841e90dc46 Solving issues from last commit 2014-05-09 21:21:55 -07:00
Aaron Campf
81467a86cc Cleaned FileSystemPlugin + Enhanced
THIS NEEDS TESTING!
2014-05-09 18:24:16 -07:00
Aaron Campf
498634fd13 Uncommented and removed junk code 2014-05-08 17:51:05 -07:00
Aaron Campf
d751805254 Files added to search results after folders
I think it is time we release version 2
2014-05-08 17:38:51 -07:00
Aaron Campf
7c2e2a01c2 Fixed Image Errors + Handing Bad ShellRun 2014-05-08 15:58:38 -07:00
Aaron Campf
0b70c5225d Tab: Now adds Next s Title to tbQuery 2014-05-08 14:05:48 -07:00
qianlifeng
b07d1b027c Fix crash issue when user clicked cancel in UAC prompt window. 2014-04-13 18:16:58 +08:00
Yeechan Lu
58801f8fb6 Fix crash on invalid chars in path 2014-04-13 16:06:51 +08:00
Yeechan Lu
c589978e84 Combine FolderLinks and DirectoryIndicator into FileSystemPlugin
cc @aaroncampf
2014-04-13 15:38:12 +08:00
qianlifeng
36f3c293f0 close #65 Hide when app loses focus 2014-04-13 10:08:33 +08:00
qianlifeng
54417115f3 Fix python plugin crash issues. 2014-04-13 01:07:15 +08:00
Yeechan Lu
4006e4045c Merge pull request #75 from kerams/master
PeHeaderReader class, fixed bug in e0eb8c8
2014-04-12 19:53:41 +08:00
kerams
bdf57b5203 Added PeHeaderReader class, which is used to check whether an application is CUI. This fixes the issue introduced in e0eb8c8. 2014-04-12 13:01:29 +02:00
Yeechan Lu
1d27ffbffb Merge pull request #74 from kerams/master
WindowOpener class
2014-04-12 03:15:56 +08:00
kerams
c36b5c77fc Feature: Added WindowOpener class, which prevents having duplicate windows of the same type opened at the same time 2014-04-11 19:16:59 +02:00
Yeechan Lu
ac5cd90cc6 Merge pull request #73 from kerams/master
Opening Settings from tray and the ability to leave the windows command prompt open after running a command
2014-04-11 10:01:01 +08:00
kerams
e0eb8c83e2 - added option to open Wox Settings from the tray menu
- added a checkbox option specifying whether to leave the command line open after having run a command like >ping google.com
2014-04-10 23:44:57 +02:00
Aaron Campf
b8f513fffe Removed FileSystemSourceShallow 2014-04-01 11:50:01 -07:00
qianlifeng
7d4dd9c699 fix null references issues in commit 6b9f96697b @aaroncampf 2014-03-31 12:24:05 +08:00
Aaron Campf
a254b996e0 Upgrading Features
Now Parent folder will appear in search results.
2014-03-30 16:26:20 -07:00
Aaron Campf
6b9f96697b Added Plugin for searching additional directories 2014-03-30 16:03:07 -07:00
Aaron Campf
dc5eeb8476 Merge branch 'master' of https://github.com/qianlifeng/Wox 2014-03-30 10:59:38 -07:00
qianlifeng
7d40105023 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-30 21:52:03 +08:00
qianlifeng
3d73dc2fb7 Add restart wox command into sys plugin. 2014-03-30 21:51:42 +08:00
Yeechan Lu
94f217f4d7 Use a better method to calculate relative coordinates while moving among screens 2014-03-30 15:42:33 +08:00
Aaron Campf
00319c1fe2 a 2014-03-29 22:15:14 -07:00
qianlifeng
67ac5a9c6a Fix issues in 636350c395 2014-03-30 11:20:21 +08:00
qianlifeng
79b3b0fffc System Plugin File Structure change. 2014-03-30 11:16:44 +08:00
qianlifeng
ab6a29191d Merge pull request #67 from aaroncampf/master
Added Features
2014-03-30 10:59:44 +08:00
Aaron Campf
636350c395 Added Features
Feature: Search additional folders by default (shallow search)
Feature: Disable bookmarks
2014-03-29 14:32:29 -07:00
Yeechan Lu
c076717133 Show Wox on Mouse Screen 2014-03-30 00:53:46 +08:00
Yeechan Lu
943a438a6c Use Unidecoder instead of ChineseToPinYin
// Please do not use the binary version on NuGet since there are some issues with the data table
2014-03-29 23:29:07 +08:00
Yeechan Lu
a104693f97 Fix performance issues while loading fonts 2014-03-29 23:16:18 +08:00
Yeechan Lu
8283c89614 Optimize settings order 2014-03-29 16:17:01 +08:00
Yeechan Lu
c9790d7bb8 Move WebSearch into featureBox 2014-03-29 16:13:36 +08:00
Yeechan Lu
80ec16b9bd Rename Wox.Plugin.System to Wox.Plugin.SystemPlugins
Finish moving ProgramSetting into featureBox
2014-03-29 15:52:57 +08:00
Yeechan Lu
479945455b Move ProgramSetting into Feature 2014-03-29 14:42:43 +08:00
Yeechan Lu
4512854c2a Add Feature Tab in Settings. (Still WIP) 2014-03-28 22:42:28 +08:00
Yeechan Lu
70950b8267 Remove useless code 2014-03-27 21:22:59 +08:00
Yeechan Lu
eec96b8549 Fix Google Suggestion crash on network error 2014-03-27 21:14:41 +08:00
Yeechan Lu
30961babde Remove duplicated code 2014-03-27 19:01:43 +08:00
Yeechan Lu
a00c530f36 Prevent from accessing last results if query has changed 2014-03-27 18:48:56 +08:00
qianlifeng
0af1e06c57 remove useless file. 2014-03-27 17:53:01 +08:00
Yeechan Lu
c0d52ef905 Fix duplicated results in CMD 2014-03-27 17:25:06 +08:00
Yeechan Lu
59d9840d7b Fix issues with web search icons 2014-03-27 17:19:50 +08:00
Yeechan Lu
9a2ffc1d7c Add Google suggestions for web searches
Fix issues with push results
2014-03-27 16:56:50 +08:00
Yeechan Lu
c8fcfcd28c Fix error in ac81d38acc 2014-03-27 14:53:47 +08:00
Yeechan Lu
ac81d38acc Add PushResults for push results before Query results return 2014-03-27 14:50:42 +08:00
Yeechan Lu
9bc4b74888 Add error report (however it has no sending feature at this commit) 2014-03-27 12:58:36 +08:00
Yeechan Lu
2ec71c9942 Fix issue with Layered Window 2014-03-26 19:26:10 +08:00
Yeechan Lu
343da4878d Add opacity mode settings 2014-03-26 17:34:19 +08:00
Yeechan Lu
45f32ba62c Change Themes tab layout and add wallpaper behind preview. 2014-03-26 15:30:59 +08:00
Yeechan Lu
f157e6a9f5 Enable themes of Windows Common Controls and Dialogs in Wox.UAC 2014-03-26 15:29:55 +08:00
Yeechan Lu
33485024af Fix issues with Aero 2014-03-26 12:43:02 +08:00
Yeechan Lu
90efb967fe Revert "Use short name of Assembly instead of full name." since there are some Assembly loading issues.
This reverts commit cf7ae900.

Short name will produce no errors when debugging using Visual Studio hosting process. However, this will crash outside Visual Studio.
2014-03-26 11:50:21 +08:00
Yeechan Lu
5fa62151f6 Add Aero theme 2014-03-25 21:45:32 +08:00
Yeechan Lu
3a55985b20 Fix issues with DwmDropShadow 2014-03-25 20:27:02 +08:00
Yeechan Lu
4a0411b7fc Fix crash on querying when plugins are initializing 2014-03-25 17:08:35 +08:00
Yeechan Lu
7094675d5e Fix a bug with family typefaces 2014-03-25 17:00:40 +08:00
Yeechan Lu
cf7ae90097 Use short name of Assembly instead of full name. 2014-03-25 14:47:29 +08:00
Yeechan Lu
53b19dad87 Revert "Revert use FuzzyMatcher on Bookmarks since it's too slow" 2014-03-25 13:36:33 +08:00
Yeechan Lu
b10caecbba Allow change FontStyle, FontWeight, FontStretch 2014-03-25 13:25:43 +08:00
Yeechan Lu
60d64ad2a6 Merge pull request #63 from cxfksword/master
Optimize fuzzy match
2014-03-25 07:05:19 +08:00
cxfksword
fd71200284 Directory change use fuzzy to search 2014-03-24 21:14:56 +08:00
cxfksword
de13ad1cd5 Optimize fuzzy match 2014-03-24 21:14:10 +08:00
Yeechan Lu
97bd617566 Merge pull request #62 from cxfksword/master
Change Directory plugin subdirectory list action
2014-03-24 02:49:15 +08:00
Yeechan Lu
2583b38a17 Fix a file missing bug 2014-03-24 01:10:50 +08:00
cxfksword
e1f71cae37 Change Directory plugin subdirectory list action 2014-03-24 00:51:07 +08:00
Yeechan Lu
d78ecdc203 Fix bug with theme in Windows 8 2014-03-24 00:08:56 +08:00
Yeechan Lu
0dd540a048 Add supportedRuntime v4.0 2014-03-23 20:27:17 +08:00
qianlifeng
d8536c20b0 Fix added websearch twice issue. 2014-03-23 18:14:46 +08:00
qianlifeng
1a5bc2ddfe Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-23 17:43:53 +08:00
qianlifeng
61c1232690 close #47 Add log level config 2014-03-23 17:43:46 +08:00
Yeechan Lu
2554165963 Fix a bug when creating Config directory 2014-03-23 16:58:19 +08:00
Yeechan Lu
fc4778159c Fix 'Path' is an ambiguous reference between 'System.IO.Path' and 'System.Windows.Shapes.Path' 2014-03-23 16:51:08 +08:00
Yeechan Lu
d2105a7169 Update VS2010 Solution 2014-03-23 16:40:53 +08:00
Yeechan Lu
19ec14e4c2 Fix issues with AppDomain.CurrentDomain.BaseDirectory 2014-03-23 16:33:23 +08:00
qianlifeng
3dbef1400c Refactor setting storage related 2014-03-23 16:20:00 +08:00
qianlifeng
4ca0453cff close #48 Refactor setting storage. 2014-03-23 16:17:41 +08:00
qianlifeng
fc07979966 Remove Plugins 2014-03-23 10:41:10 +08:00
Yeechan Lu
7dda2df54b Support data URI as Icon 2014-03-23 04:22:57 +08:00
Yeechan Lu
0d95636b0f Allow plugins return null 2014-03-23 02:46:14 +08:00
qianlifeng
9ad424c537 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-22 17:27:18 +08:00
qianlifeng
8c57dde0a6 Remove all plugins to their own repo 2014-03-22 17:27:11 +08:00
Yeechan Lu
31bbf3cfd5 Fix applicationDirectory issues and add plugin debuggerMode 2014-03-22 16:51:09 +08:00
qianlifeng
9d404b6679 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-22 16:43:04 +08:00
qianlifeng
dc274aed48 Remove douban movie plugin to https://github.com/qianlifeng/Wox.Plugin.DoubanMovie 2014-03-22 16:42:49 +08:00
qianlifeng
51eda2ef74 Merge pull request #61 from cxfksword/master
Fix Alt+Space hotkey bug
2014-03-22 16:40:42 +08:00
cxfksword
f30f6378ac Add Directory Plugin support list child directory and search 2014-03-22 16:25:22 +08:00
cxfksword
3b09276395 Fix Alt+Space hotkey affect by system
if no disable control box,  sometimes awake Wox with alt+space hotkey,
the first input key is swallowed by system
2014-03-22 15:02:28 +08:00
cxfksword
dbdd6c701b Add support ClickOnce application
ex. Github for Windows use this file extension
2014-03-22 14:01:36 +08:00
cxfksword
eb094eaebb Filter duplicate program item 2014-03-22 13:50:20 +08:00
qianlifeng
9177f4b47d Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-22 11:21:29 +08:00
qianlifeng
d4446b2605 Update WPM. 2014-03-22 11:21:21 +08:00
Yeechan Lu
356db288ad Fix a bug with WindowsShellRun 2014-03-21 04:38:50 +08:00
Yeechan Lu
8a6690b6df Optimize for text selection after pressing Win+R 2014-03-21 04:32:11 +08:00
Yeechan Lu
1281059076 Move ProgramSources 2014-03-21 04:31:42 +08:00
Yeechan Lu
4622c86ae1 Fix a bug with WindowsShellRun 2014-03-21 04:07:31 +08:00
Yeechan Lu
5c6b741dc4 Use ShellRun to provide unified experience 2014-03-21 03:53:18 +08:00
qianlifeng
25cedff47a Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-20 22:01:33 +08:00
qianlifeng
5971802eb9 Remove useless code. 2014-03-20 22:01:22 +08:00
Yeechan Lu
b40ff9ef66 Fix some icon issues of some file types 2014-03-20 21:58:14 +08:00
qianlifeng
3b2e54a156 Fix a UI issue. 2014-03-20 21:41:30 +08:00
qianlifeng
b3f3cd2ffd Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-20 19:12:36 +08:00
qianlifeng
288b46947d Limit the display result item to 6 at most. 2014-03-20 19:12:26 +08:00
Yeechan Lu
98add4b958 Add Windows 8 installation note and prefer 3.5 SP1 rather than 3.5 to XP users 2014-03-20 14:25:44 +08:00
qianlifeng
99b1c5a456 [skip ci] Fix typos 2014-03-20 12:34:12 +08:00
Yeechan Lu
305fc52e73 Merge pull request #60 from cxfksword/master
Fix Everything not handle .ico image type
2014-03-20 10:16:22 +08:00
cxfksword
425b209414 Fix miss default font 2014-03-20 10:05:12 +08:00
cxfksword
58b016a9c0 Fix not handle .ico image type 2014-03-20 10:01:00 +08:00
Yeechan Lu
6c17107f39 Fix incorrect behavior with App Paths 2014-03-20 04:15:05 +08:00
Yeechan Lu
8b153121ac Auto Complete for CMD mode 2014-03-20 04:12:50 +08:00
Yeechan Lu
4fc1169fa3 Fix typo Widow -> Window 2014-03-20 02:26:00 +08:00
Yeechan Lu
27dde4e70d Fix #49. Alt + F4 will hide app now rather than crash 2014-03-20 02:02:18 +08:00
Yeechan Lu
10cbe25f17 Merge pull request #59 from cxfksword/master
Add Everything support show file icon
2014-03-20 00:23:33 +08:00
cxfksword
14edd948ac Add Everything support show file icon
and add a file icon cache associate with file extension
2014-03-19 23:58:05 +08:00
qianlifeng
386b54cf6a Change the default grid height of Custom Plugin Hotkey Panel. 2014-03-19 22:44:51 +08:00
Yeechan Lu
c068366ae2 Fix #58: don't calc when input.length <= 2 2014-03-19 22:32:41 +08:00
Yeechan Lu
bc85b3599e Revert "Limit Calculator trigger must has one number at least"
This reverts commit fe124310de.
2014-03-19 22:32:01 +08:00
Yeechan Lu
4d299f5b17 Merge pull request #58 from cxfksword/master
Fix Calculator & Everything plugin bug
2014-03-19 22:31:04 +08:00
qianlifeng
224c3eb99c Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-19 22:17:19 +08:00
qianlifeng
4e537ac4d8 #56 Add Font setting 2014-03-19 22:17:01 +08:00
cxfksword
fe124310de Limit Calculator trigger must has one number at least
make not affect some keyword like "pi"
2014-03-19 21:34:18 +08:00
cxfksword
19f25e45bb Fix Everything not support keyword with space 2014-03-19 21:23:17 +08:00
Yeechan Lu
1fa4be9ebb Close #42 Program Source settings GUI 2014-03-19 20:16:45 +08:00
qianlifeng
f4e74065ec #2 change Everything default search mode 2014-03-19 19:57:22 +08:00
Yeechan Lu
f07cd08789 Close #52: Encoding issues with Everything plugin 2014-03-19 12:13:43 +08:00
Yeechan Lu
28bddb713b Make Python plugin enabled by default #51 2014-03-19 11:49:31 +08:00
Yeechan Lu
0b86e0ae41 Merge pull request #51 from Rovak/python-optional
Make python plugins optional
2014-03-19 11:42:46 +08:00
Yeechan Lu
da058197c7 Remove useless field in ProgramSource 2014-03-19 04:08:58 +08:00
Yeechan Lu
cf0d7067eb Add ProgramSources settings (code only, without GUI) #42 2014-03-19 04:05:27 +08:00
Yeechan Lu
baa50069cf Read .exe file description for program name 2014-03-19 03:24:37 +08:00
Yeechan Lu
aab0bf369d Add PortableApps.com program source support. #42 2014-03-19 03:05:43 +08:00
Yeechan Lu
07c13d84be Refactor to support multiple program sources #42
App Paths is supported now #41
2014-03-19 02:07:08 +08:00
Yeechan Lu
47982d092b Merge pull request #50 from Rovak/fix/typos
Renamed several typos
2014-03-19 02:05:55 +08:00
Roy van Kaathoven
ef63f11bbb Make python plugins optional 2014-03-18 18:27:59 +01:00
Roy van Kaathoven
46e0656fe9 Save StartWoxOnSystemStartup setting 2014-03-18 18:20:51 +01:00
Roy van Kaathoven
bdc2decd06 Registe -> Register 2014-03-18 17:36:00 +01:00
Roy van Kaathoven
69204e3998 add missing imports + save project changes 2014-03-18 17:34:54 +01:00
Roy van Kaathoven
4419c20f33 move files to new globalhotkey file 2014-03-18 17:33:51 +01:00
Roy van Kaathoven
f9ffa9c387 gloablHotkey -> GlobalHotkey 2014-03-18 17:26:09 +01:00
qianlifeng
b402bd6c0e Remove useless codes. 2014-03-18 23:41:34 +08:00
Yeechan Lu
4f7c96326d Optimize speed for CMD mode 2014-03-18 22:40:37 +08:00
qianlifeng
ad36bd23c8 close #38 Change Virtualizing Mode from Recycling to Standard. 2014-03-18 22:09:48 +08:00
qianlifeng
86fe78ba95 Add drag support #44 2014-03-18 20:42:23 +08:00
Yeechan Lu
9678f1d1f2 Merge pull request #43 from cxfksword/master
fix Everything plugin closure bug
2014-03-18 19:16:29 +08:00
cxfksword
d0d6ddd3c1 fix closure bug
sometimes will always open the last action item.
2014-03-18 18:49:03 +08:00
Yeechan Lu
6dcd2e4b03 Optimize Program results 2014-03-18 13:17:09 +08:00
Yeechan Lu
b9c58adae6 Remove compiler warnings 2014-03-18 12:28:48 +08:00
Yeechan Lu
b7893c2820 Merge pull request #40 from cxfksword/master
add Calculator system plugin
2014-03-18 01:11:21 +08:00
cxfksword
fd1de0ef85 add Calculator system plugin 2014-03-18 00:43:20 +08:00
qianlifeng
9c1fba3d79 Fix a null references issue that may crash wox. 2014-03-18 00:25:27 +08:00
Yeechan Lu
1185bd5d86 Close #39: Remove the shortcut arrow overlay 2014-03-18 00:11:39 +08:00
Yeechan Lu
70616de215 Fix line ending [skip ci] 2014-03-18 00:10:02 +08:00
Yeechan Lu
acf564756e Remove PyImportTest 2014-03-18 00:09:35 +08:00
qianlifeng
616b9af5ed Change AssemblyInfos [skip ci] 2014-03-17 23:37:26 +08:00
qianlifeng
38b20987fb Remove xml files in build folder. 2014-03-17 23:20:09 +08:00
qianlifeng
5f6d3078b7 Remove dropshadow since it's buggy. 2014-03-17 23:04:22 +08:00
qianlifeng
2e0a8ee657 Revert "Fix Image didn't copy to output directory issues." 2014-03-17 22:13:04 +08:00
Yeechan Lu
659a1dbe53 Change OutputPath 2014-03-17 21:51:50 +08:00
qianlifeng
753124ec27 Add CI status. 2014-03-17 21:27:23 +08:00
qianlifeng
73dab9ebf4 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-17 21:19:25 +08:00
qianlifeng
716d6aca9f Fix Image didn't copy to output directory issues. 2014-03-17 21:19:18 +08:00
Yeechan Lu
ec761802eb Copy Images to output directory 2014-03-17 21:09:34 +08:00
Yeechan Lu
1a782a6938 Update NuGet configuration 2014-03-17 20:43:08 +08:00
Yeechan Lu
63d693b388 Fix error in projects... 2014-03-17 20:12:39 +08:00
Yeechan Lu
5b1563b851 Add missing NuGet packages into Wox.UAC 2014-03-17 19:54:09 +08:00
Yeechan Lu
d794c4c81f Clean build configuration 2014-03-17 19:28:26 +08:00
Yeechan Lu
70f0d8d558 Add bookmarks support for Chromium / ChromeSxS and multiple profiles 2014-03-17 12:32:19 +08:00
Yeechan Lu
2c50adb6f2 Revert use FuzzyMatcher on Bookmarks since it's too slow 2014-03-17 11:36:13 +08:00
Yeechan Lu
71c4d60bbf Fixed Pythonnet 2.7 configuration 2014-03-17 11:14:30 +08:00
Yeechan Lu
798faff7b2 Add support for PageUp & PageDown 2014-03-17 03:52:52 +08:00
Yeechan Lu
94ed77353e FuzzyMatcher for Bookmarks and some tweaks 2014-03-17 03:38:36 +08:00
Yeechan Lu
a7159ecf1d ToPinyin: Convert to SimpChinese at first 2014-03-17 03:38:36 +08:00
Yeechan Lu
b65f562c61 Fix the bug in WindowsShellRun 2014-03-17 03:38:35 +08:00
Yeechan Lu
9918b4ee42 GetAllRemainingParameter trick 2014-03-17 03:38:35 +08:00
Yeechan Lu
069781bcdd Update 2010 Solution file
Fix a bug in Everything plugin configuration
2014-03-17 03:38:35 +08:00
qianlifeng
3596a5588d Merge branch 'master' of https://www.github.com/qianlifeng/wox 2014-03-16 22:53:16 +08:00
qianlifeng
69890972bc fix a null references issues. 2014-03-16 22:51:50 +08:00
qianlifeng
313dd0cc6a Update README.md 2014-03-16 00:23:36 +08:00
qianlifeng
dc30e4f8e0 Update README.md 2014-03-16 00:11:25 +08:00
qianlifeng
a7b3ef34d8 Remove AllowsTransparency which is buggy in XP and poor performance. 2014-03-15 23:42:23 +08:00
qianlifeng
f0b728a71b Merge branch 'master' of https://www.github.com/qianlifeng/wox 2014-03-15 22:02:46 +08:00
qianlifeng
dfce6564a1 Small issue changes. 2014-03-15 22:01:35 +08:00
qianlifeng
3b924ff1e6 Update README.md 2014-03-15 18:37:10 +08:00
qianlifeng
15bc01576a Change Default Style. 2014-03-15 17:47:06 +08:00
qianlifeng
19f4f6e1cc Merge branch 'master' of https://www.github.com/qianlifeng/wox 2014-03-15 00:18:14 +08:00
qianlifeng
ea4e25ea28 Add round corner support for Wox. 2014-03-15 00:17:37 +08:00
qianlifeng
fd6ea77f7b Add tooltip for subtitle 2014-03-14 18:54:05 +08:00
qianlifeng
1b382e4391 Add ReleaseBuild bat. 2014-03-14 00:35:06 +08:00
qianlifeng
091aba7aad implement WPM Plugin 2014-03-13 22:31:44 +08:00
qianlifeng
49c151c1b4 Strange changes. 2014-03-12 21:27:16 +08:00
qianlifeng
3ffc4fad6d Remove unnecessary file. 2014-03-12 21:01:54 +08:00
qianlifeng
73dc6b768f Fix bugs in CMD plugin and PluginMangerment Plugin. 2014-03-12 19:18:07 +08:00
qianlifeng
413d8e6662 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-03-12 09:16:38 +08:00
qianlifeng
5d2ce27ea8 Add youdao plugin. 2014-03-12 09:16:22 +08:00
qianlifeng
1d3a1a1345 implement issue#8 part 1 2014-03-11 23:54:37 +08:00
qianlifeng
9adf764af8 Fix issue#24 2014-03-11 22:17:10 +08:00
qianlifeng
8ef6827bd9 Add global unhandled exception check. 2014-03-11 21:52:29 +08:00
qianlifeng
79d011bd5c Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-03-11 21:40:32 +08:00
qianlifeng
430ce9c136 Refactoring "startup with windows" option. 2014-03-11 21:40:25 +08:00
qianlifeng
fe7afe3dec Fix issues#13. Add image cache. 2014-03-10 07:21:26 +08:00
qianlifeng
8922cc72fc Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-03-09 17:01:45 +08:00
qianlifeng
200181623e Fix issues#33 2014-03-09 17:01:39 +08:00
qianlifeng
ab24afa31d Update README.md 2014-03-05 22:48:52 +08:00
qianlifeng
b38fa395ce Fix mouse click issues and add a new hotmovie plugin. 2014-03-05 22:32:21 +08:00
qianlifeng
62475f9bcf Fix issue#26 "not count execute error command in history will be better" 2014-03-02 11:38:13 +08:00
qianlifeng
674d6389b7 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-03-02 11:29:22 +08:00
qianlifeng
7ae98ca9fe Fix issue#32 2014-03-02 11:29:14 +08:00
qianlifeng
13ed55ac10 Add wox plugin installer. 2014-03-02 11:04:30 +08:00
qianlifeng
fce020f4dd Change plugin config file format (from ini to json) 2014-03-01 15:42:33 +08:00
qianlifeng
8c2376457b Update README.md 2014-03-01 13:56:49 +08:00
qianlifeng
1dde832e31 Resert changes 2014-03-01 11:49:53 +08:00
qianlifeng
8c86ae2461 Socket research 2014-03-01 11:46:24 +08:00
qianlifeng
695abb481d Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-02-28 23:21:09 +08:00
qianlifeng
7f769e00b9 Add clipboard plugin. 2014-02-28 23:21:01 +08:00
qianlifeng
b2e4544b52 Merge branch 'master' of https://github.com/qianlifeng/Wox.git 2014-02-24 09:28:55 +08:00
qianlifeng
7d1ee33e1f Merge branch 'MoreResponsibleUI' 2014-02-23 13:33:09 +08:00
qianlifeng
2ade16a87a Fix dependency references issue of c# plugins. 2014-02-23 13:32:28 +08:00
qianlifeng
67fd2b4ac0 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-02-23 10:36:50 +08:00
qianlifeng
26294a5742 Change python plugin interface. 2014-02-23 10:36:37 +08:00
qianlifeng
db8371d3af Fix crash issue when user didn't install python. 2014-02-23 10:27:19 +08:00
qianlifeng
f308496ef9 Update README.md 2014-02-22 22:26:32 +08:00
qianlifeng
a0507bd14d Log python plugin error. 2014-02-22 18:04:59 +08:00
qianlifeng
92d95db40b Fix select result item delay issue. 2014-02-22 16:55:15 +08:00
qianlifeng
2309d30909 Merge branch 'MoreResponsibleUI' 2014-02-22 16:28:23 +08:00
qianlifeng
0f023113ec Change default height for result item 2014-02-22 16:10:15 +08:00
qianlifeng
b3e5f09c83 Add custom plugin hotkey feature. 2014-02-22 15:52:20 +08:00
qianlifeng
2f5a4f63b6 Add hotkey setting 2014-02-22 11:55:48 +08:00
qianlifeng
85515079d6 Fix theme bugs. 2014-02-21 23:43:52 +08:00
qianlifeng
a9123d2966 UI changes. 2014-02-21 18:59:47 +08:00
qianlifeng
efdd8daa01 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-02-20 23:15:09 +08:00
qianlifeng
8f2d69b7f7 Add NHotkey library. 2014-02-20 23:15:03 +08:00
qianlifeng
18ee6ecf80 fix some small UI issue 2014-02-20 21:46:23 +08:00
qianlifeng
5a3669cbe7 Bug fix 2014-02-20 18:26:01 +08:00
qianlifeng
a1c78b3a44 remove useless codes 2014-02-20 09:37:30 +08:00
qianlifeng
4e0ea5f941 bug fix 2014-02-20 09:34:30 +08:00
qianlifeng
c425313ae6 Fix title aligment issue when subtitle is empty. 2014-02-19 23:42:21 +08:00
qianlifeng
4736921d05 Replace ResultItem usercontrol with listbox to improve ui performance 2014-02-19 22:50:15 +08:00
qianlifeng
45aedd8111 Update README.md 2014-02-18 22:35:16 +08:00
qianlifeng
445f06f4b3 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-02-18 22:03:04 +08:00
qianlifeng
b8fbc837dc Fix "startup wox on window start" issue. 2014-02-18 22:02:55 +08:00
qianlifeng
72bcc16a46 Update README.md 2014-02-18 09:03:12 +08:00
qianlifeng
729640d6ec Init 2014-02-11 20:53:41 +08:00
qianlifeng
fcdb9e39c6 Add modifier key support when user action items. 2014-02-09 20:55:18 +08:00
qianlifeng
953adadd62 Remove number placeholder in the right of result item. 2014-02-09 11:24:47 +08:00
cxfksword
a9fa1fb66b add fuzzy string match support for Programs plugin 2014-02-09 01:39:23 +08:00
cxfksword
8c7547ab03 fix build error on release mode and add miss SharpZipLib nuget package 2014-02-09 01:39:20 +08:00
Yeechan Lu
e94fed0137 Merge pull request #27 from zsxsoft/master
Fix crash when UAC blocks the program.
2014-02-08 14:43:02 +08:00
zsxsoft
353a8ff768 Fix crash when UAC blocks the program.
=_=英语不好连个说明和注释都写不出了
2014-02-08 14:37:40 +08:00
qianlifeng
3442081d20 "start wox on system startup" config changes. 2014-02-07 22:10:00 +08:00
qianlifeng
67f14d6a62 Add start Wox on system startup config & code refactorying. 2014-02-06 22:22:02 +08:00
qianlifeng
9e1980f843 Revert project file changes of everything sdk. 2014-02-03 00:08:11 +08:00
qianlifeng
495e0ce89b Implement WebSearch feature. 2014-02-02 16:15:34 +08:00
qianlifeng
76fa97e0a0 Add Everything x64 dll 2014-02-02 14:29:52 +08:00
Yeechan Lu
cc49948a59 Fix: Prevent user from closing the main window via Alt+F4 2014-01-30 01:02:49 +08:00
Yeechan Lu
5adcbb775d Fix: remove unnecessary binary Python.Runtime.dll 2014-01-30 01:01:57 +08:00
Yeechan Lu
02ed3e4e8b Fix crash on null Action binded to Result 2014-01-30 00:55:03 +08:00
Yeechan Lu
f9ff9af094 Add support for Everything both 32-bit and 64-bit 2014-01-30 00:55:03 +08:00
qianlifeng
529b8c2183 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-29 22:45:06 +08:00
qianlifeng
fa3ae62254 Add web search feature & some UI changes. 2014-01-29 22:44:57 +08:00
qianlifeng
71ccbb9336 Update README.md 2014-01-29 22:31:55 +08:00
Yeechan Lu
9f22a6d26d Updating README.md 2014-01-29 18:38:48 +08:00
Yeechan Lu
4db3bd7423 Rename the project. 2014-01-29 18:33:24 +08:00
qianlifeng
4393b0c80d Update README.md 2014-01-29 18:09:49 +08:00
qianlifeng
c217828c18 Merge pull request #22 from orzFly/master
Simulate Windows Run Dialog behaviors in the CMD worlflow
2014-01-28 07:44:29 -08:00
Yeechan Lu
a502f69b34 Simulate Windows Run Dialog behaviors in the CMD worlflow. 2014-01-28 21:33:13 +08:00
Yeechan Lu
6f3e0f5162 Fixed: File not found - ico.png 2014-01-28 21:33:12 +08:00
Yeechan Lu
0e44cae1e3 Fixed: Calling null callback "hookedKeyboardCallback" 2014-01-28 21:33:12 +08:00
Yeechan Lu
99b0defcf7 Create the "Docsets" directory if it not exists 2014-01-28 21:33:12 +08:00
qianlifeng
c6be74ac5b Merge branch 'master' of https://github.com/qianlifeng/WinAlfred 2014-01-28 11:22:35 +08:00
qianlifeng
84af5a277e code refactoring and add web searches setting window. 2014-01-28 11:19:27 +08:00
qianlifeng
266e3ab270 Update README.md 2014-01-27 23:14:49 +08:00
qianlifeng
1da5a0a4ca Update README.md 2014-01-27 23:12:09 +08:00
qianlifeng
2c17d450dd fix Issue #16 2014-01-27 20:45:26 +08:00
qianlifeng
41c4cbe3a6 fix win+r issue. 2014-01-26 21:44:57 +08:00
qianlifeng
c7dfaac61a Mouse select support & Code refactoring 2014-01-26 21:18:01 +08:00
qianlifeng
36018fe570 show top 5 CMD history when CMD query is empty. 2014-01-26 18:06:38 +08:00
qianlifeng
e8b284a89c change the scrollbar style. 2014-01-26 17:47:58 +08:00
qianlifeng
a8ea9a8dbe change vs2010 solution file. 2014-01-26 11:39:14 +08:00
qianlifeng
78f26a3689 fix CMD issues and add history support. 2014-01-26 11:01:13 +08:00
qianlifeng
671db12336 Merge pull request #14 from orzFly/master
Add some workarounds for clean environment and use the NuGet version of InputSimulator
2014-01-25 17:57:32 -08:00
Yeechan Lu
a5dc3bcc75 Clean some references 2014-01-26 02:53:25 +08:00
Yeechan Lu
54819eb367 Use the NuGet version of InputSimulator 2014-01-26 02:13:52 +08:00
Yeechan Lu
71ec4ad403 Add some workarounds for clean environment. 2014-01-26 01:29:40 +08:00
qianlifeng
8644fb66c0 Add replace win + r option 2014-01-26 00:37:15 +08:00
qianlifeng
71b5d4fe5a add theme function. And provide two themes default. 2014-01-25 18:00:13 +08:00
qianlifeng
abedc0be80 update doc workflow 2014-01-25 00:21:16 +08:00
qianlifeng
63072205d6 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-24 20:03:45 +08:00
qianlifeng
0ac7d9829a add doc workflow 2014-01-24 20:01:20 +08:00
qianlifeng
7989ca7504 Update README.md 2014-01-17 20:12:47 +08:00
qianlifeng
56118a7142 add AutoAjustScore option for results 2014-01-15 22:45:02 +08:00
qianlifeng
93d8f66afc Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-14 23:31:52 +08:00
qianlifeng
ea0e80b12b add some comments 2014-01-14 23:31:24 +08:00
qianlifeng
cfdb5456aa Update README.md 2014-01-14 23:00:38 +08:00
qianlifeng
5baeadbe92 Update README.md 2014-01-14 22:58:49 +08:00
qianlifeng
8a57a32233 Update README.md 2014-01-14 22:57:15 +08:00
qianlifeng
af954a0578 Add kill process workflow 2014-01-13 19:32:27 +08:00
qianlifeng
b6bbd6899e fix issues 2014-01-13 18:43:44 +08:00
qianlifeng
f7edc853da project file change 2014-01-13 09:45:31 +08:00
qianlifeng
820d0cde86 add v2ex workflow 2014-01-12 21:02:39 +08:00
qianlifeng
2249bbb0f5 Add one instance support. 2014-01-12 18:15:30 +08:00
qianlifeng
4a37a6f497 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-12 16:42:35 +08:00
qianlifeng
0ce742fa8a Delete useless files 2014-01-12 16:42:28 +08:00
qianlifeng
86725b1ef1 Update README.md 2014-01-12 16:39:56 +08:00
qianlifeng
7a3ec4194e Merge "PythonPlugin" branch 2014-01-12 16:34:18 +08:00
qianlifeng
53120faeba Merge branch 'PythonPlugin' 2014-01-12 16:31:06 +08:00
qianlifeng
c9ca331d30 Add winalfred workflow installer 2014-01-12 16:28:11 +08:00
qianlifeng
cce3749563 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-11 18:24:08 +08:00
qianlifeng
f389b1ae93 Fix issue#13 2014-01-11 18:23:59 +08:00
qianlifeng
a275ce8738 delete cpp codes 2014-01-11 17:26:57 +08:00
qianlifeng
03dfa19c0e Update README.md 2014-01-11 15:32:45 +08:00
qianlifeng
b5087002d2 Update README.md 2014-01-11 15:31:14 +08:00
qianlifeng
4df5cdd312 Update README.md 2014-01-11 15:23:05 +08:00
qianlifeng
73867d87d7 research python plugin: seems ok in multiple thread now. 2014-01-11 15:02:17 +08:00
qianlifeng
76009ca6eb try to use python.net as the bridge. 2014-01-11 00:19:14 +08:00
qianlifeng
935d26f956 research 2014-01-09 22:16:19 +08:00
qianlifeng
8d931e290a project file change 2014-01-09 20:33:47 +08:00
qianlifeng
1cd846fbf1 Merge branch 'master' 2014-01-09 20:32:29 +08:00
qianlifeng
c284d5d2f4 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-09 20:21:57 +08:00
qianlifeng
713a794e9a structure change 2014-01-09 20:21:46 +08:00
qianlifeng
e1cc09a837 Update README.md 2014-01-08 23:48:44 +08:00
qianlifeng
3ebb35ac6a Update README.md 2014-01-08 23:46:14 +08:00
qianlifeng
3f377d4efc add browser bookmark (chrome) plugin 2014-01-08 23:21:37 +08:00
qianlifeng
881d265579 update msg window 2014-01-08 19:08:48 +08:00
qianlifeng
70339423d0 start issue#11 2014-01-07 23:27:05 +08:00
qianlifeng
a5f3359d32 Add progress bar 2014-01-07 19:27:51 +08:00
qianlifeng
13f00edefd fix shutdown didn't work issue 2014-01-06 22:21:08 +08:00
qianlifeng
97b5526cc1 fix program plugin doesn't work in XP issue. 2014-01-06 21:25:24 +08:00
qianlifeng
3901422a54 Add missed changes 2014-01-06 19:03:20 +08:00
qianlifeng
2db2136117 remove unused codes 2014-01-05 19:33:36 +08:00
qianlifeng
fc40ed52f3 Merge branch 'master' of https://github.com/qianlifeng/WinAlfred.git 2014-01-05 17:56:11 +08:00
qianlifeng
b2081dcbc9 add translator plugin 2014-01-05 17:56:02 +08:00
qianlifeng
fd42549733 Update README.md 2014-01-05 17:07:13 +08:00
qianlifeng
07d002da48 Add Program Plugin 2014-01-04 20:26:13 +08:00
qianlifeng
dc51bc39ab structure change 2014-01-03 23:52:36 +08:00
qianlifeng
411932c96b python plugin test 2014-01-03 19:29:46 +08:00
qianlifeng
1eb3f449e2 Add system commands 2014-01-03 18:16:05 +08:00
qianlifeng
188e7910dd add pywinalfred test project 2013-12-29 21:50:56 +08:00
qianlifeng
5893564f46 Change Python C Wrapper 2013-12-27 20:06:49 +08:00
qianlifeng
bdf77b2782 Fix scroll issues 2013-12-27 00:39:07 +08:00
qianlifeng
ece5cc7dd5 UI staff 2013-12-26 20:18:08 +08:00
qianlifeng
db18b0f8e2 fixing embedding Python multithread problems 2013-12-25 19:26:58 +08:00
qianlifeng
94cd2c0599 UI staff 2013-12-25 00:21:54 +08:00
qianlifeng
87225e64fa regular update 2013-12-23 23:53:38 +08:00
qianlifeng
fffb97ea8d add PyWinAlfred 2013-12-23 19:21:51 +08:00
qianlifeng
57b381311c UI staff 2013-12-23 00:10:46 +08:00
qianlifeng
121db63778 UI staff 2013-12-22 19:35:21 +08:00
qianlifeng
dcf52085ae some UI staff 2013-12-22 00:44:56 +08:00
qianlifeng
2d339ba00a add portable python environment 2013-12-21 01:22:42 +08:00
qianlifeng
422e19724a add IronPython environment to execute python plugins 2013-12-21 01:20:17 +08:00
qianlifeng
f25f4f7dc8 regular commit 2013-12-20 19:38:10 +08:00
qianlifeng
c8fca3d63f project stucture change 2013-12-19 23:55:23 +08:00
qianlifeng
fd1ee23adc init 2013-12-19 23:51:20 +08:00
qianlifeng
a540165280 Initial commit 2013-12-19 07:49:32 -08:00
2349 changed files with 244901 additions and 31155 deletions

14
.gitattributes vendored
View File

@@ -1 +1,15 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
*.cs text eol=crlf
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
*.rc diff

View File

@@ -1,8 +1,8 @@
---
name: Bug report
name: 🐛 Bug report
about: Report errors or unexpected behavior
title: ''
labels: ''
labels: Issue-Bug
assignees: ''
---
@@ -12,26 +12,27 @@ assignees: ''
Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue.
-->
# Environment
## Computer information
```
Windows build number: [run "ver" at a command prompt]
PowerToys version:
PowerToy module for which you are reporting the bug (if applicable):
```
- PowerToys version:
- PowerToy Utility:
- Running PowerToys as Admin:
- Windows build number: [run "winver"]
# Steps to reproduce
## 📝 Provide detailed reproduction steps (if any)
<!-- A description of how to trigger this bug. -->
1.
2.
3.
# Expected behavior
### ✔️ Expected result
<!-- A description of what you're expecting, possibly containing screenshots or reference material. -->
_What is the expected result of the above steps?_
# Actual behavior
### ❌ Actual result
<!-- What's actually happening? -->
_What is the actual result of the above steps?_
# Screenshots
## 📷 Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->
_Are there any useful screenshots? WinKey+Shift+S and then just paste them directly into the form_

15
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
blank_issues_enabled: false
contact_links:
- name: "\U0001F4F7 VideoConference"
url: https://github.com/microsoft/PowerToys/issues/6246
about: Report Bug for the VideoConference Power Toy
- name: "\U0001F6A8 Microsoft Security Response Center (MSRC)"
url: https://msrc.microsoft.com/create-report
about: Report security bugs
- name: "\U0001F4DA PowerToys user documentation"
url: https://github.com/microsoft/PowerToys/wiki
about: Documentation for users of PowerToys
- name: "\U0001F4DA PowerToys dev documentation"
url: https://github.com/microsoft/PowerToys/tree/master/doc/devdocs
about: Documentation for people interested in developing for PowerToys

View File

@@ -1,10 +1,14 @@
---
name: Documentation Issue
name: "\U0001F4DA Documentation Issue"
about: Report issues in our documentation
title: ''
labels: ''
labels: Issue-Docs
assignees: ''
---
<!-- Briefly describe which document needs to be corrected and why. -->
## 📝 Provide a description of requested docs changes
_What is the purpose and what should be changed?_

View File

@@ -1,21 +1,16 @@
---
name: Feature request
about: Suggest an idea for this project
name: "⭐ Feature request"
about: Propose something new.
title: ''
labels: ''
assignees: ''
---
# Summary of the new feature/enhancement
## 📝 Provide a description of the new feature
<!--
A clear and concise description of what the problem is that the new feature would solve.
Describe why and how a user would use this new functionality (if applicable).
-->
_What is the expected behavior of the proposed feature? What is the scenario this would be used?_
# Proposed technical implementation details (optional)
---
<!--
A clear and concise description of what you want to happen.
-->
If you'd like to see this feature implemented, add a 👍 reaction to this post.

View File

@@ -1,19 +1,18 @@
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
<!-- Other than the issue solved, is this relevant to any other issues/existing PRs? -->
## References
_What is this about?_
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
* [ ] Closes #xxx
* [ ] Applies to #xxx
* [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/PowerToys) and sign the CLA
* [ ] Tests added/passed
* [ ] Requires documentation to be updated
* [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx
<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments
## Info on Pull Request
_What does this include?_
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
_How does someone test & validate?_

14
.gitignore vendored
View File

@@ -301,6 +301,8 @@ __pycache__/
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
ImageResizer/tools/**
!ImageResizer/tools/packages.config
# Tabs Studio
*.tss
@@ -328,3 +330,15 @@ ASALocalRun/
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Temp build files
src/settings/settings-html/200.html
src/settings/settings-html/404.html
# Temp telemetry files.
src/common/Telemetry/*.etl
# Don't ignore MergeModules
!**/MergeModules/Release/
!**/MergeModules/Debug/
/src/modules/previewpane/SvgThumbnailProvider/$(SolutionDir)$(Platform)/$(Configuration)/modules/FileExplorerPreview/SvgThumbnailProvider.xml

7
.gitmodules vendored Normal file
View File

@@ -0,0 +1,7 @@
[submodule "deps/spdlog"]
path = deps/spdlog
url = https://github.com/gabime/spdlog.git
[submodule "deps/cxxopts"]
path = deps/cxxopts
url = https://github.com/jarro2783/cxxopts.git

View File

@@ -0,0 +1,10 @@
cd /D "%~dp0"
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.18362.0
pushd .
cd ..
set SolutionDir=%cd%
popd
SET IsPipeline=1
call msbuild ../installer/PowerToysBootstrapper/PowerToysBootstrapper.sln /p:Configuration=Release /p:Platform=x64 /p:CIBuild=true || exit /b 1

View File

@@ -0,0 +1,5 @@
cd /D "%~dp0"
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.18362.0
SET IsPipeline=1
call msbuild ../installer/PowerToysSetup.sln /p:Configuration=Release /p:Platform=x64 /p:CIBuild=true || exit /b 1

View File

@@ -0,0 +1,33 @@
@echo off
rem This script will fail to run unless you have the appropriate permissions
cd /D "%~dp0"
echo Preparing localization build...
setlocal
rem In this sample, the repo root is identical to the script directory path. Adjust the value of the RepoRoot variable accordingly based on your environment.
rem Again, ensure the RepoRoot variable is set to the real repo root location, otherwise the localization toolset wouldn't work as intended.
rem Note that the resolved %~dp0 ends with \.
set RepoRootWithoutBackslash=%~dp0..
set RepoRoot=%RepoRootWithoutBackslash%\
set OutDir=%RepoRoot%out
set NUGET_PACKAGES=%RepoRoot%packages
set LocalizationXLocPkgVer=2.0.0
echo Running localization build...
set XLocPath=%NUGET_PACKAGES%\Localization.XLoc.%LocalizationXLocPkgVer%
set LocProjectDirectory=%RepoRootWithoutBackslash%
rem Run the localization tool on all LocProject.json files in the src directory and it's subdirectories (directory format must not end with \)
dotnet "%XLocPath%\tools\netcore\Microsoft.Localization.XLoc.dll" /f "%LocProjectDirectory%"
echo Localization build finished with exit code '%errorlevel%'.
rem Move UWP resource files to correct file paths as per file path expected by UWP project
cd %RepoRootWithoutBackslash%
powershell -NonInteractive -executionpolicy Unrestricted ".\tools\localization\move_uwp_resources.ps1"
exit /b %errorlevel%

View File

@@ -1,2 +1,6 @@
cd /D "%~dp0"
dotnet build --no-restore ..\PowerToys.sln || exit /b 1
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.18362.0
call msbuild -m ../PowerToys.sln /p:Configuration=Release /p:Platform=x64 /p:CIBuild=true || exit /b 1
SET PTRoot=..
call "..\installer\PowerToysSetup\publish.cmd"

View File

@@ -3,6 +3,8 @@ trigger:
branches:
include:
- master
- dev/build-features
- dev/PowerLauncher
paths:
exclude:
- doc/*
@@ -13,6 +15,8 @@ pr:
branches:
include:
- master
- dev/build-features
- dev/PowerLauncher
# 0.0.yyMM.dd##
# 0.0.1904.0900

View File

@@ -1,7 +1,7 @@
parameters:
configuration: 'Release'
platform: ''
additionalBuildArguments: ''
additionalBuildArguments: '-m /p:CIBuild=true'
jobs:
- job: Build${{ parameters.platform }}${{ parameters.configuration }}
@@ -10,8 +10,10 @@ jobs:
BuildConfiguration: ${{ parameters.configuration }}
BuildPlatform: ${{ parameters.platform }}
pool: { vmImage: windows-2019 }
timeoutInMinutes: 120
strategy:
maxParallel: 10
steps:
- template: build-powertoys-steps.yml
parameters:
additionalBuildArguments: ${{ parameters.additionalBuildArguments }}
additionalBuildArguments: ${{ parameters.additionalBuildArguments }}

View File

@@ -0,0 +1,108 @@
parameters:
additionalBuildArguments: ''
steps:
- checkout: self
fetchDepth: 1
submodules: true
clean: true
- task: NuGetToolInstaller@0
displayName: Ensure NuGet 5.5.0
inputs:
versionSpec: 5.5.0
- task: VisualStudioTestPlatformInstaller@1
displayName: Ensure VSTest Platform
- task: NuGetCommand@2
displayName: Restore NuGet packages for PowerToys.sln
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: PowerToys.sln
restoreDirectory: '$(Build.SourcesDirectory)\packages'
- task: VSBuild@1
displayName: 'Build PowerToys.sln'
inputs:
solution: '**\PowerToys.sln'
vsVersion: 16.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: ${{ parameters.additionalBuildArguments }}
maximumCpuCount: true
- task: NuGetCommand@2
displayName: Restore NuGet packages for PowerToysSetup.sln
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: installer\PowerToysSetup.sln
restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'
- task: VSBuild@1
displayName: 'Build PowerToysSetup.sln'
inputs:
solution: '**\installer\PowerToysSetup.sln'
vsVersion: 16.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: ${{ parameters.additionalBuildArguments }}
maximumCpuCount: true
- task: NuGetCommand@2
displayName: Restore NuGet packages for PowerToysBootstrapper.sln
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: installer\PowerToysBootstrapper\PowerToysBootstrapper.sln
restoreDirectory: '$(Build.SourcesDirectory)\installer\PowerToysBootstrapper\packages'
- task: VSBuild@1
displayName: 'Build PowerToysBootstrapper.sln'
inputs:
solution: '**\installer\PowerToysBootstrapper\PowerToysBootstrapper.sln'
vsVersion: 16.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: ${{ parameters.additionalBuildArguments }}
maximumCpuCount: true
# directly not doing WinAppDriver testing
- task: VSTest@2
displayName: 'Run .Net Core Tests'
inputs:
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\Microsoft.Plugin.Folder.UnitTest.dll
**\Microsoft.Plugin.Program.UnitTests.dll
**\Microsoft.Plugin.Calculator.UnitTest.dll
**\Microsoft.Plugin.Uri.UnitTests.dll
**\Wox.Test.dll
**\*Microsoft.PowerToys.Settings.UI.UnitTests.dll
**\UnitTest-ColorPickerUI.dll
!**\obj\**
# .NetFramework assemblies
- task: VSTest@2
displayName: 'Run .Net Framework Tests'
inputs:
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\ImageResizer.Test.dll
**\KeyboardManagerTest.dll
**\UnitTests-CommonLib.dll
**\PreviewPaneUnitTests.dll #this is the markdown tests
**\UnitTests-PreviewHandlerCommon.dll
**\UnitTests-SvgPreviewHandler.dll
**\powerpreviewTest.dll
!**\obj\**
# **\PowerRenameUnitTests.dll

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.PowerToys.Telemetry" version="2.0" />
</packages>

View File

@@ -0,0 +1,21 @@
static_analysis_options:
fxcop_options:
disable_tool_scan: false
policheck_options:
fail_on_error: true
moderncop_options:
fail_on_error: true
files_to_scan:
- from: 'src'
exclude:
- '**/just.config.js'
- '**/webpack.config.js'
- '**/webpack.serve.config.js'
- '**/dist/bundle.js'
binskim_options:
disable_tool_scan: false
files_to_scan:
- from: 'installer/packages'
exclude:
- 'WiX.3.11.1/**/*.dll'
- 'Wix.3.11.1/**/*.exe'

View File

@@ -2,42 +2,180 @@ environment:
host:
os: 'windows'
flavor: 'server'
version: '2016'
version: '2019'
runtime:
provider: 'appcontainer'
image: 'cdpxwinrs4test.azurecr.io/global/vse2017u7-external-azsdk-mobile-ext-win1803:latest-nodetools'
source_mode: 'link'
image: 'cdpxwin1809.azurecr.io/global/vse2019:latest'
source_mode: 'map'
version:
name: 'PowerToys'
major: 1
minor: 0
signing_options:
profile: 'azure'
profile: 'external_distribution'
package_sources:
nuget:
feeds:
'Nuget': 'https://api.nuget.org/v3/index.json'
'Toolset': 'https://msazure.pkgs.visualstudio.com/_packaging/Toolset/nuget/v3/index.json'
'CloudES-CDP': 'https://cloudes.pkgs.visualstudio.com/_packaging/CDP/nuget/v3/index.json'
'CloudES-Internal': 'https://cloudes.pkgs.visualstudio.com/_packaging/Internal/nuget/v3/index.json'
'MsNugetMirror': 'https://msazure.pkgs.visualstudio.com/_packaging/MsNugetMirror/nuget/v3/index.json'
'NugetMirror': 'https://msazure.pkgs.visualstudio.com/_packaging/NugetMirror/nuget/v3/index.json'
'CorextMirror': 'https://msazure.pkgs.visualstudio.com/_packaging/CorextMirror/nuget/v3/index.json'
'Official': 'https://msazure.pkgs.visualstudio.com/_packaging/Official/nuget/v3/index.json'
'Toolset': 'https://msazure.pkgs.visualstudio.com/_packaging/Toolset/nuget/v3/index.json'
'AzureCXP': 'https://msazure.pkgs.visualstudio.com/_packaging/AzureCXP/nuget/v3/index.json'
'PipelineBuildSupplement': 'https://msazure.pkgs.visualstudio.com/_packaging/PipelineBuildSupplement/nuget/v3/index.json'
restore:
commands:
- !!defaultcommand
name: 'Restore CSharp'
name: 'Restore Power Toys Telemetry'
command: '.pipelines\restore-telemetry.cmd'
- !!defaultcommand
name: 'Restore Power Toys'
command: '.pipelines\restore.cmd'
- !!defaultcommand
name: 'Restore Installer'
command: '.pipelines\restore-installer.cmd'
- !!defaultcommand
name: 'Restore Localization packages'
command: '.pipelines\restore-localization.cmd'
build:
commands:
# Localize the files before the Build PowerToys step to generate translated resx files from the lcl files
- !!buildcommand
name: 'Build CSharp'
command: '.pipelines\build.cmd'
name: 'Localize Power Toys'
command: '.pipelines\build-localization.cmd'
artifacts:
- from: '**\bin'
to: 'Build_Output'
- from: 'out\loc'
to: 'loc'
include:
- '**/*'
- !!buildcommand
name: 'Build Power Toys'
command: '.pipelines\build.cmd'
artifacts:
- to: 'Symbols'
include:
- 'x64/**/*.pdb'
exclude:
- 'x64/Release/obj/**/*.pdb'
- from: 'x64/Release'
to: 'Build_Output'
include:
- 'action_runner.exe'
- 'modules\ColorPicker\ColorPicker.dll'
- 'modules\ColorPicker\ColorPicker.exe'
- '**\*.resources.dll'
- 'modules\FancyZones\fancyzones.dll'
- 'modules\FancyZones\FancyZonesEditor.exe'
- 'modules\FileExplorerPreview\MarkdownPreviewHandler.dll'
- 'modules\FileExplorerPreview\powerpreview.dll'
- 'modules\FileExplorerPreview\PreviewHandlerCommon.dll'
- 'modules\FileExplorerPreview\SvgPreviewHandler.dll'
- 'modules\FileExplorerPreview\SVGThumbnailProvider.dll'
- 'modules\ImageResizer\ImageResizer.exe'
- 'modules\ImageResizer\ImageResizerExt.dll'
- 'modules\KeyboardManager\KeyboardManager.dll'
- 'modules\launcher\Microsoft.PowerToys.Settings.UI.Lib.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Calculator\Microsoft.Plugin.Calculator.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Calculator\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Calculator\Wox.Plugin.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Folder\Microsoft.Plugin.Folder.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Folder\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Folder\Wox.Plugin.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Indexer\Microsoft.Plugin.Indexer.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Indexer\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Program\Microsoft.Plugin.Program.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Program\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Program\Wox.Plugin.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Shell\Microsoft.Plugin.Shell.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Shell\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.Shell\Wox.Plugin.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.WindowWalker\Microsoft.Plugin.WindowWalker.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.WindowWalker\Wox.Infrastructure.dll'
- 'modules\launcher\Plugins\Microsoft.Plugin.WindowWalker\Wox.Plugin.dll'
- 'modules\launcher\PowerLauncher.dll'
- 'modules\launcher\PowerLauncher.exe'
- 'modules\launcher\PowerLauncher.Telemetry.dll'
- 'modules\launcher\PowerLauncher.UI.exe'
- 'modules\launcher\PowerToysInterop.dll'
- 'modules\launcher\Telemetry.dll'
- 'modules\launcher\Wox.Core.dll'
- 'modules\launcher\Wox.dll'
- 'modules\launcher\Wox.Infrastructure.dll'
- 'modules\launcher\Wox.Plugin.dll'
- 'modules\Microsoft.Launcher.dll'
- 'modules\PowerRename\PowerRenameExt.dll'
- 'modules\ShortcutGuide\ShortcutGuide.dll'
- 'Notifications.dll'
- 'os-detection.dll'
- 'PowerToys.exe'
- 'PowerToysInterop.dll'
- 'PowerToysSettings.exe'
- 'SettingsUIRunner\Microsoft.PowerToys.Settings.UI.exe'
- 'SettingsUIRunner\Microsoft.PowerToys.Settings.UI.Lib.dll'
- 'SettingsUIRunner\Microsoft.PowerToys.Settings.UI.Runner.dll'
- 'SettingsUIRunner\Microsoft.PowerToys.Settings.UI.Runner.exe'
- 'SettingsUIRunner\PowerToysInterop.dll'
- 'SettingsUIRunner\Telemetry.dll'
signing_options:
sign_inline: true # This does signing a soon as this command completes
- !!buildcommand
name: 'Build Power Toys Installer'
command: '.pipelines\build-installer.cmd'
artifacts:
- from: 'installer\PowerToysSetup\x64\Release'
to: 'Build_Installer_Output'
include:
- 'PowerToysSetup-*.msi'
signing_options:
sign_inline: true # This does signing a soon as this command completes
- !!buildcommand
name: 'Build Power Toys Bootstrapper'
command: '.pipelines\build-bootstrapper.cmd'
artifacts:
- to: 'Symbols'
include:
- 'installer\PowerToysBootstrapper\x64\Release\PowerToysSetup-*.pdb'
- from: 'installer\PowerToysBootstrapper\x64\Release'
to: 'Build_Installer_Output'
include:
- 'PowerToysSetup-*.exe'
signing_options:
sign_inline: true # This does signing a soon as this command completes
#package:
# commands:
# - !!buildcommand
# name: 'Build MSIX package'
# command: 'installer\msix\build_msix_cdpx.cmd'
# artifacts:
# - from: 'installer\msix\bin'
# to: 'Build_MSIX_Package_Output'
# include:
# - '*.msix'
# - '*.msixbundle'
# signing_options:
# profile: '400'
static_analysis_options:
binskim_options:
files_to_scan:
- from: 'installer/packages'
exclude:
- 'WiX.*/**/*.dll'
- 'Wix.*/**/*.exe'
moderncop_options:
files_to_scan:
- from: 'src'
exclude:
- '**/just.config.js'
- '**/webpack.config.js'
- '**/webpack.serve.config.js'
- '**/dist/bundle.js'
policheck_options:
files_to_scan:
- exclude:
- '**/*.lcl'

View File

@@ -0,0 +1,3 @@
cd /D "%~dp0"
nuget restore ../installer/PowerToysSetup.sln || exit /b 1

View File

@@ -0,0 +1,32 @@
@echo off
cd /D "%~dp0"
echo Installing nuget packages
setlocal
rem In this sample, the repo root is identical to the script directory path. Adjust the value of the RepoRoot variable accordingly based on your environment.
rem Again, ensure the RepoRoot variable is set to the real repo root location, otherwise the localization toolset wouldn't work as intended.
rem Note that the resolved %~dp0 ends with \.
set RepoRoot=%~dp0..\
set OutDir=%RepoRoot%out
set NUGET_PACKAGES=%RepoRoot%packages
set LocalizationXLocPkgVer=2.0.0
nuget install Localization.XLoc -Version %LocalizationXLocPkgVer% -OutputDirectory "%NUGET_PACKAGES%" -NonInteractive -Verbosity detailed
if "%errorlevel%" neq "0" (
exit /b %errorlevel%
)
nuget install LSBuild.XLoc -OutputDirectory "%NUGET_PACKAGES%" -NonInteractive -Verbosity detailed
if "%errorlevel%" neq "0" (
exit /b %errorlevel%
)
nuget install Localization.Languages -OutputDirectory "%NUGET_PACKAGES%" -NonInteractive -Verbosity detailed
if "%errorlevel%" neq "0" (
exit /b %errorlevel%
)
exit /b %errorlevel%

View File

@@ -0,0 +1,6 @@
cd /D "%~dp0"
call nuget.exe restore -PackagesDirectory . packages.config || exit /b 1
move /Y "Microsoft.PowerToys.Telemetry.2.0.0\build\include\TraceLoggingDefines.h" "..\src\common\Telemetry\TraceLoggingDefines.h" || exit /b 1
move /Y "Microsoft.PowerToys.Telemetry.2.0.0\build\include\TelemetryBase.cs" "..\src\common\Telemetry\TelemetryBase.cs" || exit /b 1

View File

@@ -1,3 +1,3 @@
cd /D "%~dp0"
dotnet restore ..\PowerToys.sln || exit /b 1
nuget restore ../PowerToys.sln || exit /b 1

9
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,9 @@
# Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
Resources:
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns

65
COMMUNITY.md Normal file
View File

@@ -0,0 +1,65 @@
# Community
The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldnt be near what it is without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thanks and to recognize your work. This is a living document dedicated to highlighting the high impact community members and their contributions.
Names are in alphabetical order based on first name.
## High impact community members
### [@Niels9001](https://github.com/niels9001/) - [Niels Laute](https://nielslaute.com/)
Niels has helped drive large sums of our update toward a new [consistent and modern UX](https://github.com/microsoft/PowerToys/issues/891). This includes the [launcher work](https://github.com/microsoft/PowerToys/issues/44) and [icon design](https://github.com/microsoft/PowerToys/issues/1118).
### [@riverar](https://github.com/riverar) - [Rafael Rivera](https://withinrafael.com/)
Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well.
### [@royvou](https://github.com/royvou)
Roy has helped out contributing a features to PowerToys Run
## Open source projects
As PowerToys creates new utilities, some will be based off existing technology. We'll continue to do our best to contribute back to these projects but their efforts were the base of some of our projects. We want to be sure their work is directly recognized.
### [@jjw24](https://github.com/jjw24/) - Jeremy Wu
Their fork of Wox was the base of PowerToys Run.
### [WoX Launcher](https://github.com/Wox-launcher/Wox/)
Initial base of jjw24's fork, which makes it the base of PowerToys Run.
## Microsoft community members
We would like to also directly call out some extremely helpful Microsoft employees that have directly contributed to PowerToys. This isn't their day job and was work they did out of passion. We want to say thank you and recognize your work.
### [@betsegaw](https://github.com/betsegaw/) - [Betsegaw Tadele](http://www.dreamsofameaningfullife.com/)
Window Walker, inside PowerToys Run, is from Beta.
### [@TheMrJukes](https://github.com/TheMrJukes/) - Bret Anderson
The base of FancyZones and a lot of performance adjustments are from the hard work of Bret.
### [@bricelam](https://github.com/bricelam/) - [Brice Lambson](https://bricelam.net/)
Image Resizer is from Brice.
### [@chrdavis](https://github.com/chrdavis/) - Chris Davis
PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Explorer
### [@martinchrzan](https://github.com/martinchrzan/) - Martin Chrzan
Color Picker is from Martin.
<!--
@alekhyareddy28
@jyuwono
@laviusmotileng-ms
@ryanbodrug-microsoft
@saahmedm
@somil55
@traies
@udit3333
-->

View File

@@ -121,6 +121,12 @@ When you'd like the team to take a look, (even if the work is not yet fully-comp
Once your code has been reviewed and approved by the requisite number of team members, it will be merged into the master branch. Once merged, your PR will be automatically closed.
### How can I become a collaborateur on the PowerToys team
Be a great community member. Just help out a lot and make useful additions, filing bugs/suggestions, help develop fixes and features, code reviews, and always, docs. Lets continue to make the PowerToys repository a great spot to learn and make a great set of utilities.
When the time comes, Microsoft will reach out and help make you a formal team member. Just make sure they can reach out to you :)
---
## Thank you

34
LICENSE
View File

@@ -1,21 +1,21 @@
MIT License
The MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
Copyright (c) Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

BIN
Logo.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

209
NOTICE.md Normal file
View File

@@ -0,0 +1,209 @@
# NOTICES AND INFORMATION
This software incorporates material from third parties.
## PowerToy: Color Picker
### Martin Chrzan's Color Picker
**Source**: https://github.com/martinchrzan/ColorPicker
MIT License
Copyright (c) 2020 martinchrzan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## PowerToy: ImageResizer
### Brice Lams's Image Resizer License
**Source**: https://github.com/bricelam/ImageResizer/
The MIT License (MIT)
Copyright (c) Brice Lambson. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## PowerToy: Launcher
### Wox License
**Fork project source**: https://github.com/jjw24/Wox/
**Base project source**: https://github.com/Wox-launcher/Wox
The MIT License (MIT)
Copyright (c) 2015 Wox
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### Beta Tadele's Window Walker License
**Source**: https://github.com/betsegaw/windowwalker
The MIT License (MIT)
Copyright 2020 Betsegaw Tadele
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### Squirrel.Windows License
**Source**: https://github.com/Squirrel/Squirrel.Windows/
The MIT License (MIT)
Copyright (c) 2012 GitHub, Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
## PowerToy: PowerRename
### Chris Davis's SmartRename License
**Source**: https://github.com/chrdavis/SmartRename
MIT License
Copyright (c) 2017 Chris Davis
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## PowerToy: Installer
### spdlog
**Source**: https://github.com/gabime/spdlog
The MIT License (MIT)
Copyright (c) 2016 Gabi Melman.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-- NOTE: Third party dependency used by this software --
This software depends on the fmt lib (MIT License),
and users must comply to its license: https://github.com/fmtlib/fmt/blob/master/LICENSE.rst
### cxxopts
**Source**: https://github.com/jarro2783
Copyright (c) 2014 Jarryd Beck
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,120 +1,642 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.452
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "runner", "src\runner\runner.vcxproj", "{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}"
ProjectSection(ProjectDependencies) = postProject
{48804216-2A0E-4168-A6D8-9CD068D14227} = {48804216-2A0E-4168-A6D8-9CD068D14227}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA} = {A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}
{07C389E3-6BC8-41CF-923E-307B1265FA2D} = {07C389E3-6BC8-41CF-923E-307B1265FA2D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "src\common\common.vcxproj", "{74485049-C722-400F-ABE5-86AC52D929B3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shortcut_guide", "src\modules\shortcut_guide\shortcut_guide.vcxproj", "{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_powertoy", "src\modules\example_powertoy\example_powertoy.vcxproj", "{44CC9375-3E6E-4D99-8913-7FB748807EBD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{4574FDD0-F61D-4376-98BF-E5A1262C11EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "interface", "interface", "{3BB8493E-D18E-4485-A320-CB40F90F55AE}"
ProjectSection(SolutionItems) = preProject
src\modules\interface\lowlevel_keyboard_event_data.h = src\modules\interface\lowlevel_keyboard_event_data.h
src\modules\interface\powertoy_module_interface.h = src\modules\interface\powertoy_module_interface.h
src\modules\interface\win_hook_event_data.h = src\modules\interface\win_hook_event_data.h
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settings", "src\editor\settings.vcxproj", "{07C389E3-6BC8-41CF-923E-307B1265FA2D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fancyzones", "fancyzones", "{D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FancyZonesLib", "src\modules\fancyzones\lib\FancyZonesLib.vcxproj", "{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fancyzones", "src\modules\fancyzones\dll\FancyZonesModule.vcxproj", "{48804216-2A0E-4168-A6D8-9CD068D14227}"
ProjectSection(ProjectDependencies) = postProject
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {5CCC8468-DEC8-4D36-99D4-5C891BEBD481}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests-FancyZones", "src\modules\fancyzones\tests\UnitTests\UnitTests.vcxproj", "{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpprestsdk", "deps\cpprestsdk\cpprestsdk.vcxproj", "{4E577735-DFAB-41AF-8A6E-B6E8872A2928}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deps", "deps", "{1FAF749F-0D6F-4BF5-A563-31A4B5279D27}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{1AFB6476-670D-4E80-A464-657E01DFF482}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests-CommonLib", "src\common\UnitTests-CommonLib\UnitTests-CommonLib.vcxproj", "{1A066C63-64B3-45F8-92FE-664E1CCE8077}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FancyZonesEditor", "src\modules\fancyzones\editor\FancyZonesEditor\FancyZonesEditor.csproj", "{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.ActiveCfg = Debug|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.Build.0 = Debug|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.ActiveCfg = Release|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.Build.0 = Release|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.ActiveCfg = Debug|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.Build.0 = Debug|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.ActiveCfg = Release|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.Build.0 = Release|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.ActiveCfg = Debug|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.Build.0 = Debug|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.ActiveCfg = Release|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.Build.0 = Release|x64
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|x64.ActiveCfg = Debug|x64
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|x64.ActiveCfg = Release|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.ActiveCfg = Debug|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.Build.0 = Debug|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.ActiveCfg = Release|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.Build.0 = Release|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.ActiveCfg = Debug|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.Build.0 = Debug|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.ActiveCfg = Release|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.Build.0 = Release|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.ActiveCfg = Debug|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.Build.0 = Debug|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.ActiveCfg = Release|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.Build.0 = Release|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.ActiveCfg = Debug|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.Build.0 = Debug|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.ActiveCfg = Release|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.Build.0 = Release|x64
{4E577735-DFAB-41AF-8A6E-B6E8872A2928}.Debug|x64.ActiveCfg = Debug|x64
{4E577735-DFAB-41AF-8A6E-B6E8872A2928}.Debug|x64.Build.0 = Debug|x64
{4E577735-DFAB-41AF-8A6E-B6E8872A2928}.Release|x64.ActiveCfg = Release|x64
{4E577735-DFAB-41AF-8A6E-B6E8872A2928}.Release|x64.Build.0 = Release|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.ActiveCfg = Debug|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.Build.0 = Debug|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.ActiveCfg = Release|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.Build.0 = Release|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.ActiveCfg = Debug|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.Build.0 = Debug|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.ActiveCfg = Release|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{74485049-C722-400F-ABE5-86AC52D929B3} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{44CC9375-3E6E-4D99-8913-7FB748807EBD} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{3BB8493E-D18E-4485-A320-CB40F90F55AE} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{48804216-2A0E-4168-A6D8-9CD068D14227} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{4E577735-DFAB-41AF-8A6E-B6E8872A2928} = {1FAF749F-0D6F-4BF5-A563-31A4B5279D27}
{1A066C63-64B3-45F8-92FE-664E1CCE8077} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.452
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "runner", "src\runner\runner.vcxproj", "{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}"
ProjectSection(ProjectDependencies) = postProject
{217DF501-135C-4E38-BFC8-99D4821032EA} = {217DF501-135C-4E38-BFC8-99D4821032EA}
{0E072714-D127-460B-AFAD-B4C40B412798} = {0E072714-D127-460B-AFAD-B4C40B412798}
{48804216-2A0E-4168-A6D8-9CD068D14227} = {48804216-2A0E-4168-A6D8-9CD068D14227}
{51920F1F-C28C-4ADF-8660-4238766796C2} = {51920F1F-C28C-4ADF-8660-4238766796C2}
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB} = {6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73} = {031AC72E-FA28-4AB7-B690-6F7B9C28AA73}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{0485F45C-EA7A-4BB5-804B-3E8D14699387} = {0485F45C-EA7A-4BB5-804B-3E8D14699387}
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D} = {D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {5CCC8468-DEC8-4D36-99D4-5C891BEBD481}
{BA58206B-1493-4C75-BFEA-A85768A1E156} = {BA58206B-1493-4C75-BFEA-A85768A1E156}
{0B593A6C-4143-4337-860E-DB5710FB87DB} = {0B593A6C-4143-4337-860E-DB5710FB87DB}
{E364F67B-BB12-4E91-B639-355866EBCD8B} = {E364F67B-BB12-4E91-B639-355866EBCD8B}
{DA425894-6E13-404F-8DCB-78584EC0557A} = {DA425894-6E13-404F-8DCB-78584EC0557A}
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34} = {2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}
{A7D5099E-F0FD-4BF3-8522-5A682759F915} = {A7D5099E-F0FD-4BF3-8522-5A682759F915}
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B} = {0B43679E-EDFA-4DA0-AD30-F4628B308B1B}
{B25AC7A5-FB9F-4789-B392-D5C85E948670} = {B25AC7A5-FB9F-4789-B392-D5C85E948670}
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F} = {E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}
{AF2349B8-E5B6-4004-9502-687C1C7730B1} = {AF2349B8-E5B6-4004-9502-687C1C7730B1}
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA} = {A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}
{17DA04DF-E393-4397-9CF0-84DABE11032E} = {17DA04DF-E393-4397-9CF0-84DABE11032E}
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}
{07C389E3-6BC8-41CF-923E-307B1265FA2D} = {07C389E3-6BC8-41CF-923E-307B1265FA2D}
{655C9AF2-18D3-4DA6-80E4-85504A7722BA} = {655C9AF2-18D3-4DA6-80E4-85504A7722BA}
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9} = {89F34AF7-1C34-4A72-AA6E-534BCF972BD9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "src\common\common.vcxproj", "{74485049-C722-400F-ABE5-86AC52D929B3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShortcutGuide", "src\modules\shortcut_guide\shortcut_guide.vcxproj", "{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{4574FDD0-F61D-4376-98BF-E5A1262C11EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "interface", "interface", "{3BB8493E-D18E-4485-A320-CB40F90F55AE}"
ProjectSection(SolutionItems) = preProject
src\modules\interface\powertoy_module_interface.h = src\modules\interface\powertoy_module_interface.h
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "settings", "src\settings\settings.vcxproj", "{07C389E3-6BC8-41CF-923E-307B1265FA2D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fancyzones", "fancyzones", "{D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FancyZonesLib", "src\modules\fancyzones\lib\FancyZonesLib.vcxproj", "{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fancyzones", "src\modules\fancyzones\dll\FancyZonesModule.vcxproj", "{48804216-2A0E-4168-A6D8-9CD068D14227}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {5CCC8468-DEC8-4D36-99D4-5C891BEBD481}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests-FancyZones", "src\modules\fancyzones\tests\UnitTests\UnitTests.vcxproj", "{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{1AFB6476-670D-4E80-A464-657E01DFF482}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests-CommonLib", "src\common\UnitTests-CommonLib\UnitTests-CommonLib.vcxproj", "{1A066C63-64B3-45F8-92FE-664E1CCE8077}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FancyZonesEditor", "src\modules\fancyzones\editor\FancyZonesEditor\FancyZonesEditor.csproj", "{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "powerrename", "powerrename", "{89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameExt", "src\modules\powerrename\dll\PowerRenameExt.vcxproj", "{B25AC7A5-FB9F-4789-B392-D5C85E948670}"
ProjectSection(ProjectDependencies) = postProject
{0E072714-D127-460B-AFAD-B4C40B412798} = {0E072714-D127-460B-AFAD-B4C40B412798}
{51920F1F-C28C-4ADF-8660-4238766796C2} = {51920F1F-C28C-4ADF-8660-4238766796C2}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameLib", "src\modules\powerrename\lib\PowerRenameLib.vcxproj", "{51920F1F-C28C-4ADF-8660-4238766796C2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameUI", "src\modules\powerrename\ui\PowerRenameUI.vcxproj", "{0E072714-D127-460B-AFAD-B4C40B412798}"
ProjectSection(ProjectDependencies) = postProject
{51920F1F-C28C-4ADF-8660-4238766796C2} = {51920F1F-C28C-4ADF-8660-4238766796C2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameTest", "src\modules\powerrename\testapp\PowerRenameTest.vcxproj", "{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}"
ProjectSection(ProjectDependencies) = postProject
{0E072714-D127-460B-AFAD-B4C40B412798} = {0E072714-D127-460B-AFAD-B4C40B412798}
{51920F1F-C28C-4ADF-8660-4238766796C2} = {51920F1F-C28C-4ADF-8660-4238766796C2}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameUnitTests", "src\modules\powerrename\unittests\PowerRenameLibUnitTests.vcxproj", "{2151F984-E006-4A9F-92EF-C6DDE3DC8413}"
ProjectSection(ProjectDependencies) = postProject
{0E072714-D127-460B-AFAD-B4C40B412798} = {0E072714-D127-460B-AFAD-B4C40B412798}
{51920F1F-C28C-4ADF-8660-4238766796C2} = {51920F1F-C28C-4ADF-8660-4238766796C2}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{B25AC7A5-FB9F-4789-B392-D5C85E948670} = {B25AC7A5-FB9F-4789-B392-D5C85E948670}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{BEEAB7F2-FFF6-45AB-9CDB-B04CC0734B88}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModuleTemplateCompileTest", "tools\project_template\ModuleTemplate\ModuleTemplateCompileTest.vcxproj", "{64A80062-4D8B-4229-8A38-DFA1D7497749}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameUWPUI", "src\modules\powerrename\UWPui\PowerRenameUWPUI.vcxproj", "{0485F45C-EA7A-4BB5-804B-3E8D14699387}"
ProjectSection(ProjectDependencies) = postProject
{0E072714-D127-460B-AFAD-B4C40B412798} = {0E072714-D127-460B-AFAD-B4C40B412798}
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "notifications", "src\common\notifications_winrt\notifications.vcxproj", "{0B593A6C-4143-4337-860E-DB5710FB87DB}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "notifications_dll", "src\common\notifications\notifications_dll.vcxproj", "{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}"
ProjectSection(ProjectDependencies) = postProject
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
{0B593A6C-4143-4337-860E-DB5710FB87DB} = {0B593A6C-4143-4337-860E-DB5710FB87DB}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardManager", "src\modules\keyboardmanager\dll\KeyboardManager.vcxproj", "{89F34AF7-1C34-4A72-AA6E-534BCF972BD9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "imageresizer", "imageresizer", "{6C7F47CC-2151-44A3-A546-41C70025132C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageResizerUI", "src\modules\imageresizer\ui\ImageResizerUI.csproj", "{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageResizerExt", "src\modules\imageresizer\dll\ImageResizerExt.vcxproj", "{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageResizerUITest", "src\modules\imageresizer\tests\ImageResizerUITest.csproj", "{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardManagerUI", "src\modules\keyboardmanager\ui\KeyboardManagerUI.vcxproj", "{EAF23649-EF6E-478B-980E-81FAD96CCA2A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "action_runner", "src\action_runner\action_runner.vcxproj", "{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}"
ProjectSection(ProjectDependencies) = postProject
{17DA04DF-E393-4397-9CF0-84DABE11032E} = {17DA04DF-E393-4397-9CF0-84DABE11032E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "updating", "src\common\updating\updating.vcxproj", "{17DA04DF-E393-4397-9CF0-84DABE11032E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "keyboardmanager", "keyboardmanager", "{38BDB927-829B-4C65-9CD9-93FB05D66D65}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardManagerCommon", "src\modules\keyboardmanager\common\KeyboardManagerCommon.vcxproj", "{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "launcher", "launcher", "{C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Core", "src\modules\launcher\Wox.Core\Wox.Core.csproj", "{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Infrastructure", "src\modules\launcher\Wox.Infrastructure\Wox.Infrastructure.csproj", "{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin", "src\modules\launcher\Wox.Plugin\Wox.Plugin.csproj", "{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Test", "src\modules\launcher\Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{4AFC9975-2456-4C70-94A4-84073C1CED93}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Calculator", "src\modules\launcher\Plugins\Microsoft.Plugin.Calculator\Microsoft.Plugin.Calculator.csproj", "{59BD9891-3837-438A-958D-ADC7F91F6F7E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.WindowWalker", "src\modules\launcher\Plugins\Microsoft.Plugin.WindowWalker\Microsoft.Plugin.WindowWalker.csproj", "{74F1B9ED-F59C-4FE7-B473-7B453E30837E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Program", "src\modules\launcher\Plugins\Microsoft.Plugin.Program\Microsoft.Plugin.Program.csproj", "{FDB3555B-58EF-4AE6-B5F1-904719637AB4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Shell", "src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Microsoft.Plugin.Shell.csproj", "{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Indexer", "src\modules\launcher\Plugins\Microsoft.Plugin.Indexer\Microsoft.Plugin.Indexer.csproj", "{F8B870EB-D5F5-45BA-9CF7-A5C459818820}"
ProjectSection(ProjectDependencies) = postProject
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80} = {8451ECDD-2EA4-4966-BB0A-7BBC40138E80}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Launcher", "src\modules\launcher\Microsoft.Launcher\Microsoft.Launcher.vcxproj", "{E364F67B-BB12-4E91-B639-355866EBCD8B}"
ProjectSection(ProjectDependencies) = postProject
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2} = {F97E5003-F263-4D4A-A964-0F1F3C82DEF2}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerLauncher", "src\modules\launcher\PowerLauncher\PowerLauncher.csproj", "{F97E5003-F263-4D4A-A964-0F1F3C82DEF2}"
ProjectSection(ProjectDependencies) = postProject
{03276A39-D4E9-417C-8FFD-200B0EE5E871} = {03276A39-D4E9-417C-8FFD-200B0EE5E871}
{FDB3555B-58EF-4AE6-B5F1-904719637AB4} = {FDB3555B-58EF-4AE6-B5F1-904719637AB4}
{59BD9891-3837-438A-958D-ADC7F91F6F7E} = {59BD9891-3837-438A-958D-ADC7F91F6F7E}
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0} = {C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4} = {787B8AA6-CA93-4C84-96FE-DF31110AD1C4}
{F8B870EB-D5F5-45BA-9CF7-A5C459818820} = {F8B870EB-D5F5-45BA-9CF7-A5C459818820}
{74F1B9ED-F59C-4FE7-B473-7B453E30837E} = {74F1B9ED-F59C-4FE7-B473-7B453E30837E}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{E775CC2C-24CB-48D6-9C3A-BE4CCE0DB17A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "win-app-driver", "src\tests\win-app-driver\win-app-driver.csproj", "{880ED251-9E16-4713-9A70-D35FE0C01669}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "previewpane", "previewpane", "{2F305555-C296-497E-AC20-5FA1B237996A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PreviewHandlerCommon", "src\modules\previewpane\Common\PreviewHandlerCommon.csproj", "{AF2349B8-E5B6-4004-9502-687C1C7730B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownPreviewHandler", "src\modules\previewpane\MarkdownPreviewHandler\MarkdownPreviewHandler.csproj", "{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests-MarkdownPreviewHandler", "src\modules\previewpane\PreviewPaneUnitTests\UnitTests-MarkdownPreviewHandler.csproj", "{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgPreviewHandler", "src\modules\previewpane\SvgPreviewHandler\SvgPreviewHandler.csproj", "{DA425894-6E13-404F-8DCB-78584EC0557A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests-SvgPreviewHandler", "src\modules\previewpane\UnitTests-SvgPreviewHandler\UnitTests-SvgPreviewHandler.csproj", "{060D75DA-2D1C-48E6-A4A1-6F0718B64661}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests-PreviewHandlerCommon", "src\modules\previewpane\UnitTests-PreviewHandlerCommon\UnitTests-PreviewHandlerCommon.csproj", "{748417CA-F17E-487F-9411-CAFB6D3F4877}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "powerpreview", "src\modules\previewpane\powerpreview\powerpreview.vcxproj", "{217DF501-135C-4E38-BFC8-99D4821032EA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "powerpreviewTest", "src\modules\previewpane\powerpreviewTest\powerpreviewTest.vcxproj", "{47310AB4-9034-4BD1-8D8B-E88AD21A171B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{C3081D9A-1586-441A-B5F4-ED815B3719C1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.PowerToys.Settings.UI.Runner", "src\core\Microsoft.PowerToys.Settings.UI.Runner\Microsoft.PowerToys.Settings.UI.Runner.csproj", "{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerToys.Settings.UI", "src\core\Microsoft.PowerToys.Settings.UI\Microsoft.PowerToys.Settings.UI.csproj", "{A7D5099E-F0FD-4BF3-8522-5A682759F915}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4981CCD1-4CD9-4A49-B240-00AA46493FF8}"
ProjectSection(SolutionItems) = preProject
src\.editorconfig = src\.editorconfig
src\tests\win-app-driver\packages.config = src\tests\win-app-driver\packages.config
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.PowerToys.Settings.UI.Library", "src\core\Microsoft.PowerToys.Settings.UI.Library\Microsoft.PowerToys.Settings.UI.Library.csproj", "{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "interop", "src\common\interop\interop.vcxproj", "{F055103B-F80B-4D0C-BF48-057C55620033}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common-md-flag", "src\common\common-md-flag\common-md-flag.vcxproj", "{985B3F2F-CEED-4C0A-A249-69257E719145}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Interop.Tests", "src\common\interop-tests\Microsoft.Interop.Tests.csproj", "{437AD818-3F1F-4CA5-A79B-25233A157026}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Folder", "src\modules\launcher\Plugins\Microsoft.Plugin.Folder\Microsoft.Plugin.Folder.csproj", "{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerLauncher.Telemetry", "src\modules\launcher\PowerLauncher.Telemetry\PowerLauncher.Telemetry.csproj", "{08C8C05F-0362-41BC-818C-724572DF8B06}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Telemetry", "src\common\ManagedTelemetry\Telemetry\Telemetry.csproj", "{5D00D290-4016-4CFE-9E41-1E7C724509BA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardManagerTest", "src\modules\keyboardmanager\test\KeyboardManagerTest.vcxproj", "{62173D9A-6724-4C00-A1C8-FB646480A9EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ManagedCommon", "src\common\ManagedCommon\ManagedCommon.csproj", "{4AED67B6-55FD-486F-B917-E543DEE2CB3C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Program.UnitTests", "src\modules\launcher\Plugins\Microsoft.Plugin.Program.UnitTests\Microsoft.Plugin.Program.UnitTests.csproj", "{42851751-CBC8-45A6-97F5-7A0753F7B4D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests-SvgThumbnailProvider", "src\modules\previewpane\UnitTests-SvgThumbnailProvider\UnitTests-SvgThumbnailProvider.csproj", "{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgThumbnailProvider", "src\modules\previewpane\SvgThumbnailProvider\SvgThumbnailProvider.csproj", "{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ColorPicker", "src\modules\colorPicker\ColorPicker\ColorPicker.vcxproj", "{655C9AF2-18D3-4DA6-80E4-85504A7722BA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorPickerUI", "src\modules\colorPicker\ColorPickerUI\ColorPickerUI.csproj", "{BA58206B-1493-4C75-BFEA-A85768A1E156}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "colorpicker", "colorpicker", "{1D78B84B-CA39-406C-98F4-71F7EC266CC0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Uri", "src\modules\launcher\Plugins\Microsoft.Plugin.Uri\Microsoft.Plugin.Uri.csproj", "{03276A39-D4E9-417C-8FFD-200B0EE5E871}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Uri.UnitTests", "src\modules\launcher\Plugins\Microsoft.Plugin.Uri.UnitTests\Microsoft.Plugin.Uri.UnitTests.csproj", "{B81FB7B6-D30E-428F-908A-41422EFC1172}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.PowerToys.Settings.UI.UnitTests", "src\core\Microsoft.PowerToys.Settings.UI.UnitTests\Microsoft.PowerToys.Settings.UI.UnitTests.csproj", "{0F85E674-34AE-443D-954C-8321EB8B93B1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Calculator.UnitTest", "src\modules\launcher\Plugins\Microsoft.Plugin.Calculator.UnitTest\Microsoft.Plugin.Calculator.UnitTest.csproj", "{632BBE62-5421-49EA-835A-7FFA4F499BD6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Plugin.Folder.UnitTests", "src\modules\launcher\Plugins\Microsoft.Plugin.Folder.UnitTests\Microsoft.Plugin.Folder.UnitTests.csproj", "{4FA206A5-F69F-4193-BF8F-F6EEB496734C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTest-ColorPickerUI", "src\modules\colorPicker\UnitTest-ColorPickerUI\UnitTest-ColorPickerUI.csproj", "{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logging", "src\logging\logging.vcxproj", "{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.ActiveCfg = Debug|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.Build.0 = Debug|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.ActiveCfg = Release|x64
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.Build.0 = Release|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.ActiveCfg = Debug|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.Build.0 = Debug|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.ActiveCfg = Release|x64
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.Build.0 = Release|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.ActiveCfg = Debug|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.Build.0 = Debug|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.ActiveCfg = Release|x64
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.Build.0 = Release|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.ActiveCfg = Debug|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.Build.0 = Debug|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.ActiveCfg = Release|x64
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.Build.0 = Release|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.ActiveCfg = Debug|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.Build.0 = Debug|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.ActiveCfg = Release|x64
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.Build.0 = Release|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.ActiveCfg = Debug|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.Build.0 = Debug|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.ActiveCfg = Release|x64
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.Build.0 = Release|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.ActiveCfg = Debug|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.Build.0 = Debug|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.ActiveCfg = Release|x64
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.Build.0 = Release|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.ActiveCfg = Debug|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.Build.0 = Debug|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.ActiveCfg = Release|x64
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.Build.0 = Release|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.ActiveCfg = Debug|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.Build.0 = Debug|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.ActiveCfg = Release|x64
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.Build.0 = Release|x64
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.ActiveCfg = Debug|x64
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.Build.0 = Debug|x64
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.ActiveCfg = Release|x64
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.Build.0 = Release|x64
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.ActiveCfg = Debug|x64
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.Build.0 = Debug|x64
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.ActiveCfg = Release|x64
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.Build.0 = Release|x64
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.ActiveCfg = Debug|x64
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.Build.0 = Debug|x64
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.ActiveCfg = Release|x64
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.Build.0 = Release|x64
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.ActiveCfg = Debug|x64
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.Build.0 = Debug|x64
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.ActiveCfg = Release|x64
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.Build.0 = Release|x64
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.ActiveCfg = Debug|x64
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.Build.0 = Debug|x64
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.ActiveCfg = Release|x64
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.Build.0 = Release|x64
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.ActiveCfg = Debug|x64
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.Build.0 = Debug|x64
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.ActiveCfg = Release|x64
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.Build.0 = Release|x64
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.ActiveCfg = Debug|x64
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.Build.0 = Debug|x64
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.ActiveCfg = Release|x64
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.Build.0 = Release|x64
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.ActiveCfg = Debug|x64
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.Build.0 = Debug|x64
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.ActiveCfg = Release|x64
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.Build.0 = Release|x64
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.ActiveCfg = Debug|x64
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.Build.0 = Debug|x64
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.ActiveCfg = Release|x64
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.Build.0 = Release|x64
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9}.Debug|x64.ActiveCfg = Debug|x64
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9}.Debug|x64.Build.0 = Debug|x64
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9}.Release|x64.ActiveCfg = Release|x64
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9}.Release|x64.Build.0 = Release|x64
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Debug|x64.ActiveCfg = Debug|x64
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Debug|x64.Build.0 = Debug|x64
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Release|x64.ActiveCfg = Release|x64
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Release|x64.Build.0 = Release|x64
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Debug|x64.ActiveCfg = Debug|x64
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Debug|x64.Build.0 = Debug|x64
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Release|x64.ActiveCfg = Release|x64
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Release|x64.Build.0 = Release|x64
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Debug|x64.ActiveCfg = Debug|x64
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Debug|x64.Build.0 = Debug|x64
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Release|x64.ActiveCfg = Release|x64
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Release|x64.Build.0 = Release|x64
{EAF23649-EF6E-478B-980E-81FAD96CCA2A}.Debug|x64.ActiveCfg = Debug|x64
{EAF23649-EF6E-478B-980E-81FAD96CCA2A}.Debug|x64.Build.0 = Debug|x64
{EAF23649-EF6E-478B-980E-81FAD96CCA2A}.Release|x64.ActiveCfg = Release|x64
{EAF23649-EF6E-478B-980E-81FAD96CCA2A}.Release|x64.Build.0 = Release|x64
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.ActiveCfg = Debug|x64
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.Build.0 = Debug|x64
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.ActiveCfg = Release|x64
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.Build.0 = Release|x64
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.ActiveCfg = Debug|x64
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.Build.0 = Debug|x64
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.ActiveCfg = Release|x64
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.Build.0 = Release|x64
{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC}.Debug|x64.ActiveCfg = Debug|x64
{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC}.Debug|x64.Build.0 = Debug|x64
{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC}.Release|x64.ActiveCfg = Release|x64
{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC}.Release|x64.Build.0 = Release|x64
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.ActiveCfg = Debug|x64
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.Build.0 = Debug|x64
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.ActiveCfg = Release|x64
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.Build.0 = Release|x64
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.ActiveCfg = Debug|x64
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.Build.0 = Debug|x64
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.ActiveCfg = Release|x64
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.Build.0 = Release|x64
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.ActiveCfg = Debug|x64
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.Build.0 = Debug|x64
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.ActiveCfg = Release|x64
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.Build.0 = Release|x64
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.ActiveCfg = Debug|x64
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.Build.0 = Debug|x64
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.ActiveCfg = Release|x64
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.Build.0 = Release|x64
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.ActiveCfg = Debug|x64
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.Build.0 = Debug|x64
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.ActiveCfg = Release|x64
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.Build.0 = Release|x64
{74F1B9ED-F59C-4FE7-B473-7B453E30837E}.Debug|x64.ActiveCfg = Debug|x64
{74F1B9ED-F59C-4FE7-B473-7B453E30837E}.Debug|x64.Build.0 = Debug|x64
{74F1B9ED-F59C-4FE7-B473-7B453E30837E}.Release|x64.ActiveCfg = Release|x64
{74F1B9ED-F59C-4FE7-B473-7B453E30837E}.Release|x64.Build.0 = Release|x64
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.ActiveCfg = Debug|x64
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.Build.0 = Debug|x64
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.ActiveCfg = Release|x64
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.Build.0 = Release|x64
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.ActiveCfg = Debug|x64
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.Build.0 = Debug|x64
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.ActiveCfg = Release|x64
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.Build.0 = Release|x64
{F8B870EB-D5F5-45BA-9CF7-A5C459818820}.Debug|x64.ActiveCfg = Debug|x64
{F8B870EB-D5F5-45BA-9CF7-A5C459818820}.Debug|x64.Build.0 = Debug|x64
{F8B870EB-D5F5-45BA-9CF7-A5C459818820}.Release|x64.ActiveCfg = Release|x64
{F8B870EB-D5F5-45BA-9CF7-A5C459818820}.Release|x64.Build.0 = Release|x64
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.ActiveCfg = Debug|x64
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.Build.0 = Debug|x64
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.ActiveCfg = Release|x64
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.Build.0 = Release|x64
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2}.Debug|x64.ActiveCfg = Debug|x64
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2}.Debug|x64.Build.0 = Debug|x64
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2}.Release|x64.ActiveCfg = Release|x64
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2}.Release|x64.Build.0 = Release|x64
{880ED251-9E16-4713-9A70-D35FE0C01669}.Debug|x64.ActiveCfg = Debug|x64
{880ED251-9E16-4713-9A70-D35FE0C01669}.Debug|x64.Build.0 = Debug|x64
{880ED251-9E16-4713-9A70-D35FE0C01669}.Release|x64.ActiveCfg = Release|x64
{880ED251-9E16-4713-9A70-D35FE0C01669}.Release|x64.Build.0 = Release|x64
{AF2349B8-E5B6-4004-9502-687C1C7730B1}.Debug|x64.ActiveCfg = Debug|x64
{AF2349B8-E5B6-4004-9502-687C1C7730B1}.Debug|x64.Build.0 = Debug|x64
{AF2349B8-E5B6-4004-9502-687C1C7730B1}.Release|x64.ActiveCfg = Release|x64
{AF2349B8-E5B6-4004-9502-687C1C7730B1}.Release|x64.Build.0 = Release|x64
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}.Debug|x64.ActiveCfg = Debug|x64
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}.Debug|x64.Build.0 = Debug|x64
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}.Release|x64.ActiveCfg = Release|x64
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB}.Release|x64.Build.0 = Release|x64
{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A}.Debug|x64.ActiveCfg = Debug|x64
{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A}.Debug|x64.Build.0 = Debug|x64
{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A}.Release|x64.ActiveCfg = Release|x64
{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A}.Release|x64.Build.0 = Release|x64
{DA425894-6E13-404F-8DCB-78584EC0557A}.Debug|x64.ActiveCfg = Debug|x64
{DA425894-6E13-404F-8DCB-78584EC0557A}.Debug|x64.Build.0 = Debug|x64
{DA425894-6E13-404F-8DCB-78584EC0557A}.Release|x64.ActiveCfg = Release|x64
{DA425894-6E13-404F-8DCB-78584EC0557A}.Release|x64.Build.0 = Release|x64
{060D75DA-2D1C-48E6-A4A1-6F0718B64661}.Debug|x64.ActiveCfg = Debug|x64
{060D75DA-2D1C-48E6-A4A1-6F0718B64661}.Debug|x64.Build.0 = Debug|x64
{060D75DA-2D1C-48E6-A4A1-6F0718B64661}.Release|x64.ActiveCfg = Release|x64
{060D75DA-2D1C-48E6-A4A1-6F0718B64661}.Release|x64.Build.0 = Release|x64
{748417CA-F17E-487F-9411-CAFB6D3F4877}.Debug|x64.ActiveCfg = Debug|x64
{748417CA-F17E-487F-9411-CAFB6D3F4877}.Debug|x64.Build.0 = Debug|x64
{748417CA-F17E-487F-9411-CAFB6D3F4877}.Release|x64.ActiveCfg = Release|x64
{748417CA-F17E-487F-9411-CAFB6D3F4877}.Release|x64.Build.0 = Release|x64
{217DF501-135C-4E38-BFC8-99D4821032EA}.Debug|x64.ActiveCfg = Debug|x64
{217DF501-135C-4E38-BFC8-99D4821032EA}.Debug|x64.Build.0 = Debug|x64
{217DF501-135C-4E38-BFC8-99D4821032EA}.Release|x64.ActiveCfg = Release|x64
{217DF501-135C-4E38-BFC8-99D4821032EA}.Release|x64.Build.0 = Release|x64
{47310AB4-9034-4BD1-8D8B-E88AD21A171B}.Debug|x64.ActiveCfg = Debug|x64
{47310AB4-9034-4BD1-8D8B-E88AD21A171B}.Debug|x64.Build.0 = Debug|x64
{47310AB4-9034-4BD1-8D8B-E88AD21A171B}.Release|x64.ActiveCfg = Release|x64
{47310AB4-9034-4BD1-8D8B-E88AD21A171B}.Release|x64.Build.0 = Release|x64
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}.Debug|x64.ActiveCfg = Debug|x64
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}.Debug|x64.Build.0 = Debug|x64
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}.Release|x64.ActiveCfg = Release|x64
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F}.Release|x64.Build.0 = Release|x64
{A7D5099E-F0FD-4BF3-8522-5A682759F915}.Debug|x64.ActiveCfg = Debug|x64
{A7D5099E-F0FD-4BF3-8522-5A682759F915}.Debug|x64.Build.0 = Debug|x64
{A7D5099E-F0FD-4BF3-8522-5A682759F915}.Release|x64.ActiveCfg = Release|x64
{A7D5099E-F0FD-4BF3-8522-5A682759F915}.Release|x64.Build.0 = Release|x64
{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A}.Debug|x64.ActiveCfg = Debug|x64
{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A}.Debug|x64.Build.0 = Debug|x64
{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A}.Release|x64.ActiveCfg = Release|x64
{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A}.Release|x64.Build.0 = Release|x64
{F055103B-F80B-4D0C-BF48-057C55620033}.Debug|x64.ActiveCfg = Debug|x64
{F055103B-F80B-4D0C-BF48-057C55620033}.Debug|x64.Build.0 = Debug|x64
{F055103B-F80B-4D0C-BF48-057C55620033}.Release|x64.ActiveCfg = Release|x64
{F055103B-F80B-4D0C-BF48-057C55620033}.Release|x64.Build.0 = Release|x64
{985B3F2F-CEED-4C0A-A249-69257E719145}.Debug|x64.ActiveCfg = Debug|x64
{985B3F2F-CEED-4C0A-A249-69257E719145}.Debug|x64.Build.0 = Debug|x64
{985B3F2F-CEED-4C0A-A249-69257E719145}.Release|x64.ActiveCfg = Release|x64
{985B3F2F-CEED-4C0A-A249-69257E719145}.Release|x64.Build.0 = Release|x64
{437AD818-3F1F-4CA5-A79B-25233A157026}.Debug|x64.ActiveCfg = Debug|x64
{437AD818-3F1F-4CA5-A79B-25233A157026}.Debug|x64.Build.0 = Debug|x64
{437AD818-3F1F-4CA5-A79B-25233A157026}.Release|x64.ActiveCfg = Release|x64
{437AD818-3F1F-4CA5-A79B-25233A157026}.Release|x64.Build.0 = Release|x64
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.ActiveCfg = Debug|x64
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.Build.0 = Debug|x64
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.ActiveCfg = Release|x64
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.Build.0 = Release|x64
{08C8C05F-0362-41BC-818C-724572DF8B06}.Debug|x64.ActiveCfg = Debug|x64
{08C8C05F-0362-41BC-818C-724572DF8B06}.Debug|x64.Build.0 = Debug|x64
{08C8C05F-0362-41BC-818C-724572DF8B06}.Release|x64.ActiveCfg = Release|x64
{08C8C05F-0362-41BC-818C-724572DF8B06}.Release|x64.Build.0 = Release|x64
{5D00D290-4016-4CFE-9E41-1E7C724509BA}.Debug|x64.ActiveCfg = Debug|x64
{5D00D290-4016-4CFE-9E41-1E7C724509BA}.Debug|x64.Build.0 = Debug|x64
{5D00D290-4016-4CFE-9E41-1E7C724509BA}.Release|x64.ActiveCfg = Release|x64
{5D00D290-4016-4CFE-9E41-1E7C724509BA}.Release|x64.Build.0 = Release|x64
{62173D9A-6724-4C00-A1C8-FB646480A9EC}.Debug|x64.ActiveCfg = Debug|x64
{62173D9A-6724-4C00-A1C8-FB646480A9EC}.Debug|x64.Build.0 = Debug|x64
{62173D9A-6724-4C00-A1C8-FB646480A9EC}.Release|x64.ActiveCfg = Release|x64
{62173D9A-6724-4C00-A1C8-FB646480A9EC}.Release|x64.Build.0 = Release|x64
{4AED67B6-55FD-486F-B917-E543DEE2CB3C}.Debug|x64.ActiveCfg = Debug|x64
{4AED67B6-55FD-486F-B917-E543DEE2CB3C}.Debug|x64.Build.0 = Debug|x64
{4AED67B6-55FD-486F-B917-E543DEE2CB3C}.Release|x64.ActiveCfg = Release|x64
{4AED67B6-55FD-486F-B917-E543DEE2CB3C}.Release|x64.Build.0 = Release|x64
{42851751-CBC8-45A6-97F5-7A0753F7B4D1}.Debug|x64.ActiveCfg = Debug|x64
{42851751-CBC8-45A6-97F5-7A0753F7B4D1}.Debug|x64.Build.0 = Debug|x64
{42851751-CBC8-45A6-97F5-7A0753F7B4D1}.Release|x64.ActiveCfg = Release|x64
{42851751-CBC8-45A6-97F5-7A0753F7B4D1}.Release|x64.Build.0 = Release|x64
{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E}.Debug|x64.ActiveCfg = Debug|x64
{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E}.Debug|x64.Build.0 = Debug|x64
{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E}.Release|x64.ActiveCfg = Release|x64
{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E}.Release|x64.Build.0 = Release|x64
{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD}.Debug|x64.ActiveCfg = Debug|x64
{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD}.Debug|x64.Build.0 = Debug|x64
{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD}.Release|x64.ActiveCfg = Release|x64
{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD}.Release|x64.Build.0 = Release|x64
{655C9AF2-18D3-4DA6-80E4-85504A7722BA}.Debug|x64.ActiveCfg = Debug|x64
{655C9AF2-18D3-4DA6-80E4-85504A7722BA}.Debug|x64.Build.0 = Debug|x64
{655C9AF2-18D3-4DA6-80E4-85504A7722BA}.Release|x64.ActiveCfg = Release|x64
{655C9AF2-18D3-4DA6-80E4-85504A7722BA}.Release|x64.Build.0 = Release|x64
{BA58206B-1493-4C75-BFEA-A85768A1E156}.Debug|x64.ActiveCfg = Debug|x64
{BA58206B-1493-4C75-BFEA-A85768A1E156}.Debug|x64.Build.0 = Debug|x64
{BA58206B-1493-4C75-BFEA-A85768A1E156}.Release|x64.ActiveCfg = Release|x64
{BA58206B-1493-4C75-BFEA-A85768A1E156}.Release|x64.Build.0 = Release|x64
{03276A39-D4E9-417C-8FFD-200B0EE5E871}.Debug|x64.ActiveCfg = Debug|x64
{03276A39-D4E9-417C-8FFD-200B0EE5E871}.Debug|x64.Build.0 = Debug|x64
{03276A39-D4E9-417C-8FFD-200B0EE5E871}.Release|x64.ActiveCfg = Release|x64
{03276A39-D4E9-417C-8FFD-200B0EE5E871}.Release|x64.Build.0 = Release|x64
{B81FB7B6-D30E-428F-908A-41422EFC1172}.Debug|x64.ActiveCfg = Debug|x64
{B81FB7B6-D30E-428F-908A-41422EFC1172}.Debug|x64.Build.0 = Debug|x64
{B81FB7B6-D30E-428F-908A-41422EFC1172}.Release|x64.ActiveCfg = Release|x64
{B81FB7B6-D30E-428F-908A-41422EFC1172}.Release|x64.Build.0 = Release|x64
{0F85E674-34AE-443D-954C-8321EB8B93B1}.Debug|x64.ActiveCfg = Debug|x64
{0F85E674-34AE-443D-954C-8321EB8B93B1}.Debug|x64.Build.0 = Debug|x64
{0F85E674-34AE-443D-954C-8321EB8B93B1}.Release|x64.ActiveCfg = Release|x64
{0F85E674-34AE-443D-954C-8321EB8B93B1}.Release|x64.Build.0 = Release|x64
{632BBE62-5421-49EA-835A-7FFA4F499BD6}.Debug|x64.ActiveCfg = Debug|x64
{632BBE62-5421-49EA-835A-7FFA4F499BD6}.Debug|x64.Build.0 = Debug|x64
{632BBE62-5421-49EA-835A-7FFA4F499BD6}.Release|x64.ActiveCfg = Release|x64
{632BBE62-5421-49EA-835A-7FFA4F499BD6}.Release|x64.Build.0 = Release|x64
{4FA206A5-F69F-4193-BF8F-F6EEB496734C}.Debug|x64.ActiveCfg = Debug|x64
{4FA206A5-F69F-4193-BF8F-F6EEB496734C}.Debug|x64.Build.0 = Debug|x64
{4FA206A5-F69F-4193-BF8F-F6EEB496734C}.Release|x64.ActiveCfg = Release|x64
{4FA206A5-F69F-4193-BF8F-F6EEB496734C}.Release|x64.Build.0 = Release|x64
{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1}.Debug|x64.ActiveCfg = Debug|x64
{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1}.Debug|x64.Build.0 = Debug|x64
{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1}.Release|x64.ActiveCfg = Release|x64
{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1}.Release|x64.Build.0 = Release|x64
{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F}.Debug|x64.ActiveCfg = Debug|x64
{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F}.Debug|x64.Build.0 = Debug|x64
{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F}.Release|x64.ActiveCfg = Release|x64
{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{74485049-C722-400F-ABE5-86AC52D929B3} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{3BB8493E-D18E-4485-A320-CB40F90F55AE} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{48804216-2A0E-4168-A6D8-9CD068D14227} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{1A066C63-64B3-45F8-92FE-664E1CCE8077} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD}
{89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{B25AC7A5-FB9F-4789-B392-D5C85E948670} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{51920F1F-C28C-4ADF-8660-4238766796C2} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{0E072714-D127-460B-AFAD-B4C40B412798} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{2151F984-E006-4A9F-92EF-C6DDE3DC8413} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{64A80062-4D8B-4229-8A38-DFA1D7497749} = {BEEAB7F2-FFF6-45AB-9CDB-B04CC0734B88}
{0485F45C-EA7A-4BB5-804B-3E8D14699387} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
{0B593A6C-4143-4337-860E-DB5710FB87DB} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{89F34AF7-1C34-4A72-AA6E-534BCF972BD9} = {38BDB927-829B-4C65-9CD9-93FB05D66D65}
{6C7F47CC-2151-44A3-A546-41C70025132C} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34} = {6C7F47CC-2151-44A3-A546-41C70025132C}
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B} = {6C7F47CC-2151-44A3-A546-41C70025132C}
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8} = {6C7F47CC-2151-44A3-A546-41C70025132C}
{EAF23649-EF6E-478B-980E-81FAD96CCA2A} = {38BDB927-829B-4C65-9CD9-93FB05D66D65}
{17DA04DF-E393-4397-9CF0-84DABE11032E} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{38BDB927-829B-4C65-9CD9-93FB05D66D65} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{8AFFA899-0B73-49EC-8C50-0FADDA57B2FC} = {38BDB927-829B-4C65-9CD9-93FB05D66D65}
{C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{FF742965-9A80-41A5-B042-D6C7D3A21708} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{4AFC9975-2456-4C70-94A4-84073C1CED93} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{59BD9891-3837-438A-958D-ADC7F91F6F7E} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{74F1B9ED-F59C-4FE7-B473-7B453E30837E} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{FDB3555B-58EF-4AE6-B5F1-904719637AB4} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{F8B870EB-D5F5-45BA-9CF7-A5C459818820} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{E364F67B-BB12-4E91-B639-355866EBCD8B} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{F97E5003-F263-4D4A-A964-0F1F3C82DEF2} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{880ED251-9E16-4713-9A70-D35FE0C01669} = {E775CC2C-24CB-48D6-9C3A-BE4CCE0DB17A}
{2F305555-C296-497E-AC20-5FA1B237996A} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{AF2349B8-E5B6-4004-9502-687C1C7730B1} = {2F305555-C296-497E-AC20-5FA1B237996A}
{6A71162E-FC4C-4A2C-B90F-3CF94F59A9BB} = {2F305555-C296-497E-AC20-5FA1B237996A}
{A2B51B8B-8F90-424E-BC97-F9AB7D76CA1A} = {2F305555-C296-497E-AC20-5FA1B237996A}
{DA425894-6E13-404F-8DCB-78584EC0557A} = {2F305555-C296-497E-AC20-5FA1B237996A}
{060D75DA-2D1C-48E6-A4A1-6F0718B64661} = {2F305555-C296-497E-AC20-5FA1B237996A}
{748417CA-F17E-487F-9411-CAFB6D3F4877} = {2F305555-C296-497E-AC20-5FA1B237996A}
{217DF501-135C-4E38-BFC8-99D4821032EA} = {2F305555-C296-497E-AC20-5FA1B237996A}
{47310AB4-9034-4BD1-8D8B-E88AD21A171B} = {2F305555-C296-497E-AC20-5FA1B237996A}
{E4E0D2AE-B17D-4BD4-8BEE-AFC8CC464C5F} = {C3081D9A-1586-441A-B5F4-ED815B3719C1}
{A7D5099E-F0FD-4BF3-8522-5A682759F915} = {C3081D9A-1586-441A-B5F4-ED815B3719C1}
{B1BCC8C6-46B5-4BFA-8F22-20F32D99EC6A} = {C3081D9A-1586-441A-B5F4-ED815B3719C1}
{F055103B-F80B-4D0C-BF48-057C55620033} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{985B3F2F-CEED-4C0A-A249-69257E719145} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{437AD818-3F1F-4CA5-A79B-25233A157026} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{08C8C05F-0362-41BC-818C-724572DF8B06} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
{5D00D290-4016-4CFE-9E41-1E7C724509BA} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{62173D9A-6724-4C00-A1C8-FB646480A9EC} = {38BDB927-829B-4C65-9CD9-93FB05D66D65}
{4AED67B6-55FD-486F-B917-E543DEE2CB3C} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{42851751-CBC8-45A6-97F5-7A0753F7B4D1} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{1EF1EEF0-10F0-4F2E-8550-39B6D8044D3E} = {2F305555-C296-497E-AC20-5FA1B237996A}
{8FFE09DA-FA4F-4EE1-B3A2-AD5497FBD1AD} = {2F305555-C296-497E-AC20-5FA1B237996A}
{655C9AF2-18D3-4DA6-80E4-85504A7722BA} = {1D78B84B-CA39-406C-98F4-71F7EC266CC0}
{BA58206B-1493-4C75-BFEA-A85768A1E156} = {1D78B84B-CA39-406C-98F4-71F7EC266CC0}
{1D78B84B-CA39-406C-98F4-71F7EC266CC0} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{03276A39-D4E9-417C-8FFD-200B0EE5E871} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{B81FB7B6-D30E-428F-908A-41422EFC1172} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{0F85E674-34AE-443D-954C-8321EB8B93B1} = {C3081D9A-1586-441A-B5F4-ED815B3719C1}
{632BBE62-5421-49EA-835A-7FFA4F499BD6} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{4FA206A5-F69F-4193-BF8F-F6EEB496734C} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
{090CD7B7-3B0C-4D1D-BC98-83EB5D799BC1} = {1D78B84B-CA39-406C-98F4-71F7EC266CC0}
{7E1E3F13-2BD6-3F75-A6A7-873A2B55C60F} = {1AFB6476-670D-4E80-A464-657E01DFF482}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}
EndGlobalSection
EndGlobal

285
README.md
View File

@@ -1,107 +1,248 @@
# Overview
PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity.
<img src="./doc/images/overview/PT%20hero%20image.png"/>
Inspired by the [Windows 95 era PowerToys project](https://en.wikipedia.org/wiki/Microsoft_PowerToys), this reboot provides power users with ways to squeeze more efficiency out of the Windows 10 shell and customize it for individual workflows. A great overview of the Windows 95 PowerToys can be found [here](https://socket3.wordpress.com/2016/10/22/using-windows-95-powertoys/).
Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. Inspired by the [Windows 95 era PowerToys project](https://en.wikipedia.org/wiki/Microsoft_PowerToys), this reboot provides power users with ways to squeeze more efficiency out of the Windows 10 shell and customize it for individual workflows. A great overview of the Windows 95 PowerToys can be found [here](https://socket3.wordpress.com/2016/10/22/using-windows-95-powertoys/).
The first preview of these utilities can be installed from [here](https://github.com/Microsoft/powertoys/releases).
For a video overview of PowerToys, including install steps and a walkthrough of the available utilities, check out the [PowerToys: Utilities to customize Windows 10](https://www.youtube.com/watch?v=F-d7KiwpnMA) episode of Tabs vs Spaces on YouTube.
![logo](doc/images/Logo.jpg)
[Downloading & Release notes][github-release-link] | [What's Happening](#whats-happening) | [Contributing to PowerToys](#contributing) | [Known issues](#known-issues)
# What's Happening
## Build status
## September Update
The first preview release of the PowerToys utilities and source code is now live! This release includes two preview quality utilities as well as the tools and docs to make it easy to create new PowerToys utilities.
| Branch | Status x64 |
|---|---|
| Master | [![Build Status for Master](https://dev.azure.com/ms/PowerToys/_apis/build/status/microsoft.PowerToys?branchName=master)](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=master) |
| Stable | [![Build Status for Stable](https://dev.azure.com/ms/PowerToys/_apis/build/status/microsoft.PowerToys?branchName=stable)](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=stable) |
| Installer | [![Build Status for Installer](https://github-private.visualstudio.com/microsoft/_apis/build/status/CDPX/powertoys/powertoys-Windows-Official-master-Test?branchName=master)](https://github-private.visualstudio.com/microsoft/_build/latest?definitionId=61&branchName=master) |
1. [FancyZones](/src/modules/fancyzones/) - FancyZones is a window manager that makes it easy to create copmlex window layouts and quickly position windows into those layouts. The FancyZones backlog can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/FancyZonesBacklog.md)
## Current PowerToy Utilities
![FancyZones](src/modules/fancyzones/FancyZones.png)
### Color Picker
FanzyZones Video Tutorial
[![FancyZones Video Tutorial](doc/images/FZTutorial.jpg)](https://www.youtube.com/watch?v=rTtGzZYAXgY)
[<img align="left" src="https://aka.ms/powerToysColorPickerImageSmall" />](https://aka.ms/PowerToysOverview_ColorPicker) [ColorPicker](https://aka.ms/PowerToysOverview_ColorPicker) is a simple and quick system-wide color picker with <kbd>Win</kbd>+<kbd>Shift</kbd>+<kbd>C</kbd>. Color Picker allows to pick colors from any currently running application and automatically copies the HEX or RGB values to your clipboard. This code is based on [Martin Chrzan's Color Picker](https://github.com/martinchrzan/ColorPicker).
<br/>
<br/>
<br/>
2. [Windows key shortcut guide](/src/modules/shortcut_guide) - The shortcut guide appears when a user holds the Windows key down for more than one second and shows the available shortcuts for the current state of the desktop. The shortcut guide backlog can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/ShortcutGuideBacklog.md)
### FancyZones
![Windows key shortcut guide](doc/images/WindowsKeyShortcutGuide.jpg)
[<img align="left" src="https://aka.ms/powerToysFancyZoneImageSmall" />](https://aka.ms/PowerToysOverview_FancyZones) [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) is a window manager that makes it easy to create complex window layouts and quickly position windows into those layouts.
<br/>
<br/>
<br/>
<br/>
<br/>
Additional utilities in the pipeline are:
### File Explorer Add-ons
* Maximize to new desktop widget - The MTND widget shows a pop-up button when a user hovers over the maximize / restore button on any window. Clicking it creates a new desktop, sends the app to that desktop and maximizes the app on the new desktop.
* [Process terminate tool](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/Terminate%20Spec.md)
* [Batch file renamer](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/File%20Classification%20Spec.md)
* [Animated gif screen recorder](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/GIF%20Maker%20Spec.md)
[<img align="left" src="https://aka.ms/powerToysPowerPreviewImageSmall" />](https://aka.ms/PowerToysOverview_FileExplorerAddOns) [File Explorer](https://aka.ms/PowerToysOverview_FileExplorerAddOns) add-ons will enable SVG icon rendering and Preview Pane additions for File Explorer.
# Backlog
Preview Pane is an existing feature in the File Explorer. To enable it, you just click the View tab in the ribbon and then click "Preview Pane". PowerToys will now enable two types of files to be previewed: Markdown (.md) & SVG (.svg)
<br/>
<br/>
The full backlog of utilities can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/PowerToysBacklog.md)
### Image Resizer
# Where to download PowerToys
[<img align="left" src="https://aka.ms/powerToysImageResizerImageSmall" />](https://aka.ms/PowerToysOverview_ImageResizer) [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) is a Windows Shell Extension for quickly resizing images. With a simple right click from File Explorer, resize one or many images instantly. This code is based on [Brice Lambson's Image Resizer](https://github.com/bricelam/ImageResizer).
<br/>
<br/>
<br/>
<br/>
The latest release of PowerToys can be downloaded from https://github.com/microsoft/PowerToys/releases <br />
Click on `Assets` to show the files available in the release and then click on `PowerToysSetup.msi` to download the PowerToys installer. <br />
PDB symbols for the release are available in a separate zip file `PDB symbols.zip`.
### Keyboard Manager
# Developer Guidance
[<img align="left" src="https://aka.ms/powerToysKBMImageSmall" />](https://aka.ms/PowerToysOverview_KeyboardManager) [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) allows you to customize the keyboard to be more productive by remapping keys and creating your own keyboard shortcuts. This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
<br/>
## Build Prerequisites
* Windows 10 1803 (build 10.0.17134.0) or above in order to build and run PowerToys.
* Visual Studio 2019 Community edition or higher, with the 'Desktop Development with C++' component and the Windows 10 SDK version 10.0.18362.0 or higher.
## Building the Code
* Open `powertoys.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
* The PowerToys binaries will be located in your repo under `x64\Release`.
* If you want to copy the `PowerToys.exe` binary to a different location, you'll also need to copy the `modules` and the `svgs` folders.
### PowerRename
## Prerequisites to Build the Installer
* Install the [WiX Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=RobMensching.WiXToolset).
* Install the [WiX Toolset build tools](https://wixtoolset.org/releases/).
## Building the .msi Installer
* From the `installer` folder open `PowerToysSetup.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
* The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
[<img align="left" src="https://aka.ms/powerToysPowerRenameImageSmall" />](https://aka.ms/PowerToysOverview_PowerRename) [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) is a Windows Shell Extension for advanced bulk renaming using search and replace or regular expressions. PowerRename allows simple search and replace or more advanced regular expression matching. While you type in the search and replace input fields, the preview area will show what the items will be renamed to. PowerRename then calls into the Windows Explorer file operations engine to perform the rename. This has the benefit of allowing the rename operation to be undone after PowerRename exits. This code is based on [Chris Davis's SmartRename](https://github.com/chrdavis/SmartRename).
<br/>
## Debugging
The following configuration issue only applies if the user is a member of the Administrators group.
Some PowerToys modules require to run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required in order to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations:
- the `FancyZones` module will be not be able to move an elevated window to a zone.
- the `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application.
In order to run and debug PowerToys from Visual Studio when the user is a member of the Administrators group, Visual Studio has to be started with elevated privileges. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the `runner` project properties and navigate to the `Linker -> Manifest File` settings, edit the `UAC Execution Level` property and change it from `highestAvailable (/level='highestAvailable')` to `asInvoker (/level='asInvoker')`, save the changes.
## How to create new PowerToys
### PowerToys Run
See the instructions on [how to install the PowerToys Module project template](tools/project_template). <br />
Specifications for the [PowerToys settings API](doc/specs/PowerToys-settings.md).
[<img align="left" src="https://aka.ms/powerToysPowerLauncherImageSmall" />](https://aka.ms/PowerToysOverview_PowerToysRun) [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) is a new toy in PowerToys that can help you search and launch your app instantly with a simple <kbd>Alt</kbd>+<kbd>Space</kbd> and start typing! It is open source and modular for additional plugins. Window Walker is now inside too! This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
## Coding Guidance
### Shortcut Guide
Please review these brief docs below relating to our coding standards etc.
[<img align="left" src="https://aka.ms/powerToysShortcutGuideImageSmall" />](https://aka.ms/PowerToysOverview_ShortcutGuide) [Windows key shortcut guide](https://aka.ms/PowerToysOverview_ShortcutGuide) appears when a user holds the Windows key down for more than one second and shows the available shortcuts for the current state of the desktop.
<br/>
<br/>
<br/>
<br/>
> 👉 If you find something missing from these docs, feel free to contribute to any of our documentation files anywhere in the repository (or make some new ones\!)
### Video Conference Mute (Experimental)
This is a work in progress as we learn what we'll need to provide people in order to be effective contributors to our project.
- [Coding Style](doc/coding/style.md)
- [Code Organization](doc/coding/organization.md)
[<img align="left" src="https://aka.ms/powerToysVideoConferenceImageSmall" />](https://aka.ms/PowerToysOverview_VideoConference) [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) is a quick and easy way to do a global "mute" of both your microphone and webcam via <kbd>Win</kbd>+<kbd>N</kbd>. Just set your webcam in the target application to the PowerToys VideoConference camera.
# Contributing
This project welcomes contributions and suggestions and we are excited to work with the power user community to build a set of tools for helping you get the most our of Windows.
**Note:** This is only included in the [pre-release experimental version of PowerToys installer][github-prerelease-link]. This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](contributing.md). We will be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
## Installing and running Microsoft PowerToys
> ⚠ **Note**: PowerToys is still a nascent project and the team is actively working out of this repository. We will be periodically re-structuring the code to make it easier to comprehend, navigate, build, test, and contribute to, so **DO expect significant changes to code layout on a regular basis**.
#### Requirements
- Windows 10 1803 (build 17134) or later.
- Have [.NET Core 3.1 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-desktop-3.1.4-windows-x64-installer). The installer should handle this but we want to directly make people aware.
> ⚠ **License Info**: Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
#### 0.18 users for updating via notifications
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.
- We adjusted how upgrading works in 0.20. In 0.19 we accounted for this upcoming change but if you are going from 0.18 to 0.21, please directly use the installer file.
# Code of Conduct
### Via GitHub with EXE [Recommended]
This project has adopted the [Microsoft Open Source Code of Conduct][conduct-code]. <br />
For more information see the [Code of Conduct FAQ][conduct-FAQ] or contact [opencode@microsoft.com][conduct-email] with any additional questions or comments.
Install from the [Microsoft PowerToys GitHub releases page][github-release-link]. Click on `Assets` to show the files available in the release and then click on `PowerToysSetup-0.23.2-x64.exe` to download the PowerToys installer.
[conduct-code]: https://opensource.microsoft.com/codeofconduct/
[conduct-FAQ]: https://opensource.microsoft.com/codeofconduct/faq/
[conduct-email]: mailto:opencode@microsoft.com
This is our preferred method.
### Via WinGet (Preview)
Download PowerToys from [WinGet](https://github.com/microsoft/winget-cli/releases). To install PowerToys, run the following command from the command line / PowerShell:
```powershell
WinGet install powertoys
```
### Experiential PowerToys utility with Video conference muting
Install the [pre-release experimental version of PowerToys][github-prerelease-link] to try out this version. It includes all improvements from 0.23 in addition to the Video conference utility. Click on `Assets` to show the files available in the release and then download the .exe installer.
### Other install methods
There are [community driven install methods](./doc/unofficalInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, this will have the install instructions.
### Known issues
- Color Picker at times won't work when PT is running elevated - [#5348](https://github.com/microsoft/PowerToys/issues/5348). We are currently working on a fix now for this.
### Processor support
We currently support the matrix below.
| x64 | x86 | ARM |
|:---:|:---:|:---:|
| [Supported][github-release-link] | [Issue #602](https://github.com/microsoft/PowerToys/issues/602) | [Issue #490](https://github.com/microsoft/PowerToys/issues/490) |
## What's Happening
### September 2020 Update
Our goals for 0.23 release cycle was to focus on stability, accessibility, localization and quality of life improvements for both the development team and our end users. We have a full accessibility pass being done starting end of September to audit all of PowerToys. Our localization efforts now had data flowing both directions as well.
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
#### Highlights from September
- We shipped [v0.23][github-release-link]! (0.24 Experimental build coming shortly)
**General**
- Localization pipeline is flowing from our Github to the loc system and back. 0.25 should be localized now.
- The EXE installer should be at parity now with the MSI. Please go to the wiki for [installer args](https://github.com/microsoft/PowerToys/wiki/Installer-arguments-for-exe)
**FancyZones**
- Fixed bug on not seeing a newly attached screen
- Fixed spanning across monitors bug
- Added in default layout for new users, a Priority Grid
- Added keyboard support to grow / shrink to multiple zones
- General bug fixes
**PT Run**
- Multiple crash bugs fixed. Prioritized any users reported along with top hits from Watson reporting
- Stopped PT Run from interfering with an install
- Fixed folder bug if it had a # in it (Thanks @jjw24 for the PR!)
- Fixed a screen flicker for
- General bug fixes
- Allow Command Line args in PowerToys Run (Thanks @@royvou)
**Keyboard manager**
- Multiple crash bugs fixed. Prioritized any users reported along with top hits from Watson reporting
- Fixed multiple accessibility issues.
- General bug fixes
**Preview Pane**
- Added in Frontmatter and better (but still basic) latex support.
**Settings**
- Fixed scaling issue for responsive design on Image Resizer
- Fixed crash on empty color value.
- Fixed crash for toggling FancyZones on/off
- Fixed 0x00 NFTS crash for settings
- Fixed multiple accessibility issues.
- Layout adjustments (Thanks @niels9001)
- General bug fixes
**Dev related**
- FxCop is being rolled out across all PowerToys. This should catch a lot of possible leaks.
- Unified PT Run's log system
- PT Run's calc plugin now has unit tests (Thanks @P-Storm)
- Dev setup install script now supports VS preview (Thanks @TobiasSekan)
- @CaelestisZ, @kameshkotwani, @adriancampos, @RahulDas782 for doc tweaks
- Thanks @Aaron-Junker, @jay-o-way and @htcfreek for helping triage!
- Thanks for everyone that filled an issue. It really does help us prioritize
#### Video / GIF capture functional spec for public review
Deondre Davis created our [functional spec for creating a light weight, video / GIF recording tool](https://github.com/microsoft/PowerToys/pull/6900). We encourage everyone to review it and please leave comments in the pull request so we can adjust as needed. We'll be closing it for feedback on October 12th, 2020.
This is for work [post-stabilization of current roadmap work](https://github.com/microsoft/PowerToys/wiki/Roadmap#post-stabilization) and is only the spec for what we are thinking about support. Just want to set expectations here.
### What is being planned for 0.25
For [0.25](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F13), we are proactively working on:
- Stability
- Localization
- Improve interactions with elevated windows and keeping most of the PT utilities non-elevated so we still have a 'shell' like experience
- OOBE work
### PowerToys roadmap
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
## Developer Guidance
Please read the [developer docs](/doc/devdocs) for a detailed breakdown.
## Contributing
This project welcomes contributions of all types. Help spec'ing, design, documentation, finding bugs are ways everyone can help on top of coding features / bug fixes. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We will be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
### ⚠ State of code ⚠
PowerToys is still a very fluidic project and the team is actively working out of this repository. We will be periodically re-structuring/refactoring the code to make it easier to comprehend, navigate, build, test, and contribute to, so **DO expect significant changes to code layout on a regular basis**.
### License Info
Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you have the right to, and actually do, grant us the rights to use your contribution.
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
## Privacy Statement
The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has the trends from the telemetry. Please read the [Microsoft privacy statement][privacyLink] for more information.
[oss-CLA]: https://cla.opensource.microsoft.com
[oss-conduct-code]: CODE_OF_CONDUCT.md
[github-release-link]: https://github.com/microsoft/PowerToys/releases/
[github-prerelease-link]: https://github.com/microsoft/PowerToys/releases/tag/v0.24.0-Experimental
[roadmap]: https://github.com/microsoft/PowerToys/wiki/Roadmap
[privacyLink]: http://go.microsoft.com/fwlink/?LinkId=521839
[vidConfOverview]: https://aka.ms/PowerToysOverview_VideoConference

41
SECURITY.md Normal file
View File

@@ -0,0 +1,41 @@
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.2 BLOCK -->
## Security
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [many more](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [definition](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
<!-- END MICROSOFT SECURITY.MD BLOCK -->

18
SUPPORT.md Normal file
View File

@@ -0,0 +1,18 @@
# Support
## How to file issues and get help
This project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug] and [feature requests][gh-feature]. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or
feature request as a new Issue.
For help and questions about using this project, please look at our Wiki for using PowerToys and our [Contributor's Guide][contributor] if you want to work on PowerToys.
## Microsoft Support Policy
Support for PowerToys is limited to the resources listed above.
[gh-issue]: https://github.com/microsoft/PowerToys/issues/new/choose
[gh-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=Issue-Bug&template=bug_report.md&title=
[gh-feature]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=feature_request.md&title=
[wiki]: https://github.com/microsoft/PowerToys/wiki
[contributor]: https://github.com/microsoft/PowerToys/blob/master/CONTRIBUTING.md

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

View File

@@ -1,35 +0,0 @@
parameters:
additionalBuildArguments: ''
steps:
- checkout: self
submodules: true
clean: true
- task: NuGetToolInstaller@0
displayName: Ensure NuGet 4.8.1
inputs:
versionSpec: 4.8.1
- task: VisualStudioTestPlatformInstaller@1
displayName: Ensure VSTest Platform
- task: NuGetCommand@2
displayName: Restore NuGet packages
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: PowerToys.sln
restoreDirectory: '$(Build.SourcesDirectory)\packages'
- task: VSBuild@1
displayName: 'Build solution **\PowerToys.sln'
inputs:
solution: '**\PowerToys.sln'
vsVersion: 15.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: ${{ parameters.additionalBuildArguments }}
clean: true
maximumCpuCount: true

View File

@@ -1,12 +0,0 @@
# C++ Rest SDK - JSON library
This JSON library is taken from the C++ REST SDK in https://github.com/microsoft/cpprestsdk
Based in the [v2.10.13 release](https://github.com/microsoft/cpprestsdk/tree/v2.10.13/Release), it consists of the needed files to build and use the JSON classes described in `include/cpprest/json.h`.
Changes made to the files in order to build in the PowerToys project:
- Removal of `#include` references to files that are not needed.
- `#include "pch.h"` instead of `#include "stdafx.h"` to use the PowerToys pre-compiled header.
- `#define _NO_ASYNCRTIMP` in [`include/cpprest/details/cpprest_compat.h`](./include/cpprest/details/cpprest_compat.h) since this class will be statically linked.
The contents of the C++ Rest SDK license are included in [license.txt](./license.txt).

View File

@@ -1,697 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Various common utilities.
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include "cpprest/details/basic_types.h"
//#include "pplx/pplxtasks.h"
#include <chrono>
#include <cstdint>
#include <limits.h>
#include <locale.h>
#include <random>
#include <string>
#include <system_error>
#include <vector>
#ifndef _WIN32
#include <sys/time.h>
#if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269
/* Systems using glibc: xlocale.h has been removed from glibc 2.26
The above include of locale.h is sufficient
Further details: https://sourceware.org/git/?p=glibc.git;a=commit;h=f0be25b6336db7492e47d2e8e72eb8af53b5506d */
#include <xlocale.h>
#endif
#endif
/// Various utilities for string conversions and date and time manipulation.
namespace utility
{
// Left over from VS2010 support, remains to avoid breaking.
typedef std::chrono::seconds seconds;
/// Functions for converting to/from std::chrono::seconds to xml string.
namespace timespan
{
/// <summary>
/// Converts a timespan/interval in seconds to xml duration string as specified by
/// http://www.w3.org/TR/xmlschema-2/#duration
/// </summary>
_ASYNCRTIMP utility::string_t __cdecl seconds_to_xml_duration(utility::seconds numSecs);
/// <summary>
/// Converts an xml duration to timespan/interval in seconds
/// http://www.w3.org/TR/xmlschema-2/#duration
/// </summary>
_ASYNCRTIMP utility::seconds __cdecl xml_duration_to_seconds(const utility::string_t& timespanString);
} // namespace timespan
/// Functions for Unicode string conversions.
namespace conversions
{
/// <summary>
/// Converts a UTF-16 string to a UTF-8 string.
/// </summary>
/// <param name="w">A two byte character UTF-16 string.</param>
/// <returns>A single byte character UTF-8 string.</returns>
_ASYNCRTIMP std::string __cdecl utf16_to_utf8(const utf16string& w);
/// <summary>
/// Converts a UTF-8 string to a UTF-16
/// </summary>
/// <param name="s">A single byte character UTF-8 string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
_ASYNCRTIMP utf16string __cdecl utf8_to_utf16(const std::string& s);
/// <summary>
/// Converts a ASCII (us-ascii) string to a UTF-16 string.
/// </summary>
/// <param name="s">A single byte character us-ascii string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
_ASYNCRTIMP utf16string __cdecl usascii_to_utf16(const std::string& s);
/// <summary>
/// Converts a Latin1 (iso-8859-1) string to a UTF-16 string.
/// </summary>
/// <param name="s">A single byte character UTF-8 string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
_ASYNCRTIMP utf16string __cdecl latin1_to_utf16(const std::string& s);
/// <summary>
/// Converts a Latin1 (iso-8859-1) string to a UTF-8 string.
/// </summary>
/// <param name="s">A single byte character UTF-8 string.</param>
/// <returns>A single byte character UTF-8 string.</returns>
_ASYNCRTIMP utf8string __cdecl latin1_to_utf8(const std::string& s);
/// <summary>
/// Converts to a platform dependent Unicode string type.
/// </summary>
/// <param name="s">A single byte character UTF-8 string.</param>
/// <returns>A platform dependent string type.</returns>
#ifdef _UTF16_STRINGS
_ASYNCRTIMP utility::string_t __cdecl to_string_t(std::string&& s);
#else
inline utility::string_t&& to_string_t(std::string&& s) { return std::move(s); }
#endif
/// <summary>
/// Converts to a platform dependent Unicode string type.
/// </summary>
/// <param name="s">A two byte character UTF-16 string.</param>
/// <returns>A platform dependent string type.</returns>
#ifdef _UTF16_STRINGS
inline utility::string_t&& to_string_t(utf16string&& s) { return std::move(s); }
#else
_ASYNCRTIMP utility::string_t __cdecl to_string_t(utf16string&& s);
#endif
/// <summary>
/// Converts to a platform dependent Unicode string type.
/// </summary>
/// <param name="s">A single byte character UTF-8 string.</param>
/// <returns>A platform dependent string type.</returns>
#ifdef _UTF16_STRINGS
_ASYNCRTIMP utility::string_t __cdecl to_string_t(const std::string& s);
#else
inline const utility::string_t& to_string_t(const std::string& s) { return s; }
#endif
/// <summary>
/// Converts to a platform dependent Unicode string type.
/// </summary>
/// <param name="s">A two byte character UTF-16 string.</param>
/// <returns>A platform dependent string type.</returns>
#ifdef _UTF16_STRINGS
inline const utility::string_t& to_string_t(const utf16string& s) { return s; }
#else
_ASYNCRTIMP utility::string_t __cdecl to_string_t(const utf16string& s);
#endif
/// <summary>
/// Converts to a UTF-16 from string.
/// </summary>
/// <param name="value">A single byte character UTF-8 string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
_ASYNCRTIMP utf16string __cdecl to_utf16string(const std::string& value);
/// <summary>
/// Converts to a UTF-16 from string.
/// </summary>
/// <param name="value">A two byte character UTF-16 string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
inline const utf16string& to_utf16string(const utf16string& value) { return value; }
/// <summary>
/// Converts to a UTF-16 from string.
/// </summary>
/// <param name="value">A two byte character UTF-16 string.</param>
/// <returns>A two byte character UTF-16 string.</returns>
inline utf16string&& to_utf16string(utf16string&& value) { return std::move(value); }
/// <summary>
/// Converts to a UTF-8 string.
/// </summary>
/// <param name="value">A single byte character UTF-8 string.</param>
/// <returns>A single byte character UTF-8 string.</returns>
inline std::string&& to_utf8string(std::string&& value) { return std::move(value); }
/// <summary>
/// Converts to a UTF-8 string.
/// </summary>
/// <param name="value">A single byte character UTF-8 string.</param>
/// <returns>A single byte character UTF-8 string.</returns>
inline const std::string& to_utf8string(const std::string& value) { return value; }
/// <summary>
/// Converts to a UTF-8 string.
/// </summary>
/// <param name="value">A two byte character UTF-16 string.</param>
/// <returns>A single byte character UTF-8 string.</returns>
_ASYNCRTIMP std::string __cdecl to_utf8string(const utf16string& value);
/// <summary>
/// Encode the given byte array into a base64 string
/// </summary>
_ASYNCRTIMP utility::string_t __cdecl to_base64(const std::vector<unsigned char>& data);
/// <summary>
/// Encode the given 8-byte integer into a base64 string
/// </summary>
_ASYNCRTIMP utility::string_t __cdecl to_base64(uint64_t data);
/// <summary>
/// Decode the given base64 string to a byte array
/// </summary>
_ASYNCRTIMP std::vector<unsigned char> __cdecl from_base64(const utility::string_t& str);
template<typename Source>
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
"locale support is required.")
utility::string_t print_string(const Source& val, const std::locale& loc = std::locale())
{
utility::ostringstream_t oss;
oss.imbue(loc);
oss << val;
if (oss.bad())
{
throw std::bad_cast();
}
return oss.str();
}
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
"locale support is required.")
inline utility::string_t print_string(const utility::string_t& val) { return val; }
namespace details
{
#if defined(__ANDROID__)
template<class T>
inline std::string to_string(const T t)
{
std::ostringstream os;
os.imbue(std::locale::classic());
os << t;
return os.str();
}
#endif
template<class T>
inline utility::string_t to_string_t(const T t)
{
#ifdef _UTF16_STRINGS
using std::to_wstring;
return to_wstring(t);
#else
#if !defined(__ANDROID__)
using std::to_string;
#endif
return to_string(t);
#endif
}
template<typename Source>
utility::string_t print_string(const Source& val)
{
utility::ostringstream_t oss;
oss.imbue(std::locale::classic());
oss << val;
if (oss.bad())
{
throw std::bad_cast();
}
return oss.str();
}
inline const utility::string_t& print_string(const utility::string_t& val) { return val; }
template<typename Source>
utf8string print_utf8string(const Source& val)
{
return conversions::to_utf8string(print_string(val));
}
inline const utf8string& print_utf8string(const utf8string& val) { return val; }
template<typename Target>
Target scan_string(const utility::string_t& str)
{
Target t;
utility::istringstream_t iss(str);
iss.imbue(std::locale::classic());
iss >> t;
if (iss.bad())
{
throw std::bad_cast();
}
return t;
}
inline const utility::string_t& scan_string(const utility::string_t& str) { return str; }
} // namespace details
template<typename Target>
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
"locale support is required.")
Target scan_string(const utility::string_t& str, const std::locale& loc = std::locale())
{
Target t;
utility::istringstream_t iss(str);
iss.imbue(loc);
iss >> t;
if (iss.bad())
{
throw std::bad_cast();
}
return t;
}
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
"locale support is required.")
inline utility::string_t scan_string(const utility::string_t& str) { return str; }
} // namespace conversions
namespace details
{
/// <summary>
/// Cross platform RAII container for setting thread local locale.
/// </summary>
class scoped_c_thread_locale
{
public:
_ASYNCRTIMP scoped_c_thread_locale();
_ASYNCRTIMP ~scoped_c_thread_locale();
#if !defined(ANDROID) && !defined(__ANDROID__) // CodePlex 269
#ifdef _WIN32
typedef _locale_t xplat_locale;
#else
typedef locale_t xplat_locale;
#endif
static _ASYNCRTIMP xplat_locale __cdecl c_locale();
#endif
private:
#ifdef _WIN32
std::string m_prevLocale;
int m_prevThreadSetting;
#elif !(defined(ANDROID) || defined(__ANDROID__))
locale_t m_prevLocale;
#endif
scoped_c_thread_locale(const scoped_c_thread_locale&);
scoped_c_thread_locale& operator=(const scoped_c_thread_locale&);
};
/// <summary>
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
/// taking global lock for performance reasons.
/// </summary>
inline bool __cdecl is_alnum(const unsigned char uch) CPPREST_NOEXCEPT
{ // test if uch is an alnum character
// special casing char to avoid branches
// clang-format off
static CPPREST_CONSTEXPR bool is_alnum_table[UCHAR_MAX + 1] = {
/* X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */
/* 0X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 1X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 2X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 3X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 0-9 */
/* 4X */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* A-Z */
/* 5X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
/* 6X */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a-z */
/* 7X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
/* non-ASCII values initialized to 0 */
};
// clang-format on
return (is_alnum_table[uch]);
}
/// <summary>
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
/// taking global lock for performance reasons.
/// </summary>
inline bool __cdecl is_alnum(const char ch) CPPREST_NOEXCEPT { return (is_alnum(static_cast<unsigned char>(ch))); }
/// <summary>
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
/// taking global lock for performance reasons.
/// </summary>
template<class Elem>
inline bool __cdecl is_alnum(Elem ch) CPPREST_NOEXCEPT
{
// assumes 'x' == L'x' for the ASCII range
typedef typename std::make_unsigned<Elem>::type UElem;
const auto uch = static_cast<UElem>(ch);
return (uch <= static_cast<UElem>('z') && is_alnum(static_cast<unsigned char>(uch)));
}
/// <summary>
/// Simplistic implementation of make_unique. A better implementation would be based on variadic templates
/// and therefore not be compatible with Dev10.
/// </summary>
template<typename _Type>
std::unique_ptr<_Type> make_unique()
{
return std::unique_ptr<_Type>(new _Type());
}
template<typename _Type, typename _Arg1>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1)
{
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1)));
}
template<typename _Type, typename _Arg1, typename _Arg2>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2)
{
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2)));
}
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3)
{
return std::unique_ptr<_Type>(
new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3)));
}
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4)
{
return std::unique_ptr<_Type>(new _Type(
std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3), std::forward<_Arg4>(arg4)));
}
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4, typename _Arg5>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4, _Arg5&& arg5)
{
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1),
std::forward<_Arg2>(arg2),
std::forward<_Arg3>(arg3),
std::forward<_Arg4>(arg4),
std::forward<_Arg5>(arg5)));
}
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4, typename _Arg5, typename _Arg6>
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4, _Arg5&& arg5, _Arg6&& arg6)
{
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1),
std::forward<_Arg2>(arg2),
std::forward<_Arg3>(arg3),
std::forward<_Arg4>(arg4),
std::forward<_Arg5>(arg5),
std::forward<_Arg6>(arg6)));
}
/// <summary>
/// Cross platform utility function for performing case insensitive string equality comparison.
/// </summary>
/// <param name="left">First string to compare.</param>
/// <param name="right">Second strong to compare.</param>
/// <returns>true if the strings are equivalent, false otherwise</returns>
_ASYNCRTIMP bool __cdecl str_iequal(const std::string& left, const std::string& right) CPPREST_NOEXCEPT;
/// <summary>
/// Cross platform utility function for performing case insensitive string equality comparison.
/// </summary>
/// <param name="left">First string to compare.</param>
/// <param name="right">Second strong to compare.</param>
/// <returns>true if the strings are equivalent, false otherwise</returns>
_ASYNCRTIMP bool __cdecl str_iequal(const std::wstring& left, const std::wstring& right) CPPREST_NOEXCEPT;
/// <summary>
/// Cross platform utility function for performing case insensitive string less-than comparison.
/// </summary>
/// <param name="left">First string to compare.</param>
/// <param name="right">Second strong to compare.</param>
/// <returns>true if a lowercase view of left is lexicographically less than a lowercase view of right; otherwise,
/// false.</returns>
_ASYNCRTIMP bool __cdecl str_iless(const std::string& left, const std::string& right) CPPREST_NOEXCEPT;
/// <summary>
/// Cross platform utility function for performing case insensitive string less-than comparison.
/// </summary>
/// <param name="left">First string to compare.</param>
/// <param name="right">Second strong to compare.</param>
/// <returns>true if a lowercase view of left is lexicographically less than a lowercase view of right; otherwise,
/// false.</returns>
_ASYNCRTIMP bool __cdecl str_iless(const std::wstring& left, const std::wstring& right) CPPREST_NOEXCEPT;
/// <summary>
/// Convert a string to lowercase in place.
/// </summary>
/// <param name="target">The string to convert to lowercase.</param>
_ASYNCRTIMP void __cdecl inplace_tolower(std::string& target) CPPREST_NOEXCEPT;
/// <summary>
/// Convert a string to lowercase in place.
/// </summary>
/// <param name="target">The string to convert to lowercase.</param>
_ASYNCRTIMP void __cdecl inplace_tolower(std::wstring& target) CPPREST_NOEXCEPT;
#ifdef _WIN32
/// <summary>
/// Category error type for Windows OS errors.
/// </summary>
class windows_category_impl : public std::error_category
{
public:
virtual const char* name() const CPPREST_NOEXCEPT { return "windows"; }
virtual std::string message(int errorCode) const CPPREST_NOEXCEPT;
virtual std::error_condition default_error_condition(int errorCode) const CPPREST_NOEXCEPT;
};
/// <summary>
/// Gets the one global instance of the windows error category.
/// </summary>
/// </returns>An error category instance.</returns>
_ASYNCRTIMP const std::error_category& __cdecl windows_category();
#else
/// <summary>
/// Gets the one global instance of the linux error category.
/// </summary>
/// </returns>An error category instance.</returns>
_ASYNCRTIMP const std::error_category& __cdecl linux_category();
#endif
/// <summary>
/// Gets the one global instance of the current platform's error category.
/// </summary>
_ASYNCRTIMP const std::error_category& __cdecl platform_category();
/// <summary>
/// Creates an instance of std::system_error from a OS error code.
/// </summary>
inline std::system_error __cdecl create_system_error(unsigned long errorCode)
{
std::error_code code((int)errorCode, platform_category());
return std::system_error(code, code.message());
}
/// <summary>
/// Creates a std::error_code from a OS error code.
/// </summary>
inline std::error_code __cdecl create_error_code(unsigned long errorCode)
{
return std::error_code((int)errorCode, platform_category());
}
/// <summary>
/// Creates the corresponding error message from a OS error code.
/// </summary>
inline utility::string_t __cdecl create_error_message(unsigned long errorCode)
{
return utility::conversions::to_string_t(create_error_code(errorCode).message());
}
} // namespace details
class datetime
{
public:
typedef uint64_t interval_type;
/// <summary>
/// Defines the supported date and time string formats.
/// </summary>
enum date_format
{
RFC_1123,
ISO_8601
};
/// <summary>
/// Returns the current UTC time.
/// </summary>
static _ASYNCRTIMP datetime __cdecl utc_now();
/// <summary>
/// An invalid UTC timestamp value.
/// </summary>
enum : interval_type
{
utc_timestamp_invalid = static_cast<interval_type>(-1)
};
/// <summary>
/// Returns seconds since Unix/POSIX time epoch at 01-01-1970 00:00:00.
/// If time is before epoch, utc_timestamp_invalid is returned.
/// </summary>
static interval_type utc_timestamp()
{
const auto seconds = utc_now().to_interval() / _secondTicks;
if (seconds >= 11644473600LL)
{
return seconds - 11644473600LL;
}
else
{
return utc_timestamp_invalid;
}
}
datetime() : m_interval(0) {}
/// <summary>
/// Creates <c>datetime</c> from a string representing time in UTC in RFC 1123 format.
/// </summary>
/// <returns>Returns a <c>datetime</c> of zero if not successful.</returns>
static _ASYNCRTIMP datetime __cdecl from_string(const utility::string_t& timestring, date_format format = RFC_1123);
/// <summary>
/// Returns a string representation of the <c>datetime</c>.
/// </summary>
_ASYNCRTIMP utility::string_t to_string(date_format format = RFC_1123) const;
/// <summary>
/// Returns the integral time value.
/// </summary>
interval_type to_interval() const { return m_interval; }
datetime operator-(interval_type value) const { return datetime(m_interval - value); }
datetime operator+(interval_type value) const { return datetime(m_interval + value); }
bool operator==(datetime dt) const { return m_interval == dt.m_interval; }
bool operator!=(const datetime& dt) const { return !(*this == dt); }
static interval_type from_milliseconds(unsigned int milliseconds) { return milliseconds * _msTicks; }
static interval_type from_seconds(unsigned int seconds) { return seconds * _secondTicks; }
static interval_type from_minutes(unsigned int minutes) { return minutes * _minuteTicks; }
static interval_type from_hours(unsigned int hours) { return hours * _hourTicks; }
static interval_type from_days(unsigned int days) { return days * _dayTicks; }
bool is_initialized() const { return m_interval != 0; }
private:
friend int operator-(datetime t1, datetime t2);
static const interval_type _msTicks = static_cast<interval_type>(10000);
static const interval_type _secondTicks = 1000 * _msTicks;
static const interval_type _minuteTicks = 60 * _secondTicks;
static const interval_type _hourTicks = 60 * 60 * _secondTicks;
static const interval_type _dayTicks = 24 * 60 * 60 * _secondTicks;
// Private constructor. Use static methods to create an instance.
datetime(interval_type interval) : m_interval(interval) {}
// Storing as hundreds of nanoseconds 10e-7, i.e. 1 here equals 100ns.
interval_type m_interval;
};
inline int operator-(datetime t1, datetime t2)
{
auto diff = (t1.m_interval - t2.m_interval);
// Round it down to seconds
diff /= 10 * 1000 * 1000;
return static_cast<int>(diff);
}
/// <summary>
/// Nonce string generator class.
/// </summary>
class nonce_generator
{
public:
/// <summary>
/// Define default nonce length.
/// </summary>
enum
{
default_length = 32
};
/// <summary>
/// Nonce generator constructor.
/// </summary>
/// <param name="length">Length of the generated nonce string.</param>
nonce_generator(int length = default_length)
: m_random(static_cast<unsigned int>(utility::datetime::utc_timestamp())), m_length(length)
{
}
/// <summary>
/// Generate a nonce string containing random alphanumeric characters (A-Za-z0-9).
/// Length of the generated string is set by length().
/// </summary>
/// <returns>The generated nonce string.</returns>
_ASYNCRTIMP utility::string_t generate();
/// <summary>
/// Get length of generated nonce string.
/// </summary>
/// <returns>Nonce string length.</returns>
int length() const { return m_length; }
/// <summary>
/// Set length of the generated nonce string.
/// </summary>
/// <param name="length">Lenght of nonce string.</param>
void set_length(int length) { m_length = length; }
private:
std::mt19937 m_random;
int m_length;
};
} // namespace utility

View File

@@ -1,391 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Protocol independent support for URIs.
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include "cpprest/asyncrt_utils.h"
#include "cpprest/details/basic_types.h"
#include <map>
#include <string>
#include <utility>
#include <vector>
namespace web
{
namespace details
{
struct uri_components
{
uri_components() : m_path(_XPLATSTR("/")), m_port(-1) {}
uri_components(const uri_components&) = default;
uri_components& operator=(const uri_components&) = default;
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
uri_components(uri_components&& other) CPPREST_NOEXCEPT : m_scheme(std::move(other.m_scheme)),
m_host(std::move(other.m_host)),
m_user_info(std::move(other.m_user_info)),
m_path(std::move(other.m_path)),
m_query(std::move(other.m_query)),
m_fragment(std::move(other.m_fragment)),
m_port(other.m_port)
{
}
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
uri_components& operator=(uri_components&& other) CPPREST_NOEXCEPT
{
if (this != &other)
{
m_scheme = std::move(other.m_scheme);
m_host = std::move(other.m_host);
m_user_info = std::move(other.m_user_info);
m_path = std::move(other.m_path);
m_query = std::move(other.m_query);
m_fragment = std::move(other.m_fragment);
m_port = other.m_port;
}
return *this;
}
_ASYNCRTIMP utility::string_t join();
utility::string_t m_scheme;
utility::string_t m_host;
utility::string_t m_user_info;
utility::string_t m_path;
utility::string_t m_query;
utility::string_t m_fragment;
int m_port;
};
} // namespace details
/// <summary>
/// A single exception type to represent errors in parsing, encoding, and decoding URIs.
/// </summary>
class uri_exception : public std::exception
{
public:
uri_exception(std::string msg) : m_msg(std::move(msg)) {}
~uri_exception() CPPREST_NOEXCEPT {}
const char* what() const CPPREST_NOEXCEPT { return m_msg.c_str(); }
private:
std::string m_msg;
};
/// <summary>
/// A flexible, protocol independent URI implementation.
///
/// URI instances are immutable. Querying the various fields on an empty URI will return empty strings. Querying
/// various diagnostic members on an empty URI will return false.
/// </summary>
/// <remarks>
/// This implementation accepts both URIs ('http://msn.com/path') and URI relative-references
/// ('/path?query#frag').
///
/// This implementation does not provide any scheme-specific handling -- an example of this
/// would be the following: 'http://path1/path'. This is a valid URI, but it's not a valid
/// http-uri -- that is, it's syntactically correct but does not conform to the requirements
/// of the http scheme (http requires a host).
/// We could provide this by allowing a pluggable 'scheme' policy-class, which would provide
/// extra capability for validating and canonicalizing a URI according to scheme, and would
/// introduce a layer of type-safety for URIs of differing schemes, and thus differing semantics.
///
/// One issue with implementing a scheme-independent URI facility is that of comparing for equality.
/// For instance, these URIs are considered equal 'http://msn.com', 'http://msn.com:80'. That is --
/// the 'default' port can be either omitted or explicit. Since we don't have a way to map a scheme
/// to it's default port, we don't have a way to know these are equal. This is just one of a class of
/// issues with regard to scheme-specific behavior.
/// </remarks>
class uri
{
public:
/// <summary>
/// The various components of a URI. This enum is used to indicate which
/// URI component is being encoded to the encode_uri_component. This allows
/// specific encoding to be performed.
///
/// Scheme and port don't allow '%' so they don't need to be encoded.
/// </summary>
class components
{
public:
enum component
{
user_info,
host,
path,
query,
fragment,
full_uri
};
};
/// <summary>
/// Encodes a URI component according to RFC 3986.
/// Note if a full URI is specified instead of an individual URI component all
/// characters not in the unreserved set are escaped.
/// </summary>
/// <param name="raw">The URI as a string.</param>
/// <returns>The encoded string.</returns>
_ASYNCRTIMP static utility::string_t __cdecl encode_uri(const utility::string_t& raw,
uri::components::component = components::full_uri);
/// <summary>
/// Encodes a string by converting all characters except for RFC 3986 unreserved characters to their
/// hexadecimal representation.
/// </summary>
/// <returns>The encoded string.</returns>
_ASYNCRTIMP static utility::string_t __cdecl encode_data_string(const utility::string_t& data);
/// <summary>
/// Decodes an encoded string.
/// </summary>
/// <param name="encoded">The URI as a string.</param>
/// <returns>The decoded string.</returns>
_ASYNCRTIMP static utility::string_t __cdecl decode(const utility::string_t& encoded);
/// <summary>
/// Splits a path into its hierarchical components.
/// </summary>
/// <param name="path">The path as a string</param>
/// <returns>A <c>std::vector&lt;utility::string_t&gt;</c> containing the segments in the path.</returns>
_ASYNCRTIMP static std::vector<utility::string_t> __cdecl split_path(const utility::string_t& path);
/// <summary>
/// Splits a query into its key-value components.
/// </summary>
/// <param name="query">The query string</param>
/// <returns>A <c>std::map&lt;utility::string_t, utility::string_t&gt;</c> containing the key-value components of
/// the query.</returns>
_ASYNCRTIMP static std::map<utility::string_t, utility::string_t> __cdecl split_query(
const utility::string_t& query);
/// <summary>
/// Validates a string as a URI.
/// </summary>
/// <remarks>
/// This function accepts both uris ('http://msn.com') and uri relative-references ('path1/path2?query').
/// </remarks>
/// <param name="uri_string">The URI string to be validated.</param>
/// <returns><c>true</c> if the given string represents a valid URI, <c>false</c> otherwise.</returns>
_ASYNCRTIMP static bool __cdecl validate(const utility::string_t& uri_string);
/// <summary>
/// Creates an empty uri
/// </summary>
uri() : m_uri(_XPLATSTR("/")) {}
/// <summary>
/// Creates a URI from the given encoded string. This will throw an exception if the string
/// does not contain a valid URI. Use uri::validate if processing user-input.
/// </summary>
/// <param name="uri_string">A pointer to an encoded string to create the URI instance.</param>
_ASYNCRTIMP uri(const utility::char_t* uri_string);
/// <summary>
/// Creates a URI from the given encoded string. This will throw an exception if the string
/// does not contain a valid URI. Use uri::validate if processing user-input.
/// </summary>
/// <param name="uri_string">An encoded URI string to create the URI instance.</param>
_ASYNCRTIMP uri(const utility::string_t& uri_string);
/// <summary>
/// Copy constructor.
/// </summary>
uri(const uri&) = default;
/// <summary>
/// Copy assignment operator.
/// </summary>
uri& operator=(const uri&) = default;
/// <summary>
/// Move constructor.
/// </summary>
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
uri(uri&& other) CPPREST_NOEXCEPT : m_uri(std::move(other.m_uri)), m_components(std::move(other.m_components)) {}
/// <summary>
/// Move assignment operator
/// </summary>
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
uri& operator=(uri&& other) CPPREST_NOEXCEPT
{
if (this != &other)
{
m_uri = std::move(other.m_uri);
m_components = std::move(other.m_components);
}
return *this;
}
/// <summary>
/// Get the scheme component of the URI as an encoded string.
/// </summary>
/// <returns>The URI scheme as a string.</returns>
const utility::string_t& scheme() const { return m_components.m_scheme; }
/// <summary>
/// Get the user information component of the URI as an encoded string.
/// </summary>
/// <returns>The URI user information as a string.</returns>
const utility::string_t& user_info() const { return m_components.m_user_info; }
/// <summary>
/// Get the host component of the URI as an encoded string.
/// </summary>
/// <returns>The URI host as a string.</returns>
const utility::string_t& host() const { return m_components.m_host; }
/// <summary>
/// Get the port component of the URI. Returns -1 if no port is specified.
/// </summary>
/// <returns>The URI port as an integer.</returns>
int port() const { return m_components.m_port; }
/// <summary>
/// Get the path component of the URI as an encoded string.
/// </summary>
/// <returns>The URI path as a string.</returns>
const utility::string_t& path() const { return m_components.m_path; }
/// <summary>
/// Get the query component of the URI as an encoded string.
/// </summary>
/// <returns>The URI query as a string.</returns>
const utility::string_t& query() const { return m_components.m_query; }
/// <summary>
/// Get the fragment component of the URI as an encoded string.
/// </summary>
/// <returns>The URI fragment as a string.</returns>
const utility::string_t& fragment() const { return m_components.m_fragment; }
/// <summary>
/// Creates a new uri object with the same authority portion as this one, omitting the resource and query portions.
/// </summary>
/// <returns>The new uri object with the same authority.</returns>
_ASYNCRTIMP uri authority() const;
/// <summary>
/// Gets the path, query, and fragment portion of this uri, which may be empty.
/// </summary>
/// <returns>The new URI object with the path, query and fragment portion of this URI.</returns>
_ASYNCRTIMP uri resource() const;
/// <summary>
/// An empty URI specifies no components, and serves as a default value
/// </summary>
bool is_empty() const { return this->m_uri.empty() || this->m_uri == _XPLATSTR("/"); }
/// <summary>
/// A loopback URI is one which refers to a hostname or ip address with meaning only on the local machine.
/// </summary>
/// <remarks>
/// Examples include "localhost", or ip addresses in the loopback range (127.0.0.0/24).
/// </remarks>
/// <returns><c>true</c> if this URI references the local host, <c>false</c> otherwise.</returns>
bool is_host_loopback() const
{
return !is_empty() &&
((host() == _XPLATSTR("localhost")) || (host().size() > 4 && host().substr(0, 4) == _XPLATSTR("127.")));
}
/// <summary>
/// A wildcard URI is one which refers to all hostnames that resolve to the local machine (using the * or +)
/// </summary>
/// <example>
/// http://*:80
/// </example>
bool is_host_wildcard() const
{
return !is_empty() && (this->host() == _XPLATSTR("*") || this->host() == _XPLATSTR("+"));
}
/// <summary>
/// A portable URI is one with a hostname that can be resolved globally (used from another machine).
/// </summary>
/// <returns><c>true</c> if this URI can be resolved globally (used from another machine), <c>false</c>
/// otherwise.</returns> <remarks> The hostname "localhost" is a reserved name that is guaranteed to resolve to the
/// local machine, and cannot be used for inter-machine communication. Likewise the hostnames "*" and "+" on Windows
/// represent wildcards, and do not map to a resolvable address.
/// </remarks>
bool is_host_portable() const { return !(is_empty() || is_host_loopback() || is_host_wildcard()); }
/// <summary>
/// A default port is one where the port is unspecified, and will be determined by the operating system.
/// The choice of default port may be dictated by the scheme (http -> 80) or not.
/// </summary>
/// <returns><c>true</c> if this URI instance has a default port, <c>false</c> otherwise.</returns>
bool is_port_default() const { return !is_empty() && this->port() == 0; }
/// <summary>
/// An "authority" URI is one with only a scheme, optional userinfo, hostname, and (optional) port.
/// </summary>
/// <returns><c>true</c> if this is an "authority" URI, <c>false</c> otherwise.</returns>
bool is_authority() const { return !is_empty() && is_path_empty() && query().empty() && fragment().empty(); }
/// <summary>
/// Returns whether the other URI has the same authority as this one
/// </summary>
/// <param name="other">The URI to compare the authority with.</param>
/// <returns><c>true</c> if both the URI's have the same authority, <c>false</c> otherwise.</returns>
bool has_same_authority(const uri& other) const { return !is_empty() && this->authority() == other.authority(); }
/// <summary>
/// Returns whether the path portion of this URI is empty
/// </summary>
/// <returns><c>true</c> if the path portion of this URI is empty, <c>false</c> otherwise.</returns>
bool is_path_empty() const { return path().empty() || path() == _XPLATSTR("/"); }
/// <summary>
/// Returns the full (encoded) URI as a string.
/// </summary>
/// <returns>The full encoded URI string.</returns>
utility::string_t to_string() const { return m_uri; }
/// <summary>
/// Returns an URI resolved against <c>this</c> as the base URI
/// according to RFC3986, Section 5 (https://tools.ietf.org/html/rfc3986#section-5).
/// </summary>
/// <param name="relativeUri">The relative URI to be resolved against <c>this</c> as base.</param>
/// <returns>The new resolved URI string.</returns>
_ASYNCRTIMP utility::string_t resolve_uri(const utility::string_t& relativeUri) const;
_ASYNCRTIMP bool operator==(const uri& other) const;
bool operator<(const uri& other) const { return m_uri < other.m_uri; }
bool operator!=(const uri& other) const { return !(this->operator==(other)); }
private:
friend class uri_builder;
/// <summary>
/// Creates a URI from the given URI components.
/// </summary>
/// <param name="components">A URI components object to create the URI instance.</param>
_ASYNCRTIMP uri(const details::uri_components& components);
// Used by uri_builder
static utility::string_t __cdecl encode_query_impl(const utf8string& raw);
utility::string_t m_uri;
details::uri_components m_components;
};
} // namespace web

File diff suppressed because it is too large Load Diff

View File

@@ -1,131 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Platform-dependent type definitions
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include "cpprest/details/cpprest_compat.h"
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#ifndef _WIN32
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS
#endif
#include <stdint.h>
#else
#include <cstdint>
#endif
#include "cpprest/details/SafeInt3.hpp"
namespace utility
{
#ifdef _WIN32
#define _UTF16_STRINGS
#endif
// We should be using a 64-bit size type for most situations that do
// not involve specifying the size of a memory allocation or buffer.
typedef uint64_t size64_t;
#ifndef _WIN32
typedef uint32_t HRESULT; // Needed for PPLX
#endif
#ifdef _UTF16_STRINGS
//
// On Windows, all strings are wide
//
typedef wchar_t char_t;
typedef std::wstring string_t;
#define _XPLATSTR(x) L##x
typedef std::wostringstream ostringstream_t;
typedef std::wofstream ofstream_t;
typedef std::wostream ostream_t;
typedef std::wistream istream_t;
typedef std::wifstream ifstream_t;
typedef std::wistringstream istringstream_t;
typedef std::wstringstream stringstream_t;
#define ucout std::wcout
#define ucin std::wcin
#define ucerr std::wcerr
#else
//
// On POSIX platforms, all strings are narrow
//
typedef char char_t;
typedef std::string string_t;
#define _XPLATSTR(x) x
typedef std::ostringstream ostringstream_t;
typedef std::ofstream ofstream_t;
typedef std::ostream ostream_t;
typedef std::istream istream_t;
typedef std::ifstream ifstream_t;
typedef std::istringstream istringstream_t;
typedef std::stringstream stringstream_t;
#define ucout std::cout
#define ucin std::cin
#define ucerr std::cerr
#endif // endif _UTF16_STRINGS
#ifndef _TURN_OFF_PLATFORM_STRING
// The 'U' macro can be used to create a string or character literal of the platform type, i.e. utility::char_t.
// If you are using a library causing conflicts with 'U' macro, it can be turned off by defining the macro
// '_TURN_OFF_PLATFORM_STRING' before including the C++ REST SDK header files, and e.g. use '_XPLATSTR' instead.
#define U(x) _XPLATSTR(x)
#endif // !_TURN_OFF_PLATFORM_STRING
} // namespace utility
typedef char utf8char;
typedef std::string utf8string;
typedef std::stringstream utf8stringstream;
typedef std::ostringstream utf8ostringstream;
typedef std::ostream utf8ostream;
typedef std::istream utf8istream;
typedef std::istringstream utf8istringstream;
#ifdef _UTF16_STRINGS
typedef wchar_t utf16char;
typedef std::wstring utf16string;
typedef std::wstringstream utf16stringstream;
typedef std::wostringstream utf16ostringstream;
typedef std::wostream utf16ostream;
typedef std::wistream utf16istream;
typedef std::wistringstream utf16istringstream;
#else
typedef char16_t utf16char;
typedef std::u16string utf16string;
typedef std::basic_stringstream<utf16char> utf16stringstream;
typedef std::basic_ostringstream<utf16char> utf16ostringstream;
typedef std::basic_ostream<utf16char> utf16ostream;
typedef std::basic_istream<utf16char> utf16istream;
typedef std::basic_istringstream<utf16char> utf16istringstream;
#endif
#if defined(_WIN32)
// Include on everything except Windows Desktop ARM, unless explicitly excluded.
#if !defined(CPPREST_EXCLUDE_WEBSOCKETS)
#if defined(WINAPI_FAMILY)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && defined(_M_ARM)
#define CPPREST_EXCLUDE_WEBSOCKETS
#endif
#else
#if defined(_M_ARM)
#define CPPREST_EXCLUDE_WEBSOCKETS
#endif
#endif
#endif
#endif

View File

@@ -1,91 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Standard macros and definitions.
* This header has minimal dependency on windows headers and is safe for use in the public API
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#if defined(_WIN32)
#if _MSC_VER >= 1900
#define CPPREST_NOEXCEPT noexcept
#define CPPREST_CONSTEXPR constexpr
#else
#define CPPREST_NOEXCEPT
#define CPPREST_CONSTEXPR const
#endif // _MSC_VER >= 1900
#define CASABLANCA_UNREFERENCED_PARAMETER(x) (x)
#include <sal.h>
#else // ^^^ _WIN32 ^^^ // vvv !_WIN32 vvv
#define __declspec(x) __attribute__((x))
#define dllimport
#define novtable /* no novtable equivalent */
#define __assume(x) \
do \
{ \
if (!(x)) __builtin_unreachable(); \
} while (false)
#define CASABLANCA_UNREFERENCED_PARAMETER(x) (void)x
#define CPPREST_NOEXCEPT noexcept
#define CPPREST_CONSTEXPR constexpr
#include <assert.h>
#define _ASSERTE(x) assert(x)
// No SAL on non Windows platforms
#include "cpprest/details/nosal.h"
#if !defined(__cdecl)
#if defined(cdecl)
#define __cdecl __attribute__((cdecl))
#else // ^^^ defined cdecl ^^^ // vvv !defined cdecl vvv
#define __cdecl
#endif // defined cdecl
#endif // not defined __cdecl
#if defined(__ANDROID__)
// This is needed to disable the use of __thread inside the boost library.
// Android does not support thread local storage -- if boost is included
// without this macro defined, it will create references to __tls_get_addr
// which (while able to link) will not be available at runtime and prevent
// the .so from loading.
#if not defined BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
#define BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
#endif // not defined BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
#endif // defined(__ANDROID__)
#ifdef __clang__
#include <cstdio>
#endif // __clang__
#endif // _WIN32
#define _NO_ASYNCRTIMP
#ifdef _NO_ASYNCRTIMP
#define _ASYNCRTIMP
#else // ^^^ _NO_ASYNCRTIMP ^^^ // vvv !_NO_ASYNCRTIMP vvv
#ifdef _ASYNCRT_EXPORT
#define _ASYNCRTIMP __declspec(dllexport)
#else // ^^^ _ASYNCRT_EXPORT ^^^ // vvv !_ASYNCRT_EXPORT vvv
#define _ASYNCRTIMP __declspec(dllimport)
#endif // _ASYNCRT_EXPORT
#endif // _NO_ASYNCRTIMP
#ifdef CASABLANCA_DEPRECATION_NO_WARNINGS
#define CASABLANCA_DEPRECATED(x)
#else
#define CASABLANCA_DEPRECATED(x) __declspec(deprecated(x))
#endif // CASABLANCA_DEPRECATION_NO_WARNINGS

View File

@@ -1,223 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* utility classes used by the different web:: clients
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include "cpprest/asyncrt_utils.h"
#include "cpprest/uri.h"
namespace web
{
namespace details
{
class zero_memory_deleter
{
public:
_ASYNCRTIMP void operator()(::utility::string_t* data) const;
};
typedef std::unique_ptr<::utility::string_t, zero_memory_deleter> plaintext_string;
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
#if defined(__cplusplus_winrt)
class winrt_encryption
{
public:
winrt_encryption() {}
_ASYNCRTIMP winrt_encryption(const std::wstring& data);
_ASYNCRTIMP plaintext_string decrypt() const;
private:
::pplx::task<Windows::Storage::Streams::IBuffer ^> m_buffer;
};
#else
class win32_encryption
{
public:
win32_encryption() {}
_ASYNCRTIMP win32_encryption(const std::wstring& data);
_ASYNCRTIMP ~win32_encryption();
_ASYNCRTIMP plaintext_string decrypt() const;
private:
std::vector<char> m_buffer;
size_t m_numCharacters;
};
#endif
#endif
} // namespace details
/// <summary>
/// Represents a set of user credentials (user name and password) to be used
/// for authentication.
/// </summary>
class credentials
{
public:
/// <summary>
/// Constructs an empty set of credentials without a user name or password.
/// </summary>
credentials() {}
/// <summary>
/// Constructs credentials from given user name and password.
/// </summary>
/// <param name="username">User name as a string.</param>
/// <param name="password">Password as a string.</param>
credentials(utility::string_t username, const utility::string_t& password)
: m_username(std::move(username)), m_password(password)
{
}
/// <summary>
/// The user name associated with the credentials.
/// </summary>
/// <returns>A string containing the user name.</returns>
const utility::string_t& username() const { return m_username; }
/// <summary>
/// The password for the user name associated with the credentials.
/// </summary>
/// <returns>A string containing the password.</returns>
CASABLANCA_DEPRECATED(
"This API is deprecated for security reasons to avoid unnecessary password copies stored in plaintext.")
utility::string_t password() const
{
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
return utility::string_t(*m_password.decrypt());
#else
return m_password;
#endif
}
/// <summary>
/// Checks if credentials have been set
/// </summary>
/// <returns><c>true</c> if user name and password is set, <c>false</c> otherwise.</returns>
bool is_set() const { return !m_username.empty(); }
details::plaintext_string _internal_decrypt() const
{
// Encryption APIs not supported on XP
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
return m_password.decrypt();
#else
return details::plaintext_string(new ::utility::string_t(m_password));
#endif
}
private:
::utility::string_t m_username;
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
#if defined(__cplusplus_winrt)
details::winrt_encryption m_password;
#else
details::win32_encryption m_password;
#endif
#else
::utility::string_t m_password;
#endif
};
/// <summary>
/// web_proxy represents the concept of the web proxy, which can be auto-discovered,
/// disabled, or specified explicitly by the user.
/// </summary>
class web_proxy
{
enum web_proxy_mode_internal
{
use_default_,
use_auto_discovery_,
disabled_,
user_provided_
};
public:
enum web_proxy_mode
{
use_default = use_default_,
use_auto_discovery = use_auto_discovery_,
disabled = disabled_
};
/// <summary>
/// Constructs a proxy with the default settings.
/// </summary>
web_proxy() : m_address(_XPLATSTR("")), m_mode(use_default_) {}
/// <summary>
/// Creates a proxy with specified mode.
/// </summary>
/// <param name="mode">Mode to use.</param>
web_proxy(web_proxy_mode mode) : m_address(_XPLATSTR("")), m_mode(static_cast<web_proxy_mode_internal>(mode)) {}
/// <summary>
/// Creates a proxy explicitly with provided address.
/// </summary>
/// <param name="address">Proxy URI to use.</param>
web_proxy(uri address) : m_address(address), m_mode(user_provided_) {}
/// <summary>
/// Gets this proxy's URI address. Returns an empty URI if not explicitly set by user.
/// </summary>
/// <returns>A reference to this proxy's URI.</returns>
const uri& address() const { return m_address; }
/// <summary>
/// Gets the credentials used for authentication with this proxy.
/// </summary>
/// <returns>Credentials to for this proxy.</returns>
const web::credentials& credentials() const { return m_credentials; }
/// <summary>
/// Sets the credentials to use for authentication with this proxy.
/// </summary>
/// <param name="cred">Credentials to use for this proxy.</param>
void set_credentials(web::credentials cred)
{
if (m_mode == disabled_)
{
throw std::invalid_argument("Cannot attach credentials to a disabled proxy");
}
m_credentials = std::move(cred);
}
/// <summary>
/// Checks if this proxy was constructed with default settings.
/// </summary>
/// <returns>True if default, false otherwise.</param>
bool is_default() const { return m_mode == use_default_; }
/// <summary>
/// Checks if using a proxy is disabled.
/// </summary>
/// <returns>True if disabled, false otherwise.</returns>
bool is_disabled() const { return m_mode == disabled_; }
/// <summary>
/// Checks if the auto discovery protocol, WPAD, is to be used.
/// </summary>
/// <returns>True if auto discovery enabled, false otherwise.</returns>
bool is_auto_discovery() const { return m_mode == use_auto_discovery_; }
/// <summary>
/// Checks if a proxy address is explicitly specified by the user.
/// </summary>
/// <returns>True if a proxy address was explicitly specified, false otherwise.</returns>
bool is_specified() const { return m_mode == user_provided_; }
private:
web::uri m_address;
web_proxy_mode_internal m_mode;
web::credentials m_credentials;
};
} // namespace web

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Protocol independent support for URIs.
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#ifndef CASA_URI_H
#define CASA_URI_H
#include "cpprest/base_uri.h"
#include "cpprest/uri_builder.h"
#endif

View File

@@ -1,295 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Builder style class for creating URIs.
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#include "cpprest/base_uri.h"
#include <string>
namespace web
{
/// <summary>
/// Builder for constructing URIs incrementally.
/// </summary>
class uri_builder
{
public:
/// <summary>
/// Creates a builder with an initially empty URI.
/// </summary>
uri_builder() = default;
/// <summary>
/// Creates a builder with a existing URI object.
/// </summary>
/// <param name="uri_str">Encoded string containing the URI.</param>
uri_builder(const uri& uri_str) : m_uri(uri_str.m_components) {}
/// <summary>
/// Get the scheme component of the URI as an encoded string.
/// </summary>
/// <returns>The URI scheme as a string.</returns>
const utility::string_t& scheme() const { return m_uri.m_scheme; }
/// <summary>
/// Get the user information component of the URI as an encoded string.
/// </summary>
/// <returns>The URI user information as a string.</returns>
const utility::string_t& user_info() const { return m_uri.m_user_info; }
/// <summary>
/// Get the host component of the URI as an encoded string.
/// </summary>
/// <returns>The URI host as a string.</returns>
const utility::string_t& host() const { return m_uri.m_host; }
/// <summary>
/// Get the port component of the URI. Returns -1 if no port is specified.
/// </summary>
/// <returns>The URI port as an integer.</returns>
int port() const { return m_uri.m_port; }
/// <summary>
/// Get the path component of the URI as an encoded string.
/// </summary>
/// <returns>The URI path as a string.</returns>
const utility::string_t& path() const { return m_uri.m_path; }
/// <summary>
/// Get the query component of the URI as an encoded string.
/// </summary>
/// <returns>The URI query as a string.</returns>
const utility::string_t& query() const { return m_uri.m_query; }
/// <summary>
/// Get the fragment component of the URI as an encoded string.
/// </summary>
/// <returns>The URI fragment as a string.</returns>
const utility::string_t& fragment() const { return m_uri.m_fragment; }
/// <summary>
/// Set the scheme of the URI.
/// </summary>
/// <param name="scheme">Uri scheme.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_scheme(const utility::string_t& scheme)
{
m_uri.m_scheme = scheme;
return *this;
}
/// <summary>
/// Set the user info component of the URI.
/// </summary>
/// <param name="user_info">User info as a decoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_user_info(const utility::string_t& user_info, bool do_encoding = false)
{
if (do_encoding)
{
m_uri.m_user_info = uri::encode_uri(user_info, uri::components::user_info);
}
else
{
m_uri.m_user_info = user_info;
}
return *this;
}
/// <summary>
/// Set the host component of the URI.
/// </summary>
/// <param name="host">Host as a decoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_host(const utility::string_t& host, bool do_encoding = false)
{
if (do_encoding)
{
m_uri.m_host = uri::encode_uri(host, uri::components::host);
}
else
{
m_uri.m_host = host;
}
return *this;
}
/// <summary>
/// Set the port component of the URI.
/// </summary>
/// <param name="port">Port as an integer.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_port(int port)
{
m_uri.m_port = port;
return *this;
}
/// <summary>
/// Set the port component of the URI.
/// </summary>
/// <param name="port">Port as a string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
/// <remarks>When string can't be converted to an integer the port is left unchanged.</remarks>
_ASYNCRTIMP uri_builder& set_port(const utility::string_t& port);
/// <summary>
/// Set the path component of the URI.
/// </summary>
/// <param name="path">Path as a decoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_path(const utility::string_t& path, bool do_encoding = false)
{
if (do_encoding)
{
m_uri.m_path = uri::encode_uri(path, uri::components::path);
}
else
{
m_uri.m_path = path;
}
return *this;
}
/// <summary>
/// Set the query component of the URI.
/// </summary>
/// <param name="query">Query as a decoded string.</param>
/// <param name="do_encoding">Specify whether apply URI encoding to the given string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_query(const utility::string_t& query, bool do_encoding = false)
{
if (do_encoding)
{
m_uri.m_query = uri::encode_uri(query, uri::components::query);
}
else
{
m_uri.m_query = query;
}
return *this;
}
/// <summary>
/// Set the fragment component of the URI.
/// </summary>
/// <param name="fragment">Fragment as a decoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
uri_builder& set_fragment(const utility::string_t& fragment, bool do_encoding = false)
{
if (do_encoding)
{
m_uri.m_fragment = uri::encode_uri(fragment, uri::components::fragment);
}
else
{
m_uri.m_fragment = fragment;
}
return *this;
}
/// <summary>
/// Clears all components of the underlying URI in this uri_builder.
/// </summary>
void clear() { m_uri = details::uri_components(); }
/// <summary>
/// Appends another path to the path of this uri_builder.
/// </summary>
/// <param name="path">Path to append as a already encoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this uri_builder to support chaining.</returns>
_ASYNCRTIMP uri_builder& append_path(const utility::string_t& path, bool do_encoding = false);
/// <summary>
/// Appends the raw contents of the path argument to the path of this uri_builder with no separator de-duplication.
/// </summary>
/// <remarks>
/// The path argument is appended after adding a '/' separator without regards to the contents of path. If an empty
/// string is provided, this function will immediately return without changes to the stored path value. For example:
/// if the current contents are "/abc" and path="/xyz", the result will be "/abc//xyz".
/// </remarks>
/// <param name="path">Path to append as a already encoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this uri_builder to support chaining.</returns>
_ASYNCRTIMP uri_builder& append_path_raw(const utility::string_t& path, bool do_encoding = false);
/// <summary>
/// Appends another query to the query of this uri_builder.
/// </summary>
/// <param name="query">Query to append as a decoded string.</param>
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
/// <returns>A reference to this uri_builder to support chaining.</returns>
_ASYNCRTIMP uri_builder& append_query(const utility::string_t& query, bool do_encoding = false);
/// <summary>
/// Appends an relative uri (Path, Query and fragment) at the end of the current uri.
/// </summary>
/// <param name="relative_uri">The relative uri to append.</param>
/// <returns>A reference to this uri_builder to support chaining.</returns>
_ASYNCRTIMP uri_builder& append(const uri& relative_uri);
/// <summary>
/// Appends another query to the query of this uri_builder, encoding it first. This overload is useful when building
/// a query segment of the form "element=10", where the right hand side of the query is stored as a type other than
/// a string, for instance, an integral type.
/// </summary>
/// <param name="name">The name portion of the query string</param>
/// <param name="value">The value portion of the query string</param>
/// <returns>A reference to this uri_builder to support chaining.</returns>
template<typename T>
uri_builder& append_query(const utility::string_t& name, const T& value, bool do_encoding = true)
{
if (do_encoding)
append_query_encode_impl(name, utility::conversions::details::print_utf8string(value));
else
append_query_no_encode_impl(name, utility::conversions::details::print_string(value));
return *this;
}
/// <summary>
/// Combine and validate the URI components into a encoded string. An exception will be thrown if the URI is
/// invalid.
/// </summary>
/// <returns>The created URI as a string.</returns>
_ASYNCRTIMP utility::string_t to_string() const;
/// <summary>
/// Combine and validate the URI components into a URI class instance. An exception will be thrown if the URI is
/// invalid.
/// </summary>
/// <returns>The create URI as a URI class instance.</returns>
_ASYNCRTIMP uri to_uri() const;
/// <summary>
/// Validate the generated URI from all existing components of this uri_builder.
/// </summary>
/// <returns>Whether the URI is valid.</returns>
_ASYNCRTIMP bool is_valid();
private:
_ASYNCRTIMP void append_query_encode_impl(const utility::string_t& name, const utf8string& value);
_ASYNCRTIMP void append_query_no_encode_impl(const utility::string_t& name, const utility::string_t& value);
details::uri_components m_uri;
};
} // namespace web

View File

@@ -1,10 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
*/
#define CPPREST_VERSION_MINOR 10
#define CPPREST_VERSION_MAJOR 2
#define CPPREST_VERSION_REVISION 13
#define CPPREST_VERSION (CPPREST_VERSION_MAJOR * 100000 + CPPREST_VERSION_MINOR * 100 + CPPREST_VERSION_REVISION)

34
deps/cpprestsdk/pch.h vendored
View File

@@ -1,34 +0,0 @@
#include <winrt/base.h>
#include <Windows.h>
#include <dxgi1_3.h>
#include <d3d11_2.h>
#include <d2d1_3.h>
#include <d2d1_3helper.h>
#include <d2d1helper.h>
#include <dwrite.h>
#include <dcomp.h>
#include <dwmapi.h>
#include <Shobjidl.h>
#include <Shlwapi.h>
#include <string>
#include <algorithm>
#include <chrono>
#include <mutex>
#include <thread>
#include <functional>
#include <condition_variable>
#include <stdexcept>
#include <tuple>
#include <unordered_set>
#include <string>
#include <vector>
// cpprestsdk headers
#include "cpprest/details/basic_types.h"
#include "cpprest/details/cpprest_compat.h"
#include "cpprest/version.h"
// json
#include "cpprest/json.h"
// utilities
#include "cpprest/asyncrt_utils.h"
#include "cpprest/details/web_utilities.h"

View File

@@ -1,475 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* HTTP Library: JSON parser and writer
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#include "pch.h"
using namespace web;
bool json::details::g_keep_json_object_unsorted = false;
void json::keep_object_element_order(bool keep_order) { json::details::g_keep_json_object_unsorted = keep_order; }
utility::ostream_t& web::json::operator<<(utility::ostream_t& os, const web::json::value& val)
{
val.serialize(os);
return os;
}
utility::istream_t& web::json::operator>>(utility::istream_t& is, json::value& val)
{
val = json::value::parse(is);
return is;
}
web::json::value::value()
: m_value(utility::details::make_unique<web::json::details::_Null>())
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Null)
#endif
{
}
web::json::value::value(int32_t value)
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
#endif
{
}
web::json::value::value(uint32_t value)
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
#endif
{
}
web::json::value::value(int64_t value)
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
#endif
{
}
web::json::value::value(uint64_t value)
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
#endif
{
}
web::json::value::value(double value)
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
#endif
{
}
web::json::value::value(bool value)
: m_value(utility::details::make_unique<web::json::details::_Boolean>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Boolean)
#endif
{
}
web::json::value::value(utility::string_t value)
: m_value(utility::details::make_unique<web::json::details::_String>(std::move(value)))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::String)
#endif
{
}
web::json::value::value(utility::string_t value, bool has_escape_chars)
: m_value(utility::details::make_unique<web::json::details::_String>(std::move(value), has_escape_chars))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::String)
#endif
{
}
web::json::value::value(const utility::char_t* value)
: m_value(utility::details::make_unique<web::json::details::_String>(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::String)
#endif
{
}
web::json::value::value(const utility::char_t* value, bool has_escape_chars)
: m_value(utility::details::make_unique<web::json::details::_String>(utility::string_t(value), has_escape_chars))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::String)
#endif
{
}
web::json::value::value(const value& other)
: m_value(other.m_value->_copy_value())
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(other.m_kind)
#endif
{
}
web::json::value& web::json::value::operator=(const value& other)
{
if (this != &other)
{
m_value = std::unique_ptr<details::_Value>(other.m_value->_copy_value());
#ifdef ENABLE_JSON_VALUE_VISUALIZER
m_kind = other.m_kind;
#endif
}
return *this;
}
web::json::value::value(value&& other) CPPREST_NOEXCEPT : m_value(std::move(other.m_value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
m_kind(other.m_kind)
#endif
{
}
web::json::value& web::json::value::operator=(web::json::value&& other) CPPREST_NOEXCEPT
{
if (this != &other)
{
m_value.swap(other.m_value);
#ifdef ENABLE_JSON_VALUE_VISUALIZER
m_kind = other.m_kind;
#endif
}
return *this;
}
web::json::value web::json::value::null() { return web::json::value(); }
web::json::value web::json::value::number(double value) { return web::json::value(value); }
web::json::value web::json::value::number(int32_t value) { return web::json::value(value); }
web::json::value web::json::value::number(uint32_t value) { return web::json::value(value); }
web::json::value web::json::value::number(int64_t value) { return web::json::value(value); }
web::json::value web::json::value::number(uint64_t value) { return web::json::value(value); }
web::json::value web::json::value::boolean(bool value) { return web::json::value(value); }
web::json::value web::json::value::string(utility::string_t value)
{
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_String>(std::move(value));
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::String
#endif
);
}
web::json::value web::json::value::string(utility::string_t value, bool has_escape_chars)
{
std::unique_ptr<details::_Value> ptr =
utility::details::make_unique<details::_String>(std::move(value), has_escape_chars);
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::String
#endif
);
}
#ifdef _WIN32
web::json::value web::json::value::string(const std::string& value)
{
std::unique_ptr<details::_Value> ptr =
utility::details::make_unique<details::_String>(utility::conversions::to_utf16string(value));
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::String
#endif
);
}
#endif
web::json::value web::json::value::object(bool keep_order)
{
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Object>(keep_order);
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::Object
#endif
);
}
web::json::value web::json::value::object(std::vector<std::pair<::utility::string_t, value>> fields, bool keep_order)
{
std::unique_ptr<details::_Value> ptr =
utility::details::make_unique<details::_Object>(std::move(fields), keep_order);
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::Object
#endif
);
}
web::json::value web::json::value::array()
{
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>();
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::Array
#endif
);
}
web::json::value web::json::value::array(size_t size)
{
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>(size);
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::Array
#endif
);
}
web::json::value web::json::value::array(std::vector<value> elements)
{
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>(std::move(elements));
return web::json::value(std::move(ptr)
#ifdef ENABLE_JSON_VALUE_VISUALIZER
,
value::Array
#endif
);
}
const web::json::number& web::json::value::as_number() const { return m_value->as_number(); }
double web::json::value::as_double() const { return m_value->as_double(); }
int web::json::value::as_integer() const { return m_value->as_integer(); }
bool web::json::value::as_bool() const { return m_value->as_bool(); }
json::array& web::json::value::as_array() { return m_value->as_array(); }
const json::array& web::json::value::as_array() const { return m_value->as_array(); }
json::object& web::json::value::as_object() { return m_value->as_object(); }
const json::object& web::json::value::as_object() const { return m_value->as_object(); }
bool web::json::number::is_int32() const
{
switch (m_type)
{
case signed_type:
return m_intval >= (std::numeric_limits<int32_t>::min)() && m_intval <= (std::numeric_limits<int32_t>::max)();
case unsigned_type: return m_uintval <= (std::numeric_limits<int32_t>::max)();
case double_type:
default: return false;
}
}
bool web::json::number::is_uint32() const
{
switch (m_type)
{
case signed_type: return m_intval >= 0 && m_intval <= (std::numeric_limits<uint32_t>::max)();
case unsigned_type: return m_uintval <= (std::numeric_limits<uint32_t>::max)();
case double_type:
default: return false;
}
}
bool web::json::number::is_int64() const
{
switch (m_type)
{
case signed_type: return true;
case unsigned_type: return m_uintval <= static_cast<uint64_t>((std::numeric_limits<int64_t>::max)());
case double_type:
default: return false;
}
}
bool web::json::details::_String::has_escape_chars(const _String& str)
{
return std::any_of(std::begin(str.m_string), std::end(str.m_string), [](utility::string_t::value_type const x) {
if (x <= 31)
{
return true;
}
if (x == '"')
{
return true;
}
if (x == '\\')
{
return true;
}
return false;
});
}
web::json::value::value_type json::value::type() const { return m_value->type(); }
bool json::value::is_integer() const
{
if (!is_number())
{
return false;
}
return m_value->is_integer();
}
bool json::value::is_double() const
{
if (!is_number())
{
return false;
}
return m_value->is_double();
}
json::value& web::json::details::_Object::index(const utility::string_t& key) { return m_object[key]; }
bool web::json::details::_Object::has_field(const utility::string_t& key) const
{
return m_object.find(key) != m_object.end();
}
bool web::json::value::has_number_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_number();
}
bool web::json::value::has_integer_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_integer();
}
bool web::json::value::has_double_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_double();
}
bool web::json::value::has_boolean_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_boolean();
}
bool web::json::value::has_string_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_string();
}
bool web::json::value::has_array_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_array();
}
bool web::json::value::has_object_field(const utility::string_t& key) const
{
return has_field(key) && at(key).is_object();
}
utility::string_t json::value::to_string() const
{
#ifndef _WIN32
utility::details::scoped_c_thread_locale locale;
#endif
return m_value->to_string();
}
bool json::value::operator==(const json::value& other) const
{
if (this->m_value.get() == other.m_value.get()) return true;
if (this->type() != other.type()) return false;
switch (this->type())
{
case Null: return true;
case Number: return this->as_number() == other.as_number();
case Boolean: return this->as_bool() == other.as_bool();
case String: return this->as_string() == other.as_string();
case Object:
return static_cast<const json::details::_Object*>(this->m_value.get())
->is_equal(static_cast<const json::details::_Object*>(other.m_value.get()));
case Array:
return static_cast<const json::details::_Array*>(this->m_value.get())
->is_equal(static_cast<const json::details::_Array*>(other.m_value.get()));
}
__assume(0);
}
void web::json::value::erase(size_t index) { return this->as_array().erase(index); }
void web::json::value::erase(const utility::string_t& key) { return this->as_object().erase(key); }
// at() overloads
web::json::value& web::json::value::at(size_t index) { return this->as_array().at(index); }
const web::json::value& web::json::value::at(size_t index) const { return this->as_array().at(index); }
web::json::value& web::json::value::at(const utility::string_t& key) { return this->as_object().at(key); }
const web::json::value& web::json::value::at(const utility::string_t& key) const { return this->as_object().at(key); }
web::json::value& web::json::value::operator[](const utility::string_t& key)
{
if (this->is_null())
{
m_value.reset(new web::json::details::_Object(details::g_keep_json_object_unsorted));
#ifdef ENABLE_JSON_VALUE_VISUALIZER
m_kind = value::Object;
#endif
}
return m_value->index(key);
}
web::json::value& web::json::value::operator[](size_t index)
{
if (this->is_null())
{
m_value.reset(new web::json::details::_Array());
#ifdef ENABLE_JSON_VALUE_VISUALIZER
m_kind = value::Array;
#endif
}
return m_value->index(index);
}
// Remove once VS 2013 is no longer supported.
#if defined(_WIN32) && _MSC_VER < 1900
static web::json::details::json_error_category_impl instance;
#endif
const web::json::details::json_error_category_impl& web::json::details::json_error_category()
{
#if !defined(_WIN32) || _MSC_VER >= 1900
static web::json::details::json_error_category_impl instance;
#endif
return instance;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,254 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* HTTP Library: JSON parser and writer
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#include "pch.h"
#include <stdio.h>
#ifndef _WIN32
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#endif
using namespace web;
using namespace web::json;
using namespace utility;
using namespace utility::conversions;
//
// JSON Serialization
//
#ifdef _WIN32
void web::json::value::serialize(std::ostream& stream) const
{
// This has better performance than writing directly to stream.
std::string str;
m_value->serialize_impl(str);
stream << str;
}
void web::json::value::format(std::basic_string<wchar_t>& string) const { m_value->format(string); }
#endif
void web::json::value::serialize(utility::ostream_t& stream) const
{
#ifndef _WIN32
utility::details::scoped_c_thread_locale locale;
#endif
// This has better performance than writing directly to stream.
utility::string_t str;
m_value->serialize_impl(str);
stream << str;
}
void web::json::value::format(std::basic_string<char>& string) const { m_value->format(string); }
template<typename CharType>
void web::json::details::append_escape_string(std::basic_string<CharType>& str,
const std::basic_string<CharType>& escaped)
{
for (const auto& ch : escaped)
{
switch (ch)
{
case '\"':
str += '\\';
str += '\"';
break;
case '\\':
str += '\\';
str += '\\';
break;
case '\b':
str += '\\';
str += 'b';
break;
case '\f':
str += '\\';
str += 'f';
break;
case '\r':
str += '\\';
str += 'r';
break;
case '\n':
str += '\\';
str += 'n';
break;
case '\t':
str += '\\';
str += 't';
break;
default:
// If a control character then must unicode escaped.
if (ch >= 0 && ch <= 0x1F)
{
static const std::array<CharType, 16> intToHex = {
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}};
str += '\\';
str += 'u';
str += '0';
str += '0';
str += intToHex[(ch & 0xF0) >> 4];
str += intToHex[ch & 0x0F];
}
else
{
str += ch;
}
}
}
}
void web::json::details::format_string(const utility::string_t& key, utility::string_t& str)
{
str.push_back('"');
append_escape_string(str, key);
str.push_back('"');
}
#ifdef _WIN32
void web::json::details::format_string(const utility::string_t& key, std::string& str)
{
str.push_back('"');
append_escape_string(str, utility::conversions::to_utf8string(key));
str.push_back('"');
}
#endif
void web::json::details::_String::format(std::basic_string<char>& str) const
{
str.push_back('"');
if (m_has_escape_char)
{
append_escape_string(str, utility::conversions::to_utf8string(m_string));
}
else
{
str.append(utility::conversions::to_utf8string(m_string));
}
str.push_back('"');
}
void web::json::details::_Number::format(std::basic_string<char>& stream) const
{
if (m_number.m_type != number::type::double_type)
{
// #digits + 1 to avoid loss + 1 for the sign + 1 for null terminator.
const size_t tempSize = std::numeric_limits<uint64_t>::digits10 + 3;
char tempBuffer[tempSize];
#ifdef _WIN32
// This can be improved performance-wise if we implement our own routine
if (m_number.m_type == number::type::signed_type)
_i64toa_s(m_number.m_intval, tempBuffer, tempSize, 10);
else
_ui64toa_s(m_number.m_uintval, tempBuffer, tempSize, 10);
const auto numChars = strnlen_s(tempBuffer, tempSize);
#else
int numChars;
if (m_number.m_type == number::type::signed_type)
numChars = snprintf(tempBuffer, tempSize, "%" PRId64, m_number.m_intval);
else
numChars = snprintf(tempBuffer, tempSize, "%" PRIu64, m_number.m_uintval);
#endif
stream.append(tempBuffer, numChars);
}
else
{
// #digits + 2 to avoid loss + 1 for the sign + 1 for decimal point + 5 for exponent (e+xxx) + 1 for null
// terminator
const size_t tempSize = std::numeric_limits<double>::digits10 + 10;
char tempBuffer[tempSize];
#ifdef _WIN32
const auto numChars = _sprintf_s_l(tempBuffer,
tempSize,
"%.*g",
utility::details::scoped_c_thread_locale::c_locale(),
std::numeric_limits<double>::digits10 + 2,
m_number.m_value);
#else
const auto numChars =
snprintf(tempBuffer, tempSize, "%.*g", std::numeric_limits<double>::digits10 + 2, m_number.m_value);
#endif
stream.append(tempBuffer, numChars);
}
}
#ifdef _WIN32
void web::json::details::_String::format(std::basic_string<wchar_t>& str) const
{
str.push_back(L'"');
if (m_has_escape_char)
{
append_escape_string(str, m_string);
}
else
{
str.append(m_string);
}
str.push_back(L'"');
}
void web::json::details::_Number::format(std::basic_string<wchar_t>& stream) const
{
if (m_number.m_type != number::type::double_type)
{
// #digits + 1 to avoid loss + 1 for the sign + 1 for null terminator.
const size_t tempSize = std::numeric_limits<uint64_t>::digits10 + 3;
wchar_t tempBuffer[tempSize];
if (m_number.m_type == number::type::signed_type)
_i64tow_s(m_number.m_intval, tempBuffer, tempSize, 10);
else
_ui64tow_s(m_number.m_uintval, tempBuffer, tempSize, 10);
stream.append(tempBuffer, wcsnlen_s(tempBuffer, tempSize));
}
else
{
// #digits + 2 to avoid loss + 1 for the sign + 1 for decimal point + 5 for exponent (e+xxx) + 1 for null
// terminator
const size_t tempSize = std::numeric_limits<double>::digits10 + 10;
wchar_t tempBuffer[tempSize];
const int numChars = _swprintf_s_l(tempBuffer,
tempSize,
L"%.*g",
utility::details::scoped_c_thread_locale::c_locale(),
std::numeric_limits<double>::digits10 + 2,
m_number.m_value);
stream.append(tempBuffer, numChars);
}
}
#endif
const utility::string_t& web::json::details::_String::as_string() const { return m_string; }
const utility::string_t& web::json::value::as_string() const { return m_value->as_string(); }
utility::string_t json::value::serialize() const
{
#ifndef _WIN32
utility::details::scoped_c_thread_locale locale;
#endif
return m_value->to_string();
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,260 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#include "pch.h"
using namespace web;
using namespace utility;
std::vector<unsigned char> _from_base64(const utility::string_t& str);
utility::string_t _to_base64(const unsigned char* ptr, size_t size);
std::vector<unsigned char> __cdecl conversions::from_base64(const utility::string_t& str) { return _from_base64(str); }
utility::string_t __cdecl conversions::to_base64(const std::vector<unsigned char>& input)
{
if (input.size() == 0)
{
// return empty string
return utility::string_t();
}
return _to_base64(&input[0], input.size());
}
utility::string_t __cdecl conversions::to_base64(uint64_t input)
{
return _to_base64(reinterpret_cast<const unsigned char*>(&input), sizeof(input));
}
static const char* _base64_enctbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const std::array<unsigned char, 128> _base64_dectbl = {
{255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62,
255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 254, 255, 255, 255, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255}};
struct _triple_byte
{
unsigned char _1_1 : 2;
unsigned char _0 : 6;
unsigned char _2_1 : 4;
unsigned char _1_2 : 4;
unsigned char _3 : 6;
unsigned char _2_2 : 2;
};
struct _double_byte
{
unsigned char _1_1 : 2;
unsigned char _0 : 6;
unsigned char _2_1 : 4;
unsigned char _1_2 : 4;
};
struct _single_byte
{
unsigned char _1_1 : 2;
unsigned char _0 : 6;
};
//
// A note on the implementation of BASE64 encoding and decoding:
//
// This is a fairly basic and naive implementation; there is probably a lot of room for
// performance improvement, as well as for adding options such as support for URI-safe base64,
// ignoring CRLF, relaxed validation rules, etc. The decoder is currently pretty strict.
//
#ifdef __GNUC__
// gcc is concerned about the bitfield uses in the code, something we simply need to ignore.
#pragma GCC diagnostic ignored "-Wconversion"
#endif
std::vector<unsigned char> _from_base64(const utility::string_t& input)
{
std::vector<unsigned char> result;
if (input.empty()) return result;
size_t padding = 0;
// Validation
{
auto size = input.size();
if ((size % 4) != 0)
{
throw std::runtime_error("length of base64 string is not an even multiple of 4");
}
for (auto iter = input.begin(); iter != input.end(); ++iter, --size)
{
const size_t ch_sz = static_cast<size_t>(*iter);
if (ch_sz >= _base64_dectbl.size() || _base64_dectbl[ch_sz] == 255)
{
throw std::runtime_error("invalid character found in base64 string");
}
if (_base64_dectbl[ch_sz] == 254)
{
padding++;
// padding only at the end
if (size > 2)
{
throw std::runtime_error("invalid padding character found in base64 string");
}
if (size == 2)
{
const size_t ch2_sz = static_cast<size_t>(*(iter + 1));
if (ch2_sz >= _base64_dectbl.size() || _base64_dectbl[ch2_sz] != 254)
{
throw std::runtime_error("invalid padding character found in base64 string");
}
}
}
}
}
auto size = input.size();
const char_t* ptr = &input[0];
auto outsz = (size / 4) * 3;
outsz -= padding;
result.resize(outsz);
size_t idx = 0;
for (; size > 4; ++idx)
{
unsigned char target[3];
memset(target, 0, sizeof(target));
_triple_byte* record = reinterpret_cast<_triple_byte*>(target);
unsigned char val0 = _base64_dectbl[ptr[0]];
unsigned char val1 = _base64_dectbl[ptr[1]];
unsigned char val2 = _base64_dectbl[ptr[2]];
unsigned char val3 = _base64_dectbl[ptr[3]];
record->_0 = val0;
record->_1_1 = val1 >> 4;
result[idx] = target[0];
record->_1_2 = val1 & 0xF;
record->_2_1 = val2 >> 2;
result[++idx] = target[1];
record->_2_2 = val2 & 0x3;
record->_3 = val3 & 0x3F;
result[++idx] = target[2];
ptr += 4;
size -= 4;
}
// Handle the last four bytes separately, to avoid having the conditional statements
// in all the iterations (a performance issue).
{
unsigned char target[3];
memset(target, 0, sizeof(target));
_triple_byte* record = reinterpret_cast<_triple_byte*>(target);
unsigned char val0 = _base64_dectbl[ptr[0]];
unsigned char val1 = _base64_dectbl[ptr[1]];
unsigned char val2 = _base64_dectbl[ptr[2]];
unsigned char val3 = _base64_dectbl[ptr[3]];
record->_0 = val0;
record->_1_1 = val1 >> 4;
result[idx] = target[0];
record->_1_2 = val1 & 0xF;
if (val2 != 254)
{
record->_2_1 = val2 >> 2;
result[++idx] = target[1];
}
else
{
// There shouldn't be any information (ones) in the unused bits,
if (record->_1_2 != 0)
{
throw std::runtime_error("Invalid end of base64 string");
}
return result;
}
record->_2_2 = val2 & 0x3;
if (val3 != 254)
{
record->_3 = val3 & 0x3F;
result[++idx] = target[2];
}
else
{
// There shouldn't be any information (ones) in the unused bits.
if (record->_2_2 != 0)
{
throw std::runtime_error("Invalid end of base64 string");
}
return result;
}
}
return result;
}
utility::string_t _to_base64(const unsigned char* ptr, size_t size)
{
utility::string_t result;
for (; size >= 3;)
{
const _triple_byte* record = reinterpret_cast<const _triple_byte*>(ptr);
unsigned char idx0 = record->_0;
unsigned char idx1 = (record->_1_1 << 4) | record->_1_2;
unsigned char idx2 = (record->_2_1 << 2) | record->_2_2;
unsigned char idx3 = record->_3;
result.push_back(char_t(_base64_enctbl[idx0]));
result.push_back(char_t(_base64_enctbl[idx1]));
result.push_back(char_t(_base64_enctbl[idx2]));
result.push_back(char_t(_base64_enctbl[idx3]));
size -= 3;
ptr += 3;
}
switch (size)
{
case 1:
{
const _single_byte* record = reinterpret_cast<const _single_byte*>(ptr);
unsigned char idx0 = record->_0;
unsigned char idx1 = (record->_1_1 << 4);
result.push_back(char_t(_base64_enctbl[idx0]));
result.push_back(char_t(_base64_enctbl[idx1]));
result.push_back('=');
result.push_back('=');
break;
}
case 2:
{
const _double_byte* record = reinterpret_cast<const _double_byte*>(ptr);
unsigned char idx0 = record->_0;
unsigned char idx1 = (record->_1_1 << 4) | record->_1_2;
unsigned char idx2 = (record->_2_1 << 2);
result.push_back(char_t(_base64_enctbl[idx0]));
result.push_back(char_t(_base64_enctbl[idx1]));
result.push_back(char_t(_base64_enctbl[idx2]));
result.push_back('=');
break;
}
}
return result;
}

View File

@@ -1,157 +0,0 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* Credential and proxy utilities.
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#include "pch.h"
#include <assert.h>
#if defined(_WIN32) && !defined(__cplusplus_winrt)
#include <Wincrypt.h>
#endif
#if defined(__cplusplus_winrt)
#include <robuffer.h>
#endif
namespace web
{
namespace details
{
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
#if defined(__cplusplus_winrt)
// Helper function to zero out memory of an IBuffer.
void winrt_secure_zero_buffer(Windows::Storage::Streams::IBuffer ^ buffer)
{
Microsoft::WRL::ComPtr<IInspectable> bufferInspectable(reinterpret_cast<IInspectable*>(buffer));
Microsoft::WRL::ComPtr<Windows::Storage::Streams::IBufferByteAccess> bufferByteAccess;
bufferInspectable.As(&bufferByteAccess);
// This shouldn't happen but if can't get access to the raw bytes for some reason
// then we can't zero out.
byte* rawBytes;
if (bufferByteAccess->Buffer(&rawBytes) == S_OK)
{
SecureZeroMemory(rawBytes, buffer->Length);
}
}
winrt_encryption::winrt_encryption(const std::wstring& data)
{
auto provider = ref new Windows::Security::Cryptography::DataProtection::DataProtectionProvider(
ref new Platform::String(L"Local=user"));
// Create buffer containing plain text password.
Platform::ArrayReference<unsigned char> arrayref(
reinterpret_cast<unsigned char*>(const_cast<std::wstring::value_type*>(data.c_str())),
static_cast<unsigned int>(data.size()) * sizeof(std::wstring::value_type));
Windows::Storage::Streams::IBuffer ^ plaintext =
Windows::Security::Cryptography::CryptographicBuffer::CreateFromByteArray(arrayref);
m_buffer = pplx::create_task(provider->ProtectAsync(plaintext));
m_buffer.then(
[plaintext](pplx::task<Windows::Storage::Streams::IBuffer ^>) { winrt_secure_zero_buffer(plaintext); });
}
plaintext_string winrt_encryption::decrypt() const
{
// To fully guarantee asynchrony would require significant impact on existing code. This code path
// is never run on a user's thread and is only done once when setting up a connection.
auto encrypted = m_buffer.get();
auto provider = ref new Windows::Security::Cryptography::DataProtection::DataProtectionProvider();
auto plaintext = pplx::create_task(provider->UnprotectAsync(encrypted)).get();
// Get access to raw bytes in plain text buffer.
Microsoft::WRL::ComPtr<IInspectable> bufferInspectable(reinterpret_cast<IInspectable*>(plaintext));
Microsoft::WRL::ComPtr<Windows::Storage::Streams::IBufferByteAccess> bufferByteAccess;
bufferInspectable.As(&bufferByteAccess);
byte* rawPlaintext;
const auto& result = bufferByteAccess->Buffer(&rawPlaintext);
if (result != S_OK)
{
throw ::utility::details::create_system_error(result);
}
// Construct string and zero out memory from plain text buffer.
auto data = plaintext_string(
new std::wstring(reinterpret_cast<const std::wstring::value_type*>(rawPlaintext), plaintext->Length / 2));
SecureZeroMemory(rawPlaintext, plaintext->Length);
return std::move(data);
}
#else
win32_encryption::win32_encryption(const std::wstring& data) : m_numCharacters(data.size())
{
// Early return because CryptProtectMemory crashes with empty string
if (m_numCharacters == 0)
{
return;
}
if (data.size() > (std::numeric_limits<DWORD>::max)() / sizeof(wchar_t))
{
throw std::length_error("Encryption string too long");
}
const auto dataSizeDword = static_cast<DWORD>(data.size() * sizeof(wchar_t));
// Round up dataSizeDword to be a multiple of CRYPTPROTECTMEMORY_BLOCK_SIZE
static_assert(CRYPTPROTECTMEMORY_BLOCK_SIZE == 16, "Power of 2 assumptions in this bit masking violated");
const auto mask = static_cast<DWORD>(CRYPTPROTECTMEMORY_BLOCK_SIZE - 1u);
const auto dataNumBytes = (dataSizeDword & ~mask) + ((dataSizeDword & mask) != 0) * CRYPTPROTECTMEMORY_BLOCK_SIZE;
assert((dataNumBytes % CRYPTPROTECTMEMORY_BLOCK_SIZE) == 0);
assert(dataNumBytes >= dataSizeDword);
m_buffer.resize(dataNumBytes);
memcpy_s(m_buffer.data(), m_buffer.size(), data.c_str(), dataNumBytes);
if (!CryptProtectMemory(m_buffer.data(), dataNumBytes, CRYPTPROTECTMEMORY_SAME_PROCESS))
{
throw ::utility::details::create_system_error(GetLastError());
}
}
win32_encryption::~win32_encryption() { SecureZeroMemory(m_buffer.data(), m_buffer.size()); }
plaintext_string win32_encryption::decrypt() const
{
// Copy the buffer and decrypt to avoid having to re-encrypt.
auto result = plaintext_string(new std::wstring(reinterpret_cast<const std::wstring::value_type*>(m_buffer.data()),
m_buffer.size() / sizeof(wchar_t)));
auto& data = *result;
if (!m_buffer.empty())
{
if (!CryptUnprotectMemory(&data[0], static_cast<DWORD>(m_buffer.size()), CRYPTPROTECTMEMORY_SAME_PROCESS))
{
throw ::utility::details::create_system_error(GetLastError());
}
assert(m_numCharacters <= m_buffer.size());
SecureZeroMemory(&data[m_numCharacters], data.size() - m_numCharacters);
data.erase(m_numCharacters);
}
return result;
}
#endif
#endif
void zero_memory_deleter::operator()(::utility::string_t* data) const
{
CASABLANCA_UNREFERENCED_PARAMETER(data);
#if defined(_WIN32)
SecureZeroMemory(&(*data)[0], data->size() * sizeof(::utility::string_t::value_type));
delete data;
#endif
}
} // namespace details
} // namespace web

1
deps/cxxopts vendored Submodule

Submodule deps/cxxopts added at 12e496da3d

8
deps/cxxopts.props vendored Normal file
View File

@@ -0,0 +1,8 @@
<Project>
<Import Project="restore_git_submodules.props" Condition="'$(RestoreGitSubmodulesImported)' == ''" />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)cxxopts\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
</Project>

12
deps/restore_git_submodules.props vendored Normal file
View File

@@ -0,0 +1,12 @@
<Project>
<PropertyGroup>
<RestoreGitSubmodulesImported>true</RestoreGitSubmodulesImported>
</PropertyGroup>
<Target Name="RestoreGitSubmodules" BeforeTargets="PrepareForBuild">
<Exec IgnoreExitCode="true"
EchoOff="true"
StandardOutputImportance="low"
StandardErrorImportance="low"
Command="git submodule update --init" />
</Target>
</Project>

1
deps/spdlog vendored Submodule

Submodule deps/spdlog added at cbe9448650

9
deps/spdlog.props vendored Normal file
View File

@@ -0,0 +1,9 @@
<Project>
<Import Project="restore_git_submodules.props" Condition="'$(RestoreGitSubmodulesImported)' == ''" />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)spdlog\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>SPDLOG_WCHAR_TO_UTF8_SUPPORT;SPDLOG_COMPILED_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
</Project>

View File

@@ -1,29 +0,0 @@
# Code Organization
## Rules
- **Follow the pattern of what you already see in the code**
- Try to package new ideas/components into libraries that have nicely defined interfaces
- Package new ideas into classes or refactor existing ideas into a class as you extend
## Code Overview
General project organization:
#### The [`build`](/build) folder
Contains the Azure pipeline CI build scripts.
#### The [`deps`](/deps) folder
Contains other projects, that PowerToys uses as dependency.
#### The [`doc`](/doc) folder
Documentation for the project, including a [coding guide](/doc/coding) and [design docs](/doc/specs).
#### The [`installer`](/installer) folder
Contains the source code of the PowerToys installer.
#### The [`src`](/src) folder
Contains the source code of the PowerToys runner and of all of the PowerToys modules. **This is where the most of the magic happens.**
#### The [`tools`](/tools) folder
Various tools used by PowerToys. Includes the Visual Studio 2019 project template for new PowerToys.

View File

@@ -1,5 +0,0 @@
# Coding Style
## Philosophy
1. If it's inserting something into the existing classes/functions, try to follow the existing style as closely as possible.
1. If it's brand new code or refactoring a complete class or area of the code, please follow as Modern C++ of a style as you can and reference the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) as much as you possibly can.

109
doc/devdocs/common.md Normal file
View File

@@ -0,0 +1,109 @@
# Classes and structures
#### class Animation: [header](/src/common/animation.h) [source](/src/common/animation.cpp)
Animation helper class with two easing-in animations: linear and exponential.
#### class AsyncMessageQueue: [header](/src/common/async_message_queue.h)
Header-only asynchronous message queue. Used by `TwoWayPipeMessageIPC`.
#### class TwoWayPipeMessageIPC: [header](/src/common/two_way_pipe_message_ipc.h)
Header-only asynchronous IPC messaging class. Used by the runner to communicate with the settings window.
#### class D2DSVG: [header](/src/common/d2d_svg.h) [source](/src/common/d2d_svg.cpp)
Class for loading, rendering and for some basic modifications of SVG graphics.
#### class D2DText: [header](/src/common/d2d_text.h) [source](/src/common/d2d_text.cpp)
Class for rendering text using DirectX.
#### class D2DWindow: [header](/src/common/d2d_window.h) [source](/src/common/d2d_window.cpp)
Base class for creating borderless windows, with DirectX enabled rendering pipeline.
#### class DPIAware: [header](/src/common/dpi_aware.h) [source](/src/common/dpi_aware.cpp)
Helper class for creating DPI-aware applications.
#### struct MonitorInfo: [header](/src/common/monitors.h) [source](/src/common/monitors.cpp)
Class for obtaining information about physical displays connected to the machine.
#### class Settings, class PowerToyValues, class CustomActionObject: [header](/src/common/settings_objects.h) [source](/src/common/settings_objects.cpp)
Classes used to define settings screens for the PowerToys modules.
#### class Tasklist: [header](/src/common/tasklist_positions.h) [source](/src/common/tasklist_positions.cpp)
Class that can detect the position of the windows buttons on the taskbar. It also detects which window will react to pressing `WinKey + number`.
#### struct WindowsColors: [header](/src/common/windows_colors.h) [source](/src/common/windows_colors.cpp)
Class for detecting the current Windows color scheme.
# Helpers
#### Common helpers: [header](/src/common/common.h) [source](/src/common/common.cpp)
Various helper functions.
#### Settings helpers: [header](/src/common/settings_helpers.h)
Helper methods for the settings.
#### Start visible helper: [header](/src/common/start_visible.h) [source](/src/common/start_visible.cpp)
Contains function to test if the Start menu is visible.
# Toast Notifications
#### Notifications API [header](/src/common/notifications.h) [source](/src/common/notifications.cpp)
To use UWP-style toast notifications, simply include the header and call one of these functions:
```cpp
void show_toast(std::wstring_view message); // #1
void show_toast_background_activated( // #2
std::wstring_view message,
std::wstring_view background_handler_id,
std::vector<std::wstring_view> button_labels);
```
We might add more functions in the future if the need arises, e.g. `show_toast_xml` which will accept raw XML for rich customization.
Description:
- `#1` is for sending simple notifications without any callbacks or buttons
- `#2` is capable of showing a toast with multiple buttons and background activation
- `message` is a plain-text argument
Implement a toast activation handler/callback as a function in [handler_functions.cpp](/src/common/notifications_winrt/handler_functions.cpp) and register its `background_handler_id` via `handlers_map`, e.g.:
```cpp
// Your .cpp where you'd like to show a toast
#include <common/notifications.h>
void some_func() {
// ...
notifications::show_toast_background_activated(
L"Toast message!", // text displayed in a toast
L"awesome_toast", // activation handler id
{L"Press me!", L"Also could press me!", L"I'm here to be pressed!"} // buttons in a toast
);
```
```cpp
// handler_functions.cpp
void awesome_toast_handler(IBackgroundTaskInstance, const size_t button_id)
{
switch(button_id)
{
case 0:
// handle "Press me!" button click
case 1:
// handle "Also could press me!" button click
case 2:
// handle "I'm here to be pressed!" button click
}
}
namespace
{
const std::unordered_map<std::wstring_view, handler_function_t> handlers_map = {
// ...other handlers...
{L"awesome_toast", awesome_toast_handler}
};}
```
Note: since _background activation_ implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, _foreground activation_ is [handled the same as background](https://docs.microsoft.com/en-US/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation), therefore we don't make a dedicated API for it. You can read more on the rationale of the current design [here](https://github.com/microsoft/PowerToys/pull/1178#issue-368768337).

71
doc/devdocs/guidance.md Normal file
View File

@@ -0,0 +1,71 @@
# Coding Guidance
## Working With Strings
In order to support localization **YOU SHOULD NOT** have hardcoded UI display strings in your code. Instead, use resource files to consume strings.
### For CPP
Use [`StringTable` resource][String Table] to store the strings and resource header file(`resource.h`) to store Id's linked to the UI display string. Add the strings with Id's referenced from the header file to the resource-definition script file. You can use [Visual Studio Resource Editor][VS Resource Editor] to create and manage resource files.
- `resource.h`:
XXX must be a unique int in the list (mostly the int ID of the last string id plus one):
```cpp
#define IDS_MODULE_DISPLAYNAME XXX
```
- `StringTable` in resource-definition script file `validmodulename.rc`:
```
STRINGTABLE
BEGIN
IDS_MODULE_DISPLAYNAME L"Module Name"
END
```
- Use the `GET_RESOURCE_STRING(UINT resource_id)` method to consume strings in your code.
```cpp
#include <common.h>
extern "C" IMAGE_DOS_HEADER __ImageBase;
std::wstring GET_RESOURCE_STRING(IDS_MODULE_DISPLAYNAME)
```
### For C#
Use [XML resource file(.resx)][Resx Files] to store the UI display strings and [`Resource Manager`][Resource Manager] to consume those strings in the code. You can use [Visual Studio][Resx Files VS] to create and manage XML resources files.
- `Resources.resx`
```xml
<data name="ValidUIDisplayString" xml:space="preserve">
<value>Description to be displayed on UI.</value>
<comment>This text is displayed when XYZ button clicked.</comment>
</data>
```
- Use [`Resource Manager`][Resource Manager] to consume strings in code.
```csharp
System.Resources.ResourceManager manager = new System.Resources.ResourceManager(baseName, assembly);
string validUIDisplayString = manager.GetString("ValidUIDisplayString", resourceCulture);
```
In case of Visual Studio is used to create the resource file. Simply use the `Resources` class in auto-generated `Resources.Designer.cs` file to access the strings which encapsulate the [`Resource Manager`][Resource Manager] logic.
```csharp
string validUIDisplayString = Resources.ValidUIDisplayString;
```
## More On Coding Guidance
Please review these brief docs below relating to our coding standards etc.
* [Coding Style](./style.md)
* [Code Organization](./readme.md)
[VS Resource Editor]: https://docs.microsoft.com/en-us/cpp/windows/resource-editors?view=vs-2019
[String Table]: https://docs.microsoft.com/en-us/windows/win32/menurc/stringtable-resource
[Resx Files VS]: https://docs.microsoft.com/en-us/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resource-files-in-visual-studio
[Resx Files]: https://docs.microsoft.com/en-us/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resources-in-resx-files
[Resource Manager]: https://docs.microsoft.com/en-us/dotnet/api/system.resources.resourcemanager?view=netframework-4.8

173
doc/devdocs/localization.md Normal file
View File

@@ -0,0 +1,173 @@
# Localization
## Table of Contents
1. [Localization on the pipeline (CDPX)](#localization-on-the-pipeline-cdpx)
1. [UWP Special case](#uwp-special-case)
2. [Enabling localization on a new project](#enabling-localization-on-a-new-project)
1. [C++](#c)
2. [C#](#c-1)
3. [UWP](#uwp)
3. [Lcl Files](#lcl-files)
4. [Possible Issues in localization PRs (LEGO)](#possible-issues-in-localization-prs-lego)
5. [Enabling localized MSI for a new project](#enabling-localized-msi-for-a-new-project)
## Localization on the pipeline (CDPX)
[The localization step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L45-L52) is run on the pipeline before the solution is built. This step runs the [build-localization](https://github.com/microsoft/PowerToys/blob/master/.pipelines/build-localization.cmd) script, which generates resx files for all the projects with localization enabled using the `Localization.XLoc` package.
The [`Localization.XLoc`](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L24-L25) tool is run on the repo root, and it checks for all occurrences of `LocProject.json`. Each localized project has a `LocProject.json` file in the project root, which contains the location of the English resx file, list of languages for localization, and the output path where the localized resx files are to be copied to. In addition to this, some other parameters can be set, such as whether the language ID should be added as a folder in the file path or in the file name. When the CDPX pipeline is run, the localization team is notified of changes in the English resx files. For each project with localization enabled, a `loc` folder (see [this](https://github.com/microsoft/PowerToys/tree/master/src/modules/launcher/Microsoft.Launcher/loc) for example) is created in the same directory as the `LocProject.json` file. The folder contains language specific folders which in turn have a nested folder path equivalent to `OutputPath` in the `LocProject.json`. Each of these folders contain one `lcl` file. The `lcl` files contain the English resources along with their translation for that language. These are described in more detail [here](#lcl-files). Once the `.resx` files are generated, they will be used during the `Build PowerToys` step for localized versions of the modules.
Since the localization script requires certain nuget packages, the [`restore-localization`](https://github.com/microsoft/PowerToys/blob/master/.pipelines/restore-localization.cmd) script is run before running `build-localization` to install all the required packages. This script must [run in the `restore` step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L37-L39) of pipeline because [the host is network isolated](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipelinhttps://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipeline?anchor=overview) at the `build` step. The [Toolset package source](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L23) is used for this.
The process and variables that can be tweaked on the pipeline are described in more detail [here](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/290/Localization).
The localized resource dlls for C# projects are added to the MSI only for build on the pipeline. This is done by checking if the [`IsPipeline` variable is defined](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L804-L805), which gets defined before building the installer on the pipeline [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/build-installer.cmd#L4). This is done because the localized resx files are only present on the pipeline, and not having this check would result in the installer project failing to build locally.
### UWP Special case
C# projects normally expect localized resource files with the language id in the file name as Resources.`langId`.resx, where `langId` is generally a two character code except for language with specific variants (like zh-Hans or pt-BR):
For example, `path\Resources.resx` for English and `path\Resources.fr.resx` for French.
UWP differs from this as it expects the resources to have the same Resources.resw file name, but they should be present in language specific folders, with the full language ID (such as fr-fr, zh-hans, pt-br, etc.)
For example, `path\en-us\Resources.resw` for English and `path\fr-fr\Resources.resw` for French.
Since the pipeline generates it in this format, [a script is run](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L29-L31) to move these resw files to the correct format expected by all UWP projects. Currently the only UWP project is [Microsoft.PowerToys.Settings.UI](https://github.com/microsoft/PowerToys/tree/master/src/core/Microsoft.PowerToys.Settings.UI). The script used for moving the resources can be [found here](https://github.com/microsoft/PowerToys/blob/master/tools/localization/move_uwp_resources.ps1). The equivalent full language IDs for each shortened language ID obtained from the pipeline has been hardcoded in the script.
## Enabling localization on a new project
To enable localization on a new project, the first step is to create a file `LocProject.json` in the project root.
For example, for a project in the folder `src\path` where the resx file is present in `resources\Resources.resx`, the LocProject.json file will contain the following:
```
{
"Projects": [
{
"LanguageSet": "Azure_Languages",
"LocItems": [
{
"SourceFile": "src\\path\\resources\\Resources.resx",
"CopyOption": "LangIDOnName",
"OutputPath": "src\\path\\resources"
}
]
}
]
}
```
The rest of the steps depend on the project type and are covered in the sections below. The steps to add the localized files to the MSI can be found [here](#Enabling-localized-MSI-for-a-new-project).
### C++
C++ projects do not support `resx` files, and instead use `rc` files along with `resource.h` files. The CDPX pipeline however doesn't support localizing `rc` files and the other alternative they support is directly translating the resources from the binary which makes it harder to maintain resources. To avoid this, a custom script has been added which expects a resx file and converts the entries to an rc file with a string table and adds resource declarations to a resource.h file so that the resources can be compiled with the C++ project.
If you already have a .rc file, copy the string table to a separate txt file and run the [convert-stringtable-to-resx.ps1](https://github.com/microsoft/PowerToys/blob/master/tools/build/convert-stringtable-to-resx.ps1) script on it. This script is not very robust to input, and requires the data in a specific format, where `IDS_ResName L"ResourceValue"` and any number of spaces can be present in between. The script converts this file to the format expected by [`resgen`](https://docs.microsoft.com/en-us/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert), which will convert it to resx. The resource names are changed from all uppercase to title case, and the `IDS_` prefix is removed. Escape characters might have to be manually replaced, for example .rc files would have escaped double quotes as `""`, so this should be replaced with just `"` before converting to the resx files.
After generating the resx file, rename the existing rc and h files to ProjName.base.rc and resource.base.h. In the rc file remove the string table which is to be localized and in the .h file remove all `#define`s corresponding to localized resources. In the vcxproj of the C++ project, add the following build event:
```
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 . resource.base.h resource.h ProjName.base.rc ProjName.rc" />
</Target>
```
This event runs a script which generates a resource.h and ProjName.rc in the `Generated Files` folder using the strings in all the resx files along with the existing information in resource.base.h and ProjName.base.rc. The script can be found [here](https://github.com/microsoft/PowerToys/blob/master/tools/build/convert-resx-to-rc.ps1). The script uses [`resgen`](https://docs.microsoft.com/en-us/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) to convert the resx file to a string table expected in the .rc file format. When the resources are added to the rc file the `IDS_` prefix is added and resource names are in upper case (as it was originally). Any occurrences of `"` in the string resource is escaped as `""` to prevent build errors. The string tables are added to the rc file in the following format:
```
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
strings
END
#endif
```
Since there is no API to identify the `AFX_TARG_*`, `LANG_*` or `SUBLANG_*` values from each langId from the pipeline, these are hardcoded in the script (for each language) as done [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/tools/build/convert-resx-to-rc.ps1#L50-L77). **If any other languages are added in the future, this script will have to be updated.** In order to determine what are the language codes, you can open the rc file in Resource View, right click the string table and press `Insert Copy` and choose the corresponding language. This autogenerates the required code and can be used to figure out the language codes. The files also add the resource declarations to a resource.h file, starting from 101 by default(this can be changed by an optional argument). Since the output files will be generated in `Generated Files`, any includes in these two files will require an additional `..\` and wherever resource.h is used, it will have to be included as `Generated Files\resource.h`. While adding `resource.base.h` and `ProjName.base.rc` to the vcxproj, these should be modified to not participate in the build to avoid build errors:
```
<None Include="Resources.resx" />
```
Some rc/resource.h files might be used in multiple projects (for example, KBM). To ensure the projects build for these cases, the build event can be added to the entire directory so that the rc files are generated before any project is built. See [Directory.Build.targets](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/Directory.Build.targets) for an example.
Check [this PR](https://github.com/microsoft/PowerToys/pull/6104) for an example for making these changes for a C++ project.
### C#
Since C# projects natively support `resx` files, the only step required here is to include all the resx files in the build. For .NET Core projects this is done automatically and the .csproj does not need to be modified. For other projects, the following line needs to be added:
```
<EmbeddedResource Include="Properties\Resources.*.resx" />
```
**Note:** Building with localized resources may cause a build warning `Referenced assembly 'mscorlib.dll' targets a different processor` which is a VS bug. More details can be found [here](https://github.com/microsoft/PowerToys/issues/7269).
**Note:** If a project needs to be migrated from XAML resources to resx, the easiest way to convert the resources would be to change to format to `=` separates resources by either manually (by Ctrl+H on a text editor), or by a script, and then running [`resgen`](https://docs.microsoft.com/en-us/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) on `Developer Command Prompt for VS` to convert it to resx format.
```
<system:String x:Key="wox_plugin_calculator_plugin_name">Calculator</system:String>
<system:String x:Key="wox_plugin_calculator_plugin_description">Allows to do mathematical calculations.(Try 5*3-2 in Wox)</system:String>
<system:String x:Key="wox_plugin_calculator_not_a_number">Not a number (NaN)</system:String>
```
to
```
wox_plugin_calculator_plugin_name=Calculator
wox_plugin_calculator_plugin_description=Allows to do mathematical calculations.(Try 5*3-2 in Wox)
wox_plugin_calculator_not_a_number=Not a number (NaN)
```
After adding the resx file to the project along with the resource generator, references to the strings will have to be replaced with `Properties.Resources.resName` rather than the custom APIs. Check [this PR](https://github.com/microsoft/PowerToys/pull/6165) for an example of the changes required.
### UWP
UWP projects expect `resw` files rather than `resx` (the format is almost the same). Unlike other C# projects, the files are expected in the format `fullLangId\Resources.resw`. To include these files in the build, replace the following line in the csproj:
```
<PRIResource Include="Strings\en-us\Resources.resw" />
```
to
```
<PRIResource Include="Strings\*\Resources.resw" />
```
## Lcl Files
Lcl files contain all the resources that are present in the English resx file, along with a translation if it has been added.
For example, an entry for a resource in the lcl file looks like this:
```
<Item ItemId=";EditKeyboard_WindowName" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remap keys]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Remapper des touches]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
```
The `<Tgt>` element would not be present in the initial commits of the lcl files, as only the English version of the string would be present.
**Note:** The CDPX Localization system has a fail-safe check on the lcl files, where if the English string value which is present inside `<Val><![CDATA[*]]></Val>` does not match the value present in the English Resources.resx file then the translated value will not be copied to the localized resx file. This is present so that obsolete translations would not be loaded when the English resource has changed, and the English string will be used rather than the obsolete translation.
## Possible Issues in localization PRs (LEGO)
Since the LEGO PRs update some of the strings in LCL files at a time, there can be multiple PRs which modify the same files, leading to merge conflicts. In most cases this would show up on GitHub as a merge conflict, but sometimes a bad git merge may occur, and the file could end up with incorrect formatting, such as two `<Tgt>` elements for a single resource. These can be fixed by ensuring the elements follow the format described in [this section](#lcl-files). To catch such errors, the build farm should be run for every LEGO PR and if any error occurs in the localization step, we should check the corresponding resx/lcl files for conflicts.
## Enabling localized MSI for a new project
For C++ and UWP projects no additional files are generated with localization that need to be added to the MSI. For C++ projects all the resources are added to the dll/exe, while for UWP projects they are added to the `resources.pri` file (which is present even for an unlocalized project). To verify if the localized resources are added to the `resources.pri` file the following steps can be done:
- Open `Developer Command Prompt for VS`
- After navigating to the folder containing the pri file, run the following command:
makepri.exe dump /if .\resources.pri
- Check the contents of the `resources.pri.xml` file that is generated from the command. The last section of the file will contain the resources with the strings in all the languages:
```
<NamedResource name="GeneralSettings_RunningAsAdminText" uri="ms-resource://f4f787a5-f0ae-47a9-be89-5408b1dd2b47/Resources/GeneralSettings_RunningAsAdminText">
<Candidate qualifiers="Language-FR" type="String">
<Value>Running as administrator</Value>
</Candidate>
<Candidate qualifiers="Language-EN-US" isDefault="true" type="String">
<Value>Running as administrator</Value>
</Candidate>
</NamedResource>
```
For C# projects, satellite dlls are generated when the project is built. For a project named `ProjName`, files are created in the format `langId\ProjName.resources.dll` where `langId` is in the same format as the lcl files. The satellite dlls need to be included with the MSI, but they must be added only if the solution is built from the build farm, as the localized resx files will not be present on local machines (and that could cause local builds of the installer to fail).
This can be done by adding the directory name of the project [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L806) and a resource component for the project can be created [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L845-L847) in this format:
```
<Component Id="ProjName_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)ProjNameInstallFolder">
<File Id="ProjName_$(var.IdSafeLanguage)_File" Source="$(var.BinX64Dir)modules\ProjName\$(var.Language)\ProjName.resources.dll" />
</Component>
```
We should also ensure the new dlls are signed by the pipeline. Currently all dlls of the form [`*.resources.dll` are signed](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/pipeline.user.windows.yml#L68).
**Note:** The resource dlls should be added to the MSI project only after the initial commit with the lcl files has been done by the Localization team. Otherwise the pipeline will fail as there wouldn't be any resx files to generate the dlls.

9
doc/devdocs/logging.md Normal file
View File

@@ -0,0 +1,9 @@
# How to use
We use the awesome [spdlog](https://github.com/gabime/spdlog) library for logging as a git submodule under the `deps` directory. To use it in your project, just include [spdlog.props](../../deps/spdlog.props) in a .vcxproj like this:
```xml
<Import Project="..\..\..\deps\spdlog.props" />
```
It'll add the required include dirs and link the library binary itself.
You can see many example usage of the library in its repository or in the [bootstrapper project](../../installer/PowerToysBootstrapper/bootstrapper/bootstrapper.cpp).

View File

@@ -0,0 +1,85 @@
## FancyZones Lib
#### [`FancyZones.cpp`](/src/modules/fancyzones/lib/FancyZones.cpp)
TODO
#### [`Settings.cpp`](/src/modules/fancyzones/lib/Settings.cpp)
TODO
#### [`trace.cpp`](/src/modules/fancyzones/lib/trace.cpp)
TODO
#### [`Zone.cpp`](/src/modules/fancyzones/lib/Zone.cpp)
TODO
#### [`ZoneSet.cpp`](/src/modules/fancyzones/lib/ZoneSet.cpp)
TODO
#### [`ZoneWindow.cpp`](/src/modules/fancyzones/lib/ZoneWindow.cpp)
TODO
## FancyZones Editor
#### [`App.xaml.cs`](/src/modules/fancyzones/editor/App.xaml.cs)
TODO
#### [`Properties\AssemblyInfo.cs`](/src/modules/fancyzones/editor/Properties\AssemblyInfo.cs)
TODO
#### [`CanvasEditor.xaml.cs`](/src/modules/fancyzones/editor/CanvasEditor.xaml.cs)
TODO
#### [`CanvasEditorWindow.xaml.cs`](/src/modules/fancyzones/editor/CanvasEditorWindow.xaml.cs)
TODO
#### [`Models\CanvasLayoutModel.cs`](/src/modules/fancyzones/editor/Models\CanvasLayoutModel.cs)
TODO
#### [`CanvasZone.xaml.cs`](/src/modules/fancyzones/editor/CanvasZone.xaml.cs)
TODO
#### [`EditorOverlay.xaml.cs`](/src/modules/fancyzones/editor/EditorOverlay.xaml.cs)
TODO
#### [`EditorWindow.cs`](/src/modules/fancyzones/editor/EditorWindow.cs)
TODO
#### [`GridEditor.xaml.cs`](/src/modules/fancyzones/editor/GridEditor.xaml.cs)
TODO
#### [`GridEditorWindow.xaml.cs`](/src/modules/fancyzones/editor/GridEditorWindow.xaml.cs)
TODO
#### [`Models\GridLayoutModel.cs`](/src/modules/fancyzones/editor/Models\GridLayoutModel.cs)
TODO
#### [`GridResizer.xaml.cs`](/src/modules/fancyzones/editor/GridResizer.xaml.cs)
TODO
#### [`GridZone.xaml.cs`](/src/modules/fancyzones/editor/GridZone.xaml.cs)
TODO
#### [`Models\LayoutModel.cs`](/src/modules/fancyzones/editor/Models/LayoutModel.cs)
TODO
#### [`LayoutPreview.xaml.cs`](/src/modules/fancyzones/editor/LayoutPreview.xaml.cs)
TODO
#### [`MainWindow.xaml.cs`](/src/modules/fancyzones/editor/MainWindow.xaml.cs)
TODO
#### [`Properties\Resources.Designer.cs`](/src/modules/fancyzones/editor/Properties/Resources.Designer.cs)
TODO
#### [`RowColInfo.cs`](/src/modules/fancyzones/editor/RowColInfo.cs)
TODO
#### [`Models\Settings.cs`](/src/modules/fancyzones/editor/Models/Settings.cs)
TODO
#### [`Properties\Settings.Designer.cs`](/src/modules/fancyzones/editor/Properties/Settings.Designer.cs)
TODO
#### [`WindowLayout.xaml.cs`](/src/modules/fancyzones/editor/WindowLayout.xaml.cs)
TODO

View File

@@ -0,0 +1,134 @@
# Interface definition
```cpp
class PowertoyModuleIface {
public:
virtual const wchar_t* get_name() = 0;
virtual const wchar_t** get_events() = 0;
virtual bool get_config(wchar_t* buffer, int *buffer_size) = 0;
virtual void set_config(const wchar_t* config) = 0;
virtual void call_custom_action(const wchar_t* action) {};
virtual void enable() = 0;
virtual void disable() = 0;
virtual bool is_enabled() = 0;
virtual void destroy() = 0;
};
typedef PowertoyModuleIface* (__cdecl *powertoy_create_func)();
```
# Runtime logic
The PowerToys runner will, for each PowerToy DLL:
- load the DLL,
- call [`powertoy_create()`](#powertoy_create_func) to create the PowerToy.
On the received object, the runner will call:
- [`get_name()`](#get_name) to get the name of the PowerToy,
- [`enable()`](#enable) to initialize the PowerToy.
While running, the runner might call the following methods between create_powertoy()
and destroy():
- [`disable()`](#disable)/[`enable()`](#enable)/[`is_enabled()`](#is_enabled) to change or get the PowerToy's enabled state,
- [`get_config()`](#get_config) to get the available configuration settings,
- [`set_config()`](#set_config) to set settings after they have been edited in the Settings editor,
- [`call_custom_action()`](#call_custom_action) when the user selects a custom action in the Settings editor,
When terminating, the runner will:
- call [`disable()`](#disable),
- call [`destroy()`](#destroy) which should free all the memory and delete the PowerToy object,
- unload the DLL.
# Method definition
This section contains a more detailed description of each of the interface methods.
## powertoy_create_func
```cpp
typedef PowertoyModuleIface* (__cdecl *powertoy_create_func)()
```
Typedef of the factory function that creates the PowerToy object.
Must be exported by the DLL as `powertoy_create()`.
Called by the PowerToys runner to initialize each PowerToy.
It will be called only once before a call to [`destroy()`](#destroy) is made.
The returned PowerToy should be in the disabled state. The runner will call the [`enable()`](#enable) method to start the PowerToy.
In case of errors returns `nullptr`.
## get_name
```cpp
virtual const wchar_t* get_name()
```
Returns the name of the PowerToy, it will be cached by the runner.
## get_config
```
virtual bool get_config(wchar_t* buffer, int *buffer_size)
```
Fills a buffer with the available configuration settings.
If `buffer` is a null pointer or the buffer size is not large enough sets the required buffer size in 'buffer_size' and return false.
Returns true if successful.
## set_config
```cpp
virtual void set_config(const wchar_t* config)
```
After the user has changed the module settings in the Settings editor, the runner calls this method to pass to the module the updated values. It's a good place to save the settings as well.
## call_custom_action
```cpp
virtual void call_custom_action(const wchar_t* action)
```
Calls a custom action in response to the user pressing the custom action button in the Settings editor.
This can be used to spawn custom editors defined by the PowerToy.
## enable
```cpp
virtual void enable()
```
Enables the PowerToy.
## disable
```cpp
virtual void disable()
```
Disables the PowerToy, should free as much memory as possible.
## is_enabled
```cpp
virtual bool is_enabled() = 0;
```
Returns the PowerToy state.
## destroy
```cpp
virtual void destroy()
```
Destroy the PowerToy and free all memory.
# Code organization
### [`powertoy_module_interface.h`](/src/modules/interface/powertoy_module_interface.h)
Contains the PowerToys interface definition.

View File

@@ -0,0 +1,6 @@
# Table of Contents
The devdocs for Keyboard Manager have been divided into the following modules:
1. [Keyboard Manager Module](keyboardmanager.md)
2. [Keyboard Event Handlers](keyboardeventhandlers.md)
3. [Keyboard Manager UI](keyboardmanagerui.md)
4. [Keyboard Manager Common](keyboardmanagercommon.md)

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,84 @@
# Keyboard Event Handlers (Remapping Logic)
This file contains documentation for all the methods involved in key/shortcut remapping.
## Table of Contents:
1. [HandleSingleKeyRemapEvent](#HandleSingleKeyRemapEvent)
2. [HandleShortcutRemapEvent](#HandleShortcutRemapEvent)
3. [HandleOSLevelShortcutRemapEvent](#HandleOSLevelShortcutRemapEvent)
4. [HandleAppSpecificShortcutRemapEvent](#HandleAppSpecificShortcutRemapEvent)
5. [HandleSingleKeyToggleToModEvent (Obsolete))](#HandleSingleKeyToggleToModEvent-(Obsolete---Code-from-PoC-which-is-commented-out))
6. [Tests](#Tests)
1. [MockedInput](#MockedInput)
2. [Tests for single key remaps and shortcut remaps](#Tests-for-single-key-remaps-and-shortcut-remaps)
## HandleSingleKeyRemapEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L13-L124) is used for handling the key to key and key to shortcut remapping logic. The general logic is as follows:
- Check if the `dwExtraInfo` field contains the `KEYBOARDMANAGER_INJECTED_FLAG` bit set. This bit is used to indicate that the key event was generated by KBM using `SendInput`. This ensures that we don't read events generated by the key or shortcut remap methods.
- Check if the current key is present in the list of remaps. If it isn't, return 0 (i.e. do not suppress the event).
- If it is remapped to Disable, suppress the event.
- If it is remapped to a key, we send the key down/up message for the target key and suppress the current key event. We have a check for filtering artificial keys, such as `VK_WIN` (which is a keycode added by us), so that it is translated to `VK_LWIN` instead.
- If it is remapped to a shortcut, for key down we set the target modifiers first, followed by the target action key, and for key up we release the action key first, followed by the modifiers.
- All the remapped key events that we send above are sent with `KEYBOARDMANAGER_SINGLEKEY_FLAG` on the `dwExtraInfo` field.
## HandleShortcutRemapEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L178-L739) is used for handling the shortcut to shortcut and shortcut to key remapping logic. The general logic is as follows:
- Check if any shortcut remap is currently invoked. This is required to ensure that two remaps don't occur simultaneously at a time, and we send key up events for the shortcuts only if they are actually invoked and not for artificial key up events. In addition to that, while a remap is in the middle of execution, the keyboard state will not match the physical keys, so we do not want a remap <kbd>Ctrl+A</kbd> to <kbd>Ctrl+V</kbd> to also trigger the remap from <kbd>Ctrl+V</kbd> to <kbd>Alt+V</kbd> on pressing <kbd>Ctrl+A</kbd> on the keyboard.
- Get the remap table as per the the `activatedApp` argument (i.e. if it is empty, we get the global shortcut remap table and otherwise we get the corresponding app-specific shortcut remap table).
- Iterate over the list of remaps in descending order of number of keys in the shortcut. This is required **for shortcut to key remaps** to ensure that if a user has both <kbd>Ctrl+A</kbd> and <kbd>Ctrl+Shift+A</kbd> remapped to some keys, and the user presses <kbd>Ctrl+Shift+A</kbd>, then we prefer the <kbd>Ctrl+Shift+A</kbd> remap. This logic would not be required if there were only shortcut to shortcut remaps, as they are invoked only on exact match.
- If any shortcut was found to be invoked (from the first step), then we skip till we find the matching shortcut remap. If not we check if the modifiers of the original shortcut are pressed down. If they are, we check if the current key event is a key down event and it matches the action key of the original shortcut. For shortcut to shortcut and for disabling a shortcut [we have an additional step](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L208-L212) where we check if any other key is pressed apart from the original shortcut. This is required because for these two features we allow the remaps only if those exact keys are pressed. The method used for this is described in detail [here](keyboardmanagercommon.md#IsKeyboardStateClearExceptShortcut). If a win key was pressed, we store whether it was the left or the right one, in order to determine which key to set for remaps from/to the common Win key code which we added. This is so that pressing and releasing Left Win key results in that Win key getting modified and not the Right Win key.
- If the remap is to a key, we send a dummy key event followed by releasing the original shortcut's modifiers and setting the target key (or doing nothing if it is remapped to disable) and we suppress the event.
- If the remap is to a shortcut, if the modifiers in the original shortcut are present in the target, we only set the additional modifiers and the action key of the target. If it isn't, we send a dummy key event followed by releasing the modifiers which are not common, and setting the remaining ones in the target along with the action key.
- For both cases, we set the `isShortcutInvoked` flag to true, and set the `KeyboardManagerState.activatedApp` if it is an app-specific shortcut remap.
- For the `isShortcutInvoked` is true scenario (i.e. the initial remap keydown section is done) there are several cases depending on the key pressed or released:
- [**Case 1:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L339-L430) If a modifier in the original shortcut is released, we need to reset back to the physical keys pressed.
- For remap to shortcut, we release the target action key if it is currently pressed, and depending on whether all the modifiers of the original shortcut are present in the target, we release the target modifiers that are not common, and set the remaining original shortcut modifiers except the one that was released. We do not need to send the original action key as that will get generate it's own key event if it is held down.
- For remap to key, we release the target key if it is pressed (and it is not remapped to Disable), and we set the original shortcut modifiers.
- For both the cases we send a dummy key event at the end, since we are setting modifiers without any other key after that, and we reset all the remap variables.
- [**Case 2:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L435-L461) If the original shortcut's action key is pressed again, we send the target shortcut's action key or the target key again (or for disable we just suppress the event).
- [**Case 3:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L463-L527) If the original shortcut's action key is released
- For remap to shortcut, we just release the target shortcut's action key
- For remap to disable, we suppress the event
- For remap to key, we check if any other keys are pressed apart from the target key. If not, we just release the target key. If there are, we reset back to the physical keys by releasing the target key and setting the original shortcut's modifiers along with a dummy key, and we reset all the remap variables. This behavior is different from remap to shortcut because if the action key is released while other keys are pressed the remap should be inactive, but such a state can't occur for shortcut to shortcut remaps since they happen only when the exact keys are pressed.
- [**Case 4:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L529-L551) If a modifier in the original shortcut is pressed, suppress the event
- [**Case 5:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L553-L732) If any other key is pressed
- For remap to shortcut, we need to reset back to physical keys as the shortcut remaps can't be pressed in combination with other keys. We release the target action key if it was pressed, and we release the modifier keys of the target shortcut that are not common and set the remaining ones in the original shortcut. We then send the original shortcut's action key if the target action key was found to be pressed, and we send the current key press at the end.
- For remap to key, if it is remapped to disable or if the target key is not found to be pressed, we reset to the physical keys, we set the original shortcut's modifiers and if is remap to Disable and the original shortcut's action key is physically pressed (this is checked by the `isOriginalActionKeyPressed` flag which we keep track of whenever the action key is pressed or released for remap to Disable), then we set the original shortcut's action key, followed by the current key press. If it is not remapped to disable and the target key is pressed, then we don't suppress the event as we allow shortcut to key remappings to be pressed along with other keys.
- For all the above cases, dummy key isn't required as we want the current key press to behave like a normal key.
- [**Case 6:**](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L733) If any other key is released, do not suppress the event as this event didn't appear with a corresponding key down event (such as an app sending a key up event) or we processed the key down and let it continue (for shortcut to key scenario).
- All the remapped key events that we send above are sent with `KEYBOARDMANAGER_SHORTCUT_FLAG` on the `dwExtraInfo` field, except the usage of the current key press in Case 5, for which we don't send any extra info so that it is considered as a normal key event which may in turn invoke some other remap.
**Note:** Shortcuts are considered valid if they have modifiers and an action key. The reason why we haven't supported key combinations of just modifiers (which is requested in this [issue](https://github.com/microsoft/PowerToys/issues/5670)) (like remapping <kbd>Ctrl+Alt</kbd>) is because this would require more cases and handling as these remappings have to take place only on press and release and if there is no key pressed in between similar to what Start Menu does. The remapping would have to be invoked only for this specific sequence <kbd>Ctrl</kbd> key down, <kbd>Alt</kbd> key down, <kbd>Alt</kbd> key up, <kbd>Ctrl</kbd> key up (ordering between Ctrl and Alt can be swapped). If any other key is pressed in between it shouldn't be invoked, and since this logic requires tracking exact states instead of using GetAsyncKeyStates, this could cause false positives if a user is not running as admin.
## HandleOSLevelShortcutRemapEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L741-L752) is used for handling global shortcut to shortcut and shortcut to key remaps. The general logic is as follows:
- Check if the `dwExtraInfo` field is set to `KEYBOARDMANAGER_SHORTCUT_FLAG`. This indicates that the key event was generated by the KBM shortcut remap method using `SendInput`. This ensures that we don't read events generated by the shortcut remap method, but we still read events which are generated by the key remap method.
- Call `HandleShortcutRemapEvent` without the `activatedApp` argument so that global shortcut remapping takes place if it applies for the current key event.
## HandleAppSpecificShortcutRemapEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L754-L809) is used for handling app-specific shortcut to shortcut and shortcut to key remaps. The general logic is as follows:
- Check if the `dwExtraInfo` field is set to `KEYBOARDMANAGER_SHORTCUT_FLAG`. This indicates that the key event was generated by the KBM shortcut remap method using `SendInput`. This ensures that we don't read events generated by the shortcut remap method, but we still read events which are generated by the key remap method.
- Get the name of the process in the foreground. This is done using `GetCurrentApplication` which uses `GetForegroundWindow` to get the window handle and `get_process_path` from the common lib. This approach can fail for UWP apps in full screen, so for that scenario we use the `GetGUIThreadInfo` approach to find the correct window handle, and hence the correct process name. This method is described in more detail [here](keyboardmanagercommon.md#Foreground-app-detection)
- By checking `KeyboardManagerState.GetActivatedApp` we check if an app-specific shortcut is currently invoked. If so, we consider this application to be the activated app. This is required because some shortcut remaps could cause the current app to lose focus and hence until the shortcut is completely released we should allow that remap to continue, otherwise the user could end up in a state where some keys do not get released. For example: remap <kbd>Ctrl+A</kbd> to <kbd>Alt+Tab</kbd> for Edge, when a user presses <kbd>Ctrl+A</kbd> the window loses focus as <kbd>Alt+Tab</kbd> gets executed.
- If there is no app-specific shortcut currently invoked, we check if the foreground process is present in the list of app-specific remaps, either with or without the file extension and case insensitive. If it is, this is considered to be the activated app.
- Call `HandleShortcutRemapEvent` with the `activatedApp` argument so that app-specific shortcut remapping takes place if it applies for the current key event.
## HandleSingleKeyToggleToModEvent (Obsolete - Code from PoC which is commented out)
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L126-L176) was added to support a feature for converting the behavior of a key from behaving like a toggle (like Caps Lock/Num Lock) to a modifier (like Ctrl), such that when you hold Caps Lock it would behave as if Caps Lock was active, and when it was not pressed Caps Lock would be off. For Caps Lock this would be similar to behaving like Shift, but for Num Lock there is no existing key which can substitute for this. This was added while testing out remapping for the KBM PoC, but wasn't added as a feature since it wasn't a priority.
## Tests
In order to test the remapping logic, a mocked keyboard input handler had to be created because otherwise the tests would process and send actual key events. For this the [`InputInterface`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/InputInterface.h) was made, and in production code the methods are implemented using [`SendInput`](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput) and [`GetAsyncKeyState`](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate). In addition to this, [`GetCurrentApplication`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L226-L268) had to be mocked so that app-specific remapping can be tested.
### MockedInput
The [`MockedInput`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/MockedInput.h) class uses a 256 size `bool` vector to store the key state for each key code. Identifying the foreground process is mocked by simply setting and getting a string value for the name of the current process.
[To mock the `SendInput` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/MockedInput.cpp#L10-L110), the steps for processing the input are as follows. This implementation is based on public documentation for SendInput and the behavior of key messages and keyboard hooks:
- Iterate over all the inputs in the INPUT array argument
- If the event is a key up event, then it is considered [`WM_SYSKEYUP`](https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-syskeyup) if Alt is held down, otherwise it is `WM_KEYUP`.
- If the event is a key down event, then it is considered [`WM_SYSKEYDOWN`](https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-syskeydown) if either Alt is held down or if it is F10, otherwise it is `WM_KEYDOWN`.
- An optional function which can be set on the `MockedInput` handler can be used to test for the number of times a key event is received by the system with a particular condition using [`sendVirtualInputCallCondition`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/MockedInput.cpp#L48-L52).
- The hook logic for a low level hook which returns 0 or 1 can be set on the `MockedInput` handler such that it behaves like a low level hook would behave with actual keyboard input. If the method returns 1, then the keyboard state is not updated, and if it returns 0 the corresponding key event is used to update the key state. This works in the recursive way as well similar to low level hooks, as `SendVirtualInput` can be called from within the hook, thus simulating identical behavior to calling `SendInput` in a low level hook (as soon as SendInput is called, the low level hook is called for the new input event, and only after those are processed it returns back to the current event, check this [blog](https://devblogs.microsoft.com/oldnewthing/20140213-00/?p=1773) for more details).
- For updating the keyboard state, KEYUP messages result in the state for that key code being set to false, and KEYDOWN result in the state for that key code being set to true.
- For modifiers the behavior is slightly different as if the key state of the L/R version is modified, it should also modify the common version, and if a common version is released, it should release both the L and R versions.
### Tests for single key remaps and shortcut remaps
Using the MockedInput handler, all the expected (and known) key scenarios that can occur for while pressing a [remapped key](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp) or [remapped shortcut](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp) are tested. The foreground app behavior which is specific to app-specific shortcuts is tested [here](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/AppSpecificShortcutRemappingTests.cpp).

View File

@@ -0,0 +1,199 @@
# Keyboard Manager module
This file contains the documentation for the KeyboardManager PowerToy module which is called by the runner.
## Table of Contents:
1. [Class members](#Class-members)
2. [Enable/Disable](#Enable/disable)
3. [Settings format](#Settings-format)
4. [Loading settings](#Loading-settings)
5. [Low level keyboard hook handler](#Low-level-keyboard-hook-handler)
6. [Custom Action to launch KBM UI](#Custom-Action-to-launch-KBM-UI)
7. [SendInput Special Scenarios](#SendInput-Special-Scenarios)
1. [Extended keys](#Extended-keys)
2. [Scan code](#Scan-code)
8. [Special Scenarios](#Special-Scenarios)
1. [Dummy key events](#Dummy-key-events)
2. [Suppressing Num Lock in a keyboard hook](#Suppressing-Num-Lock-in-a-keyboard-hook)
3. [Modifier-Caps Lock interaction on Japanese IME keyboards](#Modifier-Caps-Lock-interaction-on-Japanese-IME-keyboards)
4. [UIPI Issues (not resolved)](#UIPI-Issues-(not-resolved))
9. [Other remapping approaches](#Other-remapping-approaches)
1. [Registry approach](#Registry-approach)
2. [Driver approach](#Driver-approach)
10. [Telemetry](#Telemetry)
## Class members
The `KeyboardManager` module has [3 main class members](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L61):
- A static pointer to the current object of `KeyboardManager`. This is required for using the `KeyboardManager` object in the low level keyboard hook handler as that method must be static. This is described in more detail in [this section](#Low-level-keyboard-hook-handler).
- An object of type `Input`, which is used for all the operations that involving getting or setting keyboard states. This is wrapped in an object to allow testing the remapping methods.
- An object of type `KeyboardManagerState`. This object contains all the data related to remappings and is also used in the sense of a View Model as it used to communicate common data that is shared between the KBM UI and the backend. This class is described in more detail [here](keyboardmanagercommon.md#keyboardmanagerstate).
## Enable/Disable
On enabling KBM, the low level keyboard hook is started, and it is unhooked on disable. This is done to allow users to manually restart KBM if some other application which registers a keyboard hook was launched after PowerToys, so that it can be brought back to the highest priority hook (as the last hook to be registered receives the input first as mentioned [here](https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks#hook-procedures)).
In addition to stopping the hook, any active KBM UI windows are also closed on disabling. This is done because the KBM UI uses the same keyboard hook for the Type button where you can type a key/shortcut, so if KBM is disabled the windows would not be completely functional.
The enable/disable code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L301-L322)
## Settings format
KBM uses two sets of settings files.
- The main `settings.json` is of the following format:
{
"properties":
{
"activeConfiguration":
{
"value":"default"
},
"keyboardConfigurations":
{
"value":["default"]
}
},
"name":"Keyboard Manager",
"version":"1"
}
- The `activeConfiguration` attribute stores the current remapping profile, while `keyboardConfigurations` stores all the profiles that the user has. This was added to avoid any future breaking changes for the [profiles feature](https://github.com/microsoft/PowerToys/issues/1881), which would allow users to switch between remappings
- The profile format (`default.json`) is of the following format:
{
"remapKeys":
{
"inProcess":
[
{
"originalKeys":"91",
"newRemapKeys":"162;70"
},
{
"originalKeys":"92",
"newRemapKeys":"162;70"
}
]
},
"remapShortcuts":
{
"global":
[
{
"originalKeys":"164;37",
"newRemapKeys":"162;65"
},
{
"originalKeys":"162;68",
"newRemapKeys":"91"
}
],
"appSpecific":
[
{
"originalKeys":"91;162;65",
"newRemapKeys":"162;86",
"targetApp":"msedge"
}
]
}
}
- `originalKeys` stores the key/shortcut which is to be pressed for the remap, and `newKeys` stores the key/shortcut which is to be executed.
- Both contain semi-colon separated virtual key codes. For `remapKeys`, `originalKeys` must have only one key code, whereas for `remapShortcuts` it must have atleast two key codes.
- `inProcess` sub-key was added in `remapKeys` because there was a possibility of adding the registry based remapping approach (used by [SharpKeys](https://github.com/randyrants/sharpkeys)), so that would be under a separate sub-key while `inProcess` would be for keyboard hook based remaps. This was deprioritized as there weren't enough requests for it.
- `remapShortcuts` is split into `global` and `appSpecific`, where `global` remaps would apply to all applications, whereas `appSpecific` would apply on when the `targetApp` is in focus. `targetApp` must be the process name of the app (with or without it's extension), e.g. `msedge` or `msedge.exe` for Microsoft Edge.
## Loading settings
KBM settings are loaded only on the C++ side only at start up, in the [constructor](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L67-L68). The settings file may get modified from the KBM UI on applying new remappings, but the the file is not read again. The files are read from the PowerToys Settings process whenever a change is made to the file (using a FileWatcher) or whenever the KBM page is opened. The settings are updated only when the user presses the OK button from either of the Remap Keys or Remap Shortcuts windows. This is described in more detail [here](keyboardmanagerui.md#ok-and-cancel-button).
## Low level keyboard hook handler
Since the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L330-L349) cannot be a member function in the class, this is declared `static` and a `static pointer` to the `KeyboardManager` project is used ([`keyboardmanager_object_ptr`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L54-L55)).
As seen in the code for `hook_proc`, similar to other keyboard hooks in PowerToys it consists of a main method `HandleKeyboardHookEvent` which computes whether the key needs to be suppressed and accordingly returns 1 or calls the `CallNextHook` method.
`HandleKeyboardHookEvent` is covered in the [next section](#HandleKeyboardHookEvent). The `SetNumLockToPreviousState` code in the above snippet is required for a special scenario with keyboard input, which is covered in [this section](#Suppressing-Num-Lock-in-a-keyboard-hook).
## HandleKeyboardHookEvent
The [`HandleKeyboardHookEvent`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L384-L458) is the method which calls the corresponding remapping methods in the required order. The following checks are executed in order:
- **`KeyboardManagerState.AreRemappingsEnabled`:** This returns false while the KBM remap tables are getting updated. If it is in this state, `HandleKeyboardHookEvent` returns `0`, i.e. the key event is not suppressed and is forwarded normally.
- **Check for `KEYBOARDMANAGER_SUPPRESS_FLAG`:** If the key event has the suppress flag, the method returns 1 to suppress the key event.
- **[`KeyboardManagerState.DetectSingleRemapKeyUIBackend`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408):** This method is used for handling hook operations for the single key Type UI in the Remap keys window. If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the left column Type button is clicked on the Remap keys window and and the window is in focus, then the key event is suppressed and the UI is updated with the latest key from the recent key events. This method is described in more detail [here](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **[`KeyboardManagerState.DetectShortcutUIBackend(data, true)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L410-L419):** This method is used for handling hook operations for the shortcut Type UI in the Remap keys window (when `isRemapKey` arg is `true`). If the Remap keys window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the right column Type button is clicked on the Remap keys window and and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. This method is described in more detail [here](keyboardmanagercommon.md#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend).
- **`HandleSingleKeyRemapEvent`:** This method handles the single key remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleSingleKeyRemapEvent).
- **[`KeyboardManagerState.DetectShortcutUIBackend(data, false)`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L430-L439):** This method is used for handling hook operations for the shortcut Type UI in the Remap shortcuts window (when `isRemapKey` arg is `false`). If the Remap shortcuts window is open, then `HandleKeyboardHookEvent` returns `0` and the key event is forwarded normally. If the Type button is clicked on the Remap shortcuts window and and the window is in focus, then the key event is suppressed and the UI is updated with the shortcut from the recent key events. **Since this is executed after the single key remap method, all single key remappings are applied when the user is on the Remap shortcuts window.**
- **`HandleAppSpecificShortcutRemapEvent`:** This method handles the app-specific shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleAppSpecificShortcutRemapEvent). **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
- **`HandleOSLevelShortcutRemapEvent`:** This method handles the global shortcut remap logic. If a remapping takes place, the key event is suppressed. This method is described in more detail [here](keyboardeventhandlers.md#HandleOSLevelShortcutRemapEvent). The app-specific remap method is executed before this because if a shortcut is remapped to different keys/shortcuts for a particular app and globally, the app-specific variant should be preferred if that app is in focus. **Since this is executed after the single key remap method, single key remappings have precedence over shortcut remaps and are correspondingly reflected in shortcut remaps.**
**Note:** Single key remaps need to be executed before shortcut remaps, because otherwise there can be several logical issues. For example if a user has Ctrl remapped to X and Ctrl+A remapped to Y, we can't detect Ctrl+A because the moment Ctrl is pressed it would be remapped to X before the system ever sees Ctrl+A. This is why the design decision was made to separate Remap keys and Remap shortcuts, and all key remaps are reflected in the shortcut remaps.
## Custom Action to launch KBM UI
KBM uses the [`call_custom_action`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L249-L280) method from the `PowertoyModuleIface` in order to launch the KBM UI when the user clicks the Remap a key or Remap a shortcut button from the KBM settings page. On clicking the button, we check if there is already any active KBM UI window, and if there is it is brought to the foreground. If not, the corresponding KBM UI window is launched on a separate detached thread. The UI is described in more detail [here](keyboardmanagerui.md).
## SendInput Special Scenarios
### Extended keys
Certain keys such as the arrow keys, <kbd>right Ctrl/Alt</kbd>, and <kbd>Del/Home/Ins</kbd>, etc need to be sent with the `KEYEVENTF_EXTENDEDKEY` flag because otherwise the NumPad versions get sent, which can cause weird behavior when NumLock is on. The code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L190-L194) and the list of extended keys in code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L73-L98). Docs about extended keys can be found [here](https://docs.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#extended-key-flag).
The weird behavior that is caused by this can be found at these issues:
- https://github.com/microsoft/PowerToys/issues/3478
- https://github.com/microsoft/PowerToys/issues/3647
- https://github.com/microsoft/PowerToys/issues/3981
### Scan code
Certain applications (such as Windows Terminal) may filter out key events which are set to scan code 0. Even though the `KEYEVENTF_SCANCODE` flag is not set, the `wScan` field is still sent, which defaults to 0. To avoid this issue we use the `MapVirtualKey` API to find the scan code from the virtual key code. Code can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L196-L198).
## Special Scenarios
Since we are using low level keyboard hooks and not actual OS level input handling certain scenarios with input require workarounds as do they not interact well with the OS input logic directly. These are covered in the sub-sections below.
### Dummy key events
To prevent the behavior that some modifiers have that occur when you press and release the modifier without pressing any key in between, we need to send a dummy key event in between the two states. Some examples of this behavior are Win key for Start Menu and Alt key to focus the menu bar. We need to send the dummy key events at any point where an unintentional modifier press/release sequence may occur. We use the undocumented `0xFF` virtual key code for this as we haven't found any side effects of using this key code yet. Initially we used only a key up message, but it has been tweaked now to send a key down followed by key up (code can be found (here)[https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L201-L208]), as without the key down there were [compatibility issues with some apps](https://github.com/microsoft/PowerToys/issues/7133) (like Slack).
The dummy key event is currently used in the following places (the linked code snippets contains an example scenario of why it is required):
- https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L251-L253
- https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L289-L291
- https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L382-L383
- https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L409-L410
- https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L509-L510
### Suppressing Num Lock in a keyboard hook
The <kbd>Num Lock</kbd> key state is updated by the OS before it is intercepted by low level hooks. This causes the issue that even if you suppress a <kbd>Num Lock</kbd> key event, <kbd>Num Lock</kbd> will still get toggled. In order to work around this, in the [`hook_proc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L340-L344) whenever we suppress a <kbd>Num Lock</kbd> key down event, we send an additional <kbd>Num Lock</kbd> key up followed by key down so that the <kbd>Num Lock</kbd> state is reverted to it's previous value before the suppressed event. These are sent with a `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook (see code [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L811-L825)). Since these events will update the <kbd>Num Lock</kbd> state before the low level hooks, by suppressing them we ensure that these are not sent to any other hooks/applications and hence are only processed by the OS.
This assumes that KBM is the last hook to be registered (since another hook-based app like AutoHotkey could remap NumLock to some other key which could mess up this logic).
### Modifier-Caps Lock interaction on Japanese IME keyboards
While using Japanese IME on Windows, shortcuts like <kbd>Shift/Alt/Ctrl</kbd> + <kbd>Caps Lock</kbd> can be used to switch IME options.
![japanese-ime](japanese-ime.png)
These shortcuts are detected before low level hooks, and hence cause issues while remapping <kbd>Caps Lock</kbd> to <kbd>Shift/Alt/Ctrl</kbd> or vice-versa, as there could be an intermediate state where the system detects both the keys as being pressed. This results in a state where the modifier key does not get released since the OS suppresses the key up messages before they reach the low level hooks.
In order to work around this when a key down for the modifier is being processed, we send a key up for the modifier key with the `KEYBOARDMANAGER_SUPPRESS_FLAG` in the `dwExtraInfo` field, so that we suppress them at the start of the hook, and this key event would only be processed by the OS, without getting forwarded to other hooks/apps. The approach is described in more detail at [this comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-640136416), as discussed with the AutoHotkey team. The code for the workaround can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L827-L846). Tests for these scenarios have also been added at:
- [Tests for workaround on single key remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/SingleKeyRemappingTests.cpp#L110-L219)
- [Tests for workaround on shortcut remaps](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/test/OSLevelShortcutRemappingTests.cpp#L1935-L2144)
For example, while [remapping <kbd>Ctrl</kbd> to <kbd>Caps Lock</kbd>](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L59-L63), before sending the <kbd>Caps Lock</kbd> key down message and suppressing <kbd>Ctrl</kbd>, we send a suppressed <kbd>Ctrl</kbd> key up, so that the OS doesn't see <kbd>Ctrl</kbd> and <kbd>Caps Lock</kbd> pressed together at any point. For the [<kbd>Caps Lock</kbd> to <kbd>Ctrl</kbd> scenario](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L104-L116), we send a suppressed C<kbd>Ctrl</kbd>trl key up message after sending <kbd>Ctrl</kbd> key down before <kbd>Caps Lock</kbd> suppressed. Similar logic is added for such scenarios in shortcut remapping.
While the above work around fixes most of the cases, there are still some scenarios where the modifier can get stuck, mentioned at this [comment](https://github.com/microsoft/PowerToys/issues/3397#issuecomment-663729278), which is why the issue is still open. This occurs if a modifier is pressed after the remap has been invoked before releasing the remapped key and it is a harder scenario to solve which requires refactoring the single key remap code.
### UIPI Issues (not resolved)
`SendInput` does not work directly with certain key codes such as Play/Pause Media, Calculator key, etc as it requires UAC privileges to be injected to the OS and accordingly play the active media app or launch the Calculator app. In order to resolve this the correct approach is that the executable which calls `SendInput` needs to have the [UIAccess flag](https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-securityoverview) set to true, which will also avoid the requirement of KBM having to run as administrator to intercept key events when an elevated window is in focus. The UIAccess flag has many constraints such as it must be a signed executable and must be located in a protected path like Program Files. Since KBM currently runs out of the runner process, it would make more sense to do this work after KBM is moved to a separate executable, and it could be enabled by a separate toggle in settings only if PowerToys is installed in Program Files. [This comment](https://github.com/microsoft/PowerToys/issues/3192#issuecomment-646323661) has more details on this approach and (this)[https://github.com/microsoft/PowerToys/issues/3255] is the tracking issue.
## Other remapping approaches
Other approaches for remapping which were deprioritized are:
### Registry approach
This method is used by [SharpKeys](https://github.com/randyrants/sharpkeys) and involves using the [Microsoft Keyboard Scancode mapper registry key](https://github.com/randyrants/sharpkeys) to remap keys based on their scan codes. This has the advantage of being applied in all scenarios and not facing any elevation or UAC issues, however the disadvantages are that for modifying the settings the process must run elevated (as it modifies HKLM registry) and it requires a reboot to get applied. Another issue which is an advantage/disadvantage for users is that the process does not need to be running, so the remaps are applied all the time, including at the password prompt on logging in to the user's Windows account, which could get a user stuck if they orphaned a key in their password. This registry doesn't have any support for remapping shortcuts either, so the hook approach was prioritized over this.
### Driver approach
Using a driver approach has the benefit of not depending on precedence orders as KBM could always run before low level hooks, and it also has the benefit of differentiating between different keyboards, allowing [multi keyboard-specific remaps](https://github.com/microsoft/PowerToys/issues/1460). The disadvantages are however that any bug or crash could have system level consequences. [Interception](https://github.com/oblitum/Interception) is an open source driver that could be used for implementing this. The approach was deprioritized due to the potential side effects.
## Telemetry
Keyboard Manager emits the following telemetry events (implemented in [trace.h](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/trace.h) and [trace.cpp](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/trace.cpp)):
- **`KeyboardManager_EnableKeyboardManager`:** Logs a `boolean` value storing the KBM toggle state. It is logged whenever KBM is enabled or disabled (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L305-L316)).
- **`KeyboardManager_KeyRemapCount`:** Logs the number of key to key and key to shortcut remaps (i.e. all the remaps on the Remap a key window). This gets logged on saving new settings in the Remap a key window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L159-L163)).
- **`KeyboardManager_OSLevelShortcutRemapCount`:** Logs the number of global shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L220)).
- **`KeyboardManager_AppSpecificShortcutRemapCount`:** Logs the number of app-specific shortcut to shortcut and shortcut to key remaps. This gets logged on saving new settings in the Remap a shortcut window (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L221)).
- **`KeyboardManager_KeyToKeyRemapInvoked`:** Logs an event when a key to key remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L101-L102)).
- **`KeyboardManager_KeyToShortcutRemapInvoked`:** Logs an event when a key to shortcut remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L101-L102)).
- **`KeyboardManager_OSLevelShortcutToShortcutRemapInvoked`:** Logs an event when a global shortcut to shortcut remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L320-L321)).
- **`KeyboardManager_OSLevelShortcutToKeyRemapInvoked`:** Logs an event when a global shortcut to key remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L320-L321)).
- **`KeyboardManager_AppSpecificShortcutToShortcutRemapInvoked`:** Logs an event when an app-specific shortcut to shortcut remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L320-L321)).
- **`KeyboardManager_AppSpecificShortcutToKeyRemapInvoked`:** Logs an event when an app-specific shortcut to key remap is invoked (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/KeyboardEventHandlers.cpp#L320-L321)).
- **`KeyboardManager_Error`:** Logs the occurrence of an error in KBM with the name of the method, error code and the corresponding error message. This is currently used only for logging `SetWindowsHookEx` failures (emitted [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L364-L369)).

View File

@@ -0,0 +1,63 @@
# Keyboard Manager Common
This project contains any code that is to be shared between the backend and UI projects. This file covers any functionality in this project which hasn't been covered along with the other modules.
## Table of Contents
1. [KeyboardManagerState](#KeyboardManagerState)
1. [UI States](#UI-States)
2. [DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend](#DetectSingleRemapKeyUIBackend-and-DetectShortcutUIBackend)
3. [HandleKeyDelayEvent](#HandleKeyDelayEvent)
4. [Saving remappings to file](#Saving-remappings-to-file)
5. [Concurrent Access to remap tables](#Concurrent-Access-to-remap-tables)
2. [KeyDelay](#KeyDelay)
3. [Shortcut and RemapShortcut classes](#Shortcut-and-RemapShortcut-classes)
1. [IsKeyboardStateClearExceptShortcut](#IsKeyboardStateClearExceptShortcut)
2. [CheckModifiersKeyboardState](#CheckModifiersKeyboardState)
3. [Tests](#Tests)
4. [Helpers](#Helpers)
1. [Foreground App Detection](#Foreground-App-Detection)
## KeyboardManagerState
[This class](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/KeyboardManagerState.cpp) stores all the data related to remappings and is also used in the sense of a View Model as it used to communicate common data that is shared between the KBM UI and the backend. They are accessed on the UI controls using static class members of `SingleKeyRemapControl` and `ShortcutControl`.
### UI States
[UI states](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.h#L27-L42) are used to keep track in which step of the UI flow is the user at, such as which Remap window they are on, or if they have one of the Type windows open. This is required because the hook needs to suppress input and update UI in some cases, and in some cases remappings have to be disabled altogether.
### DetectSingleRemapKeyUIBackend and DetectShortcutUIBackend
[These methods](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L374-L446) are [called on the low level hook](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/dllmain.cpp#L399-L408) in the main keyboard event handler. When the user opens any UI window the UI states are updated and in this case some remappings have to be disabled. On the Remap keys window, all remappings are disabled, while on the Remap shortcuts window, shortcut remappings are disabled.
In addition to this, if the user has opened the Type window, and the window is in focus, [whenever a key event is received we have to update the set of selected keys in the TextBlock](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L266-L329) in the ContentDialog. These methods also call the `KeyDelay` handlers to check if the input is Esc/Enter and accordingly handle the Accessibility events for the Type window. When the user clicks the Type button, [variables in the KeyboardManagerState store the corresponding TextBlocks](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L375-L376) which appear in the ContentDialog, so that these UI controls can be updated from the hook on the dispatcher thread.
### HandleKeyDelayEvent
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L482-L498) checks if the UI is in the foreground, and if so runs the key delay handlers that have been registered.
### Saving remappings to file
The [`SaveConfigToFile`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L500-L607) method is called on clicking the OK button on the EditKeyboardWindow or EditShortcutsWindow. Since PowerToys Settings also reads the config JSON file, [a named mutex is used](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L582-L600) before accessing the file, with a 1 second timeout. If the mutex is obtained the settings are written to the default.json file.
### Concurrent Access to remap tables
To prevent the UI thread and low level hook thread from concurrently accessing the remap tables we use an [`atomic bool` variable](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.h#L91-L92), which is set to `true` while the tables are getting updated. When this is `true` the hook will skip all remappings. Use of mutexes in the hook were removed to prevent re-entrant mutex bugs.
## KeyDelay
[This class](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/KeyDelay.cpp) implements a queue based approach for processing key events and based on the time difference between key down and key up events [executes separate methods for `ShortPress`, `LongPress` or `LongPressReleased`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.h#L69-L72). The class is used for the hold Enter/Esc functionality required for making the Type window accessible and prevent keyboard traps (see [this](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L273-L292) for an example of it's usage). The `KeyEvents` are added to the queue from the hook thread of KBM, and a separate [`DelayThread`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L142-L166) is used to process the key events by checking the `time` member in the key event. The thresholds for short vs long press and hold wait timeouts are `static` constants, but if the module is extended for other purposes these could be made into arguments.
**Note:** [Deletion of the `KeyDelay`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyDelay.cpp#L4-L12) object should never be called from the `DelayThread` i.e. from within one of the 3 handlers, as it can re-enter the mutex and would lead to a deadlock. This can be avoided by either deleting it on a separate thread or as done in the KBM UI, on the dispatcher thread. See [this PR](https://github.com/microsoft/PowerToys/pull/6959#issue-496583547) for more details on this issue.
## Shortcut and RemapShortcut classes
The [`Shortcut` class](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/Shortcut.h) is a data structure for storing key combinations which are valid shortcuts and it contains several methods which are used for shortcut specific operations. [`RemapShortcut`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/RemapShortcut.h) consists of a shortcut/key union (`std::variant`), along with other boolean flags which are required on the hook side for storing any relevant keyboard states mid-execution.
### IsKeyboardStateClearExceptShortcut
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L665-L813) is used by the `HandleShortcutRemapEvent` to check if any other keys on the keyboard have been pressed apart from the keys in the shortcut. This is required because shortcut to shortcut remaps should not be applied if the shortcut is pressed with other keys. The method iterates over all the possible key codes, except any keys that are considered reserved, unassigned, OEM-specific or undefined, as well as mouse buttons (see list [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L628-L663)).
### CheckModifiersKeyboardState
[This method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Shortcut.cpp#L517-L614) uses `GetVirtualKeyState` (internally calls `GetAsyncKeyState` in production code), to check if all the modifiers of the current shortcut are being pressed. Since Win doesn't have a non-L/R key code we check this by checking both LWIN and RWIN.
### Tests
Tests for some methods in the `Shortcut` class can be found [here](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/ShortcutTests.cpp).
## Helpers
[This namespace](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/common/Helpers.cpp) has any methods which are used across either UI or the backend which aren't specific to either. Some of these methods have tests [here](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/SetKeyEventTests.cpp).
### Foreground App Detection
[`GetCurrentApplication`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L226-L268) is used for detecting the foreground process for App-specific shortcuts. The logic is very similar to that used for FZ's app exception feature, involving `GetForegroundWindow` and `get_process_path`. The one additional case which has been added is for full-screen UWP apps, where the above method fails and returns `ApplicationFrameHost.exe`. The [`GetFullscreenUWPWindowHandle`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/Helpers.cpp#L210-L224) uses `GetGUIThreadInfo` API to find the window linked to the GUI thread. This logic is based on [this stackoverflow answer](https://stackoverflow.com/questions/39702704/connecting-uwp-apps-hosted-by-applicationframehost-to-their-real-processes/55353165#55353165).
**Note:** The [`GetForegroundProcess` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/dll/Input.cpp#L17-L21) performs string allocation in a weird way because of exceptions that were occurring while running tests as a result of memory being allocated or deallocated across dll boundaries. Here's the comment from the PR where this was added
> To make app-specific logic test-able, a GetForegroundProcess was added to the input interface which internally calls GetCurrentApplication. This allows us to mock this method in the test project by just setting some process name as the foreground process for that function. When I set this to just return the string name, it would goes runtime errors on the test project in debug_heap with `__acrt_first_block == header`. Based on [this stackoverflow answer](https://stackoverflow.com/a/35311928), this would happen if allocation happens in one dll's code space and deallocation happens in another. One way to avoid this is to change both the projects to MD (multi threaded dll) instead of MT(multi threaded), however that results in many compile-time errors since all the PT projects are configured as MT. To solve this, the GetForegroundProcess was rewritten such that its argument is the output variable, and we allocate memory for that string within the AppSpecificHandler method rather than in that function.

View File

@@ -0,0 +1,122 @@
# Keyboard Manager UI
## Table of Contents:
1. [C++ XAML Islands](#c---xaml-islands)
1. [Debugging exceptions in XAML Islands](#debugging-exceptions-in-xaml-islands)
2. [Build times](#build-times)
3. [Setting custom backgrounds for Xaml Controls using brushes](#setting-custom-backgrounds-for-xaml-controls-using-brushes)
2. [UI Structure](#ui-structure)
3. [EditKeyboardWindow/EditShortcutsWindow](#editkeyboardwindow-editshortcutswindow)
1. [OK and Cancel button](#ok-and-cancel-button)
2. [Delete button](#delete-button)
3. [Handling common modifiers in EditKeyboardWindow](#handling-common-modifiers-in-editkeyboardwindow)
4. [SingleKeyRemapControl](#singlekeyremapcontrol)
5. [ShortcutControl](#shortcutcontrol)
6. [KeyDropDownControl](#keydropdowncontrol)
1. [Localized key names](#localized-key-names)
2. [Single Key ComboBox Selection Handler](#single-key-combobox-selection-handler)
3. [Shortcut ComboBox Selection Handler](#shortcut-combobox-selection-handler)
## C++ XAML Islands
The KBM UI is implemented as a C++ XAML Island, but all the controls are implemented in code behind rather than .xaml and .xaml.cs files. This was done as per a XAML Island Code sample and it didn't require a separate UWP project, which could be limited in terms of using hooks. There is a [tech debt item](https://github.com/microsoft/PowerToys/issues/2027) for moving this to XAML. The reason it wasn't implemented in the C# Settings was because it required communication with the low level hook thread, which could be too slow if IPC is used, since the UI needs to update on every key event.
**Note:** For functions which take a XAML component as argument, pass it by value and not by reference. This is because `winrt` WinUI classes store their own internal references, so they are supposed to be passed by value (and internally ref counts are incremented). Passing by reference can lead to weird behavior where the object is `null`.
The windows are [created as C++ windows](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L128-L140) and the window sizes are set to default by [scaling them as per DPI](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L120-L126) using the `DPIAware::Convert` API from common lib. Since the UI is launched on a new thread, the window may not be in the foreground, so [we call `SetForegroundWindow`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L146-L150).
`DesktopWindowXamlSource` has to be declared and [it is initialized](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L159-L162) using the [`XamlBridge`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/ui/XamlBridge.cpp), and [a second window handle](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L161-L162) is generated for the internal Xaml Island window. Most of the code was based on the [Xaml Island Sample](https://github.com/microsoft/Xaml-Islands-Samples/blob/master/Samples/Win32/SampleCppApp/XamlBridge.cpp). The `XamlBridge` class contains code which handles initializing the Xaml Island containers as well as handling special messages like keyboard navigation, and focus between islands and between the C++ window and the island. It also has methods for clearing the xaml islands and closing the window.
Once the UI controls are created, the parent container is set as the content for the `DesktopWindowXamlSource` and the `XamlBridge.MessageLoop` is executed. Messages are processed by the C++ window handler like [`EditKeyboardWindowProc`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L364-L404). The general structure we use for this is, for any `WM_PAINT` or `WM_SIZE` message we resize the Xaml Island window. For `WM_GETMINMAXINFO` we set minimum widths so that the window cannot be resized beyond a minimum height and width. This is done to prevent the WinUI elements from overlapping and getting cropped. If it is neither of these cases we send the message to the [`XamlBridge.MessageHandler`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/XamlBridge.cpp#L291-L301) which handles Destroy, Activation and Focus. If `WM_NCDESTROY` is received when the `XamlBridge` is `nullptr`, the window thread is terminated.
**Note:** `ContentDialog` in Xaml Islands requires manually settings a `XamlRoot`. This can generally be done by passing the XamlRoot from a component in the main window, such as the button used to open the dialog ([`sender.as<Button>().XamlRoot()`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.cpp#L31-L32)). [These docs]((https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.contentdialog#contentdialog-in-appwindow-or-xaml-islands)) have more details about this.
### Debugging exceptions in XAML Islands
Sometimes if an exception occurs in XAML Islands, the stack trace may not always point to the correct code causing the exception and instead it will point to the Xaml Island message loop. In these cases the output window in VS will generally show the correct exception.
### Build times
C++ Xaml Islands generally take several minutes to build because the `pch` which contains the WinUI headers takes longer to build and compiles to a file of several GBs. To minimize the build times, multi-processor compilation within the projects have been enabled (files are distributed for compilation to the processors), and references to the Xaml headers have been removed from the .h headers files as much as possible. Since several classes of ours had class members with UI controls like `StackPanel` (which requires definitions of the classes in order to compile), we worked around this by declaring them as `IInspectable` (the equivalent of an object pointer in winrt), and initializing them to the actual control like `StackPanel` in the constructor and accessing all their member functions by inline typecasting (for `IInspectable x;` we do `x = StackPanel();` and `x.as<StackPanel>().MemberFunction()`). Check [this](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.cpp#L19-L25) for this type of usage in `ShortcutControl`.
### Setting custom backgrounds for Xaml Controls using brushes
To access the brushes available on C# Xaml, it has to be done with the `Resources.Lookup` syntax:
`primaryButton.Background(Windows::UI::Xaml::Application::Current().Resources().Lookup(box_value(L"SystemControlBackgroundBaseMediumLowBrush")).as<Windows::UI::Xaml::Media::SolidColorBrush>());`
## UI Structure
The KBM UI consists of a [`Grid` with several columns](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L200-L218). Rows are added dynamically when [the add button is pressed](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L305-L309). [A vector of vector of unique pointers to `SingleKeyRemapControl`/`ShortcutControl`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L248-L249) is created so that references to the UI components and their data are not lost until the window is closed. [`SingleKeyRemapControl`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp) is the UI class for each row of the Remap keys table, and [`ShortcutControl`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/ui/ShortcutControl.cpp) is the UI class for each row of the Remap shortcuts table. [`KeyDropDownControl`](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp) is used for handling the ComboBox operations. Each of these two classes [have vectors of unique pointers to the `KeyDropDownControl` objects](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.h#L44-L45) so that references to the objects are active until the control is deleted.
When the UI windows are activated the `KeyboardManagerState` object [sets the `UIState` variable](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L251-L252) which is used for distinguishing if the UI is up from the keyboard hook thread. The [states are also updated](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L53) on opening and closing the Type window.
Clicking the Type Button [opens a content dialog](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L206-L380) which registers key delays using the [`KeyDelay` class](keyboardmanagercommon.md#KeyDelay) for Enter and Esc keys and sets the UI states such that when a key event occurs the TextBlocks on the ContentDialog are updated accordingly. On accepting the dialog the selected keys are copied into the ComboBoxes from the TextBlocks, and on closing the window the key delays are unregistered and UI states are reset.
Since ComboBoxes are added dynamically, handlers have been added which [update the accessible names for these controls](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L69-L74), which get executed whenever a drop down is added or removed.
When the `EditKeyboardWindow`/`EditShortcutsWindow` is created, [we iterate through the remappings](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L254-L262) stored in `KeyboardManagerState` and add rows to the UI Grid. For both the windows we have `static` buffers [`singleKeyRemapBuffer`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.h#L39-L40) and [`shortcutRemapBuffer`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.h#L42-L43) which store the corresponding key/shortcuts as per the selections in the UI if they are valid with no warnings.
## EditKeyboardWindow/EditShortcutsWindow
### OK and Cancel button
[On pressing the OK button](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditKeyboardWindow.cpp#L66-L89) in `EditKeyboardWindow`, first the [`CheckIfRemappingsAreValid` method](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L10-L44) is executed which performs basic validity checks on the current remappings in the remap buffer (`static SingleKeyRemapControl::singleKeyRemapBuffer`), such as if there are no NULL columns and none of the source keys are repeated. All other validity checks are assumed to happen while the user adds the remapping. If this is found to be invalid a ContentDialog is displayed which shows that some remappings are invalid and if the user proceeds only the valid ones will be applied. If it is valid [`GetOrphanedKeys`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L46-L75) is executed which checks if any keys are orphaned (i.e. the key has been remapped and no other key has been remapped to it, so there is no way to send that key code), and a dialog is shown for notifying the user with a list of orphaned keys. After this the settings are [applied by adding it to the `KeyboardManagerState.singleKeyReMap` member](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L102-L164) and they are saved to the JSON file. `EditShortcutsWindow` differs slightly from this, as there is no orphaned keys check, and [on pressing OK](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/EditShortcutsWindow.cpp#L32-L47) both the global and app-specific shortcuts are validated and [updated](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L166-L223).
The code used for updating the remapping tables in `KeyboardManagerState` can be found [here](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L104-L183). For shortcut remaps, the `sortedKeys` vectors are updated and re-sorted whenever an element is added to them (like [this](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/common/KeyboardManagerState.cpp#L135-L136)).
On pressing OK (after confirmation dialogs) or Cancel, the window is closed and UI states are reset.
### Delete button
Since there is no single method to delete the elements in a row for a Grid, [the logic](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/SingleKeyRemapControl.cpp#L143-L188) we use involves decrementing the rowIndex for all the UI controls that appearing after the row to be deleted, and removing each of the items of the row from the Grid, followed by deleting that row definition. We also update the accessible names for all the rows since the indexing has changed. After this the corresponding row in the remap buffer is also deleted, and `SingleKeyRemapControl`/`ShortcutControl` objects are deleted from the vector.
### Handling common modifiers in EditKeyboardWindow
In the SingleKeyRemap table for a remapping of the form Ctrl->X, where Ctrl is the common version and not L/R, we can't store it directly as Ctrl->X because when the hook receives the key event it only gets LCtrl or RCtrl specifically and not `VK_CONTROL`. To simplify the backend code, when [single key remappings are applied](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L116-L143), any remapping of the form Ctrl->X is split into Ctrl(L)->X and Ctrl(R)->X (i.e. both L and R versions are remapped to the same target), and when remappings are loaded in EditKeyboardWindow, we [pre-process the remap table](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/LoadingAndSavingRemappingHelper.cpp#L77-L100) such that if the L and R versions of a modifier are remapped to the same key/shortcut we combine them. This also results in the behavior where a user adds LCtrl->X and RCtrl->X and after closing and re-opening KBM UI it appears combined as Ctrl->X.
## SingleKeyRemapControl
The left drop down column uses a single ComboBox and the Type button is linked to `createDetectKeyWindow`, whereas the right column is linked to `createDetectShortcutWindow` as the column can accept a key or a shortcut (required to support key to key and key to shortcut). The `KeyDropDownControl` for the left column in the window uses a smaller key list, without `None`.
## ShortcutControl
Both the columns in are linked to `createDetectShortcutWindow`, however the drop down selection handlers differ in their logic as the left column only allows shortcuts, and the drop downs do not contain the `Disable` key, whereas the right column allows you to select both shortcuts and keys (to support shortcut to shortcut and shortcut to key), and it allows selection of `Disable`.
For the app-specific shortcut target app text-box, we had to validate that the shortcut row is still valid when the target app is changed (for example, <kbd>Ctrl+A</kbd> is remapped for Chrome, and another remapping for <kbd>Ctrl+A</kbd> was remapped to Edge, but the target was changed to Chrome.). For this we didn't use the TextChanged handler as every time a letter is typed it would get executed. Instead we used the [`LostFocus` handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/ShortcutControl.cpp#L108-L167) which gets executed whenever you focus into the box (by clicking or tabbing) and then tabbing or clicking out. In the method we perform the same shortcut buffer validation used for selections in the drop down menus and update the buffers accordingly.
## KeyDropDownControl
Each ComboBox has a linked flyout, which is used to show warnings to the users whenever a user selects an invalid key from the drop down. When the warning is displayed the ComboBox is also reset to -1, i.e. no selection.
For selection handlers on the ComboBoxes we couldn't use just the SelectionChanged handler directly as it gets executed even on searching for elements in the drop down. Instead we used DropDownClosed (when a user opens the drop down and searches and selects something) and SelectionChanged when the drop down is not open (for setting selections programmatically or selection made by searching with tab focus on the drop down without opening it). This was required because if we execute the selection handlers while users are searching, it could cause false positive flyout warnings if the search causes an invalid value to be selected, and flyouts cause the drop down to close leading to bad UI experience.
### Localized key names
For getting localized key names and symbols for each virtual key code, whenever the key lists are accessed, i.e. [whenever the drop down is opened](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L56-L60) or when `GetKeyName` is called in the Type window, the current `KeyboardLayout` is retrieved to ensure that the displayed key names are always updated. Since the `WM_INPUTLANGCHANGED` event was having some issues with XAML islands we weren't able to use this to update the keyboard layout. In addition to this we do not refresh the UI, so the key lists get updated only on opening/interacting with them.
### Single Key ComboBox Selection Handler
On making a selection in the drop down, [the selection handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L91-L130) validates the input with the buffer from the other column and other rows. Error messages are shown using flyouts if the selection is not considered valid and the drop down and buffer for that entry are reset to empty selection. The errors that can occur on the single key ComboBox are:
- Remap to same key (A->A)
- Same key previously remapped (A->B and A->C)
- Conflicting modifier previously remapped (Ctrl->A and Ctrl(left)->B, since Ctrl also includes Ctrl(left))
If the selection is found to be valid, the `singleKeyRemapBuffer` is updated accordingly.
For handling `Shortcut` and key in the remap buffer for the right column, we use `std::variant`, which allows us to store either of the two types and check which one of them is present in the buffer by using the `index` method.
[`ValidateAndUpdateKeyBufferElement`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/BufferValidationHelpers.cpp#L8-L66) does not reference any UI components and instead takes all the relevant data as arguments. This method [has tests](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/BufferValidationTests.cpp) which covers all the cases that could arise from making selections on the UI.
### Shortcut ComboBox Selection Handler
On making a selection in the drop down, [the selection handler](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L215-L295) validates the input with the buffer from the other column and other rows. Error messages are shown using flyouts if the selection is not considered valid and the drop down and buffer for that entry are reset to empty selection.
This differs from the Single Key ComboBox handler in the sense that after validating the current selection we may perform [a set of actions](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L160-L204) such as:
- Adding a drop down (if a modifier is selected)
- Removing a drop down (if None is selected)
- Clearing terminal empty drop downs (if an action key is selected in a non-last drop down and the remaining ones are empty)
After performing the corresponding action, if any, we check if the drop down resulted in an error, in which case we do [a second level of validation](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L224-L229) on all the drop downs in that list of drop downs. This is done because there can be cases where an error in one drop down results us setting it to empty, and the remaining selection is also invalid. For example, you have Ctrl+A -> Ctrl+Shift+A, and you change Shift to Ctrl. This would show a warning for having two Ctrls in the shortcut being invalid, after which setting that to empty would result in Ctrl+A->Ctrl+Empty+A, which is a case of remapping a shortcut to itself.
Once this second level of validation is done, we proceed with [updating the buffer](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L231-L251). Depending on the number of drop downs with valid values, this could be either a key or a shortcut (for the right columns). We also [set the buffer value for the target app](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L252-L267) while doing this.
Unlike the Single Key handler, there is a different set of errors that can occur here which are related to making a selection that is considered as a valid shortcut. The `isHybridControl` argument is used to distinguish between the differing behaviors for the two types of columns (shortcut only or shortcut/key column). The errors that can occur for this handler are:
- Shortcut must start with modifier (selecting A on the first drop for the left column is invalid)
- Shortcut can't have a repeated modifier (Ctrl+Ctrl(left)+A is not a shortcut)
- Shortcut can only have upto 2 modifiers (Ctrl+Shift+Alt is not supported as we have enforced a 3 key constraint (**not a backend limitation, there is [an issue](https://github.com/microsoft/PowerToys/issues/3936) requesting to remove this**))
- Shortcut must contain an action key (Ctrl+A and change A to None, only for left column)
- Shortcut must have at least two keys (Ctrl+A and change Ctrl to None, only for left column)
- Disable can't be a modifier or action key (Ctrl+Disable is invalid)
- Shortcut can't have more than one action key (Ctrl+Shift+A, change Shift to B)
- Remap to same shortcut(Ctrl+A->Ctrl+A)
- Same shortcut previously remapped for same target app (Ctrl+A->B and Ctrl+A->C)
- Conflicting shortcut previously remapped for same target app (Ctrl+A->B and Ctrl(left)+A->C, since Ctrl also includes Ctrl(left))
- Illegal shortcut remaps like Win+L or Ctrl+Alt+Del (since these cannot be remapped using LL hooks)
[`ValidateShortcutBufferElement`](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/BufferValidationHelpers.cpp#L68-L304) does not reference any UI components and instead takes all the relevant data as arguments. This method [has tests](https://github.com/microsoft/PowerToys/blob/master/src/modules/keyboardmanager/test/BufferValidationTests.cpp) which covers all the cases that could arise from making selections on the UI.
**Note:** After updating the buffer we have [code to handle a special case](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L269-L279), which was required to prevent scenarios where a drop down can get deleted but the corresponding `KeyDropDownControl` object isn't deleted. The code checks if the drop down is still linked to the parent and accordingly deletes the `KeyDropDownControl` object from the vector.
**IgnoreKeyToShortcutWarning special case:** [An additional](https://github.com/microsoft/PowerToys/blob/b80578b1b9a4b24c9945bddac33c771204280107/src/modules/keyboardmanager/ui/KeyDropDownControl.cpp#L177-L181) check was added to ignore the Map to Same key error when an existing remapping is loaded. This was because a remapping like Ctrl->Ctrl+A has an intermediate step of Ctrl->Ctrl, which could lead to an error of invalid input, even though Ctrl+A is valid. The only way to actually add this is from the Type button or by adding them in a different order (like typing Shift+A and then changing Shift to Ctrl). Since the intermediate check could fail, this was causing the app to crash since the Xaml Island wouldn't be completely loaded at that point and the Flyout can't be displayed. [This](https://github.com/microsoft/PowerToys/issues/6695) is the linked issue which describes the repro scenario.

View File

@@ -0,0 +1,48 @@
# Architecture
## Overview
`PowerToys Run` is a plugin-based .net core desktop application. It is written in WPF using `Model-View-ViewModel (MVVM)` structural design pattern. This article provides an overview of `PowerToys Run` architecture and introduces major components in the data flow.
Note : We refer to base application without plugins as `PowerLauncher`, which is same as the name of startup WPF project.
## UI
PowerToys Run UI is written in the WPF framework. The UI code is present in the Powerlauncher project and is spanned across three high-level components: [`MainWindow.xaml`](/src/modules/launcher/PowerLauncher/MainWindow.xaml), [`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml) and [`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml). These components are discussed below.
![Image of PowerToys Run UI](/doc/images/launcher/pt_run_ui.png)
**Fig 1: PowerToys Run UI architecture**
1. **[`MainWindow.xaml`](/src/modules/launcher/PowerLauncher/MainWindow.xaml)**: This is the outermost-level UI control. It is composed of lower-level UI components such as [`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml) and [`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml). The corresponding code-behind file implements all the UI related functionalities such as autosuggest, key-bindings, toggling visibility of WPF window and animations.
2. **[`LauncherControl.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml)**: This control implements the UI component for editing query text.(marked in red in Fig 1) It consists of two overlapping WPF controls, `TextBox` and `TextBlock`. The outer `TextBox` is used for editing query whereas the inner `TextBlock` is used to display autosuggest text.
3. **[`ResultList.xaml`](/src/modules/launcher/PowerLauncher/LauncherControl.xaml)**: This control implements the UI component for displaying results (marked in green in Fig 1). It consists of a `ListView` WPF control with a custom `ItemTemplate` to display application logo, name, tooltip text, and context menu.
## Data flow
The backend code is written using the `Model-View-ViewModel (MVVM)` structural design pattern. Plugins act as `Model` in this project. A detailed overview of the project's structure is given [here](/doc/devdocs/modules/launcher/project_structure.md).
#### Flow of data between UI(view) and ViewModels
Data flow between View and ViewModel follows typical `MVVM` scheme. Properties in viewModels are bound to WPF controls and when these properties are updated, `INotifyPropertyChanged` handler is invoked, which in turn updates UI. The diagram below provides a rough sketch of the components involved.
![Flow of data between UI(view) and ViewModels](/doc/images/launcher/ui_vm_interaction.PNG)
**Fig 2: Flow of data between UI and ViewModels.**
#### Flow of data between ViewModels and Plugins(Model)
`PowerLauncher` interact with plugins using [`IPlugin`](/src/modules/launcher/Wox.Plugin/IPlugin.cs) and `IDelayedExecutionPlugin` interface. [`IPlugin`](/src/modules/launcher/Wox.Plugin/IPlugin.cs) is used for initialization and making queries which are fast (typically return results in less than 100ms).[`IDelayedExecutionPlugin`](/src/modules/launcher/Wox.Plugin/IDelayedExecutionPlugin.cs) is used for long-running queries and is implemented only when required. For example, [`IDelayedExecutionPlugin`](/src/modules/launcher/Wox.Plugin/IDelayedExecutionPlugin.cs) is implemented by indexer plugin for searching files with names of form \*abc\*.
```
public interface IPlugin
{
// Query plugin
List<Result> Query(Query query);
// Initialize plugin
void Init(PluginInitContext context);
}
public interface IDelayedExecutionPlugin : IFeatures
{
// Query plugin
List<Result> Query(Query query, bool delayedExecution);
}
```
![Flow of data between UI(view) and ViewModels](/doc/images/launcher/vm_plugin_interaction.PNG)
**Fig 3: Flow of data between ViewModels and Plugins.**
#### Requesting services from powerlauncher
Plugins could use the [`IPublicAPI`](/src/modules/launcher/Wox.Plugin/IPublicAPI.cs) interface to request services such as getting the current theme (for deciding logo background), displaying messages to the user, and toggling the visibility of PowerLauncher.

View File

@@ -0,0 +1,20 @@
# Debugging
`PowerToys Run` is a single exe file associated with `launcher.exe` process and debugger should be attached to this process. There are two approaches to debug `PowerToys Run`. Both these approaches differ in the compile-time and the range of functionalities that could be debugged. These methods are discussed in detail in the following sections.
## Debugging Prerequisite
Setup development environment for PowerToys by following instruction [here.](https://github.com/microsoft/PowerToys/tree/master/doc/devdocs#prerequisites-for-compiling-powertoys)
## Direct debugging
This approach is used to test UI, plugins, and core `PowerToys Run` functionality. This **cannot** be used to test `PowerToys Run` settings. The approach is significantly faster compared to `Debugging with runner`, as it requires compiling projects relevant to `PowerToys Run`. Please follow the steps below for direct debugging.
1. Right-click on `modules->launcher->PowerLauncher` and select `Set as startup Project`.
2. Press `F5` to start debugging.
## Debugging with runner
This approach can be used to test UI, plugins, core `PowerToys Run` functionality and `PowerToys Run` settings. This approach **cannot** be used to debug functions that execute on starting `launcher.exe` process. This requires building runner along with all the other modules on first compile, making it slower than `Direct debugging` approach. The subsequent compilations should be fast.
1. Right-click on `runner` and select `Set as startup Project`.
2. Press `F5` to start debugging.
3. Attach debugger to `launcher.exe` process.
1. Go to `Debug->Attach to process..`
2. Filter and select `launcher.exe` process.
3. Click on `Attach`.

View File

@@ -0,0 +1,23 @@
# Calculator Plugin
The Calculator plugin as the name suggests is used to perform calculations on the user entered query.
![Image of Calculator plugin](/doc/images/launcher/plugins/calculator.png)
### [`CalculateHelper`](src/modules/launcher/Plugins/Microsoft.Plugin.Calculator/CalculateHelper.cs)
- The [`CalculateHelper.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Calculator/CalculateHelper.cs) class checks to see if the user entered query is a valid input to the calculator and only if the input is valid does it perform the operation.
- It does so by matching the user query to a valid regex.
### [`CalculateEngine`](src/modules/launcher/Plugins/Microsoft.Plugin.Calculator/CalculateEngine.cs)
- The main computation is done in the [`CalculateEngine.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Calculator/CalculateEngine.cs) file using the `Mages` library.
```csharp
var result = CalculateEngine.Interpret(query.Search, CultureInfo.CurrentUICulture);
```
### [`CalculateResult`](src/modules/launcher/Plugins/Microsoft.Plugin.Calculator/CalculateResult.cs)
- The class which encapsulates the result of the computation.
- It comprises of the `Result` and `RoundedResult` properties.
### Score
The score of each result from the calculator plugin is `300`.

View File

@@ -0,0 +1,17 @@
# Folder Plugin
The Folder plugin is used to navigate the directory structure and display the sub-folders and files within a folder.
![Image of Folder plugin](/doc/images/launcher/plugins/folder.png)
### [`FolderHelper.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs)
- The [`FolderHelper`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs) class leverages the `DriveInformation` and `folderLinks` to get the folder results for a user query.
- The [`DriveInformation`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/DriveInformation.cs) class gets the list of all drives on the system.
- The [`FolderLink`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/FolderLink.cs) object corresponds to a user created link for frequently accessed projects. This was inherited from Wox but is presently not functional as we don't have the UI setup in settings to get this user input. Each folderLink object has a `nickname`, which is the name of the folder and this can be used to directly access that folder instead of entering the entire path.
### [`IFolderProcessor.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/IFolderProcessor.cs)
The `IFolderProcessor` utilizes the `FolderHelper` class to extract the folders and return the results.
There are two types of Folder Processors, based on the type of information they are processing -
1. [`UserFolderProcessor`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/UserFolderProcessor.cs) - This Processor is currently not used in PT Run but it is used to process the user created folder links.
2. [`InternalDirectoryProcessor`](src/modules/launcher/Plugins/Microsoft.Plugin.Folder/InternalDirectoryProcessor.cs) - This processor is used to retrieve the files and folders located within the current drive or shared folder.
### Score
The first result is of score 500 and the following results are scored 10.

View File

@@ -0,0 +1,39 @@
# Indexer Plugin
The indexer plugin is used to search for files within the indexed locations of the system.
![Image of Indexer plugin](/doc/images/launcher/plugins/indexer.png)
### [Drive Detection](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/DriveDetection)
- There are two indexing modes in Windows:
1. **Classic mode**: Only the desktop and certain customizable locations in the system are indexed. All the systems have the classic mode enabled by default.
2. **Enhanced Mode**: This mode indexes the entire PC when enabled. The user can exclude certain locations from being indexed in this mode from the Windows Search settings options.
- A drive detection warning is displayed to the users when only the custom mode is enabled on the system informing the user that not all the locations on their PC are indexed as this could lead to some results not showing up.
- The [`IndexerDriveDetection.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/DriveDetection/IndexerDriveDetection.cs) file gets the status of the drive detection checkbox in the settings UI and depending on whether the enhanced mode is enabled or disabled, displays the warning.
- To determine whether the `EnhancedMode` is enabled or not, we check the local machine registry entry for `EnableFindMyFiles`. If it is set to 1, the enhanced mode is enabled.
### [`OleDBSearch`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs)
- The `Query` function within the [`OleDBSearch.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs) class takes in the query and the connection string to the SystemIndex catalog as arguments and returns a list of results.
- It first opens a [connection][OLEDBConnection] to the Windows Indexer database, creates an [OleDB command][OLEDBCommand] and executes the command to get a list of results.
### [`WindowsSearchAPI`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs)
- The [`WindowsSearchAPI`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs) class leverages the [`OleDBSearch.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/SearchHelper/OleDBSearch.cs) class to execute the query.
- It initializes the `QueryHelper` in the `InitQueryHelper()` function by creating a catalog manager to the SystemIndex catalog.
- The metadata is initialized within the query helper, such as the number of results to retrieve, the type of information to retrieve for each file (currently we retrieve the item URL, the file name and the file attributes).
- The query helper matches results using the name of the file only and they are sorted by the last modified date, ensuring that the recently modified files are ranked higher.
- The File attributes are utilized to filter out hidden files from being displayed.
### Additional Information
- There are two major types of queries generated by the indexer plugin:
1. Full Text predicates - eg: [CONTAINS][Contains]
2. Non-Full Text predicates - eg: [LIKE][Like]
- The Full text predicates are much faster than non-full text predicates as they are based on finding matches rather than comparing the query with each item in the indexer database. Hence, queries which have the `CONTAINS` keyword are much faster than those which contain the `LIKE` keyword.
- To prevent the indexer query from taking a long time and blocking the UI thread, there are two types of indexer queries which are executed. A simplified query and a full query, without and with the `LIKE` keyword respectively.
- The result list is updated with the results of the full query once they are obtained.
### Score
Each of the indexer plugin results has a score set to 0 so they are present at the bottom of the list.
[OLEDBCommand]: https://docs.microsoft.com/en-us/dotnet/api/system.data.oledb.oledbcommand?view=dotnet-plat-ext-3.1
[OLEDBConnection]: https://docs.microsoft.com/en-us/dotnet/api/system.data.oledb.oledbconnection?view=dotnet-plat-ext-3.1
[Contains]: https://docs.microsoft.com/en-us/windows/win32/search/-search-sql-contains
[Like]: https://docs.microsoft.com/en-us/windows/win32/search/-search-sql-like

View File

@@ -0,0 +1,35 @@
# Structural Overview
The following basic functions are common to each of the plugins. They perform some rudimentary operations such as initialization of the plugin, executing the query that has been entered, loading context menu icons, updating settings when configurations are altered in the settings UI, and updating the theme of the icons when the theme changed event is triggered.
## IPlugin Interface
Each plugin implements the `IPlugin` interface which comprises of the `Init()` and `Query()` functions.
### `Init`
- The `Init()` function initializes the context, storage and settings of each plugin. This is equivalent to a contructor and is the first function to be called in the `Main.cs` file for each plugin.
### `Query`
- For every query that the user enters into PT Run, the `PluginManager.cs` executes the `Query()` function in the `Main.cs` file corresponding to each Plugin.
### Context Menu Icons
- The `ContextMenus` are loaded for each result based on the type of the result.
- The various types of `ContextMenu` functionalities are:
- Open containing folder
- Run as Administrator
- Open in console
- Copy path
### UpdateSettings
- This function updates the settings of each plugin based on the changes made by the user in the settings UI.
- Eg: To disable drive detection in the indexer plugin, when the user checks or unchecks the drive detection check box, the `UpdateSettings()` function dispatches the changes in the check box to the plugin.
### ThemeChanged
- This function is invoked when there is a change in the theme of PT Run.
- It is used to update the `IconPath` for each plugin based on the theme.
### Save
- This function saves the configurations of each plugin so that they can be loaded the next time.
### Score
- The user query is executed against each of the plugins and the result list view is updated with results from each of the plugins.
- The ordering of the results is based on the `Score` of each Result.
- Each plugin assigns a score to a result based on it's relevance. The results with higher scores are displayed higher in the list view and vice versa.

View File

@@ -0,0 +1,43 @@
# Program Plugin
The program plugin as the name suggests is used to search for programs installed on the system.
![Image of Program plugin](/doc/images/launcher/plugins/program.png)
There are broadly two different categories of applications:
1. Packaged applications
2. Win32 applications
### [UWP](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWP.cs)
- The logic for indexing Packaged applications is present within the [`UWP.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWP.cs) file.
- There can be multiple applications present within a package. The [`UWPApplication.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWPApplication.cs) file encapsulates the properties of a packaged application.
- To index packaged applications, the `PackageManager` retrieves all the packages for the current user and indexes all the applications.
- To retrieve the app icon for packaged applications, the assets path is retrieved from the `Application Manifest` file. There are multiple icons corresponding to each scale, target size and theme. The best icon is chosen given the theme of powerToys Run.
### [Win32Program](src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/Win32Program.cs)
- Win32 programs in the following locations are indexed by PT Run-
1. Desktop
2. Public Desktop (Applications present on the desktop of all the users)
3. Registry (Some programs)
4. Start Menu
5. Common start menu (Applications which are common to all users)
8. Locations pointed to by the PATH environment variable.
- To prevent applications and shortcuts present in multiple locations from showing up as duplicate results, we consider apps with the same name, executable name and full path to be the same.
- The subtitle of the application result is set based on it's application type. It could be one of the following:
1. Lnk Shortcuts
2. Appref files
3. Internet shortcut - steam and epic games
4. PWAs
5. Run commands - these are indexed by the PATH environment variable
### Score
- The score for each application result is based on the how many letters are matched, how close the matched letters are to the actual word and the index of the matched characters.
- There is a threshold score to decide the apps which are to be displayed and applications which have a lower score are not displayed by PT Run.
### Update Program List in Runtime
- Packaged and Win32 app helpers exist to reflect changes in the list of indexed apps when applications are installed on the system while PT Run is executing.
- Packaged applications trigger events when the package is being installed and uninstalled. PT Run listens to those events to index applications which are newly installed or to delete an app which no longer exists from the database.
- No such events exist for Win32 applications. We therefore use FileSystem Watchers to monitor the locations that we index for newly created, deleted or renamed application files and update the indexed Win32 catalog accordingly.
### Additional Notes
- Arguments can be provided to the program plugin by entering them after `--` (a double dash).

View File

@@ -0,0 +1,14 @@
# Shell Plugin
- Shell plugin emulates the Windows Run Prompt (Win+R).
- Shell Plugin is one of the non-global plugins which has an action keyword set to `>`.
![Image of Shell plugin](/doc/images/launcher/plugins/shell.png)
### Functionality
- The Shell command expands environment variables, so `>%appdata%` works as expected.
- On inheriting the Shell plugin from Wox, there are three different ways of executing a command, using the command prompt, powershell or the run prompt. To uphold the name of PT Run, the Shell plugin always executes commands as the Run prompt would.
- The Shell plugin has a concept of history where the previously executed commands show up in the drop down list along with the number of times they have been executed.
- The Run prompt has the folder plugin function where we can navigate to different locations and entering the path to a directory displays all the sub-directories. To prevent reimplementing this logic, the shell plugin references the folder plugin to implement this functionality.
### Score
The Shell plugin results have a very high score of 5000. Hence, they are one of the first results in the list.

View File

@@ -0,0 +1,19 @@
# URI Plugin
The URI Plugin, as the name suggests is used to directly run the URI that has been entered by the user as a query. This is done by parsing the entry and validating the URI, followed by executing it.
![Image of URI plugin](/doc/images/launcher/plugins/uri.png)
### [`URI Parser`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/ExtendedUriParser.cs)
- The [`ExtendedUriParser.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/ExtendedUriParser.cs) file tries to parse the user input and returns a `System.Uri` result by using the `UriBuilder`.
- It also captures other cases which the UriBuilder does not handle such as when the input ends with a `:`, `.` or `:/`.
### [`URI Resolver`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/UriResolver.cs)
- The [`UriResolver.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.Uri/UriHelper/UriResolver.cs) file returns true for Valid hosts.
- Currently there is no additional logic for filtering out invalid hosts and it always returns true for a valid Uri that was created by parsing the user query. It can be expanded in the future to filter out certain hosts.
### Default Browser Icon
- The icon for each uri result is that of the default browser set by the user.
- These details are obtained from the user registry and updated each time the theme of PT Run is changed.
### Score
- All uri plugin results have a score of 0 which indicates that they would show up after each of the other plugins, other than the indexer plugin which also has a score of 0.

View File

@@ -0,0 +1,18 @@
# Window Walker plugin
The window walker plugin matches the user entered query with the open windows on the system.
![Image of Window Walker plugin](/doc/images/launcher/plugins/windowwalker.png)
### [`OpenWindows.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/OpenWindows.cs)
- The window walker plugin uses the `EnumWindows` function to enumerate all the open windows in the [`OpenWindows.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/OpenWindows.cs) class.
### [`SearchController.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/SearchController.cs)
- The [`SearchController`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/SearchController.cs) encapsulates the functions needed to search and find matches.
- It is responsible for updating the search text and performing a fuzzy search on all the open windows in an asynchronous manner.
### [`Window.cs`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/Window.cs)
- The [`Window`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/Window.cs) class represents a specific window and has functions to get the name of the process, the state of the window (whether it is visible or not), and the `SwitchTowindow` function which switches the desktop focus to the selected window. This action is performed when the user clicks on a window walker plugin result.
### Score
The window walker plugin uses [`FuzzyMatching`](src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/FuzzyMatching.cs) to get the matching indices and calculates the score by creating a 2 dimensional array of the window and the query text.

View File

@@ -0,0 +1,24 @@
# Project Structure
## Overview
`PowerToys Run` is divided across several projects to keep a logical separation between plugins and core functionality. The following sections provide a brief overview of each project.
![Image of project dependency](/doc/images/launcher/launcher_dependency.PNG)
Fig 1. Project along with their dependencies in `PowerToys Run` ecosystem.
## Project Description
#### [`PowerLauncher`](/src/modules/launcher/PowerLauncher)
This is the startup project for the `PowerToys Run.` It is a WPF desktop application and follows the `Model-View-ViewModel (MVVM)` design pattern. Plugins play the role of `Model` and provide data to `ViewModel.`
#### [`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry)
[`PowerLauncher.Telemetry`](/src/modules/launcher/PowerLauncher.Telemetry) is a .net core project that contains telemetry events generated by `PowerLauncher.` These events have been discussed in detail [here](/doc/devdocs/modules/launcher/telemetry.md).
#### [`Wox.Core`](/src/modules/launcher/Wox.Core)
[`Wox.Core`](/src/modules/launcher/Wox.Core) is a .net core project that contains helper classes required by the `PowerLauncher` project. Two major functionalities encapsulated in this project are [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) and [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) [`PluginManager`](/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs) provides an interface for managing C# plugins. [`Query Builder.`](/src/modules/launcher/Wox.Core/Plugin/QueryBuilder.cs) decimate user-typed query string and creates a [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object. [`Query`](/src/modules/launcher/Wox.Plugin/Query.cs) object contains the action keyword and cleaned query, which is then sent to all plugins.
#### [`Wox.Infrastructure`](/src/modules/launcher/Wox.Infrastructure)
[`Wox.Infrastructure`](/src/modules/launcher/Wox.Infrastructure) is a .net core project that contains helper classes required for image manipulation and storage by the `PowerLauncher` project and the plugins. [`ImageLoader.cs`](/src/modules/launcher/Wox.Infrastructure/Image/ImageLoader.cs) class is used to load icons for `Win32` program. It also provides caching functionality to speed up image loading for frequently queried programs.
#### [`Wox.Plugin`](/src/modules/launcher/Wox.Plugin)
[`Wox.Plugin`](/src/modules/launcher/Wox.Plugin) contains interfaces that facilitate communication between `PowerLauncher` and plugins. These interfaces have been discussed in detail [here](/doc/devdocs/modules/launcher/architecture.md#flow-of-data-between-viewmodels-and-pluginsmodel). It also contains a helper class for logging. [`Log.cs`](/src/modules/launcher/Wox.Plugin/Logger/Log.cs) provides an abstraction for logging error, information, and output to text files. These files are stored at `%userprofile%/appdata/local/microsoft/powertoys/powertoys run/Logs.`

View File

@@ -0,0 +1,14 @@
# Table of Contents
1. [Architecture](/doc/devdocs/modules/launcher/architecture.md)
2. [Debugging](/doc/devdocs/modules/launcher/debugging.md)
3. [Project Structure](/doc/devdocs/modules/launcher/project_structure.md)
4. [Telemetry](/doc/devdocs/modules/launcher/telemetry.md)
5. Plugins
- [Overview](/doc/devdocs/modules/launcher/plugins/overview.md)
- [Calculator](/doc/devdocs/modules/launcher/plugins/calculator.md)
- [Folder](/doc/devdocs/modules/launcher/plugins/folder.md)
- [Indexer](/doc/devdocs/modules/launcher/plugins/indexer.md)
- [Program](/doc/devdocs/modules/launcher/plugins/program.md)
- [Shell](/doc/devdocs/modules/launcher/plugins/shell.md)
- [Uri](/doc/devdocs/modules/launcher/plugins/uri.md)
- [Window Walker](/doc/devdocs/modules/launcher/plugins/windowwalker.md)

View File

@@ -0,0 +1,14 @@
# Telemetry
## Overview
`PowerLauncher.Telemetry` project contains telemetry events generated by `PowerToys Run.` These event classes are derived from the [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class and [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class. [`IEvent`](/src/common/ManagedTelemetry/Telemetry/Events/IEvent.cs) class provides the lowest level abstraction, containing attributes such as privacy tags needed for every telemetry data. [`EventBase`](/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs) class provides a higher-level abstraction, having attributes common to all `PowerToys` telemetry events.
## Events
The following events are generated by `PowerLauncher`:
1. [`LauncherBootEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs): This event captures the time taken by `PowerLauncher` to load all plugins, perform cold start, and setup UI environment.
2. [`LauncherHideEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherHideEvent.cs): This event is generated when the `PowerLauncher` window is hidden.
3. [`LauncherColdStateHotkeyEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherColdStateHotkeyEvent.cs): This event logs time from the first Alt+Space press till the `PowerLauncher` window is visible.
4. [`LauncherFirstDeleteEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherFirstDeleteEvent.cs): This event is generated after the first delete is pressed after `PowerLauncher` is visible.
5. [`LauncherQueryEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherQueryEvent.cs): This event is generated for every query that is typed in the searchbox. It logs query time, number of results, and query length.
6. [`LauncherResultActionEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherResultActionEvent.cs): This event is generated when a context menu action is triggered.
7. [`LauncherShowEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherShowEvent.cs): This event is generated when the `PowerLauncher` window is shown.
8. [`LauncherWarmStateHotkeyEvent`](/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherWarmStateHotkeyEvent.cs): This event logs time from the Alt+Space press until the PT Run window is visible.

View File

@@ -0,0 +1,26 @@
#### [`dllmain.cpp`](/src/modules/powerrename/dll/dllmain.cpp)
TODO
#### [`PowerRenameExt.cpp`](/src/modules/powerrename/dll/PowerRenameExt.cpp)
TODO
#### [`Helpers.cpp`](/src/modules/powerrename/lib/Helpers.cpp)
TODO
#### [`PowerRenameItem.cpp`](/src/modules/powerrename/lib/PowerRenameItem.cpp)
TODO
#### [`PowerRenameManager.cpp`](/src/modules/powerrename/lib/PowerRenameManager.cpp)
TODO
#### [`PowerRenameRegEx.cpp`](/src/modules/powerrename/lib/PowerRenameRegEx.cpp)
TODO
#### [`Settings.cpp`](/src/modules/powerrename/lib/Settings.cpp)
TODO
#### [`trace.cpp`](/src/modules/powerrename/lib/trace.cpp)
TODO
#### [`PowerRenameUI.cpp`](/src/modules/powerrename/ui/PowerRenameUI.cpp)
TODO

View File

@@ -0,0 +1,17 @@
#### [`dllmain.cpp`](/src/modules/shortcut_guide/dllmain.cpp)
Contains DLL boilerplate code.
#### [`shortcut_guide.cpp`](/src/modules/shortcut_guide/shortcut_guide.cpp)
Contains the module interface code. It initializes the settings values and the keyboard event listener.
#### [`overlay_window.cpp`](/src/modules/shortcut_guide/overlay_window.cpp)
Contains the code for loading the SVGs, creating and rendering of the overlay window.
#### [`keyboard_state.cpp`](/src/modules/shortcut_guide/keyboard_state.cpp)
Contains helper methods for checking the current state of the keyboard.
#### [`target_state.cpp`](/src/modules/shortcut_guide/target_state.cpp)
State machine that handles the keyboard events. Its responsible for deciding when to show the overlay, when to suppress the Start menu (if the overlay is displayed long enough), etc.
#### [`trace.cpp`](/src/modules/shortcut_guide/trace.cpp)
Contains code for telemetry.

182
doc/devdocs/readme.md Normal file
View File

@@ -0,0 +1,182 @@
# Dev Documentation
## Rules
- **Follow the pattern of what you already see in the code.**
- [Coding style](style.md).
- Try to package new ideas/components into libraries that have nicely defined interfaces.
- Package new ideas into classes or refactor existing ideas into a class as you extend.
- When adding new classes/methods/changing existing code: add new unit tests or update the existing tests.
## Github Workflow
- Before starting to work on a fix/feature, make sure there is an open issue to track the work.
- Add the `In progress` label to the issue, if not already present also add a `Cost-Small/Medium/Large` estimate and make sure all appropriate labels are set.
- If you are a community contributor, you will not be able to add labels to the issue, in that case just add a comment saying that you started to work on the issue and try to give an estimate for the delivery date.
- If the work item has a medium/large cost, using the markdown task list, list each sub item and update the list with a check mark after completing each sub item.
- When opening a PR, follow the PR template.
- When the PR is approved, let the owner of the PR merge it. For community contributions the reviewer that approved the PR can also merge it.
- Use the `Squash and merge` option to merge a PR, if you don't want to squash it because there are logically different commits, use `Rebase and merge`.
- We don't close issues automatically when referenced in a PR, so after the PR is merged:
- mark the issue(s), that the PR solved, with the `Resolution-Fix-Committed` label, remove the `In progress` label and if the issue is assigned to a project, move the item to the `Done` status.
- don't close the issue if it's a bug in the current released version since users tend to not search for closed issues, we will close the resolved issues when a new version is released.
- if it's not a code fix that effects the end user, the issue can be closed (for example a fix in the build or a code refactoring and so on).
## Repository Overview
General project organization:
### The [`doc`](/doc) folder
Documentation for the project.
### The [`Wiki`](https://github.com/microsoft/PowerToys/wiki)
The Wiki contains the current specs for the project.
### The [`installer`](/installer) folder
Contains the source code of the PowerToys installer.
### The [`src`](/src) folder
Contains the source code of the PowerToys runner and of all of the PowerToys modules. **This is where most of the magic happens.**
### The [`tools`](/tools) folder
Various tools used by PowerToys. Includes the Visual Studio 2019 project template for new PowerToys.
## Compiling PowerToys
### Prerequisites for Compiling PowerToys
1. Windows 10 April 2018 Update (version 1803) or newer
2. Visual Studio Community/Professional/Enterprise 2019
3. Run the command below in cmd/terminal to install all the workloads and components for VS.
```shell
cd "%ProgramFiles(x86)%\Microsoft Visual Studio\2019"
SET targetFolder="\"
IF EXIST Preview\NUL (SET targetFolder=Preview)
IF EXIST Enterprise\NUL (SET targetFolder=Enterprise)
IF EXIST Professional\NUL (SET targetFolder=Professional)
IF EXIST Community\NUL (SET targetFolder=Community)
ECHO %targetFolder%
"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe" ^
modify --installpath "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\%targetFolder%" ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Workload.ManagedDesktop ^
--add Microsoft.VisualStudio.Workload.Universal ^
--add Microsoft.VisualStudio.Component.Windows10SDK.17134 ^
--add Microsoft.VisualStudio.ComponentGroup.UWP.VC ^
--add Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre ^
--add Microsoft.VisualStudio.Component.VC.ATL.Spectre
```
### Compiling Source Code
- Open `powertoys.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
- The PowerToys binaries will be in your repo under `x64\Release`.
- If you want to copy the `PowerToys.exe` binary to a different location, you'll also need to copy the `modules` and the `svgs` folders.
## Building the Installers
Our installer is two parts, an EXE and an MSI. The EXE contains the MSI and handles more complex install logic.
- The EXE installs all prerequisites and installs PowerToys via the MSI. Also has additional features, such as silent installation flags
- The MSI installs PowerToys.
### Prerequisites Building the Installer (.MSI)
1. Install the [WiX Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=RobMensching.WiXToolset).
2. Install the [WiX Toolset build tools](https://wixtoolset.org/releases/).
### Compiling Installer (.MSI)
- From the `installer` folder open `PowerToysSetup.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`, from the `Build` menu choose `Build Solution`.
- The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
### Compiling Bootstraper Installer (.EXE)
- MSI Installer needs to be built in release mode
- Build `PowerToysBootstrapper` solution (`installer\PowerToysBootstrapper\`)
#### Supported arguments for EXE installer:
Head over to the wiki to get the [full list of supported installer arguments][installerArgWiki].
## Debugging
The following configuration issue only applies if the user is a member of the Administrators group.
Some PowerToys modules require being run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations:
- The `FancyZones` module will be not be able to move an elevated window to a zone.
- The `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application.
To run and debug PowerToys from Visual Studio when the user is a member of the Administrators group, Visual Studio has to be started with elevated privileges. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the `runner` project properties and navigate to the `Linker -> Manifest File` settings, edit the `UAC Execution Level` property and change it from `highestAvailable (level='highestAvailable')` to `asInvoker (/level='asInvoker')`, save the changes.
## How to create new PowerToys
See the instructions on [how to install the PowerToys Module project template](/tools/project_template). <br />
Specifications for the [PowerToys settings API](/doc/devdocs/settings.md).
## Implementation details
### [`Runner`](runner.md)
The PowerToys Runner contains the project for the PowerToys.exe executable.
It's responsible for:
- Loading the individual PowerToys modules.
- Passing registered events to the PowerToys.
- Showing a system tray icon to manage the PowerToys.
- Bridging between the PowerToys modules and the Settings editor.
![Image of the tray icon](/doc/images/runner/tray.png)
### [`Interface`](modules/interface.md)
Definition of the interface used by the [`runner`](/src/runner) to manage the PowerToys. All PowerToys must implement this interface.
### [`Common`](common.md)
The common lib, as the name suggests, contains code shared by multiple PowerToys components and modules, e.g. [json parsing](/src/common/json.h) and [IPC primitives](/src/common/two_way_pipe_message_ipc.h).
### [`Settings`](settings.md)
WebView project for editing the PowerToys settings.
The html portion of the project that is shown in the WebView is contained in [`settings-html`](/src/settings/settings-html).
Instructions on how build a new version and update this project are in the [Web project for the Settings UI](./settings-web.md).
While developing, it's possible to connect the WebView to the development server running in localhost by setting the `_DEBUG_WITH_LOCALHOST` flag to `1` and following the instructions near it in `./main.cpp`.
### [`Settings-web`](settings-web.md)
This project generates the web UI shown in the [PowerToys Settings](/src/editor).
It's a `ReactJS` project created using [Fluent UI](https://developer.microsoft.com/en-us/fluentui#/).
## Current modules
### [`FancyZones`](modules/fancyzones.md)
The FancyZones PowerToy that allows users to create custom zones on the screen, to which the windows will snap when moved.
### [`PowerRename`](modules/powerrename.md)
PowerRename is a Windows Shell Context Menu Extension for advanced bulk renaming using simple search and replace or more powerful regular expression matching.
### [`Shortcut Guide`](modules/shortcut_guide.md)
The Windows Shortcut Guide, displayed when the WinKey is held for some time.
#### Options
This module has a setting to serve as an example for each of the currently implemented settings property:
- BoolToggle property
- IntSpinner property
- String property
- ColorPicker property
- CustomAction property
![Image of the Options](/doc/images/settings/example_settings.png)
[installerArgWiki]: https://github.com/microsoft/PowerToys/wiki/Installer-arguments-for-exe

View File

@@ -0,0 +1,3 @@
# This file has been moved
[PowerToys and running as Administrator](https://aka.ms/powertoysDetectedElevatedHelp)

36
doc/devdocs/runner.md Normal file
View File

@@ -0,0 +1,36 @@
#### [`main.cpp`](/src/runner/main.cpp)
Contains the executable starting point, initialization code and the list of known PowerToys. All singletones are also initialized here at the start. Loads all the powertoys by scanning the `./modules` folder and `enable()`s those marked as enabled in `%LOCALAPPDATA%\Microsoft\PowerToys\settings.json` config. Then it runs [a message loop](https://docs.microsoft.com/en-us/windows/win32/winmsg/using-messages-and-message-queues) for the tray UI. Note that this message loop also [handles lowlevel_keyboard_hook events](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/lowlevel_keyboard_event.cpp#L24).
#### [`general_settings.cpp`](./general_settings.cpp)
#### [`powertoy_module.h`](/src/runner/powertoy_module.h) and [`powertoy_module.cpp`](/src/runner/powertoy_module.cpp)
Contains code for initializing and managing the PowerToy modules. `PowertoyModule` is a RAII-style holder for the `PowertoyModuleIface` pointer, which we got by [invoking module DLL's `powertoy_create` function](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/powertoy_module.cpp#L13-L24).
#### [`powertoys_events.cpp`](/src/runner/powertoys_events.cpp)
Contains code that handles the various events listeners, and forwards those events to the PowerToys modules. You can learn more about the current event architecture [here](/doc/devdocs/shared-hooks.md).
#### [`lowlevel_keyboard_event.cpp`](/src/runner/lowlevel_keyboard_event.cpp)
Contains code for registering the low level keyboard event hook that listens for keyboard events. Please note that `signal_event` is called from the main thread for this event.
#### [`win_hook_event.cpp`](/src/runner/win_hook_event.cpp)
Contains code for registering a Windows event hook through `SetWinEventHook`, that listens for various events raised when a window is interacted with. Please note, that `signal_event` is called from a separate `dispatch_thread_proc` worker thread, so you must provide thread-safety for your `signal_event` if you intend to receive it. This is a subject to change.
#### [`tray_icon.cpp`](/src/runner/tray_icon.cpp)
Contains code for managing the PowerToys tray icon and its menu commands. Note that `dispatch_run_on_main_ui_thread` is used to
transfer received json message from the [Settings window](/doc/devdocs/settings.md) to the main thread, since we're communicating with it from [a dedicated thread](https://github.com/microsoft/PowerToys/blob/7357e40d3f54de51176efe54fda6d57028837b8c/src/runner/settings_window.cpp#L267-L271).
#### [`settings_window.cpp`](/src/runner/settings_window.cpp)
Contains code for starting the PowerToys settings window and communicating with it. Settings window is a separate process, so we're using [Windows pipes](https://docs.microsoft.com/en-us/windows/win32/ipc/pipes) as a transport for json messages.
#### [`general_settings.cpp`](/src/runner/general_settings.cpp)
Contains code for loading, saving and applying the general settings.
#### [`auto_start_helper.cpp`](/src/runner/auto_start_helper.cpp)
Contains helper code for registering and unregistering PowerToys to run when the user logs in.
#### [`unhandled_exception_handler.cpp`](/src/runner/unhandled_exception_handler.cpp)
Contains helper code to get stack traces in builds. Can be used by adding a call to `init_global_error_handlers` in [`WinMain`](./main.cpp).
#### [`trace.cpp`](/src/runner/trace.cpp)
Contains code for telemetry.
#### [`svgs`](/src/runner/svgs/)
Contains the SVG assets used by the PowerToys modules.

View File

@@ -0,0 +1,597 @@
# Settings
While the module interface passes the settings and values thorough a JSON string, **use our helper functions**. In future we might move to a different implementation. All current modules use:
* `load_module_settings` to load the settings from the disk.
* `PowerToySettings::Settings` class to define module properties and the settings screen.
* `PowerToySettings::PowerToyValues` class to parse the JSON passed by the runner.
* `save_module_settings` to store the settings on the disk.
Most functions provide two overloads - one that accepts UINT with a resource ID and one that accepts strings. **Put all strings in the resource file and use the resource ID overload.**
The following documents internal workings of the settings system.
## Overview
PowerToys runner provides a generic way for modules to define their settings.
Each module on startup is responsible for loading its own settings and initializing accordingly. When the user wants to edit settings, the runner will call [`get_config()`](modules/interface.md#get_config) module method. The module must provide a JSON which includes the module name, description but also what settings options are provided.
When settings from all modules are collected, a separate [settings editor app](/src/settings) is spawned. The editor wraps [an React app](/src/settings-web) and handles the communication with the runner.
When loaded, the React app receives the JSON passed by the runner. When user saves the settings, the editor passes the new settings values as JSON string to the runner. Runner in turn will call [`set_config()`](modules/interface.md#set_config) for all modules with appropriate JSON. When user initiates a custom action (like the Zone Editor in FancyZones), the runner will call [`call_custom_action()`](modules/interface.md#call_custom_action) providing the action name in a JSON.
There are C++ helper functions in [/src/common/settings_objects.h](/src/common/settings_objects.h) and [/src/common/settings_helpers.h](/src/common/settings_helpers.h). Those include classes for creating the settings options JSON and ones for parsing the incoming settings JSON.
### Module settings
The value returned by the [`get_config()`](modules/interface.md#get_config) call should provide a JSON object with following fields:
* `name` - The name of the PowerToy. Used on the nav panel on the left.
* `version` - The settings version. Needs to be set to `"1.0"`.
* `description` - Description of the PowerToy module.
* `overview_link`, `video_link` - Optional links to the documentation and video preview of the PowerToy module.
* `icon_key` - Name of the icon of the PowerToy. The SVGs for the icons are located in [/src/settings-web/src/svg](/src/settings-web/src/svg). They also need to be added in [/settings-web/src/setup_icons.tsx](/settings-web/src/setup_icons.tsx).
* `properties` - Optional object that contains the definition of the settings screen.
The `properties` JSON object defines what settings controls are available to the user. Each key defines one control. The controls have some common properties:
* The key in the `properties` which identifies the control.
* `editor_type` - Defines the type of the control. Those are listed further.
* `order` - Defines the order of the elements on the settings screen.
Each `editor_type` has its own set of properties.
Example module JSON (taken from Shortcut Guide):
```json
{
"name": "Shortcut Guide",
"version": "1.0",
"description": "Shows a help overlay with Windows shortcuts when the Windows key is pressed.",
"overview_link": "https://github.com/.../README.md",
"icon_key": "pt-shortcut-guide",
"properties": {
"press_time": {
"editor_type": "int_spinner",
"order": 1,
"display_name": "How long to press the Windows key before showing the Shortcut Guide (ms)",
"value": 900,
"min": 100,
"max": 10000,
"step": 100
},
"overlay_opacity": {
"editor_type": "int_spinner",
"order": 2,
"display_name": "Opacity of the Shortcut Guide's overlay background (%)",
"value": 90,
"min": 0,
"max": 100,
"step": 1
},
"theme":{
"editor_type": "choice_group",
"order": 3,
"display_name": "Choose Shortcut Guide overlay color",
"value": "system",
"options": [ {"key": "system", "text": "System default app mode"},
{"key": "light", "text": "Light"},
{"key": "dark", "text": "Dark"} ]
}
}
}
```
produces this settings screen:
![Shortcut Guide settings](../images/settings/shortcut_guide_settings.png)
### Helper methods
PowerToys provides [a helper class](/src/common/json.h) to parse and generate JSON strings.
In [`settings_helpers.h`](/src/common/settings_helpers.h) there are two helper functions: `load_module_settings(powertoy_name)` and `save_general_settings(settings)` for loading and saving the module configuration.
In [`settings_objects.h`](/src/common/settings_objects.h) there are some helper classes:
* `Settings` - for generating JSON with module settings definition.
* `PowerToyValues` - for parsing JSON with settings - either loaded from file or from the settings editor.
* `CustomActionObject` and `HotkeyObject` - for parsing custom actions and hotkey input specific JSON.
### General settings
General settings control the PowerToys runner and decide which modules are enabled and which are not. The general settings screen is special - while modules provide the definition of the settings controls, the available settings on the general screen are hardcoded.
General settings has following properties:
* `enabled` - Enabled/disabled status of each PowerToy.
* `startup` - Should PowerToys start at user logon.
* `theme` - Settings editor theme - `light`, `dark` or `system`.
* `system_theme` - Current Windows theme - `light` or `dark`.
* `powertoys_version` - The version of the PowerToys.
This JSON:
```json
{
"enabled": {
"FancyZones": true,
"PowerRename": true,
"Shortcut Guide": true
},
"startup": true,
"theme": "light",
"system_theme": "dark",
"powertoys_version": "0.14.2.0"
}
```
Produces this general settings screen:
![General settings](../images/settings/general_settings.png)
## Putting it all together
The runner combines general settings and each module settings into a single JSON that is passed to the settings editor. Example combined settings look like this:
```json
{
"general": {
"enabled": {
"FancyZones": true,
"PowerRename": true,
"Shortcut Guide": true
},
"startup": true,
"theme": "light",
"system_theme": "dark",
"powertoys_version": "0.14.2.0"
},
"powertoys": {
"FancyZones": { ... },
"PowerRename": { ... },
"Shortcut Guide":{
"name": "Shortcut Guide",
"version": "1.0",
"description": "Shows a help overlay with Windows shortcuts when the Windows key is pressed.",
"overview_link": "https://github.com/.../README.md",
"icon_key": "pt-shortcut-guide",
"properties": { ... }
}
}
}
```
## C++ helpers
While you can generate and parse JSON yourself there are helper methods provided.
### Loading settings
When a PowerToy module is created, it should load its configuration. This can be done by calling
```c++
json::JsonObject PTSettingsHelper::load_module_settings(std::wstring_view powertoy_name);
```
declared in [`settings_helpers.h`](/src/common/settings_helpers.h). The function will return an `json::JsonObject` object containing the module settings.
Another option is using [`PowerToySettings::PowerToyValues`](/src/common/settings_objects.h#L67) class. A static method
```c++
PowerToyValues PowerToyValues::load_from_settings_file(std::wstring_view powertoy_name);
```
will load and parse the settings. You can also use
```c++
PowerToyValues PowerToyValues::from_json_string(std::wstring_view json);
```
to parse JSON string - for example when implementing [`set_config()`](modules/interface.md#set_config). The returned `PowerToyValues` object has helper methods that return `std::optional` with values, for example:
```c++
auto settings = PowerToyValues::load_from_settings_file(L"some_powertoy");
std::optional<std::wstring> str_prop = settings.get_string_value(L"some_string_property");
auto int_prop = settings.get_int_value(L"some_int_property");
```
### Generating settings screen
The [`PowerToySettings::Settings`](/src/common/settings_objects.h) can be used to generate settings:
```c++
// Need to get strings from the resource file.
extern "C" IMAGE_DOS_HEADER __ImageBase;
auto hinstance = reinterpret_cast<HINSTANCE>(&__ImageBase);
PowerToysSettings::Settings settings(hinstance, L"example_powertoy");
settings.set_description(L"Example powertoy.");
settings.set_overview_link(L"https://example.com");
settings.set_icon_key(L"pt-example");
settings.add_string(L"string_val", L"Example string label", L"example value");
settings.add_int_spinner(L"int_val", L"Example int label", 0, 0, 100, 10);
```
You can then use `std::wstring serialize()` or `bool serialize_to_buffer(wchar_t* buffer, int* buffer_size)` methods to generate output JSON string.
### Saving settings
Use
```c++
void PTSettingsHelper::save_module_settings(std::wstring_view powertoy_name, json::JsonObject& settings);
```
declared in [`settings_helpers.h`](/src/common/settings_helpers.h).
## Module settings elements
### Bool toggle
```c++
add_bool_toggle(name, description, value)
```
A simple on-off toggle. Parameters:
* `name` - Key for the element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Initial state of the toggle (`true` - on, `false` - off).
This C++:
```c++
settings.add_bool_toggle(L"bool_name", L"description", true);
```
produces this settings element:
![Bool Toggle](../images/settings/bool_toggle.png)
and this generated JSON:
```json
{
"properties": {
"bool_name": {
"editor_type": "bool_toggle",
"order": autoincremented_number,
"display_name": "description",
"value": true
}
}
}
```
The toggle value is stored as bool:
```c++
std::optional<bool> bool_value = settings.get_bool_value(L"bool_name");
```
### Int Spinner
```c++
add_int_spinner(name, description, value, min, max, step)
```
Numeric input with dials to increment and decrement the value. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Initial control value.
* `min`, `max` - Minimum and maximum values for the input. User cannot use dials to move beyond those values, if a value out of range is inserted using the keyboard, it will get clamped to the allowed range.
* `step` - How much the dials change the value.
This C++:
```c++
settings.add_int_spinner(L"int_spinner_name", L"description", 50, -100, 100, 10);
```
produces this settings element:
![Int Spinner](../images/settings/int_spinner.png)
and this generated JSON:
```json
{
"properties": {
"int_spinner_name": {
"editor_type": "int_spinner",
"order": autoincremented_number,
"display_name": "description",
"value": 50,
"min": -100,
"max": 100,
"step": 10
}
}
}
```
The spinner value is stored as int:
```c++
std::optional<int> int_value = settings.get_int_value(L"int_spinner_name");
```
### String
```c++
add_string(name, description, value)
```
Single line text input. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Default value for the input.
This C++:
```c++
settings.add_string(L"string_name", L"description", L"value");
```
produces this settings element:
![String](../images/settings/string.png)
and this generated JSON:
```json
{
"properties": {
"string_name": {
"editor_type": "string_text",
"order": autoincremented_number,
"display_name": "description",
"value": "value"
}
}
}
```
The input value is stored as `std::wstring`:
```c++
std::optional<std::wstring> string_value = settings.get_string_value(L"string_name");
```
### Multiline string
```c++
add_multiline_string(name, description, value)
```
Multiline text input. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Default value for the input. Can have multiple lines.
This C++:
```c++
settings.add_multiline_string(L"multiline_name", L"description", L"multiline1\nmultiline2");
```
produces this settings element:
![Multiline](../images/settings/multiline.png)
and this generated JSON:
```json
{
"properties": {
"multiline_name": {
"editor_type": "string_text",
"multiline": true,
"order": autoincremented_number,
"display_name": "description",
"value": "multiline1\nmultiline2"
}
}
}
```
The input value is stored as string:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"multiline_name");
```
### Color picker
```c++
add_color_picker(name, description, value)
```
Allows user to pick a color. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Initial color, as a string in `"#RRGGBB"` format.
This C++:
```c++
settings.add_color_picker(L"colorpicker_name", L"description", L"#102040");
```
produces this settings element:
![Color Picker](../images/settings/color_picker.png)
and this generated JSON:
```json
{
"properties": {
"colorpicker_name": {
"editor_type": "color_picker",
"order": autoincremented_number,
"display_name": "description",
"value": "#102040"
}
}
}
```
The color picker value is stored as `std::wstring`:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"colorpicker_name");
```
### Hotkey
```c++
settings.add_hotkey(name, description, hotkey)
```
Input for capturing hotkeys. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `hotkey` - Instance of `PowerToysSettings::HotkeyObject` class.
You can create `PowerToysSettings::HotkeyObject` object either by using helper `from_settings` static method or by providing JSON object to `from_json` static method:
The `PowerToysSettings::HotkeyObject::from_settings` take following parameters:
* `win_pressed` - Is the WinKey pressed.
* `ctrl_pressed` - Is the Ctrl key pressed.
* `alt_pressed` - Is the Alt key pressed.
* `shift_pressed` - Is the Shift key pressed.
* `vk_code` - The [virtual key-code](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) of the key.
The displayed key is deduced from the `vk_code` using the users keyboard layout and language settings.
Similar parameters can be passed using the `from_json` static method:
```c++
json::JsonObject json;
json.SetNamedValue(L"win", json::value(win_pressed));
json.SetNamedValue(L"ctrl", json::value(ctrl_pressed));
json.SetNamedValue(L"alt", json::value(alt_pressed));
json.SetNamedValue(L"shift", json::value(shift_pressed));
json.SetNamedValue(L"code", json::value(vk_code));
json.SetNamedValue(L"key", json::value(L"string with key name"));
auto hotkey = PowerToysSettings::HotkeyObject::from_json(json);
```
This C++:
```c++
settings.add_hotkey(L"hotkey_name",
L"description",
PowerToysSettings::HotkeyObject::from_settings(true, true, true, true, VK_F5));
```
produces this settings element:
![Hotkey](../images/settings/hotkey.png)
and this generated JSON (`114` is the value of `VK_F5`):
```json
{
"properties": {
"hotkey_name": {
"editor_type": "hotkey",
"order": autoincremented_number,
"display_name": "description",
"value": {
"win": true,
"ctrl": true,
"alt": true,
"shift": true,
"code": 114,
"key": "F5"
}
}
}
}
```
The hotkey value is returned as JSON, with the same format as `from_json` method uses. You can use `HotkeyObject` class to parse this JSON, since it offers some helper methods. A typical example of registering a hotkey:
```c++
std::optional<json::JsonObject> value = settings.get_json(L"hotkey_name");
if (value) {
auto hotkey = PowerToysSettings::HotkeyObject::from_json(*value);
RegisterHotKey(hwnd, 1, hotkey.get_modifiers(), hotkey.get_code());
}
```
### Choice group
```c++
add_choice_group(name, description, value, vector<pair<wstring, wstring>> keys_and_texts)
add_choice_group(name, description, value, vector<pair<wstring, UINT>> keys_and_texts)
```
A radio buttons group. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Key selected by default.
* `keys_and_text` - Vector of radio buttons definitions: key and the displayed label. The texts can either be strings or resource IDs.
This C++:
```c++
settings.add_choice_group(L"choice_group_name", L"description", L"val1", { { L"val1", L"value-1" },
{ L"val2", L"value-2" },
{ L"val3", L"value-3" } });
```
produces this settings element:
![Choice group](../images/settings/choice_group.png)
and this generated JSON:
```json
{
"properties": {
"choice_group_name": {
"editor_type": "choice_group",
"order": autoincremented_number,
"display_name": "description",
"value": "val1",
"options": [ {"key": "val1", "text": "value-1"},
{"key": "val2", "text": "value-2"},
{"key": "val3", "text": "value-3"} ]
}
}
}
}
```
The chosen button value is stored as a string with the key of the button selected by the user:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"choice_group_name");
```
### Dropdown
```c++
add_dropdown(name, description, value, vector<pair<wstring, wstring>> keys_and_texts)
add_dropdown(name, description, value, vector<pair<wstring, UINT>> keys_and_texts)
```
A dropdown. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `value` - Key selected by default.
* `keys_and_text` - Vector of the options definitions: key and the displayed label. The texts can either be strings or resource IDs.
This C++:
```c++
settings.add_dropdown(L"dropdown_name", L"description", L"val2", { { L"val1", L"value-1" },
{ L"val2", L"value-2" },
{ L"val3", L"value-3" } });
```
produces this settings element:
![Dropdown 1](../images/settings/dropdown_1.png)
![Dropdown 2](../images/settings/dropdown_2.png)
and this generated JSON:
```json
{
"properties": {
"dropdown_name": {
"editor_type": "dropdown",
"order": autoincremented_number,
"display_name": "description",
"value": "val1",
"options": [ {"key": "val1", "text": "value-1"},
{"key": "val2", "text": "value-2"},
{"key": "val3", "text": "value-3"} ]
}
}
}
}
```
The chosen value is stored as a string with the key of the option selected by the user:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"dropdown_name");
```
### Custom action
```c++
add_custom_action(name, description, button_text, ext_description)
```
Adds a button with a description. Parameters:
* `name` - Key for element in the JSON.
* `description` - String or resource ID of the text displayed to the user.
* `button_text` - String or resource ID for the button label.
* `ext_description` - String or resource ID for the extended description.
This C++:
```c++
settings.add_custom_action(L"custom_action_name", L"description", L"button_text", L"ext_description");
```
produces this settings element:
![Custom action](../images/settings/custom_action.png)
and this generated JSON:
```json
{
"properties": {
"custom_action_name": {
"editor_type": "custom_action",
"order": autoincremented_number,
"display_name": "description",
"button_text": "button_text",
"value": "ext_description"
}
}
}
```
When the button is pressed, the `call_custom_action` method of the module will be called, with JSON containing the name of the action. In our example:
```json
{
"action_name":"custom_action_name",
"value":"ext_description"
}
```

View File

@@ -1,10 +1,3 @@
# Web project for the Settings UI
## Introduction
This project generates the web UI shown in the [PowerToys Settings](/src/editor).
It's a `ReactJS` project created using [UI Fabric](https://developer.microsoft.com/en-us/fabric#/).
## Build Commands
Here are the commands to build and test this project:
@@ -22,9 +15,11 @@ npm run start
npm run build
```
**Note:** you will need to rebuild the settings project to pick up the changes
## Updating the icons
Icons inside [`src/icons/`](./src/icons/) were generated from the [Office UI Fabric Icons subset generation tool.](https://uifabricicons.azurewebsites.net/)
Icons inside [`src/icons/`](/src/settings-web/src/icons/) were generated from the [Office UI Fabric Icons subset generation tool.](https://uifabricicons.azurewebsites.net/)
In case the subset needs to be changed, additional steps are needed to include the icon font in the built `dist/bundle.js`:
- Copy the inline font data taken from [`src/icons/css/fabric-icons-inline.css`](src/icons/css/fabric-icons-inline.css) and place it in the `fontFace` `src` value in [`src/icons/src/fabric-icons.ts`](src/icons/src/fabric-icons.ts).
@@ -37,44 +32,44 @@ SVG icons, including the icons for each PowerToy listed in the Settings, are con
The project structure is based on the [`UI Fabric` scaffold](https://developer.microsoft.com/en-us/fabric#/get-started/web#option-1-quick-start) obtained by initializing it with `npm init uifabric`.
#### [index.html](./index.html)
#### [index.html](/src/settings-web/index.html)
The HTML entry-point of the project.
Loads the `ReactJS` distribution script.
Defines JavaScript functions to receive and send messages to the [PowerToys Settings](/src/editor) window.
#### [src/index.tsx](./src/index.tsx)
#### [src/index.tsx](/src/settings-web/src/index.tsx)
Main `ReactJS` entrypoint, initializing the `ReactDOM`.
#### [src/setup_icons.tsx](./src/setup_icons.tsx)
#### [src/setup_icons.tsx](/src/settings-web/src/setup_icons.tsx)
Defines the `setup_powertoys_icons` function that registers the icons to be used in the components.
#### [src/components/](./src/components/)
#### [src/components/](/src/settings-web/src/components/)
Contains the `ReactJS` components, including the Settings controls for each type of setting.
#### [src/components/App.tsx](./src/components/App.tsx)
#### [src/components/App.tsx](/src/settings-web/src/components/App.tsx)
Defines the main App component, containing the UI layout, navigation menu, dialogs and main load/save logic.
#### [src/components/GeneralSettings.tsx](./src/components/GeneralSettings.tsx)
#### [src/components/GeneralSettings.tsx](/src/settings-web/src/components/GeneralSettings.tsx)
Defines the PowerToys General Settings component, including logic to construct the object sent to PowerToys to change the General settings.
#### [src/components/CustomSettingsScreen.tsx](./src/components/CustomSettingsScreen.tsx)
#### [src/components/ModuleSettings.tsx](/src/settings-web/src/components/ModuleSettings.tsx)
Defines the component that generates the settings screen for a PowerToy depending on its settings definition.
#### [src/components/BaseSettingsControl.tsx](./src/components/BaseSettingsControl.tsx)
#### [src/components/BaseSettingsControl.tsx](/src/settings-web/src/components/BaseSettingsControl.tsx)
Defines the base class for a Settings control.
#### [src/css/layout.css](./src/css/layout.css)
#### [src/css/layout.css](/src/settings-web/src/css/layout.css)
General layout styles.
#### [src/icons/](./src/icons/)
#### [src/icons/](/src/settings-web/src/icons/)
Icons generated from the [Office UI Fabric Icons subset generation tool.](https://uifabricicons.azurewebsites.net/)
#### [src/svg/](./src/svg/)
#### [src/svg/](/src/settings-web/src/svg/)
SVG icon assets.
## Creating a new settings control
The [`BaseSettingsControl` class](./src/components/BaseSettingsControl.tsx) can be extended to create a new Settings control type.
The [`BaseSettingsControl` class](/src/settings-web/src/components/BaseSettingsControl.tsx) can be extended to create a new Settings control type.
```tsx
export class BaseSettingsControl extends React.Component <any, any> {
@@ -92,7 +87,7 @@ export class BaseSettingsControl extends React.Component <any, any> {
A settings control overrides the `get_value` function to return the value to be used for the Setting the control is representing.
It will use the `parent_on_change` property to signal that the user made some changes to the settings.
Here's the [`StringTextSettingsControl`](./src/components/StringTextSettingsControl.tsx) component to serve as an example:
Here's the [`StringTextSettingsControl`](/src/settings-web/src/components/StringTextSettingsControl.tsx) component to serve as an example:
```tsx
export class StringTextSettingsControl extends BaseSettingsControl {
@@ -153,15 +148,15 @@ Each settings property has a `editor_type` field that's used to differentiate be
}
```
A new Settings control component can be added to [`src/components/`](./src/components/).
To render the new Settings control, its `editor_type` and component instance need to be added to the [`CustomSettingsScreen` component render()](./src/components/CustomSettingsScreen.tsx):
A new Settings control component can be added to [`src/components/`](/src/settings-web/src/components/).
To render the new Settings control, its `editor_type` and component instance need to be added to the [`ModuleSettings` component render()](/src/settings-web/src/components/ModuleSettings.tsx):
```tsx
import React from 'react';
import {StringTextSettingsControl} from './StringTextSettingsControl';
...
export class CustomSettingsScreen extends React.Component <any, any> {
export class ModuleSettings extends React.Component <any, any> {
references: any;
parent_on_change: Function;
...

287
doc/devdocs/settings.md Normal file
View File

@@ -0,0 +1,287 @@
# Settings
## Overview
PowerToys provides a common framework for settings. It can be used to save and load settings on disk, and provides a user interface for changing the options.
## Initialization
When a PowerToy module is created, it should load its configuration using [`PowerToyValues`](/src/common/settings_objects.h) class. The class provides static `load_from_settings_file` method which takes one parameter - the PowerToy module name. The `PowerToyValues` class provides methods to extract values. The method return `std::optional` - it is possible, that the method will return `std::nullopt` in which case you must use defaults.
```c++
class ExamplePowertoy : public PowertoyModuleIface
{
public:
ExamplePowertoy()
{
auto settings = PowerToySettings::PowerToyValues::load_from_settings_file(L"Example Powertoy");
// See if value is set, otherwise keep the default value
if (auto int_value = settings.get_int_value(L"int_setting"))
{
m_int_setting = *int_value;
}
if (auto string_value = setting.get_string_value("string_setting"))
{
m_string_setting = *string_value;
}
}
// ...
private:
// Settings and their default values
int m_int_setting = 10;
std::wstring m_string_setting = L"default";
}
```
## Settings screen
When users starts the settings screen, the runner will call the [`get_config()`](modules/interface.md) method. The interface expects the method to fill provided buffer. Use the [`Settings`](/src/common/settings_objects.h) class to construct proper response with proper format. The class has helper method to set description and links fields, it also provides a way to define the content of the settings screen. Keep all the strings in the resource file and provide the resource IDs to the methods.
```c++
extern "C" IMAGE_DOS_HEADER __ImageBase; // Needed to get strings from the resource file
bool ExamplePowertoy::get_config(wchar_t* buffer, int* buffer_size)
{
PowerToySettings::Settings settings(reinterpret_cast<HINSTANCE>(&__ImageBase), L"Example Powertoy");
// Set PowerToy description
settings.set_description(IDS_POWERTOY_DESCRIPTION);
settings.set_icon_key("pt_icon_key");
settings.set_overview_link(IDS_POWERTOY_OVERVIEW_LINK);
settings.set_video_link(IDS_POWERTOY_OVERVIEW_LINK);
// Add int and string settings, provide current values:
settings.add_int_spinner(L"int_setting", IDS_INT_SETTING_DESCRIPTION, m_int_setting, 0, 100, 10);
settings.add_string(L"string_setting", IDS_STRING_SETTING_DESCRIPTION, m_string_setting);
// Use the build-in machinery to return the configuration:
return settings.serialize_to_buffer(buffer, buffer_size);
}
```
The list of all the available settings elements and their description is [further in this doc](#available-settings-elements). New PowerToy icons need to be [added to the `settings-web` project](https://github.com/microsoft/PowerToys/blob/master/doc/devdocs/settings-web.md#updating-the-icons).
## User changes settings
When user closes the settings screen, the runner will call the [`get_config()`](modules/interface.md) method. Use [`PowerToyValues`](/src/common/settings_objects.h) class static `from_json_string` method to parse the settings. After that, the code is similar to loading the settings from disk:
```c++
void ExamplePowertoy::set_config(const wchar_t* config)
{
auto settings = PowerToySettings::PowerToyValues::from_json_string(config);
// See if value is set update the values
if (auto int_value = settings.get_int_value(L"int_setting"))
{
m_int_setting = *int_value;
}
if (auto string_value = setting.get_string_value("string_setting"))
{
m_string_setting = *string_value;
}
// Save the new settings to disk
settings.save_to_settings_file();
}
```
## Detailed reference
For a detailed reference of how the settings are implemented in the runner and in the settings editor, consult [this detailed guide](settings-reference.md).
# Available settings elements
## Bool toggle
<table><tr><td align="center">
<img src="../images/settings/bool_toggle.png" width="80%">
</td></tr></table>
```c++
settings.add_bool_toggle(name, description, value)
```
A simple on-off toggle. Parameters:
* `name` - Key for the element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Initial state of the toggle (`true` - on, `false` - off).
The toggle value is stored as bool:
```c++
std::optional<bool> bool_value = settings.get_bool_value(L"bool_name");
```
## Int Spinner
<table><tr><td align="center">
<img src="../images/settings/int_spinner.png" width="80%">
</td></tr></table>
```c++
settings.add_int_spinner(name, description, value, min, max, step)
```
Numeric input with dials to increment and decrement the value. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Initial control value.
* `min`, `max` - Minimum and maximum values for the input. User cannot use dials to move beyond those values, if a value out of range is inserted using the keyboard, it will get clamped to the allowed range.
* `step` - How much the dials change the value.
The spinner value is stored as int:
```c++
std::optional<int> int_value = settings.get_int_value(L"int_spinner_name");
```
## String
<table><tr><td align="center">
<img src="../images/settings/string.png" width="80%">
</td></tr></table>
```c++
settings.add_string(name, description, value)
```
Single line text input. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Default value for the input.
The input value is stored as `std::wstring`:
```c++
std::optional<std::wstring> string_value = settings.get_string_value(L"string_name");
```
## Multiline string
<table><tr><td align="center">
<img src="../images/settings/multiline.png" width="80%">
</td></tr></table>
```c++
settings.add_multiline_string(name, description, value)
```
Multiline text input. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Default value for the input. Can have multiple lines.
The input value is stored as string:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"multiline_name");
```
## Color picker
<table><tr><td align="center">
<img src="../images/settings/color_picker.png" width="80%">
</td></tr></table>
```c++
settings.add_color_picker(name, description, value)
```
Allows user to pick a color. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Initial color, as a string in `"#RRGGBB"` format.
The color picker value is stored as `std::wstring` as `#RRGGBB`:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"colorpicker_name");
```
## Hotkey
<table><tr><td align="center">
<img src="../images/settings/hotkey.png" width="80%">
</td></tr></table>
```c++
settings.add_hotkey(name, description, hotkey)
```
Input for capturing hotkeys. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `hotkey` - Instance of `PowerToysSettings::HotkeyObject` class.
You can create `PowerToysSettings::HotkeyObject` object either by using helper `from_settings` static method or by providing a JSON object to `from_json` static method.
The `PowerToysSettings::HotkeyObject::from_settings` take following parameters:
* `win_pressed` - Is the WinKey pressed.
* `ctrl_pressed` - Is the Ctrl key pressed.
* `alt_pressed` - Is the Alt key pressed.
* `shift_pressed` - Is the Shift key pressed.
* `vk_code` - The [virtual key-code](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) of the key.
The displayed key is deduced from the `vk_code` using the users keyboard layout and language settings.
The hotkey value is returned as JSON, which can be used with the `from_json` method to create a `HotkeyObject` object. A typical example of registering a hotkey:
```c++
std::optional<json::JsonObject> value = settings.get_json(L"hotkey_name");
if (value) {
auto hotkey = PowerToysSettings::HotkeyObject::from_json(*value);
RegisterHotKey(hwnd, 1, hotkey.get_modifiers(), hotkey.get_code());
}
```
## Choice group
<table><tr><td align="center">
<img src="../images/settings/choice_group.png" width="80%">
</td></tr></table>
```c++
add_choice_group(name, description, value, vector<pair<wstring, UINT>> keys_and_texts)
```
A radio buttons group. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Key selected by default.
* `keys_and_text` - Vector of radio buttons definitions: key and the displayed label.
The chosen button value is stored as a string with the key of the button selected by the user:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"choice_group_name");
```
## Dropdown
<table>
<tr><td align="center">
<img src="../images/settings/dropdown_1.png" width="80%">
</td></tr>
<tr><td align="center">
<img src="../images/settings/dropdown_2.png" width="80%">
</td></tr>
</table>
```c++
add_dropdown(name, description, value, vector<pair<wstring, UINT>> keys_and_texts)
```
A dropdown. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `value` - Key selected by default.
* `keys_and_text` - Vector of the options definitions: key and the displayed label.
The chosen value is stored as a string with the key of the option selected by the user:
```c++
std::optional<std::wstring> value = settings.get_string_value(L"dropdown_name");
```
## Custom action
<table><tr><td align="center">
<img src="../images/settings/custom_action.png" width="80%">
</td></tr></table>
```c++
add_custom_action(name, description, button_text, ext_description)
```
Adds a button with a description. Parameters:
* `name` - Key for element in the JSON.
* `description` - Resource ID of the text displayed to the user.
* `button_text` - Resource ID for the button label.
* `ext_description` - Resource ID for the extended description.
When the button is pressed, the `call_custom_action` method of the module will be called, with JSON containing the name of the action. Parse it using `PowerToysSettings::CustomActionObject`:
```c++
void ExamplePowertoy::call_custom_action(const wchar_t* action) override
{
auto action_object = PowerToysSettings::CustomActionObject::from_json_string(action);
auto name = action_object.get_name(); // same value as the 'name' parameter
// .. do stuff ..
}
```
# File organization
### [main.cpp](/src/settings/main.cpp)
Contains the main executable code, initializing and managing the Window containing the WebView and communication with the main PowerToys executable.
### [StreamURIResolverFromFile.cpp](/src/settings/StreamURIResolverFromFile.cpp)
Defines a class implementing `IUriToStreamResolver`. Allows the WebView to navigate to filesystem files in this Win32 project.
### [settings-html/](/src/settings/settings-html/)
Contains the assets file from building the [Web project for the Settings UI](/src/settings/settings-html). It will be loaded by the WebView.

View File

@@ -0,0 +1,15 @@
# Communication with modules
## Through runner
- The settings process communicates changes in the UI to most modules using the runner through delegates.
- More details on this are mentioned in [`runner-ipc.md`](settingsv2/runner-ipc.md).
## PT Run
- Any changes to the UI are saved by the settings process in the `settings.json` file located within the `/Local/Microsoft/PowerToys/Launcher/` folder.
- PT Run watches for any changes within this file and updates it's general settings or propagates the information to the plugins, depending on the type of information.
Eg: The maximum number of results drop down updates the maximum number of rows in the results list which updates the general settings of PT Run whereas the drive detection checkbox details are dispatched to the indexer plugin.
## Keyboard Manager
- The Settings process and keyboard manager share access to a common `default.json` file which contains information about the remapped keys and shortcuts.
- To ensure that there is no contention while both processes try to access the common file, there is a named file mutex.
- The settings process expects the keyboard manager process to create the `default.json` file if it does not exist. It does not create the file in case it is not present.

View File

@@ -0,0 +1,12 @@
# Compatibility with legacy settings and runner
The following must be kept in mind regarding compatibility with settings v1 and runner.
### 1. Folder Naming structure
- Each of the modules has a folder within the `Local/Microsoft/PowerToys` directory which contains the module configurations within the `settings.json` file. The name of this folder must be the same across settingsv1 and settingsv2.
- The name of the settings folder for each powertoy is the same as the `ModuleName`. It is set within each of the viewModel files. This name must not be changed to ensure that the user configurations for each of the powertoys rolls over on update.
### 2. Communication with runner
- The status of each of the modules is communicated with the runner in the form of a json object. The names of all the powerToys is set in the [`EnableModules.cs`](src/core/Microsoft.PowerToys.Settings.UI.Library/EnabledModules.cs) file. The `JsonPropertyName` must not be changed to ensure that the information is dispatched properly to all the modules by the runner.
### ImageResizer anomaly
All the powertoys have the same folder name as well as JsonPropertyName to communicate information with the runner. However that is not the case with ImageResizer. The folder name is `ImageResizer` whereas the JsonPropertyName is `Image Resizer`(Note the additional space). This should not be changed to ensure backward compatibility as well as proper functioning of the module.

View File

@@ -0,0 +1,46 @@
# Custom HotKey Control
The Settings project provides a custom hotkey control which consumes key presses. This control can be used to set the hotkey of any PowerToy.
## HotKey Control in FancyZones
![Image of hotkey control](/doc/images/settingsv2/settingshotkeycontrol.png)
## Hotkey related files
#### [`HotkeySettingsControlHook.cs`](/src/core/Microsoft.PowerToys.Settings.UI.Library/HotkeySettingsControlHook.cs)
- This function initializes and starts the [`keyboardHook`](src/common/interop/KeyboardHook.cpp) for the hotkey control.
```csharp
public HotkeySettingsControlHook(KeyEvent keyDown, KeyEvent keyUp, IsActive isActive, FilterAccessibleKeyboardEvents filterAccessibleKeyboardEvents)
{
_keyDown = keyDown;
_keyUp = keyUp;
_isActive = isActive;
_filterKeyboardEvent = filterAccessibleKeyboardEvents;
_hook = new KeyboardHook(HotkeySettingsHookCallback, IsActive, FilterKeyboardEvents);
_hook.Start();
}
```
#### [`HotkeySettingsControl.xaml.cs`](/src/core/Microsoft.PowerToys.Settings.UI/HotkeySettingsControl.xaml.cs)
- The function of this class is to update the state of the keys being pressed within the custom control. This information is stored in `internalSettings`.
- It provides the following callbacks to the `HotKeySettingsControlHook`:
- `KeyUp`: Resets the key state in `internalSettings` when a key is released.
- `KeyDown`: Updates the user facing text of the hotkey control as soon as a key is pressed.
- `isActive`: Sets the current status of the keyboard hook.
- `FilterAccessibleKeyboardEvents`: This function is used to ignore the `Tab` and `Shift+Tab` key presses to meet the accessibility requirements.
#### [`HotkeySettings.cs`](/src/core/Microsoft.PowerToys.Settings.UI.Library/HotkeySettings.cs)
- Contains the structure of a HotKey where it is represented as a combination of one of the modifier keys (`Alt`, `Shift`, `Win` and `Ctrl`) and a non-modifier key.
#### Note
- The control displays all key presses to the user (except Tab and Shift+Tab which move focus out of the control). However, when the focus is being lost from the control, the `lastValidHotkeySettings` is set as the user facing text.

View File

@@ -0,0 +1,17 @@
# Overview
`Settingsv2` is WPF .net core desktop application. It uses the `WindowsXamlHost` control from the Windows Community Toolkit to host UWP controls from `WinUI3` library. More details about WinUI can be found [here](https://microsoft.github.io/microsoft-ui-xaml/about.html#what-is-it).
## Settings V2 Project structure
The Settings project is a XAML island based project which
follows the [MVVM architectural pattern][MVVM] where the graphical user interface is separated from the view models.
#### [UI Components:](/src/core/Microsoft.PowerToys.Settings.UI)
The Settings.UI project contains the xaml files for each of the UI components. It also contains the Hotkey logic for the settings control.
#### [Viewmodels:](/src/core/Microsoft.PowerToys.Settings.UI.Library)
The Settings.UI.Library project contains the data that is to be rendered by the UI components.
#### [Settings Runner:](/src/core/Microsoft.PowerToys.Settings.UI.Runner)
The function of the settings runner project is to communicate all changes that the user makes in the user interface, to the runner so that it can be dispatched and reflected in all the modules.
[MVVM]: https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-and-mvvm

View File

@@ -0,0 +1,12 @@
# Table of Contents
1. [Settings overview](/doc/devdocs/settingsv2/project-overview.md)
2. [UI Architecture](/doc/devdocs/settingsv2/ui-architecture.md)
3. [ViewModels](/doc/devdocs/settingsv2/viewmodels.md)
4. Data flow
- [Inter-Process Communication with runner](/doc/devdocs/settingsv2/runner-ipc.md)
- [Communication with modules](/doc/devdocs/settingsv2/communication-with-modules.md)
5. [Settings Utilities](/doc/devdocs/settingsv2/settings-utilities.md)
6. [Custom Hotkey control and keyboard hook handling](hotkeycontrol.md)
7. [Compatibility with legacy settings and runner](/doc/devdocs/settingsv2/compatibility-legacy-settings.md)
8. [XAML Island tweaks](/doc/devdocs/settingsv2/xaml-island-tweaks.md)
9. [Telemetry](/doc/devdocs/settingsv2/telemetry.md)

View File

@@ -0,0 +1,46 @@
# Inter-Process Communication with Runner
The Settings v2 process uses two way IPC to communicate with the runner process.
## Initialization
- On the settings' side, the two way IPC delegates are contained with the [`ShellPage.xaml.cs`](/src/core/Microsoft.PowerToys.Settings.UI/Views/ShellPage.xaml.cs) file. The delegates are static and the views for all the powerToys send the ipc information to the viewmodels as `ShellPage.DefaultSndMSGCallBack`.
- These delegates are initialized within the [`Mainwindow.xaml.cs`](/src/core/Microsoft.PowerToys.Settings.UI.Runner/MainWindow.xaml.cs) file in the `Settings.Runner` project.
## Types of IPC delegates
- There are three types of delegates for the settings to communicate with the runner:
1. `SendDefaultMessage` - This is used by all the viewmodels to communicate changes in the UI to the runner so that the information can be dispatched to the modules.
2. `RestartAsAdmin`
3. `CheckForUpdates`
## Sending information to runner
- The settings process communicates with the runner by using the delegates defined within the [`ShellPage.xaml.cs`](/src/core/Microsoft.PowerToys.Settings.UI/Views/ShellPage.xaml.cs) file.
- Depending on the type of object sending the information, the json is created accordingly.
- If any information has been modified by the user in the GeneralSettings page, then the json file sent to the runner has the name set to `general`, whereas if any information has been modified by the user in any powertoy related settings page, the name of the json file being communicated with the runner is set to `powertoy`.
## Receiving information from runner
- The `ShellPage`object has a `IPCResponseHandleList` which is a list of functions which handle IPC responses.
```csharp
// receive IPC Message
Program.IPCMessageReceivedCallback = (string msg) =>
{
if (ShellPage.ShellHandler.IPCResponseHandleList != null)
{
try
{
JsonObject json = JsonObject.Parse(msg);
foreach (Action<JsonObject> handle in ShellPage.ShellHandler.IPCResponseHandleList)
{
handle(json);
}
}
catch (Exception)
{
}
}
};
```
- Whenever any information is sent from the runner each of the functions in the handle list perform their action on that json object.
- One example of where information sent from the runner is being processed by the settings is in [`GeneralPage.xaml.cs`](/src/core/Microsoft.PowerToys.Settings.UI/Views/GeneralPage.xaml.cs) when the user clicks the check for updates button. The information displayed after, such as the user has the latest version installed is a result of this handle.

View File

@@ -0,0 +1,13 @@
# Settings Utilities
- Abstractions for each of the file/folder related operations are present in [`SettingsUtils.cs`](src/core/Microsoft.PowerToys.Settings.UI.Library/SettingsUtils.cs).
- To reduce contention between the settings process and runner while trying to access the `settings.json` file of any powertoy, the settings process tries to access the file only when it needs to load the information for the first time. However, there is still no mechanism in place which ensures that both the settings and runner processes do not access the information simultaneously leading to `IOExceptions`.
## Utilities
### `GetSettings<T>(powertoy, filename)`
- The GetSettings function tries to read the file in the powertoy settings folder and creates a new file with default configurations if it does not exist.
- Ideally this function should only be called by the [`SettingsRepository`](src/core/Microsoft.PowerToys.Settings.UI.Library/SettingsRepository`1.cs) which would be accessed only when a powertoy settings object is being loaded for the first time.
- The reason behind ensuring that it is not accessed elsewhere is to avoid contention with the runner during file access.
- Each of the objects which are deserialized using this function must implement the `ISettingsConfig` interface.

Some files were not shown because too many files have changed in this diff Show More