百度空间 | 百度首页 
 
查看文章
 
利用IDL程序自动添加ENVI菜单
2009年05月15日 星期五 01:00

       最近老修改ENVI菜单配置文件menu.men的方式对ENVI添加自定义函数的菜单项,那次忽然发现有个补丁竟然能自动添加menu,今天无意中发现,ENVI自身有个ENVI_DEFINE_MENU_BUTTON。
       是这么定义的,如扩展功能函数名称为Envi_file_info,event,那么只需添加个功能过程PRO Envi_file_info_define_buttons, buttonInfo,然后菜单的添加工作就可以在这个过程下完成了。
       ENVI_DEFINE_MENU_BUTTON的调用格式如下:ENVI_DEFINE_MENU_BUTTON, ButtonInfo [, /DISPLAY], $ EVENT_PRO=string | /MENU | UVALUE=string [, POSITION=long integer or string] [, REF_INDEX=long integer] [, REF_UVALUE=variable], REF_VALUE=string [, SEPARATOR={0 | 1 | -1}] [, /SIBLING], VALUE=string
; 其中
; Display-是创建在主菜单还是显示菜单
; VALUE -菜单的显示信息 -必须的
; UVALUE -必须的
; EVENT_PRO-程序事件名称
; Menu- 是否为菜单
; REF_INDEX-如REF_VALUE不唯一则可用此来设置
; REF_VALUE -作为parent的已存在菜单名
; SIBLING -是否创建同级菜单
; ...

+++看一个例子

PRO Envi_file_info_define_buttons, buttonInfo

; 创建主菜单-在Basic Tools菜单前后
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '自定义菜单after', $
    /MENU, REF_VALUE = 'Basic Tools', /SIBLING, POSITION = 'after'
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '自定义菜单before', $
    /MENU, REF_VALUE = 'Basic Tools', /SIBLING, POSITION = 'before'
   
;创建子菜单
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '功能都有了,添加点儿啥呢?', $
    uValue = '', $
    event_pro ='Envi_file_info', $
    REF_VALUE = '自定义菜单before'
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '确实不好加!', $
    uValue = '', $
    event_pro ='Envi_file_info', $
    REF_VALUE = '自定义菜单before'
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '加分隔线咋样?', $
    uValue = '', $
    event_pro ='Envi_file_info',$
    REF_VALUE = '自定义菜单before' , $
    /SEPARATOR
ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '后来的,加个塞', $
    uValue = '', $
    event_pro ='Envi_file_info', $
    REF_VALUE = '自定义菜单before', POSITION = 'first'   
   
;创建显示菜单
ENVI_DEFINE_MENU_BUTTON, buttonInfo, $
    VALUE = '自定义菜单', $
    /Display, $
    /MENU, REF_VALUE = 'File', $
    /SIBLING, POSITION = 'after'
ENVI_DEFINE_MENU_BUTTON, buttonInfo, $
    VALUE = '更不知道加啥了', $
    UValue =' ', $
    /Display, $
    event_pro ='Envi_file_info', $
    REF_VALUE = '自定义菜单'  
   
END
;+
;:Description:
;    ENVI query image
; Author: DYQ 2009-5-15;
;
PRO Envi_file_info,event
; COMPILE_OPT STRICTARR

;选择文件
ENVI_OPEN_FILE, fname, r_fid=fid

;如无效则返回
IF fid[0] EQ -1 THEN BEGIN
    msg = DIALOG_MESSAGE('未打开文件或数据错误!',/Error)
    RETURN
ENDIF

;数据信息查询
ENVI_FILE_QUERY, fid, ns=ns, nl=nl, nb=nb, fname=fname
;提示
msg = DIALOG_MESSAGE('输入文件名:'+ fName + STRING(13B)+ $
    ';波段数:'+STRING(nb)+ STRING(13B)+ $
';大小:'+STRING(ns)+'*'+STRING(nl),$
/Information)

END

运行效果图如下


类别:Envi | 添加到搜藏 | 浏览() | 评论 (2)
 
最近读者:
 
网友评论:
1
2009年09月24日 星期四 09:32 | 回复
最近总是在手动添加菜单,重启程序,搞得很烦,对照帮助看了一遍,受益匪浅啊,谢谢博主!再问一下,手动改envi.men的话,如何添加 分割线呢
 
5
2009年09月24日 星期四 16:18 | 回复
回复cumtlp: 简单啊你对照men文件看看ENVI菜单下的分隔符在哪里不就得了。
1 {Open External File} {separator}
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu