Skip to content

Commit 7fc0060

Browse files
authored
Merge pull request #572 from AllenInstitute/bugfix/make-layouting-always-work
Bugfix/make layouting always work
2 parents 86e76d9 + 0b9e8de commit 7fc0060

14 files changed

+785
-646
lines changed

Packages/MIES/MIES_AnalysisBrowser_SweepBrowser.ipf

Lines changed: 18 additions & 203 deletions
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,10 @@
99
/// @file MIES_AnalysisBrowser_SweepBrowser.ipf
1010
/// @brief __SB__ Visualization of sweep data in the analysis browser
1111

12-
static StrConstant AXES_SCALING_CHECKBOXES = "check_Display_VisibleXrange;check_Display_EqualYrange;check_Display_EqualYignore"
13-
static StrConstant WAVE_NOTE_LAYOUT_KEY = "WAVE_LAYOUT_VERSION"
14-
15-
Function/S SB_GetSweepBrowserLeftPanel(win)
16-
string win
17-
18-
return BSP_GetPanel(win)
19-
End
20-
2112
static Function/Wave SB_GetSweepBrowserMapFromGraph(win)
2213
string win
2314

24-
return SB_GetSweepBrowserMap(SB_GetSweepBrowserFolder(win))
25-
End
26-
27-
static Function/Wave SB_GetSweepBrowserMap(sweepBrowser)
28-
DFREF sweepBrowser
29-
30-
ASSERT(DataFolderExistsDFR(sweepBrowser), "Missing SweepBrowser DFR")
31-
32-
Variable versionOfWave = 1
33-
34-
WAVE/T/Z/SDFR=sweepBrowser wv = map
35-
if(WaveExists(wv))
36-
if(GetNumberFromWaveNote(wv, WAVE_NOTE_LAYOUT_KEY) == versionOfWave)
37-
return wv
38-
endif
39-
else
40-
Make/T/N=(MINIMUM_WAVE_SIZE, 4) sweepBrowser:map/Wave=wv
41-
SetNumberInWaveNote(wv, NOTE_INDEX, 0)
42-
endif
43-
44-
SetDimLabel COLS, 0, FileName, wv
45-
SetDimLabel COLS, 1, DataFolder, wv
46-
SetDimLabel COLS, 2, Device, wv
47-
SetDimLabel COLS, 3, Sweep, wv
48-
49-
SetNumberInWaveNote(wv, WAVE_NOTE_LAYOUT_KEY, versionOfWave)
50-
51-
return wv
15+
return GetSweepBrowserMap(SB_GetSweepBrowserFolder(win))
5216
End
5317

5418
Function/DF SB_GetSweepBrowserFolder(win)
@@ -64,7 +28,7 @@ static Function/DF SB_GetSweepDataPathFromIndex(sweepBrowserDFR, mapIndex)
6428
string device, expFolder
6529
variable sweep
6630

67-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
31+
WAVE/T sweepMap = GetSweepBrowserMap(sweepBrowserDFR)
6832

6933
if(!IsFinite(mapIndex) || mapIndex < 0 || mapIndex >= DimSize(sweepMap, ROWS))
7034
return $""
@@ -88,8 +52,7 @@ Function SB_GetIndexFromSweepDataPath(win, dataDFR)
8852
variable mapIndex, sweepNo
8953
string device, expFolder, sweepFolder
9054

91-
DFREF sweepBrowserDFR = SB_GetSweepBrowserFolder(win)
92-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
55+
WAVE/T sweepMap = SB_GetSweepBrowserMapFromGraph(win)
9356

9457
SplitSTring/E="root:MIES:Analysis:([^:]+):([^:]+):sweep:([^:]+):" GetDataFolder(1, dataDFR), expFolder, device, sweepFolder
9558
ASSERT(V_flag == 3, "Unmatched string")
@@ -113,13 +76,6 @@ Function SB_GetIndexFromSweepDataPath(win, dataDFR)
11376
return matches[0]
11477
End
11578

116-
/// @see DB_GraphUpdate
117-
Function SB_PanelUpdate(win)
118-
string win
119-
120-
SB_ScaleAxes(win)
121-
End
122-
12379
/// @brief set graph userdata similar to DB_SetUserData()
12480
///
12581
/// @param win name of main window or external subwindow in SweepBrowser
@@ -132,25 +88,6 @@ static Function SB_SetUserData(win)
13288
BSP_SetFolder(win, dfr, MIES_BSP_PANEL_FOLDER)
13389
End
13490

