public DynamoView(DynamoViewModel dynamoViewModel)
{
// The user's choice to enable hardware acceleration is now saved in
// the Dynamo preferences. It is set to true by default.
// When the view is constructed, we enable or disable hardware acceleration based on that preference.
//This preference is not exposed in the UI and can be used to debug hardware issues only
// by modifying the preferences xml.
RenderOptions.ProcessRenderMode = dynamoViewModel.Model.PreferenceSettings.UseHardwareAcceleration ?
RenderMode.Default : RenderMode.SoftwareOnly;
this.dynamoViewModel = dynamoViewModel;
this.dynamoViewModel.UIDispatcher = Dispatcher;
nodeViewCustomizationLibrary = new NodeViewCustomizationLibrary(this.dynamoViewModel.Model.Logger);
DataContext = dynamoViewModel;
Title = dynamoViewModel.BrandingResourceProvider.GetString(ResourceNames.MainWindow.Title);
tabSlidingWindowStart = tabSlidingWindowEnd = 0;
_timer = new Stopwatch();
_timer.Start();
InitializeComponent();
ToggleIsUsageReportingApprovedCommand.ToolTip = string.Format(
Wpf.Properties.Resources.DynamoViewSettingMenuEnableDataReportingTooltip,
dynamoViewModel.BrandingResourceProvider.ProductName);
Loaded += DynamoView_Loaded;
Unloaded += DynamoView_Unloaded;
SizeChanged += DynamoView_SizeChanged;
LocationChanged += DynamoView_LocationChanged;
// Check that preference bounds are actually within one
// of the available monitors.
if (CheckVirtualScreenSize())
{
Left = dynamoViewModel.Model.PreferenceSettings.WindowX;
Top = dynamoViewModel.Model.PreferenceSettings.WindowY;
Width = dynamoViewModel.Model.PreferenceSettings.WindowW;
Height = dynamoViewModel.Model.PreferenceSettings.WindowH;
}
else
{
Left = 0;
Top = 0;
Width = 1024;
Height = 768;
}
_workspaceResizeTimer.Tick += _resizeTimer_Tick;
if (dynamoViewModel.Model.AuthenticationManager.HasAuthProvider)
{
loginService = new LoginService(this, new System.Windows.Forms.WindowsFormsSynchronizationContext());
dynamoViewModel.Model.AuthenticationManager.AuthProvider.RequestLogin += loginService.ShowLogin;
}
var viewExtensions = new List<IViewExtension>();
foreach (var dir in dynamoViewModel.Model.PathManager.ViewExtensionsDirectories)
{
viewExtensions.AddRange(viewExtensionManager.ExtensionLoader.LoadDirectory(dir));
}
viewExtensionManager.MessageLogged += Log;
var startupParams = new ViewStartupParams(dynamoViewModel);
foreach (var ext in viewExtensions)
{
try
{
var logSource = ext as ILogSource;
if (logSource != null)
logSource.MessageLogged += Log;
ext.Startup(startupParams);
viewExtensionManager.Add(ext);
}
catch (Exception exc)
{
Log(ext.Name + ": " + exc.Message);
}
}
this.dynamoViewModel.RequestPaste += OnRequestPaste;
this.dynamoViewModel.RequestReturnFocusToView += OnRequestReturnFocusToView;
FocusableGrid.InputBindings.Clear();
}