Changes for new Mesh viewer api

Finer settings for what causes reload of ui in slice settings.
This commit is contained in:
larsbrubaker 2014-07-25 17:13:42 -07:00
parent 0838cc5e0f
commit 5c506e7317
6 changed files with 72 additions and 23 deletions

View file

@ -186,11 +186,20 @@ namespace MatterHackers.MatterControl
ColumnTwo.CloseAndRemoveAllChildren();
double buildHeight = ActiveSliceSettings.Instance.BuildHeight;
part3DView = new View3DTransformPart(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, View3DTransformPart.WindowType.Embeded, View3DTransformPart.AutoRotate.Enabled);
part3DView = new View3DTransformPart(PrinterConnectionAndCommunication.Instance.ActivePrintItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape,
View3DTransformPart.WindowType.Embeded,
View3DTransformPart.AutoRotate.Enabled);
part3DView.Margin = new BorderDouble(bottom: 4);
part3DView.AnchorAll();
partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, ActiveSliceSettings.Instance.BedCenter, false);
partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape,
false);
partGcodeView.AnchorAll();
ColumnTwo.AddChild(part3DView);

View file

@ -43,12 +43,13 @@ using MatterHackers.VectorMath;
using MatterHackers.MatterControl.DataStorage;
using MatterHackers.MatterControl.PrintQueue;
using MatterHackers.MeshVisualizer;
using MatterHackers.MatterControl.SlicerConfiguration;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
public class PartPreview3DWidget : PartPreviewWidget
{
protected MeshViewerWidget meshViewerWidget;
public MeshViewerWidget meshViewerWidget;
event EventHandler unregisterEvents;
protected ViewControls3D viewControls3D;
@ -57,6 +58,31 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
}
public override void OnParentChanged(EventArgs e)
{
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent((sender, changeEventArgs) =>
{
double buildHeight = ActiveSliceSettings.Instance.BuildHeight;
UiThread.RunOnIdle((state) =>
{
#if false
"bed_size",
"print_center",
"build_height",
"bed_shape",
"center_part_on_bed",
#endif
meshViewerWidget.CreatePrintBed(
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape);
});
}, ref unregisterEvents);
base.OnParentChanged(e);
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)

View file

@ -64,7 +64,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
string part3DViewLabelFull = string.Format("{0} {1} ", "3D", "View".Localize());
view3DTransformPart = new View3DTransformPart(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, View3DTransformPart.WindowType.StandAlone, autoRotate3DView);
view3DTransformPart = new View3DTransformPart(printItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape,
View3DTransformPart.WindowType.StandAlone,
autoRotate3DView);
TabPage partPreview3DView = new TabPage(view3DTransformPart, part3DViewLabelFull);
tabControl.AddTab(new SimpleTextTabWidget(partPreview3DView, "3D View Tab", 16,
ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));
@ -73,7 +79,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// put in the 2d gcode view
TabPage layerView;
{
viewGcodeBasic = new ViewGcodeBasic(printItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape, ActiveSliceSettings.Instance.BedCenter, true);
viewGcodeBasic = new ViewGcodeBasic(printItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape,
true);
layerView = new TabPage(viewGcodeBasic, LocalizedString.Get("Layer View"));
tabControl.AddTab(new SimpleTextTabWidget(layerView, "Layer View Tab", 16,
ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), ActiveTheme.Instance.TabLabelUnselected, new RGBA_Bytes()));

View file

