Ignore:
Timestamp:
May 27, 2016 4:42:06 PM (7 years ago)
Author:
srkline
Message:

read/write for lateral + vertical offset of detectors, eliminating some extra unused fields.

more additions to the mask editor to give some basic functionality (add/del tubes, save mask)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MaskUtils.ipf

    r999 r1000  
    5656        PauseUpdate; Silent 1           // building window... 
    5757 
    58         NewPanel /W=(662,418,1586,960)/N=MaskEditPanel/K=1 
     58        NewPanel /W=(662,418,1300,960)/N=MaskEditPanel   /K=1 
    5959//      ShowTools/A 
    6060         
    6161        PopupMenu popup_0,pos={20,50},size={109,20},proc=SetMaskPanelPopMenuProc,title="Detector Panel" 
    62         PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;MR;ML;MT;MB;B;\"" 
     62        PopupMenu popup_0,mode=1,popvalue="FT",value= #"\"FL;FR;FT;FB;MR;ML;MT;MB;B;\"" 
    6363        PopupMenu popup_2,pos={20,20},size={109,20},title="Data Source"//,proc=SetFldrPopMenuProc 
    64         PopupMenu popup_2,mode=1,popvalue="VCALC",value= #"\"RAW;SAM;VCALC;\"" 
    65                  
    66 //      Button button_0,pos={486,20},size={80,20},proc=DetFitGuessButtonProc,title="Guess" 
    67 //      Button button_1,pos={615,20},size={80,20},proc=DetFitButtonProc,title="Do Fit" 
    68 //      Button button_2,pos={744,20},size={80,20},proc=DetFitHelpButtonProc,title="Help" 
    69 //      Button button_3,pos={615,400},size={110,20},proc=WriteCtrButtonProc,title="Write Centers" 
    70 //      Button button_4,pos={730,400},size={110,20},proc=CtrTableButtonProc,title="Ctr table" 
    71 //      Button button_5,pos={730,440},size={110,20},proc=WriteCtrTableButtonProc,title="Write table" 
     64        PopupMenu popup_2,mode=1,popvalue="RAW",value= #"\"RAW;SAM;VCALC;\"" 
     65 
     66        SetVariable setvar0,pos={247.00,20.00},size={150.00,14.00},title="tube number" 
     67        SetVariable setvar0,limits={0,128,1},value= _NUM:0 
     68        Button button_0,pos={249.00,46.00},size={50.00,20.00},proc=AddToMaskButtonProc,title="Add" 
     69        Button button_1,pos={309.00,46.00},size={50.00,20.00},proc=RemoveFromMaskButtonProc,title="Del" 
     70        Button button_2,pos={389.00,46.00},size={90.00,20.00},proc=ToggleMaskButtonProc,title="Toggle" 
     71        Button button_3,pos={489.00,46.00},size={80.00,20.00},proc=SaveMaskButtonProc,title="Save" 
    7272 
    7373// TODO -- need buttons for save? quit? 
     
    7777 
    7878// TODO - get rid of the hard-wired panel choice 
    79         duplicate/O root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_FL:det_FL curDispPanel 
     79//      duplicate/O root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_FL:det_FL curDispPanel 
     80        Make/O/D/N=(48,128) curDispPanel                //will this work? 
    8081        SetScale/P x 0,1, curDispPanel 
    8182        SetScale/P y 0,1, curDispPanel 
     
    8384        // draw the correct images 
    8485        //draw the detector panel 
    85         DrawPanelToMask("FL") 
     86        DrawPanelToMask("FT") 
    8687         
    8788        // overlay the current mask 
    88         V_OverlayMask("FL",1) 
     89        V_OverlayMask("FT",1) 
    8990//      OverlayMaskPanel("FL") 
    9091 
    9192EndMacro 
     93 
     94 
     95Function ToggleMaskButtonProc(ba) : ButtonControl 
     96        STRUCT WMButtonAction &ba 
     97 
     98        switch( ba.eventCode ) 
     99                case 2: // mouse up 
     100                        // click code here 
     101                         
     102                        ControlInfo popup_0 
     103                        String str=S_Value 
     104 
     105                        wave/Z overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
     106                         
     107                        CheckDisplayed/W=MaskEditPanel#DetData overlay 
     108                        Variable state = !(V_flag)              //if V_flag == 0, then set to 1 (and vice versa) 
     109                        V_OverlayMask(str,state) 
     110 
     111                        break 
     112                case -1: // control being killed 
     113                        break 
     114        endswitch 
     115 
     116        return 0 
     117End 
     118 
     119 
     120Function AddToMaskButtonProc(ba) : ButtonControl 
     121        STRUCT WMButtonAction &ba 
     122 
     123        switch( ba.eventCode ) 
     124                case 2: // mouse up 
     125                        // click code here 
     126                        ControlInfo popup_0 
     127                        String str=S_Value 
     128                         
     129                        wave/Z maskData = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data") 
     130                         
     131                        Variable val 
     132                        ControlInfo setvar0 
     133                        val = V_Value 
     134                        maskData[val][] = 1 
     135                         
     136                        V_OverlayMask(str,1) 
     137                         
     138//                      Print "add tube to mask" 
     139                        break 
     140                case -1: // control being killed 
     141                        break 
     142        endswitch 
     143 
     144        return 0 
     145End 
     146 
     147Function RemoveFromMaskButtonProc(ba) : ButtonControl 
     148        STRUCT WMButtonAction &ba 
     149 
     150        switch( ba.eventCode ) 
     151                case 2: // mouse up 
     152                        // click code here 
     153                        ControlInfo popup_0 
     154                        String str=S_Value 
     155                         
     156                        wave/Z maskData = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data") 
     157                         
     158                        Variable val 
     159                        ControlInfo setvar0 
     160                        val = V_Value 
     161                        maskData[val][] = 0 
     162                         
     163                        V_OverlayMask(str,1)                     
     164//                      Print "remove tube from mask" 
     165                        break 
     166                case -1: // control being killed 
     167                        break 
     168        endswitch 
     169 
     170        return 0 
     171End 
    92172 
    93173// 
     
    200280         
    201281 
    202         Variable scale = 5 
     282        Variable scale = 10 
    203283         
    204284        // common values (panel position, etc) 
     
    289369        String maskPath = "root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data" 
    290370        if(WaveExists($maskPath) == 1) 
    291                 //duplicate the mask, which is named "data" 
    292                 wave maskW = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data") 
    293  
    294                 Duplicate/O maskW $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
    295                 wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
    296  
    297                 Redimension/D overlay 
    298                 SetScale/P x 0,1, overlay 
    299                 SetScale/P y 0,1, overlay 
    300          
    301                 String tempStr = "root:Packages:NIST:MSK:overlay" 
    302                 overlay = (maskW == 1) ? 1 : NaN 
    303 //              ResetLoop(tempStr)              //keeps 1's and sets 0's to NaN 
    304  
    305                 AppendImage/W=MaskEditPanel#DetData overlay 
    306                 ModifyImage/W=MaskEditPanel#DetData overlay ctab= {0,*,BlueRedGreen,0}   
    307  
    308 //       
    309 //              //check to see if mask overlay is currently displayed 
    310 //              DoWindow SANS_Data 
    311 //              if(V_flag==0) 
    312 //                      return(0) 
    313 //              endif 
    314 //               
    315 //              CheckDisplayed/W=SANS_Data root:Packages:NIST:MSK:overlay 
    316 //              //Print "V_flag = ",V_flag 
    317 //       
    318 //              If(V_Flag == 1)         //overlay is present 
    319 //                      if(state==0) 
    320 //                              RemoveImage overlay 
    321 //                      endif           //don't need to do anything if we want to keep the mask 
    322 //              Else            //overlay is not present 
    323 //                      if(state==1) 
    324 //                              //append the new overlay 
    325 //                              AppendImage/L=left/B=bottom root:Packages:NIST:MSK:overlay 
    326 //                              //set the color table to vary from 0 to * (=max data = 1), with blue maximum 
    327 //                              //Nan's will appear transparent (just a general feature of images) 
    328 //                              ModifyImage/W=SANS_Data overlay ctab={0,*,BlueRedGreen,0} 
    329 //                      endif           //don't do anything if we don't want the overlay 
    330 //              Endif 
    331 //               
     371                if(state == 1) 
     372                        //duplicate the mask, which is named "data" 
     373                        wave maskW = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data") 
     374         
     375                        Duplicate/O maskW $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
     376                        wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
     377         
     378                        Redimension/D overlay 
     379                        SetScale/P x 0,1, overlay 
     380                        SetScale/P y 0,1, overlay 
     381                 
     382                        String tempStr = "root:Packages:NIST:MSK:overlay" 
     383        //              overlay = (maskW == 1) ? 1 : NaN                        //no need to do this - simply adjust the coloring 
     384         
     385                        CheckDisplayed/W=MaskEditPanel#DetData overlay 
     386                        if(V_flag==0)           //so the overlay doesn't get appended more than once 
     387                                AppendImage/W=MaskEditPanel#DetData overlay 
     388                                ModifyImage/W=MaskEditPanel#DetData overlay ctab= {0.9,1,BlueRedGreen,0}        ,minRGB=NaN,maxRGB=0 
     389                //              ModifyImage/W=MaskEditPanel#DetData overlay ctab= {0,*,BlueRedGreen,0}   
     390                        endif 
     391                endif 
     392 
     393                if(state == 0) 
     394                        wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":overlay") 
     395                        CheckDisplayed/W=MaskEditPanel#DetData overlay 
     396//                      Print "V_flag = ",V_flag 
     397         
     398                        If(V_Flag == 1)         //overlay is present 
     399                                RemoveImage/W=MaskEditPanel#DetData overlay 
     400                        endif 
     401                endif 
    332402        Endif 
    333403         
    334404        return(0) 
     405End 
     406 
     407 
     408Function SaveMaskButtonProc(ba) : ButtonControl 
     409        STRUCT WMButtonAction &ba 
     410 
     411        switch( ba.eventCode ) 
     412                case 2: // mouse up 
     413                        // click code here 
     414                         
     415                        Execute "H_Setup_VSANS_MASK_Structure()" 
     416                         
     417                        // fill with current "stuff" 
     418                                SetDataFolder root:VSANS_MASK_file:entry         
     419                        Wave/T title    = title 
     420                        title = "This is a custom MASK file for VSANS" 
     421                        SetDataFolder root: 
     422                         
     423                         
     424                // copy over for all of the detector panels 
     425 
     426                        Variable ii 
     427                        String str 
     428                        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     429                                str = StringFromList(ii, ksDetectorListAll, ";") 
     430                                Wave det_str = $("root:VSANS_MASK_file:entry:instrument:detector_"+str+":data")  
     431                                wave maskW = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+str+":data")                    
     432                                det_str = maskW 
     433                        endfor 
     434 
     435                        //save it 
     436//                      String fileName = "ThisIsAMASK" 
     437 
     438                        Execute "Save_VSANS_MASK_Nexus()" 
     439                         
     440                        break 
     441                case -1: // control being killed 
     442                        break 
     443        endswitch 
     444 
     445        SetDataFolder root: 
     446        return 0 
    335447End 
    336448 
Note: See TracChangeset for help on using the changeset viewer.