Lots of work on Getting the QueueData instance to be separate form the UI queue and refs.
This commit is contained in:
parent
49c8a045a5
commit
4b6a3cfa97
40 changed files with 586 additions and 1534 deletions
|
|
@ -186,15 +186,15 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
|
||||
static string applicationDataPath = DataStorage.ApplicationDataStorage.Instance.ApplicationUserDataPath;
|
||||
static string updateFileLocation = System.IO.Path.Combine(applicationDataPath, "updates");
|
||||
static string updateFileLocation = Path.Combine(applicationDataPath, "updates");
|
||||
|
||||
public void InstallUpdate(object sender, MouseEventArgs e)
|
||||
{
|
||||
string downloadToken = ApplicationSettings.Instance.get("CurrentBuildToken");
|
||||
|
||||
string updateFileName = System.IO.Path.Combine(updateFileLocation, "{0}.{1}".FormatWith(downloadToken, InstallerExtension));
|
||||
string updateFileName = Path.Combine(updateFileLocation, "{0}.{1}".FormatWith(downloadToken, InstallerExtension));
|
||||
string releaseVersion = ApplicationSettings.Instance.get("CurrentReleaseVersion");
|
||||
string friendlyFileName = System.IO.Path.Combine(updateFileLocation, "MatterControlSetup-{0}.{1}".FormatWith(releaseVersion, InstallerExtension));
|
||||
string friendlyFileName = Path.Combine(updateFileLocation, "MatterControlSetup-{0}.{1}".FormatWith(releaseVersion, InstallerExtension));
|
||||
|
||||
if (System.IO.File.Exists(friendlyFileName))
|
||||
{
|
||||
|
|
@ -274,7 +274,7 @@ namespace MatterHackers.MatterControl
|
|||
System.IO.Directory.CreateDirectory(updateFileLocation);
|
||||
}
|
||||
|
||||
string updateFileName = System.IO.Path.Combine(updateFileLocation, string.Format("{0}.{1}", downloadToken, InstallerExtension));
|
||||
string updateFileName = Path.Combine(updateFileLocation, string.Format("{0}.{1}", downloadToken, InstallerExtension));
|
||||
|
||||
WebClient webClient = new WebClient();
|
||||
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadCompleted);
|
||||
|
|
@ -307,7 +307,7 @@ namespace MatterHackers.MatterControl
|
|||
void CheckVersionStatus()
|
||||
{
|
||||
string currentBuildToken = ApplicationSettings.Instance.get("CurrentBuildToken");
|
||||
string updateFileName = System.IO.Path.Combine(updateFileLocation, string.Format("{0}.{1}", currentBuildToken, InstallerExtension));
|
||||
string updateFileName = Path.Combine(updateFileLocation, string.Format("{0}.{1}", currentBuildToken, InstallerExtension));
|
||||
|
||||
string applicationBuildToken = VersionInfo.Instance.BuildToken;
|
||||
|
||||
|
|
@ -335,7 +335,7 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
this.updateInitiated = false;
|
||||
string currentBuildToken = ApplicationSettings.Instance.get("CurrentBuildToken");
|
||||
string updateFileName = System.IO.Path.Combine(updateFileLocation, string.Format("{0}.{1}", currentBuildToken, InstallerExtension));
|
||||
string updateFileName = Path.Combine(updateFileLocation, string.Format("{0}.{1}", currentBuildToken, InstallerExtension));
|
||||
|
||||
string applicationBuildToken = VersionInfo.Instance.BuildToken;
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//Base widget for use in ButtonViewStates
|
||||
public class ControlButtonViewBase : GuiWidget
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,9 +19,12 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
public class ActionBarPlus : FlowLayoutWidget
|
||||
{
|
||||
public ActionBarPlus()
|
||||
QueueDataView queueDataView;
|
||||
|
||||
public ActionBarPlus(QueueDataView queueDataView)
|
||||
: base(FlowDirection.TopToBottom)
|
||||
{
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
this.Create();
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +45,7 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
// Add Child Elements
|
||||
this.AddChild(new ActionBar.PrinterActionRow());
|
||||
this.AddChild(new PrintStatusRow());
|
||||
this.AddChild(new PrintStatusRow(queueDataView));
|
||||
|
||||
// Add Handlers
|
||||
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
|
||||
|
|
|
|||
|
|
@ -1,19 +1,12 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
|
||||
namespace MatterHackers.MatterControl.ActionBar
|
||||
|
|
@ -42,6 +35,13 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
TooltipButton reprintButton;
|
||||
TooltipButton doneWithCurrentPartButton;
|
||||
|
||||
QueueDataView queueDataView;
|
||||
|
||||
public PrintActionRow(QueueDataView queueDataView)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
textImageButtonFactory.normalTextColor = RGBA_Bytes.White;
|
||||
|
|
@ -177,14 +177,9 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
{
|
||||
foreach (string loadedFileName in openParams.FileNames)
|
||||
{
|
||||
PrintQueueItem queueItem = new PrintQueueItem(System.IO.Path.GetFileNameWithoutExtension(loadedFileName), System.IO.Path.GetFullPath(loadedFileName));
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
QueueData.Instance.AddItem(new PrintItem(Path.GetFileNameWithoutExtension(loadedFileName), Path.GetFullPath(loadedFileName)));
|
||||
}
|
||||
|
||||
PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.Invalidate();
|
||||
}
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
|
||||
void partToPrint_SliceDone(object sender, EventArgs e)
|
||||
|
|
@ -267,7 +262,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
string message = String.Format(removeFromQueueMessage, pathAndFile);
|
||||
if (StyledMessageBox.ShowMessageBox(message, itemNotFoundMessage, StyledMessageBox.MessageType.YES_NO))
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveIndex(PrintQueueControl.Instance.SelectedIndex);
|
||||
QueueData.Instance.RemoveAt(queueDataView.SelectedIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -280,9 +275,9 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
|
||||
void onSkipButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
if (PrintQueueControl.Instance.Count > 1)
|
||||
if (QueueData.Instance.Count > 1)
|
||||
{
|
||||
PrintQueueControl.Instance.MoveToNext();
|
||||
queueDataView.MoveToNext();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -296,8 +291,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
|
||||
void onRemoveButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveIndex(PrintQueueControl.Instance.SelectedIndex);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.RemoveAt(queueDataView.SelectedIndex);
|
||||
}
|
||||
|
||||
void onPauseButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
|
|
@ -333,8 +327,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
void onDoneWithCurrentPartButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
PrinterCommunication.Instance.ResetToReadyState();
|
||||
PrintQueueControl.Instance.RemoveIndex(PrintQueueControl.Instance.SelectedIndex);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.RemoveAt(queueDataView.SelectedIndex);
|
||||
// We don't have to change the selected index because we should be on the next one as we deleted the one
|
||||
// we were on.
|
||||
}
|
||||
|
|
@ -412,7 +405,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
this.activePrintButtons.Add(startButton);
|
||||
|
||||
//Show 'skip' button if there are more items in queue
|
||||
if (PrintQueueControl.Instance.Count > 1)
|
||||
if (QueueData.Instance.Count > 1)
|
||||
{
|
||||
this.activePrintButtons.Add(skipButton);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +1,42 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
/*
|
||||
Copyright (c) 2014, Kevin Pope
|
||||
All rights reserved.
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
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 System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
|
||||
using MatterHackers.PolygonMesh;
|
||||
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
namespace MatterHackers.MatterControl.ActionBar
|
||||
{
|
||||
|
|
@ -33,6 +51,14 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
|
||||
|
||||
TextWidget activePrintStatus;
|
||||
|
||||
QueueDataView queueDataView;
|
||||
|
||||
public PrintStatusRow(QueueDataView queueDataView)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
}
|
||||
|
||||
string ActivePrintStatusText
|
||||
{
|
||||
set
|
||||
|
|
@ -95,7 +121,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
temperatureWidgets.VAnchor |= VAnchor.ParentTop;
|
||||
temperatureWidgets.Margin = new BorderDouble(left: 6);
|
||||
|
||||
FlowLayoutWidget printStatusContainer = getActivePrinterInfo();
|
||||
FlowLayoutWidget printStatusContainer = CreateActivePrinterInfoWidget();
|
||||
printStatusContainer.VAnchor |= VAnchor.ParentTop;
|
||||
|
||||
FlowLayoutWidget iconContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
|
|
@ -140,7 +166,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
return notifyButton;
|
||||
}
|
||||
|
||||
private FlowLayoutWidget getActivePrinterInfo()
|
||||
private FlowLayoutWidget CreateActivePrinterInfoWidget()
|
||||
{
|
||||
FlowLayoutWidget container = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
container.Margin = new BorderDouble(6, 0,6,3);
|
||||
|
|
@ -168,7 +194,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
activePrintInfo = getPrintStatusLabel("", pointSize: 11);
|
||||
activePrintInfo.AutoExpandBoundsToText = true;
|
||||
|
||||
PrintActionRow printActionRow = new PrintActionRow();
|
||||
PrintActionRow printActionRow = new PrintActionRow(queueDataView);
|
||||
|
||||
container.AddChild(topRow);
|
||||
container.AddChild(activePrintName);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ using MatterHackers.MatterControl;
|
|||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.MatterControl.PrintLibrary;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.MatterControl.ToolsPage;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.Localizations;
|
||||
|
||||
|
|
@ -63,6 +62,8 @@ namespace MatterHackers.MatterControl
|
|||
RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
|
||||
public EventHandler AdvancedControlsLoaded;
|
||||
|
||||
QueueDataView queueDataView;
|
||||
|
||||
GuiWidget LeftPanel
|
||||
{
|
||||
get { return GetPannel(0); }
|
||||
|
|
@ -73,9 +74,10 @@ namespace MatterHackers.MatterControl
|
|||
get { return GetPannel(1); }
|
||||
}
|
||||
|
||||
public CompactSlidePanel()
|
||||
public CompactSlidePanel(QueueDataView queueDataView)
|
||||
: base(2)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
AddElements();
|
||||
}
|
||||
|
||||
|
|
@ -89,7 +91,7 @@ namespace MatterHackers.MatterControl
|
|||
this.LeftPanel.AddChild(new PrintProgressBar());
|
||||
|
||||
// construct the main controls tab control
|
||||
mainControlsTabControl = new QueueTab();
|
||||
mainControlsTabControl = new QueueTab(queueDataView);
|
||||
|
||||
advancedControlsButtonFactory.normalTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
advancedControlsButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ using MatterHackers.MatterControl;
|
|||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.MatterControl.PrintLibrary;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.MatterControl.ToolsPage;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.Localizations;
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
class QueueTab : TabControl
|
||||
{
|
||||
|
||||
TabPage QueueTabPage;
|
||||
TabPage LibraryTabPage;
|
||||
TabPage HistoryTabPage;
|
||||
|
|
@ -61,9 +60,11 @@ namespace MatterHackers.MatterControl
|
|||
SimpleTextTabWidget AboutTabView;
|
||||
RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
|
||||
GuiWidget addedUpdateMark = null;
|
||||
QueueDataView queueDataView;
|
||||
|
||||
public QueueTab()
|
||||
public QueueTab(QueueDataView queueDataView)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
this.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
this.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0);
|
||||
this.TabBar.Margin = new BorderDouble(0, 0);
|
||||
|
|
@ -71,7 +72,7 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
this.Margin = new BorderDouble(top: 4);
|
||||
|
||||
QueueTabPage = new TabPage(new QueueControlsWidget(), LocalizedString.Get("Queue").ToUpper());
|
||||
QueueTabPage = new TabPage(new BottomToolbar(queueDataView), LocalizedString.Get("Queue").ToUpper());
|
||||
this.AddTab(new SimpleTextTabWidget(QueueTabPage, 15,
|
||||
ActiveTheme.Instance.TabLabelSelected, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
|
||||
|
||||
|
|
@ -96,15 +97,15 @@ namespace MatterHackers.MatterControl
|
|||
void NumQueueItemsChanged(object sender, EventArgs widgetEvent)
|
||||
{
|
||||
string queueStringBeg = LocalizedString.Get("Queue").ToUpper();
|
||||
string queueString = string.Format("{1} ({0})", PrintQueue.PrintQueueControl.Instance.Count, queueStringBeg);
|
||||
QueueTabPage.Text = string.Format(queueString, PrintQueue.PrintQueueControl.Instance.Count);
|
||||
string queueString = string.Format("{1} ({0})", QueueData.Instance.Count, queueStringBeg);
|
||||
QueueTabPage.Text = string.Format(queueString, QueueData.Instance.Count);
|
||||
}
|
||||
|
||||
event EventHandler unregisterEvents;
|
||||
void AddHandlers()
|
||||
{
|
||||
PrintQueue.PrintQueueControl.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
|
||||
PrintQueue.PrintQueueControl.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
|
||||
QueueData.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
|
||||
QueueData.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
|
||||
ApplicationWidget.Instance.SetUpdateNotificationTrigger.RegisterEvent(SetUpdateNotification, ref unregisterEvents);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,6 +233,28 @@ namespace MatterHackers.MatterControl
|
|||
LoadColumnTwo();
|
||||
}
|
||||
|
||||
void LoadCompactView()
|
||||
{
|
||||
QueueDataView queueDataView = new QueueDataView();
|
||||
|
||||
ColumnOne.RemoveAllChildren();
|
||||
ColumnOne.AddChild(new ActionBarPlus(queueDataView));
|
||||
ColumnOne.AddChild(new CompactSlidePanel(queueDataView));
|
||||
ColumnOne.AnchorAll();
|
||||
}
|
||||
|
||||
void LoadColumnOne()
|
||||
{
|
||||
QueueDataView queueDataView = new QueueDataView();
|
||||
|
||||
ColumnOne.RemoveAllChildren();
|
||||
ColumnOne.VAnchor = VAnchor.ParentBottomTop;
|
||||
ColumnOne.AddChild(new ActionBarPlus(queueDataView));
|
||||
ColumnOne.AddChild(new PrintProgressBar());
|
||||
ColumnOne.AddChild(new QueueTab(queueDataView));
|
||||
ColumnOne.Width = 500; //Ordering here matters - must go after children are added
|
||||
}
|
||||
|
||||
void LoadColumnTwo()
|
||||
{
|
||||
ColumnTwo.RemoveAllChildren();
|
||||
|
|
@ -251,30 +273,11 @@ namespace MatterHackers.MatterControl
|
|||
SetVisibleStatus();
|
||||
}
|
||||
|
||||
void LoadColumnZero()
|
||||
{
|
||||
ColumnOne.RemoveAllChildren();
|
||||
ColumnOne.AddChild(new ActionBarPlus());
|
||||
ColumnOne.AddChild(new CompactSlidePanel());
|
||||
ColumnOne.AnchorAll();
|
||||
}
|
||||
|
||||
void LoadColumnOne()
|
||||
{
|
||||
ColumnOne.RemoveAllChildren();
|
||||
ColumnOne.VAnchor = VAnchor.ParentBottomTop;
|
||||
ColumnOne.AddChild(new ActionBarPlus());
|
||||
ColumnOne.AddChild(new PrintProgressBar());
|
||||
ColumnOne.AddChild(new QueueTab());
|
||||
ColumnOne.Width = 500; //Ordering here matters - must go after children are added
|
||||
}
|
||||
|
||||
void LoadColumnThree()
|
||||
{
|
||||
advancedControlsTabControl = CreateNewAdvancedControlsTab(new SliceSettingsWidget.UiState());
|
||||
ColumnThree.AddChild(advancedControlsTabControl);
|
||||
ColumnThree.Width = 590; //Ordering here matters - must go after children are added
|
||||
|
||||
}
|
||||
|
||||
int UiState = -1;
|
||||
|
|
@ -292,7 +295,7 @@ namespace MatterHackers.MatterControl
|
|||
UiState = 0;
|
||||
ApplicationWidget.Instance.WidescreenMode = false;
|
||||
|
||||
LoadColumnZero();
|
||||
LoadCompactView();
|
||||
|
||||
ColumnThree.Visible = false;
|
||||
ColumnTwo.Visible = false;
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@ namespace MatterHackers.MatterControl
|
|||
public class ExportQueueItemWindow : SystemWindow
|
||||
{
|
||||
CheckBox showInFolderAfterSave;
|
||||
private PrintQueue.PrintQueueItem printQueueItem;
|
||||
private PrintQueue.RowItem printQueueItem;
|
||||
string pathAndFilenameToSave;
|
||||
bool partIsGCode = false;
|
||||
|
||||
public ExportQueueItemWindow(PrintQueue.PrintQueueItem printQueueItem)
|
||||
public ExportQueueItemWindow(PrintQueue.RowItem printQueueItem)
|
||||
: base(400, 250)
|
||||
{
|
||||
if (Path.GetExtension(printQueueItem.PrintItemWrapper.FileLocation).ToUpper() == ".GCODE")
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
else
|
||||
{
|
||||
PrintQueueItem.ShowCantFindFileMessage(printItem);
|
||||
RowItem.ShowCantFindFileMessage(printItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ namespace MatterHackers.MatterControl.DataStorage
|
|||
{
|
||||
if (this.applicationPath == null)
|
||||
{
|
||||
applicationPath = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location);
|
||||
applicationPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||
}
|
||||
return applicationPath;
|
||||
}
|
||||
|
|
@ -149,7 +149,7 @@ namespace MatterHackers.MatterControl.DataStorage
|
|||
/// <returns></returns>
|
||||
public string DatastorePath
|
||||
{
|
||||
get { return System.IO.Path.Combine(ApplicationUserDataPath, datastoreName); }
|
||||
get { return Path.Combine(ApplicationUserDataPath, datastoreName); }
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,33 @@
|
|||
using System;
|
||||
/*
|
||||
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 System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
<Compile Include="PrintHistory\PrintHistoryListControl.cs" />
|
||||
<Compile Include="PrintHistory\PrintHistoryListItem.cs" />
|
||||
<Compile Include="PrintHistory\PrintHistoryWidget.cs" />
|
||||
<Compile Include="PrintQueue\QueueData.cs" />
|
||||
<Compile Include="SlicerConfiguration\SettingsControlSelectors.cs" />
|
||||
<Compile Include="SlicerConfiguration\SlicePresetsWindow\SlicePresetDetailWidget.cs" />
|
||||
<Compile Include="SlicerConfiguration\SlicePresetsWindow\SlicePresetListWidget.cs" />
|
||||
|
|
@ -117,9 +118,6 @@
|
|||
<Compile Include="SlicerConfiguration\SlicerMapping\EngineMapingBase.cs" />
|
||||
<Compile Include="Testing\ReleaseTests.cs" />
|
||||
<Compile Include="Testing\TestingDispatch.cs" />
|
||||
<Compile Include="ToolsPage\ToolsListControl.cs" />
|
||||
<Compile Include="ToolsPage\ToolsListItem.cs" />
|
||||
<Compile Include="ToolsPage\ToolsWidget.cs" />
|
||||
<Compile Include="ApplicationView\WidescreenPanel.cs" />
|
||||
<Compile Include="ConfigurationPage\PrintLevelWizard.cs" />
|
||||
<Compile Include="AboutPage\ContactForm.cs" />
|
||||
|
|
@ -150,7 +148,7 @@
|
|||
<Compile Include="ControlElements\MHTextEditWidget.cs" />
|
||||
<Compile Include="PartPreviewWindow\GcodeViewBasic.cs" />
|
||||
<Compile Include="PartPreviewWindow\PartPreviewMainWindow.cs" />
|
||||
<Compile Include="PrintQueue\PartsSheet.cs" />
|
||||
<Compile Include="PrintQueue\PartsSheetCreator.cs" />
|
||||
<Compile Include="Utilities\WebUtilities\JsonResponseDictionary.cs" />
|
||||
<Compile Include="PrinterCommunication\PrinterCommunication.cs" />
|
||||
<Compile Include="PrinterControls\PrintLeveling.cs" />
|
||||
|
|
@ -178,14 +176,14 @@
|
|||
<Compile Include="PrintQueue\ExportToFolderProcess.cs" />
|
||||
<Compile Include="CustomWidgets\PartThumbnailWidget.cs" />
|
||||
<Compile Include="PrintQueue\PrintItemWrapper.cs" />
|
||||
<Compile Include="PrintQueue\PrintQueueItem.cs" />
|
||||
<Compile Include="PrintQueue\RowItem.cs" />
|
||||
<Compile Include="MatterControlApplication.cs" />
|
||||
<Compile Include="PrintQueue\PrintQueueControl.cs" />
|
||||
<Compile Include="PrintQueue\PrintQueueMenu.cs" />
|
||||
<Compile Include="PrintQueue\QueueDataView.cs" />
|
||||
<Compile Include="PrintQueue\QueueOptionsMenu.cs" />
|
||||
<Compile Include="Utilities\ProjectFileHandler.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utilities\WebUtilities\RequestManager.cs" />
|
||||
<Compile Include="PrintQueue\QueueControlsWidget.cs" />
|
||||
<Compile Include="PrintQueue\BottomToolbar.cs" />
|
||||
<Compile Include="SettingsManagement\ApplicationSettings.cs" />
|
||||
<Compile Include="SettingsManagement\UserSettings.cs" />
|
||||
<Compile Include="SlicerConfiguration\ActiveSliceSettings.cs" />
|
||||
|
|
|
|||
|
|
@ -349,7 +349,7 @@ namespace MatterHackers.MatterControl
|
|||
public override void OnClosing(out bool CancelClose)
|
||||
{
|
||||
//Save a snapshot of the prints in queue
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.SaveDefaultQueue();
|
||||
|
||||
if (PrinterCommunication.Instance.PrinterIsPrinting)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,26 +28,15 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.ComponentModel;
|
||||
|
||||
using System.IO;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.OpenGlGui;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.PolygonMesh;
|
||||
using MatterHackers.RenderOpenGl;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.GCodeVisualizer;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||
{
|
||||
|
|
|
|||
|
|
@ -113,16 +113,13 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = newName;
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(fileNameAndPath);
|
||||
printItem.FileLocation = Path.GetFullPath(fileNameAndPath);
|
||||
printItem.PrintItemCollectionID = PrintLibraryListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
|
||||
QueueData.Instance.AddItem(printItem);
|
||||
|
||||
PrintItemWrapper printItemWrapper = new PrintItemWrapper(printItem);
|
||||
|
||||
PrintQueueItem queueItem = new PrintQueueItem(printItemWrapper);
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
|
||||
if (addToLibraryOption.Checked)
|
||||
{
|
||||
PrintLibraryListItem libraryItem = new PrintLibraryListItem(printItemWrapper);
|
||||
|
|
|
|||
|
|
@ -28,38 +28,23 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.OpenGlGui;
|
||||
using MatterHackers.PolygonMesh;
|
||||
using MatterHackers.RenderOpenGl;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.MeshVisualizer;
|
||||
using MatterHackers.PolygonMesh.Processors;
|
||||
using MatterHackers.PolygonMesh.Csg;
|
||||
using MatterHackers.MarchingSquares;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.Agg.ImageProcessing;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.Localizations; //Added Namespace
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.MeshVisualizer;
|
||||
using MatterHackers.PolygonMesh;
|
||||
using MatterHackers.PolygonMesh.Processors;
|
||||
using MatterHackers.RayTracer;
|
||||
using MatterHackers.RayTracer.Traceable;
|
||||
using MatterHackers.Localizations; //Added Namespace
|
||||
|
||||
|
||||
using ClipperLib;
|
||||
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
using MatterHackers.RenderOpenGl;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||
{
|
||||
|
|
@ -738,7 +723,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
int subLength = nextPercent - lastPercent;
|
||||
|
||||
string loadedFileName = filesToLoad[i];
|
||||
Mesh copyMesh = StlProcessing.Load(System.IO.Path.GetFullPath(loadedFileName));
|
||||
Mesh copyMesh = StlProcessing.Load(Path.GetFullPath(loadedFileName));
|
||||
if (copyMesh != null)
|
||||
{
|
||||
int halfNextPercent = (nextPercent - lastPercent) / 2;
|
||||
|
|
|
|||
|
|
@ -155,9 +155,7 @@ namespace MatterHackers.MatterControl.PrintHistory
|
|||
|
||||
printAgainLink.Click += (sender, e) =>
|
||||
{
|
||||
PrintQueueItem queueItem = new PrintQueueItem(new PrintItemWrapper(printTask.PrintItemId));
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.AddItem(new PrintItemWrapper(printTask.PrintItemId).PrintItem);
|
||||
};
|
||||
|
||||
buttonContainer.AddChild(printAgainLink);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
public ExportLibraryItemWindow(PrintLibraryListItem printLibraryItem)
|
||||
: base(400, 250)
|
||||
{
|
||||
if (System.IO.Path.GetExtension(printLibraryItem.printItem.FileLocation).ToUpper() == ".GCODE")
|
||||
if (Path.GetExtension(printLibraryItem.printItem.FileLocation).ToUpper() == ".GCODE")
|
||||
{
|
||||
partIsGCode = true;
|
||||
}
|
||||
|
|
@ -179,7 +179,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
filePathToSave += ".gcode";
|
||||
}
|
||||
|
||||
if (System.IO.Path.GetExtension(printQueueItem.printItem.FileLocation).ToUpper() == ".STL")
|
||||
if (Path.GetExtension(printQueueItem.printItem.FileLocation).ToUpper() == ".STL")
|
||||
{
|
||||
pathAndFilenameToSave = saveParams.FileName;
|
||||
Close();
|
||||
|
|
|
|||
|
|
@ -213,8 +213,8 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
if (System.IO.File.Exists(partFullPath))
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(partFullPath);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(partFullPath);
|
||||
printItem.Name = Path.GetFileNameWithoutExtension(partFullPath);
|
||||
printItem.FileLocation = Path.GetFullPath(partFullPath);
|
||||
printItem.PrintItemCollectionID = PrintLibraryListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
}
|
||||
else
|
||||
{
|
||||
PrintQueueItem.ShowCantFindFileMessage(printItem);
|
||||
RowItem.ShowCantFindFileMessage(printItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -364,9 +364,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
|
||||
addToQueueLink.Click += (sender, e) =>
|
||||
{
|
||||
PrintQueueItem queueItem = new PrintQueueItem(this.printItem.Name, this.printItem.FileLocation);
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.AddItem(new PrintItem(this.printItem.Name, this.printItem.FileLocation));
|
||||
};
|
||||
|
||||
viewLink = linkButtonFactory.Generate(LocalizedString.Get("View"));
|
||||
|
|
|
|||
|
|
@ -154,12 +154,9 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
{
|
||||
foreach (PrintLibraryListItem item in PrintLibraryListControl.Instance.SelectedItems)
|
||||
{
|
||||
PrintQueue.PrintQueueItem queueItem = new PrintQueue.PrintQueueItem(item.printItem);
|
||||
PrintQueue.PrintQueueControl.Instance.AddChild(queueItem);
|
||||
QueueData.Instance.AddItem(item.printItem.PrintItem);
|
||||
}
|
||||
PrintLibraryListControl.Instance.ClearSelectedItems();
|
||||
PrintQueue.PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
|
||||
private void onLibraryItemsSelected(object sender, EventArgs e)
|
||||
|
|
@ -223,8 +220,8 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
if (extension == ".STL" || extension == ".GCODE")
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(droppedFileName);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(droppedFileName);
|
||||
printItem.Name = Path.GetFileNameWithoutExtension(droppedFileName);
|
||||
printItem.FileLocation = Path.GetFullPath(droppedFileName);
|
||||
printItem.PrintItemCollectionID = PrintLibraryListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
|
||||
|
|
@ -247,8 +244,8 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
foreach (string loadedFileName in openParams.FileNames)
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(loadedFileName);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(loadedFileName);
|
||||
printItem.Name = Path.GetFileNameWithoutExtension(loadedFileName);
|
||||
printItem.FileLocation = Path.GetFullPath(loadedFileName);
|
||||
printItem.PrintItemCollectionID = PrintLibraryListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
|
||||
|
|
|
|||
|
|
@ -18,13 +18,16 @@ using MatterHackers.MatterControl.CreatorPlugins;
|
|||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class QueueControlsWidget : GuiWidget
|
||||
public class BottomToolbar : GuiWidget
|
||||
{
|
||||
TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
PluginChooserWindow pluginChooserWindow;
|
||||
QueueDataView queueDataView;
|
||||
|
||||
public QueueControlsWidget()
|
||||
public BottomToolbar(QueueDataView queueDataView)
|
||||
{
|
||||
this.queueDataView = queueDataView;
|
||||
|
||||
SetDisplayAttributes();
|
||||
|
||||
textImageButtonFactory.normalTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
|
|
@ -40,7 +43,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
// Ensure the form opens with no rows selected.
|
||||
//ActiveQueueList.Instance.ClearSelected();
|
||||
|
||||
allControls.AddChild(PrintQueueControl.Instance);
|
||||
allControls.AddChild(queueDataView);
|
||||
}
|
||||
|
||||
FlowLayoutWidget buttonPanel1 = new FlowLayoutWidget();
|
||||
|
|
@ -51,7 +54,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
Button 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(loadFile_Click);
|
||||
addToQueueButton.Click += new ButtonBase.ButtonEventHandler(addToQueueButton_Click);
|
||||
|
||||
Button runCreator = textImageButtonFactory.Generate(LocalizedString.Get("Create"), "icon_creator_white_32x32.png");
|
||||
buttonPanel1.AddChild(runCreator);
|
||||
|
|
@ -74,7 +77,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
spacer2.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonPanel1.AddChild(spacer2);
|
||||
|
||||
GuiWidget queueMenu = new PrintQueueMenu();
|
||||
GuiWidget queueMenu = new QueueOptionsMenu();
|
||||
queueMenu.VAnchor = VAnchor.ParentTop;
|
||||
buttonPanel1.AddChild(queueMenu);
|
||||
}
|
||||
|
|
@ -92,7 +95,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
this.AnchorAll();
|
||||
}
|
||||
|
||||
|
||||
private void OpenPluginChooserWindow()
|
||||
{
|
||||
if (pluginChooserWindow == null)
|
||||
|
|
@ -111,7 +113,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
void createPartsSheetsButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
List<PrintItem> parts = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
List<PrintItem> parts = QueueData.Instance.CreateReadOnlyPartList();
|
||||
|
||||
SaveFileDialogParams saveParams = new SaveFileDialogParams("Save Parts Sheet|*.pdf");
|
||||
|
||||
|
|
@ -137,7 +139,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
void exportQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
List<PrintItem> partList = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
List<PrintItem> partList = QueueData.Instance.CreateReadOnlyPartList();
|
||||
ProjectFileHandler project = new ProjectFileHandler(partList);
|
||||
project.SaveAs();
|
||||
}
|
||||
|
|
@ -148,21 +150,17 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
List<PrintItem> partFiles = project.OpenFromDialog();
|
||||
if (partFiles != null)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveAllChildren();
|
||||
QueueData.Instance.RemoveAll();
|
||||
foreach (PrintItem part in partFiles)
|
||||
{
|
||||
PrintQueueControl.Instance.AddChild(new PrintQueueItem(part.Name, part.FileLocation));
|
||||
QueueData.Instance.AddItem(new PrintItem(part.Name, part.FileLocation));
|
||||
}
|
||||
PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.Invalidate();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
void deleteAllFromQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveAllChildren();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.RemoveAll();
|
||||
}
|
||||
|
||||
public override void OnDragEnter(FileDropEventArgs fileDropEventArgs)
|
||||
|
|
@ -198,23 +196,19 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
string extension = Path.GetExtension(droppedFileName).ToUpper();
|
||||
if (extension == ".STL" || extension == ".GCODE")
|
||||
{
|
||||
PrintQueueItem queueItem = new PrintQueueItem(System.IO.Path.GetFileNameWithoutExtension(droppedFileName), System.IO.Path.GetFullPath(droppedFileName));
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
QueueData.Instance.AddItem(new PrintItem(Path.GetFileNameWithoutExtension(droppedFileName), Path.GetFullPath(droppedFileName)));
|
||||
}
|
||||
PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.Invalidate();
|
||||
}
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
|
||||
base.OnDragDrop(fileDropEventArgs);
|
||||
}
|
||||
|
||||
void loadFile_Click(object sender, MouseEventArgs mouseEvent)
|
||||
void addToQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
UiThread.RunOnIdle(LoadFileOnIdle);
|
||||
UiThread.RunOnIdle(AddItemsToQueue);
|
||||
}
|
||||
|
||||
void LoadFileOnIdle(object state)
|
||||
void AddItemsToQueue(object state)
|
||||
{
|
||||
OpenFileDialogParams openParams = new OpenFileDialogParams("Select an STL file, Select a GCODE file|*.stl;*.gcode", multiSelect: true);
|
||||
openParams.ActionButtonLabel = "Add to Queue";
|
||||
|
|
@ -225,17 +219,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
{
|
||||
foreach (string loadedFileName in openParams.FileNames)
|
||||
{
|
||||
PrintQueueItem queueItem = new PrintQueueItem(System.IO.Path.GetFileNameWithoutExtension(loadedFileName), System.IO.Path.GetFullPath(loadedFileName));
|
||||
PrintQueueControl.Instance.AddChild(queueItem);
|
||||
QueueData.Instance.AddItem(new PrintItem(Path.GetFileNameWithoutExtension(loadedFileName), Path.GetFullPath(loadedFileName)));
|
||||
}
|
||||
if (PrintQueueControl.Instance.Count > 0)
|
||||
{
|
||||
PrintQueueControl.Instance.SelectedIndex = PrintQueueControl.Instance.Count - 1;
|
||||
}
|
||||
//PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.Invalidate();
|
||||
}
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
public void Start()
|
||||
{
|
||||
if (PrintQueueControl.Instance.Count > 0)
|
||||
if (QueueData.Instance.Count > 0)
|
||||
{
|
||||
if (StartingNextPart != null)
|
||||
{
|
||||
|
|
@ -69,17 +69,17 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
|
||||
savedGCodeFileNames = new List<string>();
|
||||
allFilesToExport = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
allFilesToExport = QueueData.Instance.CreateReadOnlyPartList();
|
||||
foreach (PrintItem part in allFilesToExport)
|
||||
{
|
||||
PrintItemWrapper printItemWrapper = new PrintItemWrapper(part);
|
||||
if (System.IO.Path.GetExtension(part.FileLocation).ToUpper() == ".STL")
|
||||
if (Path.GetExtension(part.FileLocation).ToUpper() == ".STL")
|
||||
{
|
||||
SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
|
||||
printItemWrapper.Done += new EventHandler(sliceItem_Done);
|
||||
printItemWrapper.SlicingOutputMessage += printItemWrapper_SlicingOutputMessage;
|
||||
}
|
||||
else if (System.IO.Path.GetExtension(part.FileLocation).ToUpper() == ".GCODE")
|
||||
else if (Path.GetExtension(part.FileLocation).ToUpper() == ".GCODE")
|
||||
{
|
||||
sliceItem_Done(printItemWrapper, null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
string applicationUserDataPath = ApplicationDataStorage.Instance.ApplicationUserDataPath;
|
||||
string folderToSavePrintsTo = Path.Combine(applicationUserDataPath, "data", "temp", "plateImages");
|
||||
string jpegFileName = System.IO.Path.Combine(folderToSavePrintsTo, plateNumber.ToString() + ".jpeg");
|
||||
string jpegFileName = Path.Combine(folderToSavePrintsTo, plateNumber.ToString() + ".jpeg");
|
||||
|
||||
if (!Directory.Exists(folderToSavePrintsTo))
|
||||
{
|
||||
|
|
@ -1,4 +1,33 @@
|
|||
using System;
|
||||
/*
|
||||
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 System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
|
@ -38,7 +67,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
public PrintItemWrapper(DataStorage.PrintItem printItem)
|
||||
{
|
||||
this.PrintItem = printItem;
|
||||
this.fileType = System.IO.Path.GetExtension(printItem.FileLocation).ToUpper();
|
||||
this.fileType = Path.GetExtension(printItem.FileLocation).ToUpper();
|
||||
//if (this.fileType == ".GCODE")
|
||||
//{
|
||||
//gcodeStatus = GcodeStatuses.Prepared;
|
||||
|
|
@ -48,7 +77,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
public PrintItemWrapper(int printItemId)
|
||||
{
|
||||
this.PrintItem = DataStorage.Datastore.Instance.dbSQLite.Table<DataStorage.PrintItem>().Where(v => v.Id == printItemId).Take(1).FirstOrDefault();
|
||||
this.fileType = System.IO.Path.GetExtension(this.PrintItem.FileLocation).ToUpper();
|
||||
this.fileType = Path.GetExtension(this.PrintItem.FileLocation).ToUpper();
|
||||
}
|
||||
|
||||
bool doneSlicing;
|
||||
|
|
@ -105,8 +134,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
PrintItem.Delete();
|
||||
|
|
|
|||
236
PrintQueue/QueueData.cs
Normal file
236
PrintQueue/QueueData.cs
Normal file
|
|
@ -0,0 +1,236 @@
|
|||
/*
|
||||
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 System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.Agg.ImageProcessing;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class QueueData
|
||||
{
|
||||
private List<PrintItem> printItems = new List<PrintItem>();
|
||||
private List<PrintItem> PrintItems
|
||||
{
|
||||
get { return printItems; }
|
||||
}
|
||||
|
||||
public RootedObjectEventHandler ItemAdded = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler ItemRemoved = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler OrderChanged = new RootedObjectEventHandler();
|
||||
|
||||
static QueueData instance;
|
||||
public static QueueData Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new QueueData();
|
||||
instance.LoadDefaultQueue();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public void SwapItemsOnIdle(int indexA, int indexB)
|
||||
{
|
||||
UiThread.RunOnIdle(SwapItems, new SwapIndexArgs(indexA, indexB));
|
||||
}
|
||||
|
||||
void SwapItems(object state)
|
||||
{
|
||||
int indexA = ((SwapIndexArgs)state).indexA;
|
||||
int indexB = ((SwapIndexArgs)state).indexB;
|
||||
|
||||
if (indexA >= 0 && indexA < Count
|
||||
&& indexB >= 0 && indexB < Count
|
||||
&& indexA != indexB)
|
||||
{
|
||||
PrintItem hold = PrintItems[indexA];
|
||||
PrintItems[indexA] = PrintItems[indexB];
|
||||
PrintItems[indexB] = hold;
|
||||
|
||||
OnOrderChanged(null);
|
||||
|
||||
SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnOrderChanged(EventArgs e)
|
||||
{
|
||||
OrderChanged.CallEvents(this, e);
|
||||
}
|
||||
|
||||
class IndexArgs : EventArgs
|
||||
{
|
||||
internal int index;
|
||||
internal IndexArgs(int index)
|
||||
{
|
||||
this.index = index;
|
||||
}
|
||||
}
|
||||
|
||||
class SwapIndexArgs : EventArgs
|
||||
{
|
||||
internal int indexA;
|
||||
internal int indexB;
|
||||
internal SwapIndexArgs(int indexA, int indexB)
|
||||
{
|
||||
this.indexA = indexA;
|
||||
this.indexB = indexB;
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveIndexOnIdle(int index)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveIndex, new IndexArgs(index));
|
||||
}
|
||||
|
||||
void RemoveIndex(object state)
|
||||
{
|
||||
IndexArgs removeArgs = state as IndexArgs;
|
||||
if (removeArgs != null)
|
||||
{
|
||||
RemoveAt(removeArgs.index);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveAt(int index)
|
||||
{
|
||||
if (index >= 0 && index < Count)
|
||||
{
|
||||
PrintItems.RemoveAt(index);
|
||||
|
||||
OnItemRemoved(new IndexArgs(index));
|
||||
|
||||
SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnItemRemoved(EventArgs e)
|
||||
{
|
||||
ItemRemoved.CallEvents(this, e);
|
||||
}
|
||||
|
||||
public PrintItem GetPrintItem(int index)
|
||||
{
|
||||
if (index >= 0 && index < PrintItems.Count)
|
||||
{
|
||||
return PrintItems[index];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public int GetIndex(PrintItem printItem)
|
||||
{
|
||||
return PrintItems.IndexOf(printItem);
|
||||
}
|
||||
|
||||
public string[] GetItemNames()
|
||||
{
|
||||
List<string> itemNames = new List<string>(); ;
|
||||
for (int i = 0; i < PrintItems.Count; i++)
|
||||
{
|
||||
itemNames.Add(PrintItems[i].Name);
|
||||
}
|
||||
|
||||
return itemNames.ToArray();
|
||||
}
|
||||
|
||||
public List<PrintItem> CreateReadOnlyPartList()
|
||||
{
|
||||
List<PrintItem> listToReturn = new List<PrintItem>();
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
listToReturn.Add(GetPrintItem(i));
|
||||
}
|
||||
return listToReturn;
|
||||
}
|
||||
|
||||
public void AddItem(PrintItem item)
|
||||
{
|
||||
PrintItems.Add(item);
|
||||
OnItemAdded(new IndexArgs(PrintItems.Count - 1));
|
||||
}
|
||||
|
||||
public void LoadDefaultQueue()
|
||||
{
|
||||
RemoveAll();
|
||||
ManifestFileHandler manifest = new ManifestFileHandler(null);
|
||||
List<PrintItem> partFiles = manifest.ImportFromJson();
|
||||
if (partFiles != null)
|
||||
{
|
||||
foreach (PrintItem item in partFiles)
|
||||
{
|
||||
AddItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnItemAdded(EventArgs e)
|
||||
{
|
||||
ItemAdded.CallEvents(this, e);
|
||||
}
|
||||
|
||||
public void SaveDefaultQueue()
|
||||
{
|
||||
List<PrintItem> partList = CreateReadOnlyPartList();
|
||||
ManifestFileHandler manifest = new ManifestFileHandler(partList);
|
||||
manifest.ExportToJson();
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return PrintItems.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveAll()
|
||||
{
|
||||
for (int i = PrintItems.Count-1; i >= 0; i--)
|
||||
{
|
||||
RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,33 @@
|
|||
using System;
|
||||
/*
|
||||
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 System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -14,25 +43,9 @@ using MatterHackers.Agg.ImageProcessing;
|
|||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class PrintQueueControl : ScrollableWidget
|
||||
public class QueueDataView : ScrollableWidget
|
||||
{
|
||||
public RootedObjectEventHandler ItemAdded = new RootedObjectEventHandler();
|
||||
public RootedObjectEventHandler ItemRemoved = new RootedObjectEventHandler();
|
||||
|
||||
static PrintQueueControl instance;
|
||||
public static PrintQueueControl Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new PrintQueueControl();
|
||||
instance.LoadDefaultQueue();
|
||||
instance.EnsureSelection();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
event EventHandler unregisterEvents;
|
||||
|
||||
// make this private so it can only be built from the Instance
|
||||
private void SetDisplayAttributes()
|
||||
|
|
@ -78,42 +91,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public void SwapItemsDurringUiAction(int indexA, int indexB)
|
||||
{
|
||||
UiThread.RunOnIdle(SwapItems, new SwapIndexArgs(indexA, indexB));
|
||||
}
|
||||
|
||||
void SwapItems(object state)
|
||||
{
|
||||
int indexA = ((SwapIndexArgs)state).indexA;
|
||||
int indexB = ((SwapIndexArgs)state).indexB;
|
||||
int selectedAtEnd = indexB;
|
||||
// make sure indexA is the smaller index
|
||||
if (indexA > indexB)
|
||||
{
|
||||
int temp = indexA;
|
||||
indexA = indexB;
|
||||
indexB = temp;
|
||||
}
|
||||
|
||||
if (indexA >= 0 && indexA < Count
|
||||
&& indexB >= 0 && indexB < Count
|
||||
&& indexA != indexB)
|
||||
{
|
||||
GuiWidget itemA = topToBottomItemList.Children[indexA];
|
||||
GuiWidget itemB = topToBottomItemList.Children[indexB];
|
||||
topToBottomItemList.RemoveChild(indexB);
|
||||
topToBottomItemList.RemoveChild(indexA);
|
||||
topToBottomItemList.AddChild(itemB, indexA);
|
||||
topToBottomItemList.AddChild(itemA, indexB);
|
||||
|
||||
AddItemHandlers(itemA);
|
||||
AddItemHandlers(itemB);
|
||||
|
||||
this.SelectedIndex = selectedAtEnd;
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveToNext()
|
||||
{
|
||||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
|
|
@ -135,70 +112,19 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
{
|
||||
int currentIndex = SelectedIndex;
|
||||
PrintQueueItem replacementItem = new PrintQueueItem(PrintQueueControl.Instance.SelectedPart.Name, PrintQueueControl.Instance.SelectedPart.FileLocation);
|
||||
this.RemoveChild(SelectedIndex);
|
||||
this.AddChild(replacementItem);
|
||||
PrintItem replacementItem = new PrintItem(SelectedPart.Name, SelectedPart.FileLocation);
|
||||
QueueData.Instance.RemoveAt(SelectedIndex);
|
||||
this.SelectedIndex = currentIndex;
|
||||
}
|
||||
}
|
||||
|
||||
class RemoveIndexArgs
|
||||
{
|
||||
internal int index;
|
||||
internal RemoveIndexArgs(int index)
|
||||
{
|
||||
this.index = index;
|
||||
}
|
||||
}
|
||||
|
||||
class SwapIndexArgs
|
||||
{
|
||||
internal int indexA;
|
||||
internal int indexB;
|
||||
internal SwapIndexArgs(int indexA, int indexB)
|
||||
{
|
||||
this.indexA = indexA;
|
||||
this.indexB = indexB;
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveIndex(int index)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveIndexAfterEvent, new RemoveIndexArgs(index));
|
||||
}
|
||||
|
||||
void RemoveIndexAfterEvent(object state)
|
||||
{
|
||||
RemoveIndexArgs removeArgs = state as RemoveIndexArgs;
|
||||
if (removeArgs != null & removeArgs.index >= 0 && removeArgs.index < Count)
|
||||
{
|
||||
int currentIndex = removeArgs.index;
|
||||
|
||||
//If the item to be removed is the active print item, set the active print item to null.
|
||||
GuiWidget itemHolder = topToBottomItemList.Children[currentIndex];
|
||||
PrintQueueItem child = (PrintQueueItem)itemHolder.Children[0];
|
||||
if (child.isActivePrint)
|
||||
{
|
||||
if (PrinterCommunication.Instance.PrinterIsPrinting)
|
||||
{
|
||||
return;
|
||||
}
|
||||
PrinterCommunication.Instance.ActivePrintItem = null;
|
||||
}
|
||||
RemoveChild(currentIndex);
|
||||
SelectedIndex = System.Math.Min(SelectedIndex, Count - 1);
|
||||
|
||||
SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
public PrintItemWrapper SelectedPart
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex >= 0)
|
||||
{
|
||||
return GetSTLToPrint(SelectedIndex);
|
||||
return new PrintItemWrapper(QueueData.Instance.GetPrintItem(SelectedIndex));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -207,12 +133,12 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public PrintQueueItem GetPrintQueueItem(int index)
|
||||
public RowItem GetPrintQueueItem(int index)
|
||||
{
|
||||
if (index >= 0 && index < topToBottomItemList.Children.Count)
|
||||
{
|
||||
GuiWidget itemHolder = topToBottomItemList.Children[index];
|
||||
PrintQueueItem child = (PrintQueueItem)itemHolder.Children[0];
|
||||
RowItem child = (RowItem)itemHolder.Children[0];
|
||||
|
||||
return child;
|
||||
}
|
||||
|
|
@ -220,76 +146,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
return null;
|
||||
}
|
||||
|
||||
public int GetIndex(PrintItemWrapper printItem)
|
||||
{
|
||||
for (int i = 0; i < topToBottomItemList.Children.Count; i++)
|
||||
{
|
||||
PrintQueueItem queueItem = GetPrintQueueItem(i);
|
||||
if (queueItem != null && queueItem.PrintItemWrapper == printItem)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public string[] GetItemNames()
|
||||
{
|
||||
List<string> itemNames = new List<string>(); ;
|
||||
for (int i = 0; i < topToBottomItemList.Children.Count; i++)
|
||||
{
|
||||
PrintQueueItem queueItem = GetPrintQueueItem(i);
|
||||
if (queueItem != null)
|
||||
{
|
||||
itemNames.Add(queueItem.PrintItemWrapper.Name);
|
||||
}
|
||||
}
|
||||
|
||||
return itemNames.ToArray();
|
||||
}
|
||||
|
||||
public PrintItemWrapper GetSTLToPrint(int index)
|
||||
{
|
||||
if(index >= 0 && index < Count)
|
||||
{
|
||||
return GetPrintQueueItem(index).PrintItemWrapper;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<PrintItem> CreateReadOnlyPartList()
|
||||
{
|
||||
List<PrintItem> listToReturn = new List<PrintItem>();
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
listToReturn.Add(GetSTLToPrint(i).PrintItem);
|
||||
}
|
||||
return listToReturn;
|
||||
}
|
||||
|
||||
public void LoadDefaultQueue()
|
||||
{
|
||||
RemoveAllChildren();
|
||||
ManifestFileHandler manifest = new ManifestFileHandler(null);
|
||||
List<PrintItem> partFiles = manifest.ImportFromJson();
|
||||
if (partFiles != null)
|
||||
{
|
||||
foreach (PrintItem part in partFiles)
|
||||
{
|
||||
PrintQueueControl.Instance.AddChild(new PrintQueueItem(part.Name, part.FileLocation));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveDefaultQueue()
|
||||
{
|
||||
List<PrintItem> partList = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
ManifestFileHandler manifest = new ManifestFileHandler(partList);
|
||||
manifest.ExportToJson();
|
||||
}
|
||||
|
||||
public delegate void SelectedValueChangedEventHandler(object sender, EventArgs e);
|
||||
public event SelectedValueChangedEventHandler SelectedValueChanged;
|
||||
public delegate void HoverValueChangedEventHandler(object sender, EventArgs e);
|
||||
|
|
@ -336,25 +192,25 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (index == selectedIndex)
|
||||
{
|
||||
((PrintQueueItem)child.Children[0]).isSelectedItem = true;
|
||||
((RowItem)child.Children[0]).isSelectedItem = true;
|
||||
if (!PrinterCommunication.Instance.PrinterIsPrinting && !PrinterCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
|
||||
((PrintQueueItem)child.Children[0]).isActivePrint = true;
|
||||
PrinterCommunication.Instance.ActivePrintItem = ((PrintQueueItem)child.Children[0]).PrintItemWrapper;
|
||||
((RowItem)child.Children[0]).isActivePrint = true;
|
||||
PrinterCommunication.Instance.ActivePrintItem = ((RowItem)child.Children[0]).PrintItemWrapper;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((PrintQueueItem)child.Children[0]).isSelectedItem)
|
||||
if (((RowItem)child.Children[0]).isSelectedItem)
|
||||
{
|
||||
((PrintQueueItem)child.Children[0]).isSelectedItem = false;
|
||||
((RowItem)child.Children[0]).isSelectedItem = false;
|
||||
}
|
||||
if (!PrinterCommunication.Instance.PrinterIsPrinting && !PrinterCommunication.Instance.PrinterIsPaused)
|
||||
{
|
||||
if (((PrintQueueItem)child.Children[0]).isActivePrint)
|
||||
if (((RowItem)child.Children[0]).isActivePrint)
|
||||
{
|
||||
((PrintQueueItem)child.Children[0]).isActivePrint = false;
|
||||
((RowItem)child.Children[0]).isActivePrint = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -408,11 +264,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (index == HoverIndex)
|
||||
{
|
||||
((PrintQueueItem)child.Children[0]).isHoverItem = true;
|
||||
((RowItem)child.Children[0]).isHoverItem = true;
|
||||
}
|
||||
else if (((PrintQueueItem)child.Children[0]).isHoverItem == true)
|
||||
else if (((RowItem)child.Children[0]).isHoverItem == true)
|
||||
{
|
||||
((PrintQueueItem)child.Children[0]).isHoverItem = false;
|
||||
((RowItem)child.Children[0]).isHoverItem = false;
|
||||
}
|
||||
child.Invalidate();
|
||||
}
|
||||
|
|
@ -422,7 +278,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public PrintQueueControl()
|
||||
public QueueDataView()
|
||||
{
|
||||
Name = "PrintQueueControl";
|
||||
|
||||
|
|
@ -435,6 +291,31 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
topToBottomItemList.Name = "PrintQueueControl TopToBottom";
|
||||
topToBottomItemList.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
base.AddChild(topToBottomItemList);
|
||||
|
||||
QueueData.Instance.ItemAdded.RegisterEvent(ItemAddedToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.ItemRemoved.RegisterEvent(ItemRemovedFromToQueue, ref unregisterEvents);
|
||||
QueueData.Instance.OrderChanged.RegisterEvent(QueueOrderChanged, ref unregisterEvents);
|
||||
}
|
||||
|
||||
void ItemAddedToQueue(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
void ItemRemovedFromToQueue(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
void QueueOrderChanged(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (unregisterEvents != null)
|
||||
{
|
||||
unregisterEvents(this, null);
|
||||
}
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1)
|
||||
|
|
@ -448,8 +329,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
topToBottomItemList.AddChild(itemHolder, indexInChildrenList);
|
||||
|
||||
AddItemHandlers(itemHolder);
|
||||
|
||||
ItemAdded.CallEvents(this, new GuiWidgetEventArgs(childToAdd));
|
||||
}
|
||||
|
||||
private void AddItemHandlers(GuiWidget itemHolder)
|
||||
|
|
@ -460,38 +339,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
itemHolder.ParentChanged += new EventHandler(itemHolder_ParentChanged);
|
||||
}
|
||||
|
||||
public override void RemoveAllChildren()
|
||||
{
|
||||
for (int i = topToBottomItemList.Children.Count-1; i >= 0; i--)
|
||||
{
|
||||
RemoveIndex(i);
|
||||
}
|
||||
}
|
||||
|
||||
public override void RemoveChild(int index)
|
||||
{
|
||||
GuiWidget childToRemove = topToBottomItemList.Children[index];
|
||||
RemoveChild(childToRemove);
|
||||
}
|
||||
|
||||
public override void RemoveChild(GuiWidget childToRemove)
|
||||
{
|
||||
for (int i = topToBottomItemList.Children.Count - 1; i >= 0; i--)
|
||||
{
|
||||
GuiWidget itemHolder = topToBottomItemList.Children[i];
|
||||
if (itemHolder == childToRemove || itemHolder.Children[0] == childToRemove)
|
||||
{
|
||||
topToBottomItemList.RemoveChild(itemHolder);
|
||||
OnItemRemoved(new GuiWidgetEventArgs(childToRemove));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnItemRemoved(GuiWidgetEventArgs e)
|
||||
{
|
||||
ItemRemoved.CallEvents(this, e);
|
||||
}
|
||||
|
||||
bool settingLocalBounds = false;
|
||||
public override RectangleDouble LocalBounds
|
||||
{
|
||||
|
|
@ -622,7 +469,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
public PrintQueueItem SelectedPrintQueueItem()
|
||||
public RowItem SelectedPrintQueueItem()
|
||||
{
|
||||
return GetPrintQueueItem(SelectedIndex);
|
||||
}
|
||||
|
|
@ -17,14 +17,14 @@ using MatterHackers.Localizations;
|
|||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class PrintQueueMenu : GuiWidget
|
||||
public class QueueOptionsMenu : GuiWidget
|
||||
{
|
||||
public DropDownMenu MenuDropList;
|
||||
private TupleList<string, Func<bool>> menuItems;
|
||||
|
||||
ExportToFolderFeedbackWindow exportingWindow = null;
|
||||
|
||||
public PrintQueueMenu()
|
||||
public QueueOptionsMenu()
|
||||
{
|
||||
MenuDropList = new DropDownMenu(LocalizedString.Get("Queue Options"), Direction.Up);
|
||||
MenuDropList.HAnchor |= HAnchor.ParentLeft;
|
||||
|
|
@ -113,7 +113,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
void PartSheetClickOnIdle(object state)
|
||||
{
|
||||
List<PrintItem> parts = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
List<PrintItem> parts = QueueData.Instance.CreateReadOnlyPartList();
|
||||
if (parts.Count > 0)
|
||||
{
|
||||
SaveFileDialogParams saveParams = new SaveFileDialogParams("Save Parts Sheet|*.pdf");
|
||||
|
|
@ -177,7 +177,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
string path = FileDialog.SelectFolderDialog(ref selectParams);
|
||||
if (path != null && path != "")
|
||||
{
|
||||
List<PrintItem> parts = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
List<PrintItem> parts = QueueData.Instance.CreateReadOnlyPartList();
|
||||
if (parts.Count > 0)
|
||||
{
|
||||
if (exportingWindow == null)
|
||||
|
|
@ -208,7 +208,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
void ExportQueueToZipOnIdle(object state)
|
||||
{
|
||||
List<PrintItem> partList = PrintQueueControl.Instance.CreateReadOnlyPartList();
|
||||
List<PrintItem> partList = QueueData.Instance.CreateReadOnlyPartList();
|
||||
ProjectFileHandler project = new ProjectFileHandler(partList);
|
||||
project.SaveAs();
|
||||
}
|
||||
|
|
@ -225,14 +225,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
List<PrintItem> partFiles = project.OpenFromDialog();
|
||||
if (partFiles != null)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveAllChildren();
|
||||
QueueData.Instance.RemoveAll();
|
||||
foreach (PrintItem part in partFiles)
|
||||
{
|
||||
PrintQueueControl.Instance.AddChild(new PrintQueueItem(part.Name, part.FileLocation));
|
||||
QueueData.Instance.AddItem(new PrintItem(part.Name, part.FileLocation));
|
||||
}
|
||||
PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.Invalidate();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -244,21 +241,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
void removeAllPrintsFromQueue (object state)
|
||||
{
|
||||
|
||||
PrintQueueControl.Instance.RemoveAllChildren ();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue ();
|
||||
QueueData.Instance.RemoveAll();
|
||||
}
|
||||
|
||||
void deleteFromQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveIndex(PrintQueueControl.Instance.SelectedIndex);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
|
||||
void deleteAllFromQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveAllChildren();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@ using MatterHackers.PolygonMesh;
|
|||
|
||||
namespace MatterHackers.MatterControl.PrintQueue
|
||||
{
|
||||
public class PrintQueueItem : GuiWidget
|
||||
public class RowItem : GuiWidget
|
||||
{
|
||||
public PrintItemWrapper PrintItemWrapper { get; set; }
|
||||
public RGBA_Bytes WidgetTextColor;
|
||||
|
|
@ -36,16 +36,11 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
PartPreviewMainWindow viewingWindow;
|
||||
bool exportingWindowIsOpen = false;
|
||||
bool viewWindowIsOpen = false;
|
||||
QueueDataView queueDataViewThisIsIn;
|
||||
|
||||
|
||||
public PrintQueueItem(PrintItemWrapper printItem)
|
||||
{
|
||||
this.PrintItemWrapper = printItem;
|
||||
ConstructPrintQueueItem();
|
||||
}
|
||||
|
||||
public PrintQueueItem(string displayName, string fileLocation)
|
||||
public RowItem(string displayName, string fileLocation, QueueDataView queueDataViewThisIsIn)
|
||||
{
|
||||
this.queueDataViewThisIsIn = queueDataViewThisIsIn;
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = displayName;
|
||||
printItem.FileLocation = fileLocation;
|
||||
|
|
@ -250,8 +245,8 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
Button moveUp = linkButtonFactory.Generate(" ^ ");
|
||||
moveUp.Click += (sender, e) =>
|
||||
{
|
||||
int thisIndexInQueue = PrintQueueControl.Instance.GetIndex(PrintItemWrapper);
|
||||
PrintQueueControl.Instance.SwapItemsDurringUiAction(thisIndexInQueue, thisIndexInQueue - 1);
|
||||
int thisIndexInQueue = QueueData.Instance.GetIndex(PrintItemWrapper.PrintItem);
|
||||
QueueData.Instance.SwapItemsOnIdle(thisIndexInQueue, thisIndexInQueue - 1);
|
||||
};
|
||||
topToBottom.AddChild(moveUp);
|
||||
}
|
||||
|
|
@ -261,8 +256,8 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
Button moveDown = linkButtonFactory.Generate(" v ");
|
||||
moveDown.Click += (sender, e) =>
|
||||
{
|
||||
int thisIndexInQueue = PrintQueueControl.Instance.GetIndex(PrintItemWrapper);
|
||||
PrintQueueControl.Instance.SwapItemsDurringUiAction(thisIndexInQueue, thisIndexInQueue + 1);
|
||||
int thisIndexInQueue = QueueData.Instance.GetIndex(PrintItemWrapper.PrintItem);
|
||||
QueueData.Instance.SwapItemsOnIdle(thisIndexInQueue, thisIndexInQueue + 1);
|
||||
};
|
||||
topToBottom.AddChild(moveDown);
|
||||
}
|
||||
|
|
@ -341,14 +336,12 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
void AddPartToQueue(object state)
|
||||
{
|
||||
PartToAddToQueue partToAddToQueue = (PartToAddToQueue)state;
|
||||
PrintQueueItem queueItem = new PrintQueueItem(partToAddToQueue.Name, partToAddToQueue.FileLocation);
|
||||
PrintQueueControl.Instance.AddChild(queueItem, partToAddToQueue.insertAfterIndex);
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
QueueData.Instance.AddItem(new PrintItem(partToAddToQueue.Name, partToAddToQueue.FileLocation));
|
||||
}
|
||||
|
||||
public void CreateCopyInQueue()
|
||||
{
|
||||
int thisIndexInQueue = PrintQueueControl.Instance.GetIndex(PrintItemWrapper);
|
||||
int thisIndexInQueue = QueueData.Instance.GetIndex(PrintItemWrapper.PrintItem);
|
||||
if (thisIndexInQueue != -1)
|
||||
{
|
||||
string applicationDataPath = ApplicationDataStorage.Instance.ApplicationUserDataPath;
|
||||
|
|
@ -383,7 +376,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
int copyNumber = 2;
|
||||
string testName = newName;
|
||||
string[] itemNames = PrintQueueControl.Instance.GetItemNames();
|
||||
string[] itemNames = QueueData.Instance.GetItemNames();
|
||||
// figure out if we have a copy already and increment the number if we do
|
||||
while (true)
|
||||
{
|
||||
|
|
@ -405,15 +398,15 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
public void DeletePartFromQueue()
|
||||
{
|
||||
int thisIndexInQueue = PrintQueueControl.Instance.GetIndex(PrintItemWrapper);
|
||||
PrintQueueControl.Instance.RemoveIndex(thisIndexInQueue);
|
||||
int thisIndexInQueue = QueueData.Instance.GetIndex(PrintItemWrapper.PrintItem);
|
||||
QueueData.Instance.RemoveIndexOnIdle(thisIndexInQueue);
|
||||
}
|
||||
|
||||
public static void ShowCantFindFileMessage(PrintItemWrapper printItem)
|
||||
public static void ShowCantFindFileMessage(PrintItemWrapper printItemWrapper)
|
||||
{
|
||||
UiThread.RunOnIdle((state) =>
|
||||
{
|
||||
string maxLengthName = printItem.FileLocation;
|
||||
string maxLengthName = printItemWrapper.FileLocation;
|
||||
int maxLength = 43;
|
||||
if (maxLengthName.Length > maxLength)
|
||||
{
|
||||
|
|
@ -428,7 +421,7 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
string titleLabel = LocalizedString.Get("Item not Found");
|
||||
if (StyledMessageBox.ShowMessageBox(message, titleLabel, StyledMessageBox.MessageType.YES_NO))
|
||||
{
|
||||
PrintQueueControl.Instance.RemoveIndex(PrintQueueControl.Instance.GetIndex(printItem));
|
||||
QueueData.Instance.RemoveIndexOnIdle(QueueData.Instance.GetIndex(printItemWrapper.PrintItem));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -59,10 +59,8 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
|||
foreach (string partFile in calibrationPrints)
|
||||
{
|
||||
string partFullPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "SampleParts", partFile);
|
||||
PrintQueueControl.Instance.AddChild(new PrintQueueItem(Path.GetFileNameWithoutExtension(partFullPath), partFullPath));
|
||||
QueueData.Instance.AddItem(new PrintItem(Path.GetFileNameWithoutExtension(partFullPath), partFullPath));
|
||||
}
|
||||
PrintQueue.PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -123,14 +123,14 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections
|
|||
var driverInstallerProcess = new Process();
|
||||
// Prepare the process to run
|
||||
// Enter in the command line arguments, everything you would enter after the executable name itself
|
||||
driverInstallerProcess.StartInfo.Arguments = System.IO.Path.GetFullPath(fileName);
|
||||
driverInstallerProcess.StartInfo.Arguments = Path.GetFullPath(fileName);
|
||||
// Enter the executable to run, including the complete path
|
||||
string printerDriverInstallerExePathAndFileName = Path.Combine(".", "InfInstaller.exe");
|
||||
|
||||
driverInstallerProcess.StartInfo.CreateNoWindow = true;
|
||||
driverInstallerProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
||||
|
||||
driverInstallerProcess.StartInfo.FileName = System.IO.Path.GetFullPath(printerDriverInstallerExePathAndFileName);
|
||||
driverInstallerProcess.StartInfo.FileName = Path.GetFullPath(printerDriverInstallerExePathAndFileName);
|
||||
driverInstallerProcess.StartInfo.Verb = "runas";
|
||||
driverInstallerProcess.StartInfo.UseShellExecute = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -872,7 +872,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
RoundedRect rect = new RoundedRect(LocalBounds,0);
|
||||
graphics2D.Render(rect,new RGBA_Bytes(OverlayColor, 50));
|
||||
graphics2D.Render(new Stroke(rect, 3),OverlayColor);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,9 +113,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
string slic3rRelativePath = Path.Combine("..", "Slic3r", "slic3r.exe");
|
||||
if (!File.Exists(slic3rRelativePath))
|
||||
{
|
||||
slic3rRelativePath = System.IO.Path.Combine(".", "Slic3r", "slic3r.exe");
|
||||
slic3rRelativePath = Path.Combine(".", "Slic3r", "slic3r.exe");
|
||||
}
|
||||
return System.IO.Path.GetFullPath(slic3rRelativePath);
|
||||
return Path.GetFullPath(slic3rRelativePath);
|
||||
}
|
||||
|
||||
case ActivePrinterProfile.SlicingEngineTypes.CuraEngine:
|
||||
|
|
@ -123,15 +123,15 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
string curaEngineRelativePath = Path.Combine("..", "CuraEngine.exe");
|
||||
if (!File.Exists(curaEngineRelativePath))
|
||||
{
|
||||
curaEngineRelativePath = System.IO.Path.Combine(".", "CuraEngine.exe");
|
||||
curaEngineRelativePath = Path.Combine(".", "CuraEngine.exe");
|
||||
}
|
||||
return System.IO.Path.GetFullPath(curaEngineRelativePath);
|
||||
return Path.GetFullPath(curaEngineRelativePath);
|
||||
}
|
||||
|
||||
case ActivePrinterProfile.SlicingEngineTypes.MatterSlice:
|
||||
{
|
||||
string materSliceRelativePath = Path.Combine(".", "MatterSlice.exe");
|
||||
return System.IO.Path.GetFullPath(materSliceRelativePath);
|
||||
return Path.GetFullPath(materSliceRelativePath);
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
@ -144,17 +144,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
case ActivePrinterProfile.SlicingEngineTypes.Slic3r:
|
||||
{
|
||||
//string parentLocation = Directory.GetParent (ApplicationDataStorage.Instance.ApplicationPath).ToString ();
|
||||
string applicationPath = System.IO.Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "Slic3r.app", "Contents", "MacOS", "slic3r");
|
||||
string applicationPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "Slic3r.app", "Contents", "MacOS", "slic3r");
|
||||
return applicationPath;
|
||||
}
|
||||
case ActivePrinterProfile.SlicingEngineTypes.CuraEngine:
|
||||
{
|
||||
string applicationPath = System.IO.Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "CuraEngine");
|
||||
string applicationPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "CuraEngine");
|
||||
return applicationPath;
|
||||
}
|
||||
case ActivePrinterProfile.SlicingEngineTypes.MatterSlice:
|
||||
{
|
||||
string applicationPath = System.IO.Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "MatterSlice");
|
||||
string applicationPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationPath, "MatterSlice");
|
||||
return applicationPath;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1959,3 +1959,6 @@ Translated:Downloading updates...
|
|||
English:Duplicate
|
||||
Translated:Duplicate
|
||||
|
||||
English:End
|
||||
Translated:End
|
||||
|
||||
|
|
|
|||
|
|
@ -1,550 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
|
||||
namespace MatterHackers.MatterControl.ToolsPage
|
||||
{
|
||||
|
||||
public class SelectedPrintItems<T> : List<T>
|
||||
{
|
||||
public event EventHandler OnAdd;
|
||||
public event EventHandler OnRemove;
|
||||
|
||||
new public void Add(T item)
|
||||
{
|
||||
base.Add(item);
|
||||
if (null != OnAdd)
|
||||
{
|
||||
OnAdd(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
new public void Remove(T item)
|
||||
{
|
||||
base.Remove(item);
|
||||
if (null != OnRemove)
|
||||
{
|
||||
OnRemove(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ToolsListControl : ScrollableWidget
|
||||
{
|
||||
static ToolsListControl instance;
|
||||
string keywordFilter;
|
||||
private DataStorage.PrintItemCollection libraryCollection;
|
||||
|
||||
public static ToolsListControl Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new ToolsListControl();
|
||||
instance.LoadLibraryItems();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public string KeywordFilter
|
||||
{
|
||||
get { return keywordFilter; }
|
||||
set
|
||||
{
|
||||
if (this.keywordFilter != value)
|
||||
{
|
||||
this.keywordFilter = value;
|
||||
LoadLibraryItems();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
this.MinimumSize = new Vector2(0, 200);
|
||||
this.AnchorAll();
|
||||
this.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
|
||||
this.AutoScroll = true;
|
||||
this.ScrollArea.Padding = new BorderDouble(3);
|
||||
}
|
||||
|
||||
public void RemoveSelectedIndex()
|
||||
{
|
||||
if (SelectedIndex >= 0 && SelectedIndex < Count)
|
||||
{
|
||||
RemoveChild(SelectedIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public PrintItem SelectedPart
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex >= 0)
|
||||
{
|
||||
return GetSTLToPrint(SelectedIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PrintItem GetSTLToPrint(int index)
|
||||
{
|
||||
if(index >= 0 && index < Count)
|
||||
{
|
||||
GuiWidget itemHolder = topToBottomItemList.Children[index];
|
||||
ToolsListItem child = (ToolsListItem)itemHolder.Children[0];
|
||||
return new PrintItem(child.printItem.Name, child.printItem.FileLocation);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<PrintItem> CreateReadOnlyPartList()
|
||||
{
|
||||
List<PrintItem> listToReturn = new List<PrintItem>();
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
listToReturn.Add(GetSTLToPrint(i));
|
||||
}
|
||||
return listToReturn;
|
||||
}
|
||||
|
||||
public DataStorage.PrintItemCollection LibraryCollection
|
||||
{
|
||||
get
|
||||
{
|
||||
//Retrieve a list of saved printers from the Datastore
|
||||
if (libraryCollection == null)
|
||||
{
|
||||
libraryCollection = DataStorage.Datastore.Instance.dbSQLite.Table<DataStorage.PrintItemCollection>().Where(v => v.Name == "_library").Take(1).FirstOrDefault();
|
||||
}
|
||||
|
||||
|
||||
if (libraryCollection == null)
|
||||
{
|
||||
libraryCollection = new PrintItemCollection();
|
||||
libraryCollection.Name = "_library";
|
||||
libraryCollection.Commit();
|
||||
PreloadLibrary();
|
||||
}
|
||||
return libraryCollection;
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> GetLibraryParts()
|
||||
{
|
||||
List<string> libraryFilesToPreload = new List<string>();
|
||||
string setupSettingsPathAndFile = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "PreloadedLibraryFiles.txt");
|
||||
if (System.IO.File.Exists(setupSettingsPathAndFile))
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] lines = System.IO.File.ReadAllLines(setupSettingsPathAndFile);
|
||||
foreach (string line in lines)
|
||||
{
|
||||
//Ignore commented lines
|
||||
if (!line.StartsWith("#"))
|
||||
{
|
||||
string settingLine = line.Trim();
|
||||
libraryFilesToPreload.Add(settingLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
return libraryFilesToPreload;
|
||||
}
|
||||
|
||||
void PreloadLibrary()
|
||||
{
|
||||
List<string> calibrationPrints = GetLibraryParts();
|
||||
foreach (string partFile in calibrationPrints)
|
||||
{
|
||||
string partFullPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "SampleParts", partFile);
|
||||
if (System.IO.File.Exists(partFullPath))
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(partFullPath);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(partFullPath);
|
||||
printItem.PrintItemCollectionID = ToolsListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<DataStorage.PrintItem> GetLibraryItems(string keyphrase = null)
|
||||
{
|
||||
if (LibraryCollection == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
string query;
|
||||
if (keyphrase == null)
|
||||
{
|
||||
query = string.Format("SELECT * FROM PrintItem WHERE PrintItemCollectionID = {0} ORDER BY Name ASC;", libraryCollection.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
query = string.Format("SELECT * FROM PrintItem WHERE PrintItemCollectionID = {0} AND Name LIKE '%{1}%' ORDER BY Name ASC;", libraryCollection.Id, keyphrase);
|
||||
}
|
||||
IEnumerable<DataStorage.PrintItem> result = (IEnumerable<DataStorage.PrintItem>)DataStorage.Datastore.Instance.dbSQLite.Query<DataStorage.PrintItem>(query);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearSelectedItems()
|
||||
{
|
||||
List<ToolsListItem> itemsToClear = new List<ToolsListItem>();
|
||||
|
||||
foreach(ToolsListItem item in instance.SelectedItems)
|
||||
{
|
||||
itemsToClear.Add(item);
|
||||
}
|
||||
foreach (ToolsListItem item in itemsToClear)
|
||||
{
|
||||
item.isSelectedItem = false;
|
||||
item.selectionCheckBox.Checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void LoadLibraryItems()
|
||||
{
|
||||
RemoveAllChildren();
|
||||
IEnumerable<DataStorage.PrintItem> partFiles = GetLibraryItems(instance.KeywordFilter);
|
||||
if (partFiles != null)
|
||||
{
|
||||
foreach (PrintItem part in partFiles)
|
||||
{
|
||||
ToolsListControl.Instance.AddChild(new ToolsListItem(new PrintItemWrapper(part)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void SaveLibraryItems()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public delegate void SelectedValueChangedEventHandler(object sender, EventArgs e);
|
||||
public event SelectedValueChangedEventHandler SelectedValueChanged;
|
||||
public delegate void HoverValueChangedEventHandler(object sender, EventArgs e);
|
||||
public event HoverValueChangedEventHandler HoverValueChanged;
|
||||
|
||||
protected FlowLayoutWidget topToBottomItemList;
|
||||
|
||||
RGBA_Bytes hoverColor = new RGBA_Bytes(204, 204, 204, 255);
|
||||
//RGBA_Bytes hoverColor = new RGBA_Bytes(0, 140, 158, 255);
|
||||
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);
|
||||
|
||||
public SelectedPrintItems<ToolsListItem> SelectedItems = new SelectedPrintItems<ToolsListItem>();
|
||||
int selectedIndex = -1;
|
||||
int hoverIndex = -1;
|
||||
int dragIndex = -1;
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return topToBottomItemList.Children.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return selectedIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value < -1 || value >= topToBottomItemList.Children.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
selectedIndex = value;
|
||||
OnSelectedIndexChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public int DragIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return dragIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value < -1 || value >= topToBottomItemList.Children.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
if (value != dragIndex)
|
||||
{
|
||||
dragIndex = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoverIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return hoverIndex;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value < -1 || value >= topToBottomItemList.Children.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
if (value != hoverIndex)
|
||||
{
|
||||
hoverIndex = value;
|
||||
OnHoverIndexChanged();
|
||||
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (index == HoverIndex)
|
||||
{
|
||||
((ToolsListItem)child.Children[0]).isHoverItem = true;
|
||||
}
|
||||
else if (((ToolsListItem)child.Children[0]).isHoverItem == true)
|
||||
{
|
||||
((ToolsListItem)child.Children[0]).isHoverItem = false;
|
||||
}
|
||||
child.Invalidate();
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ToolsListControl()
|
||||
{
|
||||
SetDisplayAttributes();
|
||||
ScrollArea.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
|
||||
AutoScroll = true;
|
||||
topToBottomItemList = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
topToBottomItemList.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
base.AddChild(topToBottomItemList);
|
||||
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
void AddHandlers()
|
||||
{
|
||||
this.MouseLeaveBounds += new EventHandler(control_MouseLeaveBounds);
|
||||
}
|
||||
|
||||
public override void AddChild(GuiWidget child, int indexInChildrenList = -1)
|
||||
{
|
||||
FlowLayoutWidget itemHolder = new FlowLayoutWidget();
|
||||
itemHolder.Name = "LB item holder";
|
||||
itemHolder.Margin = new BorderDouble(3, 0, 0, 0);
|
||||
itemHolder.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
itemHolder.AddChild(child);
|
||||
itemHolder.VAnchor = VAnchor.FitToChildren;
|
||||
topToBottomItemList.AddChild(itemHolder, indexInChildrenList);
|
||||
|
||||
itemHolder.MouseEnterBounds += new EventHandler(itemToAdd_MouseEnterBounds);
|
||||
itemHolder.MouseLeaveBounds += new EventHandler(itemToAdd_MouseLeaveBounds);
|
||||
itemHolder.MouseDownInBounds += new MouseEventHandler(itemHolder_MouseDownInBounds);
|
||||
itemHolder.ParentChanged += new EventHandler(itemHolder_ParentChanged);
|
||||
}
|
||||
|
||||
bool settingLocalBounds = false;
|
||||
public override RectangleDouble LocalBounds
|
||||
{
|
||||
set
|
||||
{
|
||||
if (!settingLocalBounds)
|
||||
{
|
||||
Vector2 currentTopLeftOffset = new Vector2();
|
||||
if (Parent != null)
|
||||
{
|
||||
currentTopLeftOffset = TopLeftOffset;
|
||||
}
|
||||
settingLocalBounds = true;
|
||||
if (topToBottomItemList != null)
|
||||
{
|
||||
if (VerticalScrollBar.Visible)
|
||||
{
|
||||
topToBottomItemList.Width = Math.Max(0, value.Width - ScrollArea.Padding.Width - topToBottomItemList.Margin.Width - VerticalScrollBar.Width);
|
||||
}
|
||||
else
|
||||
{
|
||||
topToBottomItemList.Width = Math.Max(0, value.Width - ScrollArea.Padding.Width - topToBottomItemList.Margin.Width);
|
||||
}
|
||||
}
|
||||
|
||||
base.LocalBounds = value;
|
||||
if (Parent != null)
|
||||
{
|
||||
TopLeftOffset = currentTopLeftOffset;
|
||||
}
|
||||
settingLocalBounds = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveSelectedItems()
|
||||
{
|
||||
foreach (ToolsListItem item in instance.SelectedItems)
|
||||
{
|
||||
RemoveChild(item);
|
||||
item.printItem.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void RemoveChild(int index)
|
||||
{
|
||||
topToBottomItemList.RemoveChild(index);
|
||||
}
|
||||
|
||||
public override void RemoveChild(GuiWidget childToRemove)
|
||||
{
|
||||
for (int i = topToBottomItemList.Children.Count - 1; i >= 0; i--)
|
||||
{
|
||||
GuiWidget itemHolder = topToBottomItemList.Children[i];
|
||||
if (itemHolder == childToRemove || itemHolder.Children[0] == childToRemove)
|
||||
{
|
||||
topToBottomItemList.RemoveChild(itemHolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void RemoveAllChildren()
|
||||
{
|
||||
topToBottomItemList.RemoveAllChildren();
|
||||
}
|
||||
|
||||
void itemHolder_ParentChanged(object sender, EventArgs e)
|
||||
{
|
||||
FlowLayoutWidget itemHolder = (FlowLayoutWidget)sender;
|
||||
itemHolder.MouseEnterBounds -= new EventHandler(itemToAdd_MouseEnterBounds);
|
||||
itemHolder.MouseLeaveBounds -= new EventHandler(itemToAdd_MouseLeaveBounds);
|
||||
itemHolder.MouseDownInBounds -= new MouseEventHandler(itemHolder_MouseDownInBounds);
|
||||
itemHolder.ParentChanged -= new EventHandler(itemHolder_ParentChanged);
|
||||
}
|
||||
|
||||
void itemHolder_MouseDownInBounds(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void control_MouseLeaveBounds(object sender, EventArgs e)
|
||||
{
|
||||
HoverIndex = -1;
|
||||
}
|
||||
|
||||
void itemToAdd_MouseLeaveBounds(object sender, EventArgs e)
|
||||
{
|
||||
GuiWidget widgetLeft = ((GuiWidget)sender);
|
||||
|
||||
if (SelectedIndex >= 0)
|
||||
{
|
||||
if (widgetLeft != topToBottomItemList.Children[SelectedIndex])
|
||||
{
|
||||
widgetLeft.BackgroundColor = new RGBA_Bytes();
|
||||
widgetLeft.Invalidate();
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void itemToAdd_MouseEnterBounds(object sender, EventArgs e)
|
||||
{
|
||||
GuiWidget widgetEntered = ((GuiWidget)sender);
|
||||
for (int index = 0; index < topToBottomItemList.Children.Count; index++)
|
||||
{
|
||||
GuiWidget child = topToBottomItemList.Children[index];
|
||||
if (child == widgetEntered)
|
||||
{
|
||||
HoverIndex = index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnSelectedIndexChanged()
|
||||
{
|
||||
Invalidate();
|
||||
if (SelectedValueChanged != null)
|
||||
{
|
||||
SelectedValueChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnHoverIndexChanged()
|
||||
{
|
||||
Invalidate();
|
||||
if (HoverValueChanged != null)
|
||||
{
|
||||
HoverValueChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearSelected()
|
||||
{
|
||||
if (selectedIndex != -1)
|
||||
{
|
||||
selectedIndex = -1;
|
||||
OnSelectedIndexChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public GuiWidget SelectedItem
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SelectedIndex != -1)
|
||||
{
|
||||
return Children[SelectedIndex];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
for (int i = 0; i < Children.Count; i++)
|
||||
{
|
||||
if (Children[SelectedIndex] == value)
|
||||
{
|
||||
SelectedIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,250 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
|
||||
using MatterHackers.PolygonMesh;
|
||||
|
||||
namespace MatterHackers.MatterControl.ToolsPage
|
||||
{
|
||||
public class ToolsListItem : ClickWidget
|
||||
{
|
||||
public PrintItemWrapper printItem;
|
||||
public RGBA_Bytes WidgetTextColor;
|
||||
public RGBA_Bytes WidgetBackgroundColor;
|
||||
|
||||
public bool isActivePrint = false;
|
||||
public bool isSelectedItem = false;
|
||||
public bool isHoverItem = false;
|
||||
TextWidget partLabel;
|
||||
Button viewLink;
|
||||
Button removeLink;
|
||||
public CheckBox selectionCheckBox;
|
||||
FlowLayoutWidget buttonContainer;
|
||||
LinkButtonFactory linkButtonFactory = new LinkButtonFactory();
|
||||
|
||||
public ToolsListItem(PrintItemWrapper printItem)
|
||||
{
|
||||
this.printItem = printItem;
|
||||
linkButtonFactory.fontSize = 10;
|
||||
linkButtonFactory.textColor = RGBA_Bytes.White;
|
||||
|
||||
WidgetTextColor = RGBA_Bytes.Black;
|
||||
WidgetBackgroundColor = RGBA_Bytes.White;
|
||||
|
||||
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
|
||||
|
||||
SetDisplayAttributes();
|
||||
|
||||
FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.LeftToRight);
|
||||
mainContainer.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
{
|
||||
GuiWidget selectionCheckBoxContainer = new GuiWidget();
|
||||
selectionCheckBoxContainer.VAnchor = VAnchor.Max_FitToChildren_ParentHeight;
|
||||
selectionCheckBoxContainer.HAnchor = Agg.UI.HAnchor.FitToChildren;
|
||||
selectionCheckBoxContainer.Margin = new BorderDouble(left: 6);
|
||||
selectionCheckBox = new CheckBox("");
|
||||
selectionCheckBox.VAnchor = VAnchor.ParentCenter;
|
||||
selectionCheckBox.HAnchor = HAnchor.ParentCenter;
|
||||
selectionCheckBoxContainer.AddChild(selectionCheckBox);
|
||||
|
||||
FlowLayoutWidget leftColumn = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
leftColumn.VAnchor |= VAnchor.ParentTop;
|
||||
|
||||
FlowLayoutWidget middleColumn = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
middleColumn.VAnchor |= VAnchor.ParentTop;
|
||||
middleColumn.HAnchor |= HAnchor.ParentLeftRight;
|
||||
middleColumn.Padding = new BorderDouble(6);
|
||||
middleColumn.Margin = new BorderDouble(10,0);
|
||||
{
|
||||
string labelName = textInfo.ToTitleCase(printItem.Name);
|
||||
labelName = labelName.Replace('_', ' ');
|
||||
partLabel = new TextWidget(labelName, pointSize: 12);
|
||||
partLabel.TextColor = WidgetTextColor;
|
||||
partLabel.MinimumSize = new Vector2(1, 16);
|
||||
middleColumn.AddChild(partLabel);
|
||||
}
|
||||
|
||||
FlowLayoutWidget rightColumn = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
rightColumn.VAnchor |= VAnchor.ParentCenter;
|
||||
|
||||
buttonContainer = new FlowLayoutWidget();
|
||||
buttonContainer.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
buttonContainer.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
|
||||
{
|
||||
viewLink = linkButtonFactory.Generate("View");
|
||||
viewLink.Margin = new BorderDouble(left: 10, right:10);
|
||||
viewLink.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
removeLink = linkButtonFactory.Generate("Remove");
|
||||
removeLink.Margin = new BorderDouble(right: 10);
|
||||
removeLink.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
buttonContainer.AddChild(viewLink);
|
||||
buttonContainer.AddChild(removeLink);
|
||||
}
|
||||
rightColumn.AddChild(buttonContainer);
|
||||
|
||||
mainContainer.AddChild(selectionCheckBoxContainer);
|
||||
mainContainer.AddChild(leftColumn);
|
||||
mainContainer.AddChild(middleColumn);
|
||||
mainContainer.AddChild(rightColumn);
|
||||
}
|
||||
this.AddChild(mainContainer);
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
void SetDisplayAttributes()
|
||||
{
|
||||
this.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
|
||||
this.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
|
||||
this.Height = 28;
|
||||
this.BackgroundColor = this.WidgetBackgroundColor;
|
||||
this.Padding = new BorderDouble(0);
|
||||
this.Margin = new BorderDouble(6,0,6,6);
|
||||
}
|
||||
|
||||
event EventHandler unregisterEvents;
|
||||
void AddHandlers()
|
||||
{
|
||||
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
|
||||
viewLink.Click += new ButtonBase.ButtonEventHandler(onViewLinkClick);
|
||||
removeLink.Click += new ButtonBase.ButtonEventHandler(onRemoveLinkClick);
|
||||
selectionCheckBox.CheckedStateChanged += selectionCheckBox_CheckedStateChanged;
|
||||
}
|
||||
|
||||
public override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (unregisterEvents != null)
|
||||
{
|
||||
unregisterEvents(this, null);
|
||||
}
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
private void onClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (this.isSelectedItem == false)
|
||||
{
|
||||
this.isSelectedItem = true;
|
||||
ToolsListControl.Instance.SelectedItems.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void selectionCheckBox_CheckedStateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectionCheckBox.Checked == true)
|
||||
{
|
||||
this.isSelectedItem = true;
|
||||
ToolsListControl.Instance.SelectedItems.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.isSelectedItem = false;
|
||||
ToolsListControl.Instance.SelectedItems.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void onAddLinkClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
void RemoveThisFromPrintLibrary(object state)
|
||||
{
|
||||
ToolsListControl.Instance.RemoveChild(this);
|
||||
this.printItem.Delete();
|
||||
}
|
||||
|
||||
private void onRemoveLinkClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(RemoveThisFromPrintLibrary);
|
||||
}
|
||||
|
||||
private void onViewLinkClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
UiThread.RunOnIdle(onViewLinkClick);
|
||||
}
|
||||
|
||||
private void onViewLinkClick(object state)
|
||||
{
|
||||
string pathAndFile = this.printItem.FileLocation;
|
||||
Console.WriteLine(pathAndFile);
|
||||
if (File.Exists(pathAndFile))
|
||||
{
|
||||
new PartPreviewMainWindow(this.printItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = String.Format("Cannot find\n'{0}'.\nWould you like to remove it from the queue?", pathAndFile);
|
||||
if (StyledMessageBox.ShowMessageBox(message, "Item not found", StyledMessageBox.MessageType.YES_NO))
|
||||
{
|
||||
ToolsListControl.Instance.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.isHoverItem)
|
||||
{
|
||||
buttonContainer.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonContainer.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;
|
||||
|
||||
//RectangleDouble Bounds = LocalBounds;
|
||||
//RoundedRect rectBorder = new RoundedRect(Bounds, 0);
|
||||
//graphics2D.Render(new Stroke(rectBorder, 3), RGBA_Bytes.White);
|
||||
}
|
||||
|
||||
else if (this.isHoverItem)
|
||||
{
|
||||
RectangleDouble Bounds = LocalBounds;
|
||||
RoundedRect rectBorder = new RoundedRect(Bounds, 0);
|
||||
|
||||
this.BackgroundColor = ActiveTheme.Instance.SecondaryAccentColor;
|
||||
this.partLabel.TextColor = RGBA_Bytes.White;
|
||||
this.selectionCheckBox.TextColor = RGBA_Bytes.White;
|
||||
|
||||
graphics2D.Render(new Stroke(rectBorder, 3), ActiveTheme.Instance.PrimaryAccentColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.BackgroundColor = RGBA_Bytes.White;
|
||||
this.partLabel.TextColor = RGBA_Bytes.Black;
|
||||
this.selectionCheckBox.TextColor = RGBA_Bytes.Black;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,237 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.PrintQueue;
|
||||
using MatterHackers.Localizations;
|
||||
|
||||
namespace MatterHackers.MatterControl.ToolsPage
|
||||
{
|
||||
public class ToolsWidget : GuiWidget
|
||||
{
|
||||
TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
TextImageButtonFactory searchButtonFactory = new TextImageButtonFactory();
|
||||
Button deleteFromLibraryButton;
|
||||
Button addToQueueButton;
|
||||
Button searchButton;
|
||||
MHTextEditWidget searchInput;
|
||||
|
||||
public ToolsWidget()
|
||||
{
|
||||
SetDisplayAttributes();
|
||||
|
||||
textImageButtonFactory.normalTextColor = RGBA_Bytes.White;
|
||||
textImageButtonFactory.hoverTextColor = RGBA_Bytes.White;
|
||||
textImageButtonFactory.disabledTextColor = RGBA_Bytes.White;
|
||||
textImageButtonFactory.pressedTextColor = RGBA_Bytes.White;
|
||||
textImageButtonFactory.borderWidth = 0;
|
||||
|
||||
searchButtonFactory.normalTextColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
searchButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
searchButtonFactory.disabledTextColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
searchButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
searchButtonFactory.borderWidth = 0;
|
||||
|
||||
FlowLayoutWidget allControls = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
{
|
||||
FlowLayoutWidget searchPanel = new FlowLayoutWidget();
|
||||
searchPanel.BackgroundColor = new RGBA_Bytes(180, 180, 180);
|
||||
searchPanel.HAnchor = HAnchor.ParentLeftRight;
|
||||
searchPanel.Padding = new BorderDouble(3, 3);
|
||||
{
|
||||
searchInput = new MHTextEditWidget();
|
||||
searchInput.Margin = new BorderDouble(6, 0);
|
||||
searchInput.HAnchor = HAnchor.ParentLeftRight;
|
||||
searchInput.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
searchButton = searchButtonFactory.Generate("Search");
|
||||
searchButton.Margin = new BorderDouble(right:9);
|
||||
|
||||
searchPanel.AddChild(searchInput);
|
||||
searchPanel.AddChild(searchButton);
|
||||
}
|
||||
|
||||
FlowLayoutWidget buttonPanel = new FlowLayoutWidget();
|
||||
buttonPanel.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonPanel.Padding = new BorderDouble(0, 3);
|
||||
{
|
||||
Button addToLibrary = textImageButtonFactory.Generate(LocalizedString.Get("Import"), "icon_import_white_32x32.png");
|
||||
buttonPanel.AddChild(addToLibrary);
|
||||
addToLibrary.Margin = new BorderDouble(0, 0, 3, 0);
|
||||
addToLibrary.Click += new ButtonBase.ButtonEventHandler(loadFile_Click);
|
||||
|
||||
deleteFromLibraryButton = textImageButtonFactory.Generate(LocalizedString.Get("Delete"));
|
||||
deleteFromLibraryButton.Margin = new BorderDouble(3, 0);
|
||||
deleteFromLibraryButton.Click += new ButtonBase.ButtonEventHandler(deleteFromQueueButton_Click);
|
||||
deleteFromLibraryButton.Visible = false;
|
||||
buttonPanel.AddChild(deleteFromLibraryButton);
|
||||
|
||||
addToQueueButton = textImageButtonFactory.Generate(LocalizedString.Get("Add to Queue"));
|
||||
addToQueueButton.Margin = new BorderDouble(3, 0);
|
||||
addToQueueButton.Click += new ButtonBase.ButtonEventHandler(addToQueueButton_Click);
|
||||
addToQueueButton.Visible = false;
|
||||
buttonPanel.AddChild(addToQueueButton);
|
||||
|
||||
GuiWidget spacer = new GuiWidget();
|
||||
spacer.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonPanel.AddChild(spacer);
|
||||
}
|
||||
|
||||
allControls.AddChild(searchPanel);
|
||||
allControls.AddChild(ToolsListControl.Instance);
|
||||
allControls.AddChild(buttonPanel);
|
||||
}
|
||||
allControls.AnchorAll();
|
||||
|
||||
this.AddChild(allControls);
|
||||
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
private void AddHandlers()
|
||||
{
|
||||
ToolsListControl.Instance.SelectedItems.OnAdd += onLibraryItemsSelected;
|
||||
ToolsListControl.Instance.SelectedItems.OnRemove += onLibraryItemsSelected;
|
||||
searchInput.ActualTextEditWidget.EnterPressed += new KeyEventHandler(searchInputEnterPressed);
|
||||
searchButton.Click += searchButtonClick;
|
||||
searchInput.ActualTextEditWidget.KeyUp += searchInputKeyUp;
|
||||
}
|
||||
|
||||
void searchInputKeyUp(object sender, KeyEventArgs keyEvent)
|
||||
{
|
||||
searchButtonClick(null, null);
|
||||
}
|
||||
|
||||
void searchInputEnterPressed(object sender, KeyEventArgs keyEvent)
|
||||
{
|
||||
searchButtonClick(null, null);
|
||||
}
|
||||
|
||||
void searchButtonClick(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
string textToSend = searchInput.Text.Trim();
|
||||
ToolsListControl.Instance.KeywordFilter = textToSend;
|
||||
}
|
||||
|
||||
private void addToQueueButton_Click(object sender, MouseEventArgs e)
|
||||
{
|
||||
foreach (ToolsListItem item in ToolsListControl.Instance.SelectedItems)
|
||||
{
|
||||
PrintQueue.PrintQueueItem queueItem = new PrintQueue.PrintQueueItem(item.printItem);
|
||||
PrintQueue.PrintQueueControl.Instance.AddChild(queueItem);
|
||||
}
|
||||
ToolsListControl.Instance.ClearSelectedItems();
|
||||
PrintQueue.PrintQueueControl.Instance.EnsureSelection();
|
||||
PrintQueueControl.Instance.SaveDefaultQueue();
|
||||
}
|
||||
|
||||
private void onLibraryItemsSelected(object sender, EventArgs e)
|
||||
{
|
||||
List<ToolsListItem> selectedItemsList = (List<ToolsListItem>)sender;
|
||||
if (selectedItemsList.Count > 0)
|
||||
{
|
||||
addToQueueButton.Visible = true;
|
||||
deleteFromLibraryButton.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
addToQueueButton.Visible = false;
|
||||
deleteFromLibraryButton.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
this.Padding = new BorderDouble(3);
|
||||
this.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
this.AnchorAll();
|
||||
}
|
||||
|
||||
void deleteFromQueueButton_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
ToolsListControl.Instance.RemoveSelectedItems();
|
||||
}
|
||||
|
||||
public override void OnDragEnter(FileDropEventArgs fileDropEventArgs)
|
||||
{
|
||||
foreach (string file in fileDropEventArgs.DroppedFiles)
|
||||
{
|
||||
string extension = Path.GetExtension(file).ToUpper();
|
||||
if (extension == ".STL" || extension == ".GCODE")
|
||||
{
|
||||
fileDropEventArgs.AcceptDrop = true;
|
||||
}
|
||||
}
|
||||
base.OnDragEnter(fileDropEventArgs);
|
||||
}
|
||||
|
||||
public override void OnDragOver(FileDropEventArgs fileDropEventArgs)
|
||||
{
|
||||
foreach (string file in fileDropEventArgs.DroppedFiles)
|
||||
{
|
||||
string extension = Path.GetExtension(file).ToUpper();
|
||||
if (extension == ".STL" || extension == ".GCODE")
|
||||
{
|
||||
fileDropEventArgs.AcceptDrop = true;
|
||||
}
|
||||
}
|
||||
base.OnDragOver(fileDropEventArgs);
|
||||
}
|
||||
|
||||
public override void OnDragDrop(FileDropEventArgs fileDropEventArgs)
|
||||
{
|
||||
foreach (string droppedFileName in fileDropEventArgs.DroppedFiles)
|
||||
{
|
||||
string extension = Path.GetExtension(droppedFileName).ToUpper();
|
||||
if (extension == ".STL" || extension == ".GCODE")
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(droppedFileName);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(droppedFileName);
|
||||
printItem.PrintItemCollectionID = ToolsListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
|
||||
ToolsListItem queueItem = new ToolsListItem(new PrintItemWrapper(printItem));
|
||||
ToolsListControl.Instance.AddChild(queueItem);
|
||||
}
|
||||
ToolsListControl.Instance.Invalidate();
|
||||
}
|
||||
ToolsListControl.Instance.SaveLibraryItems();
|
||||
|
||||
base.OnDragDrop(fileDropEventArgs);
|
||||
}
|
||||
|
||||
void loadFile_Click(object sender, MouseEventArgs mouseEvent)
|
||||
{
|
||||
OpenFileDialogParams openParams = new OpenFileDialogParams("Select an STL file, Select a GCODE file|*.stl;*.gcode", multiSelect: true);
|
||||
FileDialog.OpenFileDialog(ref openParams);
|
||||
if (openParams.FileNames != null)
|
||||
{
|
||||
foreach (string loadedFileName in openParams.FileNames)
|
||||
{
|
||||
PrintItem printItem = new PrintItem();
|
||||
printItem.Name = System.IO.Path.GetFileNameWithoutExtension(loadedFileName);
|
||||
printItem.FileLocation = System.IO.Path.GetFullPath(loadedFileName);
|
||||
printItem.PrintItemCollectionID = ToolsListControl.Instance.LibraryCollection.Id;
|
||||
printItem.Commit();
|
||||
|
||||
ToolsListItem queueItem = new ToolsListItem(new PrintItemWrapper(printItem));
|
||||
ToolsListControl.Instance.AddChild(queueItem);
|
||||
}
|
||||
ToolsListControl.Instance.Invalidate();
|
||||
}
|
||||
ToolsListControl.Instance.SaveLibraryItems();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -162,8 +162,8 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
|
||||
static string applicationDataPath = ApplicationDataStorage.Instance.ApplicationUserDataPath;
|
||||
static string defaultManifestPathAndFileName = System.IO.Path.Combine(applicationDataPath,"data", "temp", "project-assembly", "manifest.json");
|
||||
static string defaultProjectPathAndFileName = System.IO.Path.Combine(applicationDataPath,"data", "default.zip");
|
||||
static string defaultManifestPathAndFileName = Path.Combine(applicationDataPath, "data", "temp", "project-assembly", "manifest.json");
|
||||
static string defaultProjectPathAndFileName = Path.Combine(applicationDataPath, "data", "default.zip");
|
||||
|
||||
public static void EmptyFolder(System.IO.DirectoryInfo directory)
|
||||
{
|
||||
|
|
@ -290,8 +290,8 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
|
||||
if (zipEntry.Name == "manifest.json"
|
||||
|| System.IO.Path.GetExtension(zipEntry.Name).ToUpper() == ".STL"
|
||||
|| System.IO.Path.GetExtension(zipEntry.Name).ToUpper() == ".GCODE")
|
||||
|| Path.GetExtension(zipEntry.Name).ToUpper() == ".STL"
|
||||
|| Path.GetExtension(zipEntry.Name).ToUpper() == ".GCODE")
|
||||
{
|
||||
string extractedFileName = Path.Combine(stagingFolder, zipEntry.Name);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue