diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index de4e91a32..10676da47 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -1103,7 +1103,7 @@ namespace MatterHackers.MatterControl else { // If there are no printers setup show the export dialog but have the gcode option disabled - if (ProfileManager.Instance.ActiveProfiles.Count() == 0 + if (!ProfileManager.Instance.ActiveProfiles.Any() || ProfileManager.Instance.ActiveProfiles.Count() > 1) { DialogWindow.Show(new ExportPrintItemPage(libraryItems, centerOnBed, null)); diff --git a/MatterControlLib/Library/ContentProviders/ImageContentProvider.cs b/MatterControlLib/Library/ContentProviders/ImageContentProvider.cs index edbe5bac5..b02913480 100644 --- a/MatterControlLib/Library/ContentProviders/ImageContentProvider.cs +++ b/MatterControlLib/Library/ContentProviders/ImageContentProvider.cs @@ -44,9 +44,9 @@ namespace MatterHackers.MatterControl.DesignTools /// public class ImageContentProvider : ISceneContentProvider { - public Task CreateItem(ILibraryItem item, Action reporter) + public async Task CreateItem(ILibraryItem item, Action reporter) { - return Task.Run(async () => + return await Task.Run(async () => { var imageBuffer = await this.LoadImage(item); if (imageBuffer != null) @@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.DesignTools { using (var streamAndLength = await streamInterface.GetStream(null)) { - assetPath = AssetObject3D.AssetManager.StoreStream(streamAndLength.Stream, Path.GetExtension(streamInterface.FileName), false, CancellationToken.None, null).Result; + assetPath = await AssetObject3D.AssetManager.StoreStream(streamAndLength.Stream, Path.GetExtension(streamInterface.FileName), false, CancellationToken.None, null); } } diff --git a/MatterControlLib/Library/Providers/MatterControl/ComputerCollectionContainer.cs b/MatterControlLib/Library/Providers/MatterControl/ComputerCollectionContainer.cs index 2d9067cef..5a4598c1e 100644 --- a/MatterControlLib/Library/Providers/MatterControl/ComputerCollectionContainer.cs +++ b/MatterControlLib/Library/Providers/MatterControl/ComputerCollectionContainer.cs @@ -27,6 +27,7 @@ of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project. */ +using System; using System.IO; using MatterHackers.Agg; using MatterHackers.Agg.Platform; @@ -95,7 +96,24 @@ namespace MatterHackers.MatterControl.Library })); } - if (ProfileManager.Instance != null) + foreach (var drive in DriveInfo.GetDrives()) + { + this.ChildContainers.Add( + new DynamicContainerLink( + drive.Name, + StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), + StaticData.Instance.LoadIcon(Path.Combine("Library", "hard-drive.png")), + () => new FileSystemContainer(drive.RootDirectory.FullName) + { + UseIncrementedNameDuringTypeChange = true, + DefaultSort = new LibrarySortBehavior() + { + SortKey = SortKey.ModifiedDate, + } + })); + } + + if (ProfileManager.Instance != null) { var userDirectory = ProfileManager.Instance.UserProfilesDirectory; var libraryFiles = Directory.GetFiles(userDirectory, "*.library"); diff --git a/MatterControlLib/PartPreviewWindow/View3D/CameraFittingUtil.cs b/MatterControlLib/PartPreviewWindow/View3D/CameraFittingUtil.cs index 348da3146..494cda11b 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/CameraFittingUtil.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/CameraFittingUtil.cs @@ -79,13 +79,13 @@ namespace MatterHackers const double OrthographicLargeZRangeScaledDistanceBetweenNearAndObject = 1.0; #endif - public struct Result + public struct FitResult { public Vector3 CameraPosition; public double OrthographicViewspaceHeight; } - public static Result ComputeOrthographicCameraFit(WorldView world, double centerOffsetX, double zNear, double zFar, AxisAlignedBoundingBox worldspaceAABB) + public static FitResult ComputeOrthographicCameraFit(WorldView world, double centerOffsetX, double zNear, double zFar, AxisAlignedBoundingBox worldspaceAABB) { Vector3[] worldspacePoints = worldspaceAABB.GetCorners(); Vector3[] viewspacePoints = worldspacePoints.Select(x => x.TransformPosition(world.ModelviewMatrix)).ToArray(); @@ -138,10 +138,10 @@ namespace MatterHackers #endif Vector3 worldspaceCameraPosition = viewspaceCameraPosition.TransformPosition(world.InverseModelviewMatrix); - return new Result { CameraPosition = worldspaceCameraPosition, OrthographicViewspaceHeight = targetViewspaceSize.Y }; + return new FitResult { CameraPosition = worldspaceCameraPosition, OrthographicViewspaceHeight = targetViewspaceSize.Y }; } - public static Result ComputePerspectiveCameraFit(WorldView world, double centerOffsetX, AxisAlignedBoundingBox worldspaceAABB) + public static FitResult ComputePerspectiveCameraFit(WorldView world, double centerOffsetX, AxisAlignedBoundingBox worldspaceAABB) { System.Diagnostics.Debug.Assert(!world.IsOrthographic); @@ -169,7 +169,7 @@ namespace MatterHackers switch (PerspectiveFittingAlgorithm) { case EPerspectiveFittingAlgorithm.TrialAndError: - return new Result { CameraPosition = TryPerspectiveCameraFitByIterativeAdjust(world, centerOffsetX, worldspaceAABB) }; + return new FitResult { CameraPosition = TryPerspectiveCameraFitByIterativeAdjust(world, centerOffsetX, worldspaceAABB) }; case EPerspectiveFittingAlgorithm.Sphere: default: viewspaceCameraPosition = PerspectiveCameraFitToSphere(reducedWorld, viewspaceCenter, viewspacePoints); @@ -188,7 +188,7 @@ namespace MatterHackers break; } - return new Result { CameraPosition = viewspaceCameraPosition.TransformPosition(world.InverseModelviewMatrix) }; + return new FitResult { CameraPosition = viewspaceCameraPosition.TransformPosition(world.InverseModelviewMatrix) }; } static bool NeedsToBeSmaller(RectangleDouble partScreenBounds, RectangleDouble goalBounds) diff --git a/MatterControlLib/PartPreviewWindow/View3D/TrackballTumbleWidgetExtended.cs b/MatterControlLib/PartPreviewWindow/View3D/TrackballTumbleWidgetExtended.cs index 22bf75643..569e78b07 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/TrackballTumbleWidgetExtended.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/TrackballTumbleWidgetExtended.cs @@ -551,22 +551,22 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // Using fake values for near/far. // ComputeOrthographicCameraFit may move the camera to wherever as long as the scene is centered, then // GetNearFar will figure out the near/far planes in the next projection update. - CameraFittingUtil.Result result = CameraFittingUtil.ComputeOrthographicCameraFit(world, CenterOffsetX, 0, 1, box); + CameraFittingUtil.FitResult fitResult = CameraFittingUtil.ComputeOrthographicCameraFit(world, CenterOffsetX, 0, 1, box); WorldView tempWorld = new WorldView(world.Width, world.Height); - tempWorld.CalculateOrthogrphicMatrixOffCenterWithViewspaceHeight(world.Width, world.Height, CenterOffsetX, result.OrthographicViewspaceHeight, 0, 1); + tempWorld.CalculateOrthogrphicMatrixOffCenterWithViewspaceHeight(world.Width, world.Height, CenterOffsetX, fitResult.OrthographicViewspaceHeight, 0, 1); double endViewspaceHeight = tempWorld.NearPlaneHeightInViewspace; double startViewspaceHeight = world.NearPlaneHeightInViewspace; AnimateOrthographicTranslationAndHeight( world.EyePosition, startViewspaceHeight, - result.CameraPosition, endViewspaceHeight + fitResult.CameraPosition, endViewspaceHeight ); } else { - CameraFittingUtil.Result result = CameraFittingUtil.ComputePerspectiveCameraFit(world, CenterOffsetX, box); - AnimateTranslation(result.CameraPosition, world.EyePosition); + CameraFittingUtil.FitResult fitResult = CameraFittingUtil.ComputePerspectiveCameraFit(world, CenterOffsetX, box); + AnimateTranslation(fitResult.CameraPosition, world.EyePosition); } } diff --git a/Program.cs b/Program.cs index 2993eac33..b586f5cb0 100644 --- a/Program.cs +++ b/Program.cs @@ -69,8 +69,6 @@ namespace MatterHackers.MatterControl private static RaygunClient _raygunClient; - - [DllImport("Shcore.dll")] static extern int SetProcessDpiAwareness(int PROCESS_DPI_AWARENESS); diff --git a/StaticData/Icons/Library/hard-drive.png b/StaticData/Icons/Library/hard-drive.png new file mode 100644 index 000000000..ca0582b1a Binary files /dev/null and b/StaticData/Icons/Library/hard-drive.png differ diff --git a/StaticData/Icons/Library/hard-drive.svg b/StaticData/Icons/Library/hard-drive.svg new file mode 100644 index 000000000..d86b517a8 --- /dev/null +++ b/StaticData/Icons/Library/hard-drive.svg @@ -0,0 +1,4 @@ + + + + diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 90fc0d026..8dcbd0956 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 90fc0d026d710888e4ed65adc57c28f239334f09 +Subproject commit 8dcbd095680bdf8c1c3b99dd2bf9b0d48cecb443