现在的位置: 首页 > 综合 > 正文

以MAD为例学习ENVI编程

2014年11月10日 ⁄ 综合 ⁄ 共 2082字 ⁄ 字号 评论关闭

1、ENVI_DEFINE_MENU_BUTTON

IDL向ENVI自动添加自定义菜单

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

编写好的pro文件放在save_add文件夹下,然后重启idl+envi查看新菜单。

抱歉!评论已关闭.