InputMethodKit backporting component,以及 OpenVanilla 0.9 Oranje

從去年底 Mac OS X 10.5 Leopard 推出開始,在 Mac OS X 上開發輸入法軟體,勢必會面臨這樣一個問題-從 10.4 到 10.5 之間,作業系統所提供的輸入法架構有了重大改變,那麼,應該怎樣以經濟有效的方式,同時兼顧兩個不同的平台與架構?

OpenVanilla 專案的下一個版本 0.9 版(專案代號 Oranje),裡頭採用的 InputMethodKit backporting component(以下簡稱 IMK-Tiger),就是為了解決這個問題而生的實作。

Continue reading

Mondrianum 2 以及新的 Adobe kuler API

Mondrianum 2

我們今天推出了 Mondrianum 2.0 beta 1(下載)。

自從年初推出第一個版本的 Mondrianum 以來,一直到現在,其實之間並沒有多少的開發進度。主要原因是,在我們推出之後,就收到 Adobe 之後會修改 kuler API 的消息-既然 API 會修改,那麼 client 如果繼續實作其他功能,很有可能最後變成做白工;而 Adobe 修改 API,我們也就花了一些時間等,而 Adobe 終於改完了 API,我們也就終於有辦法做新的版本。

2.0 beta 1 這個版本主要在於使用新版的 kuler API,功能方面,還是基本上延續前一個版本的功能;不過,如果您之前便已經在使用 Mondrianum,您還是有更新到新版本的必要。Adobe 將會在本月 15 日終止舊版的 kuler API 服務,換言之,舊版的 Mondrianum 也會因此同時失效。

因為使用 kuler API,Mondrianum 2 多了一個新功能,便是以色找色。也就是,您可以直接輸入一組 RGB 顏色的 HEX code,例如您想要找橘色,知道這個顏色的 Hex code 是 FF9933,便可以在 kuler 服務中找到有這個顏色的配色設計組合。在 Mondrianum 中,則可以直接幫您將目前的顏色轉換成 HEX code,再自動搜尋。

新版的 kuler API 與舊版的另一個差異,在於提供分頁瀏覽。一如 kuler 網站目前的設計,在選擇某個瀏覽的分類(最新色票、最受歡迎的色票、最高分的色票、隨機色票)後,之前只能夠瀏覽第一頁的若干筆資料,現在則可以用前後箭頭繼續瀏覽排名較後面的色票。

不過,在 Mondrianum 中我們還沒有這方面的對應實作,因為,就一個快速選擇顏色的 color picker 而言,想不太出來像是「最高分的第十萬名的配色」的意義究竟何在…。

Continue reading

OpenVanilla 專案的近況

我們最近又修改了 OpenVanilla 專案的程式碼的一些地方,包括:

1. 新的偏好設定工具

我們最近整個重寫了 Mac OS X 版本的偏好設定工具。新的偏好設定中,一方面外觀有所不同,另一方面也簡化了各項設定的操作方式。比方說,我們將原本散落在三個 tab 中的各項設定,精簡集中在同一個 tab 上;如果您移除了、或是從來沒有安裝過某些模組,例如藏文輸入法等,也便不會顯示在設定頁面中。

在設定用來切換輸入法或啟用/停用輸出轉換模組的快捷鍵時,也改用像是「系統偏好設定」中設定快速鍵的方式,只要直接按下鍵盤上的按鍵組合便可完成設定,而不用從下拉選單中慢慢選擇某組設定。

Picture 1

Picture 2

2. 程式碼的重整

我們重新整理了 Mac OS X 版本的模組載入器(Loader)以及 CocoaVanilla Framework 的程式碼,大幅改寫了原本不安全的部份。例如,我們在呼叫外部應用程式時(例如叫出偏好設定程式),我們改呼叫 Cocoa 提供的 API,而不是呼叫 system() 函式。

3. 文件工作

因為許多開發者的需求,我們也開始著手撰寫開發者文件。因為這個專案主要使用 C++ 與 Objectve-C 語言開發,所以我們使用 headerdoc 作為我們的文件工具。

