private void ParseMulti(Keys k) { if (multiMode == MultipleMode.FolderMulti) { int i = 0; Data.GroupingElement elem = Core.CurrentOperation.GetCurrentElement(); string dir = Path.GetDirectoryName(elem.ImageSourcePath); while (Path.GetDirectoryName(elem.ImageSourcePath) == dir) { SetElemDestination(elem, k); i++; if (Core.CurrentOperation.Index + i >= Core.CurrentOperation.Data.ElementsLength) { break; } elem = Core.CurrentOperation.Data.GetElement(Core.CurrentOperation.Index + i); } } else if (multiMode == MultipleMode.NumericMulti) { for (int i = 0; i < setMultiValue; i++) { SetElemDestination(Core.CurrentOperation.Data.GetElement(Core.CurrentOperation.Index + i), k); } } else { SetElemDestination(Core.CurrentOperation.GetCurrentElement(), k); } Core.CurrentOperation.SetNext(); }
public Rename(Data.GroupingElement elem) { if (elem == null) throw new ArgumentNullException("elem"); this.elem = elem; InitializeComponent(); if (String.IsNullOrEmpty(elem.NewName)) { nameBox.Text = Path.GetFileNameWithoutExtension(elem.ImageSourcePath); extLabel.Text = Path.GetExtension(elem.ImageSourcePath); } else { nameBox.Text = Path.GetFileNameWithoutExtension(elem.NewName); extLabel.Text = Path.GetExtension(elem.NewName); } }
public Rename(Data.GroupingElement elem) { if (elem == null) { throw new ArgumentNullException("elem"); } this.elem = elem; InitializeComponent(); if (String.IsNullOrEmpty(elem.NewName)) { nameBox.Text = Path.GetFileNameWithoutExtension(elem.ImageSourcePath); extLabel.Text = Path.GetExtension(elem.ImageSourcePath); } else { nameBox.Text = Path.GetFileNameWithoutExtension(elem.NewName); extLabel.Text = Path.GetExtension(elem.NewName); } }
public void EnqueueImage(Data.GroupingElement elem) { imageQueue.Enqueue(elem); while (imageQueue.Count > Core.Config.BehaviorConfig.PrefetchConfig.PrefetchKeepMaximum) { var deq = imageQueue.Dequeue(); if (!deq.IsBuffered) { continue; } try { deq.BufferedImage.Dispose(); } finally { deq.BufferedImage = null; } } }
/// <summary> /// サムネイルの読み込み /// </summary> public void LoadThumbnailByElem(Data.GroupingElement elem) { //lock image lock (ThumbCheckLockingLocker) { if (elem.BTLocking || elem.IsThumbnailBuffered) { return; } elem.BTLocking = true; } try { //If prefetch have finished, we create thumbnail with buffered image. if (elem.IsBuffered) { elem.BufferedThumbnail = Subsystem.ImageReader.Instance.CreateThumbnail(elem.BufferedImage); } else { elem.BufferedThumbnail = Subsystem.ImageReader.Instance.CreateThumbnail(elem.ImageSourcePath); } this.ElementsDispose.EnqueueThumbnail(elem); } catch (Exception excp) { //following error if (!elem.IsBuffered && elem.IsThumbnailBuffered) { elem.LoadFailed = true; elem.ExceptionText = excp.ToString(); } } finally { //release locking elem.BTLocking = false; } }
public void LoadImageByElem(Data.GroupingElement elem) { //locking this image lock (CheckLockingLocker) { if (elem.BILocking || elem.IsBuffered) { return; } elem.BILocking = true; } try { //load image elem.BufferedImage = Subsystem.ImageReader.Instance.LoadImage(elem.ImageSourcePath); elem.LoadFailed = false; this.ElementsDispose.EnqueueImage(elem); if (!elem.IsThumbnailBuffered) { LoadThumbnailByElem(elem); } } catch (Exception excp) { //error following if (elem.BufferedImage == null) { elem.LoadFailed = true; elem.ExceptionText = excp.ToString(); } } finally { //release image's locking elem.BILocking = false; } }
private void SetElemDestination(Data.GroupingElement elem, Keys k) { elem.Destinations.Clear(); if (Accepting) { foreach (var ki in multiDests) { if (!Core.CurrentOperation.Data.IsDestinationExists(ki)) { MessageBox.Show("キー " + k.GetString() + " に関連づけられたフォルダーはありません。" + Environment.NewLine + "このキーへの振り分けは無視されます。", "マルチコピーの設定エラー", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { elem.Destinations.Add(new Data.GroupingElement.DestData(Core.CurrentOperation.Data.GetDestination(ki))); } } } else { elem.Destinations.Add(new Data.GroupingElement.DestData(Core.CurrentOperation.Data.GetDestination(k))); } elem.DistributionMode = Core.DistributionMode; }
public void EnqueueThumbnail(Data.GroupingElement elem) { thumbnailQueue.Enqueue(elem); if (Core.Config.BehaviorConfig.PrefetchConfig.KeepAllThumbnail) { return; } while (imageQueue.Count > Core.Config.BehaviorConfig.PrefetchConfig.ThumbnailKeepMaximum) { var deq = thumbnailQueue.Dequeue(); if (!deq.IsThumbnailBuffered) { continue; } try { deq.BufferedThumbnail.Dispose(); } finally { deq.BufferedThumbnail = null; } } }
void CurrentOperation_IndexUpdated() { curElem = Core.CurrentOperation.GetCurrentElement(); //バッファリングされているかのチェック if (curElem != null && !curElem.IsBuffered && !curElem.LoadFailed) { if (ImageLoadingChanged != null) ImageLoadingChanged.Invoke(true); System.Diagnostics.Debug.WriteLine("Self fetch start... =>" + curElem.ImageSourcePath); var invoke = new Action<Data.GroupingElement>(Subsystem.Prefetch.Instance.Loader.LoadImageByElem); invoke.BeginInvoke(curElem, (iar) => { ((Action<Data.GroupingElement>)iar.AsyncState).EndInvoke(iar); this.Invoke(new Action(() => { if (ImageLoadingChanged != null) ImageLoadingChanged.Invoke(false); if (UpdateImageSize != null) UpdateImageSize.Invoke(); })); }, invoke); } if (curElem != null) { if (FileChanged != null) FileChanged.Invoke(curElem.ImageSourcePath); } else { if (FileChanged != null) FileChanged.Invoke(String.Empty); } if (Core.Config.DisplayConfig.OverlapThumbnailConfig.Show) { nextElem = Core.CurrentOperation.GetNextElement(); if (nextElem != null && !nextElem.IsBuffered) { System.Diagnostics.Debug.WriteLine("Self thumbnail fetch start... =>" + curElem.ImageSourcePath); var invoke = new Action<Data.GroupingElement>(Subsystem.Prefetch.Instance.Loader.LoadImageByElem); invoke.BeginInvoke(curElem, (iar) => { ((Action<Data.GroupingElement>)iar.AsyncState).EndInvoke(iar); this.Invoke(new Action(() => { this.Refresh(); })); }, invoke); } } if (UpdateImageSize != null) UpdateImageSize.Invoke(); }
void CurrentOperation_IndexUpdated() { curElem = Core.CurrentOperation.GetCurrentElement(); //バッファリングされているかのチェック if (curElem != null && !curElem.IsBuffered && !curElem.LoadFailed) { if (ImageLoadingChanged != null) { ImageLoadingChanged.Invoke(true); } System.Diagnostics.Debug.WriteLine("Self fetch start... =>" + curElem.ImageSourcePath); var invoke = new Action <Data.GroupingElement>(Subsystem.Prefetch.Instance.Loader.LoadImageByElem); invoke.BeginInvoke(curElem, (iar) => { ((Action <Data.GroupingElement>)iar.AsyncState).EndInvoke(iar); this.Invoke(new Action(() => { if (ImageLoadingChanged != null) { ImageLoadingChanged.Invoke(false); } if (UpdateImageSize != null) { UpdateImageSize.Invoke(); } })); }, invoke); } if (curElem != null) { if (FileChanged != null) { FileChanged.Invoke(curElem.ImageSourcePath); } } else { if (FileChanged != null) { FileChanged.Invoke(String.Empty); } } if (Core.Config.DisplayConfig.OverlapThumbnailConfig.Show) { nextElem = Core.CurrentOperation.GetNextElement(); if (nextElem != null && !nextElem.IsBuffered) { System.Diagnostics.Debug.WriteLine("Self thumbnail fetch start... =>" + curElem.ImageSourcePath); var invoke = new Action <Data.GroupingElement>(Subsystem.Prefetch.Instance.Loader.LoadImageByElem); invoke.BeginInvoke(curElem, (iar) => { ((Action <Data.GroupingElement>)iar.AsyncState).EndInvoke(iar); this.Invoke(new Action(() => { this.Refresh(); })); }, invoke); } } if (UpdateImageSize != null) { UpdateImageSize.Invoke(); } }