| <?xml version="1.0" encoding="utf-8"?>  | 
| <!--  | 
|     *****************************************************************************  | 
|     **  | 
|     ** Copyright (C) 2019 The Qt Company Ltd.  | 
|     ** Contact: https://www.qt.io/licensing/  | 
|     **  | 
|     ** This file is part of the Qt VS Tools.  | 
|     **  | 
|     ** $QT_BEGIN_LICENSE:GPL-EXCEPT$  | 
|     ** Commercial License Usage  | 
|     ** Licensees holding valid commercial Qt licenses may use this file in  | 
|     ** accordance with the commercial license agreement provided with the  | 
|     ** Software or, alternatively, in accordance with the terms contained in  | 
|     ** a written agreement between you and The Qt Company. For licensing terms  | 
|     ** and conditions see https://www.qt.io/terms-conditions. For further  | 
|     ** information use the contact form at https://www.qt.io/contact-us.  | 
|     **  | 
|     ** GNU General Public License Usage  | 
|     ** Alternatively, this file may be used under the terms of the GNU  | 
|     ** General Public License version 3 as published by the Free Software  | 
|     ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT  | 
|     ** included in the packaging of this file. Please review the following  | 
|     ** information to ensure the GNU General Public License requirements will  | 
|     ** be met: https://www.gnu.org/licenses/gpl-3.0.html.  | 
|     **  | 
|     ** $QT_END_LICENSE$  | 
|     **  | 
|     *****************************************************************************  | 
| <#@output extension="xml" #>  | 
| <#@include file="$(SolutionDir)\common.tt" #>  | 
| <#@assembly Name="System.Xml" #>  | 
| <#@assembly Name="System.Xml.Linq" #>  | 
| <#@import namespace="System.Collections.Generic" #>  | 
| <#@import namespace="System.Linq" #>  | 
| <#@import namespace="System.Text" #>  | 
| <#@import namespace="System.Xml" #>  | 
| <#@import namespace="System.Xml.Linq" #>  | 
| <#  | 
|           var pathRuleCl = Path.Combine(VC_TARGETS_PATH, "1033", "cl.xml");  | 
|           var xmlRule = XmlLoad(File.ReadAllText(pathRuleCl, Encoding.UTF8));  | 
|           var categoryNames = xmlRule  | 
|               .Elements("Rule.Categories")  | 
|               .Elements("Category")  | 
|               .Where(x => x.Attribute("Subtype") == null)  | 
|               .ToDictionary(  | 
|                   x => (string)x.Attribute("Name"),  | 
|                   x => (string)x.Attribute("DisplayName"));  | 
| #>  | 
|     **          <#=WARNING_GENERATED_FILE#>  | 
|     *****************************************************************************  | 
| -->  | 
|   | 
| <ProjectSchemaDefinitions  | 
|   xmlns="http://schemas.microsoft.com/build/2009/properties"  | 
|   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  | 
|   xmlns:sys="clr-namespace:System;assembly=mscorlib">  | 
|   <Rule  | 
|     Name="QtRule30_Moc"  | 
|     PageTemplate="tool"  | 
|     DisplayName="Qt Meta-Object Compiler"  | 
|     Order="9">  | 
|     <Rule.DataSource>  | 
|       <DataSource  | 
|         Persistence="ProjectFile"  | 
|         ItemType="QtMoc" />  | 
|     </Rule.DataSource>  | 
|     <Rule.Categories>  | 
|       <Category Name="General" DisplayName="moc"/>  | 
|       <Category Name="MocCpp" DisplayName="Override C/C++"/>  | 
|     </Rule.Categories>  | 
|     <StringListProperty  | 
|       Name="Inputs"  | 
|       Category="General"  | 
|       IsRequired="true"  | 
|       Visible="False">  | 
|       <StringListProperty.DataSource>  | 
|         <DataSource  | 
|            Persistence="ProjectFile"  | 
|            ItemType="QtMoc"  | 
|            SourceType="Item" />  | 
|       </StringListProperty.DataSource>  | 
|     </StringListProperty>  | 
|     <StringProperty  | 
|       Name="ExecutionDescription"  | 
|       DisplayName="Execution Description"  | 
|       IncludeInCommandLine="False"/>  | 
|     <StringProperty  | 
|       Name="QtMocDir"  | 
|       Category="General"  | 
|       DisplayName="Output Directory"  | 
|       Description="Specifies the path of the generated moc output directory."/>  | 
|     <StringProperty  | 
|       Name="QtMocFileName"  | 
|       Category="General"  | 
|       DisplayName="Output File Name"  | 
|       Description="Specifies the name of the generated moc output file."/>  | 
|     <StringProperty  | 
|       Name="QTDIR"  | 
|       DisplayName="Qt Directory"  | 
|       Visible="false"/>  | 
|     <StringProperty  | 
|       Name="InputFile"  | 
|       DisplayName="Input File"  | 
|       Visible="false"/>  | 
|     <StringProperty  | 
|       Name="OutputFile"  | 
|       DisplayName="Output File"  | 
|       Visible="false"/>  | 
|     <StringProperty  | 
|       Name="MacFramework"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="macOS Framework"  | 
|       Description=  | 
| "Add macOS <framework> to the include path for header files. (-F <framework>)"  | 
|       Switch="-F "[value]""  | 
|       Visible="False"/>  | 
|     <BoolProperty  | 
|       Name="PreprocessOnly"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Preprocess Only"  | 
|       Description="Preprocess only; do not generate meta object code. (-E)"  | 
|       Switch="-E"  | 
|       Visible="False"/>  | 
|     <StringListProperty  | 
|       Name="Metadata"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Plugin Meta Data"  | 
|       Description=  | 
| "Add key/value pair to plugin meta data; separate with semicolons if more than one.  | 
| (-M<key=value>)"  | 
|       Switch="-M[value]" />  | 
|     <StringProperty  | 
|       Name="CompilerFlavor"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Compiler Flavor"  | 
|       Description=  | 
| "Set the compiler <flavor>: either "msvc" or "unix".  | 
| (--compiler-flavor <flavor>)"  | 
|       Switch="--compiler-flavor [value]"/>  | 
|     <BoolProperty  | 
|       Name="NoInclude"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="No Include"  | 
|       Description="Do not generate an #include statement. (-i)"  | 
|       Switch="-i"/>  | 
|     <StringProperty  | 
|       Name="PathPrefix"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Path Prefix"  | 
|       Description="<path> prefix for included file. (-p <path>)"  | 
|       Switch="-p [value]"/>  | 
|     <StringListProperty  | 
|       Name="ForceInclude"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Force Include"  | 
|       Description=  | 
| "Force #include <file> (overwrite default); separate with semicolons if more than one.  | 
| (-f <file>)"  | 
|       Switch="-f "[value]""/>  | 
|     <StringListProperty  | 
|       Name="PrependInclude"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Prepend Include"  | 
|       Description=  | 
| "Prepend #include <file> (preserve default); separate with semicolons if more than one.  | 
| (-b <file>)"  | 
|       Switch="-b "[value]""/>  | 
|     <StringListProperty  | 
|       Name="Include"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Include"  | 
|       Description=  | 
| "Parse <file> as an #include before the main source(s); separate with semicolons if more  | 
| than one. (--include <file>)"  | 
|       Switch="--include "[value]""/>  | 
|     <StringListProperty  | 
|       Name="NoNotesWarnings"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="No Notes Or Warnings"  | 
|       Description=  | 
| "Do not display notes (-nn) or warnings (-nw); Compatibility option; separate with semicolons if  | 
| more than one. (-n<n|w>)"  | 
|       Switch="-n[value]"  | 
|       Visible="False"/>  | 
|     <BoolProperty  | 
|       Name="NoNotes"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="No Notes"  | 
|       Description="Do not display notes. (--no-notes)"  | 
|       Switch="--no-notes"/>  | 
|     <BoolProperty  | 
|       Name="NoWarnings"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="No Warnings"  | 
|       Description="Do not display warnings (implies --no-notes). (--no-warnings)"  | 
|       Switch="--no-warnings"/>  | 
|     <BoolProperty  | 
|       Name="IgnoreConflicts"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Ignore Conflicts"  | 
|       Description=  | 
| "Ignore all options that conflict with compilers, like -pthread conflicting with moc's -p option.  | 
| (--ignore-option-clashes)"  | 
|       Switch="--ignore-option-clashes"/>  | 
|     <StringProperty  | 
|       Name="OptionsFile"  | 
|       HelpUrl="http://doc.qt.io/qt-5/moc.html"  | 
|       DisplayName="Options File"  | 
|       Description="Read additional command-line options from <file>. (@<file>)"  | 
|       Switch=""@[value]"" />  | 
|     <StringProperty  | 
|       Name="CommandLineTemplate"  | 
|       DisplayName="Command Line"  | 
|       Visible="False"  | 
|       IncludeInCommandLine="False" />  | 
|     <DynamicEnumProperty  | 
|       Name="QtMocBeforeTargets"  | 
|       Category="General"  | 
|       EnumProvider="Targets"  | 
|       IncludeInCommandLine="False" Visible="False">  | 
|       <DynamicEnumProperty.DisplayName>  | 
|         <sys:String>Execute Before</sys:String>  | 
|       </DynamicEnumProperty.DisplayName>  | 
|       <DynamicEnumProperty.Description>  | 
|         <sys:String>Specifies the targets for the build customization to run before.</sys:String>  | 
|       </DynamicEnumProperty.Description>  | 
|       <DynamicEnumProperty.ProviderSettings>  | 
|         <NameValuePair  | 
|           Name="Exclude"  | 
|           Value="^QtMocBeforeTargets|^Compute" />  | 
|       </DynamicEnumProperty.ProviderSettings>  | 
|       <DynamicEnumProperty.DataSource>  | 
|         <DataSource  | 
|           Persistence="ProjectFile"  | 
|           ItemType=""  | 
|           HasConfigurationCondition="true" />  | 
|       </DynamicEnumProperty.DataSource>  | 
|     </DynamicEnumProperty>  | 
|     <DynamicEnumProperty  | 
|       Name="QtMocAfterTargets"  | 
|       Category="General"  | 
|       EnumProvider="Targets"  | 
|       IncludeInCommandLine="False" Visible="False">  | 
|       <DynamicEnumProperty.DisplayName>  | 
|         <sys:String>Execute After</sys:String>  | 
|       </DynamicEnumProperty.DisplayName>  | 
|       <DynamicEnumProperty.Description>  | 
|         <sys:String>Specifies the targets for the build customization to run after.</sys:String>  | 
|       </DynamicEnumProperty.Description>  | 
|       <DynamicEnumProperty.ProviderSettings>  | 
|         <NameValuePair  | 
|           Name="Exclude"  | 
|           Value="^QtMocAfterTargets|^Compute" />  | 
|       </DynamicEnumProperty.ProviderSettings>  | 
|       <DynamicEnumProperty.DataSource>  | 
|         <DataSource  | 
|           Persistence="ProjectFile"  | 
|           ItemType=""  | 
|           HasConfigurationCondition="true" />  | 
|       </DynamicEnumProperty.DataSource>  | 
|     </DynamicEnumProperty>  | 
|     <StringListProperty  | 
|       Name="Outputs"  | 
|       DisplayName="Outputs"  | 
|       IncludeInCommandLine="False"  | 
|       Visible="False" />  | 
|     <StringListProperty  | 
|       Name="AdditionalDependencies"  | 
|       DisplayName="Additional Dependencies"  | 
|       IncludeInCommandLine="False"/>  | 
|     <StringProperty  | 
|       Subtype="AdditionalOptions"  | 
|       Name="AdditionalOptions"  | 
|       Category="General">  | 
|       <StringProperty.DisplayName>  | 
|         <sys:String>Additional Options</sys:String>  | 
|       </StringProperty.DisplayName>  | 
|       <StringProperty.Description>  | 
|         <sys:String>Additional Options</sys:String>  | 
|       </StringProperty.Description>  | 
|     </StringProperty>  | 
|     <EnumProperty  | 
|       Name="DynamicSource"  | 
|       DisplayName="Dynamic C++ Source"  | 
|       Description="Add file to list of C++ sources during build.">  | 
|       <EnumValue  | 
|         Name="output"  | 
|         DisplayName="Output File"  | 
|         Description="Use output as dynamic C++ source."/>  | 
|       <EnumValue  | 
|         Name="input"  | 
|         DisplayName="Input File"  | 
|         Description="Use input as dynamic C++ source."/>  | 
|       <EnumValue  | 
|         Name="false"  | 
|         DisplayName="Disable"  | 
|         Description="Disable dynamic source."/>  | 
|     </EnumProperty>  | 
|     <BoolProperty  | 
|       Name="ParallelProcess"  | 
|       DisplayName="Parallel Process"  | 
|       Description="Run tool in parallel process."/>  | 
|     <StringListProperty Name="IncludePath" Visible="false"/>  | 
|     <StringListProperty Name="Define" Visible="false"/>  | 
|     <StringListProperty Name="Undefine" Visible="false"/>  | 
|     <EnumProperty  | 
|       Name="OverrideClCompile"  | 
|       Category="MocCpp"  | 
|       DisplayName="Override C/C++ Properties"  | 
|       Description="Define how C/C++ properties are redefined for moc">  | 
|       <EnumValue Name="extend" DisplayName=  | 
| "Extend (append override definitions to C/C++ list properties; replace other properties)"/>  | 
|       <EnumValue Name="replace" DisplayName=  | 
| "Replace (use override definitions instead of C/C++ properties)"/>  | 
|       <EnumValue Name="false" DisplayName=  | 
| "Disabled (use C/C++ properties; ignore override definitions)"/>  | 
|     </EnumProperty>  | 
|     <!-- BEGIN Generated Text <#=XML_COMMENT_END#>  | 
| <#=  | 
| XmlPrint(xmlRule.Elements()  | 
|     .Where(x => x.Name.ToString().EndsWith("Property"))  | 
|     .Where(x => (string)x.Attribute("Visible") != "false")  | 
|     .Where(x => (string)x.Attribute("Category") != "Command Line")  | 
|     .Where(x => !x.Descendants("DataSource").Any())  | 
|     .GroupBy(x => (string)x.Attribute("Category"))  | 
|     .SelectMany(y => y.Select(x =>  | 
|     {  | 
|         x = new XElement(x);  | 
|         x.SetAttributeValue("Category", "MocCpp");  | 
|         x.SetAttributeValue("Description", "(overrides C/C++ property) "  | 
|             + (string)x.Attribute("Description"));  | 
|         return x;  | 
|     })  | 
|     .Prepend(new XElement("StringProperty",  | 
|         new XAttribute("Name", "QtCppHeader_" + y.Key.Replace(' ', '_')),  | 
|         new XAttribute("Category", "MocCpp"),  | 
|         new XAttribute("ReadOnly", "true"),  | 
|         new XAttribute("DisplayName", string.Format("{0} {1} {2}",  | 
|             new string('#', 10), categoryNames[y.Key], new string('#', 30)))))))  | 
| #>  | 
|       <#=XML_COMMENT_BEGIN#> END Generated Text -->  | 
|     <StringProperty  | 
|       Name="AdditionalCppOptions"  | 
|       DisplayName="Additional Options"  | 
|       Description="Additional Options."  | 
|       Category="MocCpp"/>  | 
|   </Rule>  | 
|   <ItemType  | 
|     Name="QtMoc"  | 
|     DisplayName="Qt Meta-Object Compiler (moc)" />  | 
|   <ContentType  | 
|     Name="QtMoc"  | 
|     DisplayName="Qt Meta-Object Compiler (moc)"  | 
|     ItemType="QtMoc" />  | 
| </ProjectSchemaDefinitions>  |