Got rid of file watchers.
This commit is contained in:
parent
5de11eb5bf
commit
9a3efa0dbd
3 changed files with 31 additions and 77 deletions
|
|
@ -74,7 +74,7 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
private PartPreviewMainWindow partPreviewWindow;
|
||||
|
||||
private PrintItemWrapper printItem;
|
||||
private PrintItemWrapper printItemWrapper;
|
||||
|
||||
private bool thumbNailHasBeenCreated = false;
|
||||
|
||||
|
|
@ -129,9 +129,9 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
if (printItem != null)
|
||||
if (printItemWrapper != null)
|
||||
{
|
||||
string pathAndFile = printItem.FileLocation;
|
||||
string pathAndFile = printItemWrapper.FileLocation;
|
||||
if (File.Exists(pathAndFile))
|
||||
{
|
||||
bool shiftKeyDown = Keyboard.IsKeyDown(Keys.ShiftKey);
|
||||
|
|
@ -146,7 +146,7 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
else
|
||||
{
|
||||
QueueRowItem.ShowCantFindFileMessage(printItem);
|
||||
QueueRowItem.ShowCantFindFileMessage(printItemWrapper);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -162,20 +162,20 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
public PrintItemWrapper ItemWrapper
|
||||
{
|
||||
get { return printItem; }
|
||||
get { return printItemWrapper; }
|
||||
set
|
||||
{
|
||||
if (ItemWrapper != null)
|
||||
{
|
||||
ItemWrapper.FileHasChanged -= item_FileHasChanged;
|
||||
PrintItemWrapper.FileHasChanged.UnregisterEvent(item_FileHasChanged, ref unregisterEvents);
|
||||
}
|
||||
|
||||
printItem = value;
|
||||
printItemWrapper = value;
|
||||
|
||||
thumbNailHasBeenCreated = false;
|
||||
if (ItemWrapper != null)
|
||||
{
|
||||
ItemWrapper.FileHasChanged += item_FileHasChanged;
|
||||
PrintItemWrapper.FileHasChanged.RegisterEvent(item_FileHasChanged, ref unregisterEvents);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -202,10 +202,6 @@ namespace MatterHackers.MatterControl
|
|||
unregisterEvents(this, null);
|
||||
}
|
||||
|
||||
if (ItemWrapper != null)
|
||||
{
|
||||
ItemWrapper.FileHasChanged -= item_FileHasChanged;
|
||||
}
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
|
|
@ -542,8 +538,13 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
private void item_FileHasChanged(object sender, EventArgs e)
|
||||
{
|
||||
thumbNailHasBeenCreated = false;
|
||||
Invalidate();
|
||||
PrintItemWrapper senderItem = sender as PrintItemWrapper;
|
||||
if (senderItem != null
|
||||
&& senderItem.FileLocation == printItemWrapper.FileLocation)
|
||||
{
|
||||
thumbNailHasBeenCreated = false;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private bool MeshIsTooBigToLoad(string fileLocation)
|
||||
|
|
|
|||
|
|
@ -505,10 +505,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
private bool DoAddFileAfterCreatingEditData { get; set; }
|
||||
public override void OnClosed(EventArgs e)
|
||||
{
|
||||
if (printItemWrapper != null)
|
||||
{
|
||||
printItemWrapper.FileHasChanged -= ReloadMeshIfChangeExternaly;
|
||||
}
|
||||
if (unregisterEvents != null)
|
||||
{
|
||||
unregisterEvents(this, null);
|
||||
|
|
@ -1167,8 +1163,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
if (printItemWrapper != null)
|
||||
{
|
||||
// remove it first to make sure we don't double add it
|
||||
printItemWrapper.FileHasChanged -= ReloadMeshIfChangeExternaly;
|
||||
printItemWrapper.FileHasChanged += ReloadMeshIfChangeExternaly;
|
||||
PrintItemWrapper.FileHasChanged.UnregisterEvent(ReloadMeshIfChangeExternaly, ref unregisterEvents);
|
||||
PrintItemWrapper.FileHasChanged.RegisterEvent(ReloadMeshIfChangeExternaly, ref unregisterEvents); ;
|
||||
|
||||
// don't load the mesh until we get all the rest of the interface built
|
||||
meshViewerWidget.LoadDone += new EventHandler(meshViewerWidget_LoadDone);
|
||||
|
|
@ -1877,6 +1873,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
MeshFileIo.Save(asynchMeshGroups, printItemWrapper.FileLocation, outputInfo);
|
||||
|
||||
printItemWrapper.ReportFileChange();
|
||||
|
||||
if (returnInfo != null
|
||||
&& returnInfo.destinationLibraryProvider != null)
|
||||
{
|
||||
|
|
@ -2127,12 +2125,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
private void ReloadMeshIfChangeExternaly(Object sender, EventArgs e)
|
||||
{
|
||||
if (!editorThatRequestedSave)
|
||||
PrintItemWrapper senderItem = sender as PrintItemWrapper;
|
||||
if (senderItem != null
|
||||
&& senderItem.FileLocation == printItemWrapper.FileLocation)
|
||||
{
|
||||
ClearBedAndLoadPrintItemWrapper(printItemWrapper);
|
||||
}
|
||||
if (!editorThatRequestedSave)
|
||||
{
|
||||
ClearBedAndLoadPrintItemWrapper(printItemWrapper);
|
||||
}
|
||||
|
||||
editorThatRequestedSave = false;
|
||||
editorThatRequestedSave = false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool rotateQueueMenu_Click()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
{
|
||||
public class PrintItemWrapper
|
||||
{
|
||||
public event EventHandler FileHasChanged;
|
||||
public static RootedObjectEventHandler FileHasChanged = new RootedObjectEventHandler();
|
||||
|
||||
public event EventHandler SlicingDone;
|
||||
public event EventHandler SlicingOutputMessage;
|
||||
private static string fileNotFound = "File Not Found\n'{0}'".Localize();
|
||||
|
|
@ -61,12 +62,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
|
||||
private long writeTime = 0;
|
||||
|
||||
private FileSystemWatcher diskFileWatcher = new FileSystemWatcher();
|
||||
|
||||
public PrintItemWrapper(DataStorage.PrintItem printItem, List<ProviderLocatorNode> sourceLibraryProviderLocator = null)
|
||||
{
|
||||
this.PrintItem = printItem;
|
||||
UpdateFileTracking(FileLocation);
|
||||
|
||||
if (FileLocation != null)
|
||||
{
|
||||
|
|
@ -210,8 +208,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
set
|
||||
{
|
||||
this.PrintItem.FileLocation = value;
|
||||
|
||||
UpdateFileTracking(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -224,54 +220,9 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
}
|
||||
}
|
||||
|
||||
Stopwatch timeSinceLastFileUpdate = new Stopwatch();
|
||||
private void UpdateFileTracking(string value)
|
||||
{
|
||||
if (value != diskFileWatcher.Filter)
|
||||
{
|
||||
if (Directory.Exists(Path.GetDirectoryName(value)))
|
||||
{
|
||||
diskFileWatcher.Path = Path.GetDirectoryName(value);
|
||||
diskFileWatcher.Filter = Path.GetFileName(value);
|
||||
|
||||
diskFileWatcher.NotifyFilter = NotifyFilters.LastWrite;
|
||||
diskFileWatcher.Changed += SetFileChanged;
|
||||
diskFileWatcher.Created += SetFileChanged;
|
||||
|
||||
// Begin watching.
|
||||
diskFileWatcher.EnableRaisingEvents = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
diskFileWatcher.EnableRaisingEvents = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ReportFileChange()
|
||||
{
|
||||
if (timeSinceLastFileUpdate.IsRunning)
|
||||
{
|
||||
if (timeSinceLastFileUpdate.Elapsed.TotalSeconds > 1)
|
||||
{
|
||||
timeSinceLastFileUpdate.Stop();
|
||||
if (FileHasChanged != null)
|
||||
{
|
||||
FileHasChanged(this, null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UiThread.RunOnIdle(ReportFileChange, .05);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFileChanged(object sender, FileSystemEventArgs e)
|
||||
{
|
||||
timeSinceLastFileUpdate.Restart();
|
||||
|
||||
UiThread.RunOnIdle(ReportFileChange, .05);
|
||||
FileHasChanged.CallEvents(this, null);
|
||||
}
|
||||
|
||||
PrintItem printItem;
|
||||
|
|
@ -281,7 +232,6 @@ namespace MatterHackers.MatterControl.PrintQueue
|
|||
set
|
||||
{
|
||||
printItem = value;
|
||||
UpdateFileTracking(printItem.FileLocation);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue