function alexmenu(figNumber) %ALEXMENU - Initializes the ALEX menubar. % % % % Copyright (c) 1995 by Claudio Rivetti and Mark Young % claudio@alice.uoregon.edu, mark@alice.uoregon.edu % % figNumber global FullFname Handleimg AlexDir Handlefig lwmo pcmd fcmd smo global extrafun_path MapSize map global H CutPaste I CB_imagemode Showmenu bg=[0.701961 0.701961 0.701961]; % use in the callback to check off all the item and on the selected item checkoff='set(get(get(gcm, ''Parent''), ''Children''), ''Checked'', ''off'');'; checkon='set(gcm, ''Checked'', ''on'');'; checktoggle = ['if strcmp(get(gcm,''Checked''),''on'');set(gcm,''Checked'',''off'');else;' ... 'set(gcm,''Checked'',''on'');end;']; % get the functions from the Extrafun_path %extrafun=getfile([extrafun_path '*.m']); depends on ls extrafun=[]; % Menu labels ------------------------------------------------------------- %View menu topview_lab = 'Top View'; interp_lab = 'Interpolate Pixels '; lineplot_lab = 'Line Plot'; mesh_lab = 'Mesh Plot'; meshc_lab = 'MeshC Plot'; surface_lab = 'Surface'; surfl_lab = 'Light Surface'; truesize_lab= 'True size'; fullsize_lab= 'Full size'; normalsize_lab= 'Default size'; snapshot_lab = 'Snapshot'; refresh_lab = 'Refresh'; % Modify menu zoom_lab = 'Zoom off'; resize_lab = 'Resize...'; rotate_lab = 'Rotate...'; flip_lab = 'Flip'; invert_lab='Invert'; gray_lab='Gray scale'; binary_lab='Binary...'; emboss_lab='Emboss'; edge_lab='Edge detection'; perim_lab='Perimeter'; erode_lab='Erode'; dilate_lab='Dilate'; morph_lab='Morfology'; median_lab='Median lowpass...'; wiener_lab='Wiener lowpass...'; blur_lab='Blur lowpass...'; flatten_lab = 'Flatten...'; recon_lab = 'Tip Reconstruction...'; % Analyze menu section_lab = 'Profile...'; contour_lab = 'Contours...'; hist_lab = 'Histogram...'; stat_lab = 'Statistic... '; count_lab = 'Counter...'; measure_lab = 'Measure...'; % Colormaps Menu loadmaps_lab = 'Load... '; savemaps_lab = 'Save... '; modifymaps_lab = 'Modify...'; defaultmaps_lab = 'Restore Default '; % Help menu index_lab='Help Index'; mfile_lab='Edit Mfile'; about_lab='About Alex'; prefs_lab = 'Preferences...'; %-------------------------------------------------------------------------------- % Menu callbacks ------------------------------------------------------------ % File menu export_type_cbk = checktoggle; %-------------------------------------------------------------------------------------------- if nargin<1, currentMap=' '; end; %==================================== % File Menu %==================================== h=uimenu(figNumber,'Label','File ', 'Accelerator','F'); uimenu(h,'Label','Close', 'Accelerator','L', 'Interruptible', 'on',... 'Callback','closeimage;'); h2=uimenu(h,'Label','Open...', 'Accelerator', 'O', 'Interruptible', 'on', ... 'Callback','load_image('''', ''NANO3'');'); uimenu(h,'Label','Re-Open', 'Interruptible', 'on', ... 'Callback','load_image(FullFname);'); uimenu(h,'Label','Save', 'Accelerator', 'S', 'Interruptible', 'on', ... 'Callback','save_image(FullFname);'); uimenu(h,'Label','Save As...', 'Interruptible', 'on', ... 'Callback','save_image;'); h2=uimenu(h,'Label','Import'); uimenu(h2,'Label','NANO 2 ', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''NANO2'');'); uimenu(h2,'Label','MATLAB', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''MATLAB'');'); uimenu(h2,'Label','TIFF', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''TIFF'');'); uimenu(h2,'Label','BMP', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''BMP'');'); uimenu(h2,'Label','GIF', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''GIF'');'); uimenu(h2,'Label','PCX', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''PCX'');'); uimenu(h2,'Label','SPIDER', ... 'Interruptible', 'on',... 'Callback','load_image('''', ''SPIDER'');'); h2=uimenu(h,'Label','Export'); uimenu(h2,'Label','Image only', ... 'checked', 'off',... 'tag', 'EXP_TYPE',... 'Callback',export_type_cbk); uimenu(h2,'Label','NANO2 ', ... 'separator', 'on',... 'tag', 'NANO2_EXPORT',... 'Interruptible', 'on',... 'Callback','writeNANO2;'); uimenu(h2,'Label','MATLAB', ... 'Interruptible', 'on',... 'Callback','writeMATLAB;'); uimenu(h2,'Label','TIFF', ... 'Interruptible', 'on',... 'Callback','eval(''writeTIFF'')'); uimenu(h2,'Label','BMP', ... 'Interruptible', 'on',... 'Callback','writeBMP'); uimenu(h2,'Label','GIF', ... 'Interruptible', 'on',... 'Callback','writeGIF'); uimenu(h2,'Label','PCX', ... 'Interruptible', 'on',... 'Callback','writePCX'); uimenu(h2,'Label','SPIDER', ... 'Interruptible', 'on',... 'Callback','writeSPIDER;'); uimenu(h2,'Label','ASCII', ... 'Interruptible', 'on',... 'Callback','writeASCII;'); uimenu(h,'Label','Print...',... 'tag', 'PRINTITEM',... 'Interruptible', 'on',... 'userdata', 0,... 'Callback','eval(''pgsetup'')'); cb='swd;'; uimenu(h,'Label','Working Directories...',... 'Callback','eval(''swd;'')'); uimenu(h,'Label','Exit ALEX', 'Accelerator', 'Q', 'Interruptible', 'on',... 'Separator','on','Callback','exitalex(1);'); uimenu(h,'Label','Quit MATLAB', 'Interruptible', 'on', ... 'Callback','exitalex(0);'); %==================================== % Edit Menu %==================================== h=uimenu(figNumber,'Label','Edit ', 'Accelerator','E'); uimenu(h,'Label','Undo', 'Accelerator', 'U',... 'tag', 'UNDOITEM',... 'Callback','undo;'); uimenu(h,'Label','Cut',... 'Accelerator', 'X', ... 'Interruptible','on',... 'Callback','cutimage;'); uimenu(h,'Label','Copy',... 'Accelerator', 'A',... 'Interruptible','on',... 'Callback','copyimage;'); uimenu(h,'Label','Paste',... 'Accelerator', 'V',... 'tag', 'PASTEITEM',... 'Interruptible','on',... 'Enable', onoff(~isempty(CutPaste)),... 'Callback','pasteimage;'); uimenu(h,'Label','Parameters...', ... 'Separator','on','Callback','display_header'); %======================================= % View Menu %======================================= h=uimenu(figNumber,'Label','View ', 'Accelerator','V'); uimenu(h,... 'Label', topview_lab,... 'Checked', 'on',... 'UserData', 'TOPVIEW',... 'CallBack', 'checkoff;checkon;showimage;closebuttons;'); uimenu(h,... 'Label', interp_lab,... 'UserData', 'TOPVIEW_INTERP',... 'CallBack', 'checkoff;checkon;showimage;'); % View menu uimenu(h,... 'Label', lineplot_lab,... 'UserData', 'LINEPLOT',... 'CallBack', 'checkoff;checkon;showimage;'); uimenu(h,... 'Label', mesh_lab,... 'UserData', 'MESH',... 'CallBack', 'checkoff;checkon;showimage;'); uimenu(h,... 'Label', meshc_lab,... 'UserData', 'MESHC',... 'CallBack', 'checkoff;checkon;showimage;'); uimenu(h,... 'Label', surface_lab,... 'UserData', 'SURFACE',... 'CallBack', 'checkoff;checkon;showimage;'); uimenu(h,... 'Label', surfl_lab,... 'UserData', 'SURFL',... 'CallBack', 'checkoff;checkon;showimage;'); uimenu(h,... 'Label', truesize_lab,... 'Separator', 'on',... 'CallBack', 'truesize(Handlefig);'); uimenu(h,... 'Label', fullsize_lab,... 'CallBack', 'fullscreen(Handlefig);'); uimenu(h,... 'Label', normalsize_lab,... 'CallBack', 'set(Handlefig, ''position'', FigNormalSize);'); uimenu(h,... 'Label', snapshot_lab,... 'CallBack', 'snapshot(Handlefig);'); uimenu(h,... 'Label', refresh_lab,... 'Separator', 'on',... 'Accelerator', 'R',... 'CallBack', 'refresh(Handlefig);set(Handlefig, ''pointer'', ''arrow'')'); %==================================== % Modify Menu %==================================== h=uimenu(figNumber,'Label','Modify ', 'Accelerator','M'); uimenu(h,... 'Label',zoom_lab,... 'Tag', 'ZOOMITEM',... 'userdata', 1,... 'Accelerator','Z',... 'Callback','setzoomstatus'); resize = uimenu(h,... 'Label', resize_lab, ... 'CallBack','image_resize(''START'');'); rotate = uimenu(h,... 'Label',rotate_lab, ... 'Callback','image_rotate(''START'');'); flipper = uimenu(h,... 'Label',flip_lab); uimenu(flipper,... 'Label','Horizontal',... 'Callback','image_flip(''ORIZONTAL'');'); uimenu(flipper,... 'Label','Vertical',... 'Callback','image_flip(''VERTICAL'');'); uimenu(h,'Label',invert_lab, ... 'Callback','image_invert;'); uimenu(h,'Label',gray_lab, ... 'Callback','image_gray;'); uimenu(h,'Label',binary_lab, ... 'Callback','image_binary(''START'');'); uimenu(h,'Label',emboss_lab, ... 'Separator', 'on',... 'Callback','image_emboss'); uimenu(h,'Label',edge_lab, ... 'Callback','image_edge'); uimenu(h,'Label',perim_lab, ... 'Callback','image_perim'); uimenu(h,'Label',erode_lab, ... 'Callback','image_erode'); uimenu(h,'Label',dilate_lab, ... 'Callback','image_dilate'); uimenu(h,'Label',morph_lab, ... 'Callback','image_morph'); uimenu(h,'Label',median_lab, ... 'Separator', 'on',... 'Callback','image_median'); uimenu(h,'Label',wiener_lab, ... 'Callback','image_wiener'); uimenu(h,'Label',blur_lab, ... 'Callback','image_blur'); noise = uimenu(h,'Label','Add Noise'); uimenu(noise,'Label','White noise ',... 'Callback','image_wnoise'); uimenu(noise,'Label','Salt noise',... 'Callback','image_snoise'); uimenu(h,'Label',flatten_lab, ... 'Separator', 'on',... 'Callback','flatten_buttons(''START'');'); uimenu(h,'Label',recon_lab, ... 'Callback','image_recon(''START'');'); %==================================== % Analyze Menu %==================================== h=uimenu(figNumber,'Label','Analyze ', 'Accelerator','A'); cb='profile(''START'');'; uimenu(h,'Label',section_lab,... 'Interruptible','on',... 'Callback',cb); uimenu(h,'Label',contour_lab,... 'Interruptible','on',... 'Callback','image_contour(''START'');'); uimenu(h,'Label',hist_lab,... 'Interruptible','on',... 'Callback','imagehist;'); uimenu(h,'Label',stat_lab,... 'Interruptible','on',... 'Callback','image_stat(''START'');'); uimenu(h,'Label',count_lab,... 'Callback','countmolecules(''START'');'); uimenu(h,'Label',measure_lab,... 'Callback','measure(''START'');'); %==================================== % Extrafun Menu %==================================== if ~isempty(extrafun) nfun=size(extrafun,1); if nfun > 50 nfun = 50; end exf=uimenu(figNumber,'Label','ExtraFun ', 'Accelerator','x'); for i=1:nfun if i==26 & nfun > 26 exf=uimenu(exf,'Label','More... '); end exf_cbk=extrafun(i,1:find(extrafun(i,:) == '.')-1); exf_lab=lower(exf_cbk); exf_lab(1)=upper(exf_lab(1)); exf_lab = strrep(exf_lab,'_',' '); if length(exf_lab) > 24 exf_lab=exf_lab(1:24); end uimenu(exf,'Label', exf_lab,... 'Callback', exf_cbk); end end %==================================== % Colormaps Menu %==================================== h=uimenu(figNumber,'Label','Colormap ', 'Accelerator','C'); uimenu(h,'label','Brighten',... 'Accelerator','B',... 'callback','global map MapSize;setmap(brighten(map(1:MapSize,:),.25))'); uimenu(h,'label','Darken',... 'Accelerator','D',... 'callback','global MapSize;setmap(brighten(map(1:MapSize,:),-.25))'); uimenu(h,'label','Equalize',... 'callback','global Handleimg;setmap(histeq(get(Handleimg, ''cdata''),map))'); uimenu(h,'label','FlipUD',... 'callback','setmap(flipud(map(1:MapSize,:)))'); uimenu(h,'label','FlipLR',... 'callback','setmap(fliplr(map(1:MapSize,:)))'); uimenu(h,'label','Permute',... 'callback','setmap(map(1:MapSize,[2 3 1]))'); uimenu(h,'label','Randomize',... 'callback','setmap(rand(MapSize,3))'); uimenu(h,'label','Play',... 'callback','cmaps(''SPIN'')'); uimenu(h,'Label', modifymaps_lab,... 'Enable', onoff(exist([AlexDir 'icol'])),... 'Callback', 'cmaps(''modify'');'); uimenu(h,'Label', loadmaps_lab,... 'Separator', 'on',... 'Callback', 'cmaps(''load'');setmap(getmap);'); uimenu(h,'Label', savemaps_lab,... 'Callback', 'cmaps(''save'');'); uimenu(h,'Label', defaultmaps_lab,... 'Callback', 'cmaps(''default'');setmap(getmap);'); % Colormaps Menu %==================================== % Options Menu %==================================== OptMenu = uimenu(figNumber, 'Label','Options', 'Accelerator','O'); LineStyleMenu = uimenu(OptMenu, 'Label', ' Line Style'); LineWidthMenu = uimenu(OptMenu, 'Label', ' Line Width'); PenColorMenu = uimenu(OptMenu, 'Label', ' Pen Color'); FillColorMenu = uimenu(OptMenu, 'Label', ' Fill Color'); FontMenu = uimenu(OptMenu, 'Label', ' Font', 'separator', 'on'); StyleMenu = uimenu(OptMenu, 'Label', ' Style'); SizeMenu = uimenu(OptMenu, 'Label', ' Size'); uimenu(LineStyleMenu,'Label','_______','Checked','on','UserData','-', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''-'');']); uimenu(LineStyleMenu,'Label','.......','UserData',':', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', '':'');']); uimenu(LineStyleMenu,'Label','_ _ _ _','UserData','--', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''--'');']); uimenu(LineStyleMenu,'Label','_._._._','UserData','-.', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''-.'');']); uimenu(LineStyleMenu,'Label','o o o ','UserData','o', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''o'');'], 'separator', 'on'); uimenu(LineStyleMenu,'Label','+ + +','UserData','+', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''+'');']); uimenu(LineStyleMenu,'Label','x x x','UserData','x', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''x'');']); uimenu(LineStyleMenu,'Label','* * *','UserData','*', 'Callback',[checkoff checkon 'setoption(''LINESTYLE'', ''*'');']); uimenu(LineWidthMenu,'Label','0.5 point','UserData',0.5, 'Checked','on','Callback',[checkoff checkon 'setoption(''LINEWIDTH'',.5);']); uimenu(LineWidthMenu,'Label','1.0 point','UserData',1.0, 'Callback',[checkoff checkon 'setoption(''LINEWIDTH'', 1);']); uimenu(LineWidthMenu,'Label','2.0 point','UserData',2.0, 'Callback',[checkoff checkon 'setoption(''LINEWIDTH'', 2);']); uimenu(LineWidthMenu,'Label','4.0 point','UserData',4.0, 'Callback',[checkoff checkon 'setoption(''LINEWIDTH'', 4);']); lwmo=uimenu(LineWidthMenu,'Label','Other','Callback', ['global lwmo;' checkoff checkon 'op=setoption(''LINEWIDTH'', 0);set(lwmo,''userdata'', op+(op==0)/2)']); uimenu(PenColorMenu,'Label','Yellow','Fore', 'y','UserData',[1 1 0], 'Checked','on','Callback',[checkoff checkon 'setoption(''PENCOLOR'', ''y'');']); uimenu(PenColorMenu,'Label','Violet','Fore', 'm','UserData',[1 0 1], 'Callback',[checkoff checkon 'setoption(''PENCOLOR'', ''m'');']); uimenu(PenColorMenu,'Label','Cyan','Fore', 'c','UserData',[0 1 1], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''c'');']); uimenu(PenColorMenu,'Label','Red','Fore', 'r','UserData',[1 0 0], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''r'');']); uimenu(PenColorMenu,'Label','Green','Fore', 'g','UserData',[0 1 0], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''g'');']); uimenu(PenColorMenu,'Label','Blue','Fore', 'b','UserData',[0 0 1], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''b'');']); uimenu(PenColorMenu,'Label','White','Fore', 'w','UserData',[1 1 1], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''w'');']); uimenu(PenColorMenu,'Label','Black','Fore', 'black','UserData',[0 0 0], 'Callback', [checkoff checkon 'setoption(''PENCOLOR'', ''k'');']); pcmd=uimenu(PenColorMenu,'Label','Define...','Interruptible','on','Callback', ['global pcmd;' checkoff checkon 'op=setoption(''PENCOLOR'', ''DEFINE'');set(pcmd,''userdata'', op)']); uimenu(FillColorMenu,'Label','Yellow','Fore', 'y','UserData',[1 1 0], 'Checked','on','Callback',[checkoff checkon 'setoption(''FILLCOLOR'',[1 1 0]);']); uimenu(FillColorMenu,'Label','Violet','Fore', 'm','UserData',[1 0 1], 'Callback',[checkoff checkon 'setoption(''FILLCOLOR'',[1 0 1]);']); uimenu(FillColorMenu,'Label','Cyan','Fore', 'c','UserData',[0 1 1], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[0 1 1]);']); uimenu(FillColorMenu,'Label','Red', 'Fore', 'r','UserData',[1 0 0], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[1 0 0]);']); uimenu(FillColorMenu,'Label','Green','Fore', 'g','UserData',[0 1 0], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[0 1 0]);']); uimenu(FillColorMenu,'Label','Blue','Fore', 'b','UserData',[0 0 1], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[0 0 1]);']); uimenu(FillColorMenu,'Label','White','Fore', 'w','UserData',[1 1 1], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[1 1 1]);']); uimenu(FillColorMenu,'Label','Black','UserData',[0 0 0], 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',[0 0 0]);']); fcmd=uimenu(FillColorMenu,'Label','Define...','Interruptible','on','Callback', ['global fcmd;' checkoff checkon 'op=setoption(''FILLCOLOR'', ''DEFINE'');set(fcmd,''userdata'', op)']); uimenu(FillColorMenu,'Label','None','UserData','none', 'Callback', [checkoff checkon 'setoption(''FILLCOLOR'',''none'');']); % Font Menu fontfile = fopen([AlexDir 'sys.fnt'],'r'); if(fontfile == -1) error('Can''t read file ''sys.fnt'''); end fontname = fgetl(fontfile); while(fontname ~= -1) uimenu(FontMenu,'Label',fontname, ... 'UserData', fontname,... 'Callback',[checkoff checkon 'setoption(''FONTNAME'',''' fontname ''');']); fontname = fgetl(fontfile); end fclose(fontfile); set(findobj(Handlefig, 'label', 'Helvetica'), 'Checked', 'on'); % Style Menu uimenu(StyleMenu,'Label','Plain','UserData', 'Normal', 'Checked','on','Callback', [checkoff checkon 'setoption(''FONTSTYLE'',''plain'');']); uimenu(StyleMenu,'Label','Italic','UserData', 'Italic', 'Callback', [checkoff checkon 'setoption(''FONTSTYLE'',''italic'');']); uimenu(StyleMenu,'Label','Oblique','UserData', 'Oblique', 'Callback',[checkoff checkon 'setoption(''FONTSTYLE'',''oblique'');']); uimenu(StyleMenu,'Label','Light','UserData', 'Light', 'Callback', [checkoff checkon 'setoption(''FONTSTYLE'',''light'');']); uimenu(StyleMenu,'Label','Demi','UserData', 'Demi', 'Callback', [checkoff checkon 'setoption(''FONTSTYLE'',''demi'');']); uimenu(StyleMenu,'Label','Bold','UserData', 'Bold', 'Callback', [checkoff checkon 'setoption(''FONTSTYLE'',''bold'');']); % Size Menu uimenu(SizeMenu,'Label','6','UserData', 6, 'Callback', [checkoff checkon 'setoption(''FONTSIZE'',6);']); uimenu(SizeMenu,'Label','9','UserData', 9, 'Checked','on', 'Callback', [checkoff checkon 'setoption(''FONTSIZE'',9);']); uimenu(SizeMenu,'Label','12','UserData', 12,'Callback', [checkoff checkon 'setoption(''FONTSIZE'',12);']); uimenu(SizeMenu,'Label','14','UserData', 14, 'Callback', [checkoff checkon 'setoption(''FONTSIZE'',14);']); uimenu(SizeMenu,'Label','18','UserData', 18, 'Callback', [checkoff checkon 'setoption(''FONTSIZE'',18);']); uimenu(SizeMenu,'Label','24','UserData', 24, 'Callback', [checkoff checkon 'setoption(''FONTSIZE'',24);']); smo=uimenu(SizeMenu,'Label','Other','Callback',['global smo;' checkoff checkon 'op=setoption(''FONTSIZE'',0);set(smo,''UserData'', op)']); %==================================== % Help Menu %==================================== h=uimenu(figNumber,'Label','Help ', 'Accelerator','H'); uimenu(h,'Label',index_lab,... 'Accelerator', 'H',... 'Callback','alexhelp;'); uimenu(h,'Label',mfile_lab,... 'Callback','edit_mfile;'); uimenu(h,'Label',about_lab,... 'Callback','alexlogo(1);'); uimenu(h,'Label',prefs_lab,... 'Interruptible','on',... 'Separator', 'on',... 'UserData', 'off',... 'Callback','preferences(''START'');'); return