Пример #1
0
        /// <summary>
        /// Сгенерировать текст нового объекта
        /// </summary>
        /// <param name="splitterObjectType"></param>
        /// <param name="param"></param>
        public void RunSplit(eSplitterObjectType splitterObjectType, eSplitParam param)
        {
            string FinalObjectText = string.Empty;

            // Получаем текст объекта
            switch (splitterObjectType)
            {
            case eSplitterObjectType.OldSpec: FinalObjectText = RunSplitOldSpec(); break;

            case eSplitterObjectType.OldBody: FinalObjectText = RunSplitOldBody(); break;

            case eSplitterObjectType.NewSpec: FinalObjectText = RunSplitNewSpec(param.HasFlag(eSplitParam.GenerateHeader)); break;

            case eSplitterObjectType.NewBody: FinalObjectText = RunSplitNewBody(param.HasFlag(eSplitParam.GenerateHeader)); break;

            default:
                break;
            }

            // Заменяем двойные пробелы - одинарными
            FinalObjectText = Regex.Replace(FinalObjectText, "\r\n\\s*\r\n\\s*\r\n", "\r\n\r\n");

            // Копируем текст в буфер
            if (param.HasFlag(eSplitParam.CopyToClipBoard))
            {
                Clipboard.SetText(FinalObjectText);
            }

            // Открываем текст в новом окне
            if (param.HasFlag(eSplitParam.OpenNewWindow))
            {
                TextWindow tw = new TextWindow(FinalObjectText);
                tw.Show();
            }

            // Обновляем репозиторий
            if (param.HasFlag(eSplitParam.DirectlyUpdateRep))
            {
                RepositoryObject repositoryObject;
                if (splitterObjectType.IsNew())
                {
                    repositoryObject = new RepositoryObject(Config.Instanse().NewPackageName, Config.Instanse().NewPackageOwner, splitterObjectType.IsSpec() ? eRepositoryObjectType.Package_Spec : eRepositoryObjectType.Package_Body);
                }
                else
                {
                    repositoryObject = splitterObjectType.IsSpec() ? _package.repositoryPackage.GetObjectSpec() : _package.repositoryPackage.GetObjectBody();

                    /* Мы должны одновременно обновить в репозитории и спеку и тело
                     * Последовательно мы это сделать не можем, так как генерация текста зависит от обоих частей
                     * Обновляем соседнюю часть:
                     */
                    var SecondParttext = splitterObjectType.IsSpec() ? RunSplitOldBody() : RunSplitOldSpec();
                    var SecondPartObj  = splitterObjectType.IsSpec() ? _package.repositoryPackage.GetObjectBody() : _package.repositoryPackage.GetObjectSpec();
                    DBRep.Instance().SaveTextToFile(SecondParttext, SecondPartObj);
                }

                DBRep.Instance().SaveTextToFile(FinalObjectText, repositoryObject);
            }
        }
        public void RunSplit(eSplitterObjectType splitterOvjectType, eSplitParam splitterParam)
        {
            // Убираем параметр "Открыть в новом окне" (при его наличии)
            if (splitterParam.HasFlag(eSplitParam.OpenNewWindow))
            {
                splitterParam &= ~eSplitParam.OpenNewWindow;
            }

            _SplitManager.RunSplit(splitterOvjectType, splitterParam);
        }
Пример #3
0
        private eSplitParam GetSplitParam()
        {
            eSplitParam answer = eSplitParam.None;

            if (IsCheckedParamNewWindow)
            {
                answer |= eSplitParam.OpenNewWindow;
            }
            if (IsCheckedParamClipboard)
            {
                answer |= eSplitParam.CopyToClipBoard;
            }
            if (IsCheckedParamAddHeader)
            {
                answer |= eSplitParam.GenerateHeader;
            }
            if (IsCheckedParamUpdateRep)
            {
                answer |= eSplitParam.DirectlyUpdateRep;
            }
            return(answer);
        }