コード例 #1
0
        public override void RunStarted(object dteObject,
                                        Dictionary <string, string> dictionary,
                                        WizardRunKind runKind, object[] customParams)
        {
            dte     = ( _DTE )dteObject;
            project = ProjectUtilities.GetSelectedProject(dte);
            DialogResult result = DialogResult.None;
            string       inputPath;

            dictionary.TryGetValue("$rootname$", out inputPath);
            var inputLocation = Path.GetDirectoryName(inputPath);
            var inputName     = Path.GetFileName(inputPath);

            try {
                form   = new QtFormForm(inputName, inputLocation);
                result = form.ShowDialog();
            }
            catch (Exception exception) {
                form.Dispose();
                MessageBox.Show("Exception: " + exception.ToString());
                throw new WizardCancelledException();
            }

            switch (result)
            {
            case DialogResult.Cancel:
                throw new WizardCancelledException();

            case DialogResult.Retry:
                throw new WizardBackoutException();
            }
        }
コード例 #2
0
ファイル: QtClassWizard.cs プロジェクト: manp1212/QtPackage
        public static bool IsUsePrecompiledHeader()
        {
            var tool   = ProjectUtilities.GetCompilerTool(project);
            var option = tool?.UsePrecompiledHeader;

            return(option != null ? option != pchOption.pchNone : false);
        }
コード例 #3
0
ファイル: QtClassWizard.cs プロジェクト: manp1212/QtPackage
        public override void ProjectItemFinishedGenerating(ProjectItem item)
        {
            var path = item.FileNames[0];

            item.Remove();
            var name     = Path.GetFileName(path).Replace(tempExtension, "");
            var location = form.location;
            var outPath  = Path.Combine(location, name);

            Directory.CreateDirectory(location);
            File.Move(path, outPath);

            //CLInlcude "FIX"
            var parent = ProjectUtilities.GetCurrentParentFilter(dte);

            try { parent.AddFromFile(outPath); } catch {}

            //Don't open .ui file
            if (Path.GetExtension(name) == ".ui")
            {
                return;
            }

            var outItem = ProjectUtilities.GetProjectItemByPath(project, outPath);

            outItem.Open().Activate();
        }
コード例 #4
0
ファイル: QtWizard.cs プロジェクト: manp1212/QtPackage
        public static bool ValidateIdentifier(string name)
        {
            //CodeCompiler.ValidateIdentifiers( class1 );
            //System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier( className );
            var manager = ProjectUtilities.GetVCLanguageManager(dte);

            return(manager.ValidateIdentifier(name));
        }
