示例#1
0
 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();
 }
示例#2
0
文件: Rename.cs 项目: karno/Typict
 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);
     }
 }
示例#3
0
 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);
     }
 }
示例#4
0
文件: Prefetch.cs 项目: n0tzy/Typict
 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;
         }
     }
 }
示例#5
0
文件: Prefetch.cs 项目: n0tzy/Typict
 /// <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;
     }
 }
示例#6
0
文件: Prefetch.cs 项目: n0tzy/Typict
 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;
     }
 }
示例#7
0
 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;
 }
示例#8
0
文件: Prefetch.cs 项目: n0tzy/Typict
 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;
         }
     }
 }
示例#9
0
文件: Renderer.cs 项目: karno/Typict
 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();
 }
示例#10
0
 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();
     }
 }