IDL界面程序直接調用envi菜單對應功能


參考自http://blog.sina.com.cn/s/blog_764b1e9d010115qu.html

參考文章的方法是構建一個button控件,通過單擊實現,這種方法比較復雜,不是我們經常能用的的,我們希望在程序中直接控制相當於單擊了菜單的操作,下面就是實現方法。

一、背景知識:

ENVI的菜單系統,包括主菜單和顯示窗口菜單,是由ENVI安裝目錄下menu目錄下的envi.mendisplay.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 menu_example,sevent

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

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM