IDL界面程序直接调用envi菜单对应功能
参考自http://blog.sina.com.cn/s/blog_764b1e9d010115qu.html
参考文章的方法是构建一个button控件,通过单击实现,这种方法比较复杂,不是我们经常能用的的,我们希望在程序中直接控制相当于单击了菜单的操作,下面就是实现方法。
一、背景知识:
ENVI的菜单系统,包括主菜单和显示窗口菜单,是由ENVI安装目录下menu目录下的envi.men和display.men这两个ASCII码文件定义的。Windows系统上menu的路径为itt\idlxx\products\envixx\menu。
envi.men文件定义了ENVI主菜单中的选项,display.men文件定义了显示窗口菜单中的选项。每次ENVI启动的时候,这两个文件被读入并根据其内容构建ENVI的菜单。在菜单中添加内容,只需在这两个文件中添加相应的内容并重启ENVI即可。
使用任何文本编辑器就可以打开envi.men文件。在文件的顶部有些介绍的注释文本。注释结束后,就是如下的文件的结构:
0 {File}
1 {Open Image File} {open envi file} {envi_menu_event}
1 {Open Vector File} {open vector file} {envi_menu_event}
1 {Open Remote File} {open remote file} {envi_menu_event}
1 {Open External File} {separator}
2 {Landsat}
3 {Fast} {open eosat tm} {envi_menu_event}
每一行开始的数据定义了菜单项的层次。0表示最顶层,1表示一级子菜单,2表示二级子菜单,如此类推。
{Open Image File}第一个大括号的部分定义了显示在菜单上的内容。
{open envi file}第二个大括号的部分定义了为菜单项所赋给的用户值(uValue),基于用户值可以判别哪个菜单项被点击了。
{envi_menu_event}第三个大括号定义了菜单项事件处理程序的名称,即编写的用户函数名。该处使用的是函数名,而不是用户函数所在的文件名,所以没有后缀。
二、应用
以envi下的统计功能为例,调用时首先明确菜单内容,如下:
|
; 1 {Statistics} {separator} ; 2 {Compute Statistics} {compute file stats} {envi_menu_event} ; 创建button时,
|
创建按钮时,{Compute Statistics}代表是value,{compute file stats} 代表uvalue, {envi_menu_event}代表的是event_pro。
模拟单击完整代码如下:
|
pro uvalue='compute file stats' base = widget_base() butt_ok = widget_button(base, uvalue=uvalue) sevent={widget_button,ID:butt_ok,TOP:butt_ok,handler:butt_ok,select:1} envi_menu_event,sevent end |
IDL界面程序直接调用envi菜单对应功能的更多相关文章
- 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码
直接拨号.将电话号码传入拨号程序.调用拨号程序.调用系统浏览器浏览网页.调用系统程序查看联系人.显示系统设置界面和显示Wi-Fi设置界面代码 拨打号码的代码如下: Intent callIntent= ...
- [AIR] AIR 应用程序的调用和终止
本节讨论几种对已安装的 Adobe® AIR® 应用程序进行调用的方法,以及关闭运行中的应用程序的选项和注意事项. 注: NativeApplication.InvokeEvent 和 Browser ...
- Unity开发Android应用程序:调用安卓应用程序功能
开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...
- Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)
文章目录: 1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...
- 在桌面Linux环境下开发图形界面程序的方案对比
在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...
- Quartz(GUI)图形界面程序----Quartz Web
下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用 ...
- Java界面程序实现图片的放大缩小
Java界面程序实现图片的放大缩小.这个程序简单地实现了图片的打开.保存.放大一倍.缩小一倍和固定缩放尺寸,但是并没有过多的涵盖对图片的细节处理,只是简单地实现了图片大小的放缩. 思维导图如下: 效果 ...
- pyinstaller打包PySide2写的GUI程序,调用ffmpeg隐藏CMD控制台解决方案
1 问题描述 使用PySide2写了一个GUI程序,调用ffmpeg命令行工具,做简单的批量视频处理(调整帧宽度.帧高度.视频变速.降低视频码率达到限制视频大小),使用了ffmpeg. ffmpeg- ...
- Python编写的桌面图形界面程序实现更新检测和下载安装
在Python中我们有很多种方案来编写桌面图形用户界面程序,譬如内置的 Tkinter .强大的 PyQt5 和 PySide2 ,还有 wxPython .借助这些或内置或第三方的模块,我们可以轻松 ...
随机推荐
- idea建立web项目servlet映射的地址/jsp访问不到
用IntelliJ IDEA 2017新建了一个web项目,成功运行后servlet mapping的地址一直访问不到 原因:在配置tomcat的时候Server中Open browser选项勾选之后 ...
- Genaro Network —— 区块链3.0缔造者
在2018年1月26日硅谷密探在美国旧金山艺术宫成功举办了“Blockchain Connect Conference”.在大会上,Genaro Network 联合CEO Jason Inch 携同 ...
- java追加写入txt文件
整理了下网上的资料,数据追加写入txt文件有三种方式,见下面代码: 方法一: public void method1() { FileWriter fw = null; try { //如果文件存在, ...
- Paxos Made Simple【翻译】
Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...
- struts2 的自定义 拦截器
Struts2的 拦截器: 对于拦截器,Struts2官方给出的 定义是: 拦截器是动态拦截Action调用的对象.它提供了一种机制,使开发者可以定义一段代码,在Action执行之前或者之后被调用执行 ...
- Python之旅:流程控制
流程控制之if...else 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定 ...
- bzoj 2809
2809: [Apio2012]dispatching Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4519 Solved: 2329[Submi ...
- HDU 6230
Palindrome Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tota ...
- python 文件读写,打开 未完。。。
导入库 os库 import os 获取当前目录 os.getcwd() 切换目录 os.chdir('路径') 打开写入文件 import osos.getcwd()os.chdir('E:\\ ...
- [转]extern与头文件(*.h)的区别和联系
用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字? 如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx. ...