2011-10-27 75 views
1

Moose中,我希望每當用戶在任何文本窗格中按下Command-M時都會通知我的瀏覽器。在穆斯,我怎麼能通知一個特殊的按鍵?

我正在聽內部端口,等待任何事件。當按下Command-m時會出現一個文本事件,但它不包含命令-m被按下的事實。

爲了驗證,在駝鹿,加入這是第一條語句修改GLMExplicitBrowser>>innerPortEvent:

(aPortEvent port name asString beginsWith: 'select') ifFalse:[ aPortEvent inspect.]. 

現在運行在一個工作區中的以下內容:

|browser | 
    browser := GLMBasicExamples new textSelection. 
    browser openOn: (1 to: 100). 
    ((browser paneNamed: #start) port: #selection) value: 2. 
    ((browser paneNamed: #end) port: #selection) value: 5. 

你收到此通知,每當文本更改。如果按下Command-M,則不會收到通知。如果您接受修改後的文本,您會在文本端口上看到與常規文本更改無法區分的端口事件。 I.e .:你無法看到文本是否被接受!

如何獲得特殊按鍵和文字接受的通知?

回答

2

自定義用戶交互是通過動作來實現的。如果您有興趣影響瀏覽器(而不僅僅是執行一些外部動作),那麼您希望操作的邏輯影響演示文稿所在端口的值。

例如,如果對於你希望得到的系統中的所有方法的列表Command-M鍵,你就定義了行動: http://www.themoosebook.org/book/internals/glamour/actions

a text 
    "..." 
     populate: #selection 
     on: $m 
     entitled: 'Implementors' 
     with: [ :text :entity | "logic that retrieves the list of methods" ] 

你可以看到更多信息