From 5ef2412df118696ee21d6b188b3488b51ea16cb7 Mon Sep 17 00:00:00 2001
From: Mark Winter <mwinter@drexel.edu>
Date: Tue, 15 Apr 2014 13:43:27 -0400
Subject: [PATCH] Added support to toggle neuropicker last/stain frame using
 up/down and left/right arrows. Also now always finds last frame image in
 folder even if another image was selected.

---
 src/MATLAB/NeuroPicker.m | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/src/MATLAB/NeuroPicker.m b/src/MATLAB/NeuroPicker.m
index 9b4dfdf6..0c93df7a 100644
--- a/src/MATLAB/NeuroPicker.m
+++ b/src/MATLAB/NeuroPicker.m
@@ -30,6 +30,31 @@ function NeuroPicker()
         loadStainImages(fullfile(imgPath,phaseFiles(1).name));
     end
     
+    lastImgFile = '';
+    lastImgFrame = 0;
+    
+    flist = dir(fullfile(imgPath,'*.tif'));
+    for i=1:length(flist)
+        imgFilePattern = '(.+)_t(\d+).tif';
+        imgFileTokens = regexpi(flist(i).name,imgFilePattern, 'once','tokens');
+        if ( isempty(imgFileTokens) )
+            continue;
+        end
+        
+        imgFrame = str2double(imgFileTokens{2});
+        if ( imgFrame > lastImgFrame )
+            lastImgFrame = imgFrame;
+            lastImgFile = [imgFileTokens{1} '_t' imgFileTokens{2} '.tif'];
+        end
+    end
+    
+    if ( isempty(lastImgFile) )
+        msgbox('Unable to identify last frame image in selected folder.');
+        return;
+    end
+    
+    imgFile = lastImgFile;
+    
     [sigDigits datasetName] = ParseImageName(imgFile);
     datasetPath = fullfile(imgPath,imgFile);
     
@@ -55,7 +80,7 @@ function NeuroPicker()
     hFig = figure();
     set(hFig, 'CloseRequestFcn',@closeFigure);
     set(hFig, 'WindowScrollWheelFcn',@scrollToggle);
-%     set(hFig, 'WindowScrollWheelFcn',@ScrollToggle);
+    set(hFig, 'KeyPressFcn',@figureKeyPress);
     
     createMenu();
     createEmptyMenu();
@@ -550,6 +575,14 @@ function guessPath = guessOpenPath()
     end
 end
 
+function figureKeyPress(src,evt)
+    if ( strcmpi(evt.Key, 'downarrow') || strcmpi(evt.Key, 'rightarrow') )
+        scrollToggle();
+    elseif ( strcmpi(evt.Key, 'uparrow') || strcmpi(evt.Key, 'leftarrow') )
+        scrollToggle();
+    end
+end
+
 function scrollToggle(src, evt)
     global hFig bDirty viewIm finalIm stainIm datasetName
     
-- 
GitLab