Got the touch screen to remember tab state.

Got the Options page to remember its state
Fixed a early binding bug in PopOutManager
This commit is contained in:
Lars Brubaker 2015-04-16 13:08:26 -07:00
parent 4e6d65e6fb
commit b5d3bb9c04
6 changed files with 141 additions and 103 deletions

View file

@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project.
using MatterHackers.Agg; using MatterHackers.Agg;
using MatterHackers.Agg.UI; using MatterHackers.Agg.UI;
using MatterHackers.Localizations; using MatterHackers.Localizations;
using MatterHackers.MatterControl.CustomWidgets;
using MatterHackers.MatterControl.PartPreviewWindow; using MatterHackers.MatterControl.PartPreviewWindow;
using MatterHackers.MatterControl.PrinterCommunication; using MatterHackers.MatterControl.PrinterCommunication;
using MatterHackers.MatterControl.PrintHistory; using MatterHackers.MatterControl.PrintHistory;
@ -44,6 +45,8 @@ namespace MatterHackers.MatterControl
internal class CompactTabView : TabControl internal class CompactTabView : TabControl
{ {
public static int firstPanelCurrentTab = 0; public static int firstPanelCurrentTab = 0;
private static readonly string CompactTabView_CurrentTab = "CompactTabView_CurrentTab";
private static readonly string CompactTabView_Options_ScrollPosition = "CompactTabView_Options_ScrollPosition2";
private static int lastAdvanceControlsIndex = 0; private static int lastAdvanceControlsIndex = 0;
private static SliceSettingsWidgetUiState sliceSettingsUiState = new SliceSettingsWidgetUiState(); private static SliceSettingsWidgetUiState sliceSettingsUiState = new SliceSettingsWidgetUiState();
@ -58,11 +61,14 @@ namespace MatterHackers.MatterControl
private GuiWidget part3DViewContainer; private GuiWidget part3DViewContainer;
private ViewGcodeBasic partGcodeView; private ViewGcodeBasic partGcodeView;
private GuiWidget partGcodeViewContainer; private GuiWidget partGcodeViewContainer;
private PartPreviewContent partPreviewContainer;
private QueueDataView queueDataView; private QueueDataView queueDataView;
private TabPage QueueTabPage; private TabPage QueueTabPage;
private bool simpleMode;
private SliceSettingsWidget sliceSettingsWidget; private SliceSettingsWidget sliceSettingsWidget;
private TabPage sliceTabPage; private TabPage sliceTabPage;
private int TabTextSize; private int TabTextSize;
private TabPage TerminalTabPage;
private RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected; private RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
public CompactTabView(QueueDataView queueDataView) public CompactTabView(QueueDataView queueDataView)
@ -71,71 +77,112 @@ namespace MatterHackers.MatterControl
this.queueDataView = queueDataView; this.queueDataView = queueDataView;
this.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; this.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
this.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0); this.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0);
this.TabBar.Margin = new BorderDouble(0, 0); this.TabBar.Margin = new BorderDouble(4, 0, 0, 0);
this.TabBar.Padding = new BorderDouble(0, 4); this.TabBar.Padding = new BorderDouble(0, 8);
this.Margin = new BorderDouble(top: 0); this.Margin = new BorderDouble(top: 0);
this.TabTextSize = 15; this.TabTextSize = 18;
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent(LoadSettingsOnPrinterChanged, ref unregisterEvents); string simpleModeString = UserSettings.Instance.get("IsSimpleMode");
PrinterConnectionAndCommunication.Instance.ActivePrintItemChanged.RegisterEvent(onActivePrintItemChanged, ref unregisterEvents);
ApplicationController.Instance.ReloadAdvancedControlsPanelTrigger.RegisterEvent(ReloadAdvancedControlsPanelTrigger, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.ActivePrintItemChanged.RegisterEvent(onActivePrintItemChanged, ref unregisterEvents); if (simpleModeString == null)
{
simpleMode = true;
UserSettings.Instance.set("IsSimpleMode", "true");
}
else
{
simpleMode = Convert.ToBoolean(simpleModeString);
}
QueueTabPage = new TabPage(new QueueDataWidget(queueDataView), LocalizedString.Get("Queue").ToUpper()); QueueTabPage = new TabPage(new QueueDataWidget(queueDataView), LocalizedString.Get("Queue").ToUpper());
this.AddTab(new SimpleTextTabWidget(QueueTabPage, "Queue Tab", TabTextSize, SimpleTextTabWidget queueTabWidget = new SimpleTextTabWidget(QueueTabPage, "Queue Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes())); ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
LibraryTabPage = new TabPage(new PrintLibraryWidget(), LocalizedString.Get("Library").ToUpper()); partPreviewContainer = new PartPreviewContent(PrinterConnectionAndCommunication.Instance.ActivePrintItem, View3DWidget.WindowMode.Embeded, View3DWidget.AutoRotate.Enabled, View3DWidget.OpenMode.Viewing);
this.AddTab(new SimpleTextTabWidget(LibraryTabPage, "Library Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
HistoryTabPage = new TabPage(new PrintHistoryWidget(), LocalizedString.Get("History").ToUpper()); string partPreviewLabel = LocalizedString.Get("Preview").ToUpper();
this.AddTab(new SimpleTextTabWidget(HistoryTabPage, "History Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
GuiWidget manualPrinterControls = new ManualPrinterControls(); this.AddTab(new SimpleTextTabWidget(new TabPage(partPreviewContainer, partPreviewLabel), "Part Preview Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
part3DViewContainer = new GuiWidget();
part3DViewContainer.AnchorAll();
partGcodeViewContainer = new GuiWidget();
partGcodeViewContainer.AnchorAll();
GeneratePartViews();
string partPreviewLabel = LocalizedString.Get("Part Preview").ToUpper();
this.AddTab(new SimpleTextTabWidget(new TabPage(part3DViewContainer, partPreviewLabel), "Part Preview Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
string layerPreviewLabel = LocalizedString.Get("Layer Preview").ToUpper();
this.AddTab(new SimpleTextTabWidget(new TabPage(partGcodeViewContainer, layerPreviewLabel), "Layer Preview Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
//Add the tab contents for 'Advanced Controls'
string sliceSettingsLabel = LocalizedString.Get("Settings").ToUpper(); string sliceSettingsLabel = LocalizedString.Get("Settings").ToUpper();
sliceSettingsWidget = new SliceSettingsWidget(sliceSettingsUiState); sliceSettingsWidget = new SliceSettingsWidget(sliceSettingsUiState);
sliceTabPage = new TabPage(sliceSettingsWidget, sliceSettingsLabel); sliceTabPage = new TabPage(sliceSettingsWidget, sliceSettingsLabel);
string printerControlsLabel = LocalizedString.Get("Controls").ToUpper();
manualControlsPage = new TabPage(manualPrinterControls, printerControlsLabel);
this.AddTab(new SimpleTextTabWidget(manualControlsPage, "Controls Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
this.AddTab(new SimpleTextTabWidget(sliceTabPage, "Slice Settings Tab", TabTextSize, this.AddTab(new SimpleTextTabWidget(sliceTabPage, "Slice Settings Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes())); ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
string configurationLabel = LocalizedString.Get("Configuration").ToUpper(); HorizontalLine lineSpacerZero = new HorizontalLine();
lineSpacerZero.Margin = new BorderDouble(4, 10);
this.TabBar.AddChild(lineSpacerZero);
GuiWidget manualPrinterControls = new ManualControlsWidget();
//Add the tab contents for 'Advanced Controls'
string printerControlsLabel = LocalizedString.Get("Controls").ToUpper();
manualControlsPage = new TabPage(manualPrinterControls, printerControlsLabel);
this.AddTab(new SimpleTextTabWidget(manualControlsPage, "Controls Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
HorizontalLine lineSpacerOne = new HorizontalLine();
lineSpacerOne.Margin = new BorderDouble(4, 10);
this.TabBar.AddChild(lineSpacerOne);
this.AddTab(queueTabWidget);
LibraryTabPage = new TabPage(new PrintLibraryWidget(), LocalizedString.Get("Library").ToUpper());
this.AddTab(new SimpleTextTabWidget(LibraryTabPage, "Library Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
HistoryTabPage = new TabPage(new PrintHistoryWidget(), LocalizedString.Get("History").ToUpper());
SimpleTextTabWidget historyTabWidget = new SimpleTextTabWidget(HistoryTabPage, "History Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
if (!simpleMode)
{
this.AddTab(historyTabWidget);
}
HorizontalLine lineSpacerTwo = new HorizontalLine();
lineSpacerTwo.Margin = new BorderDouble(4, 10);
this.TabBar.AddChild(lineSpacerTwo);
string configurationLabel = LocalizedString.Get("Options").ToUpper();
PrinterConfigurationScrollWidget printerConfigurationWidget = new PrinterConfigurationScrollWidget(); PrinterConfigurationScrollWidget printerConfigurationWidget = new PrinterConfigurationScrollWidget();
// Make sure we have the right scroll position when we create this view
{
UiThread.RunOnIdle((state) =>
{
int scrollPosition = UserSettings.Instance.Fields.GetInt(CompactTabView_Options_ScrollPosition, -100000);
if (scrollPosition != -100000)
{
printerConfigurationWidget.ScrollPosition = new Vector2(0, scrollPosition);
}
});
printerConfigurationWidget.ScrollPositionChanged += (object sender, EventArgs e) =>
{
UserSettings.Instance.Fields.SetInt(CompactTabView_Options_ScrollPosition, (int)printerConfigurationWidget.ScrollPosition.y);
};
}
configurationPage = new TabPage(printerConfigurationWidget, configurationLabel); configurationPage = new TabPage(printerConfigurationWidget, configurationLabel);
this.AddTab(new SimpleTextTabWidget(configurationPage, "Configuration Tab", TabTextSize, this.AddTab(new SimpleTextTabWidget(configurationPage, "Configuration Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes())); ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
TerminalTabPage = new TabPage(new TerminalWidget(false), LocalizedString.Get("Console").ToUpper());
SimpleTextTabWidget terminalTabWidget = new SimpleTextTabWidget(TerminalTabPage, "Terminal Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
if (!simpleMode)
{
this.AddTab(terminalTabWidget);
}
AboutTabPage = new TabPage(new AboutWidget(), LocalizedString.Get("About").ToUpper()); AboutTabPage = new TabPage(new AboutWidget(), LocalizedString.Get("About").ToUpper());
aboutTabWidget = new SimpleTextTabWidget(AboutTabPage, "About Tab", TabTextSize, aboutTabWidget = new SimpleTextTabWidget(AboutTabPage, "About Tab", TabTextSize,
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()); ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
this.AddTab(aboutTabWidget); this.AddTab(aboutTabWidget);
NumQueueItemsChanged(this, null); NumQueueItemsChanged(this, null);
@ -143,13 +190,23 @@ namespace MatterHackers.MatterControl
QueueData.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents); QueueData.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
QueueData.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents); QueueData.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent(LoadSettingsOnPrinterChanged, ref unregisterEvents);
PrinterConnectionAndCommunication.Instance.ActivePrintItemChanged.RegisterEvent(OnActivePrintItemChanged, ref unregisterEvents);
ApplicationController.Instance.ReloadAdvancedControlsPanelTrigger.RegisterEvent(ReloadAdvancedControlsPanelTrigger, ref unregisterEvents);
UpdateControlData.Instance.UpdateStatusChanged.RegisterEvent(SetUpdateNotification, ref unregisterEvents); UpdateControlData.Instance.UpdateStatusChanged.RegisterEvent(SetUpdateNotification, ref unregisterEvents);
//WidescreenPanel.PreChangePanels.RegisterEvent(SaveCurrentTab, ref unregisterEvents); // Make sure we are on the right tab when we create this view
{
string selectedTab = UserSettings.Instance.get(CompactTabView_CurrentTab);
this.SelectTab(selectedTab);
SelectedTabIndex = firstPanelCurrentTab; TabBar.TabIndexChanged += (object sender, EventArgs e) =>
{
UserSettings.Instance.set(CompactTabView_CurrentTab, TabBar.SelectedTabName);
};
}
} }
private event EventHandler unregisterEvents; private event EventHandler unregisterEvents;
public void LoadSettingsOnPrinterChanged(object sender, EventArgs e) public void LoadSettingsOnPrinterChanged(object sender, EventArgs e)
@ -206,36 +263,11 @@ namespace MatterHackers.MatterControl
} }
} }
private void GeneratePartViews(object state = null)
{
double buildHeight = ActiveSliceSettings.Instance.BuildHeight;
part3DView = new View3DWidget(PrinterConnectionAndCommunication.Instance.ActivePrintItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape,
View3DWidget.WindowMode.Embeded,
View3DWidget.AutoRotate.Enabled);
part3DView.Margin = new BorderDouble(bottom: 4);
part3DView.AnchorAll();
part3DViewContainer.RemoveAllChildren();
part3DViewContainer.AddChild(part3DView);
partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem,
new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight),
ActiveSliceSettings.Instance.BedCenter,
ActiveSliceSettings.Instance.BedShape, ViewGcodeBasic.WindowMode.Embeded);
partGcodeView.AnchorAll();
partGcodeViewContainer.RemoveAllChildren();
partGcodeViewContainer.AddChild(partGcodeView);
}
private void LoadAdvancedControls(object state = null) private void LoadAdvancedControls(object state = null)
{ {
reloadControlsWidget(); RreloadControlsWidget();
reloadConfigurationWidget(); ReloadConfigurationWidget();
reloadSliceSettingsWidget(); ReloadSliceSettingsWidget();
this.Invalidate(); this.Invalidate();
} }
@ -246,31 +278,23 @@ namespace MatterHackers.MatterControl
QueueTabPage.Text = string.Format(queueString, QueueData.Instance.Count); QueueTabPage.Text = string.Format(queueString, QueueData.Instance.Count);
} }
private void onActivePrintItemChanged(object sender, EventArgs e) private void OnActivePrintItemChanged(object sender, EventArgs e)
{ {
UiThread.RunOnIdle(GeneratePartViews); UiThread.RunOnIdle(ReloadPartPreview, null, 1);
} }
private void reloadConfigurationWidget() private void ReloadConfigurationWidget()
{ {
configurationPage.RemoveAllChildren(); configurationPage.RemoveAllChildren();
configurationPage.AddChild(new PrinterConfigurationScrollWidget()); configurationPage.AddChild(new PrinterConfigurationScrollWidget());
} }
private void reloadControlsWidget() private void ReloadPartPreview(object state = null)
{ {
GuiWidget manualPrinterControls = new ManualPrinterControls(); partPreviewContainer.Reload(PrinterConnectionAndCommunication.Instance.ActivePrintItem);
//ScrollableWidget manualPrinterControlsWidget = new ScrollableWidget(true);
//manualPrinterControlsWidget.ScrollArea.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
//manualPrinterControlsWidget.AnchorAll();
//manualPrinterControlsWidget.AddChild(manualPrinterControls);
manualControlsPage.RemoveAllChildren();
manualControlsPage.AddChild(manualPrinterControls);
} }
private void reloadSliceSettingsWidget() private void ReloadSliceSettingsWidget()
{ {
//Store the UI state from the current display //Store the UI state from the current display
sliceSettingsUiState = new SliceSettingsWidgetUiState(sliceSettingsWidget); sliceSettingsUiState = new SliceSettingsWidgetUiState(sliceSettingsWidget);
@ -281,19 +305,12 @@ namespace MatterHackers.MatterControl
sliceTabPage.AddChild(sliceSettingsWidget); sliceTabPage.AddChild(sliceSettingsWidget);
} }
private void SaveCurrentPanelIndex(object sender, EventArgs e) private void RreloadControlsWidget()
{ {
sliceSettingsUiState = new SliceSettingsWidgetUiState(sliceSettingsWidget); GuiWidget manualPrinterControls = new ManualControlsWidget();
if (this.Children.Count > 0) manualControlsPage.RemoveAllChildren();
{ manualControlsPage.AddChild(manualPrinterControls);
lastAdvanceControlsIndex = this.SelectedTabIndex;
}
}
private void SaveCurrentTab(object sender, EventArgs e)
{
firstPanelCurrentTab = SelectedTabIndex;
} }
} }
} }

View file

@ -67,7 +67,10 @@ namespace MatterHackers.MatterControl
this.dataBaseKeyPrefix = dataBaseKeyPrefix; this.dataBaseKeyPrefix = dataBaseKeyPrefix;
this.widgetWhosContentsPopOut = widgetWhosContentsPopOut; this.widgetWhosContentsPopOut = widgetWhosContentsPopOut;
ApplicationController.Instance.MainView.DrawAfter += ShowOnFirstSystemWindowDraw; UiThread.RunOnIdle((state) =>
{
ApplicationController.Instance.MainView.DrawAfter += ShowOnFirstSystemWindowDraw;
});
widgetWhosContentsPopOut.Closed += (sender, e) => widgetWhosContentsPopOut.Closed += (sender, e) =>
{ {

View file

@ -37,6 +37,17 @@ using System;
namespace MatterHackers.MatterControl namespace MatterHackers.MatterControl
{ {
public class ManualControlsWidget : GuiWidget
{
public ManualControlsWidget()
: base()
{
this.AnchorAll();
this.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
this.AddChild(new ManualPrinterControls());
}
}
public class ManualPrinterControls : GuiWidget public class ManualPrinterControls : GuiWidget
{ {
static public RootedObjectEventHandler AddPluginControls = new RootedObjectEventHandler(); static public RootedObjectEventHandler AddPluginControls = new RootedObjectEventHandler();

View file

@ -101,16 +101,17 @@ namespace MatterHackers.MatterControl
UserSettings.Instance.set(keyToSet, value.ToString()); UserSettings.Instance.set(keyToSet, value.ToString());
} }
public int GetInt(string keyToRead) public int GetInt(string keyToRead, int defaultValue = 0)
{ {
string currentValue = UserSettings.Instance.get(keyToRead); string currentValue = UserSettings.Instance.get(keyToRead);
int result = 0; int result = 0;
if (int.TryParse(currentValue, out result)) if (!int.TryParse(currentValue, out result))
{ {
return result; result = defaultValue;
UserSettings.Instance.set(keyToRead, currentValue);
} }
return 0; return result;
} }
} }
} }

View file

@ -3164,3 +3164,6 @@ Translated:Connect to the printer
English:Reset English:Reset
Translated:Reset Translated:Reset
English:Console
Translated:Console

View file

@ -3166,3 +3166,6 @@ Translated:Connect to the printer
English:Reset English:Reset
Translated:Reset Translated:Reset
English:Console
Translated:Console