public bool CanRun() { //check if any commands in active workflow DocumentViewModel wvm = DocumentsSource.FirstOrDefault(x => x.IsSelected); return(wvm != null && wvm.Workflow.Any()); }
/// <summary> /// Remove a layout item from this instance. /// </summary> /// <param name="item">The item to remove.</param> /// <returns>True if the item was sucsessfully remove, else false.</returns> public bool RemoveLayoutItem(ILayoutItemViewModel item) { bool sucsess; switch (item) { case IToolViewModel tool: sucsess = AnchorablesSource.Remove(tool); break; case IDocumentViewModel document: sucsess = DocumentsSource.Remove(document); break; default: sucsess = false; break; } if (item == ActiveContent && sucsess) { ILayoutItemViewModel newActive = DocumentsSource.FirstOrDefault(); if (newActive is null) { newActive = AnchorablesSource.FirstOrDefault(); } ActiveContent = newActive; } return(sucsess); }
public string AddDocument(string title) { var doc = new Document(); doc.Title.Value = title; DocumentsSource.Add(doc); return(doc.Id.Value); }
private void StartObserveDataChanged() { DataChangedDisposable.Disposable = Observable.Merge(DocumentsSource.CollectionChangedAsObservable().ToUnit(), DocumentsSource.ObserveElementObservableProperty(x => x.Title).ToUnit(), DocumentsSource.ObserveElementObservableProperty(x => x.Content).ToUnit()) .Throttle(TimeSpan.FromSeconds(5)) .Subscribe(async _ => await LocalObjectStorageHelper.SaveFileAsync("docs.json", DocumentsSource.ToArray())); }
void IFloatingPaneHost.RemoveViewModel(IViewModel iViewModel) { if (DocumentsSource.Contains(iViewModel)) { DocumentsSource.Remove(iViewModel); } else if (ToolsSource.Contains(iViewModel)) { ToolsSource.Remove(iViewModel); } }
public async Task LoadDataAsync() { if (!await LocalObjectStorageHelper.FileExistsAsync("docs.json")) { return; } DataChangedDisposable.Disposable = Disposable.Empty; var docs = await LocalObjectStorageHelper.ReadFileAsync("docs.json", Enumerable.Empty <Document>()); foreach (var doc in docs) { DocumentsSource.Add(doc); } StartObserveDataChanged(); }
/// <summary> /// Add a layout item to this instance. /// </summary> /// <param name="item">The item to dock.</param> /// <param name="setAsActive">Set the item as the currenly active content.</param> public void AddLayoutItem(ILayoutItemViewModel item, bool setAsActive) { switch (item) { case IToolViewModel tool: AnchorablesSource.Add(tool); break; case IDocumentViewModel document: DocumentsSource.Add(document); break; default: return; } if (setAsActive) { ActiveContent = item; } }
/// <summary> /// Adds a new Document. Optionally adds a Command or Workflow /// </summary> /// <param name="title"></param> public DocumentViewModel AddDocument(string title) { //FIXME handle better? string ContentId = "workspace_" + (this.DocumentsSource.Count + 1).ToString(); DocumentViewModel document = new DocumentViewModel(DialogService, ConfigService) { Title = title, ContentId = ContentId, ParentViewModel = this, Settings = new WF_Settings(ConfigService, Logger) //FIXME }; DocumentsSource.Add(document); //FIXME bugged? DocumentViewModel currentDoc = this.DocumentsSource.FirstOrDefault(x => x.ContentId == ContentId); return(document); }
public void Run() { DocumentViewModel wvm = DocumentsSource.FirstOrDefault(x => x.IsSelected); var workflow = wvm.Workflow; RAD_Task RAD_Task = Kernel.Get <RAD_Task>(); WCC_Task WCC_Task = Kernel.Get <WCC_Task>(); Logger.Clear(); Logger.LogString("Starting Workflow..."); // FIXME structure? foreach (IWorkflowItem item in workflow) { WFR completed = WFR.WFR_Error; if (item.GetType().IsSubclassOf(typeof(RAD_Command))) { completed = RAD_Task.RunCommandSync((RAD_Command)item); } else if (item.GetType().IsSubclassOf(typeof(WCC_Command))) { completed = WCC_Task.RunCommandSync((WCC_Command)item); } else //workflowitems { completed = item.Run(); } if (completed == WFR.WFR_Error) { Logger.LogString("Aborting."); break; } else { continue; } } Logger.LogString("Done."); }
public void RemoveDocument(string id) { DocumentsSource.Remove(DocumentsSource.First(x => x.Id.Value == id)); }