[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
This commit is contained in:
Arjun Balgovind 2020-08-24 17:50:41 -07:00 committed by GitHub
parent 15938a12be
commit aebd7657ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 325 additions and 133 deletions

View File

@ -124,7 +124,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\lib\fancyzones.rc" />
<ResourceCompile Include="..\lib\Generated Files\fancyzones.rc" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

View File

@ -23,11 +23,19 @@
<Filter Include="Header Files">
<UniqueIdentifier>{2f10207d-d8d1-4a42-8027-8ca597b3cb23}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\lib\fancyzones.rc" />
<Filter Include="Resource Files">
<UniqueIdentifier>{a4241930-ecae-44e2-be82-25eff2499fcd}</UniqueIdentifier>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{8d479404-964b-4eb1-8fe8-554be3e68c9b}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\lib\fancyzones.rc">
<Filter>Generated Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -6,7 +6,7 @@
#include <interface/powertoy_module_interface.h>
#include <lib/ZoneSet.h>
#include <lib/resource.h>
#include <lib/Generated Files/resource.h>
#include <lib/trace.h>
#include <lib/Settings.h>
#include <lib/FancyZones.h>

View File

@ -11,6 +11,9 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 . resource.base.h resource.h fancyzones.base.rc fancyzones.rc" />
</Target>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<ProjectGuid>{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}</ProjectGuid>
@ -109,7 +112,8 @@
<ClInclude Include="KeyState.h" />
<ClInclude Include="MonitorWorkAreaHandler.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="Generated Files/resource.h" />
<None Include="resource.base.h" />
<ClInclude Include="SecondaryMouseButtonsHook.h" />
<ClInclude Include="Settings.h" />
<ClInclude Include="trace.h" />
@ -141,11 +145,15 @@
<ClCompile Include="ZoneWindow.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="fancyzones.rc" />
<None Include="fancyzones.base.rc" />
<ResourceCompile Include="Generated Files/fancyzones.rc" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources.resx" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />

View File

@ -13,6 +13,9 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{093625ff-2415-4c2c-842c-0ee7fcb1d203}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h">
@ -36,9 +39,6 @@
<ClInclude Include="util.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="trace.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -69,6 +69,8 @@
<ClInclude Include="FancyZonesDataTypes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Generated Files/resource.h">
<Filter>Generated Files</Filter>
<ClInclude Include="KeyState.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -124,11 +126,20 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="fancyzones.rc">
<Filter>Source Files</Filter>
</ResourceCompile>
<None Include="packages.config" />
<None Include="resource.base.h">
<Filter>Header Files</Filter>
</None>
<None Include="fancyzones.base.rc">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources.resx">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<ResourceCompile Include="Generated Files/fancyzones.rc">
<Filter>Generated Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,14 @@
{
"Projects": [
{
"LanguageSet": "Azure_Languages",
"LocItems": [
{
"SourceFile": "src\\modules\\fancyzones\\lib\\Resources.resx",
"CopyOption": "LangIDOnName",
"OutputPath": "src\\modules\\fancyzones\\lib"
}
]
}
]
}

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Setting_Description" xml:space="preserve">
<value>Create window layouts to help make multi-tasking easy</value>
</data>
<data name="Setting_Description_ShiftDrag" xml:space="preserve">
<value>Hold Shift key to activate zones while dragging</value>
</data>
<data name="Setting_Description_MouseSwitch" xml:space="preserve">
<value>Use a non-primary mouse button to toggle zone activation</value>
</data>
<data name="Setting_Description_Override_Snap_Hotkeys" xml:space="preserve">
<value>Override Windows Snap hotkeys (Win + Arrow) to move windows between zones</value>
</data>
<data name="Setting_Description_Move_Window_Across_Monitors" xml:space="preserve">
<value>Move windows between zones across all monitors when snapping with (Win + Arrow)</value>
</data>
<data name="Setting_Description_Move_Windows_Based_On_Position" xml:space="preserve">
<value>Move windows based on their position when snapping with (Win + Arrow)</value>
</data>
<data name="Setting_Description_DisplayChange_MoveWindows" xml:space="preserve">
<value>Keep windows in their zones when the screen resolution changes</value>
</data>
<data name="Setting_Description_ZoneSetChange_MoveWindows" xml:space="preserve">
<value>During zone layout changes, windows assigned to a zone will match new size/positions</value>
</data>
<data name="Setting_Description_ZoneSetChange_FlashZones" xml:space="preserve">
<value>Flash zones when the active FancyZones layout changes</value>
</data>
<data name="Setting_Description_Show_Fancy_Zones_On_All_Monitors" xml:space="preserve">
<value>Show zones on all monitors while dragging a window</value>
</data>
<data name="Setting_Description_Span_Zones_Across_Monitors" xml:space="preserve">
<value>Allow zones to span across monitors</value>
</data>
<data name="Setting_Description_Make_Dragged_Window_Transparent" xml:space="preserve">
<value>Make dragged window transparent</value>
</data>
<data name="Setting_Description_ZoneColor" xml:space="preserve">
<value>Zone inactive color (Default #F5FCFF)</value>
</data>
<data name="Setting_Description_Zone_Border_Color" xml:space="preserve">
<value>Zone border color (Default #FFFFFF)</value>
</data>
<data name="Setting_Description_ZoneHighlightColor" xml:space="preserve">
<value>Zone highlight color (Default #008CFF)</value>
</data>
<data name="Setting_Description_Use_CursorPos_Editor_StartupScreen" xml:space="preserve">
<value>Follow mouse cursor instead of focus when launching editor in a multi screen environment</value>
</data>
<data name="Setting_Description_AppLastZone_MoveWindows" xml:space="preserve">
<value>Move newly created windows to their last known zone</value>
</data>
<data name="Setting_Description_Open_Window_On_Active_Monitor" xml:space="preserve">
<value>Move newly created windows to the current active monitor [EXPERIMENTAL]</value>
</data>
<data name="Setting_Description_RestoreSize" xml:space="preserve">
<value>Restore the original size of windows when unsnapping</value>
</data>
<data name="Setting_Launch_Editor_Label" xml:space="preserve">
<value>Zone configuration</value>
</data>
<data name="Setting_Launch_Editor_Button" xml:space="preserve">
<value>Edit zones</value>
</data>
<data name="Setting_Launch_Editor_Description" xml:space="preserve">
<value>To launch the zone editor, select the Edit zones button below or press the zone editor hotkey anytime</value>
</data>
<data name="Setting_Launch_Editor_Hotkey_Label" xml:space="preserve">
<value>Configure the zone editor hotkey</value>
</data>
<data name="Setting_Excluded_Apps_Description" xml:space="preserve">
<value>To exclude an application from snapping to zones add its name here (one per line). Excluded apps will react to the Windows Snap regardless of all other settings.</value>
</data>
<data name="Settings_Highlight_Opacity" xml:space="preserve">
<value>Zone opacity (%)</value>
</data>
<data name="FancyZones" xml:space="preserve">
<value>FancyZones</value>
</data>
<data name="Cant_Drag_Elevated" xml:space="preserve">
<value>We've detected an application running with administrator privileges. This blocks some functionality in PowerToys. Visit our wiki page to learn more.</value>
</data>
<data name="Cant_Drag_Elevated_Learn_More" xml:space="preserve">
<value>Learn more</value>
</data>
<data name="Cant_Drag_Elevated_Dialog_Dont_Show_Again" xml:space="preserve">
<value>Don't show again</value>
</data>
<data name="Keyboard_Listener_Error" xml:space="preserve">
<value>Cannot install keyboard listener.</value>
</data>
<data name="Window_Event_Listener_Error" xml:space="preserve">
<value>Cannot install Windows event listener.</value>
</data>
<data name="Powertoys_FancyZones" xml:space="preserve">
<value>PowerToys - FancyZones</value>
</data>
</root>

View File

@ -0,0 +1,40 @@
#include <windows.h>
#include "resource.h"
#include "../../../../common/version.h"
#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS
1 VERSIONINFO
FILEVERSION FILE_VERSION
PRODUCTVERSION PRODUCT_VERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", FILE_DESCRIPTION
VALUE "FileVersion", FILE_VERSION_STRING
VALUE "InternalName", INTERNAL_NAME
VALUE "LegalCopyright", COPYRIGHT_NOTE
VALUE "OriginalFilename", ORIGINAL_FILENAME
VALUE "ProductName", PRODUCT_NAME
VALUE "ProductVersion", PRODUCT_VERSION_STRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@ -1,72 +0,0 @@
#include <windows.h>
#include "resource.h"
#include "../../../common/version.h"
STRINGTABLE
BEGIN
IDS_SETTING_DESCRIPTION "Create window layouts to help make multi-tasking easy"
IDS_SETTING_DESCRIPTION_SHIFTDRAG "Hold Shift key to activate zones while dragging"
IDS_SETTING_DESCRIPTION_MOUSESWITCH "Use a non-primary mouse button to toggle zone activation"
IDS_SETTING_DESCRIPTION_OVERRIDE_SNAP_HOTKEYS "Override Windows Snap hotkeys (Win + Arrow) to move windows between zones"
IDS_SETTING_DESCRIPTION_MOVE_WINDOW_ACROSS_MONITORS "Move windows between zones across all monitors when snapping with (Win + Arrow)"
IDS_SETTING_DESCRIPTION_MOVE_WINDOWS_BASED_ON_POSITION "Move windows based on their position when snapping with (Win + Arrow)"
IDS_SETTING_DESCRIPTION_DISPLAYCHANGE_MOVEWINDOWS "Keep windows in their zones when the screen resolution changes"
IDS_SETTING_DESCRIPTION_ZONESETCHANGE_MOVEWINDOWS "During zone layout changes, windows assigned to a zone will match new size/positions"
IDS_SETTING_DESCRIPTION_ZONESETCHANGE_FLASHZONES "Flash zones when the active FancyZones layout changes"
IDS_SETTING_DESCRIPTION_SHOW_FANCY_ZONES_ON_ALL_MONITORS "Show zones on all monitors while dragging a window"
IDS_SETTING_DESCRIPTION_SPAN_ZONES_ACROSS_MONITORS "Allow zones to span across monitors"
IDS_SETTING_DESCRIPTION_MAKE_DRAGGED_WINDOW_TRANSPARENT "Make dragged window transparent"
IDS_SETTING_DESCRIPTION_ZONECOLOR "Zone inactive color (Default #F5FCFF)"
IDS_SETTING_DESCRIPTION_ZONE_BORDER_COLOR "Zone border color (Default #FFFFFF)"
IDS_SETTING_DESCRIPTION_ZONEHIGHLIGHTCOLOR "Zone highlight color (Default #008CFF)"
IDS_SETTING_DESCRIPTION_USE_CURSORPOS_EDITOR_STARTUPSCREEN "Follow mouse cursor instead of focus when launching editor in a multi screen environment"
IDS_SETTING_DESCRIPTION_APPLASTZONE_MOVEWINDOWS "Move newly created windows to their last known zone"
IDS_SETTING_DESCRIPTION_OPEN_WINDOW_ON_ACTIVE_MONITOR "Move newly created windows to the current active monitor [EXPERIMENTAL]"
IDS_SETTING_DESCRIPTION_RESTORESIZE "Restore the original size of windows when unsnapping"
IDS_SETTING_LAUNCH_EDITOR_LABEL "Zone configuration"
IDS_SETTING_LAUNCH_EDITOR_BUTTON "Edit zones"
IDS_SETTING_LAUNCH_EDITOR_DESCRIPTION "To launch the zone editor, select the Edit zones button below or press the zone editor hotkey anytime"
IDS_SETTING_LAUNCH_EDITOR_HOTKEY_LABEL "Configure the zone editor hotkey"
IDS_SETTING_EXCLUDED_APPS_DESCRIPTION "To exclude an application from snapping to zones add its name here (one per line). Excluded apps will react to the Windows Snap regardless of all other settings."
IDS_SETTINGS_HIGHLIGHT_OPACITY "Zone opacity (%)"
IDS_FANCYZONES "FancyZones"
IDS_CANT_DRAG_ELEVATED "We've detected an application running with administrator privileges. This blocks some functionality in PowerToys. Visit our wiki page to learn more."
IDS_CANT_DRAG_ELEVATED_LEARN_MORE "Learn more"
IDS_CANT_DRAG_ELEVATED_DIALOG_DONT_SHOW_AGAIN "Don't show again"
IDS_KEYBOARD_LISTENER_ERROR "Cannot install keyboard listener."
IDS_WINDOW_EVENT_LISTENER_ERROR "Cannot install Windows event listener."
IDS_POWERTOYS_FANCYZONES "PowerToys - FancyZones"
END
1 VERSIONINFO
FILEVERSION FILE_VERSION
PRODUCTVERSION PRODUCT_VERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", FILE_DESCRIPTION
VALUE "FileVersion", FILE_VERSION_STRING
VALUE "InternalName", INTERNAL_NAME
VALUE "LegalCopyright", COPYRIGHT_NOTE
VALUE "OriginalFilename", ORIGINAL_FILENAME
VALUE "ProductName", PRODUCT_NAME
VALUE "ProductVersion", PRODUCT_VERSION_STRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@ -1,5 +1,5 @@
#pragma once
#include "resource.h"
#include "Generated Files/resource.h"
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <Unknwn.h>

View File

@ -0,0 +1,13 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by fancyzones.rc
//////////////////////////////
// Non-localizable
#define FILE_DESCRIPTION "PowerToys FancyZones"
#define INTERNAL_NAME "fancyzones"
#define ORIGINAL_FILENAME "fancyzones.dll"
// Non-localizable
//////////////////////////////

View File

@ -1,46 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by fancyzones.rc
//////////////////////////////
// Non-localizable
#define FILE_DESCRIPTION "PowerToys FancyZones"
#define INTERNAL_NAME "fancyzones"
#define ORIGINAL_FILENAME "fancyzones.dll"
// Non-localizable
//////////////////////////////
#define IDS_SETTING_DESCRIPTION_SHIFTDRAG 101
#define IDS_SETTING_DESCRIPTION_MOUSESWITCH 102
#define IDS_SETTING_DESCRIPTION_OVERRIDE_SNAP_HOTKEYS 103
#define IDS_SETTING_DESCRIPTION_MOVE_WINDOW_ACROSS_MONITORS 104
#define IDS_SETTING_DESCRIPTION_MOVE_WINDOWS_BASED_ON_POSITION 105
#define IDS_SETTING_DESCRIPTION_DISPLAYCHANGE_MOVEWINDOWS 106
#define IDS_SETTING_DESCRIPTION_ZONESETCHANGE_MOVEWINDOWS 107
#define IDS_SETTING_DESCRIPTION_ZONESETCHANGE_FLASHZONES 108
#define IDS_SETTING_DESCRIPTION_SHOW_FANCY_ZONES_ON_ALL_MONITORS 109
#define IDS_SETTING_DESCRIPTION_SPAN_ZONES_ACROSS_MONITORS 110
#define IDS_SETTING_DESCRIPTION_MAKE_DRAGGED_WINDOW_TRANSPARENT 111
#define IDS_SETTING_DESCRIPTION_ZONECOLOR 112
#define IDS_SETTING_DESCRIPTION_ZONE_BORDER_COLOR 113
#define IDS_SETTING_DESCRIPTION_ZONEHIGHLIGHTCOLOR 114
#define IDS_SETTING_DESCRIPTION_APPLASTZONE_MOVEWINDOWS 115
#define IDS_SETTING_DESCRIPTION_OPEN_WINDOW_ON_ACTIVE_MONITOR 116
#define IDS_SETTING_DESCRIPTION_RESTORESIZE 117
#define IDS_SETTING_DESCRIPTION_USE_CURSORPOS_EDITOR_STARTUPSCREEN 118
#define IDS_SETTING_DESCRIPTION 119
#define IDS_SETTING_LAUNCH_EDITOR_LABEL 120
#define IDS_SETTING_LAUNCH_EDITOR_BUTTON 121
#define IDS_SETTING_LAUNCH_EDITOR_DESCRIPTION 122
#define IDS_SETTING_LAUNCH_EDITOR_HOTKEY_LABEL 123
#define IDS_SETTING_EXCLUDED_APPS_DESCRIPTION 124
#define IDS_SETTINGS_HIGHLIGHT_OPACITY 125
#define IDS_FANCYZONES 126
#define IDS_CANT_DRAG_ELEVATED 127
#define IDS_CANT_DRAG_ELEVATED_LEARN_MORE 128
#define IDS_CANT_DRAG_ELEVATED_DIALOG_DONT_SHOW_AGAIN 129
#define IDS_KEYBOARD_LISTENER_ERROR 130
#define IDS_WINDOW_EVENT_LISTENER_ERROR 131
#define IDS_POWERTOYS_FANCYZONES 132