135-
/// @see DB_InitPostPlotSettings
136-
static Function SB_InitPostPlotSettings(graph, pps)
137-
string graph
138-
STRUCT PostPlotSettings &pps
139-
140-
string bsPanel = BSP_GetPanel(graph)
141-
142-
pps.averageDataFolder = SB_GetSweepBrowserFolder(graph)
143-
pps.averageTraces = GetCheckboxState(bsPanel, "check_Calculation_AverageTraces")
144-
pps.zeroTraces = GetCheckBoxState(bsPanel, "check_Calculation_ZeroTraces")
145-
pps.timeAlignRefTrace = ""
146-
pps.timeAlignMode = TIME_ALIGNMENT_NONE
147-
pps.hideSweep = GetCheckBoxState(bsPanel, "check_SweepControl_HideSweep")
148-
149-
PA_GatherSettings(graph, pps)
150-
151-
FUNCREF FinalUpdateHookProto pps.finalUpdateHook = SB_PanelUpdate
152-
End
153-
15491
/// @brief Return numeric labnotebook entries
15592
///
15693
/// @param graph sweep browser graph
@@ -166,8 +103,7 @@ static Function/WAVE SB_GetSweepPropertyFromNumLBN(graph, mapIndex, key)
166103
string device, expFolder
167104
variable sweep
168105

169-
DFREF sweepBrowserDFR = SB_GetSweepBrowserFolder(graph)
170-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
106+
WAVE/T sweepMap = SB_GetSweepBrowserMapFromGraph(graph)
171107

172108
if(!IsFinite(mapIndex) || mapIndex < 0 || mapIndex >= DimSize(sweepMap, ROWS))
173109
return $""
@@ -189,8 +125,7 @@ End
189125
Function/S SB_GetListOfExperiments(graph)
190126
string graph
191127

192-
DFREF sweepBrowserDFR = SB_GetSweepBrowserFolder(graph)
193-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
128+
WAVE/T sweepMap = SB_GetSweepBrowserMapFromGraph(graph)
194129

195130
variable numEntries, i
196131
string experiment
@@ -249,8 +184,7 @@ Function/WAVE SB_GetChannelInfoFromGraph(graph, channel, [experiment])
249184

250185
ASSERT(FindListitem(channel, ITC_CHANNEL_NAMES) != -1, "Given channel could not be found in ITC_CHANNEL_NAMES")
251186

252-
DFREF sweepBrowserDFR = SB_GetSweepBrowserFolder(graph)
253-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
187+
WAVE/T sweepMap = SB_GetSweepBrowserMapFromGraph(graph)
254188

255189
Make/FREE/T/N=(MINIMUM_WAVE_SIZE, 3) channelMap
256190

@@ -319,11 +253,11 @@ Function SB_UpdateSweepPlot(win, [newSweep])
319253
string win
320254
variable newSweep
321255

322-
string device, dataFolder, graph, bsPanel, scPanel, lbPanel, experiment
323-
variable mapIndex, i, numEntries, sweepNo, highlightSweep, traceIndex, currentSweep
256+
string device, dataFolder, graph, scPanel, lbPanel, experiment
257+
variable mapIndex, i, numEntries, sweepNo, traceIndex, currentSweep
258+
STRUCT TiledGraphSettings tgs
324259

325260
graph = GetMainWindow(win)
326-
bsPanel = BSP_GetPanel(graph)
327261
scPanel = BSP_GetSweepControlsPanel(win)
328262
lbPanel = BSP_GetNotebookSubWindow(win)
329263

@@ -338,19 +272,7 @@ Function SB_UpdateSweepPlot(win, [newSweep])
338272
SetPopupMenuIndex(scPanel, "popup_SweepControl_Selector", newSweep)
339273
endif
340274

