/// <summary> /// Load a WorkspaceModel from json. If the WorkspaceModel is a HomeWorkspaceModel /// it will be set as the current workspace. /// </summary> /// <param name="json"></param> public static WorkspaceModel LoadWorkspaceFromJson(string json, LibraryServices libraryServices, EngineController engineController, DynamoScheduler scheduler, NodeFactory factory, bool isTestMode, bool verboseLogging, CustomNodeManager manager) { var settings = new JsonSerializerSettings { Error = (sender, args) => { args.ErrorContext.Handled = true; Console.WriteLine(args.ErrorContext.Error); }, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, TypeNameHandling = TypeNameHandling.Auto, Formatting = Formatting.Indented, Converters = new List<JsonConverter>{ new ConnectorConverter(), new AnnotationConverter(), new WorkspaceConverter(engineController, scheduler, factory, isTestMode, verboseLogging), new NodeModelConverter(manager, libraryServices), }, ReferenceResolverProvider = () => { return new IdReferenceResolver(); } }; var result = ReplaceTypeDeclarations(json, true); var ws = JsonConvert.DeserializeObject<WorkspaceModel>(result, settings); return ws; }
public PackagePathViewModel(PackageLoader loader, LoadPackageParams loadParams, CustomNodeManager customNodeManager) { this.packageLoader = loader; this.loadPackageParams = loadParams; this.customNodeManager = customNodeManager; RootLocations = new ObservableCollection<string>(setting.CustomPackageFolders); AddPathCommand = new DelegateCommand(p => InsertPath()); DeletePathCommand = new DelegateCommand(p => RemovePathAt((int) p), CanDelete); MovePathUpCommand = new DelegateCommand(p => SwapPath((int) p, ((int) p) - 1), CanMoveUp); MovePathDownCommand = new DelegateCommand(p => SwapPath((int) p, ((int) p) + 1), CanMoveDown); UpdatePathCommand = new DelegateCommand(p => UpdatePathAt((int) p)); SaveSettingCommand = new DelegateCommand(CommitChanges); SelectedIndex = 0; }