Changeset 1084 for trunk/src/get_field.m


Ignore:
Timestamp:
Aug 10, 2020, 3:20:45 PM (4 years ago)
Author:
sommeria
Message:

various updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/get_field.m

    r1083 r1084  
    414414        set(handles.PanelVectors,'Visible','off')
    415415        set(handles.Coord_y,'Visible','on')
     416        set(handles.Coord_y,'Max',2)%allow multiple selection
    416417        set(handles.Y_title,'Visible','on')
    417418        set(handles.Coord_z,'Visible','off')
    418419        set(handles.Z_title,'Visible','off')
    419         %ordinate_Callback(hObject, VarName, handles)       
     420        set(handles.Coord_x,'String',Field.Display.ListVarName')
     421        Coord_x_Callback(hObject, VarName, handles)
     422        %set(handles.Coord_y,'String',Field.Display.ListVarName')
     423        %Coord_x_Callback(hObject, VarName, handles)       
    420424    case {'scalar'}
    421425        set(handles.Coordinates,'Visible','on')
     
    502506end
    503507
    504 %NOT USED : TO DELETE------------------------------------------------------------------------
    505 function ordinate_Callback(hObject, DimCell, handles)
     508
     509function set_coord_y_options(handles,VarName)
    506510%------------------------------------------------------------------------
    507511Field=get(handles.get_field,'UserData');
    508 y_index=get(handles.ordinate,'Value');
    509 y_menu=get(handles.ordinate,'String');
    510 if isempty(y_menu)
    511     return
    512 else
    513 YName=y_menu{y_index};
    514 end
     512VarIndex=find(strcmp(VarName,Field.Display.ListVarName),1);
     513DimCell=Field.Display.VarDimName{VarIndex};
     514% y_index=get(handles.Coord_y,'Value');
     515% y_menu=get(handles.Coord_y,'String');
     516% if isempty(y_menu)
     517%     return
     518% else
     519% YName=y_menu{y_index};
     520% end
    515521
    516522%% set list of possible coordinates
    517 test_component=zeros(size(Field.Display.VarDimName));%=1 when variable #ilist is eligible as unstructured coordinate
     523% test_component=zeros(size(Field.Display.VarDimName));%=1 when variable #ilist is eligible as unstructured coordinate
    518524test_coord=zeros(size(Field.Display.VarDimName)); %=1 when variable #ilist is eligible as structured coordiante
    519 ListCoord={''};
    520 dim_var=Field.Display.VarDimName{y_index};%list of dimensions of the selected variable
     525% ListCoord={''};
     526% dim_var=Field.Display.VarDimName{y_index};%list of dimensions of the selected variable
    521527
    522528for ilist=1:numel(Field.Display.VarDimName)
    523529    dimnames=Field.Display.VarDimName{ilist}; %list of dimensions for variable #ilist
    524     if isequal(dimnames,dim_var)
    525         test_component(ilist)=1;
    526     elseif numel(dimnames)==1 && ~isempty(find(strcmp(dimnames{1},dim_var)))%variable ilist is a 1D array which can be coordinate variable
     530    if isequal(dimnames,DimCell)||isequal(dimnames(1:end-1),DimCell)||isequal(dimnames(2:end),DimCell)
    527531        test_coord(ilist)=1;
    528532    end
    529533end
    530 var_component=find(test_component);% list of variable indices elligible as unstructured coordinates
    531 var_coord=find(test_coord);% % list of variable indices elligible as structured coordinates
    532 ListCoord=Field.Display.ListVarName([var_component var_coord]);
     534ListCoord=Field.Display.ListVarName(find(test_coord));
     535set(handles.Coord_y,'String',ListCoord)
     536val_y=1;
     537if strcmp(VarName,ListCoord{1})&& numel(ListCoord)>=2
     538    val_y=2;
     539end
     540set(handles.Coord_y,'Value',val_y)
    533541
    534542%% set default coord selection
    535 if numel(find(test_coord))>3
    536      SwitchVarIndexTime=get(handles.SwitchVarIndexTime,'String');
    537     if numel(SwitchVarIndexTime)<3
    538         SwitchVarIndexTime=[SwitchVarIndexTime;'matrix_index'];
    539         set(handles.SwitchVarIndexTime,'String',SwitchVarIndexTime)
    540     end
    541     set(handles.SwitchVarIndexTime,'Value',3)% the last dim must be considered as time
    542     SwitchVarIndexTime_Callback([], [], handles)
    543 end
    544 if numel(var_component)<2
    545     if numel(test_coord)<2
    546         ListCoord={''};
    547     else
    548         set(handles.Coord_x,'Value',2)
    549         set(handles.Coord_y,'Value',1)
    550     end
    551 else
    552     coord_val=1;
    553     for ilist=1:numel(var_component)
    554         ivar=var_component(ilist);
    555         if isfield(Field.Display,'VarAttribute') && numel(Field.Display.VarAttribute)>=ivar && isfield(Field.Display.VarAttribute{ivar},'Role')
    556             Role=Field.Display.VarAttribute{ivar}.Role;
    557             if strcmp(Role,'coord_x')
    558                 coord_val=ilist;
    559             end
    560         end
    561     end
    562     set(handles.Coord_x,'Value',coord_val+1)
    563 end
    564 set(handles.Coord_x,'String',[{''}; ListCoord])
    565 
    566 
    567 %% set list of time coordinates
    568 menu=get(handles.SwitchVarIndexTime,'String');
    569 TimeOption=menu{get(handles.SwitchVarIndexTime,'Value')};
    570 switch TimeOption
    571     case 'variable'
    572         if numel(find(test_coord))<3
    573             ListTime={''};
    574         else
    575             ListTime=Field.Display.ListVarName(find(test_coord,end));
    576         end
    577         set(handles.TimeName,'Value',1)
    578         set(handles.TimeName,'String',ListTime)
    579     case 'matrix index'
    580         if numel(find(test_coord))<3
    581             ListTime={''};
    582         else
    583             ListTime=Field.Display.VarDimName{find(test_coord,end)};
    584         end
    585         set(handles.TimeName,'Value',1)
    586         set(handles.TimeName,'String',ListTime)
    587 end 
    588 if ~ischar(DimCell)
    589 update_field(handles,YName)
    590 end
     543% if numel(find(test_coord))>3
     544%      SwitchVarIndexTime=get(handles.SwitchVarIndexTime,'String');
     545%     if numel(SwitchVarIndexTime)<3
     546%         SwitchVarIndexTime=[SwitchVarIndexTime;'matrix_index'];
     547%         set(handles.SwitchVarIndexTime,'String',SwitchVarIndexTime)
     548%     end
     549%     set(handles.SwitchVarIndexTime,'Value',3)% the last dim must be considered as time
     550%     SwitchVarIndexTime_Callback([], [], handles)
     551% end
     552% if numel(var_component)<2
     553%     if numel(test_coord)<2
     554%         ListCoord={''};
     555%     else
     556%         set(handles.Coord_x,'Value',2)
     557%         set(handles.Coord_y,'Value',1)
     558%     end
     559% else
     560%     coord_val=1;
     561%     for ilist=1:numel(var_component)
     562%         ivar=var_component(ilist);
     563%         if isfield(Field.Display,'VarAttribute') && numel(Field.Display.VarAttribute)>=ivar && isfield(Field.Display.VarAttribute{ivar},'Role')
     564%             Role=Field.Display.VarAttribute{ivar}.Role;
     565%             if strcmp(Role,'coord_x')
     566%                 coord_val=ilist;
     567%             end
     568%         end
     569%     end
     570%     set(handles.Coord_x,'Value',coord_val+1)
     571% end
     572% set(handles.Coord_x,'String',[{''}; ListCoord])
     573
     574
     575% %% set list of time coordinates
     576% menu=get(handles.SwitchVarIndexTime,'String');
     577% TimeOption=menu{get(handles.SwitchVarIndexTime,'Value')};
     578% switch TimeOption
     579%     case 'variable'
     580%         if numel(find(test_coord))<3
     581%             ListTime={''};
     582%         else
     583%             ListTime=Field.Display.ListVarName(find(test_coord,end));
     584%         end
     585%         set(handles.TimeName,'Value',1)
     586%         set(handles.TimeName,'String',ListTime)
     587%     case 'matrix index'
     588%         if numel(find(test_coord))<3
     589%             ListTime={''};
     590%         else
     591%             ListTime=Field.Display.VarDimName{find(test_coord,end)};
     592%         end
     593%         set(handles.TimeName,'Value',1)
     594%         set(handles.TimeName,'String',ListTime)
     595% end 
     596% if ~ischar(DimCell)
     597% update_field(handles,YName)
     598% end
    591599         
    592600%------------------------------------------------------------------------
     
    672680set(handles.Coord_y,'Value',coord_val(2))
    673681set(handles.Coord_y,'String',ListCoord)
    674 if numel(coord_val)>=3
     682if numel(find(coord_val))>=3
    675683    set(handles.Coord_z,'Value',coord_val(3))
    676684    set(handles.Coord_z,'String',ListCoord)
     
    873881%------------------------------------------------------------------------
    874882function Coord_x_Callback(hObject, DimCell, handles)
    875 
     883DimCell
    876884index=get(handles.Coord_x,'Value');
    877885string=get(handles.Coord_x,'String');
    878886VarName=string{index};
    879887if ~ischar(DimCell)
    880 update_field(handles,VarName)
    881 end
     888    update_field(handles,VarName)
     889end
     890if isequal(get(handles.FieldOption,'Value'),1)
     891set_coord_y_options(handles,VarName)
     892end
     893
    882894%------------------------------------------------------------------------
    883895% --- Executes on selection change in Coord_y.
     
    964976
    965977%-----------------------------------------------------------------------
     978% update the display of the variable 'VarName' and its dimensions in the list of variables
    966979function update_field(handles,VarName)
    967980%-----------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.