aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2020-11-27 15:19:35 +0100
committerMiguel Costa <miguel.costa@qt.io>2020-12-17 13:19:52 +0000
commite6d1ff94f05b09be7ec040590d24141a93cd7049 (patch)
treec3b91fcc1958744f47313c2110c50df2952e6da8
parentcacba395bc4276267449146157a17aaee21f8801 (diff)
Rework handling of project filters
Filters in VC projects are intended as a means to organize the project files according to their type (i.e. extension). It is the users' prerogative to create or remove filters in their projects; extensions should not try to enforce the existence of specific filters with non-standard semantics. As a consequence of the revised approach to project filters, this change fixes errors occurring while adding Qt resource files to a project. Also in this change: fixed widget project template adding .ui file to the Resource Files filter instead of the Form Files filter. Task-number: QTVSADDINBUG-810 Task-number: QTVSADDINBUG-835 Change-Id: Ia305ba4ac7686abdff7162a97de19c22cc279dce Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/qttemplates/console/console.vcxproj.filters9
-rw-r--r--src/qttemplates/designer/designer.vcxproj.filters9
-rw-r--r--src/qttemplates/empty/empty.vcxproj.filters11
-rw-r--r--src/qttemplates/gui/gui.vcxproj.filters11
-rw-r--r--src/qttemplates/lib/lib.vcxproj.filters9
-rw-r--r--src/qttemplates/quick/quick.vcxproj.filters13
-rw-r--r--src/qttemplates/server/server.vcxproj.filters9
-rw-r--r--src/qtvstools/DteEventsHandler.cs79
8 files changed, 38 insertions, 112 deletions
diff --git a/src/qttemplates/console/console.vcxproj.filters b/src/qttemplates/console/console.vcxproj.filters
index 421006ab..797f8df4 100644
--- a/src/qttemplates/console/console.vcxproj.filters
+++ b/src/qttemplates/console/console.vcxproj.filters
@@ -11,12 +11,11 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
diff --git a/src/qttemplates/designer/designer.vcxproj.filters b/src/qttemplates/designer/designer.vcxproj.filters
index 4ee6edec..4ce26536 100644
--- a/src/qttemplates/designer/designer.vcxproj.filters
+++ b/src/qttemplates/designer/designer.vcxproj.filters
@@ -11,12 +11,11 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
diff --git a/src/qttemplates/empty/empty.vcxproj.filters b/src/qttemplates/empty/empty.vcxproj.filters
index 7a7709fd..43551544 100644
--- a/src/qttemplates/empty/empty.vcxproj.filters
+++ b/src/qttemplates/empty/empty.vcxproj.filters
@@ -3,7 +3,7 @@
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ <Extensions>qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
@@ -11,16 +11,15 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Form Files">
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
<Extensions>ui</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
</Project>
diff --git a/src/qttemplates/gui/gui.vcxproj.filters b/src/qttemplates/gui/gui.vcxproj.filters
index 89d722d0..0e783c5e 100644
--- a/src/qttemplates/gui/gui.vcxproj.filters
+++ b/src/qttemplates/gui/gui.vcxproj.filters
@@ -11,16 +11,15 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Form Files">
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
<Extensions>ui</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
@@ -28,7 +27,7 @@
<Filter>Resource Files</Filter>
</QtRcc>
<QtUic Include="$uifilename$">
- <Filter>Resource Files</Filter>
+ <Filter>Form Files</Filter>
</QtUic>
<QtMoc Include="$headerfilename$">
<Filter>Header Files</Filter>
diff --git a/src/qttemplates/lib/lib.vcxproj.filters b/src/qttemplates/lib/lib.vcxproj.filters
index e8012cfe..51555ca8 100644
--- a/src/qttemplates/lib/lib.vcxproj.filters
+++ b/src/qttemplates/lib/lib.vcxproj.filters
@@ -11,12 +11,11 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
diff --git a/src/qttemplates/quick/quick.vcxproj.filters b/src/qttemplates/quick/quick.vcxproj.filters
index 350a3699..eeec1250 100644
--- a/src/qttemplates/quick/quick.vcxproj.filters
+++ b/src/qttemplates/quick/quick.vcxproj.filters
@@ -3,7 +3,7 @@
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ <Extensions>qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
@@ -11,12 +11,11 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;qml;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
@@ -27,7 +26,7 @@
<Filter>Resource Files</Filter>
</QtRcc>
<None Include="main.qml">
- <Filter>Resource Files</Filter>
+ <Filter>Source Files</Filter>
</None>
$FilterItems$
</ItemGroup>
diff --git a/src/qttemplates/server/server.vcxproj.filters b/src/qttemplates/server/server.vcxproj.filters
index 7a7709fd..e9f5f001 100644
--- a/src/qttemplates/server/server.vcxproj.filters
+++ b/src/qttemplates/server/server.vcxproj.filters
@@ -11,16 +11,15 @@
</Filter>
<Filter Include="Resource Files">
<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>
+ <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Form Files">
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
<Extensions>ui</Extensions>
</Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
- <Extensions>qrc;*</Extensions>
- <ParseFiles>false</ParseFiles>
+ <Filter Include="Translation Files">
+ <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
+ <Extensions>ts</Extensions>
</Filter>
</ItemGroup>
</Project>
diff --git a/src/qtvstools/DteEventsHandler.cs b/src/qtvstools/DteEventsHandler.cs
index 7f9ab891..256179fd 100644
--- a/src/qtvstools/DteEventsHandler.cs
+++ b/src/qtvstools/DteEventsHandler.cs
@@ -403,31 +403,11 @@ namespace QtVsTools
var qtPro = QtProject.Create(project);
if (!HelperFunctions.IsQtProject(project))
return;
- VCFilter filter = null;
var vcFile = GetVCFileFromProject(projectItem.Name, qtPro.VCProject);
if (vcFile == null)
return;
try {
- // Try to find the filter, the file is located in
- // If the file is not inside any filter, move it to
- // the according one, used by the Qt VS Tools
- filter = (VCFilter) vcFile.Parent;
- } catch { }
-
- try {
- var ui = Filters.FormFiles();
- var qrc = Filters.ResourceFiles();
- var ts = Filters.TranslationFiles();
- var h = Filters.HeaderFiles();
- var src = Filters.SourceFiles();
-
- var uiFilter = qtPro.FindFilterFromGuid(ui.UniqueIdentifier);
- var tsFilter = qtPro.FindFilterFromGuid(ts.UniqueIdentifier);
- var qrcFilter = qtPro.FindFilterFromGuid(qrc.UniqueIdentifier);
- var hFilter = qtPro.FindFilterFromGuid(h.UniqueIdentifier);
- var srcFilter = qtPro.FindFilterFromGuid(src.UniqueIdentifier);
-
if (HelperFunctions.IsSourceFile(vcFile.Name)) {
if (vcFile.Name.StartsWith("moc_", StringComparison.OrdinalIgnoreCase))
return;
@@ -446,78 +426,31 @@ namespace QtVsTools
return;
}
}
- if (filter == null && !HelperFunctions.IsInFilter(vcFile, src)) {
- if (null == srcFilter && qtPro.VCProject.CanAddFilter(src.Name)) {
- srcFilter = (VCFilter) qtPro.VCProject.AddFilter(src.Name);
- srcFilter.Filter = src.Filter;
- srcFilter.ParseFiles = src.ParseFiles;
- srcFilter.UniqueIdentifier = src.UniqueIdentifier;
- }
- qtPro.RemoveItem(projectItem);
- qtPro.AddFileToProject(vcFile.FullPath, src);
- }
if (HelperFunctions.HasQObjectDeclaration(vcFile)) {
- HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
+ if (!qtPro.IsQtMsBuildEnabled())
+ HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
qtPro.AddMocStep(vcFile);
}
} else if (HelperFunctions.IsHeaderFile(vcFile.Name)) {
if (vcFile.Name.StartsWith("ui_", StringComparison.OrdinalIgnoreCase))
return;
- if (filter == null && !HelperFunctions.IsInFilter(vcFile, h)) {
- if (null == hFilter && qtPro.VCProject.CanAddFilter(h.Name)) {
- hFilter = (VCFilter) qtPro.VCProject.AddFilter(h.Name);
- hFilter.Filter = h.Filter;
- hFilter.ParseFiles = h.ParseFiles;
- hFilter.UniqueIdentifier = h.UniqueIdentifier;
- }
- qtPro.RemoveItem(projectItem);
- qtPro.AddFileToProject(vcFile.FullPath, h);
- }
if (HelperFunctions.HasQObjectDeclaration(vcFile)) {
if (!qtPro.IsQtMsBuildEnabled())
HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
qtPro.AddMocStep(vcFile);
}
} else if (HelperFunctions.IsUicFile(vcFile.Name)) {
- if (filter == null && !HelperFunctions.IsInFilter(vcFile, ui)) {
- if (null == uiFilter && qtPro.VCProject.CanAddFilter(ui.Name)) {
- uiFilter = (VCFilter) qtPro.VCProject.AddFilter(ui.Name);
- uiFilter.Filter = ui.Filter;
- uiFilter.ParseFiles = ui.ParseFiles;
- uiFilter.UniqueIdentifier = ui.UniqueIdentifier;
- }
- qtPro.RemoveItem(projectItem);
- qtPro.AddFileToProject(vcFile.FullPath, ui);
- }
- HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
+ if (!qtPro.IsQtMsBuildEnabled())
+ HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
qtPro.AddUic4BuildStep(vcFile);
#if VS2017 || VS2019
QtProjectTracker.RefreshIntelliSense(project, runQtTools: true);
#endif
} else if (HelperFunctions.IsQrcFile(vcFile.Name)) {
- if (filter == null && !HelperFunctions.IsInFilter(vcFile, qrc)) {
- if (null == qrcFilter && qtPro.VCProject.CanAddFilter(qrc.Name)) {
- qrcFilter = (VCFilter) qtPro.VCProject.AddFilter(qrc.Name);
- qrcFilter.Filter = qrc.Filter;
- qrcFilter.ParseFiles = qrc.ParseFiles;
- qrcFilter.UniqueIdentifier = qrc.UniqueIdentifier;
- }
- qtPro.RemoveItem(projectItem);
- qtPro.AddFileToProject(vcFile.FullPath, qrc);
- }
- HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
+ if (!qtPro.IsQtMsBuildEnabled())
+ HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
qtPro.UpdateRccStep(vcFile, null);
} else if (HelperFunctions.IsTranslationFile(vcFile.Name)) {
- if (filter == null && !HelperFunctions.IsInFilter(vcFile, ts)) {
- if (null == tsFilter && qtPro.VCProject.CanAddFilter(ts.Name)) {
- tsFilter = (VCFilter) qtPro.VCProject.AddFilter(ts.Name);
- tsFilter.Filter = ts.Filter;
- tsFilter.ParseFiles = ts.ParseFiles;
- tsFilter.UniqueIdentifier = ts.UniqueIdentifier;
- }
- qtPro.RemoveItem(projectItem);
- qtPro.AddFileToProject(vcFile.FullPath, ts);
- }
}
} catch { }
}