| <?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="QtRule60_Repc"  | 
|     PageTemplate="tool"  | 
|     DisplayName="Qt Remote Objects Compiler"  | 
|     Order="9">  | 
|     <Rule.DataSource>  | 
|       <DataSource  | 
|         Persistence="ProjectFile"  | 
|         ItemType="QtRepc" />  | 
|     </Rule.DataSource>  | 
|     <Rule.Categories>  | 
|       <Category Name="General" DisplayName="repc"/>  | 
|       <Category Name="RepcCpp" DisplayName="Override C/C++"/>  | 
|     </Rule.Categories>  | 
|     <StringListProperty  | 
|       Name="Inputs"  | 
|       Category="General"  | 
|       IsRequired="true"  | 
|       Visible="False">  | 
|       <StringListProperty.DataSource>  | 
|         <DataSource  | 
|            Persistence="ProjectFile"  | 
|            ItemType="QtRepc"  | 
|            SourceType="Item" />  | 
|       </StringListProperty.DataSource>  | 
|     </StringListProperty>  | 
|     <StringProperty  | 
|       Name="ExecutionDescription"  | 
|       DisplayName="Execution Description"  | 
|       IncludeInCommandLine="False" />  | 
|     <StringProperty  | 
|       Name="QTDIR"  | 
|       DisplayName="Qt Directory"  | 
|       Description="Path to installation of Qt."/>  | 
|     <EnumProperty  | 
|       Name="InputFileType"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Input File Type">  | 
|       <EnumValue  | 
|         Name="rep"  | 
|         DisplayName="Replicant template"/>  | 
|       <EnumValue  | 
|         Name="src"  | 
|         DisplayName="C++ QObject derived classes"/>  | 
|     </EnumProperty>  | 
|     <StringProperty  | 
|       Name="InputFile"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Input File"  | 
|       Description="Input header/rep file to read from. ([header-file/rep-file])" />  | 
|     <EnumProperty  | 
|       Name="OutputFileType"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Output File Type">  | 
|       <EnumValue  | 
|         Name="source"  | 
|         DisplayName="source (Source header)"/>  | 
|       <EnumValue  | 
|         Name="replica"  | 
|         DisplayName="replica (Replica header)"/>  | 
|       <EnumValue  | 
|         Name="merged"  | 
|         DisplayName="merged (Combined replica/source)"/>  | 
|       <EnumValue  | 
|         Name="rep"  | 
|         DisplayName="rep (Replicant template)"/>  | 
|     </EnumProperty>  | 
|     <StringProperty  | 
|       Name="OutputFile"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Output File"  | 
|       Description="Output header/rep file to write to. ([rep-file/header-file])" />  | 
|     <BoolProperty  | 
|       Name="AlwaysClass"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Always Output Class Type"  | 
|       Description="Always output 'class' type for .rep files and never 'POD'. (-c)"/>  | 
|     <BoolProperty  | 
|       Name="PrintDebug"  | 
|       HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"  | 
|       DisplayName="Print Debug Information"  | 
|       Description="Print out parsing debug information (for troubleshooting). (-d)"/>  | 
|     <StringProperty  | 
|       Name="CommandLineTemplate"  | 
|       DisplayName="Command Line"  | 
|       Visible="False"  | 
|       IncludeInCommandLine="False" />  | 
|     <DynamicEnumProperty  | 
|       Name="QtRepcBeforeTargets"  | 
|       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="^QtRepcBeforeTargets|^Compute" />  | 
|       </DynamicEnumProperty.ProviderSettings>  | 
|       <DynamicEnumProperty.DataSource>  | 
|         <DataSource  | 
|           Persistence="ProjectFile"  | 
|           ItemType=""  | 
|           HasConfigurationCondition="true" />  | 
|       </DynamicEnumProperty.DataSource>  | 
|     </DynamicEnumProperty>  | 
|     <DynamicEnumProperty  | 
|       Name="QtRepcAfterTargets"  | 
|       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="^QtRepcAfterTargets|^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 moc Source"  | 
|       Description="Add output file to list of moc sources during build.">  | 
|       <EnumValue  | 
|         Name="moc_cpp"  | 
|         DisplayName="Output moc header and moc-generated C++"  | 
|         Description="Use output as dynamic moc source, and output of moc as dynamic C++ source."/>  | 
|       <EnumValue  | 
|         Name="moc"  | 
|         DisplayName="Output moc header"  | 
|         Description="Use output as dynamic moc source."/>  | 
|       <EnumValue  | 
|         Name="false"  | 
|         DisplayName="Disable"  | 
|         Description="Disable dynamic source."/>  | 
|     </EnumProperty>  | 
|     <BoolProperty  | 
|       Name="ParallelProcess"  | 
|       DisplayName="Parallel Process"  | 
|       Description="Run tool in parallel process."/>  | 
|     <EnumProperty  | 
|       Name="OverrideClCompile"  | 
|       Category="RepcCpp"  | 
|       DisplayName="Override C/C++ Properties"  | 
|       Description="Define how C/C++ properties are redefined for Repc">  | 
|       <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>  | 
|     <StringListProperty Name="IncludePath" Visible="false"/>  | 
|     <StringListProperty Name="Define" Visible="false"/>  | 
|     <StringListProperty Name="Undefine" Visible="false"/>  | 
|     <!-- 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", "RepcCpp");  | 
|         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", "RepcCpp"),  | 
|         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 -->  | 
|   </Rule>  | 
|   <ItemType  | 
|     Name="QtRepc"  | 
|     DisplayName="Qt Remote Objects Compiler (repc)" />  | 
|   <FileExtension  | 
|     Name="*.rep"  | 
|     ContentType="QtRepc" />  | 
|   <ContentType  | 
|     Name="QtRepc"  | 
|     DisplayName="Qt Remote Objects Compiler (repc)"  | 
|     ItemType="QtRepc" />  | 
| </ProjectSchemaDefinitions>  |