Made the popup tab selection be persistent (in mem)

This commit is contained in:
Lars Brubaker 2017-08-15 15:11:37 -07:00
parent b9b886e048
commit af534f0802
5 changed files with 47 additions and 7 deletions

View file

@ -52,12 +52,18 @@ namespace MatterHackers.MatterControl.CustomWidgets
private GuiWidget topToBottom;
protected GuiWidget widgetTodockTo;
private Func<int> getSelectedTab;
private Action<int> setSelectedTab;
public DockSide DockSide { get; set; }
public DockingTabControl(GuiWidget widgetTodockTo, DockSide dockSide)
public DockingTabControl(GuiWidget widgetTodockTo, DockSide dockSide, Func<int> getSelectedTab, Action<int> setSelectedTab)
{
this.widgetTodockTo = widgetTodockTo;
this.DockSide = dockSide;
this.getSelectedTab = getSelectedTab;
this.setSelectedTab = setSelectedTab;
}
public event EventHandler PinStatusChanged;
@ -122,6 +128,7 @@ namespace MatterHackers.MatterControl.CustomWidgets
topToBottom.AddChild(resizePage);
}
int tabIndex = 0;
foreach (var nameWidget in allTabs)
{
string tabTitle = nameWidget.Key;
@ -131,8 +138,7 @@ namespace MatterHackers.MatterControl.CustomWidgets
var content = new DockWindowContent(this, nameWidget.Value, tabTitle);
var tabPage = new TabPage(content, tabTitle);
tabControl.AddTab(new TextTab(
var textTab = new TextTab(
tabPage,
tabTitle + " Tab",
12,
@ -140,7 +146,16 @@ namespace MatterHackers.MatterControl.CustomWidgets
RGBA_Bytes.Transparent,
ActiveTheme.Instance.TabLabelUnselected,
RGBA_Bytes.Transparent,
useUnderlineStyling: true));
useUnderlineStyling: true);
tabControl.AddTab(textTab);
int localTabIndex = tabIndex;
textTab.Click += (s, e) =>
{
setSelectedTab?.Invoke(localTabIndex);
};
}
else // control is floating
{
@ -177,7 +192,15 @@ namespace MatterHackers.MatterControl.CustomWidgets
};
settingsButton.PopupLayoutEngine = new UnpinnedLayoutEngine(settingsButton.PopupContent, widgetTodockTo, DockSide);
topToBottom.AddChild(settingsButton);
int localTabIndex = tabIndex;
settingsButton.Click += (s, e) =>
{
setSelectedTab?.Invoke(localTabIndex);
};
}
tabIndex++;
}
if (ControlIsPinned)
@ -187,6 +210,11 @@ namespace MatterHackers.MatterControl.CustomWidgets
var pinButton = this.CreatePinButton();
pinButton.Margin = new BorderDouble(right: 18, bottom: 7);
tabControl.TabBar.AddChild(pinButton);
if (getSelectedTab != null)
{
tabControl.SelectedTabIndex = getSelectedTab.Invoke();
}
}
}

View file

@ -119,6 +119,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.HAnchor = HAnchor.Fit;
this.VAnchor = VAnchor.Fit;
this.buttonView = buttonView;
this.buttonView.Selectable = false;
this.AddChild(buttonView);
}

View file

@ -357,9 +357,20 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
return renderType;
}
int lastTabSelected = 0;
int GetSelectedTab()
{
return lastTabSelected;
}
void SetSelectedTab(int tabIndex)
{
lastTabSelected = tabIndex;
}
private void AddSettingsTabBar(GuiWidget parent, GuiWidget widgetTodockTo)
{
var sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right)
var sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right, GetSelectedTab, SetSelectedTab)
{
ControlIsPinned = ApplicationController.Instance.PrintSettingsPinned
};

@ -1 +1 @@
Subproject commit 6327a0c89d25c7657f1061136286b80aa38e53f5
Subproject commit b03414565921030bb924bfcc07b94ebc278b350a

@ -1 +1 @@
Subproject commit 43be61511ee9cef07576f624ce61696b8935c72c
Subproject commit 77ed601d5e80f4f3e10437db0d4d032f5c453399