コード例 #5
0
ファイル: QtWizard.cs プロジェクト: manp1212/QtPackage
        public static bool CheckFile(string path)
        {
            //Check exists path
            //( if true - replace original )
            if (ProjectUtilities.GetProjectItemByPath(project, path) != null)
            {
                return(false);
            }

            //Check exists in current filter
            //( if true - no error, two elements in same name )
            var fileName = Path.GetFileName(path);
            var parent   = ProjectUtilities.GetCurrentParentFilter(dte);

            foreach (ProjectItem item in parent)
            {
                if (item.Name == fileName)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #6
0
ファイル: QtWizard.cs プロジェクト: manp1212/QtPackage
        public static bool ValidateFileName(string name)
        {
            var manager = ProjectUtilities.GetVCLanguageManager(dte);

            return(manager.ValidateFileName(name));
        }
コード例 #7
0
ファイル: QtClassWizard.cs プロジェクト: manp1212/QtPackage
        public override void RunStarted(object dteObject,
                                        Dictionary <string, string> dictionary,
                                        WizardRunKind runKind, object[] customParams)
        {
            try {
                dte     = ( _DTE )dteObject;
                project = ProjectUtilities.GetSelectedProject(dte);

                string inputName, inputLocation;
                dictionary.TryGetValue("$safeitemname$", out inputName);
                dictionary.TryGetValue("$rootname$", out inputLocation);
                inputLocation = Path.GetDirectoryName(inputLocation);

                form = new QtClassForm(inputName, inputLocation);

                //string dataString = "";
                //foreach ( var data in dictionary ) {
                //    dataString += data.Key + ": " + data.Value + Environment.NewLine;
                //}
                //MessageBox.Show( dataString );

                var result = form.ShowDialog();

                switch (result)
                {
                case DialogResult.Cancel:
                    throw new WizardCancelledException();

                case DialogResult.Retry:
                    throw new WizardBackoutException();
                }


                var className     = form.className;
                var hppName       = form.hppName;
                var cppName       = form.cppName;
                var uiName        = form.uiName;
                var baseClass     = form.baseClassName;
                var namespaceName = form.namespaceName;

                var isNamespaced   = !string.IsNullOrWhiteSpace(namespaceName);
                var namespaceBegin = "";
                var namespaceEnd   = "";
                if (isNamespaced)
                {
                    var names = namespaceName.Split(new string[] { "::" },
                                                    StringSplitOptions.None);
                    foreach (var name in names)
                    {
                        namespaceBegin += Environment.NewLine + "namespace " + name + " {";
                        namespaceEnd   += Environment.NewLine + "}";
                    }
                }

                var isQObject        = !string.IsNullOrWhiteSpace(baseClass);
                var qObject          = isQObject && form.insertQObject ? "Q_OBJECT" : "";
                var baseClassInclude = isQObject ? "#include <" + baseClass + ">" : "";
                var baseClassInherit = isQObject ? " : public " + baseClass : "";

                var isSignatured       = isQObject && !string.IsNullOrWhiteSpace(form.signature);
                var defaultValueExists = !string.IsNullOrWhiteSpace(form.defaultValue);
                var defaultValue       = defaultValueExists ? " = " + form.defaultValue : "";
                var signature          = isSignatured ? form.signature : "";
                var signatureDecl      = isSignatured ? signature + defaultValue : "";
                var signatureImpl      = isQObject ? " : " + baseClass + (isSignatured ? "(parent)" : "(this)") : "";

                dictionary["$CLASS$"]              = className;
                dictionary["$HPP_FILENAME$"]       = hppName + tempExtension;
                dictionary["$HPP_FILENAME_CPP$"]   = hppName;
                dictionary["$CPP_FILENAME$"]       = cppName + tempExtension;
                dictionary["$UI_FILENAME$"]        = uiName + tempExtension;
                dictionary["$NAMESPACE_BEGIN$"]    = namespaceBegin;
                dictionary["$NAMESPACE_END$"]      = namespaceEnd;
                dictionary["$BASE_CLASS$"]         = baseClass;
                dictionary["$BASE_CLASS_INCLUDE$"] = baseClassInclude;
                dictionary["$BASE_CLASS_INHERIT$"] = baseClassInherit;
                dictionary["$SIGNATURE$"]          = signature;
                dictionary["$SIGNATURE_DECL$"]     = signatureDecl;
                dictionary["$SIGNATURE_IMPL$"]     = signatureImpl;
                dictionary["$Q_OBJECT$"]           = qObject;

                var pchInclude = IsUsePrecompiledHeader() ?
                                 "#include <" + GetPrecompiledHeaderName() + ">"
                                 + Environment.NewLine : "";
                dictionary["$PCH_INCLUDE$"] = pchInclude;

                var isGuiClass    = form.isGuiClass;
                var isInternalGui = isGuiClass && form.isInternalGui;
                var isInheritGui  = isGuiClass && form.isInheritGui;
                var isPointerGui  = isGuiClass && form.isPointerGui;
                var includeGui    = Environment.NewLine + "#include \"ui_" + className.ToLower() + ".h\"";
                var uiInclude     = isPointerGui ? Environment.NewLine + "namespace Ui {class " + className + ";}" :
                                    isGuiClass ? includeGui : "";
                var uiIncludeCpp = isPointerGui ? includeGui : "";
                var uiInherit    = isInheritGui ? ", public Ui::" + className  : "";
                var uiDecl       = isInternalGui ? "Ui::" + className + " ui;" :
                                   isPointerGui ? "Ui::" + className + " *ui;" : "";
                var uiInit = isInternalGui ? "ui.setupUi(this);" :
                             isInheritGui ? "setupUi(this);" :
                             isPointerGui ? "ui = new Ui::" + className + "();" +
                             Environment.NewLine + "\tui->setupUi(this); " : "";
                var uiDelete = isPointerGui ? "delete ui;" : "";
                dictionary["$UI_INCLUDE$"]     = uiInclude;
                dictionary["$UI_INCLUDE_CPP$"] = uiIncludeCpp;
                dictionary["$UI_INHERIT$"]     = uiInherit;
                dictionary["$UI_DECL$"]        = uiDecl;
                dictionary["$UI_INIT$"]        = uiInit;
                dictionary["$UI_DELETE$"]      = uiDelete;

                var isIncludeGuard     = form.includeGuard;
                var includeGuardDefine = className.ToUpper() + "_HPP";
                var includeGuardBegin  = isIncludeGuard ?
                                         Environment.NewLine + "#ifndef " + includeGuardDefine +
                                         Environment.NewLine + "#define " + includeGuardDefine : "";
                var includeGuardEnd = isIncludeGuard ?
                                      Environment.NewLine + "#endif // " + includeGuardDefine : "";
                dictionary["$INCLUDE_GUARD_BEGIN$"] = includeGuardBegin;
                dictionary["$INCLUDE_GUARD_END$"]   = includeGuardEnd;

                var centralWidget =
                    baseClass == "QMainWindow" ?
                    Environment.NewLine + "  <widget class=\"QMenuBar\" name=\"menuBar\" />" +
                    Environment.NewLine + "  <widget class=\"QToolBar\" name=\"mainToolBar\" />" +
                    Environment.NewLine + "  <widget class=\"QWidget\" name=\"centralWidget\" />" +
                    Environment.NewLine + "  <widget class=\"QStatusBar\" name=\"statusBar\" />" :
                    baseClass == "QDockWidget" ?
                    Environment.NewLine + "  <widget class=\"QWidget\" name=\"widget\" />" : "";
                dictionary["$CENTRAL_WIDGET$"] = centralWidget;

                //dictionary[ "$rootname$" ];
                //dictionary[ "$destinationdirectory$" ];
            }
            catch (WizardBackoutException exception) {
                throw exception;
            }
            catch (WizardCancelledException exception) {
                throw exception;
            }
            catch (Exception exception) {
                MessageBox.Show("Exception: " + exception.ToString());
                throw new WizardCancelledException();
            }
            finally {
                form.Dispose();
            }
        }
コード例 #8
0
ファイル: QtClassWizard.cs プロジェクト: manp1212/QtPackage
        public static string GetPrecompiledHeaderName()
        {
            var tool = ProjectUtilities.GetCompilerTool(project);

            return(tool?.PrecompiledHeaderThrough);
        }