switch to correct tab if open when opening from file system

This commit is contained in:
Lars Brubaker 2022-02-09 17:12:10 -08:00
parent 44c1146949
commit dbe806b301
3 changed files with 37 additions and 21 deletions

View file

@ -1417,6 +1417,32 @@ namespace MatterHackers.MatterControl
}
}
public bool SwitchToWorkspaceIfAlreadyOpen(string assetPath)
{
var mainViewWidget = Instance.MainView;
foreach (var openWorkspace in Instance.Workspaces)
{
if (openWorkspace.SceneContext.EditContext.SourceFilePath == assetPath
|| (openWorkspace.SceneContext.EditContext.SourceItem is IAssetPath cloudItem
&& cloudItem.AssetPath == assetPath))
{
foreach (var tab in mainViewWidget.TabControl.AllTabs)
{
if (tab.TabContent is DesignTabPage tabContent
&& (tabContent.sceneContext.EditContext.SourceFilePath == assetPath
|| (tabContent.sceneContext.EditContext.SourceItem is IAssetPath cloudItem2
&& cloudItem2.AssetPath == assetPath)))
{
mainViewWidget.TabControl.ActiveTab = tab;
return true;
}
}
}
}
return false;
}
public DragDropData DragDropData { get; set; } = new DragDropData();
private string _uiHint = "";

View file

@ -511,25 +511,10 @@ namespace MatterHackers.MatterControl.CustomWidgets
var mainViewWidget = ApplicationController.Instance.MainView;
// check if it is already open
foreach (var openWorkspace in ApplicationController.Instance.Workspaces)
{
if (openWorkspace.SceneContext.EditContext.SourceFilePath == asset.AssetPath
|| (openWorkspace.SceneContext.EditContext.SourceItem is IAssetPath cloudItem
&& cloudItem.AssetPath == asset.AssetPath))
{
foreach (var tab in mainViewWidget.TabControl.AllTabs)
{
if (tab.TabContent is DesignTabPage tabContent
&& (tabContent.sceneContext.EditContext.SourceFilePath == asset.AssetPath
|| (tabContent.sceneContext.EditContext.SourceItem is IAssetPath cloudItem2
&& cloudItem2.AssetPath == asset.AssetPath)))
{
mainViewWidget.TabControl.ActiveTab = tab;
return;
}
}
}
}
if (ApplicationController.Instance.SwitchToWorkspaceIfAlreadyOpen(asset.AssetPath))
{
return;
}
var workspace = new PartWorkspace(new BedConfig(ApplicationController.Instance.Library.PlatingHistory));

View file

@ -431,7 +431,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
// you can use this code to test the ShellOpenFile code
#if false
#if true
public override void OnKeyPress(KeyPressEventArgs keyPressEvent)
{
var files = new string[]
@ -472,7 +472,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (Path.GetExtension(filePath).ToLower() == ".mcx")
{
var history = ApplicationController.Instance.Library.PlatingHistory;
if (ApplicationController.Instance.SwitchToWorkspaceIfAlreadyOpen(filePath))
{
return;
}
var history = ApplicationController.Instance.Library.PlatingHistory;
var workspace = new PartWorkspace(new BedConfig(history));
// Load the previous content
await workspace.SceneContext.LoadContent(new EditContext()