Improved save as dialog

This commit is contained in:
LarsBrubaker 2020-10-24 09:04:06 -07:00
parent 8713c8656e
commit 284cbce471
4 changed files with 72 additions and 11 deletions

View file

@ -820,7 +820,10 @@ namespace MatterHackers.MatterControl
() => "History".Localize(),
AggContext.StaticData.LoadIcon(Path.Combine("Library", "folder.png")),
AggContext.StaticData.LoadIcon(Path.Combine("Library", "history_icon.png")),
() => new RootHistoryContainer()));
() => new RootHistoryContainer())
{
IsReadOnly = true
});
// Create a new library context for the SaveAs view
this.LibraryTabContext = new LibraryConfig()

View file

@ -102,7 +102,10 @@ namespace MatterHackers.MatterControl.Library
() => "Pipe Works".Localize(),
AggContext.StaticData.LoadIcon(Path.Combine("Library", "folder.png")),
null,
() => new PipeWorksContainer()));
() => new PipeWorksContainer())
{
IsReadOnly = true
});
int index = 0;
@ -146,7 +149,10 @@ namespace MatterHackers.MatterControl.Library
})
{ DateCreated = new System.DateTime(index++) },
}
}));
})
{
IsReadOnly = true
});
#endif
}

View file

@ -65,7 +65,10 @@ namespace MatterHackers.MatterControl
};
itemNameWidget.ActualTextEditWidget.EnterPressed += (s, e) =>
{
acceptButton.InvokeClick();
if (librarySelectorWidget.ActiveContainer is ILibraryWritableContainer)
{
acceptButton.InvokeClick();
}
};
contentRow.AddChild(itemNameWidget);
@ -76,23 +79,68 @@ namespace MatterHackers.MatterControl
isEnabled = writableContainer?.AllowAction(ContainerActions.AddContainers) == true;
}
var folderButtonRow = new FlowLayoutWidget()
{
HAnchor = HAnchor.Left | HAnchor.Fit,
};
contentRow.AddChild(folderButtonRow);
// add a create folder button
var createFolderButton = new TextIconButton("Create Folder".Localize(), icon, theme)
{
Enabled = isEnabled,
HAnchor = HAnchor.Left,
VAnchor = VAnchor.Absolute,
DrawIconOverlayOnDisabled = true
};
createFolderButton.Name = "Create Folder In Button";
folderButtonRow.AddChild(createFolderButton);
var refreshButton = new IconButton(AggContext.StaticData.LoadIcon("fa-refresh_14.png", 16, 16, theme.InvertIcons), theme)
{
ToolTipText = "Refresh Folder".Localize(),
Enabled = isEnabled,
};
refreshButton.Click += (s, e) =>
{
librarySelectorWidget.ActiveContainer.Load();
};
// folderButtonRow.AddChild(refreshButton);
createFolderButton.Click += CreateFolder_Click;
// add a message to navigate to a writable folder
var writableMessage = new TextWidget("Please select a writable folder".Localize(), pointSize: theme.DefaultFontSize)
{
TextColor = theme.TextColor,
Margin = new BorderDouble(5, 0),
VAnchor = VAnchor.Center
};
footerRow.AddChild(writableMessage, 0);
footerRow.AddChild(new HorizontalSpacer(), 1);
// change footer in this context
footerRow.HAnchor = HAnchor.Stretch;
footerRow.Margin = 0;
libraryNavContext.ContainerChanged += (s, e) =>
{
createFolderButton.Enabled = libraryNavContext.ActiveContainer is ILibraryWritableContainer;
var writable = libraryNavContext.ActiveContainer is ILibraryWritableContainer;
createFolderButton.Enabled = writable;
refreshButton.Enabled = writable;
writableMessage.Visible = !writable;
};
}
createFolderButton.Name = "Create Folder In Button";
contentRow.AddChild(createFolderButton);
public override void OnKeyDown(KeyEventArgs keyEvent)
{
if (keyEvent.KeyCode == Keys.F5)
{
librarySelectorWidget.ActiveContainer.Load();
}
createFolderButton.Click += CreateFolder_Click;
base.OnKeyDown(keyEvent);
}
private void CreateFolder_Click(object sender, MouseEventArgs e)
@ -108,7 +156,6 @@ namespace MatterHackers.MatterControl
{
if (librarySelectorWidget.ActiveContainer is ILibraryWritableContainer writableContainer)
{
if (!string.IsNullOrEmpty(newName)
&& writableContainer != null)
{

View file

@ -261,10 +261,15 @@ namespace MatterHackers.MatterControl.VersionManagement
public event EventHandler RequestSucceeded;
public static void Request(string requestUrl, string[] requestStringPairs)
public static void Request(string requestUrl, string[] requestStringPairs, Action requestSucceeded = null)
{
WebRequestBase tempRequest = new WebRequestBase();
if (requestSucceeded != null)
{
tempRequest.RequestSucceeded += (s, e) => requestSucceeded();
}
tempRequest.uri = requestUrl;
for (int i = 0; i < requestStringPairs.Length; i += 2)
{