ENVI二次开发应用:扩展补丁添加菜单

ENVI菜单添加方法有两种:
1.修改文件
在ENVI\menu\envi.men文件中添加如下部分:

-0{Myfunctions}
-0{Myfunctions}
-1{文件信息查看}{not used}{test_envi_file_info}
-1{文件多波段存储}{not used}{test_envi_file_sav}
举例文件中部分信息:
0 {Help} -----0表示最顶层菜单
  1 {Start ENVI Classic Help} {envi help} {envi_menu_event} ----1表示一级菜单,按1,2,3……菜单级别排列;
  Start ENVI Classic Help显示在菜单上的内容(注:使用中文会出现乱码)
  envi help是用户的自定义值部分,该值在同函数处理多个菜单项时有用,用来判断选中的菜单项;
  envi_menu_event是时间处理程序的名称,即用户名函数。需要注意这里使用的是用户名函数,而不是用户函数所在的文件名。
  1 {Mouse Button Descriptions} {mouse descriptions} {envi_menu_event}
  1 {About ENVI Classic} {about envi} {envi_menu_event}

2.ENVI_DEFINE_MENU_BUTTON函数
举个栗子(注:需要将代码程序发布为sav文件,把sav文件拷贝到save_add文件夹中,运行ENVI才会显示添加的菜单)
例1:

pro envi_hello_define_buttons,btninfo
  envi_define_menu_button,btninfo, $
    value = 'ENVI Hello', $
    uvalue = '', $
    event_pro = 'envi_hello', $
    ref_value = 'Band Math', $ ;在Basic Tools->Band Math之后添加菜单ENVI Hello
    position = 'after'
end

pro envi_hello,event ; envi_hello事件,固定格式 :xxx,event。xxx表示事件名
    envi_select,fid=fid
    if fid eq -1 then return
    envi_file_query, fid, ns=ns,$
    nl=nl,nb=nb
    ns = strtrim(ns,2)
    nl = strtrim(nl,2)
    nb = strtrim(nb,2)
    info = '行数:' + ns +string(13B)+ $
      '列数:'  + ns +string(13B)+ $
      '波段数:' + nb
      result = dialog_message(info, /question, $
        title='信息描述',/default_no)
end

例2:

pro read_awx_define_buttons,buttonInfo

  envi_define_menu_button, buttonInfo,  $
    value='程序添加菜单',$
    /menu,$
    ref_value='自定义菜单',/sibling, $
    position='after'
    
  envi_define_menu_button, buttonInfo,  VALUE = 'read_AWX', $
    uValue = '', $
    event_pro ='READ_AWX', $
    ref_value = '程序添加菜单'
   
    envi_define_menu_button, buttonInfo,  VALUE = '信息提示', $
    uValue = '', $
    event_pro ='mymenu_event1', $
    ref_value = '程序添加菜单'
    position=1
 
end

pro mymenu_event1,event

  tip1=dialog_message('ENVI自定义菜单',/info)

end

;AWX文件解析程序
pro read_awx,event
  compile_opt strictarr
  ;获取ENVI默认设置参数
  cfg = envi_get_configuration_values()
  ;默认数据打开目录
  inPath = cfg.default_data_directory
  ;对话框选择文件
  file = dialog_pickfile(path = inPath, $
    filter ='*.awx',title ='选择AWX文件')
  ;判断文件是否存在
  if file_test(file) ne 1 then return
  ;打开文件
  openr, file_lun, file ,/Get_Lun
  ;定位到信息部分
  point_lun,file_lun,20
  HeadLine =indgen(3)
  readu,file_lun,HeadLine
  ;定位到信息部分
  point_lun,file_lun,58
  BeginDate=indgen(5) ;依次为年月日时分
  EndDate =indgen(5)  ;依次为年月日时分
  ;读取
  readu,file_lun,BeginDate
  readu,file_lun,EndDate
  descriptionStr = '起始时间:'+strjoin(strtrim(BeginDate,2),'-')+$
    '结束时间:'+strjoin(strtrim(EndDate,2),'-')
  ;定义数据
  data = bytarr(HeadLine[2],(HeadLine[0]))
  ;定位到数据部分
  point_lun,file_lun,HeadLine[0]*HeadLine[1]
  readu,file_lun,data
  ;关闭文件lun
  free_lun,file_lun
  ;设置ENVI内容
  envi_setup_head, fname=file, $
    ns=headLine[2], nl=HeadLine[0], nb=1, $
    DESCRIP=descriptionStr, $
    interleave=0, data_type=1, $
    offset=HeadLine[0]*HeadLine[1], /write, /open
end
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值