Mercurial > hg > ltpda
diff m-toolbox/m/gui/quicklook/ltpdaquicklook.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/m/gui/quicklook/ltpdaquicklook.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,226 @@ +function varargout = ltpdaquicklook(varargin) + +% LTPDAQUICKLOOK allows the user to quicklook LTPDA objects. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: LTPDAQUICKLOOK allows the user to quicklook LTPDA objects. +% +% CALL: ltpdaquicklook +% +% +% VERSION: $Id: ltpdaquicklook.m,v 1.5 2009/01/15 16:09:28 ingo Exp $ +% +% HISTORY: 07-03-08 M Hewitson +% Creation +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Check if I exist already +hs = findall(0); +found = -1; +for j=1:length(hs) + h = hs(j); + if strcmp(get(h, 'Tag'), 'LTPDAquicklook') + found = h; + end +end +if found ~= -1 + figure(found); + return +end + +% id = findobj('Tag', 'LTPDAquicklook'); +% if ~isempty(id) +% figure(id) +% return +% end + +%% Some initial setup + +Gproperties.Gcol = [240 240 240]/255; +Gproperties.Gwidth = 600; +Gproperties.Gheight = 400; +Gproperties.Gborder = 10; +fontsize = 12; + +Gproperties.Screen = get(0,'screensize'); +Gproperties.Gposition = [150 ... + 100 ... + Gproperties.Gwidth... + Gproperties.Gheight]; + +% Initialize and hide the GUI as it is being constructed. +mainfig = figure('Name', 'LTPDA Quicklook',... + 'NumberTitle', 'off',... + 'Visible','off',... + 'Position',Gproperties.Gposition,... + 'Color', Gproperties.Gcol,... + 'Toolbar', 'none',... + 'MenuBar', 'none',... + 'Resize', 'off',... + 'HandleVisibility', 'callback', ... + 'Tag', 'LTPDAquicklook'); + +% Set mainfig callbacks +set(mainfig, 'CloseRequestFcn', {@ltpda_quicklook_close, mainfig}); + +% Set Application data +setappdata(mainfig, 'Gproperties', Gproperties); + + +%% GUI Parts + +% Objects list +objs = getWorkspaceObjs(); +setappdata(mainfig, 'objs', objs); + +lbh = uicontrol(mainfig,'Style','listbox',... + 'String',{' '},... + 'Value',1,... + 'BackgroundColor', 'w',... + 'Fontsize', fontsize,... + 'Max', 1000,... + 'Position',[10 90 150 300],... + 'Tag', 'LTPDA_quicklook_objlist'); + +% Set callback +set(lbh, 'Callback', {@objList, mainfig}); + +setWorkspaceObjsList(objs) + +% Refresh button +pbh = uicontrol(mainfig,'Style','pushbutton',... + 'String','Refresh',... + 'Callback', {@refresh, mainfig}, ... + 'Position',[10 70 60 25]); + + +% Object display +sth = uicontrol(mainfig,'Style','text',... + 'String','',... + 'BackgroundColor', 'w', ... + 'ForegroundColor', 'b', ... + 'HorizontalAlignment', 'left', ... + 'Tag', 'LTPDA_quicklook_display', ... + 'Position',[170 90 420 300]); + +% Plot button +pbh = uicontrol(mainfig,'Style','pushbutton',... + 'String','iplot',... + 'Callback', {@call_iplot, mainfig}, ... + 'Position',[10 10 60 25]); + +% history plot +pbh = uicontrol(mainfig,'Style','pushbutton',... + 'String','plot history',... + 'Callback', {@call_histplot, mainfig}, ... + 'Position',[80 10 80 25]); + + +%% Start the GUI + +% Make the GUI visible. +set(mainfig,'Visible','on') + +%% Callbacks + +%---------------- history plot +function call_histplot(varargin) + +mainfig = varargin{end}; +objs = getappdata(mainfig, 'objs'); + +% get selection +olh = findobj(mainfig, 'Tag', 'LTPDA_quicklook_objlist'); +idx = get(olh, 'Value'); + +cmd = sprintf('obj = evalin(''base'', ''%s'');', objs(idx).name); +eval(cmd); + +plot(obj.hist); + + +%---------------- iplot +function call_iplot(varargin) + +mainfig = varargin{end}; +objs = getappdata(mainfig, 'objs'); + +% get selection +olh = findobj(mainfig, 'Tag', 'LTPDA_quicklook_objlist'); +idx = get(olh, 'Value'); + +cmd = sprintf('obj = evalin(''base'', ''%s'');', objs(idx).name); +eval(cmd); + +iplot(obj); + +%---------------- refresh +function refresh(varargin) + +mainfig = varargin{end}; +objs = getWorkspaceObjs(); +setWorkspaceObjsList(objs) +setappdata(mainfig, 'objs', objs); + +%---------------- Close function +function ltpda_quicklook_close(varargin) +% Callback executed when the GUI is closed + +disp('* Goodbye from the LTPDA Quicklook GUI *') +delete(varargin{1}) + + +%---------------- Get a list of LTPDA objects in the MATLAB workspace +function objs = getWorkspaceObjs() + +% get base workspace variables +ws_vars = evalin('base','whos'); + +objs = []; +for j=1:length(ws_vars) + cmd = sprintf('obj = evalin(''base'', ''%s'');', ws_vars(j).name); + eval(cmd) + if isa(obj, 'ltpda_uo') + objs = [objs ws_vars(j)]; + end +end + + +%---------------- Callback for list selection +function objList(varargin) + +mainfig = varargin{end}; +objs = getappdata(mainfig, 'objs'); + +% get selection +olh = findobj(mainfig, 'Tag', 'LTPDA_quicklook_objlist'); +idx = get(olh, 'Value'); + +cmd = sprintf('obj = evalin(''base'', ''%s'');', objs(idx).name); +eval(cmd); + +txt = display(obj); + +dh = findobj(mainfig, 'Tag', 'LTPDA_quicklook_display'); +set(dh, 'String', txt); + + +%---------------- Fill the workspace object list +function setWorkspaceObjsList(objs) + +id = findobj('Tag', 'LTPDA_quicklook_objlist'); + +objlist = []; +for j=1:length(objs) + obj = objs(j); + str = sprintf('%s\t\t(%s)', obj.name, obj.class); + objlist = [objlist cellstr(str)]; +end + +set(id, 'Value', 1); +set(id, 'String', objlist); + +