public PartPreviewMainWindow(PrintItemWrapper printItem, View3DWidget.AutoRotate autoRotate3DView, View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) : base(750, 550) { UseOpenGL = true; string partPreviewTitle = LocalizedString.Get("MatterControl"); Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name); this.Name = "Part Preview Window"; partPreviewWidget = new PartPreviewContent(printItem, View3DWidget.WindowMode.StandAlone, autoRotate3DView, openMode); partPreviewWidget.Closed += (sender, e) => { Close(); }; this.AddChild(partPreviewWidget); AddHandlers(); Width = 750; Height = 550; MinimumSize = new Vector2(400, 300); ShowAsSystemWindow(); }
public static async void AutoArrangeChildren(this InteractiveScene scene, View3DWidget view3DWidget) { await Task.Run(() => { PlatingHelper.ArrangeOnBed(scene.Children.ToList(), scene, view3DWidget.BedCenter); }); }
public SnappingIndicators(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { this.view3DWidget = view3DWidget; this.DrawOnTop = true; MeshViewerToDrawWith.AfterDraw += new DrawEventHandler(MeshViewerToDrawWith_Draw); }
public SnappingIndicators(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { this.view3DWidget = view3DWidget; this.DrawOnTop = true; MeshViewerToDrawWith.DrawAfter += new DrawEventHandler(MeshViewerToDrawWith_Draw); }
public PartPreviewMainWindow(PrintItemWrapper printItem, View3DWidget.AutoRotate autoRotate3DView, View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) : base(690, 340) { UseOpenGL = true; string partPreviewTitle = LocalizedString.Get("MatterControl"); Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name); partPreviewWidget = new PartPreviewContent(printItem, View3DWidget.WindowMode.StandAlone, autoRotate3DView, openMode); partPreviewWidget.Closed += (sender, e) => { Close(); }; #if __ANDROID__ TerminalWidget terminalWidget = new TerminalWidget(true); this.AddChild(new SoftKeyboardContentOffset(partPreviewWidget, SoftKeyboardContentOffset.AndroidKeyboardOffset)); //mainContainer.Closed += (sender, e) => { Close(); }; #else this.AddChild(partPreviewWidget); #endif AddHandlers(); Width = 640; Height = 480; MinimumSize = new Vector2(400, 300); ShowAsSystemWindow(); }
public TransformUndoCommand(View3DWidget view3DWidget, int meshGroupIndex, Matrix4X4 undoTransform, Matrix4X4 redoTransform) { this.view3DWidget = view3DWidget; this.meshGroupIndex = meshGroupIndex; this.undoTransform = undoTransform; this.redoTransform = redoTransform; }
public ArangeUndoCommand(View3DWidget view3DWidget, List<Matrix4X4> preArrangeTarnsforms, List<Matrix4X4> postArrangeTarnsforms) { for(int i=0; i<preArrangeTarnsforms.Count; i++) { allUndoTransforms.Add(new TransformUndoCommand(view3DWidget, i, preArrangeTarnsforms[i], postArrangeTarnsforms[i])); } }
public TransformUndoCommand(View3DWidget view3DWidget, int meshGroupIndex, Matrix4X4 undoTransform, Matrix4X4 redoTransform) { this.view3DWidget = view3DWidget; this.meshGroupIndex = meshGroupIndex; this.undoTransform = undoTransform; this.redoTransform = redoTransform; }
public UpArrow3D(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { heightDisplay = new HeightValueDisplay(view3DWidget); heightDisplay.Visible = false; DrawOnTop = true; this.view3DWidget = view3DWidget; string arrowFile = Path.Combine("Icons", "3D Icons", "up_pointer.stl"); if (StaticData.Instance.FileExists(arrowFile)) { using (Stream staticDataStream = StaticData.Instance.OpenSteam(arrowFile)) { using (MemoryStream arrowStream = new MemoryStream()) { staticDataStream.CopyTo(arrowStream, 1 << 16); List<MeshGroup> loadedMeshGroups = MeshFileIo.Load(arrowStream, Path.GetExtension(arrowFile)); upArrow = loadedMeshGroups[0].Meshes[0]; CollisionVolume = PlatingHelper.CreateTraceDataForMesh(upArrow); //CollisionVolume = new CylinderShape(arrowBounds.XSize / 2, arrowBounds.ZSize, new SolidMaterial(RGBA_Floats.Red, .5, 0, .4)); //CollisionVolume = new CylinderShape(arrowBounds.XSize / 2 * 4, arrowBounds.ZSize * 4, new SolidMaterial(RGBA_Floats.Red, .5, 0, .4)); } } } }
public ArrangeUndoCommand(View3DWidget view3DWidget, List <Matrix4X4> preArrangeTarnsforms, List <Matrix4X4> postArrangeTarnsforms) { for (int i = 0; i < preArrangeTarnsforms.Count; i++) { //a llUndoTransforms.Add(new TransformUndoCommand(view3DWidget, i, preArrangeTarnsforms[i], postArrangeTarnsforms[i])); } }
public UpArrow3D(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { heightDisplay = new HeightValueDisplay(view3DWidget); heightDisplay.Visible = false; DrawOnTop = true; this.view3DWidget = view3DWidget; string arrowFile = Path.Combine("Icons", "3D Icons", "up_pointer.stl"); if (StaticData.Instance.FileExists(arrowFile)) { using (Stream staticDataStream = StaticData.Instance.OpenSteam(arrowFile)) { using (MemoryStream arrowStream = new MemoryStream()) { staticDataStream.CopyTo(arrowStream, 1 << 16); List <MeshGroup> loadedMeshGroups = MeshFileIo.Load(arrowStream, Path.GetExtension(arrowFile)); upArrow = loadedMeshGroups[0].Meshes[0]; CollisionVolume = PlatingHelper.CreateTraceDataForMesh(upArrow); //CollisionVolume = new CylinderShape(arrowBounds.XSize / 2, arrowBounds.ZSize, new SolidMaterial(RGBA_Floats.Red, .5, 0, .4)); //CollisionVolume = new CylinderShape(arrowBounds.XSize / 2 * 4, arrowBounds.ZSize * 4, new SolidMaterial(RGBA_Floats.Red, .5, 0, .4)); } } } }
public CopyUndoCommand(View3DWidget view3DWidget, int newItemIndex) { this.view3DWidget = view3DWidget; this.newItemIndex = newItemIndex; meshGroupThatWasDeleted = view3DWidget.MeshGroups[newItemIndex]; newItemTransform = view3DWidget.MeshGroupTransforms[newItemIndex]; newItemPlatingData = view3DWidget.MeshGroupExtraData[newItemIndex]; }
public DeleteUndoCommand(View3DWidget view3DWidget, int deletedIndex) { this.view3DWidget = view3DWidget; this.deletedIndex = deletedIndex; meshGroupThatWasDeleted = view3DWidget.MeshGroups[deletedIndex]; deletedTransform = view3DWidget.MeshGroupTransforms[deletedIndex]; deletedPlatingData = view3DWidget.MeshGroupExtraData[deletedIndex]; }
public DeleteUndoCommand(View3DWidget view3DWidget, int deletedIndex) { this.view3DWidget = view3DWidget; this.deletedIndex = deletedIndex; meshGroupThatWasDeleted = view3DWidget.MeshGroups[deletedIndex]; deletedTransform = view3DWidget.MeshGroupTransforms[deletedIndex]; deletedPlatingData = view3DWidget.MeshGroupExtraData[deletedIndex]; }
public CopyUndoCommand(View3DWidget view3DWidget, int newItemIndex) { this.view3DWidget = view3DWidget; this.newItemIndex = newItemIndex; meshGroupThatWasDeleted = view3DWidget.MeshGroups[newItemIndex]; newItemTransform = view3DWidget.MeshGroupTransforms[newItemIndex]; newItemPlatingData = view3DWidget.MeshGroupExtraData[newItemIndex]; }
public DragDropLoadProgress(View3DWidget view3DWidget, IObject3D trackingObject, ThemeConfig theme) { this.TrackingObject = trackingObject; this.view3DWidget = view3DWidget; view3DWidget.AfterDraw += View3DWidget_AfterDraw; progressBar = new ProgressBar(80 * GuiWidget.DeviceScale, 15 * GuiWidget.DeviceScale) { FillColor = theme.PrimaryAccentColor, }; }
public DragDropLoadProgress(View3DWidget view3DWidget, IObject3D trackingObject) { this.TrackingObject = trackingObject; this.view3DWidget = view3DWidget; view3DWidget.AfterDraw += View3DWidget_AfterDraw; progressBar = new ProgressBar(80, 15) { FillColor = ActiveTheme.Instance.PrimaryAccentColor, }; }
public HeightValueDisplay(View3DWidget view3DWidget) { BackgroundColor = new RGBA_Bytes(RGBA_Bytes.White, 150); this.view3DWidget = view3DWidget; view3DWidget.meshViewerWidget.AddChild(this); VAnchor = VAnchor.FitToChildren; HAnchor = HAnchor.FitToChildren; MeshViewerToDrawWith.DrawAfter += new DrawEventHandler(MeshViewerToDrawWith_Draw); }
public HeightValueDisplay(View3DWidget view3DWidget) { BackgroundColor = new RGBA_Bytes(RGBA_Bytes.White, 150); this.view3DWidget = view3DWidget; view3DWidget.meshViewerWidget.AddChild(this); VAnchor = VAnchor.FitToChildren; HAnchor = HAnchor.FitToChildren; MeshViewerToDrawWith.AfterDraw += MeshViewerToDrawWith_Draw; }
public HeightValueDisplay(View3DWidget view3DWidget) { BackgroundColor = new RGBA_Bytes(RGBA_Bytes.White, 150); this.view3DWidget = view3DWidget; view3DWidget.meshViewerWidget.AddChild(this); numberDisplay = new TextWidget("00.00", pointSize: 8); numberDisplay.Margin = new BorderDouble(3, 2); numberDisplay.AutoExpandBoundsToText = true; AddChild(numberDisplay); VAnchor = VAnchor.FitToChildren; HAnchor = HAnchor.FitToChildren; MeshViewerToDrawWith.DrawAfter += new DrawEventHandler(MeshViewerToDrawWith_Draw); }
public HeightValueDisplay(View3DWidget view3DWidget) { BackgroundColor = new RGBA_Bytes(RGBA_Bytes.White, 150); this.view3DWidget = view3DWidget; view3DWidget.meshViewerWidget.AddChild(this); numberDisplay = new TextWidget("00.00", pointSize: 8); numberDisplay.Margin = new BorderDouble(3, 2); numberDisplay.AutoExpandBoundsToText = true; AddChild(numberDisplay); VAnchor = VAnchor.FitToChildren; HAnchor = HAnchor.FitToChildren; MeshViewerToDrawWith.TrackballTumbleWidget.DrawGlContent += TrackballTumbleWidget_DrawGlContent; MeshViewerToDrawWith.DrawAfter += new DrawEventHandler(MeshViewerToDrawWith_Draw); }
public DragDropLoadProgress(View3DWidget view3DWidget, IObject3D trackingObject, ThemeConfig theme) { this.theme = theme; this.TrackingObject = trackingObject; this.view3DWidget = view3DWidget; view3DWidget.AfterDraw += View3DWidget_AfterDraw; var height = 12; progressBar = new ProgressBar(80 * GuiWidget.DeviceScale, height * GuiWidget.DeviceScale) { FillColor = theme.PrimaryAccentColor, BackgroundColor = theme.BackgroundColor, BackgroundRadius = height / 2 * GuiWidget.DeviceScale, BackgroundOutlineWidth = 1 * GuiWidget.DeviceScale, BorderColor = theme.TextColor, }; }
public PartPreviewContent(PrintItemWrapper printItem, View3DWidget.WindowMode windowMode, View3DWidget.AutoRotate autoRotate3DView, View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) { this.openMode = openMode; this.autoRotate3DView = autoRotate3DView; this.windowMode = windowMode; BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; this.AnchorAll(); this.Load(printItem); // We do this after showing the system window so that when we try and take focus of the parent window (the system window) // it exists and can give the focus to its child the gcode window. if (printItem != null && Path.GetExtension(printItem.FileLocation).ToUpper() == ".GCODE") { SwitchToGcodeView(); } }
public MirrorControls(View3DWidget view3DWidget) : base(FlowDirection.TopToBottom) { this.view3DWidget = view3DWidget; // put in the mirror options { expandMirrorOptions = view3DWidget.ExpandMenuOptionFactory.GenerateCheckBoxButton("Mirror".Localize().ToUpper(), "icon_arrow_right_no_border_32x32.png", "icon_arrow_down_no_border_32x32.png"); expandMirrorOptions.Margin = new BorderDouble(bottom: 2); this.AddChild(expandMirrorOptions); mirrorOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); mirrorOptionContainer.HAnchor = HAnchor.ParentLeftRight; mirrorOptionContainer.Visible = false; this.AddChild(mirrorOptionContainer); AddMirrorControls(mirrorOptionContainer); } expandMirrorOptions.CheckedStateChanged += expandMirrorOptions_CheckedStateChanged; }
public ScaleControls(View3DWidget view3DWidget) : base(FlowDirection.TopToBottom) { this.view3DWidget = view3DWidget; { expandScaleOptions = view3DWidget.ExpandMenuOptionFactory.GenerateCheckBoxButton("Scale".Localize().ToUpper(), StaticData.Instance.LoadIcon("icon_arrow_right_no_border_32x32.png", 32, 32).InvertLightness()); expandScaleOptions.Margin = new BorderDouble(bottom: 2); this.AddChild(expandScaleOptions); scaleOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); scaleOptionContainer.HAnchor = HAnchor.ParentLeftRight; scaleOptionContainer.Visible = false; this.AddChild(scaleOptionContainer); AddScaleControls(scaleOptionContainer); } expandScaleOptions.CheckedStateChanged += expandScaleOptions_CheckedStateChanged; view3DWidget.SelectedTransformChanged += OnSelectedTransformChanged; }
public MirrorControls(View3DWidget view3DWidget) : base(FlowDirection.TopToBottom) { this.view3DWidget = view3DWidget; // put in the mirror options { expandMirrorOptions = view3DWidget.ExpandMenuOptionFactory.GenerateCheckBoxButton("Mirror".Localize().ToUpper(), "icon_arrow_right_no_border_32x32.png", "icon_arrow_down_no_border_32x32.png"); expandMirrorOptions.Margin = new BorderDouble(bottom: 2); this.AddChild(expandMirrorOptions); mirrorOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); mirrorOptionContainer.HAnchor = HAnchor.ParentLeftRight; mirrorOptionContainer.Visible = false; this.AddChild(mirrorOptionContainer); AddMirrorControls(mirrorOptionContainer); } expandMirrorOptions.CheckedStateChanged += expandMirrorOptions_CheckedStateChanged; }
public ScaleControls(View3DWidget view3DWidget) : base(FlowDirection.TopToBottom) { this.view3DWidget = view3DWidget; { expandScaleOptions = view3DWidget.ExpandMenuOptionFactory.GenerateCheckBoxButton("Scale".Localize().ToUpper(), "icon_arrow_right_no_border_32x32.png", "icon_arrow_down_no_border_32x32.png"); expandScaleOptions.Margin = new BorderDouble(bottom: 2); this.AddChild(expandScaleOptions); scaleOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); scaleOptionContainer.HAnchor = HAnchor.ParentLeftRight; scaleOptionContainer.Visible = false; this.AddChild(scaleOptionContainer); AddScaleControls(scaleOptionContainer); } expandScaleOptions.CheckedStateChanged += expandScaleOptions_CheckedStateChanged; view3DWidget.SelectedTransformChanged += OnSelectedTransformChanged; }
public ScaleControls(View3DWidget view3DWidget) : base(FlowDirection.TopToBottom) { this.view3DWidget = view3DWidget; { expandScaleOptions = view3DWidget.ExpandMenuOptionFactory.GenerateCheckBoxButton("Scale".Localize().ToUpper(), View3DWidget.ArrowRight, View3DWidget.ArrowDown); expandScaleOptions.Margin = new BorderDouble(bottom: 2); this.AddChild(expandScaleOptions); scaleOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); scaleOptionContainer.HAnchor = HAnchor.ParentLeftRight; scaleOptionContainer.Visible = false; this.AddChild(scaleOptionContainer); AddScaleControls(scaleOptionContainer); } expandScaleOptions.CheckedStateChanged += expandScaleOptions_CheckedStateChanged; view3DWidget.SelectedTransformChanged += OnSelectedTransformChanged; }
public SelectedObjectPanel(View3DWidget view3DWidget, BedConfig sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Top | VAnchor.Fit; this.Padding = 0; this.view3DWidget = view3DWidget; this.theme = theme; this.sceneContext = sceneContext; this.ContentPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, }; var scrollable = new ScrollableWidget(true) { Name = "editorPanel", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; scrollable.AddChild(this.ContentPanel); scrollable.ScrollArea.HAnchor = HAnchor.Stretch; this.AddChild(scrollable); var toolbar = new LeftClipFlowLayoutWidget() { BackgroundColor = theme.TabBodyBackground, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit }; var scene = sceneContext.Scene; // put in a make permanent button var icon = AggContext.StaticData.LoadIcon("fa-check_16.png", 16, 16, theme.InvertIcons).SetPreMultiply(); var applyButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, ToolTipText = "Apply operation and make permanent".Localize() }; applyButton.Click += (s, e) => { this.item.Apply(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; }; scene.SelectionChanged += (s, e) => applyButton.Enabled = scene.SelectedItem?.CanApply == true; toolbar.AddChild(applyButton); // put in a remove button var removeButton = new IconButton(AggContext.StaticData.LoadIcon("close.png", 16, 16, theme.InvertIcons), theme) { Margin = theme.ButtonSpacing, ToolTipText = "Remove operation from parts".Localize() }; removeButton.Click += (s, e) => { item.Remove(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; }; scene.SelectionChanged += (s, e) => removeButton.Enabled = scene.SelectedItem?.CanRemove == true; toolbar.AddChild(removeButton); var overflowButton = new OverflowBar.OverflowMenuButton(theme); overflowButton.PopupBorderColor = ApplicationController.Instance.MenuTheme.GetBorderColor(120); overflowButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var menuItem = popupMenu.CreateMenuItem("Rename"); menuItem.Click += (s, e) => { DialogWindow.Show( new InputBoxPage( "Rename Item".Localize(), "Name".Localize(), item.Name, "Enter New Name Here".Localize(), "Rename".Localize(), (newName) => { item.Name = newName; editorSectionWidget.Text = newName; })); }; popupMenu.CreateHorizontalLine(); if (true) //allowOperations) { var selectedItemType = item.GetType(); var selectedItem = item; foreach (var nodeOperation in ApplicationController.Instance.Graph.Operations) { foreach (var type in nodeOperation.MappedTypes) { if (type.IsAssignableFrom(selectedItemType) && (nodeOperation.IsVisible?.Invoke(selectedItem) != false) && nodeOperation.IsEnabled?.Invoke(selectedItem) != false) { var button = popupMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke()?.CreateScaledImage(16, 16)); button.Click += (s, e) => { nodeOperation.Operation(selectedItem, sceneContext.Scene).ConfigureAwait(false); }; } } } } return(popupMenu); }; toolbar.AddChild(overflowButton); editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = new BorderDouble(top: 10) }; // Wrap editorPanel with scrollable container var scrollableWidget = new ScrollableWidget(true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; scrollableWidget.AddChild(editorPanel); scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; editorSectionWidget = new ResizableSectionWidget("Editor", sceneContext.ViewState.SelectedObjectEditorHeight, scrollableWidget, theme, serializationKey: UserSettingsKey.EditorPanelExpanded, rightAlignedContent: toolbar, defaultExpansion: true) { VAnchor = VAnchor.Fit, }; editorSectionWidget.Resized += (s, e) => { sceneContext.ViewState.SelectedObjectEditorHeight = editorSectionWidget.ResizeContainer.Height; }; this.ContentPanel.AddChild(editorSectionWidget); var colorSection = new SectionWidget( "Color".Localize(), new ColorSwatchSelector(scene, theme, buttonSize: 16, buttonSpacing: new BorderDouble(1, 1, 0, 0)) { Margin = new BorderDouble(left: 10) }, theme, serializationKey: UserSettingsKey.ColorPanelExpanded) { Name = "Color Panel", }; this.ContentPanel.AddChild(colorSection); var materialsSection = new SectionWidget("Materials".Localize(), new MaterialControls(scene, theme), theme, serializationKey: UserSettingsKey.MaterialsPanelExpanded) { Name = "Materials Panel", }; this.ContentPanel.AddChild(materialsSection); // Enforce panel padding in sidebar foreach (var sectionWidget in this.ContentPanel.Children <SectionWidget>()) { // Special case for editorResizeWrapper due to ResizeContainer if (sectionWidget is ResizableSectionWidget resizableSectionWidget) { // Apply padding to ResizeContainer not wrapper resizableSectionWidget.ResizeContainer.Padding = new BorderDouble(10, 10, 10, 0); } else { sectionWidget.ContentPanel.Padding = new BorderDouble(10, 10, 10, 0); sectionWidget.ExpandableWhenDisabled = true; sectionWidget.Enabled = false; } } }
private void OpenPartPreviewWindow(View3DWidget.AutoRotate autoRotate) { if (partPreviewWindow == null) { partPreviewWindow = new PartPreviewMainWindow(this.PrintItem, autoRotate); partPreviewWindow.Closed += new EventHandler(PartPreviewWindow_Closed); } else { partPreviewWindow.BringToFront(); } }
public SelectedObjectPanel(View3DWidget view3DWidget, ISceneContext sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Top | VAnchor.Fit; this.Padding = 0; this.view3DWidget = view3DWidget; this.theme = theme; this.sceneContext = sceneContext; var toolbar = new LeftClipFlowLayoutWidget() { BackgroundColor = theme.BackgroundColor, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit }; scene = sceneContext.Scene; // put in a make permanent button var icon = AggContext.StaticData.LoadIcon("noun_766157.png", 16, 16, theme.InvertIcons).SetPreMultiply(); flattenButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, ToolTipText = "Flatten".Localize(), Enabled = true }; flattenButton.Click += (s, e) => { if (this.item.CanFlatten) { var item = this.item; using (new SelectionMaintainer(view3DWidget.Scene)) { item.Flatten(view3DWidget.Scene.UndoBuffer); } } else { // try to ungroup it sceneContext.Scene.UngroupSelection(); } }; toolbar.AddChild(flattenButton); // put in a remove button removeButton = new IconButton(AggContext.StaticData.LoadIcon("remove.png", 16, 16, theme.InvertIcons), theme) { Margin = theme.ButtonSpacing, ToolTipText = "Delete".Localize(), Enabled = scene.SelectedItem != null }; removeButton.Click += (s, e) => { var item = this.item; using (new SelectionMaintainer(view3DWidget.Scene)) { item.Remove(view3DWidget.Scene.UndoBuffer); } }; toolbar.AddChild(removeButton); primaryActionsPanel = new FlowLayoutWidget() { HAnchor = HAnchor.Fit, VAnchor = VAnchor.Center | VAnchor.Fit }; toolbar.AddChild(primaryActionsPanel); overflowButton = new OverflowBar.OverflowMenuButton(theme) { Enabled = scene.SelectedItem != null, }; overflowButton.DynamicPopupContent = () => { var remainingOperations = ApplicationController.Instance.Graph.Operations.Values.Except(primaryActions); return(ApplicationController.Instance.GetActionMenuForSceneItem(item, sceneContext.Scene, false, remainingOperations)); }; toolbar.AddChild(overflowButton); editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Name = "editorPanel", Padding = new BorderDouble(right: theme.DefaultContainerPadding + 1) }; // Wrap editorPanel with scrollable container var scrollableWidget = new ScrollableWidget(true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; scrollableWidget.AddChild(editorPanel); scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; editorSectionWidget = new SectionWidget(editorTitle, scrollableWidget, theme, toolbar, expandingContent: false, defaultExpansion: true, setContentVAnchor: false) { VAnchor = VAnchor.Stretch }; this.AddChild(editorSectionWidget); this.ContentPanel = editorPanel; editorPanel.Padding = new BorderDouble(theme.DefaultContainerPadding, 0); // Register listeners scene.SelectionChanged += Scene_SelectionChanged; }
private void Load(PrintItemWrapper printItem) { tabControl = new TabControl(); tabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0); tabControl.TabBar.Padding = new BorderDouble(top: 6); RGBA_Bytes selectedTabColor; if (ActiveTheme.Instance.DisplayMode == ActiveTheme.ApplicationDisplayType.Responsive) { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; selectedTabColor = ActiveTheme.Instance.TabLabelSelected; } else { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.TransparentLightOverlay; selectedTabColor = ActiveTheme.Instance.SecondaryAccentColor; } double buildHeight = ActiveSliceSettings.Instance.BuildHeight; // put in the 3D view partPreviewView = new View3DWidget(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, windowMode, autoRotate3DView, openMode); TabPage partPreview3DView = new TabPage(partPreviewView, string.Format("3D {0} ", "View".Localize()).ToUpper()); // put in the gcode view ViewGcodeBasic.WindowMode gcodeWindowMode = ViewGcodeBasic.WindowMode.Embeded; if (windowMode == View3DWidget.WindowMode.StandAlone) { gcodeWindowMode = ViewGcodeBasic.WindowMode.StandAlone; } viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, gcodeWindowMode); if (windowMode == View3DWidget.WindowMode.StandAlone) { partPreviewView.Closed += (s, e) => Close(); viewGcodeBasic.Closed += (s, e) => Close(); } layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View").ToUpper()); int tabPointSize = 16; // add the correct tabs based on whether we are stand alone or embedded Tab threeDViewTab; Tab layerViewTab; if (windowMode == View3DWidget.WindowMode.StandAlone || OsInformation.OperatingSystem == OSType.Android) { threeDViewTab = new SimpleTextTabWidget(partPreview3DView, "3D View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(threeDViewTab); layerViewTab = new SimpleTextTabWidget(layerView, "Layer View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(layerViewTab); } else { threeDViewTab = new PopOutTextTabWidget(partPreview3DView, "3D View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(threeDViewTab); layerViewTab = new PopOutTextTabWidget(layerView, "Layer View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(layerViewTab); } threeDViewTab.ToolTipText = "Preview 3D Design".Localize(); layerViewTab.ToolTipText = "Preview layer Tool Paths".Localize(); this.AddChild(tabControl); }
public SelectionShadow(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { this.view3DWidget = view3DWidget; }
public PartTabPage(PrinterConfig printer, BedConfig sceneContext, ThemeConfig theme, string tabTitle) : base(tabTitle) { this.sceneContext = sceneContext; this.theme = theme; this.BackgroundColor = theme.ActiveTabColor; this.Padding = 0; this.printer = printer; bool isPrinterType = this is PrinterTabPage; viewControls3D = new ViewControls3D(sceneContext, theme, sceneContext.Scene.UndoBuffer, isPrinterType) { VAnchor = VAnchor.Top | VAnchor.Fit, HAnchor = HAnchor.Left | HAnchor.Stretch, Visible = true, }; theme.ApplyBottomBorder(viewControls3D, shadedBorder: (this is PrinterTabPage)); // Shade border if toolbar is secondary rather than primary viewControls3D.ResetView += (sender, e) => { if (view3DWidget.Visible) { this.view3DWidget.ResetView(); } }; viewControls3D.ExtendOverflowMenu = this.GetViewControls3DOverflowMenu; viewControls3D.OverflowButton.Name = "View3D Overflow Menu"; // The 3D model view view3DWidget = new View3DWidget( printer, sceneContext, viewControls3D, theme, this, editorType: (isPrinterType) ? MeshViewerWidget.EditorType.Printer : MeshViewerWidget.EditorType.Part); viewControls3D.SetView3DWidget(view3DWidget); // Construct and store dictionary of menu actions accessible at workspace level view3DWidget.WorkspaceActions = viewControls3D.MenuActions.Where(o => !string.IsNullOrEmpty(o.ID)).ToDictionary(o => o.ID, o => o); this.AddChild(topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); topToBottom.AddChild(leftToRight = new FlowLayoutWidget() { Name = "View3DContainerParent", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); view3DContainer = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; var toolbarAndView3DWidget = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; toolbarAndView3DWidget.AddChild(viewControls3D); toolbarAndView3DWidget.AddChild(view3DWidget); view3DContainer.AddChild(toolbarAndView3DWidget); leftToRight.AddChild(view3DContainer); view3DWidget.BackgroundColor = ActiveTheme.Instance.TertiaryBackgroundColor; if (sceneContext.World.RotationMatrix == Matrix4X4.Identity) { this.view3DWidget.ResetView(); } this.AnchorAll(); }
public PartTabPage(PartWorkspace workspace, ThemeConfig theme, string tabTitle) : base(tabTitle) { this.sceneContext = workspace.SceneContext; this.theme = theme; this.BackgroundColor = theme.BackgroundColor; this.Padding = 0; this.Workspace = workspace; bool isPrinterType = this is PrinterTabPage; var favoritesBarAndView3DWidget = new FlowLayoutWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; viewControls3D = new ViewControls3D(workspace, theme, sceneContext.Scene.UndoBuffer, isPrinterType, !(this is PrinterTabPage)) { VAnchor = VAnchor.Top | VAnchor.Fit, HAnchor = HAnchor.Left | HAnchor.Stretch, Visible = true, }; // Shade border if toolbar is secondary rather than primary theme.ApplyBottomBorder(viewControls3D, shadedBorder: this is PrinterTabPage); viewControls3D.ResetView += (sender, e) => { if (view3DWidget.Visible) { this.view3DWidget.ResetView(); } }; viewControls3D.ExtendOverflowMenu = this.GetViewControls3DOverflowMenu; viewControls3D.OverflowButton.Name = "View3D Overflow Menu"; // The 3D model view view3DWidget = new View3DWidget( Printer, sceneContext, viewControls3D, theme, this, editorType: isPrinterType ? Object3DControlsLayer.EditorType.Printer : Object3DControlsLayer.EditorType.Part); viewControls3D.SetView3DWidget(view3DWidget); this.AddChild(topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); topToBottom.AddChild(leftToRight = new FlowLayoutWidget() { Name = "View3DContainerParent", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); view3DContainer = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; var toolbarAndView3DWidget = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; toolbarAndView3DWidget.AddChild(viewControls3D); var favoritesBarContext = new LibraryConfig() { ActiveContainer = ApplicationController.Instance.Library.RootLibaryContainer }; var leftBar = new GuiWidget() { VAnchor = VAnchor.Stretch, HAnchor = HAnchor.Fit, Border = new BorderDouble(top: 1, right: 1), BorderColor = theme.BorderColor20, }; favoritesBarAndView3DWidget.AddChild(leftBar); bool expanded = UserSettings.Instance.get(UserSettingsKey.FavoritesBarExpansion) != "0"; favoritesBar = new LibraryListView(favoritesBarContext, theme) { Name = "LibraryView", // Drop containers ContainerFilter = (container) => false, // HAnchor = HAnchor.Fit, HAnchor = HAnchor.Absolute, VAnchor = VAnchor.Stretch, AllowContextMenu = false, ActiveSort = SortKey.ModifiedDate, Ascending = true, // restore to state for favorites bar size Width = expanded ? 55 * GuiWidget.DeviceScale : 33 * GuiWidget.DeviceScale, ListContentView = new IconView(theme, expanded ? 48 * GuiWidget.DeviceScale : 24 * GuiWidget.DeviceScale) { VAnchor = VAnchor.Fit | VAnchor.Top }, }; // favoritesBar.ScrollArea.HAnchor = HAnchor.Fit; favoritesBar.ListContentView.HAnchor = HAnchor.Fit; leftBar.AddChild(favoritesBar); void UpdateWidth(object s, EventArgs e) { if (s is GuiWidget widget) { favoritesBar.Width = widget.Width; } } favoritesBar.ListContentView.BoundsChanged += UpdateWidth; favoritesBar.ScrollArea.VAnchor = VAnchor.Fit; favoritesBar.VerticalScrollBar.Show = ScrollBar.ShowState.Never; var expandedImage = StaticData.Instance.LoadIcon("expand.png", 16, 16).SetToColor(theme.TextColor); var collapsedImage = StaticData.Instance.LoadIcon("collapse.png", 16, 16).SetToColor(theme.TextColor); var expandBarButton = new IconButton(expanded ? collapsedImage : expandedImage, theme) { HAnchor = HAnchor.Center, VAnchor = VAnchor.Absolute | VAnchor.Bottom, Margin = new BorderDouble(bottom: 3, top: 3), Height = theme.ButtonHeight - 6 * GuiWidget.DeviceScale, Width = theme.ButtonHeight - 6 * GuiWidget.DeviceScale, ToolTipText = expanded ? "Reduced Width".Localize() : "Expand Width".Localize(), }; expandBarButton.Click += (s, e) => UiThread.RunOnIdle(async() => { expanded = !expanded; // remove from the one we are deleting favoritesBar.ListContentView.BoundsChanged -= UpdateWidth; UserSettings.Instance.set(UserSettingsKey.FavoritesBarExpansion, expanded ? "1" : "0"); favoritesBar.ListContentView = new IconView(theme, expanded ? 48 * GuiWidget.DeviceScale : 24 * GuiWidget.DeviceScale); favoritesBar.ListContentView.HAnchor = HAnchor.Fit; // add to the one we created favoritesBar.ListContentView.BoundsChanged += UpdateWidth; expandBarButton.SetIcon(expanded ? collapsedImage : expandedImage); expandBarButton.Invalidate(); expandBarButton.ToolTipText = expanded ? "Reduced Width".Localize() : "Expand Width".Localize(); await favoritesBar.Reload(); UpdateWidth(favoritesBar.ListContentView, null); }); leftBar.AddChild(expandBarButton); favoritesBar.Margin = new BorderDouble(bottom: expandBarButton.Height + expandBarButton.Margin.Height); favoritesBarAndView3DWidget.AddChild(view3DWidget); toolbarAndView3DWidget.AddChild(favoritesBarAndView3DWidget); view3DContainer.AddChild(toolbarAndView3DWidget); leftToRight.AddChild(view3DContainer); if (sceneContext.World.RotationMatrix == Matrix4X4.Identity) { this.view3DWidget.ResetView(); } this.AnchorAll(); }
public virtual InteractionVolume CreateInteractionVolume(View3DWidget widget) { return null; }
public PartTabPage(PrinterConfig printer, BedConfig sceneContext, ThemeConfig theme, string tabTitle) : base(tabTitle) { this.sceneContext = sceneContext; this.theme = theme; this.BackgroundColor = theme.ActiveTabColor; this.Padding = 0; this.printer = printer; bool isPrinterType = this is PrinterTabPage; viewControls3D = new ViewControls3D(sceneContext, theme, sceneContext.Scene.UndoBuffer, isPrinterType) { //BackgroundColor = new Color(0, 0, 0, theme.OverlayAlpha), VAnchor = VAnchor.Top | VAnchor.Fit, HAnchor = HAnchor.Left | HAnchor.Stretch, Visible = true, }; viewControls3D.ResetView += (sender, e) => { if (view3DWidget.Visible) { this.view3DWidget.ResetView(); } }; viewControls3D.ExtendOverflowMenu = this.GetViewControls3DOverflowMenu; viewControls3D.OverflowButton.Name = "View3D Overflow Menu"; // The 3D model view view3DWidget = new View3DWidget( printer, sceneContext, View3DWidget.AutoRotate.Disabled, viewControls3D, theme, this, editorType: (isPrinterType) ? MeshViewerWidget.EditorType.Printer : MeshViewerWidget.EditorType.Part); viewControls3D.SetView3DWidget(view3DWidget); this.AddChild(topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); topToBottom.AddChild(leftToRight = new FlowLayoutWidget() { Name = "View3DContainerParent", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); view3DContainer = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; var toolbarAndView3DWidget = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; toolbarAndView3DWidget.AddChild(viewControls3D); toolbarAndView3DWidget.AddChild(view3DWidget); view3DContainer.AddChild(toolbarAndView3DWidget); leftToRight.AddChild(view3DContainer); view3DWidget.BackgroundColor = ActiveTheme.Instance.TertiaryBackgroundColor; if (sceneContext.World.RotationMatrix == Matrix4X4.Identity) { this.view3DWidget.ResetView(); } this.AnchorAll(); }
public async void OpenPartViewWindow(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing, PrintItemWrapper printItemWrapper = null) { if (viewingWindow == null) { // Only call GetPrintItemWrapperAsync if need to avoid unneeded overhead if (printItemWrapper == null) { printItemWrapper = await this.GetPrintItemWrapperAsync(); } viewingWindow = new PartPreviewMainWindow(printItemWrapper, View3DWidget.AutoRotate.Enabled, openMode); viewingWindow.Closed += new EventHandler(PartPreviewMainWindow_Closed); } else { viewingWindow.BringToFront(); } }
void Load(PrintItemWrapper printItem) { tabControl = new TabControl(); tabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0); tabControl.TabBar.Padding = new BorderDouble(top: 6); RGBA_Bytes selectedTabColor; if (ActiveTheme.Instance.DisplayMode == ActiveTheme.ApplicationDisplayType.Responsive) { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; selectedTabColor = ActiveTheme.Instance.TabLabelSelected; } else { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.TransparentLightOverlay; selectedTabColor = ActiveTheme.Instance.SecondaryAccentColor; } View3DWidget.WindowType viewType; bool showCloseButton; if (widgetIsEmbedded) { viewType = View3DWidget.WindowType.Embeded; showCloseButton = false; } else { viewType = View3DWidget.WindowType.StandAlone; showCloseButton = true; } double buildHeight = ActiveSliceSettings.Instance.BuildHeight; // put in the 3D view { string part3DViewLabelFull = string.Format("{0} {1} ", "3D", "View".Localize()).ToUpper(); partPreviewView = new View3DWidget(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, viewType, autoRotate3DView, openInEditMode); partPreviewView.Closed += (sender, e) => { Close(); }; TabPage partPreview3DView = new TabPage(partPreviewView, part3DViewLabelFull); tabControl.AddTab(new SimpleTextTabWidget(partPreview3DView, "3D View Tab", 16, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes())); } // put in the 2d gcode view { viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, showCloseButton); viewGcodeBasic.Closed += (sender, e) => { Close(); }; layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View").ToUpper()); tabControl.AddTab(new SimpleTextTabWidget(layerView, "Layer View Tab", 16, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes())); } this.AddChild(tabControl); }
public void OpenPartViewWindow(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) { if (viewWindowIsOpen == false) { viewingWindow = new PartPreviewMainWindow(this.PrintItemWrapper, View3DWidget.AutoRotate.Enabled, openMode); this.viewWindowIsOpen = true; viewingWindow.Closed += new EventHandler(PartPreviewWindow_Closed); } else { if (viewingWindow != null) { viewingWindow.BringToFront(); } } }
public virtual GuiWidget CreateSideBarTool(View3DWidget widget) { return null; }
public SelectionShadow(View3DWidget view3DWidget) : base(null, view3DWidget.meshViewerWidget) { this.view3DWidget = view3DWidget; }
private void Load(PrintItemWrapper printItem) { tabControl = new TabControl(); tabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0); tabControl.TabBar.Padding = new BorderDouble(top: 6); RGBA_Bytes selectedTabColor; if (ActiveTheme.Instance.DisplayMode == ActiveTheme.ApplicationDisplayType.Responsive) { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; selectedTabColor = ActiveTheme.Instance.TabLabelSelected; } else { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.TransparentLightOverlay; selectedTabColor = ActiveTheme.Instance.SecondaryAccentColor; } double buildHeight = ActiveSliceSettings.Instance.BuildHeight; // put in the 3D view string part3DViewLabelFull = string.Format("{0} {1} ", "3D", "View".Localize()).ToUpper(); partPreviewView = new View3DWidget(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, windowMode, autoRotate3DView, openMode); TabPage partPreview3DView = new TabPage(partPreviewView, part3DViewLabelFull); // put in the gcode view ViewGcodeBasic.WindowMode gcodeWindowMode = ViewGcodeBasic.WindowMode.Embeded; if (windowMode == View3DWidget.WindowMode.StandAlone) { gcodeWindowMode = ViewGcodeBasic.WindowMode.StandAlone; } viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, gcodeWindowMode); if (windowMode == View3DWidget.WindowMode.StandAlone) { partPreviewView.Closed += (sender, e) => { Close(); }; viewGcodeBasic.Closed += (sender, e) => { Close(); }; } layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View").ToUpper()); int tabPointSize = 16; // add the correct tabs based on wether we are stand alone or embeded Tab threeDViewTab; Tab layerViewTab; if (windowMode == View3DWidget.WindowMode.StandAlone || OsInformation.OperatingSystem == OSType.Android) { threeDViewTab = new SimpleTextTabWidget(partPreview3DView, "3D View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(threeDViewTab); layerViewTab = new SimpleTextTabWidget(layerView, "Layer View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(layerViewTab); } else { threeDViewTab = new PopOutTextTabWidget(partPreview3DView, "3D View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(threeDViewTab); layerViewTab = new PopOutTextTabWidget(layerView, "Layer View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(layerViewTab); } threeDViewTab.ToolTipText = "Preview 3D Design".Localize(); layerViewTab.ToolTipText = "Preview layer Tool Paths".Localize(); this.AddChild(tabControl); }
private async void openPartView(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) { var printItemWrapper = await this.GetPrintItemWrapperAsync(); if (printItemWrapper != null) { string pathAndFile = printItemWrapper.FileLocation; if (File.Exists(pathAndFile)) { OpenPartViewWindow(openMode); } else { string message = String.Format("Cannot find\n'{0}'.\nWould you like to remove it from the library?", pathAndFile); StyledMessageBox.ShowMessageBox(null, message, "Item not found", StyledMessageBox.MessageType.YES_NO); } } }
public PartTabPage(PartWorkspace workspace, ThemeConfig theme, string tabTitle) : base(tabTitle) { this.sceneContext = workspace.SceneContext; this.theme = theme; this.BackgroundColor = theme.BackgroundColor; this.Padding = 0; this.printer = workspace.Printer; this.workspace = workspace; bool isPrinterType = this is PrinterTabPage; var favoritesBarAndView3DWidget = new FlowLayoutWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; viewControls3D = new ViewControls3D(workspace, theme, sceneContext.Scene.UndoBuffer, isPrinterType, !(this is PrinterTabPage)) { VAnchor = VAnchor.Top | VAnchor.Fit, HAnchor = HAnchor.Left | HAnchor.Stretch, Visible = true, }; theme.ApplyBottomBorder(viewControls3D, shadedBorder: (this is PrinterTabPage)); // Shade border if toolbar is secondary rather than primary viewControls3D.ResetView += (sender, e) => { if (view3DWidget.Visible) { this.view3DWidget.ResetView(); } }; viewControls3D.ExtendOverflowMenu = this.GetViewControls3DOverflowMenu; viewControls3D.OverflowButton.Name = "View3D Overflow Menu"; // The 3D model view view3DWidget = new View3DWidget( printer, sceneContext, viewControls3D, theme, this, editorType: (isPrinterType) ? InteractionLayer.EditorType.Printer : InteractionLayer.EditorType.Part); viewControls3D.SetView3DWidget(view3DWidget); this.AddChild(topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); topToBottom.AddChild(leftToRight = new FlowLayoutWidget() { Name = "View3DContainerParent", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }); view3DContainer = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; var toolbarAndView3DWidget = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; toolbarAndView3DWidget.AddChild(viewControls3D); var favoritesBarContext = new LibraryConfig() { ActiveContainer = ApplicationController.Instance.Library.RootLibaryContainer }; var leftBar = new GuiWidget() { VAnchor = VAnchor.Stretch, HAnchor = HAnchor.Fit, Border = new BorderDouble(top: 1, right: 1), BorderColor = theme.BorderColor20, }; favoritesBarAndView3DWidget.AddChild(leftBar); bool expanded = UserSettings.Instance.get(UserSettingsKey.FavoritesBarExpansion) != "0"; favoritesBar = new LibraryListView(favoritesBarContext, theme) { Name = "LibraryView", // Drop containers ContainerFilter = (container) => false, HAnchor = HAnchor.Absolute, VAnchor = VAnchor.Stretch, AllowContextMenu = false, // restore to state for favorites bar size Width = expanded ? 55 : 33, ListContentView = new IconView(theme, expanded ? 48 : 24) { VAnchor = VAnchor.Fit | VAnchor.Top }, }; leftBar.AddChild(favoritesBar); favoritesBar.ScrollArea.VAnchor = VAnchor.Fit; var expandedImage = AggContext.StaticData.LoadIcon("expand.png", 16, 16, theme.InvertIcons); var collapsedImage = AggContext.StaticData.LoadIcon("collapse.png", 16, 16, theme.InvertIcons); var expandBarButton = new IconButton(expanded ? collapsedImage : expandedImage, theme) { HAnchor = HAnchor.Center, VAnchor = VAnchor.Absolute | VAnchor.Bottom, Margin = new BorderDouble(bottom: 3, top: 3), Height = theme.ButtonHeight - 6, Width = theme.ButtonHeight - 6 }; expandBarButton.Click += (s, e) => UiThread.RunOnIdle(() => { expanded = !expanded; UserSettings.Instance.set(UserSettingsKey.FavoritesBarExpansion, expanded ? "1" : "0"); favoritesBar.ListContentView = new IconView(theme, expanded ? 48 : 24); favoritesBar.Width = expanded ? 55 : 33; expandBarButton.SetIcon(expanded ? collapsedImage : expandedImage); expandBarButton.Invalidate(); favoritesBar.Reload().ConfigureAwait(false); }); leftBar.AddChild(expandBarButton); favoritesBar.Margin = new BorderDouble(bottom: expandBarButton.Height + expandBarButton.Margin.Height); favoritesBarAndView3DWidget.AddChild(view3DWidget); toolbarAndView3DWidget.AddChild(favoritesBarAndView3DWidget); view3DContainer.AddChild(toolbarAndView3DWidget); leftToRight.AddChild(view3DContainer); if (sceneContext.World.RotationMatrix == Matrix4X4.Identity) { this.view3DWidget.ResetView(); } this.AnchorAll(); }
public SelectedObjectPanel(View3DWidget view3DWidget, BedConfig sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Top | VAnchor.Fit; this.Padding = 0; this.view3DWidget = view3DWidget; this.theme = theme; this.sceneContext = sceneContext; this.ContentPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, }; var scrollable = new ScrollableWidget(true) { Name = "editorPanel", HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; scrollable.AddChild(this.ContentPanel); scrollable.ScrollArea.HAnchor = HAnchor.Stretch; this.AddChild(scrollable); var toolbar = new LeftClipFlowLayoutWidget() { BackgroundColor = theme.TabBodyBackground, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit }; var scene = sceneContext.Scene; // put in a make permanent button var icon = AggContext.StaticData.LoadIcon("fa-check_16.png", 16, 16, theme.InvertIcons).SetPreMultiply(); var applyButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, ToolTipText = "Apply operation and make permanent".Localize(), Enabled = scene.SelectedItem?.CanApply == true }; applyButton.Click += (s, e) => { this.item.Apply(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; }; scene.SelectionChanged += (s, e) => applyButton.Enabled = scene.SelectedItem?.CanApply == true; toolbar.AddChild(applyButton); // put in a remove button var removeButton = new IconButton(AggContext.StaticData.LoadIcon("close.png", 16, 16, theme.InvertIcons), theme) { Margin = theme.ButtonSpacing, ToolTipText = "Remove operation from parts".Localize() }; removeButton.Click += (s, e) => { var rootSelection = scene.SelectedItemRoot; item.Remove(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; if (item != rootSelection) { scene.SelectedItem = rootSelection; } }; toolbar.AddChild(removeButton); var overflowButton = new OverflowBar.OverflowMenuButton(theme); overflowButton.Enabled = scene.SelectedItem != null; scene.SelectionChanged += (s, e) => overflowButton.Enabled = scene.SelectedItem != null; overflowButton.PopupBorderColor = ApplicationController.Instance.MenuTheme.GetBorderColor(120); overflowButton.DynamicPopupContent = () => { return(ApplicationController.Instance.GetActionMenuForSceneItem(item, sceneContext.Scene)); }; toolbar.AddChild(overflowButton); editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Name = "editorPanel", Padding = new BorderDouble(right: theme.DefaultContainerPadding + 1) }; // Wrap editorPanel with scrollable container var scrollableWidget = new ScrollableWidget(true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; scrollableWidget.AddChild(editorPanel); scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; scrollableWidget.Padding = new BorderDouble(right: theme.DefaultContainerPadding * .8); editorSectionWidget = new ResizableSectionWidget("Editor", sceneContext.ViewState.SelectedObjectEditorHeight, scrollableWidget, theme, serializationKey: UserSettingsKey.EditorPanelExpanded, rightAlignedContent: toolbar, defaultExpansion: true) { VAnchor = VAnchor.Fit, }; editorSectionWidget.Resized += (s, e) => { sceneContext.ViewState.SelectedObjectEditorHeight = editorSectionWidget.ResizeContainer.Height; }; int topBottom = theme.DefaultContainerPadding / 2; editorSectionWidget.ResizeContainer.Padding = new BorderDouble(left: theme.DefaultContainerPadding, top: topBottom, bottom: topBottom + editorSectionWidget.ResizeContainer.SplitterHeight); this.ContentPanel.AddChild(editorSectionWidget); var colorSection = new SectionWidget( "Color".Localize(), new ColorSwatchSelector(scene, theme, buttonSize: 16, buttonSpacing: new BorderDouble(1, 1, 0, 0)) { Margin = new BorderDouble(left: 10) }, theme, serializationKey: UserSettingsKey.ColorPanelExpanded) { Name = "Color Panel", }; this.ContentPanel.AddChild(colorSection); var materialsSection = new SectionWidget("Materials".Localize(), new MaterialControls(scene, theme), theme, serializationKey: UserSettingsKey.MaterialsPanelExpanded) { Name = "Materials Panel", }; this.ContentPanel.AddChild(materialsSection); // Enforce panel padding in sidebar foreach (var sectionWidget in this.ContentPanel.Children <SectionWidget>()) { // Special case for editorResizeWrapper due to ResizeContainer if (sectionWidget is ResizableSectionWidget resizableSectionWidget) { // Apply padding to ResizeContainer not wrapper //resizableSectionWidget.ResizeContainer.Padding = new BorderDouble(10, 10, 10, 0); } else { sectionWidget.ContentPanel.Padding = new BorderDouble(10, 10, 10, 0); sectionWidget.ExpandableWhenDisabled = true; sectionWidget.Enabled = false; } } }
private void OpenPartPreviewWindow(View3DWidget.AutoRotate autoRotate) { if (partPreviewWindow == null) { partPreviewWindow = new PartPreviewMainWindow(this.ItemWrapper, autoRotate); partPreviewWindow.Closed += (s, e) => { this.partPreviewWindow = null; }; } else { partPreviewWindow.BringToFront(); } }
public async void OpenPartViewWindow(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing) { if (viewingWindow == null) { var printItemWrapper = await this.GetPrintItemWrapperAsync(); viewingWindow = new PartPreviewMainWindow(printItemWrapper, View3DWidget.AutoRotate.Enabled, openMode); viewingWindow.Closed += new EventHandler(PartPreviewMainWindow_Closed); } else { viewingWindow.BringToFront(); } }
public SelectedObjectPanel(View3DWidget view3DWidget, BedConfig sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Top | VAnchor.Fit; this.Padding = 0; this.view3DWidget = view3DWidget; this.theme = theme; this.sceneContext = sceneContext; var toolbar = new LeftClipFlowLayoutWidget() { BackgroundColor = theme.ActiveTabColor, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit }; var scene = sceneContext.Scene; // put in a make permanent button var icon = AggContext.StaticData.LoadIcon("noun_766157.png", 16, 16, theme.InvertIcons).SetPreMultiply(); var flattenButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, ToolTipText = "Flatten".Localize(), Enabled = scene.SelectedItem?.CanFlatten == true }; flattenButton.Click += (s, e) => { this.item.Flatten(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; }; toolbar.AddChild(flattenButton); // put in a remove button var removeButton = new IconButton(AggContext.StaticData.LoadIcon("remove.png", 16, 16, theme.InvertIcons), theme) { Margin = theme.ButtonSpacing, ToolTipText = "Delete".Localize(), Enabled = scene.SelectedItem != null }; removeButton.Click += (s, e) => { var rootSelection = scene.SelectedItemRoot; var removeItem = item; removeItem.Remove(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; // Only restore the root selection if it wasn't the item removed if (removeItem != rootSelection) { scene.SelectedItem = rootSelection; } }; toolbar.AddChild(removeButton); var overflowButton = new OverflowBar.OverflowMenuButton(theme) { Enabled = scene.SelectedItem != null, PopupBorderColor = ApplicationController.Instance.MenuTheme.GetBorderColor(120) }; overflowButton.DynamicPopupContent = () => { return(ApplicationController.Instance.GetActionMenuForSceneItem(item, sceneContext.Scene, false)); }; toolbar.AddChild(overflowButton); editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Name = "editorPanel", Padding = new BorderDouble(right: theme.DefaultContainerPadding + 1) }; // Wrap editorPanel with scrollable container var scrollableWidget = new ScrollableWidget(true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; scrollableWidget.AddChild(editorPanel); scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; editorSectionWidget = new SectionWidget("Editor", scrollableWidget, theme, toolbar, expandingContent: false, defaultExpansion: true, setContentVAnchor: false) { VAnchor = VAnchor.Stretch }; this.AddChild(editorSectionWidget); this.ContentPanel = editorPanel; editorPanel.Padding = new BorderDouble(theme.DefaultContainerPadding, 0); scene.SelectionChanged += (s, e) => { if (editorPanel.Children.FirstOrDefault()?.DescendantsAndSelf <SectionWidget>().FirstOrDefault() is SectionWidget firstSectionWidget) { firstSectionWidget.Margin = firstSectionWidget.Margin.Clone(top: 0); } var selectedItem = scene.SelectedItem; flattenButton.Enabled = selectedItem?.CanFlatten == true; removeButton.Enabled = selectedItem != null; overflowButton.Enabled = selectedItem != null; }; }
private void OpenPartPreviewWindow(PrintItem printItem, View3DWidget.AutoRotate autoRotate) { PrintItemWrapper itemWrapper = new PrintItemWrapper(printItem.Id); if (partPreviewWindow == null) { partPreviewWindow = new PartPreviewMainWindow(itemWrapper, autoRotate); partPreviewWindow.Closed += new EventHandler(PartPreviewWindow_Closed); } else { partPreviewWindow.BringToFront(); } }
private void Load(PrintItemWrapper printItem) { tabControl = new TabControl(); tabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0); tabControl.TabBar.Padding = new BorderDouble(top: 6); RGBA_Bytes selectedTabColor; if (UserSettings.Instance.DisplayMode == ApplicationDisplayType.Responsive) { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; selectedTabColor = ActiveTheme.Instance.TabLabelSelected; } else { tabControl.TabBar.BackgroundColor = ActiveTheme.Instance.TransparentLightOverlay; selectedTabColor = ActiveTheme.Instance.SecondaryAccentColor; } double buildHeight = ActiveSliceSettings.Instance.GetValue <double>(SettingsKey.build_height); // put in the 3D view partPreviewView = new View3DWidget(printItem, new Vector3(ActiveSliceSettings.Instance.GetValue <Vector2>(SettingsKey.bed_size), buildHeight), ActiveSliceSettings.Instance.GetValue <Vector2>(SettingsKey.print_center), ActiveSliceSettings.Instance.GetValue <BedShape>(SettingsKey.bed_shape), windowMode, autoRotate3DView, openMode); TabPage partPreview3DView = new TabPage(partPreviewView, string.Format("3D {0} ", "View".Localize()).ToUpper()); // put in the gcode view ViewGcodeBasic.WindowMode gcodeWindowMode = ViewGcodeBasic.WindowMode.Embeded; if (windowMode == View3DWidget.WindowMode.StandAlone) { gcodeWindowMode = ViewGcodeBasic.WindowMode.StandAlone; } viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.GetValue <Vector2>(SettingsKey.bed_size), buildHeight), ActiveSliceSettings.Instance.GetValue <Vector2>(SettingsKey.print_center), ActiveSliceSettings.Instance.GetValue <BedShape>(SettingsKey.bed_shape), gcodeWindowMode); if (windowMode == View3DWidget.WindowMode.StandAlone) { partPreviewView.Closed += (s, e) => Close(); viewGcodeBasic.Closed += (s, e) => Close(); } TabPage layerView = new TabPage(viewGcodeBasic, "Layer View".Localize().ToUpper()); int tabPointSize = 16; // add the correct tabs based on whether we are stand alone or embedded Tab threeDViewTab; if (windowMode == View3DWidget.WindowMode.StandAlone || UserSettings.Instance.IsTouchScreen) { threeDViewTab = new SimpleTextTabWidget(partPreview3DView, "3D View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(threeDViewTab); layerViewTab = new SimpleTextTabWidget(layerView, "Layer View Tab", tabPointSize, selectedTabColor, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()); tabControl.AddTab(layerViewTab); } else { threeDViewTab = new PopOutTextTabWidget(partPreview3DView, "3D View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(threeDViewTab); layerViewTab = new PopOutTextTabWidget(layerView, "Layer View Tab", new Vector2(590, 400), tabPointSize); tabControl.AddTab(layerViewTab); } threeDViewTab.ToolTipText = "Preview 3D Design".Localize(); layerViewTab.ToolTipText = "Preview layer Tool Paths".Localize(); this.AddChild(tabControl); }
public SelectedObjectPanel(View3DWidget view3DWidget, ISceneContext sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Top | VAnchor.Fit; this.Padding = 0; this.theme = theme; this.sceneContext = sceneContext; var toolbar = new LeftClipFlowLayoutWidget() { BackgroundColor = theme.BackgroundColor, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Fit, VAnchor = VAnchor.Fit }; scene = sceneContext.Scene; // put in the container for dynamic actions primaryActionsPanel = new FlowLayoutWidget() { HAnchor = HAnchor.Fit, VAnchor = VAnchor.Center | VAnchor.Fit }; toolbar.AddChild(primaryActionsPanel); // put in a make permanent button var icon = StaticData.Instance.LoadIcon("apply.png", 16, 16).SetToColor(theme.TextColor).SetPreMultiply(); flattenButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, ToolTipText = "Apply".Localize(), Enabled = true }; flattenButton.Click += (s, e) => { if (this.item.CanFlatten) { var item = this.item; using (new SelectionMaintainer(view3DWidget.Scene)) { item.Flatten(view3DWidget.Scene.UndoBuffer); } } else { // try to ungroup it sceneContext.Scene.UngroupSelection(); } }; toolbar.AddChild(flattenButton); // put in a remove button removeButton = new IconButton(StaticData.Instance.LoadIcon("cancel.png", 16, 16).SetToColor(theme.TextColor).SetPreMultiply(), theme) { Margin = theme.ButtonSpacing, ToolTipText = "Cancel".Localize(), Enabled = scene.SelectedItem != null }; removeButton.Click += (s, e) => { var item = this.item; using (new SelectionMaintainer(view3DWidget.Scene)) { item.Remove(view3DWidget.Scene.UndoBuffer); } }; toolbar.AddChild(removeButton); overflowButton = new OverflowBar.OverflowMenuButton(theme) { Enabled = scene.SelectedItem != null, }; overflowButton.ToolTipText = "Selected Object Options".Localize(); overflowButton.DynamicPopupContent = () => { return(ApplicationController.Instance.GetModifyMenu(view3DWidget.sceneContext)); }; toolbar.AddChild(overflowButton); editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Name = "editorPanel", }; // Wrap editorPanel with scrollable container var scrollableWidget = new ScrollableWidget(true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; scrollableWidget.AddChild(editorPanel); scrollableWidget.ScrollArea.HAnchor = HAnchor.Stretch; editorSectionWidget = new SectionWidget(editorTitle, scrollableWidget, theme, toolbar, expandingContent: false, defaultExpansion: true, setContentVAnchor: false) { VAnchor = VAnchor.Stretch }; this.AddChild(editorSectionWidget); this.ContentPanel = editorPanel; // Register listeners scene.SelectionChanged += Scene_SelectionChanged; }
private void OpenPartPreviewWindow(View3DWidget.AutoRotate autoRotate) { if (partPreviewWindow == null) { partPreviewWindow = new PartPreviewMainWindow(this.ItemWrapper, autoRotate); partPreviewWindow.Name = "Part Preview Window Thumbnail"; partPreviewWindow.Closed += (object sender, EventArgs e) => { this.partPreviewWindow = null; }; } else { partPreviewWindow.BringToFront(); } }