###################################################################
LATEST EMAIL UPDATE: 10 Oct 2015
###################################################################

Csurf.app for Mac

I embedded the Mac csurf distribution inside an
applescript wrapper, Csurf.app, so that it acts
like a regular Mac Application (even has an icon).
It is a easier to install/update (drag to
Applications) and start (double-click).  The
functionality and code in the csurf directory:

  /Applications/Csurf.app/Contents/MacOS/csurf

is exactly identical, and can be moved out of
there and used as before.

Since Csurf.app can't see your current shell
variables environment, if csurf detects it's
inside the wrapper, another csurf Preferences menu
item gets added:

 Preferences -> Save Curr Subj/Sess Dirs for Startup

which can save the current subjects and sessions
directory to ~/.csurfrc, which will be read, if
there, on (next) Csurf.app startup.  This file is
ignored with the regular csurf install (since it
would override the bashrc/cshrc/env settings of
SUBJECTS_DIR and FUNCTIONALS_DIR).

On Mac OS X 10.9+, The very first time you start
Csurf.app, you will have to temporarily set your
System Preferences -> Security & Privacy "Allow
apps downloaded from:" setting  to "Anywhere".
Open Csurf.app and say "OK to use app downloaded
from internet".  After the first open, you can put
your Security & Privacy preferences back to
restrictive (e.g., just "App Store"), and
Csurf.app will always reopen.

If you start Csurf.app with a restrictive settings
without having done this once, you will get an
extremely misleading error message: "Csurf.app is
damaged and can't be opened.  You should move it
to the Trash" (fix by following instructions
above).  This intentionally misleading 'damaged'
message is a plot by Apple to try to force
independent developers to pay Apple a 'developers
tax' (I didn't pay).

Tksurfer reads multiframe .mgh vtxlist files

Freesurfer and FSL sometimes use the .mgh volume
format to store surface vertex list data as a
pseudo-volume.  Previously, the tksurfer "val:"
entry line could read ("R") one-frame float .mgh
vtxlist files with width equal to number of
vertices and height and depth equal 1.  Now it can
read .mgh vtxlist files with height and depth not
equal to 1 (FSL-style).  Also, if there is more
than one frame in the .mgh file, an "R" makes a
pop-up to allow selecting which frame to read.

Surfclust can filter .mgh vtxlist input

The surface-based cluster exclusion filter,
surfclust, can now read .mgh format, including
multi-frame .mgh files.  For now, output remains a
*.w file.

Fixed nmovie crash on Ubuntu, Yosemite

On some Ubuntu 14.* and Yosemite installations,
nmovie would crash with an XSetInputFocus error.

Real-valued Color Lookup Table Options (8-way)

Previously there was one tickbox ("intplut") that
controlled how a real-valued color look-up table
was interpreted (interpolate vs. non-interpolate).
Now there are three,

  "intp" ->  $interpolatelutflag
  "bot"  ->  $botedgelutflag
  "sym"  ->  $zerosymmfadeflag

which results in 8 different possible
combinations.  These flags only affect LUT's for
real-valued data or complex-valued amplitude.

If "intp" is ticked, the r,g,b entries in the
table are linearly interpolated to the next table
entry for intermediate data val's.  If unticked,
the r,g,b color stays constant until the next,
possibly unevenly spaced, table entry.

If "bot" is ticked, the r,g,b entries in the table
specify the data value for the bottom of the range
of a color.  If unticked, the r,g,b entries in the
table specify the data value for the center of a
color.  Center-defined colors are more intuitive,
esp. when interpolated, but bottom-edge defined
colors are easier to use when you want to
define/mark specific contours.

Finally, if "sym" is ticked, (s)fthresh and
(s)fmid will cut into the color scale
symmetrically in both directions from zero,
instead of only from the bottom.  Ticking "sym"
with "bot" ticked also flips the meaning of bottom
for negative values -- that is, the 'bottom' of a
color is redefined as nearest zero, from either
above or below.

#########################################
Latest addition to $CSURF_DIR/UPDATES.txt
#########################################

