aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--QtVsTools.Wizards/Common/GuiPage.xaml2
-rw-r--r--QtVsTools.Wizards/Common/GuiPage.xaml.cs5
-rw-r--r--QtVsTools.Wizards/ProjectWizard/Gui/GuiWizard.cs33
-rw-r--r--Templates/gui/main.cpp2
-rw-r--r--Templates/gui/widget.cpp3
-rw-r--r--Templates/gui/widget.h3
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