Home > Codi > Menu_Editar_Dades2.m

Menu_Editar_Dades2

PURPOSE ^

Pantalla per mostrar/editar els atributs dels objectes DATA, també es

SYNOPSIS ^

function varargout = Menu_Editar_Dades2(varargin)

DESCRIPTION ^

Pantalla per mostrar/editar els atributs dels objectes DATA, també es
permetra carregar-hi dades directament des del workspace.

Per invocar directament des de consola aquesta pantalla nomes cal
invocar-ne la funcio sense cap parametre extra:
Menu_Editar_Dades2();

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout = Menu_Editar_Dades2(varargin)
0002 %Pantalla per mostrar/editar els atributs dels objectes DATA, també es
0003 %permetra carregar-hi dades directament des del workspace.
0004 %
0005 %Per invocar directament des de consola aquesta pantalla nomes cal
0006 %invocar-ne la funcio sense cap parametre extra:
0007 %Menu_Editar_Dades2();
0008 %
0009 gui_Singleton = 1;
0010 gui_State = struct('gui_Name',       mfilename, ...
0011                    'gui_Singleton',  gui_Singleton, ...
0012                    'gui_OpeningFcn', @Menu_Editar_Dades2_OpeningFcn, ...
0013                    'gui_OutputFcn',  @Menu_Editar_Dades2_OutputFcn, ...
0014                    'gui_LayoutFcn',  [] , ...
0015                    'gui_Callback',   []);
0016 if nargin && ischar(varargin{1})
0017     gui_State.gui_Callback = str2func(varargin{1});
0018 end
0019 
0020 if nargout
0021     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
0022 else
0023     gui_mainfcn(gui_State, varargin{:});
0024 end
0025 
0026 function Menu_Editar_Dades2_OpeningFcn(hObject, eventdata, handles, varargin)
0027 %funció que s'invoca en crear la finestra a varargin ens arriven el
0028 %possibles parametres extres d'invocació de Pantalla. No els
0029 %utilitzarem per res. hObject i handles els modificarem.
0030 
0031 handles.output = hObject;
0032 guidata(hObject, handles);
0033 
0034 %busquem tots els objectes dades que hi hagi
0035 x=evalin('base','whos();');
0036 list=[];
0037 for i=1:length(x)
0038     if strcmp(x(i).class,'DATA') ~=0
0039        list=[list; {x(i).name}];
0040     end
0041 end
0042 %si no ni ha escrivim un misatge
0043 if isempty(list)
0044     list={'No DATA object in Workspace'};
0045 end
0046 %posem la llista de variables disponibles al popup menu
0047 set(handles.popupmenu1,'String',list);
0048 
0049 %Amaguem tots els camps que no tenen valor de moment
0050 set(handles.uitable1,'Visible','off');
0051 set(handles.uitable2,'Visible','off');
0052 set(handles.uitable3,'Visible','off');
0053 %i el boto de guardar
0054 set(handles.pushbutton1,'Visible','off');
0055 set(handles.pushbutton2,'Visible','off');
0056 set(handles.pushbutton3,'Visible','off');
0057 set(handles.pushbutton4,'Visible','off');
0058 set(handles.pushbutton5,'Visible','off');
0059 
0060 set(handles.edit1,'Visible','off');
0061 set(handles.text1,'Visible','off');
0062 set(handles.text2,'Visible','off');
0063 set(handles.text3,'Visible','off');
0064 
0065 if ~isempty(varargin)
0066     ind =max(strcmp(list,varargin{1})' .* (1:length(list)));
0067     if(ind ~= 0)
0068         set(handles.popupmenu1,'value', ind); %posem l'element que ens passen per parametre com a seleccionat
0069         popupmenu1_Callback(hObject,eventdata,handles);
0070     end
0071 end
0072 
0073 function varargout = Menu_Editar_Dades2_OutputFcn(~, ~, handles) 
0074 varargout{1} = handles.output;
0075 
0076 function popupmenu1_Callback(~, ~, handles)
0077 %recupero el nom de 'lobjecte que ha seleccionat l'usuari
0078 nom=get(handles.popupmenu1,'String');
0079 nom=nom{get(handles.popupmenu1,'Value')};
0080 if ~strcmp(nom,'No DATA object in Workspace')
0081     
0082     
0083     
0084     
0085 
0086     aux = evalin('base',[nom '.copy();']); %en fem una copia per poder referir-nos a ell facilment
0087     
0088     nlots=aux.getBatchCount();
0089     
0090     if ~isempty(aux.getClass())
0091         set(handles.uitable1,'Data',aux.getClass());
0092     else
0093         set(handles.uitable1,'Data',zeros(1,nlots));
0094     end
0095     x=get(handles.uitable1,'Data');
0096     x = num2cell(x);
0097     
0098     if ~isempty(aux.getBatchLabel)
0099         x ={x{:} ;aux.getBatchLabel{:}}';
0100     else
0101         a=repmat({''},1,nlots);
0102         x ={x{:} ; a{:}}';
0103     end
0104     set(handles.uitable1,'Data',x)
0105     set(handles.uitable1,'Visible','on');
0106     set(handles.uitable1,'ColumnEditable',true(1,2));
0107     
0108     if ~isempty(aux.getVariableLabel)
0109         set(handles.uitable2,'Data',aux.getVariableLabel);
0110         set(handles.uitable2,'ColumnEditable',true(1,length(aux.getVariableLabel)));
0111         set(handles.uitable2,'Visible','on');
0112     else
0113         set(handles.uitable2,'Data',repmat({''},1,size(aux.getRawData3D,2)));
0114         set(handles.uitable2,'ColumnEditable',true(1,size(aux.getRawData3D,2)));
0115         set(handles.uitable2,'Visible','on');
0116     end
0117     
0118     a= aux.getStagesDurations;
0119     if isempty(a)
0120         set(handles.uitable3,'Data',{'',0})
0121         set(handles.uitable3,'Visible','on');
0122         set(handles.uitable3,'ColumnEditable',true(1,2));
0123     else
0124         set(handles.uitable3,'Data',a)
0125         x=get(handles.uitable3,'Data');
0126         x = num2cell(x);
0127         x ={aux.getStages{:} ; x{:} }';
0128         set(handles.uitable3,'Data',x)
0129         set(handles.uitable2,'ColumnEditable',true(1,2));
0130         set(handles.uitable3,'Visible','on');
0131     end
0132     set(handles.edit1,'String',aux.getName);
0133     
0134     set(handles.pushbutton5,'Visible','on');
0135     set(handles.pushbutton4,'Visible','on');
0136     set(handles.pushbutton3,'Visible','on');
0137     set(handles.pushbutton2,'Visible','on');
0138     set(handles.pushbutton1,'Visible','on');
0139     set(handles.edit1,'Visible','on');
0140     set(handles.text1,'Visible','on');
0141     set(handles.text2,'Visible','on');
0142     set(handles.text3,'Visible','on');
0143     
0144     set(handles.uitable1,'ColumnFormat',{'numeric', 'char'});
0145 end
0146 
0147 function popupmenu1_CreateFcn(hObject, ~, ~)
0148 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0149     set(hObject,'BackgroundColor','white');
0150 end
0151 
0152 function pushbutton1_Callback(hObject, ~, handles)
0153 %recupero el nom de 'lobjecte que ha seleccionat l'usuari
0154 nom=get(handles.popupmenu1,'String');
0155 nom=nom{get(handles.popupmenu1,'Value')};
0156 
0157 try
0158 evalin('base', [nom '.setName(''' get(handles.edit1,'String') ''');'])
0159 
0160 aux=get(handles.uitable1,'Data');
0161 
0162 evalin('base', [nom '.setClass([' num2str([aux{:,1}]) ']);']);
0163 
0164 assignin('base','var_Temp_aux',aux(:,2));
0165 %evalin('base', 'global var_Temp_aux;');
0166 evalin('base', [nom '.setBatchLabel(var_Temp_aux);']);
0167 
0168 assignin('base','var_Temp_aux', get(handles.uitable2,'Data'));
0169 evalin('base',[nom '.setVariableLabel(var_Temp_aux);']);
0170 
0171 assignin('base','var_Temp_aux',get(handles.uitable3,'Data'));
0172 evalin('base',[nom '.setStages(var_Temp_aux(:,1));']);
0173 
0174 evalin('base',[nom '.setStagesDurations([var_Temp_aux{:,2}]);']);
0175 
0176 evalin('base','clear var_Temp_aux;');
0177 close('Menu_Editar_Dades2')
0178 catch err
0179     errordlg(err.message,'Error');
0180     guidata(hObject, handles);
0181 end
0182 
0183 % --- Executes on button press in pushbutton2.
0184 function pushbutton2_Callback(~, ~, handles)
0185 a=get(handles.uitable3,'Data');
0186 a(size(a,1)+1,1) = {''};
0187 a(size(a,1),2) = {0};
0188 set(handles.uitable3,'Data',a);
0189     set(handles.uitable2,'ColumnEditable',true(1,2));
0190 
0191 
0192 
0193 function edit1_Callback(~, ~, ~)
0194 function edit1_CreateFcn(hObject, ~, ~)
0195 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0196     set(hObject,'BackgroundColor','white');
0197 end
0198 
0199 
0200 function pushbutton3_Callback(~, ~, handles)
0201 %Classes des del WS
0202 %busquem tots els objectes dades que hi hagi
0203 nom=get(handles.popupmenu1,'String');
0204 nom=nom{get(handles.popupmenu1,'Value')};
0205 
0206 
0207 num = evalin('base',[nom '.getRawData3D();']);
0208 num = size(num,3);%numero de lots
0209 
0210 x=evalin('base','whos();');
0211 list={};
0212 for i=1:length(x)
0213     %si la variable es numerica i te les dimencions correctes per poder ser
0214     %les classes l'afegim a la llista si no no!
0215     if evalin('base', ['isnumeric(' x(i).name ')'] ) && (x(i).size(1) == 1 || x(i).size(2) == 1) && (x(i).size(1) == num || x(i).size(2) == num)
0216        list={list{:}; x(i).name()};%l'afegim!
0217     end
0218 end
0219 
0220 if isempty(list)
0221     warndlg('No variable in Workspace with correct size.','Attention!');
0222 else
0223     num = listdlg('ListString',list,'SelectionMode','single','Name','Select','PromptString','select one variable:');
0224     if isempty(num)
0225         warndlg('No selected class vector!.','Attention!');
0226 
0227     else
0228         data=get(handles.uitable1,'Data');
0229         valors = evalin('base', list{num});
0230         for i =1:length(valors)
0231             data{i,1} = valors(i);
0232         end
0233         set(handles.uitable1,'Data',data);
0234     end
0235 end
0236 function pushbutton4_Callback(~, ~, handles)
0237 %Noms de lots des del WS
0238 %busquem tots els objectes dades que hi hagi
0239 nom=get(handles.popupmenu1,'String');
0240 nom=nom{get(handles.popupmenu1,'Value')};
0241 
0242 
0243 num = evalin('base',[nom '.getRawData3D();']);
0244 num = size(num,3);%numero de lots
0245 
0246 x=evalin('base','whos();');
0247 list={};
0248 for i=1:length(x)
0249     %si la variable es numerica i te les dimencions correctes per poder ser
0250     %les classes l'afegim a la llista si no no!
0251     if evalin('base', ['iscellstr(' x(i).name ')'] ) && (x(i).size(1) == 1 || x(i).size(2) == 1) && (x(i).size(1) == num || x(i).size(2) == num)
0252        list={list{:}; x(i).name()};%l'afegim!
0253     end
0254 end
0255 
0256 if isempty(list)
0257     warndlg('No variable in Workspace with correct size or class.','Attention!');
0258 
0259 else
0260     num = listdlg('ListString',list,'SelectionMode','single','Name','Select','PromptString','Select one variable:');
0261     if isempty(num)
0262         warndlg('No vector for reference is selected!','Atention!');
0263 
0264     else
0265         data=get(handles.uitable1,'Data');
0266         valors = evalin('base', list{num});
0267         for i =1:length(valors)
0268             data{i,2} = valors{i};
0269         end
0270         set(handles.uitable1,'Data',data);
0271     end
0272 end
0273 
0274 function pushbutton5_Callback(~, ~, handles)
0275 %Noms de variables des de WS
0276 %busquem tots els objectes dades que hi hagi
0277 nom=get(handles.popupmenu1,'String');
0278 nom=nom{get(handles.popupmenu1,'Value')};
0279 
0280 
0281 num = evalin('base',[nom '.getVariableCount();']);
0282 
0283 x=evalin('base','whos();');
0284 list={};
0285 for i=1:length(x)
0286     %si la variable es numerica i te les dimencions correctes per poder ser
0287     %les classes l'afegim a la llista si no no!
0288     if evalin('base', ['iscellstr(' x(i).name ')'] ) && (x(i).size(1) == 1 || x(i).size(2) == 1) && (x(i).size(1) == num || x(i).size(2) == num)
0289        list={list{:}; x(i).name()};%l'afegim!
0290     end
0291 end
0292 
0293 if isempty(list)
0294     warndlg('No variable in Workspace with correct size or class.','Attention!');
0295 
0296 else
0297     num = listdlg('ListString',list,'SelectionMode','single','Name','Select','PromptString','select one variable:');
0298     if isempty(num)
0299         warndlg('No vector for names is selected!','Atention!');
0300 
0301     else
0302         %data=get(handles.uitable2,'Data');
0303         valors = evalin('base', list{num});
0304 %         for i =1:length(valors)
0305 %             data{i} = valors{i};
0306 %         end
0307         set(handles.uitable2,'Data',valors);
0308     end
0309 end

Generated on Wed 12-Sep-2012 13:03:54 by m2html © 2005