341-
STRUCT TiledGraphSettings tgs
342-
tgs.overlaySweep = OVS_IsActive(graph)
343-
tgs.displayDAC = GetCheckBoxState(bsPanel, "check_BrowserSettings_DAC")
344-
tgs.displayADC = GetCheckBoxState(bsPanel, "check_BrowserSettings_ADC")
345-
tgs.displayTTL = GetCheckBoxState(bsPanel, "check_BrowserSettings_TTL")
346-
tgs.overlayChannels = GetCheckBoxState(bsPanel, "check_BrowserSettings_OChan")
347-
tgs.splitTTLBits = GetCheckBoxState(bsPanel, "check_BrowserSettings_splitTTL")
348-
tgs.dDAQDisplayMode = GetCheckBoxState(bsPanel, "check_BrowserSettings_dDAQ")
349-
tgs.dDAQHeadstageRegions = BSP_GetDDAQ(win)
350-
tgs.hideSweep = GetCheckBoxState(bsPanel, "check_SweepControl_HideSweep")
351-
352-
STRUCT PostPlotSettings pps
353-
SB_InitPostPlotSettings(graph, pps)
275+
[tgs] = BSP_GatherTiledGraphSettings(graph)
354276

355277
WAVE/Z sweepsToOverlay = OVS_GetSelectedSweeps(graph, OVS_SWEEP_SELECTION_INDEX)
356278

@@ -361,7 +283,7 @@ Function SB_UpdateSweepPlot(win, [newSweep])
361283
RemoveFreeAxisFromGraph(graph)
362284
TUD_Clear(graph)
363285

364-
WAVE/T sweepMap = SB_GetSweepBrowserMap(sweepBrowserDFR)
286+
WAVE/T sweepMap = GetSweepBrowserMap(sweepBrowserDFR)
365287
WAVE channelSel = GetChannelSelectionWave(sweepBrowserDFR)
366288

367289
currentSweep = GetPopupMenuIndex(scPanel, "popup_SweepControl_Selector")
@@ -380,8 +302,7 @@ Function SB_UpdateSweepPlot(win, [newSweep])
380302
experiment = sweepMap[mapIndex][%FileName]
381303
sweepNo = str2num(sweepMap[mapIndex][%Sweep])
382304

383-
WAVE/Z activeHS = OVS_ParseIgnoreList(graph, highlightSweep, index=mapIndex)
384-
tgs.highlightSweep = highlightSweep
305+
WAVE/Z activeHS = OVS_ParseIgnoreList(graph, index=mapIndex)
385306

386307
if(WaveExists(activeHS))
387308
Duplicate/FREE channelSel, sweepChannelSel
@@ -411,8 +332,10 @@ Function SB_UpdateSweepPlot(win, [newSweep])
411332
ReplaceNotebookText(lbPanel, "Sweep note: \r " + sweepNote)
412333
endif
413334

414-
PostPlotTransformations(graph, pps)
335+
PostPlotTransformations(graph)
415336
SetAxesRanges(graph, axesRanges)
337+
338+
LayoutGraph(graph, tgs)
416339
End
417340

418341
Function SB_AddToSweepBrowser(sweepBrowser, fileName, dataFolder, device, sweep)
@@ -423,7 +346,7 @@ Function SB_AddToSweepBrowser(sweepBrowser, fileName, dataFolder, device, sweep)
423346
variable index
424347
string sweepStr = num2str(sweep)
425348

426-
WAVE/T map = SB_GetSweepBrowserMap(sweepBrowser)
349+
WAVE/T map = GetSweepBrowserMap(sweepBrowser)
427350

428351
index = GetNumberFromWaveNote(map, NOTE_INDEX)
429352
EnsureLargeEnoughWave(map, minimumSize=index)
@@ -449,49 +372,6 @@ Function SB_AddToSweepBrowser(sweepBrowser, fileName, dataFolder, device, sweep)
449372
SetNumberInWaveNote(map, NOTE_INDEX, index + 1)
450373
End
451374

452-
/// @see DB_HandleTimeAlignPropChange
453-
static Function SB_HandleTimeAlignPropChange(win)
454-
string win
455-
456-
string bsPanel, graph
457-
458-
graph = GetMainWindow(win)
459-
bsPanel = BSP_GetPanel(graph)
460-
461-
STRUCT PostPlotSettings pps
462-
SB_InitPostPlotSettings(graph, pps)
463-
464-
TimeAlignGatherSettings(bsPanel, pps)
465-
466-
PostPlotTransformations(graph, pps)
467-
End
468-
469-
static Function SB_ScaleAxes(win)
470-
string win
471-
472-
string graph, bsPanel
473-
variable visXRange, equalY, equalYIgn, level
474-
475-
graph = GetMainWindow(win)
476-
bsPanel = BSP_GetPanel(win)
477-
visXRange = GetCheckBoxState(bsPanel, "check_Display_VisibleXrange")
478-
equalY = GetCheckBoxState(bsPanel, "check_Display_EqualYrange")
479-
equalYIgn = GetCheckBoxState(bsPanel, "check_Display_EqualYignore")
480-
481-
ASSERT(visXRange + equalY + equalYIgn <= 1, "Only one scaling mode is allowed to be selected")
482-
483-
if(visXRange)
484-
AutoscaleVertAxisVisXRange(graph)
485-
elseif(equalY)
486-
EqualizeVerticalAxesRanges(graph, ignoreAxesWithLevelCrossing=0)
487-
elseif(equalYIgn)
488-
level = GetSetVariable(bsPanel, "setvar_Display_EqualYlevel")
489-
EqualizeVerticalAxesRanges(graph, ignoreAxesWithLevelCrossing=1, level=level)
490-
else
491-
// do nothing
492-
endif
493-
End
494-
495375
Function SB_SweepBrowserWindowHook(s)
496376
STRUCT WMWinHookStruct &s
497377

