Home > Codi > Pantalla_Principal.m

Pantalla_Principal

PURPOSE ^

Aquesta es la Pantalla inicial de l'aplicacio. Des d'aqui es pot accedir a

SYNOPSIS ^

function varargout = Pantalla_Principal(varargin)

DESCRIPTION ^

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()

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

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

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