Work on Queue 'edit' mode.
This commit is contained in:
parent
6dd447e415
commit
d354a26216
8 changed files with 175 additions and 102 deletions
|
|
@ -35,21 +35,28 @@ using MatterHackers.Agg.UI;
|
|||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.CreatorPlugins;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.MatterControl.SettingsManagement;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class QueueBottomToolbar : GuiWidget
|
||||
public class QueueDataWidget : GuiWidget
|
||||
{
|
||||
TextImageButtonFactory editButtonFactory = new TextImageButtonFactory();
|
||||
TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
PluginChooserWindow pluginChooserWindow;
|
||||
QueueDataView queueDataView;
|
||||
Button enterEditModeButton;
|
||||
Button leaveEditModeButton;
|
||||
|
||||
Button addToQueueButton;
|
||||
Button createButton;
|
||||
|
||||
static Button shopButton;
|
||||
event EventHandler unregisterEvents;
|
||||
|
||||
public QueueBottomToolbar(QueueDataView queueDataView)
|
||||
public QueueDataWidget(QueueDataView queueDataView)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
|
||||
|
|
@ -61,9 +68,33 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
textImageButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
textImageButtonFactory.borderWidth = 0;
|
||||
|
||||
FlowLayoutWidget allControls = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
|
||||
editButtonFactory.normalTextColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
editButtonFactory.hoverTextColor = RGBA_Bytes.White;
|
||||
editButtonFactory.disabledTextColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
editButtonFactory.pressedTextColor = RGBA_Bytes.White;
|
||||
editButtonFactory.borderWidth = 0;
|
||||
editButtonFactory.FixedWidth = 70;
|
||||
|
||||
FlowLayoutWidget allControls = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
{
|
||||
|
||||
enterEditModeButton = editButtonFactory.Generate("Edit".Localize(), centerText: true);
|
||||
leaveEditModeButton = editButtonFactory.Generate("Done".Localize(), centerText: true);
|
||||
leaveEditModeButton.Visible = false;
|
||||
|
||||
FlowLayoutWidget searchPanel = new FlowLayoutWidget();
|
||||
searchPanel.BackgroundColor = ActiveTheme.Instance.TransparentDarkOverlay;
|
||||
searchPanel.HAnchor = HAnchor.ParentLeftRight;
|
||||
searchPanel.Padding = new BorderDouble(0);
|
||||
|
||||
searchPanel.AddChild(enterEditModeButton);
|
||||
searchPanel.AddChild(leaveEditModeButton);
|
||||
|
||||
searchPanel.AddChild(new HorizontalSpacer());
|
||||
|
||||
allControls.AddChild(searchPanel);
|
||||
|
||||
{
|
||||
// Ensure the form opens with no rows selected.
|
||||
//ActiveQueueList.Instance.ClearSelected();
|
||||
|
|
@ -76,17 +107,17 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
buttonPanel1.Padding = new BorderDouble(0, 3);
|
||||
|
||||
{
|
||||
Button addToQueueButton = textImageButtonFactory.Generate(LocalizedString.Get("Add"), "icon_circle_plus.png");
|
||||
addToQueueButton = textImageButtonFactory.Generate(LocalizedString.Get("Add"), "icon_circle_plus.png");
|
||||
buttonPanel1.AddChild(addToQueueButton);
|
||||
addToQueueButton.Margin = new BorderDouble(0, 0, 3, 0);
|
||||
addToQueueButton.Click += new ButtonBase.ButtonEventHandler(addToQueueButton_Click);
|
||||
|
||||
// put in the creator button
|
||||
{
|
||||
Button runCreator = textImageButtonFactory.Generate(LocalizedString.Get("Create"), "icon_creator_white_32x32.png");
|
||||
buttonPanel1.AddChild(runCreator);
|
||||
runCreator.Margin = new BorderDouble(0, 0, 3, 0);
|
||||
runCreator.Click += (sender, e) =>
|
||||
createButton = textImageButtonFactory.Generate(LocalizedString.Get("Create"), "icon_creator_white_32x32.png");
|
||||
buttonPanel1.AddChild(createButton);
|
||||
createButton.Margin = new BorderDouble(0, 0, 3, 0);
|
||||
createButton.Click += (sender, e) =>
|
||||
{
|
||||
OpenPluginChooserWindow();
|
||||
};
|
||||
|
|
@ -117,27 +148,21 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
deleteAllFromQueueButton.Margin = new BorderDouble(3, 0);
|
||||
deleteAllFromQueueButton.Click += new ButtonBase.ButtonEventHandler(deleteAllFromQueueButton_Click);
|
||||
//buttonPanel1.AddChild(deleteAllFromQueueButton);
|
||||
|
||||
buttonPanel1.AddChild(new HorizontalSpacer());
|
||||
|
||||
GuiWidget spacer1 = new GuiWidget();
|
||||
spacer1.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonPanel1.AddChild(spacer1);
|
||||
|
||||
GuiWidget spacer2 = new GuiWidget();
|
||||
spacer2.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonPanel1.AddChild(spacer2);
|
||||
|
||||
FlowLayoutWidget queueMenuSpace = new FlowLayoutWidget();
|
||||
queueMenuSpace.VAnchor = Agg.UI.VAnchor.ParentBottomTop;
|
||||
QueueOptionsMenu queueMenu = new QueueOptionsMenu();
|
||||
queueMenuSpace.AddChild(queueMenu.MenuDropList);
|
||||
buttonPanel1.AddChild(queueMenuSpace);
|
||||
queueMenuContainer = new FlowLayoutWidget();
|
||||
queueMenuContainer.VAnchor = Agg.UI.VAnchor.ParentBottomTop;
|
||||
queueMenu = new QueueOptionsMenu();
|
||||
queueMenuContainer.AddChild(queueMenu.MenuDropList);
|
||||
buttonPanel1.AddChild(queueMenuContainer);
|
||||
|
||||
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent((object sender, EventArgs e) =>
|
||||
{
|
||||
queueMenuSpace.RemoveAllChildren();
|
||||
queueMenuContainer.RemoveAllChildren();
|
||||
// the printer changed reload the queueMenue
|
||||
queueMenu = new QueueOptionsMenu();
|
||||
queueMenuSpace.AddChild(queueMenu.MenuDropList);
|
||||
queueMenuContainer.AddChild(queueMenu.MenuDropList);
|
||||
}, ref unregisterEvents);
|
||||
}
|
||||
allControls.AddChild(buttonPanel1);
|
||||
|
|
@ -145,6 +170,44 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
allControls.AnchorAll();
|
||||
|
||||
this.AddChild(allControls);
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
QueueOptionsMenu queueMenu;
|
||||
FlowLayoutWidget queueMenuContainer;
|
||||
|
||||
void AddHandlers()
|
||||
{
|
||||
enterEditModeButton.Click += enterEditModeButtonClick;
|
||||
leaveEditModeButton.Click += leaveEditModeButtonClick;
|
||||
}
|
||||
|
||||
void enterEditModeButtonClick(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
enterEditModeButton.Visible = false;
|
||||
leaveEditModeButton.Visible = true;
|
||||
queueDataView.EditMode = true;
|
||||
addToQueueButton.Visible = false;
|
||||
createButton.Visible = false;
|
||||
queueMenuContainer.Visible = false;
|
||||
SetVisibleButtons();
|
||||
}
|
||||
|
||||
void leaveEditModeButtonClick(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
enterEditModeButton.Visible = true;
|
||||
leaveEditModeButton.Visible = false;
|
||||
queueDataView.EditMode = false;
|
||||
addToQueueButton.Visible = true;
|
||||
createButton.Visible = true;
|
||||
queueMenuContainer.Visible = true;
|
||||
SetVisibleButtons();
|
||||
|
||||
}
|
||||
|
||||
void SetVisibleButtons()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
|
|
|
|||
|
|
@ -75,10 +75,22 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
{
|
||||
get { return printItems; }
|
||||
}
|
||||
|
||||
private int selectedIndex = -1;
|
||||
public int SelectedIndex
|
||||
{
|
||||
get { return selectedIndex; }
|
||||
set
|
||||
{
|
||||
selectedIndex = value;
|
||||
OnSelectedIndexChanged(new IndexArgs(value));
|
||||
}
|
||||
}
|
||||
|
||||
public RootedObjectEventHandler ItemAdded = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler ItemRemoved = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler OrderChanged = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler SelectedIndexChanged = new RootedObjectEventHandler();
|
||||
|
||||
static QueueData instance;
|
||||
public static QueueData Instance
|
||||
|
|
@ -159,6 +171,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
ItemRemoved.CallEvents(this, e);
|
||||
}
|
||||
|
||||
public void OnSelectedIndexChanged(EventArgs e)
|
||||
{
|
||||
SelectedIndexChanged.CallEvents(this, e);
|
||||
}
|
||||
|
||||
public PrintItemWrapper GetPrintItemWrapper(int index)
|
||||
{
|
||||
if (index >= 0 && index < PrintItems.Count)
|
||||
|
|
|
|||
|
|
@ -201,8 +201,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
RGBA_Bytes selectedColor = new RGBA_Bytes(180, 180, 180, 255);
|
||||
//RGBA_Bytes selectedColor = new RGBA_Bytes(0, 95, 107, 255);
|
||||
RGBA_Bytes baseColor = new RGBA_Bytes(255, 255, 255);
|
||||
|
||||
int selectedIndex = -1;
|
||||
|
||||
int hoverIndex = -1;
|
||||
int dragIndex = -1;
|
||||
|
||||
|
|
@ -218,58 +217,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
{
|
||||
get
|
||||
{
|
||||
return selectedIndex;
|
||||
return QueueData.Instance.SelectedIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value < -1 || value >= topToBottomItemList.Children.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
selectedIndex = value;
|
||||
OnSelectedIndexChanged();
|
||||
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (index == selectedIndex)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isSelectedItem = true;
|
||||
if (!PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && !PrinterConnectionAndCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = true;
|
||||
PrinterConnectionAndCommunication.Instance.ActivePrintItem = ((QueueRowItem)child.Children[0]).PrintItemWrapper;
|
||||
}
|
||||
else if (((QueueRowItem)child.Children[0]).PrintItemWrapper == PrinterConnectionAndCommunication.Instance.ActivePrintItem)
|
||||
{
|
||||
// the selection must be the active print item
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((QueueRowItem)child.Children[0]).isSelectedItem)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isSelectedItem = false;
|
||||
}
|
||||
if (!PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && !PrinterConnectionAndCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
if (((QueueRowItem)child.Children[0]).isActivePrint)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
child.Invalidate();
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
if (QueueData.Instance.Count == 0)
|
||||
{
|
||||
PrinterConnectionAndCommunication.Instance.ActivePrintItem = null;
|
||||
}
|
||||
QueueData.Instance.SelectedIndex = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -356,7 +308,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
AddChild(queueItem);
|
||||
}
|
||||
|
||||
QueueData.Instance.ItemAdded.RegisterEvent(ItemAddedToQueue, ref unregisterEvents);
|
||||
this.MouseLeaveBounds += new EventHandler(control_MouseLeaveBounds);
|
||||
QueueData.Instance.SelectedIndexChanged.RegisterEvent(SelectedIndexChanged, ref unregisterEvents);
|
||||
QueueData.Instance.ItemAdded.RegisterEvent(ItemAddedToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.ItemRemoved.RegisterEvent(ItemRemovedFromToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.OrderChanged.RegisterEvent(QueueOrderChanged, ref unregisterEvents);
|
||||
|
||||
|
|
@ -379,6 +333,51 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
SelectedPrintItem = PrinterConnectionAndCommunication.Instance.ActivePrintItem;
|
||||
}
|
||||
|
||||
void SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
OnSelectedIndexChanged();
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (index == SelectedIndex)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isSelectedItem = true;
|
||||
if (!PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && !PrinterConnectionAndCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = true;
|
||||
PrinterConnectionAndCommunication.Instance.ActivePrintItem = ((QueueRowItem)child.Children[0]).PrintItemWrapper;
|
||||
}
|
||||
else if (((QueueRowItem)child.Children[0]).PrintItemWrapper == PrinterConnectionAndCommunication.Instance.ActivePrintItem)
|
||||
{
|
||||
// the selection must be the active print item
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((QueueRowItem)child.Children[0]).isSelectedItem)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isSelectedItem = false;
|
||||
}
|
||||
if (!PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && !PrinterConnectionAndCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
if (((QueueRowItem)child.Children[0]).isActivePrint)
|
||||
{
|
||||
((QueueRowItem)child.Children[0]).isActivePrint = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
child.Invalidate();
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
if (QueueData.Instance.Count == 0)
|
||||
{
|
||||
PrinterConnectionAndCommunication.Instance.ActivePrintItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
void ItemAddedToQueue(object sender, EventArgs e)
|
||||
{
|
||||
IndexArgs addedIndexArgs = e as IndexArgs;
|
||||
|
|
@ -425,6 +424,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
void control_MouseLeaveBounds(object sender, EventArgs e)
|
||||
{
|
||||
HoverIndex = -1;
|
||||
}
|
||||
|
||||
public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1)
|
||||
{
|
||||
FlowLayoutWidget itemHolder = new FlowLayoutWidget();
|
||||
|
|
@ -545,9 +549,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
public void ClearSelected()
|
||||
{
|
||||
if (selectedIndex != -1)
|
||||
if (SelectedIndex != -1)
|
||||
{
|
||||
selectedIndex = -1;
|
||||
SelectedIndex = -1;
|
||||
OnSelectedIndexChanged();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -199,29 +199,29 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
editButton.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
editButton.Width = 100;
|
||||
|
||||
TextWidget editLabel = new TextWidget("Edit".Localize());
|
||||
TextWidget editLabel = new TextWidget("View".Localize());
|
||||
editLabel.TextColor = RGBA_Bytes.White;
|
||||
editLabel.VAnchor = VAnchor.ParentCenter;
|
||||
editLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
editButton.AddChild(editLabel);
|
||||
editButton.Click += onEditPartClick;
|
||||
editButton.Click += onViewPartClick;
|
||||
|
||||
//buttonFlowContainer.AddChild(editButton);
|
||||
buttonFlowContainer.AddChild(editButton);
|
||||
buttonFlowContainer.AddChild(printButton);
|
||||
|
||||
buttonContainer.AddChild(buttonFlowContainer);
|
||||
//buttonContainer.Width = 200;
|
||||
buttonContainer.Width = 100;
|
||||
buttonContainer.Width = 200;
|
||||
//buttonContainer.Width = 100;
|
||||
|
||||
return buttonContainer;
|
||||
}
|
||||
|
||||
private void onEditPartClick(object sender, MouseEventArgs e)
|
||||
private void onViewPartClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle((state) =>
|
||||
{
|
||||
OpenPartViewWindow(true);
|
||||
OpenPartViewWindow(false);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -415,11 +415,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
void AddHandlers()
|
||||
{
|
||||
ActiveTheme.Instance.ThemeChanged.RegisterEvent(ThemeChanged, ref unregisterEvents);
|
||||
|
||||
PrintItemWrapper.SlicingOutputMessage.RegisterEvent(PrintItem_SlicingOutputMessage, ref unregisterEvents);
|
||||
|
||||
MouseEnterBounds += new EventHandler(PrintQueueItem_MouseEnterBounds);
|
||||
MouseLeaveBounds += new EventHandler(PrintQueueItem_MouseLeaveBounds);
|
||||
}
|
||||
|
||||
void PrintItem_SlicingOutputMessage(object sender, EventArgs e)
|
||||
|
|
@ -438,16 +434,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
this.Margin = new BorderDouble(6,0,6,6);
|
||||
}
|
||||
|
||||
void PrintQueueItem_MouseLeaveBounds(object sender, EventArgs e)
|
||||
{
|
||||
editControls.Visible = false;
|
||||
}
|
||||
|
||||
void PrintQueueItem_MouseEnterBounds(object sender, EventArgs e)
|
||||
{
|
||||
editControls.Visible = true;
|
||||
}
|
||||
|
||||
class PartToAddToQueue
|
||||
{
|
||||
internal string Name;
|
||||
|
|
@ -539,7 +525,8 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
|
||||
int thisIndexInQueue = QueueData.Instance.GetIndex(PrintItemWrapper);
|
||||
QueueData.Instance.RemoveIndexOnIdle(thisIndexInQueue);
|
||||
QueueData.Instance.RemoveIndexOnIdle(thisIndexInQueue);
|
||||
|
||||
}
|
||||
|
||||
public static void ShowCantFindFileMessage(PrintItemWrapper printItemWrapper)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue