public DynamoViewModel(DynamoController controller) { //MVVM: Instantiate the model _model = new DynamoModel(); _model.Workspaces.CollectionChanged += Workspaces_CollectionChanged; _model.PropertyChanged += _model_PropertyChanged; dynSettings.Controller.DynamoModel = _model; _model.AddHomeWorkspace(); _model.CurrentSpace = _model.HomeSpace; Controller = controller; sw = new StringWriter(); ConnectorType = ConnectorType.BEZIER; #region Initialize Commands GoToWikiCommand = new DelegateCommand(GoToWiki, CanGoToWiki); ReportABugCommand = new DelegateCommand(ReportABug, CanReportABug); GoToSourceCodeCommand = new DelegateCommand(GoToSourceCode, CanGoToSourceCode); CleanupCommand = new DelegateCommand(Cleanup, CanCleanup); ExitCommand = new DelegateCommand<object>(Exit, CanExit); NewHomeWorkspaceCommand = new DelegateCommand(MakeNewHomeWorkspace, CanMakeNewHomeWorkspace); ShowSaveImageDialogAndSaveResultCommand = new DelegateCommand(ShowSaveImageDialogAndSaveResult, CanShowSaveImageDialogAndSaveResult); ShowOpenDialogAndOpenResultCommand = new DelegateCommand(ShowOpenDialogAndOpenResult, CanShowOpenDialogAndOpenResultCommand); ShowSaveDialogIfNeededAndSaveResultCommand = new DelegateCommand(ShowSaveDialogIfNeededAndSaveResult, CanShowSaveDialogIfNeededAndSaveResultCommand); ShowSaveDialogAndSaveResultCommand = new DelegateCommand(ShowSaveDialogAndSaveResult, CanShowSaveDialogAndSaveResultCommand); ShowNewFunctionDialogCommand = new DelegateCommand(ShowNewFunctionDialog, CanShowNewFunctionDialogCommand); SaveCommand = new DelegateCommand(Save, CanSave); OpenCommand = new DelegateCommand<object>(Open, CanOpen); SaveAsCommand = new DelegateCommand<object>(SaveAs, CanSaveAs); ClearCommand = new DelegateCommand(Clear, CanClear); HomeCommand = new DelegateCommand(Home, CanGoHome); LayoutAllCommand = new DelegateCommand(LayoutAll, CanLayoutAll); CopyCommand = new DelegateCommand<object>(Copy, CanCopy); PasteCommand = new DelegateCommand<object>(Paste, CanPaste); ToggleConsoleShowingCommand = new DelegateCommand(ToggleConsoleShowing, CanToggleConsoleShowing); ToggleFullscreenWatchShowingCommand = new DelegateCommand(ToggleFullscreenWatchShowing, CanToggleFullscreenWatchShowing); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); CancelRunCommand = new DelegateCommand(CancelRun, CanCancelRun); SaveImageCommand = new DelegateCommand<object>(SaveImage, CanSaveImage); ClearLogCommand = new DelegateCommand(ClearLog, CanClearLog); RunExpressionCommand = new DelegateCommand<object>(RunExpression,CanRunExpression); ShowPackageManagerCommand = new DelegateCommand(ShowPackageManager,CanShowPackageManager); GoToWorkspaceCommand = new DelegateCommand<object>(GoToWorkspace, CanGoToWorkspace); DisplayFunctionCommand = new DelegateCommand<object>(DisplayFunction, CanDisplayFunction); SetConnectorTypeCommand = new DelegateCommand<object>(SetConnectorType, CanSetConnectorType); CreateNodeCommand = new DelegateCommand<object>(CreateNode, CanCreateNode); CreateConnectionCommand = new DelegateCommand<object>(CreateConnection, CanCreateConnection); AddNoteCommand = new DelegateCommand<object>(AddNote, CanAddNote); DeleteCommand = new DelegateCommand<object>(Delete, CanDelete); SelectNeighborsCommand = new DelegateCommand<object>(SelectNeighbors, CanSelectNeighbors); AddToSelectionCommand = new DelegateCommand<object>(AddToSelection, CanAddToSelection); PostUIActivationCommand = new DelegateCommand(PostUIActivation, CanDoPostUIActivation); RefactorCustomNodeCommand = new DelegateCommand(RefactorCustomNode, CanRefactorCustomNode); ShowHideConnectorsCommand = new DelegateCommand(ShowConnectors, CanShowConnectors); #endregion }
public DynamoViewModel(DynamoController controller) { ConnectorType = ConnectorType.BEZIER; //create the model _model = new DynamoModel(); dynSettings.Controller.DynamoModel = _model; //register for property change notifications //on the model and the controller _model.PropertyChanged += _model_PropertyChanged; dynSettings.Controller.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Controller_PropertyChanged); _model.Workspaces.CollectionChanged += Workspaces_CollectionChanged; _model.AddHomeWorkspace(); _model.CurrentSpace = _model.HomeSpace; Controller = controller; OpenCommand = new DelegateCommand(_model.Open, _model.CanOpen); ShowOpenDialogAndOpenResultCommand = new DelegateCommand(_model.ShowOpenDialogAndOpenResult, _model.CanShowOpenDialogAndOpenResultCommand); WriteToLogCmd = new DelegateCommand(_model.WriteToLog, _model.CanWriteToLog); PostUiActivationCommand = new DelegateCommand(_model.PostUIActivation, _model.CanDoPostUIActivation); AddNoteCommand = new DelegateCommand(_model.AddNote, _model.CanAddNote); LayoutAllCommand = new DelegateCommand(_model.LayoutAll, _model.CanLayoutAll); AddToSelectionCommand = new DelegateCommand(_model.AddToSelection, _model.CanAddToSelection); ShowNewFunctionDialogCommand = new DelegateCommand(_model.ShowNewFunctionDialogAndMakeFunction, _model.CanShowNewFunctionDialogCommand); CreateNodeCommand = new DelegateCommand(_model.CreateNode, _model.CanCreateNode); CreateConnectionCommand = new DelegateCommand(_model.CreateConnection, _model.CanCreateConnection); ClearCommand = new DelegateCommand(_model.Clear, _model.CanClear); GoHomeCommand = new DelegateCommand(GoHomeView, CanGoHomeView); SelectAllCommand = new DelegateCommand(SelectAll, CanSelectAll); ShowSaveDialogAndSaveResultCommand = new DelegateCommand(ShowSaveDialogAndSaveResult, CanShowSaveDialogAndSaveResult); SaveCommand = new DelegateCommand(_model.Save, _model.CanSave); SaveAsCommand = new DelegateCommand(_model.SaveAs, _model.CanSaveAs); HomeCommand = new DelegateCommand(_model.Home, _model.CanGoHome); NewHomeWorkspaceCommand = new DelegateCommand(MakeNewHomeWorkspace, CanMakeNewHomeWorkspace); GoToWorkspaceCommand = new DelegateCommand(GoToWorkspace, CanGoToWorkspace); DeleteCommand = new DelegateCommand(_model.Delete, _model.CanDelete); ExitCommand = new DelegateCommand(Exit, CanExit); ToggleFullscreenWatchShowingCommand = new DelegateCommand(ToggleFullscreenWatchShowing, CanToggleFullscreenWatchShowing); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); AlignSelectedCommand = new DelegateCommand(AlignSelected, CanAlignSelected);; ShowSaveDialogIfNeededAndSaveResultCommand = new DelegateCommand(ShowSaveDialogIfNeededAndSaveResult, CanShowSaveDialogIfNeededAndSaveResultCommand); RefactorCustomNodeCommand = new DelegateCommand(_model.RefactorCustomNode, _model.CanRefactorCustomNode); SaveImageCommand = new DelegateCommand(SaveImage, CanSaveImage); ShowSaveImageDialogAndSaveResultCommand = new DelegateCommand(ShowSaveImageDialogAndSaveResult, CanShowSaveImageDialogAndSaveResult); CopyCommand = new DelegateCommand(_model.Copy, _model.CanCopy); PasteCommand = new DelegateCommand(_model.Paste, _model.CanPaste); ToggleConsoleShowingCommand = new DelegateCommand(ToggleConsoleShowing, CanToggleConsoleShowing); CancelRunCommand = new DelegateCommand(Controller.CancelRun, Controller.CanCancelRun); RunExpressionCommand = new DelegateCommand(Controller.RunExpression, Controller.CanRunExpression); DisplayFunctionCommand = new DelegateCommand(Controller.DisplayFunction, Controller.CanDisplayFunction); SetConnectorTypeCommand = new DelegateCommand(SetConnectorType, CanSetConnectorType); ReportABugCommand = new DelegateCommand(Controller.ReportABug, Controller.CanReportABug); GoToWikiCommand = new DelegateCommand(GoToWiki, CanGoToWiki); GoToSourceCodeCommand = new DelegateCommand(GoToSourceCode, CanGoToSourceCode); ShowPackageManagerSearchCommand = new DelegateCommand(ShowPackageManagerSearch, CanShowPackageManagerSearch); ShowInstalledPackagesCommand = new DelegateCommand(ShowInstalledPackages, CanShowInstalledPackages); PublishCurrentWorkspaceCommand = new DelegateCommand(PublishCurrentWorkspace, CanPublishCurrentWorkspace); PublishSelectedNodesCommand = new DelegateCommand(PublishSelectedNodes, CanPublishSelectedNodes); ShowHideConnectorsCommand = new DelegateCommand(ShowConnectors, CanShowConnectors); SelectNeighborsCommand = new DelegateCommand(SelectNeighbors, CanSelectNeighbors); ClearLogCommand = new DelegateCommand(dynSettings.Controller.ClearLog, dynSettings.Controller.CanClearLog); PanCommand = new DelegateCommand(Pan, CanPan); DynamoLogger.Instance.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Instance_PropertyChanged); DynamoSelection.Instance.Selection.CollectionChanged += SelectionOnCollectionChanged; }
/// <summary> /// Class constructor /// </summary> public DynamoController(string context, IUpdateManager updateManager, IWatchHandler watchHandler, IPreferences preferences, string corePath) { DebugSettings = new DebugSettings(); IsCrashing = false; dynSettings.Controller = this; Context = context; PreferenceSettings = preferences; ((PreferenceSettings) PreferenceSettings).PropertyChanged += PreferenceSettings_PropertyChanged; SIUnit.LengthUnit = PreferenceSettings.LengthUnit; SIUnit.AreaUnit = PreferenceSettings.AreaUnit; SIUnit.VolumeUnit = PreferenceSettings.VolumeUnit; SIUnit.NumberFormat = PreferenceSettings.NumberFormat; UpdateManager = updateManager; UpdateManager.CheckForProductUpdate(new UpdateRequest(new Uri(Configurations.UpdateDownloadLocation),dynSettings.DynamoLogger, UpdateManager.UpdateDataAvailable)); WatchHandler = watchHandler; //Start heartbeat reporting //This needs to be done after the update manager has been initialised //so that the version number can be reported InstrumentationLogger.Start(); //create the model DynamoModel = new DynamoModel (); DynamoModel.AddHomeWorkspace(); SearchViewModel = new SearchViewModel(DynamoModel); DynamoModel.CurrentWorkspace = DynamoModel.HomeSpace; DynamoModel.CurrentWorkspace.X = 0; DynamoModel.CurrentWorkspace.Y = 0; // custom node loader CustomNodeManager = new CustomNodeManager(DynamoPathManager.Instance.UserDefinitions); dynSettings.PackageLoader = new PackageLoader(); dynSettings.PackageLoader.DoCachedPackageUninstalls(); dynSettings.PackageLoader.LoadPackages(); DisposeLogic.IsShuttingDown = false; EngineController = new EngineController(this); CustomNodeManager.RecompileAllNodes(EngineController); //This is necessary to avoid a race condition by causing a thread join //inside the vm exec //TODO(Luke): Push this into a resync call with the engine controller ResetEngine(); dynSettings.DynamoLogger.Log(String.Format( "Dynamo -- Build {0}", Assembly.GetExecutingAssembly().GetName().Version)); DynamoLoader.ClearCachedAssemblies(); DynamoLoader.LoadNodeModels(); MigrationManager.Instance.MigrationTargets.Add(typeof(WorkspaceMigrations)); Runner = new DynamoRunner(); }
/// <summary> /// Class constructor /// </summary> public DynamoController(string context, IUpdateManager updateManager, ILogger logger, IWatchHandler watchHandler, IPreferences preferences) { IsCrashing = false; DynamoLogger = logger; dynSettings.Controller = this; Context = context; //Start heartbeat reporting InstrumentationLogger.Start(); PreferenceSettings = preferences; ((PreferenceSettings) PreferenceSettings).PropertyChanged += PreferenceSettings_PropertyChanged; BaseUnit.LengthUnit = PreferenceSettings.LengthUnit; BaseUnit.AreaUnit = PreferenceSettings.AreaUnit; BaseUnit.VolumeUnit = PreferenceSettings.VolumeUnit; BaseUnit.NumberFormat = PreferenceSettings.NumberFormat; UpdateManager = updateManager; UpdateManager.UpdateDownloaded += updateManager_UpdateDownloaded; UpdateManager.ShutdownRequested += updateManager_ShutdownRequested; UpdateManager.CheckForProductUpdate(new UpdateRequest(new Uri(Configurations.UpdateDownloadLocation),dynSettings.Controller.DynamoLogger, UpdateManager.UpdateDataAvailable)); WatchHandler = watchHandler; //create the model DynamoModel = new DynamoModel (); DynamoModel.AddHomeWorkspace(); DynamoModel.CurrentWorkspace = DynamoModel.HomeSpace; DynamoModel.CurrentWorkspace.X = 0; DynamoModel.CurrentWorkspace.Y = 0; // custom node loader string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string pluginsPath = Path.Combine(directory, "definitions"); CustomNodeManager = new CustomNodeManager(pluginsPath); SearchViewModel = new SearchViewModel(); dynSettings.PackageLoader = new PackageLoader(); dynSettings.PackageLoader.DoCachedPackageUninstalls(); dynSettings.PackageLoader.LoadPackages(); DisposeLogic.IsShuttingDown = false; //This is necessary to avoid a race condition by causing a thread join //inside the vm exec //TODO(Luke): Push this into a resync call with the engine controller ResetEngine(); dynSettings.Controller.DynamoLogger.Log(String.Format( "Dynamo -- Build {0}", Assembly.GetExecutingAssembly().GetName().Version)); DynamoLoader.ClearCachedAssemblies(); DynamoLoader.LoadNodeModels(); InfoBubbleViewModel = new InfoBubbleViewModel(); MigrationManager.Instance.MigrationTargets.Add(typeof(WorkspaceMigrations)); evaluationWorker.DoWork += RunThread; }