Making the export button have the right state based on the permissions of the item being selected.

This commit is contained in:
Lars Brubaker 2015-07-07 09:52:48 -07:00
parent ae49d4b09e
commit 610816070a
6 changed files with 62 additions and 29 deletions

View file

@ -76,7 +76,7 @@ namespace MatterHackers.MatterControl
{
if (PrivateClick != null)
{
PrivateClick(this, mouseEvent);
UiThread.RunOnIdle(() => PrivateClick(this, mouseEvent));
}
}

View file

@ -491,7 +491,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
private void LibraryDataReloaded(object sender, EventArgs e)
{
AddAllItems();
UiThread.RunOnIdle(AddAllItems);
}
}
}

View file

@ -41,6 +41,18 @@ using System.Text;
namespace MatterHackers.MatterControl.PrintLibrary
{
internal class ButtonEnableData
{
internal bool multipleItems;
internal bool protectedItems;
internal ButtonEnableData(bool multipleItems, bool protectedItems)
{
this.multipleItems = multipleItems;
this.protectedItems = protectedItems;
}
}
public class PrintLibraryWidget : GuiWidget
{
private static CreateFolderWindow createFolderWindow = null;
@ -50,7 +62,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
private FlowLayoutWidget breadCrumbDisplayHolder;
private FlowLayoutWidget itemOperationButtons;
private List<bool> editOperationMultiCapable = new List<bool>();
private List<ButtonEnableData> editButtonsEnableData = new List<ButtonEnableData>();
private static Button addToLibraryButton;
private Button enterEditModeButton;
@ -245,25 +257,25 @@ namespace MatterHackers.MatterControl.PrintLibrary
Button exportItemButton = editButtonFactory.Generate("Export".Localize());
exportItemButton.Margin = new BorderDouble(3, 0);
exportItemButton.Click += new EventHandler(exportButton_Click);
editOperationMultiCapable.Add(false);
editButtonsEnableData.Add(new ButtonEnableData(false, false));
itemOperationButtons.AddChild(exportItemButton);
Button editItemButton = editButtonFactory.Generate("Edit".Localize());
editItemButton.Margin = new BorderDouble(3, 0);
editItemButton.Click += new EventHandler(editButton_Click);
editOperationMultiCapable.Add(false);
editButtonsEnableData.Add(new ButtonEnableData(false, false));
itemOperationButtons.AddChild(editItemButton);
Button removeFromLibraryButton = editButtonFactory.Generate("Remove".Localize());
removeFromLibraryButton.Margin = new BorderDouble(3, 0);
removeFromLibraryButton.Click += new EventHandler(deleteFromLibraryButton_Click);
editOperationMultiCapable.Add(true);
editButtonsEnableData.Add(new ButtonEnableData(true, false));
itemOperationButtons.AddChild(removeFromLibraryButton);
Button addToQueueButton = editButtonFactory.Generate("Add to Queue".Localize());
addToQueueButton.Margin = new BorderDouble(3, 0);
addToQueueButton.Click += new EventHandler(addToQueueButton_Click);
editOperationMultiCapable.Add(true);
editButtonsEnableData.Add(new ButtonEnableData(true, true));
itemOperationButtons.AddChild(addToQueueButton);
itemOperationButtons.Visible = false;
@ -372,24 +384,36 @@ namespace MatterHackers.MatterControl.PrintLibrary
private void SetEditButtonsStates()
{
int selectedCount = libraryDataView.SelectedItems.Count;
bool enabled = (selectedCount > 0 && libraryDataView.EditMode);
int i = 0;
foreach (var child in itemOperationButtons.Children)
for(int buttonIndex=0; buttonIndex<itemOperationButtons.Children.Count; buttonIndex++)
{
bool enabled = (selectedCount > 0 && libraryDataView.EditMode);
var child = itemOperationButtons.Children[buttonIndex];
var button = child as Button;
if (button != null)
{
if (selectedCount > 1 && !editOperationMultiCapable[i])
if ((selectedCount > 1 && !editButtonsEnableData[buttonIndex].multipleItems))
{
button.Enabled = false;
enabled = false;
}
else
{
button.Enabled = enabled;
bool enabledState = enabled;
if (!editButtonsEnableData[buttonIndex].protectedItems)
{
// so we can show for multi items lets check for protected items
for (int itemIndex = 0; itemIndex < libraryDataView.SelectedItems.Count; itemIndex++)
{
if (LibraryDataView.CurrentLibraryProvider.GetPrintItemWrapper(itemIndex).PrintItem.Protected)
{
enabled = false;
}
}
}
}
button.Enabled = enabled;
}
i++;
}
}

View file

@ -55,7 +55,7 @@ namespace MatterHackers.MatterControl.PrintQueue
private TextImageButtonFactory editButtonFactory = new TextImageButtonFactory();
private FlowLayoutWidget itemOperationButtons;
private DropDownMenu moreMenu;
private List<bool> editOperationMultiCapable = new List<bool>();
private List<ButtonEnableData> editButtonsEnableData = new List<ButtonEnableData>();
private Button enterEditModeButton;
private ExportPrintItemWindow exportingWindow;
private bool exportingWindowIsOpen = false;
@ -234,19 +234,19 @@ namespace MatterHackers.MatterControl.PrintQueue
Button exportItemButton = editButtonFactory.Generate("Export".Localize());
exportItemButton.Margin = new BorderDouble(3, 0);
exportItemButton.Click += new EventHandler(exportButton_Click);
editOperationMultiCapable.Add(false);
editButtonsEnableData.Add(new ButtonEnableData(false, false));
itemOperationButtons.AddChild(exportItemButton);
Button copyItemButton = editButtonFactory.Generate("Copy".Localize());
copyItemButton.Margin = new BorderDouble(3, 0);
copyItemButton.Click += new EventHandler(copyButton_Click);
editOperationMultiCapable.Add(false);
editButtonsEnableData.Add(new ButtonEnableData(false, true));
itemOperationButtons.AddChild(copyItemButton);
Button removeItemButton = editButtonFactory.Generate("Remove".Localize());
removeItemButton.Margin = new BorderDouble(3, 0);
removeItemButton.Click += new EventHandler(removeButton_Click);
editOperationMultiCapable.Add(true);
editButtonsEnableData.Add(new ButtonEnableData(true, true));
itemOperationButtons.AddChild(removeItemButton);
editButtonFactory.FixedWidth = oldWidth;
@ -696,24 +696,36 @@ namespace MatterHackers.MatterControl.PrintQueue
private void SetEditButtonsStates()
{
int selectedCount = queueDataView.SelectedItems.Count;
bool enabled = (selectedCount > 0);
int i=0;
foreach (var child in itemOperationButtons.Children)
for(int buttonIndex=0; buttonIndex<itemOperationButtons.Children.Count; buttonIndex++)
{
bool enabled = selectedCount > 0;
var child = itemOperationButtons.Children[buttonIndex];
var button = child as Button;
if (button != null)
{
if (selectedCount > 1 && !editOperationMultiCapable[i])
if ((selectedCount > 1 && !editButtonsEnableData[buttonIndex].multipleItems))
{
button.Enabled = false;
enabled = false;
}
else
{
button.Enabled = enabled;
bool enabledState = enabled;
if (!editButtonsEnableData[buttonIndex].protectedItems)
{
// so we can show for multi items lets check for protected items
for (int itemIndex = 0; itemIndex < queueDataView.SelectedItems.Count; itemIndex++)
{
if (queueDataView.SelectedItems[itemIndex].PrintItemWrapper.PrintItem.Protected)
{
enabled = false;
}
}
}
}
button.Enabled = enabled;
}
i++;
}
}

View file

@ -31,14 +31,11 @@ using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.Agg.VertexSource;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DataStorage;
using MatterHackers.MatterControl.PartPreviewWindow;
using MatterHackers.MatterControl.PrinterCommunication;
using MatterHackers.MatterControl.PrintLibrary;
using MatterHackers.VectorMath;
using System;
using System.Globalization;
using System.IO;
namespace MatterHackers.MatterControl.PrintQueue
{

@ -1 +1 @@
Subproject commit 9f99b81f90454df0ca850d79bbaf8dc7e9795f8c
Subproject commit 21ead262054bd626493f4f97eacedae421c39612