<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 Daher Alfawares
Licensed under GPLv2
Refer to the license.txt file included.
-->
<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:transformCallback="Microsoft.Cpp.Dev10.ConvertPropertyCallback" xmlns:impl="clr-namespace:Microsoft.VisualStudio.Project.Contracts.Implementation;assembly=Microsoft.VisualStudio.Project.Contracts.Implementation">
  <Rule
    Name="UIC"
    PageTemplate="tool"
    DisplayName="Qt UI Compiler"
    Order="200">
    <Rule.DataSource>
      <DataSource
        Persistence="ProjectFile"
        ItemType="UIC" />
    </Rule.DataSource>
    <Rule.Categories>
      <Category
        Name="General">
        <Category.DisplayName>
          <sys:String>General</sys:String>
        </Category.DisplayName>
      </Category>
      <Category
        Name="Command Line"
        Subtype="CommandLine">
        <Category.DisplayName>
          <sys:String>Command Line</sys:String>
        </Category.DisplayName>
      </Category>
    </Rule.Categories>
    <StringListProperty
      Name="Inputs"
      Category="Command Line"
      IsRequired="true"
      Switch=" ">
      <StringListProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType="UIC"
          SourceType="Item" />
      </StringListProperty.DataSource>
    </StringListProperty>
    <StringProperty
      Name="QtUicExt"
      Subcategory="Output"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-qt-msvc/"
      DisplayName="UI Header file extension"
      Description="The header file extension generated by the UIC Compiler. (Example: .h)"
      Switch="[value]" />
    <StringProperty
      Name="QtUicPrefix"
      Subcategory="Output"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-qt-msvc/"
      DisplayName="UI Header file prefix"
      Description="The prefix string to be used for UIC output. ( usually ui_ )"
      Switch="[value]" />
    <StringProperty
      Name="CommandLineTemplate"
      DisplayName="Command Line"
      Visible="False"
      IncludeInCommandLine="False" />
    <DynamicEnumProperty
      Name="UICBeforeTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^UICBeforeTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <DynamicEnumProperty
      Name="UICAfterTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^UICAfterTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType=""
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <StringListProperty
      Name="Outputs"
      DisplayName="Outputs"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringProperty
      Name="ExecutionDescription"
      DisplayName="Execution Description"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringListProperty
      Name="AdditionalDependencies"
      DisplayName="Additional Dependencies"
      IncludeInCommandLine="False"
      Visible="false" />
    <StringProperty
      Subtype="AdditionalOptions"
      Name="AdditionalOptions"
      Category="Command Line">
      <StringProperty.DisplayName>
        <sys:String>Additional Options</sys:String>
      </StringProperty.DisplayName>
      <StringProperty.Description>
        <sys:String>Additional Options</sys:String>
      </StringProperty.Description>
    </StringProperty>
  </Rule>
  <ItemType
    Name="UIC"
    DisplayName="Qt UI Compiler" />
  <FileExtension
    Name="*.ui"
    ContentType="UIC" />
  <ContentType
    Name="UIC"
    DisplayName="Qt UI Compiler"
    ItemType="UIC" />
  <Rule
    Name="MOC"
    PageTemplate="tool"
    DisplayName="Qt Meta Object Compiler"
    Order="200">
    <Rule.DataSource>
      <DataSource
        Persistence="ProjectFile"
        ItemType="MOC" />
    </Rule.DataSource>
    <Rule.Categories>
      <Category
        Name="General">
        <Category.DisplayName>
          <sys:String>General</sys:String>
        </Category.DisplayName>
      </Category>
      <Category
        Name="Command Line"
        Subtype="CommandLine">
        <Category.DisplayName>
          <sys:String>Command Line</sys:String>
        </Category.DisplayName>
      </Category>
    </Rule.Categories>
    <StringListProperty
      Name="Inputs"
      Category="Command Line"
      IsRequired="true"
      Switch=" ">
      <StringListProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType="MOC"
          SourceType="Item" />
      </StringListProperty.DataSource>
    </StringListProperty>
    <BoolProperty
      Name="QtShared"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Use QT as a Shared Library?"
      Description="Use QT as a Shared Library?"
      Switch="-DQT_SHARED" />
    <BoolProperty
      Name="QtThread"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Multi-threaded Support?"
      Switch="-DQT_THREAD_SUPPORT" />
    <BoolProperty
      Name="QtUnicode"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Unicode Support?"
      Switch="-DUNICODE" />
    <BoolProperty
      Name="QtLargeFile"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Large File Support?"
      Switch="-DQT_LARGEFILE_SUPPORT" />
    <BoolProperty
      Name="QtKeywords"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Disable QT Keywords."
      Description="If QT_NO_KEYWORDS is defined, &quot;signals&quot;, &quot;slots&quot; and &quot;emit&quot; are not defined, thus increasing the interoperability with other toolkits by avoiding some common name clashes. However, the SIGNAL() and SLOT() macros are still defined, which may cause name clashes still."
      Switch="-DQT_NO_KEYWORDS" />
    <BoolProperty
      Name="QtNoDebug"
      Subcategory="Moc Definitions"
      HelpContext="0"
      DisplayName="Disable QT Debuging"
      Switch="-DQT_NO_DEBUG" />
    <BoolProperty
      Name="QtGuiLib"
      Subcategory="QT Libraries"
      HelpContext="0"
      DisplayName="Use QT Gui Library"
      Switch="-DQT_GUI_LIB" />
    <BoolProperty
      Name="QtCoreLib"
      Subcategory="QT Libraries"
      HelpContext="0"
      DisplayName="Use QT Core Library"
      Switch="-DQT_CORE_LIB" />
    <BoolProperty
      Name="QtOpenGLLib"
      Subcategory="QT Libraries"
      HelpContext="0"
      DisplayName="Use QT OpenGL Library"
      Switch="-DQT_OPENGL_LIB" />
    <BoolProperty
      Name="QtMocNoWarnings"
      Subcategory="General"
      HelpContext="0"
      DisplayName="Do not display warnings"
      Description="do not display warnings"
      Switch="/nw" />
    <StringProperty
      Name="QtMocPfx"
      Subcategory="Output"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-qt-msvc/"
      DisplayName="Output file postfix"
      Description="A postfix is added to the source and object files generated to prevent conflict with your source files. [Example: _moc leads to a.hxx -&gt; a_moc.cpp]"
      Switch="[value]" />
    <StringProperty
      Name="QtCommandLine"
      Subcategory="General"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-qt-msvc/"
      DisplayName="C++ Command Line Options"
      Description="Copy the command line options from your C/C++ section to match the qt compilation with your setup. Make sure you remove the /Fo option, for more details refer to the documentation."
      Switch="[value]" />
    <StringProperty
      Name="CommandLineTemplate"
      DisplayName="Command Line"
      Visible="False"
      IncludeInCommandLine="False" />
    <DynamicEnumProperty
      Name="MOCBeforeTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^MOCBeforeTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <DynamicEnumProperty
      Name="MOCAfterTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^MOCAfterTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType=""
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <StringListProperty
      Name="Outputs"
      DisplayName="Outputs"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringProperty
      Name="ExecutionDescription"
      DisplayName="Execution Description"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringListProperty
      Name="AdditionalDependencies"
      DisplayName="Additional Dependencies"
      IncludeInCommandLine="False"
      Visible="false" />
    <StringProperty
      Subtype="AdditionalOptions"
      Name="AdditionalOptions"
      Category="Command Line">
      <StringProperty.DisplayName>
        <sys:String>Additional Options</sys:String>
      </StringProperty.DisplayName>
      <StringProperty.Description>
        <sys:String>Additional Options</sys:String>
      </StringProperty.Description>
    </StringProperty>
  </Rule>
  <ItemType
    Name="MOC"
    DisplayName="Qt Meta Object Compiler" />
  <FileExtension
    Name="*.hxx"
    ContentType="MOC" />
  <ContentType
    Name="MOC"
    DisplayName="Qt Meta Object Compiler"
    ItemType="MOC" />
  <Rule
    Name="QRC"
    PageTemplate="tool"
    DisplayName="Qt Resource Compiler"
    Order="200">
    <Rule.DataSource>
      <DataSource
        Persistence="ProjectFile"
        ItemType="QRC" />
    </Rule.DataSource>
    <Rule.Categories>
      <Category
        Name="General">
        <Category.DisplayName>
          <sys:String>General</sys:String>
        </Category.DisplayName>
      </Category>
      <Category
        Name="Command Line"
        Subtype="CommandLine">
        <Category.DisplayName>
          <sys:String>Command Line</sys:String>
        </Category.DisplayName>
      </Category>
    </Rule.Categories>
    <StringListProperty
      Name="Inputs"
      Category="Command Line"
      IsRequired="true"
      Switch=" ">
      <StringListProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType="QRC"
          SourceType="Item" />
      </StringListProperty.DataSource>
    </StringListProperty>
    <StringProperty
      Name="QtCommandLine"
      Subcategory="General"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-core/wiki/QtRules"
      DisplayName="C++ Command Line Options"
      Description="Copy the command line options from your C/C++ section to match the qt compilation with your setup. Make sure you remove the /Fo option, for more details refer to the documentation."
      Switch="[value]" />
    <StringProperty
      Name="QtQrcPfx"
      Subcategory="Output"
      HelpContext="0"
      HelpUrl="http://code.google.com/p/xr-qt-msvc/"
      DisplayName="Output file postfix"
      Description="A postfix is added to the source and object files generated to prevent conflict with your source files. [Example: _qrc leads to a.qrc -&gt; a_qrc.cpp]"
      Switch="[value]" />
    <StringProperty
      Name="CommandLineTemplate"
      DisplayName="Command Line"
      Visible="False"
      IncludeInCommandLine="False" />
    <DynamicEnumProperty
      Name="QRCBeforeTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^QRCBeforeTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <DynamicEnumProperty
      Name="QRCAfterTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="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="^QRCAfterTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType=""
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
    <StringListProperty
      Name="Outputs"
      DisplayName="Outputs"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringProperty
      Name="ExecutionDescription"
      DisplayName="Execution Description"
      Visible="False"
      IncludeInCommandLine="False" />
    <StringListProperty
      Name="AdditionalDependencies"
      DisplayName="Additional Dependencies"
      IncludeInCommandLine="False"
      Visible="false" />
    <StringProperty
      Subtype="AdditionalOptions"
      Name="AdditionalOptions"
      Category="Command Line">
      <StringProperty.DisplayName>
        <sys:String>Additional Options</sys:String>
      </StringProperty.DisplayName>
      <StringProperty.Description>
        <sys:String>Additional Options</sys:String>
      </StringProperty.Description>
    </StringProperty>
  </Rule>
  <ItemType
    Name="QRC"
    DisplayName="Qt Resource Compiler" />
  <FileExtension
    Name="*.qrc"
    ContentType="QRC" />
  <ContentType
    Name="QRC"
    DisplayName="Qt Resource Compiler"
    ItemType="QRC" />
</ProjectSchemaDefinitions>
