OpenVanilla 透過 JavaScript 呼叫 Quartz Composition 製作介面的實做

OpenVanilla 輸入法專案開始嘗試透過 WebKit ,在 Mac OS X 上設計選字窗介面這件事情,從算是開始進行以來,也大概快要一年了,不過,大概從去年九月之後,似乎都沒有再去動過這部份的程式。

上個週末心血來潮,把之前的程式碼重新看了一下,一方面找到原本無法成功使用透明視窗背景的問題癥結,另一方面也參考了蘋果的開發者網站上的範例程式,搞清楚怎樣做出無框視窗。雖然距離告一段落、能夠正式釋出還有一段距離,不過,應該是比之前狀況,堪用得多。接下來,又繼續做了一些選字框介面的實驗。

所謂用 Webkit 製作選字框介面的意思是這樣的:在目前的 0.7.2 版上的選字窗,是先畫出一個視窗,然後直接在視窗上放一個跟這個視窗一樣大小的文字元件;而目前在做的事情則是,我們在選字框裡頭放了一個小小的網頁瀏覽器(也就是 Webkit),透過網頁方式呈現輸入法的候選字清單,方法是,Cocoa 可以從外部將 JavaScript 指令傳到 Webkit 瀏覽器中,所以,像更新選字窗內容、關閉選字窗這些事情,只要透過網頁技術完成即可。—透過不同的網頁樣式設計,便可以得到不同風格的輸入法使用介面,每一種不同的輸入法介面,也可以透過個別的 JavaScript 程式碼,設計不同的行為,甚至(因為是網頁嘛),在輸入法中,還可以呼叫 Flash 影片啦、Google 地圖啦…諸如此類。

或這麼說:你現在可以在 Dashboard 上看到的 widget,只要稍微改寫個幾行,就可以改成 OpenVanilla 的選字窗。反之,OpenVanilla 的選字窗,也可以放在 Dashboard 上。

從 Mac OS X 10.4 開始,提供了 Quartz Composer 這套視覺化的開發工具,用於可以方便的繪製各種使用者介面(官方的說法是開發工具,不過,我覺得,其實把 Quartz Composer 想成繪圖軟體就可以了)。用 Quartz Composer 製作出的 qtz 檔案(比較正式的說法是 Quartz Composition,或簡稱QC),除了可以嵌入用 Interface Builder 建立的使用者操作介面,拿來直接當成螢幕保護程式(像 Mac OS X 10.4 內建的那個 RSS 螢幕保護程式,其實就是一個 qtz 檔案)之外,也可以直接用 Safari 等以 Webkit 為基底的瀏覽器開啟,或是嵌入到網頁中。

從 10.4..7 版之後,蘋果也提供了一套用 JavaScript 控制嵌入在網頁中的 QC 的 API(參見 Quartz Composer Web Kit Plug-in JavaScript Reference);既然有這種東西,就試著拿來用用看,沒想到居然一下子就做出一開始料想不到的效果。

首先,很快的就做出了具備立體旋轉(還會一直改變顏色的)選字窗:

第一個實驗成功之後,又立刻墮入了魔道…

於是剛剛有人這麼提議:下一版就改名叫做「萌甜輸入法」好了…。

3 thoughts on “OpenVanilla 透過 JavaScript 呼叫 Quartz Composition 製作介面的實做

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.