/// <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); }
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); }