/// <summary> /// Crea un nuevo elemento /// </summary> protected override bool NewItem() { FilesModelCollection files = new FilesModelCollection(Project); bool isUpdated = false; // Obtiene los archivos de la lista foreach (PageListItemViewModel item in ListItems) { files.Add(item.File); } // Abre la ventana de selección de documentos if (DocWriterViewModel.Instance.ViewsController.SelectFilesProject (Project, FileModel.DocumentType.Document, files, out FilesModelCollection filesSelected) == SystemControllerEnums.ResultType.Yes) { // Limpia la lista ListItems.Clear(); // Añade los elementos foreach (FileModel file in filesSelected) { ListItems.Add(new PageListItemViewModel(file)); } // Indica que ha habido modificaciones isUpdated = true; } // Devuelve el valor que indica si se ha dado alguno de alta return(isUpdated); }
public TreeDocumentsViewModel(BauMvvm.ViewModels.BaseObservableObject viewModelParent, FileModel.DocumentType documentType, FileModel file, FilesModelCollection files) { ViewModelParent = viewModelParent; DocumentType = documentType; File = file; Files = files; }
/// <summary> /// Obtiene los archivos seleccionados /// </summary> public FilesModelCollection GetIsCheckedFiles() { FilesModelCollection files = new FilesModelCollection(File.Project); // Añade los nodos seleccionados files.AddRange(GetFilesIsChecked(Nodes)); // Devuelve la colección de archivos return(files); }
public SelectFilesProjectViewModel(ProjectModel project, FileModel.DocumentType idDocumentType, FilesModelCollection filesSelected) { // Inicializa las propiedades Project = project; FilesSelected = filesSelected; IDDocumentType = idDocumentType; // Carga por primera vez el combo de proyectos LoadTreeFiles(project); }
/// <summary> /// Obtiene los archivos de la lista de páginas /// </summary> internal FilesModelCollection GetPages() { FilesModelCollection files = new FilesModelCollection(Project); // Obtiene los archivos de la lista foreach (PageListItemViewModel item in ListItems) { files.Add(item.File); } // Devuelve la colección de listas return(files); }
/// <summary> /// Obtiene el índice del documento /// </summary> private string GetIndex(ProjectModel project, DocumentModel documentRoot) { NhamlBuilder builder = new NhamlBuilder(); FilesModelCollection files = GetFilesChild(documentRoot); // Crea la lista con el índice builder.Indent = 0; builder.AddTag("br"); // Obtiene el índice CreateIndex(builder, project, files); // Devuelve el contenido return(builder.ToString()); }
/// <summary> /// Obtiene los archivos hijo de una colección /// </summary> internal FileTargetModelCollection GetChilds(FilesModelCollection files, bool isRecursive, bool onlyRss) { FileTargetModelCollection childs = new FileTargetModelCollection(Processor); // Recorre los archivos añadiendo los hijos foreach (FileModel file in files) { childs.AddRange(GetChilds(file, isRecursive, onlyRss)); } // Elimina los duplicados childs.RemoveDuplicates(); // Devuelve la colección return(childs); }
/// <summary> /// Carga los archivos de una carpeta /// </summary> private FilesModelCollection Load(ProjectModel project, string path) { FilesModelCollection files = new FilesModelCollection(project); // Obtiene los archivos if (Directory.Exists(path)) { // Añade los directorios files.AddRange(ConvertFiles(project, Directory.GetDirectories(path))); // Añade los archivos files.AddRange(ConvertFiles(project, Directory.GetFiles(path))); } // Devuelve los archivos return(files); }
/// <summary> /// Añade un archivo / directorio a la colección /// </summary> private FilesModelCollection ConvertFiles(ProjectModel project, string [] arrfileName) { FilesModelCollection files = new FilesModelCollection(project); // Añade los archivos a la colección foreach (string fileName in arrfileName) { FileModel file = ConvertFile(project, fileName); if (file != null) { files.Add(file); } } // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene el número de documentos de una colección de archivos /// </summary> private int GetCountDocuments(FilesModelCollection files) { int count = 0; // Obtiene el número de documentos entre los archivos if (files != null) { foreach (FileModel file in files) { if (file.FileType == FileModel.DocumentType.Document) { count++; } } } // Devuelve el número de documentos return(count); }
/// <summary> /// Abre el formulario de selección de archivos de un proyecto /// </summary> public SystemControllerEnums.ResultType SelectFilesProject(ProjectModel project, FileModel.DocumentType idDocumentType, FilesModelCollection filesSelected, out FilesModelCollection filesOutput) { SelectFilesProjectView frmNewSelect = new SelectFilesProjectView(project, idDocumentType, filesSelected); SystemControllerEnums.ResultType result; // Inicializa los datos de salida filesOutput = new FilesModelCollection(project); // Muestra el formulario result = DocWriterPlugin.MainInstance.HostPluginsController.HostViewsController.ShowDialog(frmNewSelect); // Recoge los valores if (result == SystemControllerEnums.ResultType.Yes) { filesOutput = frmNewSelect.ViewModel.FilesSelected; } // Devuelve el resultado return(result); }
/// <summary> /// Obtiene los archivos de un tipo de una carpeta /// </summary> private FilesModelCollection GetFiles(ProjectModel project, FilesModelCollection filesProject, FileModel.DocumentType idDocumentType) { FilesModelCollection files = new FilesModelCollection(project); // Añade a la colección de salida los archivos de determinado tipo foreach (FileModel fileProject in filesProject) { if (fileProject.FileType == idDocumentType) { files.Add(fileProject); } else { files.AddRange(fileProject.Files); } } // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene los archivos seleccionados /// </summary> private FilesModelCollection GetFilesIsChecked(TreeViewItemsViewModelCollection nodes) { FilesModelCollection files = new FilesModelCollection(File.Project); // Busca los nodos seleccionados if (nodes != null) { foreach (TreeViewItemViewModel node in nodes) { // Añade el archivo si está seleccionado if (node.IsChecked && (node.Tag is FileModel)) { files.Add(node.Tag as FileModel); } // Añade los archivos hijo files.AddRange(GetFilesIsChecked(node.Children)); } } // Devuelve los archivos return(files); }
/// <summary> /// Obtiene el índice /// </summary> private void CreateIndex(NhamlBuilder builder, ProjectModel project, FilesModelCollection files) { if (GetCountDocuments(files) > 0) { // Abre la lista builder.AddTag("ul"); builder.Indent++; // Crea los elementos de la lista foreach (FileModel file in files) { if (file.FileType == FileModel.DocumentType.Document) { DocumentModel document = new LibDocWriter.Application.Bussiness.Documents.DocumentBussiness().Load(file); // Añade el título builder.AddTag("li", $"#a {{href=\"{project.Name}\\{document.File.IDFileName}\" }} {document.Title} #"); // Añade los elementos hijo CreateIndex(builder, project, GetFilesChild(document)); } } // Cierra la lista builder.Indent--; } }
public SelectFilesProjectView(ProjectModel project, FileModel.DocumentType idDocumentType, FilesModelCollection filesSelected) { // Inicializa los componentes InitializeComponent(); // Inicializa el ViewModel ViewModel = new SelectFilesProjectViewModel(project, idDocumentType, filesSelected); DataContext = ViewModel; ViewModel.Close += (sender, result) => { DialogResult = result.IsAccepted; Close(); }; }
/// <summary> /// Crea las referencias /// </summary> public void Create(ProjectModel projectTarget, string pathTarget, ProjectModel projectSource, FilesModelCollection files, bool isRecursive) { foreach (FileModel file in files) { string pathFirstTarget = pathTarget; // Si lo que se está copiando es un directorio, se añade el directorio al destino if (Directory.Exists(file.FullFileName)) { pathFirstTarget = Path.Combine(pathTarget, Path.GetFileName(file.FullFileName)); } // Copia los archivos / directorios Copy(projectSource, projectTarget, file.FullFileName, pathFirstTarget, isRecursive || file.IsDocumentFolder); } }
/// <summary> /// Carga los nodos hijos de un árbol /// </summary> private void LoadNodes(TreeViewItemsViewModelCollection nodes, TreeViewItemViewModel nodeParent, FilesModelCollection files) { foreach (FileModel file in files) { TreeViewItemViewModel node; // Si es un archivo del tipo seleccionado, se añade al árbol, si no, se considera el nodo igual que el padre // y se siguen añadiendo hijos if (DocumentType == FileModel.DocumentType.Unknown || DocumentType == FileModel.DocumentType.File || DocumentType == file.FileType || IsReference(file, DocumentType)) { // Crea un nuevo nodo node = new TreeViewItemViewModel(file.FullFileName, file.Title, nodeParent, false, file); node.IsExpanded = true; // Selecciona el nodo if (Files != null) { node.IsChecked = Files.ExistsByIDFileName(file.IDFileName); } // Lo añade al árbol if (nodeParent == null) { nodes.Add(node); } else { nodeParent.Children.Add(node); } } else { node = nodeParent; } // Añade el manejador de eventos if (node != null) { node.PropertyChanged += (sender, evntArgs) => { if (evntArgs.PropertyName.EqualsIgnoreCase(nameof(TreeViewItemViewModel.IsChecked)) || evntArgs.PropertyName.EqualsIgnoreCase(nameof(TreeViewItemViewModel.IsSelected))) { IsTreeeUpdated = true; } } } ; // Añade los nodos hijo if (file.IsFolder) { LoadNodes(nodes, node, new Application.Bussiness.Solutions.FileBussiness().Load(file)); } } }