diff options
author | Karsten Heimrich <karsten.heimrich@qt.io> | 2022-01-13 08:55:04 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@qt.io> | 2022-01-14 06:28:48 +0000 |
commit | 508829f9f05f23f9a35145c7f5b46a58b88a6bd7 (patch) | |
tree | eceb1cd837ec2717e1e3c27e203bd5dc8638fc7a | |
parent | 06bf31833f7fd2c3500768a8308d569e471af48b (diff) |
Re-add support for namespaces given in class name
Change-Id: I092c70fc968d613e59fdd7030b3f90e77ab661ef
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
-rw-r--r-- | QtVsTools.Wizards/Common/GuiPage.xaml | 2 | ||||
-rw-r--r-- | QtVsTools.Wizards/Common/GuiPage.xaml.cs | 5 | ||||
-rw-r--r-- | QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs | 33 | ||||
-rw-r--r-- | Templates/gui/main.cpp | 2 | ||||
-rw-r--r-- | Templates/gui/widget.cpp | 3 | ||||
-rw-r--r-- | Templates/gui/widget.h | 3 |
6 files changed, 35 insertions, 13 deletions
diff --git a/QtVsTools.Wizards/Common/GuiPage.xaml b/QtVsTools.Wizards/Common/GuiPage.xaml index 16c4ccfc..8770237e 100644 --- a/QtVsTools.Wizards/Common/GuiPage.xaml +++ b/QtVsTools.Wizards/Common/GuiPage.xaml @@ -102,7 +102,7 @@ NotifyOnValidationError="True" UpdateSourceTrigger="PropertyChanged"> <Binding.ValidationRules> - <util:ClassNameValidationRule /> + <util:ClassNameValidationRule SupportNamespaces="True"/> </Binding.ValidationRules> </Binding> </TextBox.Text> diff --git a/QtVsTools.Wizards/Common/GuiPage.xaml.cs b/QtVsTools.Wizards/Common/GuiPage.xaml.cs index 1bb3188b..289836e7 100644 --- a/QtVsTools.Wizards/Common/GuiPage.xaml.cs +++ b/QtVsTools.Wizards/Common/GuiPage.xaml.cs @@ -60,6 +60,11 @@ namespace QtVsTools.Wizards.Common if (LowerCaseFileNames.IsChecked.GetValueOrDefault()) filename = filename.ToLower(); + // support namespaces in class name + var index = filename.LastIndexOf(@":", System.StringComparison.Ordinal); + if (index >= 0) + filename = filename.Substring(index + 1); + ClassHeaderFile.Text = filename + @".h"; ClassSourceFile.Text = filename + @".cpp"; UiFile.Text = filename + @".ui"; diff --git a/QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs b/QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs index 3e9655c8..84837eca 100644 --- a/QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs +++ b/QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs @@ -72,11 +72,14 @@ namespace QtVsTools.Wizards.ProjectWizard enum Meta { + [String("namespace")] Namespace, + [String("namespacebegin")] NamespaceBegin, [String("operator")] Operator, [String("asterisk")] Asterisk, [String("semicolon")] Semicolon, [String("new")] New, - [String("delete")] Delete + [String("delete")] Delete, + [String("namespaceend")] NamespaceEnd } WizardData _WizardData; @@ -205,7 +208,11 @@ namespace QtVsTools.Wizards.ProjectWizard protected override void BeforeTemplateExpansion() { - Parameter[NewClass.ClassName] = WizardData.ClassName; + var array = WizardData.ClassName.Split(new[] { "::" }, + StringSplitOptions.RemoveEmptyEntries); + var className = array.LastOrDefault(); + + Parameter[NewClass.ClassName] = className; Parameter[NewClass.BaseClass] = WizardData.BaseClass; Parameter[NewClass.HeaderFileName] = WizardData.ClassHeaderFile; Parameter[NewClass.SourceFileName] = WizardData.ClassSourceFile; @@ -223,7 +230,7 @@ namespace QtVsTools.Wizards.ProjectWizard Parameter[NewGuiProject.QrcFileName] = WizardData.QrcFile; QtProject.CreateQrcFile( Parameter[NewProject.DestinationDirectory], - WizardData.ClassName, WizardData.QrcFile); + className, WizardData.QrcFile); if (WizardData.BaseClass == "QMainWindow") { Parameter[NewGuiProject.CentralWidget] = FormatParam(@" @@ -291,28 +298,36 @@ namespace QtVsTools.Wizards.ProjectWizard string.Format( "\r\nQT_BEGIN_NAMESPACE\r\n" + "namespace Ui {{ class {0}Class; }};\r\n" - + "QT_END_NAMESPACE\r\n", WizardData.ClassName + + "QT_END_NAMESPACE\r\n", className ); Parameter[Meta.Asterisk] = "*"; Parameter[Meta.Operator] = "->"; Parameter[Meta.New] = string.Format("\r\n , {0}(new Ui::{1}Class())", - Parameter[NewGuiProject.Member], - WizardData.ClassName); + Parameter[NewGuiProject.Member], className); Parameter[Meta.Delete] = string.Format("\r\n delete {0};\r\n", Parameter[NewGuiProject.Member]); goto case UiClassInclusion.Member; case UiClassInclusion.Member: - Parameter[NewGuiProject.UiClassName] = string.Format("Ui::{0}Class", - WizardData.ClassName); + Parameter[NewGuiProject.UiClassName] = string.Format("Ui::{0}Class", className); break; case UiClassInclusion.MultipleInheritance: Parameter[NewGuiProject.MultipleInheritance] = - string.Format(", public Ui::{0}Class", WizardData.ClassName); + string.Format(", public Ui::{0}Class", className); Parameter[NewGuiProject.Member] = ""; Parameter[Meta.Operator] = ""; Parameter[Meta.Semicolon] = ""; break; } + + string ns = "", nsBegin = "", nsEnd = ""; + for (var i = 0; i < array.Length - 1; ++i) { + ns += array[i] + "::"; + nsBegin += "namespace " + array[i] + " {\r\n"; + nsEnd = "} // namespace " + array[i] + "\r\n" + nsEnd; + } + Parameter[Meta.Namespace] = ns; + Parameter[Meta.NamespaceBegin] = nsBegin; + Parameter[Meta.NamespaceEnd] = nsEnd; } protected override void OnProjectGenerated(Project project) diff --git a/Templates/gui/main.cpp b/Templates/gui/main.cpp index df591883..a386d101 100644 --- a/Templates/gui/main.cpp +++ b/Templates/gui/main.cpp @@ -4,7 +4,7 @@ $include$ int main(int argc, char *argv[]) { QApplication a(argc, argv); - $classname$ w; + $namespace$$classname$ w; w.show(); return a.exec(); } diff --git a/Templates/gui/widget.cpp b/Templates/gui/widget.cpp index e472db89..39268051 100644 --- a/Templates/gui/widget.cpp +++ b/Templates/gui/widget.cpp @@ -1,6 +1,6 @@ $include$ -$classname$::$classname$(QWidget *parent) +$namespacebegin$$classname$::$classname$(QWidget *parent) : $baseclass$(parent)$new$ { $member$$operator$setupUi(this); @@ -8,3 +8,4 @@ $classname$::$classname$(QWidget *parent) $classname$::~$classname$() {$delete$} +$namespaceend$
\ No newline at end of file diff --git a/Templates/gui/widget.h b/Templates/gui/widget.h index b6bfb300..038ae40b 100644 --- a/Templates/gui/widget.h +++ b/Templates/gui/widget.h @@ -3,7 +3,7 @@ #include <QtWidgets/$baseclass$> #include "$ui_hdr$" $forward_declare_class$ -class $classname$ : public $baseclass$$multiple_inheritance$ +$namespacebegin$class $classname$ : public $baseclass$$multiple_inheritance$ { Q_OBJECT @@ -14,3 +14,4 @@ public: private: $ui_classname$ $asterisk$$member$$semicolon$ }; +$namespaceend$
\ No newline at end of file |