Aquesta es la Pantalla inicial de l'aplicacio. Des d'aqui es pot accedir a qualsevol de les altres pantalles directe o indirectament. Aquesta finestra te 2 funcionalitats basiques. -Es el punt de partida de l'aplicacio. -Permetre a l'usuari gestionar els objectes en memoria. Parametres d'entrada: no s'utilitzen parametres d'entrada en aquesta finestra Parametres de sortida: no s'utilitzen parametres de sortida en aquesta finestra Exemples: des de consola només cal invocar la funcio Pantalla Principal per obrir la finestra. Pantalla_Principal()
0001 function varargout = Pantalla_Principal(varargin) 0002 %Aquesta es la Pantalla inicial de l'aplicacio. Des d'aqui es pot accedir a 0003 %qualsevol de les altres pantalles directe o indirectament. 0004 % 0005 %Aquesta finestra te 2 funcionalitats basiques. 0006 % -Es el punt de partida de l'aplicacio. 0007 % -Permetre a l'usuari gestionar els objectes en memoria. 0008 % 0009 %Parametres d'entrada: 0010 % 0011 % no s'utilitzen parametres d'entrada en aquesta finestra 0012 % 0013 %Parametres de sortida: 0014 % 0015 % no s'utilitzen parametres de sortida en aquesta finestra 0016 % 0017 % 0018 %Exemples: 0019 % 0020 %des de consola només cal invocar la funcio Pantalla Principal per obrir la 0021 %finestra. 0022 %Pantalla_Principal() 0023 0024 %Autogenerat - inicialitza tots els callbacks i parametres de la finesta 0025 gui_Singleton = 1; 0026 gui_State = struct('gui_Name', mfilename, ... 0027 'gui_Singleton', gui_Singleton, ... 0028 'gui_OpeningFcn', @Pantalla_Principal_OpeningFcn, ... 0029 'gui_OutputFcn', @Pantalla_Principal_OutputFcn, ... 0030 'gui_LayoutFcn', [] , ... 0031 'gui_Callback', []); 0032 if nargin && ischar(varargin{1}) 0033 gui_State.gui_Callback = str2func(varargin{1}); 0034 end 0035 0036 if nargout 0037 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); 0038 else 0039 gui_mainfcn(gui_State, varargin{:}); 0040 end 0041 0042 function Pantalla_Principal_OpeningFcn(hObject, ~, handles, varargin) 0043 %funció que s'invoca en crear la finestra a varargin ens arriven el 0044 %possibles parametres extres d'invocació de Pantalla principal. No els 0045 %utilitzarem per res. hObject i handles els modificarem. 0046 0047 handles.output = hObject; 0048 handles=menu(handles);%incrustem el menu 0049 guidata(hObject, handles); %guardem els canvis 0050 0051 %passem a posar la imatge de exit i la de l'udg amb els seus calbacks 0052 %cal recuperar la ruta del fitxer pot no ser la del path actual 0053 ruta = mfilename('fullpath'); 0054 ruta = ruta(1:end-18);%treiem el nom de la funció 'Pantalla_Principal' 0055 %obrim els fitxers on tenim les imatges 0056 iExit = imread([ruta 'Imatges' filesep 'logoexit.png']); 0057 iUniversitat = imread([ruta 'Imatges' filesep 'udg.jpg']); 0058 0059 %ens posicionem als eixos on bolem mostrar i mostrem la imatge afegint-li 0060 %el callback perque obrin la pagina web corresponent 0061 0062 %eXiT 0063 axes(handles.axes2); 0064 image(iExit,'ButtonDownFcn','web(''http://exit.udg.edu//'', ''-browser'')'); 0065 axis off; 0066 0067 %UdG 0068 axes(handles.axes1); 0069 image(iUniversitat,'ButtonDownFcn','web(''http://www.udg.edu//'', ''-browser'')'); 0070 axis off; 0071 0072 0073 0074 %busquem PCA , DATA i CBR 0075 x=evalin('base','whos();'); 0076 list=[]; 0077 for i=1:length(x) 0078 if ((strcmp(x(i).class,'DATA') ~=0) || (strcmp(x(i).class,'PCA') ~=0) || (strcmp(x(i).class,'CBR') ~=0) ) 0079 list=[list; {x(i).name()}]; 0080 end 0081 end 0082 if isempty(list) 0083 list={'Workspace is empty'}; 0084 end 0085 set(handles.listbox1,'String',list); 0086 set(handles.listbox1,'Value',1); 0087 0088 %Update per a Updatecaller 0089 function Update(hObject, ~, handles) 0090 %Aquesta és la funció que ens invocara de manera automatica la funcio 0091 %update_caller quan calgui actualitzar la interficie perque s'ha 0092 %creat/destruit un objecte. 0093 %En el cas de la pantalla principal nomes caldrà actualitzar el menù i la 0094 %llista d'objectes del object manager. 0095 0096 %Actualitzem el menu 0097 handles.output = hObject; 0098 handles=menu(handles); 0099 0100 %busquem objectes 0101 x=evalin('base','whos();'); 0102 list=[]; 0103 for i=1:length(x) 0104 if ((strcmp(x(i).class,'DATA') ~=0) || (strcmp(x(i).class,'PCA') ~=0) || (strcmp(x(i).class,'CBR') ~=0) ) 0105 list=[list; {x(i).name()}]; 0106 end 0107 end 0108 if isempty(list) 0109 list={'Workspace is empty'}; 0110 end 0111 set(handles.listbox1,'String',list);%posem els noms que hem trovat a la llista 0112 set(handles.listbox1,'Value',1);%select del primer per evitar errors (tenir seleccionat element inexistent) 0113 0114 %guardem els canvis en els handles 0115 guidata(hObject, handles); 0116 0117 %Llista object manager 0118 function listbox1_Callback(hObject, ~, handles) 0119 %funcio que s'activara cada cop que l'usuari cliki la llista amb noms, aqui 0120 %posarem el tipus d'objecte al display corresponent. Tambe controlarem si 0121 %l'usuari fa dobleclick per obrir els menús d'edició d'objectes. Per fer-ho 0122 %ens servirem de variables persistents. 0123 0124 %posem el text 0125 nom=get(handles.listbox1,'String'); 0126 nom=nom{get(handles.listbox1,'Value')}; 0127 0128 if strcmp(nom,'Workspace is empty') 0129 %si no hi ha variables posem a buit el camp on es mostra la classe de 0130 %l'element 0131 set(handles.text2,'String','') 0132 else 0133 %hi ha com a minim una variable i l'han seleccionat procedim a 0134 %recuperar-ne el nom i la classe per mostrar-la 0135 0136 x=evalin('base',['whos(''' nom ''')' ]);%recuperem totes les dades de la variable 0137 set(handles.text2,'String',x.class) %posem la classe al camp de la GUI corresponent 0138 0139 %Quan l'usuari fa un dobleclick sobre el nom d'un objecte obrirem el 0140 %menu d'edicio corresponent a cada classe d'objectes 0141 0142 %creem una variable persistent per saber si hi ha una instancia 0143 %d'aquesta funció corrent en memoria 0144 persistent chk 0145 0146 if isempty(chk) 0147 %no te valor la variable persistent -> Es el primer cop 0148 0149 chk = 1;%inicialitzem la variable persistent 0150 pause(0.2); %fem un petit delay esperat que es faci el dobleclick o no 0151 if chk == 1 0152 %single click 0153 chk = []; %eliminem la variable persistent 0154 end 0155 else 0156 %doble click 0157 chk = [];%eliminem la variable persistent 0158 0159 %No bolem ser interromputs mentre creem finestres podrien passar 0160 %coses rares 0161 set(hObject,'interruptible','off') 0162 0163 %invoquem la pantalla de modificació de l'objecte 0164 switch x.class 0165 case 'DATA' 0166 Menu_Editar_Dades2(nom); 0167 0168 case 'PCA' 0169 Menu_Configura_PCA(nom); 0170 0171 case 'CBR' 0172 Menu_CBR(nom); 0173 0174 otherwise 0175 %no hauria d'arrivar mai aqui pero per si de cas! 0176 errordlg('Unrecognised object Class!','Error'); 0177 end 0178 0179 %tornem a permetre les interrupcions 0180 set(hObject,'interruptible','on') 0181 end 0182 0183 end 0184 0185 %Delete 0186 function pushbutton1_Callback(~, ~, handles) 0187 %callback del boto Delete. Aixó ens indica que l'usuari vol eliminar la 0188 %variable que hi ha seleccionada en aquest moment 0189 0190 %recuperem el nom 0191 nom=get(handles.listbox1,'String'); 0192 nom=nom{get(handles.listbox1,'Value')}; 0193 0194 if strcmp(nom,'Workspace is empty') 0195 %no hi ha variables 0196 set(handles.text2,'String',''); 0197 else 0198 %hi ha variable seleccionada 0199 0200 %muntem el nom de la variable 0201 0202 evalin('base',['clear ' nom]);%eliminem la variable del base 0203 %set(handles.text2,'String','');%no cal updatecaller ja ho fara! 0204 Update_Caller();%fem que actualitzi tot 0205 0206 end 0207 0208 %Update 0209 function pushbutton3_Callback(~, ~, ~) 0210 %Callback del boto Update List. La llista no esta actualitzada per tant en 0211 %comptes de fer-ho manualment Cridem updateCaller aixi actualitzem totes 0212 %les pantalles. 0213 Update_Caller(); 0214 0215 0216 %--------------------- INUTILS -------------------------------------------- 0217 %Callbacks necessaries pero que no utilitzem, són autogenerades 0218 function varargout = Pantalla_Principal_OutputFcn(~, ~, handles) 0219 varargout{1} = handles.output; 0220 function listbox1_CreateFcn(hObject, ~, ~) 0221 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0222 set(hObject,'BackgroundColor','white'); 0223 end