コード例 #1
0
ファイル: CoreClassWizard.cs プロジェクト: wencan002/vstools
        private string AddProjectItemCpp(string location, string pch)
        {
            var cppFile = Path.GetTempFileName();

            using (var tmp = new StreamWriter(cppFile)) {
                tmp.Write("#include \"%INCLUDE%\"\r\n\r\n"
                          + "%NAMESPACE_BEGIN%%CLASS%::%CLASS%(%CTORSIG%)%BASECLASS%\r\n"
                          + "{\r\n}\r\n\r\n"
                          + "%CLASS%::~%CLASS%()\r\n"
                          + "{\r\n}\r\n"
                          + "%NAMESPACE_END%");
            }
            cppFile = QtProject.CopyFileToFolder(cppFile, location, data.ClassSourceFile);

            if (!string.IsNullOrEmpty(pch))
            {
                QtProject.ReplaceTokenInFile(cppFile, "%INCLUDE%", pch + "\"\r\n#include \"%INCLUDE%");
            }

            QtProject.ReplaceTokenInFile(cppFile, "%INCLUDE%", data.ClassHeaderFile);
            QtProject.ReplaceTokenInFile(cppFile, "%CLASS%", data.ClassName);

            QtProject.ReplaceTokenInFile(cppFile, "%BASECLASS%", string.IsNullOrEmpty(data
                                                                                      .ConstructorSignature) ? "" : "\r\n    : " + data.BaseClass + "(parent)");
            QtProject.ReplaceTokenInFile(cppFile, "%CTORSIG%", data.ConstructorSignature);

            return(cppFile);
        }
コード例 #2
0
ファイル: GuiClassWizard.cs プロジェクト: wencan002/vstools
        private string AddProjectItemUi(string location)
        {
            var uiFile = Path.GetTempFileName();

            using (var tmp = new StreamWriter(uiFile)) {
                tmp.Write(
                    "<UI version=\"4.0\" >\r\n"
                    + " <class>%CLASS%</class>\r\n"
                    + " <widget class=\"%BASECLASS%\" name=\"%CLASS%\" >\r\n"
                    + "  <property name=\"objectName\" >\r\n"
                    + "   <string notr=\"true\">%CLASS%</string>\r\n"
                    + "  </property>\r\n"
                    + "  <property name=\"geometry\" >\r\n"
                    + "   <rect>\r\n"
                    + "    <x>0</x>\r\n"
                    + "    <y>0</y>\r\n"
                    + "    <width>400</width>\r\n"
                    + "    <height>300</height>\r\n"
                    + "   </rect>\r\n"
                    + "  </property>\r\n"
                    + "  <property name=\"windowTitle\" >\r\n"
                    + "   <string>%CLASS%</string>\r\n"
                    + "  </property>%CENTRAL_WIDGET%\r\n"
                    + " </widget>\r\n"
                    + " <layoutDefault spacing=\"6\" margin=\"11\" />\r\n"
                    + " <pixmapfunction></pixmapfunction>\r\n"
                    + " <resources/>\r\n"
                    + " <connections/>\r\n"
                    + "</UI>\r\n");
            }
            uiFile = QtProject.CopyFileToFolder(uiFile, location, data.UiFile);

            QtProject.ReplaceTokenInFile(uiFile, "%CLASS%", data.ClassName);
            QtProject.ReplaceTokenInFile(uiFile, "%BASECLASS%", data.BaseClass);
            if (data.BaseClass == "QMainWindow")
            {
                QtProject.ReplaceTokenInFile(uiFile, "%CENTRAL_WIDGET%",
                                             "\r\n  <widget class=\"QMenuBar\" name=\"menuBar\" />"
                                             + "\r\n  <widget class=\"QToolBar\" name=\"mainToolBar\" />"
                                             + "\r\n  <widget class=\"QWidget\" name=\"centralWidget\" />"
                                             + "\r\n  <widget class=\"QStatusBar\" name=\"statusBar\" />");
            }
            else if (data.BaseClass == "QDockWidget")
            {
                QtProject.ReplaceTokenInFile(uiFile, "%CENTRAL_WIDGET%",
                                             "\r\n  <widget class=\"QWidget\" name=\"widget\" />");
            }
            else
            {
                QtProject.ReplaceTokenInFile(uiFile, "%CENTRAL_WIDGET%", string.Empty);
            }

            return(uiFile);
        }
