PRO spd_ui_subset_marker, info
activeWindow = info.windowStorage->GetActive()
IF NOT Obj_Valid(activeWindow) THEN BEGIN
info.statusBar->Update, 'There is no active window, unable to create a marker subset'
RETURN
ENDIF
activeWindow->GetProperty, Panels=panels
IF NOT Obj_Valid(panels) THEN BEGIN
info.statusBar->Update, 'There are no panels or markers to create a marker subset'
RETURN
ENDIF
panelObjs = panels->Get(/all)
IF Is_Num(panelObjs) THEN BEGIN
info.statusBar->Update, 'There are no panels or markers to create a marker subset'
RETURN
ENDIF
panelIdx=-1
FOR i=0, N_Elements(panelObjs)-1 DO BEGIN
panelObjs[i]->GetProperty, Id=id, Markers=markers
IF ~Obj_Valid(markers) THEN BEGIN
continue
ENDIF
markerObjs = markers->Get(/All)
IF ~obj_valid(markerObjs[0]) THEN BEGIN
continue
ENDIF
FOR j=0,N_Elements(markerObjs)-1 DO BEGIN
markerObjs[j]->GetProperty, IsSelected=isselected
IF isselected EQ 1 THEN BEGIN
selectedMarker=markerObjs[j]
newPanel=panelObjs[i]->Copy()
panelIdx=i
BREAK
ENDIF
ENDFOR
IF panelIdx NE -1 THEN BREAK
ENDFOR
IF ~Obj_Valid(selectedMarker) THEN BEGIN
info.statusBar->Update, 'No selected marker was found. Subset not created.'
RETURN
ENDIF
newPanels = Obj_New("IDL_CONTAINER")
newPanel->GetProperty, XAxis=xaxis, Settings=settings, Id=id
selectedMarker->GetProperty, Range=range
panelStruc = info.drawObject->GetPanelInfo(panelIdx)
IF id NE 0 THEN id = 0
IF panelStruc.xScale EQ 1 THEN range = alog10(range)
IF panelStruc.xScale EQ 2 THEN range = alog(range)
xaxis->setProperty,rangeOption=2
xaxis->UpdateRange, range
settings->SetProperty, Row=1, Col=1
markerContainer = obj_new('IDL_Container')
for i = 0,n_elements(markerObjs)-1 do begin
markerContainer->add,markerObjs[i]->copy()
endfor
newPanel->SetProperty, Markers=markerContainer, id=id
newPanels->Add, newPanel
activeWindow->GetProperty, NRows=nrows, NCols=ncols, Panels=panels, Settings=settings, $
Tracking=tracking,locked=locked
if locked ne -1 then begin
locked = 0
endif
result = info.windowStorage->Add(NRows=nrows, NCols=ncols, Panels=newPanels, Settings=settings, $
Tracking=tracking,locked=locked)
activeWindow = info.windowStorage->GetActive()
activeWindow->GetProperty, Name=name
activeWindow[0]->RePack
info.windowMenus->Add, name
info.windowMenus->Update, info.windowStorage
info.drawObject->update,info.windowStorage, info.loadedData
info.drawObject->draw
info.scrollbar->update
info.drawObject->update,info.windowStorage, info.loadedData
info.drawObject->draw
END