@ -252,7 +252,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public enum WindowType { Embeded, StandAlone };
public enum AutoRotate { Enabled, Disabled };
public View3DTransformPart(PrintItemWrapper printItemWrapper, Vector3 viewerVolume, MeshViewerWidget.BedShape bedShape, WindowType windowType, AutoRotate autoRotate)
public View3DTransformPart(PrintItemWrapper printItemWrapper, Vector3 viewerVolume, Vector2 bedCenter, MeshViewerWidget.BedShape bedShape, WindowType windowType, AutoRotate autoRotate)
{
this.windowType = windowType;
autoRotateEnabled = (autoRotate == AutoRotate.Enabled);
@ -271,7 +271,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
GuiWidget viewArea = new GuiWidget();
viewArea.AnchorAll();
{
meshViewerWidget = new MeshViewerWidget(viewerVolume, 1, bedShape, "Press 'Add' to select an item.".Localize());
meshViewerWidget = new MeshViewerWidget(viewerVolume, bedCenter, bedShape, "Press 'Add' to select an item.".Localize());
// this is to add an image to the bed
string imagePathAndFile = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "bedimage.png");

View file

@ -84,7 +84,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
Vector3 viewerVolume;
MeshViewerWidget.BedShape bedShape;
public ViewGcodeBasic(PrintItemWrapper printItem, Vector3 viewerVolume, MeshViewerWidget.BedShape bedShape, Vector2 bedCenter, bool addCloseButton)
public ViewGcodeBasic(PrintItemWrapper printItem, Vector3 viewerVolume, Vector2 bedCenter, MeshViewerWidget.BedShape bedShape, bool addCloseButton)
{
this.viewerVolume = viewerVolume;
this.bedShape = bedShape;
@ -199,7 +199,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
mainContainerTopToBottom.AddChild(buttonBottomPanel);
this.AddChild(mainContainerTopToBottom);
meshViewerWidget = new MeshViewerWidget(viewerVolume, 1, bedShape, "".Localize());
meshViewerWidget = new MeshViewerWidget(viewerVolume, bedCenter, bedShape, "".Localize());
meshViewerWidget.AnchorAll();
meshViewerWidget.AlwaysRenderBed = true;
gcodeDispalyWidget.AddChild(meshViewerWidget);

View file

@ -60,12 +60,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
}
public UiState(SliceSettingsWidget settingsToCopy)
public UiState(SliceSettingsWidget settingsWidgetToCopyFrom)
{
if (settingsToCopy != null)
if (settingsWidgetToCopyFrom != null)
{
settingsToCopy.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name);
settingsToCopy.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name);
settingsWidgetToCopyFrom.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name);
settingsWidgetToCopyFrom.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name);
}
}
}
@ -481,11 +481,16 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
}
List<string> settingToReload = new List<string>() {"bed_size", "print_center", "build_height", "bed_shape"};
private void ResetIfNeeded(OrganizerSettingsData settingData)
List<string> settingToReloadUiWhenChanged = new List<string>()
{
if (settingToReload.Contains(settingData.SlicerConfigName))
"has_fan",
"has_heated_bed",
"has_sd_card_reader",
};
private void ReloadUiIfRequired(OrganizerSettingsData settingData)
{
if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName))
{
ApplicationWidget.Instance.ReloadAll(null, null);
}
@ -569,7 +574,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString());
ResetIfNeeded(settingData);
ReloadUiIfRequired(settingData);
};
leftToRightLayout.AddChild(doubleEditWidget);
leftToRightLayout.AddChild(getSettingInfoData(settingData));
@ -673,8 +678,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
MenuItem menuItem = ((MenuItem)sender);
SaveSetting(settingData.SlicerConfigName, menuItem.Text);
ResetIfNeeded(settingData);
ReloadUiIfRequired(settingData);
};
}
leftToRightLayout.AddChild(selectableOptions);
@ -699,7 +703,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
SaveSetting(settingData.SlicerConfigName, "0");
// Now hide all of the settings that this control is associated with.
}
ApplicationWidget.Instance.ReloadAll(null, null);
ReloadUiIfRequired(settingData);
};
leftToRightLayout.AddChild(checkBoxWidget);
}
@ -723,7 +727,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString());
ResetIfNeeded(settingData);
ReloadUiIfRequired(settingData);
};
leftToRightLayout.AddChild(xEditWidget);
@ -735,7 +739,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString());
ResetIfNeeded(settingData);
ReloadUiIfRequired(settingData);
};
leftToRightLayout.AddChild(yEditWidget);
TextWidget yText = new TextWidget("y");