我們已經在 OpenVanilla.h 這個檔案中加入了相當的註解-OpenVanilla.h 是 OpenVanilla 專案最重要的一份定義,包括撰寫一套 OpenVanilla 模組所需要使用的各種物件定義與函式。如果您使用 Mac OS X、安裝了 Xcode,也從我們的 svn repository 中取得了一份 OpenVanilla 的程式碼,便可以直接使用 headerdoc2html,從各個 header file 中,產生 HTML 格式的說明文件。

4. 開發環境與工具

接下來,我們會只使用 Mac OS X 10.5 SDK 以及 Xcode 3 或是更新版本的 Xcode,開發 OpenVanilla。我們會開始使用一些原本在 10.4 SDK 所沒有的 API 以及檔案格式,例如,前述的新版偏好設定工具,介面上就全部使用 xib 檔案,而不是使用 nib 檔案。

我們還是會繼續推出供 10.4 使用的版本,但是,如果您想要自行編譯 OpenVanilla,或是加入開發行列,您必須在 Mac OS X 10.5 Leopard 使用 Xcode 3,而無法使用 Xcode 2.5 或是其他較早版本開啟專案檔案。

沒有完成的事情還有太多太多,但是我們是會繼續努力。

Continue reading

Leopard 的 Garbage Collection

從 10.5 Leopard 開始,Mac OS X 開始支援 Objective-C 2.0 語言,其中一項賣點就是支援一套 Garbage Collection 系統。於是,以後寫 Obj-C 程式的時候,就不用注意每一個產生的物件到底是會 autorelease 還是要自己 release,不用注意是不是有哪些物件忘記 release,從此寫程式不用顧及記憶體的問題,世界從此又變得更為光明美好…

才怪。

這兩天的測試結果,大概發現了幾件事情:首先,雖然 Leopard 支援 GC,但是系統中大部份的應用程式,還是透過非 GC 的方式寫出來的,但是,就是有軟體是用 GC 狀態下寫的,例如 Xcode 3,在這類的軟體中,就會出現這樣的問題:在 Leopard 上面編成了使用 GC 的應用程式,也只能夠載入透過 10.5 SDK 編譯出來的各種 plugin,而如果 plugin 裡頭又用到了非 GC 的 Class,那麼,這個 plugin,就足以造成應用程式 crash…。

就拿 Xcode 3 來說好了。基本上,Xcode 3 也不能夠載入多少 plugin,但是我偏偏寫了一個可以讓 Xcode 3 載入的 plugin,就是前面說到的 ColorBy.ColorPicker 這個 Color Picker;而一般來說,寫程式好像也不太需要一天到晚挑顏色,但是我這個 Color Picker 就好死不死,就是打算寫給 Xcode 用的。而如果你妄想著這一個 Color Picker 還可以在 Tiger 上與 Leopard 上都可以使用,所以用 10.4u SDK 編,你可以在所有其他應用程式中看到你的 Color Picker,但,很抱歉,就是不會出現在 Xcode 3 裡頭。

至於在 Leopard 上面,可能在程式裡頭,用到什麼哪些沒有支援 GC 的東西呢?至少 IKImageFlowView 就不支援;換言之,如果你想要在 Color Picker 上面做出 Color Flow 效果,就等著在某些應用程式裡頭爆炸。而 Apple 官方也只有在 Finder 與 iTunes 裡頭用到 Cover Flow,也就是,官方也還只有在 Carbon 程式裡頭用 Cover Flow 啊…。

(順道一提。想來,Color Picker 也應該能夠拿來做一些有趣的壞事,在整個作業系統中,可以在所有應用程式裡頭都用到的東西,除了輸入法之外,就是 ColorPicker。)

colorBy.colorPicker

colorBy.colorPicker

下載 0.1 版:http://zonble.googlecode.com/files/colorBy.colorPicker.0.1.zip

.colorPicker 是副檔名,不過,軟體的全名就叫做 colorBy.colorPicker,意義是:「從 colorPicker 產生 color」。簡單講,這是一個給 Cocoa Developer 用的 Color Picker,幫你把你選到的顏色,轉換成 NSColor 程式碼。下載解壓之後,將 colorBy.colorPicker 放到自己目錄下的 ~/Library/ColorPickers 目錄,或是 /Library/ColorPickers 目錄;之後,只要在任何 Cocoa 軟體中,打開 Color Picker,就可以看到多出一個分頁。點選分頁即可使用。目前只有在 Leopard 上面試過,照理說 Tiger 也能用。

Continue reading