コード例 #3
0
ファイル: GuiClassWizard.cs プロジェクト: wencan002/vstools
        private static void ReplaceNamespaceToken(string file, string nsBegin, string nsEnd)
        {
            if (!string.IsNullOrEmpty(nsBegin))
            {
                nsBegin += System.Environment.NewLine;
            }
            QtProject.ReplaceTokenInFile(file, "%NAMESPACE_BEGIN%", nsBegin);

            if (!string.IsNullOrEmpty(nsEnd))
            {
                nsEnd = System.Environment.NewLine + nsEnd;
            }
            QtProject.ReplaceTokenInFile(file, "%NAMESPACE_END%", nsEnd);
        }
コード例 #4
0
ファイル: GuiClassWizard.cs プロジェクト: wencan002/vstools
        private string AddProjectItemCpp(string location, string pch)
        {
            var replaceUiHeader = false;
            var cppFile         = Path.GetTempFileName();

            using (var tmp = new StreamWriter(cppFile)) {
                var content = string.Empty;
                switch (data.UiClassInclusion)
                {
                case UiClassInclusion.Member:
                    content = MemberClassSource;
                    break;

                case UiClassInclusion.MemberPointer:
                    replaceUiHeader = true;
                    content         = MemberPointerClassSource;
                    break;

                case UiClassInclusion.MultipleInheritance:
                    content = InheritanceClassSource;
                    break;
                }
                tmp.Write(content);
            }
            cppFile = QtProject.CopyFileToFolder(cppFile, location, data.ClassSourceFile);

            if (!string.IsNullOrEmpty(pch))
            {
                QtProject.ReplaceTokenInFile(cppFile, "%INCLUDE%", pch + "\"\r\n#include \"%INCLUDE%");
            }

            QtProject.ReplaceTokenInFile(cppFile, "%INCLUDE%", data.ClassHeaderFile);
            QtProject.ReplaceTokenInFile(cppFile, "%CLASS%", data.ClassName);
            QtProject.ReplaceTokenInFile(cppFile, "%BASECLASS%", data.BaseClass);
            if (replaceUiHeader)
            {
                QtProject.ReplaceTokenInFile(cppFile, "%UI_HDR%", "ui_" + Path
                                             .GetFileNameWithoutExtension(data.UiFile) + ".h");
            }

            return(cppFile);
        }
コード例 #5
0
ファイル: CoreClassWizard.cs プロジェクト: wencan002/vstools
        private string AddProjectItemHpp(string location)
        {
            var hppFile = Path.GetTempFileName();

            using (var tmp = new StreamWriter(hppFile)) {
                tmp.Write("#pragma once\r\n\r\n"
                          + "%BASECLASSINCLUDE%%NAMESPACE_BEGIN%class %CLASS%%BASEDECL%\r\n"
                          + "{%Q_OBJECT%\r\n"
                          + "public:\r\n"
                          + "    %CLASS%(%CTORSIG%);\r\n"
                          + "    ~%CLASS%();\r\n"
                          + "};\r\n"
                          + "%NAMESPACE_END%");
            }
            hppFile = QtProject.CopyFileToFolder(hppFile, location, data.ClassHeaderFile);

            QtProject.ReplaceTokenInFile(hppFile, "%CLASS%", data.ClassName);
            QtProject.ReplaceTokenInFile(hppFile, "%BASECLASS%", data.BaseClass);

            if (string.IsNullOrEmpty(data.BaseClass))
            {
                QtProject.ReplaceTokenInFile(hppFile, "%BASEDECL%", string.Empty);
                QtProject.ReplaceTokenInFile(hppFile, "%BASECLASSINCLUDE%", string.Empty);
                QtProject.ReplaceTokenInFile(hppFile, "%Q_OBJECT%", string.Empty);
                QtProject.ReplaceTokenInFile(hppFile, "%CTORSIG%", string.Empty);
            }
            else
            {
                QtProject.ReplaceTokenInFile(hppFile, "%BASEDECL%", " : public "
                                             + data.BaseClass);
                QtProject.ReplaceTokenInFile(hppFile, "%BASECLASSINCLUDE%", "#include <"
                                             + data.BaseClass + ">\r\n\r\n");
                if (data.InsertQObjectMacro)
                {
                    QtProject.ReplaceTokenInFile(hppFile, "%Q_OBJECT%", "\r\n\tQ_OBJECT\r\n");
                }
                QtProject.ReplaceTokenInFile(hppFile, "%CTORSIG%", data.ConstructorSignature);
            }

            return(hppFile);
        }
コード例 #6
0
 /// <summary>
 /// Replaces a token in a VCFile. The tokens are usually class names and file names.
 /// </summary>
 /// <param name="file">the file in which to replace tokens</param>
 /// <param name="token">the token to replace</param>
 /// <param name="replacement">the replacement value</param>
 public void ReplaceTokenInFile(string file, string token, string replacement)
 {
     QtProject.ReplaceTokenInFile(file, token, replacement);
 }