partial refactor to queue
This commit is contained in:
parent
95fec91905
commit
65e487dbc3
4 changed files with 91 additions and 215 deletions
|
|
@ -108,6 +108,75 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public void MoveToNext()
|
||||
{
|
||||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
{
|
||||
if (this.SelectedIndex == Count - 1)
|
||||
{
|
||||
this.SelectedIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SelectedIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PrintItemWrapper SelectedPrintItem
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex >= 0)
|
||||
{
|
||||
return QueueData.Instance.GetPrintItemWrapper(SelectedIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (SelectedPrintItem != value)
|
||||
{
|
||||
for (int index = 0; index < QueueData.Instance.PrintItems.Count; index++)
|
||||
{
|
||||
if (PrintItems[index] == value)
|
||||
{
|
||||
SelectedIndex = index;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("Item not in queue.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void EnsureSelection()
|
||||
{
|
||||
if (Count > 0)
|
||||
{
|
||||
if (SelectedIndex < 0)
|
||||
{
|
||||
SelectedIndex = 0;
|
||||
}
|
||||
else if (SelectedIndex > Count - 1)
|
||||
{
|
||||
SelectedIndex = Count - 1;
|
||||
}
|
||||
|
||||
// force a refresh of the ui in the case where we are still on the same index but have changed items.
|
||||
SelectedIndex = SelectedIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
public void SwapItemsOnIdle(int indexA, int indexB)
|
||||
{
|
||||
UiThread.RunOnIdle(SwapItems, new SwapIndexArgs(indexA, indexB));
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
{
|
||||
public class QueueDataView : ScrollableWidget
|
||||
{
|
||||
public static int selectedQueueItemIndex = -1;
|
||||
|
||||
private event EventHandler unregisterEvents;
|
||||
|
||||
// make this private so it can only be built from the Instance
|
||||
|
|
@ -69,7 +67,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
if (this.editMode == false)
|
||||
{
|
||||
this.ClearSelectedItems();
|
||||
this.EnsureSelection();
|
||||
SetMultiSelectToMatchSingleSelect();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -83,6 +81,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
private void SetMultiSelectToMatchSingleSelect()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void ClearSelectedItems()
|
||||
{
|
||||
foreach (var item in SelectedItems)
|
||||
|
|
@ -108,90 +111,8 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public void EnsureSelection()
|
||||
{
|
||||
if (Count > 0)
|
||||
{
|
||||
if (SelectedIndex < 0)
|
||||
{
|
||||
SelectedIndex = 0;
|
||||
}
|
||||
else if (SelectedIndex > Count - 1)
|
||||
{
|
||||
SelectedIndex = Count - 1;
|
||||
}
|
||||
|
||||
// force a refresh of the ui in the case where we are still on the same index but have changed items.
|
||||
SelectedIndex = SelectedIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveToNext()
|
||||
{
|
||||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
{
|
||||
if (this.SelectedIndex == Count - 1)
|
||||
{
|
||||
this.SelectedIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SelectedIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveSelectedToBottom()
|
||||
{
|
||||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
{
|
||||
int currentIndex = SelectedIndex;
|
||||
PrintItem replacementItem = new PrintItem(SelectedPrintItem.Name, SelectedPrintItem.FileLocation);
|
||||
QueueData.Instance.RemoveAt(SelectedIndex);
|
||||
this.SelectedIndex = currentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
public SelectedListItems<QueueRowItem> SelectedItems = new SelectedListItems<QueueRowItem>();
|
||||
|
||||
public PrintItemWrapper SelectedPrintItem
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex >= 0)
|
||||
{
|
||||
return QueueData.Instance.GetPrintItemWrapper(SelectedIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (SelectedPrintItem != value)
|
||||
{
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
QueueRowItem rowItem = child.Children[0] as QueueRowItem;
|
||||
if (rowItem.PrintItemWrapper == value)
|
||||
{
|
||||
SelectedIndex = index;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("Item not in queue.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public QueueRowItem GetPrintQueueItem(int index)
|
||||
{
|
||||
if (index >= 0 && index < topToBottomItemList.Children.Count)
|
||||
|
|
@ -231,18 +152,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return QueueData.Instance.SelectedIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
QueueData.Instance.SelectedIndex = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void SendToChildren(object objectToRout)
|
||||
{
|
||||
base.SendToChildren(objectToRout);
|
||||
|
|
@ -271,26 +180,17 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
QueueData.Instance.SelectedIndexChanged.RegisterEvent(SelectedIndexChanged, ref unregisterEvents);
|
||||
QueueData.Instance.ItemAdded.RegisterEvent(ItemAddedToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.ItemRemoved.RegisterEvent(ItemRemovedFromToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.ItemRemoved.RegisterEvent(ItemRemovedFromQueue, ref unregisterEvents);
|
||||
QueueData.Instance.OrderChanged.RegisterEvent(QueueOrderChanged, ref unregisterEvents);
|
||||
|
||||
PrinterConnectionAndCommunication.Instance.ActivePrintItemChanged.RegisterEvent(PrintItemChange, ref unregisterEvents);
|
||||
|
||||
WidescreenPanel.PreChangePanels.RegisterEvent(SaveCurrentlySelctedItemIndex, ref unregisterEvents);
|
||||
|
||||
selectedQueueItemIndex = Math.Min(selectedQueueItemIndex, QueueData.Instance.Count - 1);
|
||||
SelectedIndex = selectedQueueItemIndex;
|
||||
EnsureSelection();
|
||||
}
|
||||
|
||||
private void SaveCurrentlySelctedItemIndex(object sender, EventArgs e)
|
||||
{
|
||||
selectedQueueItemIndex = SelectedIndex;
|
||||
QueueData.Instance.EnsureSelection();
|
||||
}
|
||||
|
||||
private void PrintItemChange(object sender, EventArgs e)
|
||||
{
|
||||
SelectedPrintItem = PrinterConnectionAndCommunication.Instance.ActivePrintItem;
|
||||
QueueData.Instance.SelectedPrintItem = PrinterConnectionAndCommunication.Instance.ActivePrintItem;
|
||||
}
|
||||
|
||||
private void SelectedIndexChanged(object sender, EventArgs e)
|
||||
|
|
@ -298,13 +198,12 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
// Skip this processing while in EditMode
|
||||
if (this.editMode) return;
|
||||
|
||||
OnSelectedIndexChanged();
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
var queueRowItem = (QueueRowItem)child.Children[0];
|
||||
|
||||
if (index == SelectedIndex)
|
||||
if (index == QueueData.Instance.SelectedIndex)
|
||||
{
|
||||
if (!PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && !PrinterConnectionAndCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
|
|
@ -351,19 +250,12 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
PrintItemWrapper item = QueueData.Instance.GetPrintItemWrapper(addedIndexArgs.Index);
|
||||
QueueRowItem queueItem = new QueueRowItem(item, this);
|
||||
AddChild(queueItem, addedIndexArgs.Index);
|
||||
|
||||
EnsureSelection();
|
||||
}
|
||||
|
||||
private void ItemRemovedFromToQueue(object sender, EventArgs e)
|
||||
private void ItemRemovedFromQueue(object sender, EventArgs e)
|
||||
{
|
||||
IndexArgs removeIndexArgs = e as IndexArgs;
|
||||
topToBottomItemList.RemoveChild(removeIndexArgs.Index);
|
||||
EnsureSelection();
|
||||
if (QueueData.Instance.Count > 0 && SelectedIndex > QueueData.Instance.Count - 1)
|
||||
{
|
||||
SelectedIndex = Math.Max(SelectedIndex - 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void QueueOrderChanged(object sender, EventArgs e)
|
||||
|
|
@ -371,12 +263,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void OnLoad(EventArgs args)
|
||||
{
|
||||
EnsureSelection();
|
||||
base.OnLoad(args);
|
||||
}
|
||||
|
||||
public override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (unregisterEvents != null)
|
||||
|
|
@ -455,7 +341,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (child == widgetClicked)
|
||||
{
|
||||
SelectedIndex = index;
|
||||
QueueData.Instance.SelectedIndex = index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -463,9 +349,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
private void itemToAdd_MouseLeaveBounds(object sender, EventArgs e)
|
||||
{
|
||||
GuiWidget widgetLeft = ((GuiWidget)sender);
|
||||
if (SelectedIndex >= 0)
|
||||
if (QueueData.Instance.SelectedIndex >= 0)
|
||||
{
|
||||
if (widgetLeft != topToBottomItemList.Children[SelectedIndex])
|
||||
if (widgetLeft != topToBottomItemList.Children[QueueData.Instance.SelectedIndex])
|
||||
{
|
||||
widgetLeft.BackgroundColor = new RGBA_Bytes();
|
||||
widgetLeft.Invalidate();
|
||||
|
|
@ -495,15 +381,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
return false;
|
||||
}
|
||||
|
||||
public void OnSelectedIndexChanged()
|
||||
{
|
||||
Invalidate();
|
||||
if (SelectedValueChanged != null)
|
||||
{
|
||||
SelectedValueChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnHoverIndexChanged()
|
||||
{
|
||||
Invalidate();
|
||||
|
|
@ -512,46 +389,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
HoverValueChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearSelected()
|
||||
{
|
||||
if (SelectedIndex != -1)
|
||||
{
|
||||
SelectedIndex = -1;
|
||||
OnSelectedIndexChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public GuiWidget SelectedItem
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex != -1
|
||||
&& topToBottomItemList.Children?.Count > SelectedIndex
|
||||
&& topToBottomItemList.Children[SelectedIndex].Children?.Count > 0)
|
||||
{
|
||||
return topToBottomItemList.Children[SelectedIndex].Children[0];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
for (int i = 0; i < Children.Count; i++)
|
||||
{
|
||||
if (topToBottomItemList.Children[SelectedIndex].Children[0] == value)
|
||||
{
|
||||
SelectedIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public QueueRowItem SelectedPrintQueueItem()
|
||||
{
|
||||
return GetPrintQueueItem(SelectedIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public class PrintItemAction
|
||||
|
|
|
|||
|
|
@ -243,10 +243,12 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
allControls.AnchorAll();
|
||||
|
||||
this.AddChild(allControls);
|
||||
AddHandlers();
|
||||
SetEditButtonsStates();
|
||||
|
||||
//enterEditModeButtonClick(null, null);
|
||||
queueDataView.SelectedItems.OnAdd += (s, e) => SetEditButtonsStates();
|
||||
queueDataView.SelectedItems.OnRemove += (s, e) => SetEditButtonsStates();
|
||||
QueueData.Instance.SelectedIndexChanged.RegisterEvent((s,e) => SetEditButtonsStates(), ref unregisterEvents);
|
||||
|
||||
SetEditButtonsStates();
|
||||
}
|
||||
|
||||
private void CreateEditBarButtons()
|
||||
|
|
@ -433,31 +435,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
base.OnDragOver(fileDropEventArgs);
|
||||
}
|
||||
|
||||
private void AddHandlers()
|
||||
{
|
||||
queueDataView.SelectedItems.OnAdd += onLibraryItemsSelectChanged;
|
||||
queueDataView.SelectedItems.OnRemove += onLibraryItemsSelectChanged;
|
||||
QueueData.Instance.SelectedIndexChanged.RegisterEvent(PrintItemSelectionChanged, ref unregisterEvents);
|
||||
}
|
||||
|
||||
void PrintItemSelectionChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!queueDataView.EditMode)
|
||||
{
|
||||
// Set the selection to the selected print item.
|
||||
QueueRowItem selectedItem = queueDataView.SelectedItem as QueueRowItem;
|
||||
if (selectedItem != null)
|
||||
{
|
||||
if (this.queueDataView.SelectedItems.Count > 0
|
||||
|| !this.queueDataView.SelectedItems.Contains(selectedItem))
|
||||
{
|
||||
this.queueDataView.ClearSelectedItems();
|
||||
this.queueDataView.SelectedItems.Add(selectedItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddItemsToQueue()
|
||||
{
|
||||
FileDialog.OpenFileDialog(
|
||||
|
|
@ -612,8 +589,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
enterEditModeButton.Visible = true;
|
||||
leaveEditModeButton.Visible = false;
|
||||
queueDataView.EditMode = false;
|
||||
|
||||
PrintItemSelectionChanged(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -622,11 +597,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
LeaveEditMode();
|
||||
}
|
||||
|
||||
private void onLibraryItemsSelectChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetEditButtonsStates();
|
||||
}
|
||||
|
||||
private void OpenExportWindow(PrintItemWrapper printItem)
|
||||
{
|
||||
if (exportingWindowIsOpen == false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue