New library code to support collections.
This commit is contained in:
parent
60a38735b9
commit
ba2f54e652
11 changed files with 596 additions and 180 deletions
|
|
@ -177,6 +177,14 @@ namespace MatterHackers.MatterControl.DataStorage
|
|||
|
||||
public class PrintItemCollection : Entity
|
||||
{
|
||||
public PrintItemCollection()
|
||||
{ }
|
||||
|
||||
public PrintItemCollection(string name, string id)
|
||||
{
|
||||
this.Name = name;
|
||||
}
|
||||
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -205,6 +205,8 @@
|
|||
<Compile Include="PrinterControls\TerminalWindow\TextScrollWidget.cs" />
|
||||
<Compile Include="PrinterControls\TerminalWindow\TerminalWidget.cs" />
|
||||
<Compile Include="PrintHistory\PrintHistoryData.cs" />
|
||||
<Compile Include="PrintLibrary\LibraryRowItemCollection.cs" />
|
||||
<Compile Include="PrintLibrary\LibraryRowItemPart.cs" />
|
||||
<Compile Include="PrintLibrary\Provider\LibraryProviderFileSystem.cs" />
|
||||
<Compile Include="PrintLibrary\Provider\LibrarySQLiteData.cs" />
|
||||
<Compile Include="PrintLibrary\Provider\LibraryProviderSQLite.cs" />
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ using MatterHackers.Agg.UI;
|
|||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrintLibrary
|
||||
{
|
||||
|
|
@ -188,21 +189,9 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
AutoScroll = true;
|
||||
topToBottomItemList = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
topToBottomItemList.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
base.AddChild(topToBottomItemList);
|
||||
AddChild(topToBottomItemList);
|
||||
|
||||
for (int i = 0; i < LibraryProvider.CurrentProvider.CollectionCount; i++)
|
||||
{
|
||||
PrintItemWrapper item = LibraryProvider.CurrentProvider.GetCollectionItemWrapper(i);
|
||||
LibraryRowItem queueItem = new LibraryRowItem(item, this);
|
||||
AddChild(queueItem);
|
||||
}
|
||||
|
||||
for (int i = 0; i < LibraryProvider.CurrentProvider.ItemCount; i++)
|
||||
{
|
||||
PrintItemWrapper item = LibraryProvider.CurrentProvider.GetPrintItemWrapper(i);
|
||||
LibraryRowItem queueItem = new LibraryRowItem(item, this);
|
||||
AddChild(queueItem);
|
||||
}
|
||||
AddAllItems();
|
||||
|
||||
this.MouseLeaveBounds += new EventHandler(control_MouseLeaveBounds);
|
||||
LibraryProvider.DataReloaded.RegisterEvent(LibraryDataReloaded, ref unregisterEvents);
|
||||
|
|
@ -210,17 +199,31 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
LibraryProvider.ItemRemoved.RegisterEvent(ItemRemovedFromToLibrary, ref unregisterEvents);
|
||||
}
|
||||
|
||||
private void LibraryDataReloaded(object sender, EventArgs e)
|
||||
private void AddAllItems()
|
||||
{
|
||||
this.RemoveListItems();
|
||||
topToBottomItemList.RemoveAllChildren();
|
||||
|
||||
for (int i = 0; i < LibraryProvider.CurrentProvider.CollectionCount; i++)
|
||||
{
|
||||
PrintItemCollection item = LibraryProvider.CurrentProvider.GetCollectionItem(i);
|
||||
LibraryRowItem queueItem = new LibraryRowItemCollection(item, this);
|
||||
AddListItemToTopToBottom(queueItem);
|
||||
}
|
||||
|
||||
for (int i = 0; i < LibraryProvider.CurrentProvider.ItemCount; i++)
|
||||
{
|
||||
PrintItemWrapper item = LibraryProvider.CurrentProvider.GetPrintItemWrapper(i);
|
||||
LibraryRowItem queueItem = new LibraryRowItem(item, this);
|
||||
AddChild(queueItem);
|
||||
LibraryRowItem queueItem = new LibraryRowItemPart(item, this);
|
||||
AddListItemToTopToBottom(queueItem);
|
||||
}
|
||||
}
|
||||
|
||||
private void LibraryDataReloaded(object sender, EventArgs e)
|
||||
{
|
||||
AddAllItems();
|
||||
}
|
||||
|
||||
|
||||
public override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (unregisterEvents != null)
|
||||
|
|
@ -234,8 +237,8 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
IndexArgs addedIndexArgs = e as IndexArgs;
|
||||
PrintItemWrapper item = LibraryProvider.CurrentProvider.GetPrintItemWrapper(addedIndexArgs.Index);
|
||||
LibraryRowItem libraryItem = new LibraryRowItem(item, this);
|
||||
AddChild(libraryItem, addedIndexArgs.Index);
|
||||
LibraryRowItem libraryItem = new LibraryRowItemPart(item, this);
|
||||
AddListItemToTopToBottom(libraryItem, addedIndexArgs.Index);
|
||||
}
|
||||
|
||||
private void ItemRemovedFromToLibrary(object sender, EventArgs e)
|
||||
|
|
@ -249,10 +252,10 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
}
|
||||
}
|
||||
|
||||
public override void AddChild(GuiWidget child, int indexInChildrenList = -1)
|
||||
public void AddListItemToTopToBottom(GuiWidget child, int indexInChildrenList = -1)
|
||||
{
|
||||
FlowLayoutWidget itemHolder = new FlowLayoutWidget();
|
||||
itemHolder.Name = "LB item holder";
|
||||
itemHolder.Name = "list item holder";
|
||||
itemHolder.Margin = new BorderDouble(0, 0, 0, 0);
|
||||
itemHolder.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
itemHolder.AddChild(child);
|
||||
|
|
@ -305,7 +308,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
foreach (LibraryRowItem item in SelectedItems)
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(item.printItemWrapper);
|
||||
item.RemoveFromParentCollection();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -326,11 +329,6 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
}
|
||||
}
|
||||
|
||||
public void RemoveListItems()
|
||||
{
|
||||
topToBottomItemList.RemoveAllChildren();
|
||||
}
|
||||
|
||||
private void itemHolder_ParentChanged(object sender, EventArgs e)
|
||||
{
|
||||
FlowLayoutWidget itemHolder = (FlowLayoutWidget)sender;
|
||||
|
|
|
|||
|
|
@ -41,24 +41,20 @@ using System.IO;
|
|||
|
||||
namespace MatterHackers.MatterControl.PrintLibrary
|
||||
{
|
||||
public class LibraryRowItem : GuiWidget
|
||||
public abstract class LibraryRowItem : GuiWidget
|
||||
{
|
||||
public PrintItemWrapper printItemWrapper;
|
||||
public RGBA_Bytes WidgetTextColor;
|
||||
public RGBA_Bytes WidgetBackgroundColor;
|
||||
|
||||
public bool isActivePrint = false;
|
||||
public bool isSelectedItem = false;
|
||||
|
||||
private bool isHoverItem = false;
|
||||
private TextWidget partLabel;
|
||||
protected TextWidget partLabel;
|
||||
public CheckBox selectionCheckBox;
|
||||
private LinkButtonFactory linkButtonFactory = new LinkButtonFactory();
|
||||
private bool viewWindowIsOpen = false;
|
||||
private PartPreviewMainWindow viewingWindow;
|
||||
private LibraryDataView libraryDataView;
|
||||
private SlideWidget rightButtonOverlay;
|
||||
private GuiWidget selectionCheckBoxContainer;
|
||||
protected LibraryDataView libraryDataView;
|
||||
protected SlideWidget rightButtonOverlay;
|
||||
protected GuiWidget selectionCheckBoxContainer;
|
||||
private bool editMode = false;
|
||||
|
||||
public bool EditMode
|
||||
|
|
@ -93,10 +89,13 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
}
|
||||
}
|
||||
|
||||
public LibraryRowItem(PrintItemWrapper printItem, LibraryDataView libraryDataView)
|
||||
public LibraryRowItem(LibraryDataView libraryDataView)
|
||||
{
|
||||
this.libraryDataView = libraryDataView;
|
||||
this.printItemWrapper = printItem;
|
||||
}
|
||||
|
||||
protected void CreateGuiElements()
|
||||
{
|
||||
this.Cursor = Cursors.Hand;
|
||||
|
||||
linkButtonFactory.fontSize = 10;
|
||||
|
|
@ -121,8 +120,6 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
primaryFlow.HAnchor = HAnchor.ParentLeftRight;
|
||||
primaryFlow.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
PartThumbnailWidget thumbnailWidget = new PartThumbnailWidget(printItem, "part_icon_transparent_40x40.png", "building_thumbnail_40x40.png", PartThumbnailWidget.ImageSizes.Size50x50);
|
||||
|
||||
selectionCheckBoxContainer = new GuiWidget();
|
||||
selectionCheckBoxContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
selectionCheckBoxContainer.Width = 40;
|
||||
|
|
@ -138,7 +135,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
middleColumn.VAnchor = Agg.UI.VAnchor.ParentBottomTop;
|
||||
middleColumn.Margin = new BorderDouble(10, 6);
|
||||
{
|
||||
string labelName = textInfo.ToTitleCase(printItem.Name);
|
||||
string labelName = textInfo.ToTitleCase(GetItemName());
|
||||
labelName = labelName.Replace('_', ' ');
|
||||
partLabel = new TextWidget(labelName, pointSize: 14);
|
||||
partLabel.TextColor = WidgetTextColor;
|
||||
|
|
@ -147,7 +144,9 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
middleColumn.AddChild(partLabel);
|
||||
}
|
||||
primaryFlow.AddChild(selectionCheckBoxContainer);
|
||||
primaryFlow.AddChild(thumbnailWidget);
|
||||
|
||||
|
||||
primaryFlow.AddChild(GetThumbnailWidget());
|
||||
primaryFlow.AddChild(middleColumn);
|
||||
|
||||
primaryContainer.AddChild(primaryFlow);
|
||||
|
|
@ -169,60 +168,13 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
AddHandlers();
|
||||
}
|
||||
|
||||
protected abstract string GetItemName();
|
||||
|
||||
protected abstract GuiWidget GetThumbnailWidget();
|
||||
|
||||
private ConditionalClickWidget primaryClickContainer;
|
||||
|
||||
private SlideWidget getItemActionButtons()
|
||||
{
|
||||
SlideWidget buttonContainer = new SlideWidget();
|
||||
buttonContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
FlowLayoutWidget buttonFlowContainer = new FlowLayoutWidget(FlowDirection.LeftToRight);
|
||||
buttonFlowContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
TextWidget printLabel = new TextWidget("Print".Localize());
|
||||
printLabel.TextColor = RGBA_Bytes.White;
|
||||
printLabel.VAnchor = VAnchor.ParentCenter;
|
||||
printLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
FatFlatClickWidget printButton = new FatFlatClickWidget(printLabel);
|
||||
printButton.VAnchor = VAnchor.ParentBottomTop;
|
||||
printButton.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||
printButton.Width = 100;
|
||||
printButton.Click += (sender, e) =>
|
||||
{
|
||||
if (!PrinterCommunication.PrinterConnectionAndCommunication.Instance.PrintIsActive)
|
||||
{
|
||||
QueueData.Instance.AddItem(this.printItemWrapper, 0);
|
||||
QueueData.Instance.SelectedIndex = QueueData.Instance.Count - 1;
|
||||
PrinterCommunication.PrinterConnectionAndCommunication.Instance.PrintActivePartIfPossible();
|
||||
}
|
||||
else
|
||||
{
|
||||
QueueData.Instance.AddItem(this.printItemWrapper);
|
||||
}
|
||||
buttonContainer.SlideOut();
|
||||
this.Invalidate();
|
||||
}; ;
|
||||
|
||||
TextWidget viewButtonLabel = new TextWidget("View".Localize());
|
||||
viewButtonLabel.TextColor = RGBA_Bytes.White;
|
||||
viewButtonLabel.VAnchor = VAnchor.ParentCenter;
|
||||
viewButtonLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
FatFlatClickWidget viewButton = new FatFlatClickWidget(viewButtonLabel);
|
||||
viewButton.VAnchor = VAnchor.ParentBottomTop;
|
||||
viewButton.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
viewButton.Width = 100;
|
||||
viewButton.Click += onViewPartClick;
|
||||
|
||||
buttonFlowContainer.AddChild(viewButton);
|
||||
buttonFlowContainer.AddChild(printButton);
|
||||
|
||||
buttonContainer.AddChild(buttonFlowContainer);
|
||||
buttonContainer.Width = 200;
|
||||
|
||||
return buttonContainer;
|
||||
}
|
||||
protected abstract SlideWidget getItemActionButtons();
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
|
|
@ -318,65 +270,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
}
|
||||
|
||||
private void RemoveThisFromPrintLibrary()
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(this.printItemWrapper);
|
||||
}
|
||||
|
||||
private void onRemoveLinkClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveThisFromPrintLibrary);
|
||||
}
|
||||
|
||||
private void onOpenPartViewClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(() => openPartView());
|
||||
}
|
||||
|
||||
private void onViewPartClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
this.rightButtonOverlay.SlideOut();
|
||||
openPartView(View3DWidget.OpenMode.Viewing);
|
||||
});
|
||||
}
|
||||
|
||||
public void OpenPartViewWindow(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
|
||||
{
|
||||
if (viewWindowIsOpen == false)
|
||||
{
|
||||
viewingWindow = new PartPreviewMainWindow(this.printItemWrapper, View3DWidget.AutoRotate.Enabled, openMode);
|
||||
this.viewWindowIsOpen = true;
|
||||
viewingWindow.Closed += new EventHandler(PartPreviewMainWindow_Closed);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (viewingWindow != null)
|
||||
{
|
||||
viewingWindow.BringToFront();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void PartPreviewMainWindow_Closed(object sender, EventArgs e)
|
||||
{
|
||||
viewWindowIsOpen = false;
|
||||
}
|
||||
|
||||
private void openPartView(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
|
||||
{
|
||||
string pathAndFile = this.printItemWrapper.FileLocation;
|
||||
if (File.Exists(pathAndFile))
|
||||
{
|
||||
OpenPartViewWindow(openMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = String.Format("Cannot find\n'{0}'.\nWould you like to remove it from the library?", pathAndFile);
|
||||
StyledMessageBox.ShowMessageBox(null, message, "Item not found", StyledMessageBox.MessageType.YES_NO);
|
||||
}
|
||||
}
|
||||
protected abstract void RemoveThisFromPrintLibrary();
|
||||
|
||||
private void onConfirmRemove(bool messageBoxResponse)
|
||||
{
|
||||
|
|
@ -430,5 +324,15 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
this.selectionCheckBox.TextColor = RGBA_Bytes.Black;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void RemoveFromParentCollection();
|
||||
|
||||
public abstract void AddToQueue();
|
||||
|
||||
public abstract void RemoveFromCollection();
|
||||
|
||||
public abstract void Edit();
|
||||
|
||||
public abstract void Export();
|
||||
}
|
||||
}
|
||||
161
PrintLibrary/LibraryRowItemCollection.cs
Normal file
161
PrintLibrary/LibraryRowItemCollection.cs
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
/*
|
||||
Copyright (c) 2014, Kevin Pope
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those
|
||||
of the authors and should not be interpreted as representing official policies,
|
||||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
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.PrintLibrary.Provider;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrintLibrary
|
||||
{
|
||||
public class LibraryRowItemCollection : LibraryRowItem
|
||||
{
|
||||
PrintItemCollection collection;
|
||||
|
||||
public LibraryRowItemCollection(PrintItemCollection collection, LibraryDataView libraryDataView)
|
||||
: base(libraryDataView)
|
||||
{
|
||||
this.collection = collection;
|
||||
CreateGuiElements();
|
||||
}
|
||||
|
||||
public override void Export()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void Edit()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void RemoveFromCollection()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void AddToQueue()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void RemoveFromParentCollection()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private ConditionalClickWidget primaryClickContainer;
|
||||
|
||||
protected override GuiWidget GetThumbnailWidget()
|
||||
{
|
||||
PartThumbnailWidget thumbnailWidget = new PartThumbnailWidget(null, "part_icon_transparent_40x40.png", "building_thumbnail_40x40.png", PartThumbnailWidget.ImageSizes.Size50x50);
|
||||
return thumbnailWidget;
|
||||
}
|
||||
|
||||
protected override string GetItemName()
|
||||
{
|
||||
return collection.Name;
|
||||
}
|
||||
|
||||
protected override SlideWidget getItemActionButtons()
|
||||
{
|
||||
SlideWidget buttonContainer = new SlideWidget();
|
||||
buttonContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
FlowLayoutWidget buttonFlowContainer = new FlowLayoutWidget(FlowDirection.LeftToRight);
|
||||
buttonFlowContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
TextWidget openLabel = new TextWidget("Open".Localize());
|
||||
openLabel.TextColor = RGBA_Bytes.White;
|
||||
openLabel.VAnchor = VAnchor.ParentCenter;
|
||||
openLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
FatFlatClickWidget openButton = new FatFlatClickWidget(openLabel);
|
||||
openButton.VAnchor = VAnchor.ParentBottomTop;
|
||||
openButton.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||
openButton.Width = 100;
|
||||
openButton.Click += (sender, e) =>
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
};
|
||||
|
||||
buttonFlowContainer.AddChild(openButton);
|
||||
|
||||
buttonContainer.AddChild(buttonFlowContainer);
|
||||
buttonContainer.Width = 200;
|
||||
|
||||
return buttonContainer;
|
||||
}
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
//this.VAnchor = Agg.UI.VAnchor.FitToChildren;
|
||||
this.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
|
||||
if (ActiveTheme.Instance.DisplayMode == ActiveTheme.ApplicationDisplayType.Touchscreen)
|
||||
{
|
||||
this.Height = 65;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Height = 50;
|
||||
}
|
||||
|
||||
this.Padding = new BorderDouble(0);
|
||||
this.Margin = new BorderDouble(6, 0, 6, 6);
|
||||
}
|
||||
|
||||
private void onAddLinkClick(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void RemoveThisFromPrintLibrary()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void onRemoveLinkClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveThisFromPrintLibrary);
|
||||
}
|
||||
|
||||
private void onThemeChanged(object sender, EventArgs e)
|
||||
{
|
||||
//Set background and text color to new theme
|
||||
this.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
355
PrintLibrary/LibraryRowItemPart.cs
Normal file
355
PrintLibrary/LibraryRowItemPart.cs
Normal file
|
|
@ -0,0 +1,355 @@
|
|||
/*
|
||||
Copyright (c) 2014, Kevin Pope
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those
|
||||
of the authors and should not be interpreted as representing official policies,
|
||||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||
using MatterHackers.MatterControl.PrintLibrary.Provider;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrintLibrary
|
||||
{
|
||||
public class LibraryRowItemPart : LibraryRowItem
|
||||
{
|
||||
public PrintItemWrapper printItemWrapper;
|
||||
|
||||
private ExportPrintItemWindow exportingWindow;
|
||||
|
||||
public bool isActivePrint = false;
|
||||
|
||||
private PartPreviewMainWindow viewingWindow;
|
||||
|
||||
public LibraryRowItemPart(PrintItemWrapper printItem, LibraryDataView libraryDataView)
|
||||
: base(libraryDataView)
|
||||
{
|
||||
this.printItemWrapper = printItem;
|
||||
CreateGuiElements();
|
||||
}
|
||||
|
||||
private ConditionalClickWidget primaryClickContainer;
|
||||
|
||||
protected override SlideWidget getItemActionButtons()
|
||||
{
|
||||
SlideWidget buttonContainer = new SlideWidget();
|
||||
buttonContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
FlowLayoutWidget buttonFlowContainer = new FlowLayoutWidget(FlowDirection.LeftToRight);
|
||||
buttonFlowContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
|
||||
TextWidget printLabel = new TextWidget("Print".Localize());
|
||||
printLabel.TextColor = RGBA_Bytes.White;
|
||||
printLabel.VAnchor = VAnchor.ParentCenter;
|
||||
printLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
FatFlatClickWidget printButton = new FatFlatClickWidget(printLabel);
|
||||
printButton.VAnchor = VAnchor.ParentBottomTop;
|
||||
printButton.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||
printButton.Width = 100;
|
||||
printButton.Click += (sender, e) =>
|
||||
{
|
||||
if (!PrinterCommunication.PrinterConnectionAndCommunication.Instance.PrintIsActive)
|
||||
{
|
||||
QueueData.Instance.AddItem(this.printItemWrapper, 0);
|
||||
QueueData.Instance.SelectedIndex = QueueData.Instance.Count - 1;
|
||||
PrinterCommunication.PrinterConnectionAndCommunication.Instance.PrintActivePartIfPossible();
|
||||
}
|
||||
else
|
||||
{
|
||||
QueueData.Instance.AddItem(this.printItemWrapper);
|
||||
}
|
||||
buttonContainer.SlideOut();
|
||||
this.Invalidate();
|
||||
}; ;
|
||||
|
||||
TextWidget viewButtonLabel = new TextWidget("View".Localize());
|
||||
viewButtonLabel.TextColor = RGBA_Bytes.White;
|
||||
viewButtonLabel.VAnchor = VAnchor.ParentCenter;
|
||||
viewButtonLabel.HAnchor = HAnchor.ParentCenter;
|
||||
|
||||
FatFlatClickWidget viewButton = new FatFlatClickWidget(viewButtonLabel);
|
||||
viewButton.VAnchor = VAnchor.ParentBottomTop;
|
||||
viewButton.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
viewButton.Width = 100;
|
||||
viewButton.Click += onViewPartClick;
|
||||
|
||||
buttonFlowContainer.AddChild(viewButton);
|
||||
buttonFlowContainer.AddChild(printButton);
|
||||
|
||||
buttonContainer.AddChild(buttonFlowContainer);
|
||||
buttonContainer.Width = 200;
|
||||
|
||||
return buttonContainer;
|
||||
}
|
||||
|
||||
private void ExportQueueItemWindow_Closed(object sender, EventArgs e)
|
||||
{
|
||||
exportingWindow = null;
|
||||
}
|
||||
|
||||
private void OpenExportWindow()
|
||||
{
|
||||
if (exportingWindow == null)
|
||||
{
|
||||
exportingWindow = new ExportPrintItemWindow(this.printItemWrapper);
|
||||
exportingWindow.Closed += new EventHandler(ExportQueueItemWindow_Closed);
|
||||
exportingWindow.ShowAsSystemWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
exportingWindow.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenExportWindow(PrintItemWrapper printItem)
|
||||
{
|
||||
if (exportingWindow == null)
|
||||
{
|
||||
exportingWindow = new ExportPrintItemWindow(printItem);
|
||||
exportingWindow.Closed += new EventHandler(ExportQueueItemWindow_Closed);
|
||||
exportingWindow.ShowAsSystemWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
exportingWindow.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
//this.VAnchor = Agg.UI.VAnchor.FitToChildren;
|
||||
this.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
|
||||
if (ActiveTheme.Instance.DisplayMode == ActiveTheme.ApplicationDisplayType.Touchscreen)
|
||||
{
|
||||
this.Height = 65;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Height = 50;
|
||||
}
|
||||
|
||||
this.Padding = new BorderDouble(0);
|
||||
this.Margin = new BorderDouble(6, 0, 6, 6);
|
||||
}
|
||||
|
||||
public override void RemoveFromParentCollection()
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(printItemWrapper);
|
||||
}
|
||||
|
||||
public override void Export()
|
||||
{
|
||||
OpenExportWindow(printItemWrapper);
|
||||
}
|
||||
|
||||
public override void Edit()
|
||||
{
|
||||
OpenPartViewWindow(PartPreviewWindow.View3DWidget.OpenMode.Editing);
|
||||
}
|
||||
|
||||
public override void RemoveFromCollection()
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(printItemWrapper);
|
||||
}
|
||||
|
||||
public override void AddToQueue()
|
||||
{
|
||||
QueueData.Instance.AddItem(printItemWrapper);
|
||||
}
|
||||
|
||||
private void onLibraryItemClick(object sender, EventArgs e)
|
||||
{
|
||||
if (this.libraryDataView.EditMode == false)
|
||||
{
|
||||
//UiThread.RunOnIdle((state) =>
|
||||
//{
|
||||
// openPartView(state);
|
||||
//});
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.isSelectedItem == false)
|
||||
{
|
||||
this.isSelectedItem = true;
|
||||
this.selectionCheckBox.Checked = true;
|
||||
libraryDataView.SelectedItems.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.isSelectedItem = false;
|
||||
this.selectionCheckBox.Checked = false;
|
||||
libraryDataView.SelectedItems.Remove(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void selectionCheckBox_CheckedStateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectionCheckBox.Checked == true)
|
||||
{
|
||||
this.isSelectedItem = true;
|
||||
libraryDataView.SelectedItems.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.isSelectedItem = false;
|
||||
libraryDataView.SelectedItems.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void onAddLinkClick(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
protected override GuiWidget GetThumbnailWidget()
|
||||
{
|
||||
PartThumbnailWidget thumbnailWidget = new PartThumbnailWidget(printItemWrapper, "part_icon_transparent_40x40.png", "building_thumbnail_40x40.png", PartThumbnailWidget.ImageSizes.Size50x50);
|
||||
return thumbnailWidget;
|
||||
}
|
||||
|
||||
protected override string GetItemName()
|
||||
{
|
||||
return printItemWrapper.Name;
|
||||
}
|
||||
|
||||
protected override void RemoveThisFromPrintLibrary()
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(this.printItemWrapper);
|
||||
}
|
||||
|
||||
private void onRemoveLinkClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveThisFromPrintLibrary);
|
||||
}
|
||||
|
||||
private void onOpenPartViewClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(() => openPartView());
|
||||
}
|
||||
|
||||
private void onViewPartClick(object sender, EventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
this.rightButtonOverlay.SlideOut();
|
||||
openPartView(View3DWidget.OpenMode.Viewing);
|
||||
});
|
||||
}
|
||||
|
||||
public void OpenPartViewWindow(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
|
||||
{
|
||||
if (viewingWindow == null)
|
||||
{
|
||||
viewingWindow = new PartPreviewMainWindow(this.printItemWrapper, View3DWidget.AutoRotate.Enabled, openMode);
|
||||
viewingWindow.Closed += new EventHandler(PartPreviewMainWindow_Closed);
|
||||
}
|
||||
else
|
||||
{
|
||||
viewingWindow.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
private void PartPreviewMainWindow_Closed(object sender, EventArgs e)
|
||||
{
|
||||
viewingWindow = null;
|
||||
}
|
||||
|
||||
private void openPartView(View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
|
||||
{
|
||||
string pathAndFile = this.printItemWrapper.FileLocation;
|
||||
if (File.Exists(pathAndFile))
|
||||
{
|
||||
OpenPartViewWindow(openMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = String.Format("Cannot find\n'{0}'.\nWould you like to remove it from the library?", pathAndFile);
|
||||
StyledMessageBox.ShowMessageBox(null, message, "Item not found", StyledMessageBox.MessageType.YES_NO);
|
||||
}
|
||||
}
|
||||
|
||||
private void onConfirmRemove(bool messageBoxResponse)
|
||||
{
|
||||
if (messageBoxResponse)
|
||||
{
|
||||
libraryDataView.RemoveChild(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void onThemeChanged(object sender, EventArgs e)
|
||||
{
|
||||
//Set background and text color to new theme
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
public override void OnDraw(Graphics2D graphics2D)
|
||||
{
|
||||
if (this.libraryDataView.EditMode)
|
||||
{
|
||||
selectionCheckBoxContainer.Visible = true;
|
||||
rightButtonOverlay.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionCheckBoxContainer.Visible = false;
|
||||
}
|
||||
|
||||
base.OnDraw(graphics2D);
|
||||
|
||||
if (this.isSelectedItem)
|
||||
{
|
||||
this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
|
||||
this.partLabel.TextColor = RGBA_Bytes.White;
|
||||
this.selectionCheckBox.TextColor = RGBA_Bytes.White;
|
||||
}
|
||||
else if (this.IsHoverItem)
|
||||
{
|
||||
RectangleDouble Bounds = LocalBounds;
|
||||
RoundedRect rectBorder = new RoundedRect(Bounds, 0);
|
||||
|
||||
this.BackgroundColor = RGBA_Bytes.White;
|
||||
this.partLabel.TextColor = RGBA_Bytes.Black;
|
||||
this.selectionCheckBox.TextColor = RGBA_Bytes.Black;
|
||||
|
||||
graphics2D.Render(new Stroke(rectBorder, 3), ActiveTheme.Instance.SecondaryAccentColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.BackgroundColor = new RGBA_Bytes(255, 255, 255, 255);
|
||||
this.partLabel.TextColor = RGBA_Bytes.Black;
|
||||
this.selectionCheckBox.TextColor = RGBA_Bytes.Black;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -245,7 +245,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
foreach (LibraryRowItem item in libraryDataView.SelectedItems)
|
||||
{
|
||||
QueueData.Instance.AddItem(item.printItemWrapper);
|
||||
item.AddToQueue();
|
||||
}
|
||||
libraryDataView.ClearSelectedItems();
|
||||
}
|
||||
|
|
@ -290,7 +290,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
foreach (LibraryRowItem item in libraryDataView.SelectedItems)
|
||||
{
|
||||
LibraryProvider.CurrentProvider.RemoveItem(item.printItemWrapper);
|
||||
item.RemoveFromCollection();
|
||||
}
|
||||
|
||||
libraryDataView.ClearSelectedItems();
|
||||
|
|
@ -305,7 +305,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
if (libraryDataView.SelectedItems.Count == 1)
|
||||
{
|
||||
LibraryRowItem libraryItem = libraryDataView.SelectedItems[0];
|
||||
OpenExportWindow(libraryItem.printItemWrapper);
|
||||
libraryItem.Export();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -315,25 +315,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
if (libraryDataView.SelectedItems.Count == 1)
|
||||
{
|
||||
LibraryRowItem libraryItem = libraryDataView.SelectedItems[0];
|
||||
libraryItem.OpenPartViewWindow(PartPreviewWindow.View3DWidget.OpenMode.Editing);
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenExportWindow(PrintItemWrapper printItem)
|
||||
{
|
||||
if (exportingWindowIsOpen == false)
|
||||
{
|
||||
exportingWindow = new ExportPrintItemWindow(printItem);
|
||||
this.exportingWindowIsOpen = true;
|
||||
exportingWindow.Closed += new EventHandler(ExportQueueItemWindow_Closed);
|
||||
exportingWindow.ShowAsSystemWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exportingWindow != null)
|
||||
{
|
||||
exportingWindow.BringToFront();
|
||||
}
|
||||
libraryItem.Edit();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -70,7 +71,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
|
||||
public abstract void AddFilesToLibrary(IList<string> files, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null);
|
||||
|
||||
public abstract PrintItemWrapper GetCollectionItemWrapper(int collectionIndex);
|
||||
public abstract PrintItemCollection GetCollectionItem(int collectionIndex);
|
||||
|
||||
public abstract PrintItemWrapper GetPrintItemWrapper(int itemIndex);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -95,10 +96,10 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override PrintItemWrapper GetCollectionItemWrapper(int collectionIndex)
|
||||
public override PrintItemCollection GetCollectionItem(int collectionIndex)
|
||||
{
|
||||
string directoryName = currentDirectoryDirectories[collectionIndex];
|
||||
return new PrintItemWrapper(new DataStorage.PrintItem("", directoryName));
|
||||
return new PrintItemCollection(Path.GetFileNameWithoutExtension(directoryName), directoryName);
|
||||
}
|
||||
|
||||
public override PrintItemWrapper GetPrintItemWrapper(int itemIndex)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -81,7 +82,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
return LibrarySQLiteData.Instance.GetPrintItemWrapper(itemIndex);
|
||||
}
|
||||
|
||||
public override PrintItemWrapper GetCollectionItemWrapper(int collectionIndex)
|
||||
public override PrintItemCollection GetCollectionItem(int collectionIndex)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3316,3 +3316,6 @@ Translated:Location: 'Settings & Controls' -> 'Settings' -> 'Filament' -> 'Filam
|
|||
English:Location: 'Settings & Controls' -> 'Settings' -> 'Filament' -> 'Extrusion' -> 'Frist Layer'
|
||||
Translated:Location: 'Settings & Controls' -> 'Settings' -> 'Filament' -> 'Extrusion' -> 'Frist Layer'
|
||||
|
||||
English:Open
|
||||
Translated:Open
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue