Changeset 410 for trunk/src/uvmat.m
- Timestamp:
- May 6, 2012, 4:06:22 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/uvmat.m
r408 r410 238 238 %% refresh projection plane 239 239 UvData.Object{1}.ProjMode='projection';%main plotting plane 240 set(handles.ListObject ,'Value',1)% default: empty projection objectproj_field241 set(handles.ListObject ,'String',{''})240 set(handles.ListObject_1,'Value',1)% default: empty projection objectproj_field 241 set(handles.ListObject_1,'String',{''}) 242 242 set(handles.Fields,'Value',1) 243 243 set(handles.Fields,'string',{''}) … … 364 364 set(handles.OBJECT_txt,'Visible','on') 365 365 set(handles.edit_object,'Visible','on') 366 set(handles.ListObject,'Visible','on')366 % set(handles.ListObject_1,'Visible','on') 367 367 set(handles.frame_object,'Visible','on') 368 368 if ~isempty(errormsg) … … 802 802 set(handles.OBJECT_txt,'Visible','on') 803 803 set(handles.edit_object,'Visible','on') 804 set(handles.ListObject,'Visible','on') 804 set(handles.ListObject_1,'Visible','on') 805 set(handles.ViewObject_1,'Visible','on') 805 806 set(handles.frame_object,'Visible','on') 806 807 … … 3891 3892 %------------------------------------------------------------------------ 3892 3893 3893 %------------------------------------------------------------------------ 3894 % --- Executes on selection change in ListObject. 3895 function ListObject_Callback(hObject, eventdata, handles) 3896 %------------------------------------------------------------------------ 3897 list_str=get(handles.ListObject,'String'); 3898 IndexObj_old=get(handles.ListObject,'UserData');%retrieve previous selection 3899 IndexObj=get(handles.ListObject,'Value');%present object selection 3900 3901 %% we select two objects or more at once (using the Ctrl key), keep only the last two items: the first is projected on uvmat, the second on view_field 3902 if length(IndexObj)>2 3903 IndexObj=[IndexObj(end-1) IndexObj(end)];%keeps only the last two selected items at most 3904 end 3905 3906 %% we select one object 3907 if length(IndexObj)==1% 3908 if length(IndexObj_old)>=2 && isequal(IndexObj_old(1),IndexObj) % we select the first previously selected object-> 3909 IndexObj=[1 IndexObj_old(2)];% it desactivates this object and selects the first object for uvmat 3910 elseif length(IndexObj_old)>=2 && isequal(IndexObj_old(2),IndexObj) % we select the second previously selected object-> 3911 IndexObj=IndexObj_old(1);% it desactivates this object and keeps only the first previously selected object (uvmat) 3912 else % 3913 IndexObj=[IndexObj_old(1) IndexObj];% activates a second object while keeping the first previously selected one 3914 end 3915 end 3916 3917 %% The second object is selected, it is displayed in set_object if this GUI is already opened 3894 % --- Executes on selection change in ListObject_1. 3895 function ListObject_1_Callback(hObject, eventdata, handles) 3896 list_str=get(handles.ListObject_1,'String'); 3897 IndexObj=get(handles.ListObject_1,'Value'); 3918 3898 UvData=get(handles.uvmat,'UserData'); 3919 ObjectData=UvData.Object{IndexObj(end)}; 3899 ObjectData=UvData.Object{get(handles.ListObject_1,'Value')}; 3900 3901 %% update the projection plot on uvmat 3902 ProjData= proj_field(UvData.Field,ObjectData);%project the current interface field on UvData.Object{IndexObj(1)} 3903 plot_field(ProjData,handles.axes3,read_GUI(handles.uvmat));%read plotting parameters on the uvmat interfacPlotHandles); 3904 3905 %% display the object parameters if the GUI set_object is already opened 3920 3906 hset_object=findobj(allchild(0),'tag','set_object'); 3921 3907 if ~isempty(hset_object) 3922 delete(hset_object)% delete to refesh the content3908 % delete(hset_object)% delete to refesh the content 3923 3909 ZBounds=0; % default 3924 3910 if isfield(UvData.Field,'ZMin') && isfield(UvData.Field,'ZMax') … … 3926 3912 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 3927 3913 end 3928 ObjectData.Name=list_str{IndexObj (end)};3914 ObjectData.Name=list_str{IndexObj}; 3929 3915 set_object(ObjectData,[],ZBounds); 3916 set(handles.ViewObject_1,'Value',1)% show that the selected object in ListObject_1 is currently visualised 3930 3917 end 3931 3918 % desactivate the edit object mode … … 3933 3920 set(handles.edit_object,'BackgroundColor',[0.7,0.7,0.7]) 3934 3921 3935 %% update the object value stored in ListObject 3936 set(handles.ListObject,'Value',IndexObj); % marks the selected objects in the list 3937 set(handles.ListObject,'UserData',IndexObj)% keep the current object selection in memory for next time 3938 % 3939 % UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface 3940 % if numel(UvData.Object)<max(IndexObj); 3941 % msgbox_uvmat('ERROR','invalid object list') 3942 % return 3943 % end 3944 % if numel(IndexObj)>=2 3945 % UvData.Object=update_obj(UvData,IndexObj(1),IndexObj(2));%update the current object graphic representation 3946 % set(handles.uvmat,'UserData',UvData) 3947 % end 3948 3949 %% update the main plot (on uvmat) if the first selected object has been changed 3950 if ~isequal(IndexObj(1),IndexObj_old(1)) 3951 ProjData= proj_field(UvData.Field,ObjectData);%project the current interface field on UvData.Object{IndexObj(1)} 3952 plot_field(ProjData,handles.axes3,read_GUI(handles.uvmat));%read plotting parameters on the uvmat interfacPlotHandles); 3953 end 3922 %------------------------------------------------------------------------ 3923 % --- Executes on selection change in ListObject. 3924 3925 function ListObject_Callback(hObject, eventdata, handles) 3926 %------------------------------------------------------------------------ 3927 list_str=get(handles.ListObject,'String'); 3928 IndexObj=get(handles.ListObject,'Value');%present object selection 3929 3930 %% The object is displayed in set_object if this GUI is already opened 3931 UvData=get(handles.uvmat,'UserData'); 3932 ObjectData=UvData.Object{IndexObj}; 3933 hset_object=findobj(allchild(0),'tag','set_object'); 3934 if ~isempty(hset_object) 3935 % delete(hset_object)% delete to refesh the content 3936 ZBounds=0; % default 3937 if isfield(UvData.Field,'ZMin') && isfield(UvData.Field,'ZMax') 3938 ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider 3939 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 3940 end 3941 ObjectData.Name=list_str{IndexObj}; 3942 set_object(ObjectData,[],ZBounds); 3943 set(handles.ViewObject,'Value',1)% show that the selected object in ListObject is currently visualised 3944 end 3945 % desactivate the edit object mode 3946 set(handles.edit_object,'Value',0) 3947 set(handles.edit_object,'BackgroundColor',[0.7,0.7,0.7]) 3954 3948 3955 3949 %% update the second plot (on view_field) if view_field is already openened … … 4023 4017 4024 4018 %------------------------------------------------------------------------ 4019 % --- Executes on button press in ViewObject_1. 4020 function ViewObject_1_Callback(hObject, eventdata, handles) 4021 %------------------------------------------------------------------------ 4022 check_view=get(handles.ViewObject_1,'Value'); 4023 4024 if check_view %activate set_object 4025 set(handles.ViewObject,'Value',0)% deselect ViewObject 4026 IndexObj=get(handles.ListObject_1,'Value'); 4027 list_object=get(handles.ListObject_1,'String'); 4028 UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface 4029 UvData.Object{IndexObj}.Name=list_object{IndexObj}; 4030 if numel(UvData.Object)<IndexObj;% error in UvData 4031 msgbox_uvmat('ERROR','invalid object list') 4032 return 4033 end 4034 ZBounds=0; % default 4035 if isfield(UvData.Field,'ZMin') && isfield(UvData.Field,'ZMax') 4036 ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider 4037 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 4038 end 4039 set(handles.ListObject_1,'Value',IndexObj);%restore ListObject selection after set_object deletion 4040 data=UvData.Object{IndexObj}; 4041 if ~isfield(data,'Type')% default plane 4042 data.Type='plane'; 4043 end 4044 if isfield(UvData,'Field') 4045 Field=UvData.Field; 4046 if isfield(UvData.Field,'Mesh')&&~isempty(UvData.Field.Mesh) 4047 data.RangeX=[UvData.Field.XMin UvData.Field.XMax]; 4048 if strcmp(data.Type,'line')||strcmp(data.Type,'polyline') 4049 data.RangeY=UvData.Field.Mesh; 4050 else 4051 data.RangeY=[UvData.Field.YMin UvData.Field.YMax]; 4052 end 4053 data.DX=UvData.Field.Mesh; 4054 data.DY=UvData.Field.Mesh; 4055 end 4056 if isfield(Field,'NbDim')&& isequal(Field.NbDim,3) 4057 data.Coord=[0 0 0]; %default 4058 end 4059 if isfield(Field,'CoordUnit') 4060 data.CoordUnit=Field.CoordUnit; 4061 end 4062 end 4063 hset_object=set_object(data,[],ZBounds); 4064 hhset_object=guidata(hset_object); 4065 if get(handles.edit_object,'Value')% edit mode 4066 set(hhset_object.PLOT,'Enable','on') 4067 else 4068 set(hhset_object.PLOT,'Enable','off') 4069 end 4070 else 4071 hset_object=findobj(allchild(0),'tag','set_object'); 4072 if ~isempty(hset_object) 4073 delete(hset_object)% delete existing version of set_object 4074 end 4075 end 4076 4077 %------------------------------------------------------------------------ 4025 4078 % --- Executes on button press in ViewObject. 4026 4079 function ViewObject_Callback(hObject, eventdata, handles) 4027 4080 %------------------------------------------------------------------------ 4028 IndexObj=get(handles.ListObject,'Value'); 4029 % IndexObj=IndexObj(end); %keeps only the second value 4030 UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface 4031 if numel(UvData.Object)<IndexObj(end);% error in UvData 4032 msgbox_uvmat('ERROR','invalid object list') 4033 return 4034 end 4035 % ObjectData=UvData.Object{IndexObj(}; 4036 ZBounds=0; % default 4037 if isfield(UvData.Field,'ZMin') && isfield(UvData.Field,'ZMax') 4038 ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider 4039 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 4040 end 4041 hset_object=findobj(allchild(0),'tag','set_object'); 4042 if ~isempty(hset_object) 4043 delete(hset_object)% delete existing version of set_object 4044 end 4045 set(handles.ListObject,'Value',IndexObj);%restore ListObject selection after set_object deletion 4046 if ~isfield(UvData.Object{IndexObj(1)},'Type')% default plane 4047 UvData.Object{IndexObj(1)}.Type='plane'; 4048 end 4049 list_object=get(handles.ListObject,'String'); 4050 UvData.Object{IndexObj(end)}.Name=list_object{IndexObj(end)}; 4051 hset_object=set_object(UvData.Object{IndexObj(end)},[],ZBounds); 4052 hhset_object=guidata(hset_object); 4053 if get(handles.edit_object,'Value')% edit mode 4054 set(hhset_object.PLOT,'Enable','on') 4055 else 4056 set(hhset_object.PLOT,'Enable','off') 4057 end 4058 4059 %% show the second plot (on view_field) 4060 if length(IndexObj)==2 4061 ProjData= proj_field(UvData.Field,UvData.Object{IndexObj(2)});%project the current field on ObjectData 4081 check_view=get(handles.ViewObject,'Value'); 4082 4083 if check_view 4084 set(handles.ViewObject_1,'Value',0)% unselect ViewObject_1 4085 IndexObj=get(handles.ListObject,'Value'); 4086 UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface 4087 if numel(UvData.Object)<IndexObj(end);% error in UvData 4088 msgbox_uvmat('ERROR','invalid object list') 4089 return 4090 end 4091 ZBounds=0; % default 4092 if isfield(UvData.Field,'ZMin') && isfield(UvData.Field,'ZMax') 4093 ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider 4094 ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider 4095 end 4096 set(handles.ListObject,'Value',IndexObj);%restore ListObject selection after set_object deletion 4097 if ~isfield(UvData.Object{IndexObj(1)},'Type')% default plane 4098 UvData.Object{IndexObj(1)}.Type='plane'; 4099 end 4100 list_object=get(handles.ListObject,'String'); 4101 UvData.Object{IndexObj(end)}.Name=list_object{IndexObj(end)}; 4102 hset_object=set_object(UvData.Object{IndexObj(end)},[],ZBounds); 4103 hhset_object=guidata(hset_object); 4104 if get(handles.edit_object,'Value')% edit mode 4105 set(hhset_object.PLOT,'Enable','on') 4106 else 4107 set(hhset_object.PLOT,'Enable','off') 4108 end 4109 4110 %% show the second plot (on view_field) 4111 ProjData= proj_field(UvData.Field,UvData.Object{IndexObj});%project the current field on ObjectData 4062 4112 hview_field=findobj(allchild(0),'tag','view_field'); 4063 4113 if isempty(hview_field) 4064 4114 hview_field=view_field; 4065 4115 end 4066 PlotHandles=guidata(hview_field); 4116 PlotHandles=guidata(hview_field); 4067 4117 plot_field(ProjData,PlotHandles.axes3,read_GUI(hview_field));%read plotting parameters on the uvmat interfacPlotHandles); 4068 end 4069 4118 else 4119 hset_object=findobj(allchild(0),'tag','set_object'); 4120 if ~isempty(hset_object) 4121 delete(hset_object)% delete existing version of set_object 4122 end 4123 end 4070 4124 %------------------------------------------------------------------- 4071 4125 % --- Executes on selection change in edit_object. … … 4105 4159 %------------------------------------------------------------------------ 4106 4160 IndexObj=get(handles.ListObject,'Value'); 4107 if IndexObj(end)>1 4108 delete_object(IndexObj(end)) 4161 IndexObj_1=get(handles.ListObject_1,'Value'); 4162 4163 if IndexObj>1 && ~isequal(IndexObj,IndexObj_1) 4164 delete_object(IndexObj) 4109 4165 end 4110 4166 … … 4252 4308 data.Type='points'; 4253 4309 data.ProjMode='projection';%default 4310 data.ProjModeMenu={};% do not restrict ProjMode menus 4254 4311 create_object(data,handles) 4255 4312 … … 4259 4316 data.Type='line'; 4260 4317 data.ProjMode='projection';%default 4318 data.ProjModeMenu={};% do not restrict ProjMode menus 4261 4319 create_object(data,handles) 4262 4320 … … 4266 4324 data.Type='polyline'; 4267 4325 data.ProjMode='projection';%default 4326 data.ProjModeMenu={};% do not restrict ProjMode menus 4268 4327 create_object(data,handles) 4269 4328 … … 4273 4332 data.Type='polygon'; 4274 4333 data.ProjMode='inside';%default 4334 data.ProjModeMenu={};% do not restrict ProjMode menus 4275 4335 create_object(data,handles) 4276 4336 … … 4280 4340 data.Type='rectangle'; 4281 4341 data.ProjMode='inside';%default 4342 data.ProjModeMenu={};% do not restrict ProjMode menus 4282 4343 create_object(data,handles) 4283 4344 … … 4287 4348 data.Type='ellipse'; 4288 4349 data.ProjMode='inside';%default 4350 data.ProjModeMenu={};% do not restrict ProjMode menus 4289 4351 create_object(data,handles) 4290 4352 … … 4303 4365 data.Type='plane'; 4304 4366 data.ProjMode='projection';%default 4367 data.ProjModeMenu={};% do not restrict ProjMode menus 4305 4368 create_object(data,handles) 4306 4369 … … 4310 4373 data.Type='volume'; 4311 4374 data.ProjMode='interp';%default 4375 data.ProjModeMenu={}; 4312 4376 % set(handles.create,'Visible','on') 4313 4377 % set(handles.create,'Value',1) 4314 % VOLUME_Callback(hObject,eventdata,handles) 4378 % VOLUME_Callback(hObject,eventdata,handles)data.ProjModeMenu={}; 4315 4379 create_object(data,handles) 4316 4380 … … 4319 4383 function create_object(data,handles) 4320 4384 %------------------------------------------------------------------------ 4321 4385 % desactivate geometric calibration if opened 4322 4386 hgeometry_calib=findobj(allchild(0),'tag','geometry_calib'); 4323 4387 if ishandle(hgeometry_calib) … … 4326 4390 set(hhgeometry_calib.edit_append,'BackgroundColor',[0.7 0.7 0.7]) 4327 4391 end 4328 UvData=get(handles.uvmat,'UserData');4329 4392 set(handles.edit_object,'Value',0); %suppress the object edit mode 4330 4393 set(handles.edit_object,'BackgroundColor',[0.7,0.7,0.7]) 4331 % data.enable_plot=1; 4394 UvData=get(handles.uvmat,'UserData'); 4395 data.Name=data.Type;% default name=type 4332 4396 data.Coord=[0 0]; %default 4333 4397 if isfield(UvData,'Field') … … 4335 4399 if isfield(UvData.Field,'Mesh')&&~isempty(UvData.Field.Mesh) 4336 4400 data.RangeX=[UvData.Field.XMin UvData.Field.XMax]; 4337 if strcmp(data.Type,'line')||strcmp(data.Type,'polyline') 4401 if strcmp(data.Type,'line')||strcmp(data.Type,'polyline')||strcmp(data.Type,'points') 4338 4402 data.RangeY=UvData.Field.Mesh; 4339 4403 else … … 4342 4406 data.DX=UvData.Field.Mesh; 4343 4407 data.DY=UvData.Field.Mesh; 4344 4345 % elseif isfield(Field,'AX')&& isfield(Field,'AY')&& isfield(Field,'A')%only image4346 % np=size(Field.A);4347 % meshx=(Field.AX(end)-Field.AX(1))/np(2);4348 % meshy=abs(Field.AY(end)-Field.AY(1))/np(1);4349 % data.RangeY=max(meshx,meshy);4350 % data.RangeX=max(meshx,meshy);4351 % data.DX=max(meshx,meshy);4352 4408 end 4353 4409 if isfield(Field,'NbDim')&& isequal(Field.NbDim,3) … … 4361 4417 delete(handles.UVMAT_title)%delete the initial display of uvmat if no field has been entered 4362 4418 end 4363 hset_object=findobj(allchild(0),'tag','set_object'); 4364 IndexObj=get(handles.ListObject,'Value'); 4365 if ~isempty(hset_object) 4366 delete(hset_object)% delete existing version of set_object 4367 end 4368 set(handles.ListObject,'Value',IndexObj) 4419 set(handles.ListObject,'Visible','on') 4420 set(handles.ViewObject,'Visible','on') 4421 set(handles.ViewObject,'Value',1) % indicate that the object selected in ListObject (projection oin view_field) is visualised 4422 set(handles.ViewObject_1,'Value',0)% then the object selected in ListObject_1 is not visualised 4369 4423 hset_object=set_object(data,handles);% call the set_object interface 4370 4424 hhset_object=guidata(hset_object); … … 4372 4426 set(handles.MenuObject,'checked','on') 4373 4427 set(handles.uvmat,'UserData',UvData) 4374 set(handles.CheckZoom,'Value',0) 4428 set(handles.CheckZoom,'Value',0) %desactivate the zoom for object creation by the mouse 4375 4429 CheckZoom_Callback(handles.uvmat, [], handles) 4376 4430 set(handles.delete_object,'Visible','on') … … 4482 4536 return 4483 4537 else 4484 set(handles.ListObject,'Max',2);%allow multiple selection4538 % set(handles.ListObject,'Max',2);%allow multiple selection 4485 4539 set(handles.ListObject,'Value',val); 4486 4540 flag=1;
Note: See TracChangeset
for help on using the changeset viewer.