From e6d1ff94f05b09be7ec040590d24141a93cd7049 Mon Sep 17 00:00:00 2001 From: Miguel Costa Date: Fri, 27 Nov 2020 15:19:35 +0100 Subject: 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 --- src/qttemplates/console/console.vcxproj.filters | 9 ++- src/qttemplates/designer/designer.vcxproj.filters | 9 ++- src/qttemplates/empty/empty.vcxproj.filters | 11 ++-- src/qttemplates/gui/gui.vcxproj.filters | 11 ++-- src/qttemplates/lib/lib.vcxproj.filters | 9 ++- src/qttemplates/quick/quick.vcxproj.filters | 13 ++-- src/qttemplates/server/server.vcxproj.filters | 9 ++- src/qtvstools/DteEventsHandler.cs | 79 ++--------------------- 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 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts 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 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts 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 @@ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} @@ -11,16 +11,15 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms {99349809-55BA-4b9d-BF79-8FDBB0286EB3} ui - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts 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 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms {99349809-55BA-4b9d-BF79-8FDBB0286EB3} ui - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts @@ -28,7 +27,7 @@ Resource Files - Resource Files + Form Files Header Files 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 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts 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 @@ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} @@ -11,12 +11,11 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;qml;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts @@ -27,7 +26,7 @@ Resource Files - Resource Files + Source Files $FilterItems$ 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 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms {99349809-55BA-4b9d-BF79-8FDBB0286EB3} ui - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts 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 { } } -- cgit v1.2.3