2009-08-26 18 views
2

如何爲Linux控制檯(不是X,但是「終端」控制檯)創建一個對話框小部件,該小部件在可能是菜單列表或文本框的小部件旁邊顯示秒數?爲linux終端創建一個倒計時對話框菜單框?

理想的情況下,這可能是一個獨立的程序,比如對話,即提供的參數來控制其行爲。

當倒計數達到0時,將返回小部件的選定值。如果沒有人存在(或者人更喜歡默認值),那麼可以有一個默認值。像grub和lilo這樣的引導裝載程序已經可以做到這一點了,差不多。我查看了對話框手冊頁,並找不到此功能集。

到目前爲止已經試過:

dialog --timeout 30 --menu 'Menu Title' 20 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C'接近,但它並不顯示30秒計時器滴答下來。

dialog --pause 'Hurry!' 10 60 30 --示出了消息和OK /取消與定時器運行,但僅是間質而不是用於用戶輸入。

是可能的多行結合這樣的:

dialog --menu 'Menu Title' 10 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C' --pause 'Hurry up' 10 60 30 

但示出了窗口小部件順序,而不是結合在一個頁面上。在這裏,在沒有定時器的情況下應答菜單後,你會收到帶有定時器的消息。

回答

1

我相信Ncurses是你在找什麼。

+0

謝謝你的回覆。爲了編碼,我同意。我希望有人已經做到了。 – Paul 2009-08-26 06:36:04

2

我建議你閱讀dialog手冊頁。哦,你已經做了,你說?那麼有什麼不對:

--pause文本高度寬度秒

停頓框顯示沿框的底部一米。儀表指示在暫停結束之前剩餘多少秒鐘。當達到超時或用戶按下OK按鈕(狀態OK)或用戶按下CANCEL按鈕或Esc鍵時,暫停將退出。

+0

感謝您的指點,將我的注意力引向了這一點。但是,暫停是顯示消息,倒計時和確定/取消的小部件。它不是其他小部件的屬性或修飾符。所以它不會實現倒計時的菜單。 - 超時30會爲菜單添加30秒超時,但沒有任何進度跡象。 – Paul 2009-08-26 06:33:45

3

要堅持使用對話框我已經通過將其分成兩個對話框來解決類似的問題。首先會出現一個對話框,其中顯示了屏幕上顯示的默認值(以及可選的替代選項),並且該對話框具有倒數計時器。用戶可以按esc或按取消更改選項,或者倒計數到達0,程序將繼續執行默認設置。如果用戶點擊逃生,則會出現第二個對話框,允許編輯選項。我不想在deb-live/clonezilla自定義操作系統版本中添加更多的軟件,所以我不得不通過對話來找到一種方法。

dialog --title Some options to choose from, showing default --pause "\n\n Do you accept these options?: \n ${options_in_nice_format_for_display}" 20 60 5 
[ $? -ne 0 ] && EDIT_IP=true || EDIT_IP=false 

if ${EDIT_IP}; then 
    dialog --editbox ${MY_OPTIONS_FILE} 20 60 2> ${EDITED_OPTIONS_FILE} 
fi 

對於一個更好的解決方案(我已經使用,但並不想在此處添加多餘的代碼),直到用戶滿意你可以添加一個while循環條件的布爾並允許編輯的重複。