### UPDATE: 10 Oct 2015
--csurf: Render panel: add/cpprev botedgelutflag,zerosymmfadeflag
--mk0{.csh}: add new helpfiles
--csurf: add new LUT flag helpfiles, add all-help curvtick/offset/cvfact line
--lib/help/tksurfer/{botedge,zerosymm,val2rgb,curv_tick}: new helpfiles, update
--tksurfer.tcl: intplut->intp, bot/$botedgelutflag, sym/$zerosymmfadeflag ticks
--tksurfer.tcl: F2 panel: replace "none" and "curv" radios with "curv" tick
--tksurfer.c: clamp hi/lo non-interpolated center-defined colors (was trunc)
--tksurfer.c: 8 LUT cases: interpolateflag x botedgelutflag x zerosymmfadeflag
--lib/help/tksurfer/val2rgb: fix doc fabs fthresh, add zerosymfadeflag
--csurf: sphavglists(00,clustsurf) to pick surf used by surfclust for area calc
--tksurfer.c: disp window keyboard pose changes now logged (like tk window)
--tksurfer.tcl: fmid/fslope/angle_cycles/angleoffset keyboard shortcuts logcmd's
--tksurfer.c: R-click clear vertices does logcmd
--csurf: env-overriding dotcsurfrc read/write Csurf.app only (it can't see env)
--tksurfer.tcl: DIST and Dijk also return pop-ups (was just log)
--tksurfer.c: use genstrret_1k to return Euclidean dist
--tksurfer.tcl label-line binds: if notdivider => if divider break (OK in bind)
--tksurfer.tcl: brainpose by sliders reports C/tcl cmds to tcllog (vs tcl procs)
--csurf: fixswfileprefs: ImportStats no-match-mask-err popup->log, rm 10.10 hack
--csurf: menu item to write .csurfrc using current state of subj/sess/FSURF dirs
--csurf: if ~/.csurfrc exists, read "export name=val" to tcl env if exist tclvar
--applescript/Csurf.app: make applet.icns (flat, darken red)
--mk0{.csh}: include applescript in "dist", make Csurf.app if Darwin "insttmp"
--applescript/Csurf.app: source .csurfrc else mkdir fsdata/{subjects,sessions}
--tksurfer.tcl: "val:" line "R" choose frame popup if .mgh fileheader nframes>1
--tksurfer.c: new/exported funct, read_mgh_header (partial, uncompressed only)
--tksurfer.c: new/exported var, mghvalframe: choose later frame in .mgh valfile
--nmovie.c: rm XSetInputFocus (was X crash on Ubuntu14 laptop, some 10.9)
--surfclust.cpp: read given frame .mgh file if instem suff .mgh, wfile out only
--surfclust.cpp: readmgh (e.g. lh.cope1.mgh 1974x1x83=163842 w/2 frames)
--tkmedit.tcl: force show "roi" tick on read upsamp roi
--csurf: SetupFunct panel "SubjectDir Target Image Set" controls stats underlay
--lib/help/csurf/HOWTO: new section on disp 3D retinotopy, revise fourier/surf
--tksurfer.tcl: warn/help bad non-integer SMOOTH args
--tksurfer.tcl: warn ROI fill ignores truncphase, return
--wrappers.tcl: helpwin -inactiveselectbackground $bgcol to avoid black
--csurf: change reconall/avgsurf script to req. tcsh (maybe tcsh inst'd w/o csh)
--csurf: check tcsh installed also for reconallcmd, avgsurfcmd w/start anyway
--csurf: startup check tcsh installed (for recon-all), warn/allow start anyway
--csurf: better error msg on refuse to overwrite NIFTI already conv from BRIK

### UPDATE: 22 Sep 2015
--cleanup csurf startup (warn no $CSURF_DIR before try load tix)
--Mac: add yosemite hack to help panel
--lib/help/*/*: major update/cleanup/regularization of 320+ help panels
--tksurfer.tcl: cmd-ctrl-left/right arrow rotates brain in plane
--tksurfer.c: ctrl-left/right arrow rotates brain in plane
--mk0{.csh}: renamed helpfiles, new helpfiles, include forgotten rot/trans help
--tksurfer.tcl: new help for "%:" scale entry
--csurf: clickable table-of-contents of ~320 helppanes in one clearable helpwin
...