@@ -547,7 +427,7 @@ Function/DF SB_OpenSweepBrowser()
547427

548428

549429
DFREF sweepBrowserDFR = BSP_GetFolder(mainWin, MIES_BSP_PANEL_FOLDER)
550-
SB_GetSweepBrowserMap(sweepBrowserDFR)
430+
GetSweepBrowserMap(sweepBrowserDFR)
551431

552432
renameWin = UniqueName(SWEEPBROWSER_WINDOW_TITLE, 9, 1)
553433
DoWindow/W=$mainWin/C $renameWin
@@ -556,7 +436,7 @@ Function/DF SB_OpenSweepBrowser()
556436
string/G sweepBrowserDFR:graph = mainWin
557437

558438
BSP_InitPanel(mainWin)
559-
SB_PanelUpdate(mainWin)
439+
BSP_ScaleAxes(mainWin)
560440
return sweepBrowserDFR
561441
End
562442

@@ -695,71 +575,6 @@ Function SB_ButtonProc_ChangeSweep(ba) : ButtonControl
695575
return 0
696576
End
697577

698-
Function SB_DoTimeAlignment(ba) : ButtonControl
699-
STRUCT WMButtonAction &ba
700-
701-
switch( ba.eventCode )
702-
case 2: // mouse up
703-
SB_HandleTimeAlignPropChange(ba.win)
704-
break
705-
endswitch
706-
707-
return 0
708-
End
709-
710-
Function SB_CheckProc_ScaleAxes(cba) : CheckBoxControl
711-
STRUCT WMCheckboxAction &cba
712-
713-
string ctrls, graph, bsPanel
714-
variable numCtrls, i
715-
716-
graph = GetMainWindow(cba.win)
717-
bsPanel = BSP_GetPanel(graph)
718-
719-
switch( cba.eventCode )
720-
case 2: // mouse up
721-
if(cba.checked)
722-
ctrls = ListMatch(AXES_SCALING_CHECKBOXES, "!" + cba.ctrlName)
723-
numCtrls = ItemsInList(ctrls)
724-
for(i = 0; i < numCtrls; i += 1)
725-
SetCheckBoxState(bsPanel, StringFromList(i, ctrls), CHECKBOX_UNSELECTED)
726-
endfor
727-
endif
728-
729-
if(GetCheckBoxState(bsPanel, "check_Display_EqualYignore"))
730-
EnableControl(bsPanel, "setvar_Display_EqualYlevel")
731-
else
732-
DisableControl(bsPanel, "setvar_Display_EqualYlevel")
733-
endif
734-
735-
SB_ScaleAxes(graph)
736-
break
737-
endswitch
738-
739-
return 0
740-
End
741-
742-
Function SB_AxisScalingLevelCross(sva) : SetVariableControl
743-
STRUCT WMSetVariableAction &sva
744-
745-
string graph, bsPanel
746-
747-
graph = GetMainWindow(sva.win)
748-
bsPanel = BSP_GetPanel(graph)
749-
750-
switch(sva.eventCode)
751-
case 1: // mouse up
752-
case 2: // Enter key
753-
case 3: // Live update
754-
if(GetCheckBoxState(bsPanel, "check_Display_EqualYignore"))
755-
SB_ScaleAxes(graph)
756-
endif
757-
break
758-
endswitch
759-
760-
return 0
761-
End
762-
763578
Function SB_ButtonProc_ExportTraces(ba) : ButtonControl
764579
STRUCT WMButtonAction &ba
765580

0 commit comments

Comments
 (0)