Nov 10, 2006

OpenOffice.orgのツールバーとかにズームイン・ズームアウトの機能を加える

OOoの何が使いにくいって、編集画面の拡大縮小が面倒な事。MS OfficeやFirefoxは、「今より1段階拡大」「今より1段階縮小」という感じで簡単に表示倍率を変えることができる。しかしOOoではいちいち「ズーム」ダイアログを開いて拡大率を指定して確定してやらなきゃいかん。面倒臭いったらありゃしません。

まあその代わり、OOoではCtrl-ホイール回転で画面を拡大縮小できるというメリットがある(少なくともうちにある古いMS Officeではできない)から、プラスマイナス0と言うこともできるけど。

「ツール」の「カスタマイズ」でメニューやツールバーのカスタマイズ画面を開いて、追加できる機能の中の「表示」カテゴリを見てみたら、「拡大(ズーム拡大)」「縮小(ズーム縮小)」という項目があったので、これで目的が達成できるか?と思ってさっそく配置してみたけど、WriterとCalcではボタンが常にグレイアウトされてうんともすんともいわんし、Impressでは拡大ボタンを押しても何も起こらんわ縮小ボタンを押すといきなり半分の拡大率になるわ(変化が急過ぎるよ!)で、ふんだりけったりな結果にしかならんかった。

マクロで拡大縮小の操作を記録させればもしかしたらいけるかも、と思って試してみたけど全然訳の分からんマクロが出力されてお手上げ。

さらにマクロについて調べていたら、どうやらcom.sun.star.viewだかViewSettingsサービスだかいうやつのZoomValueというプロパティをいじってやれば良いらしいということが分かった。でもどうすればこのプロパティにアクセスできるのかが分からない。本を見ながらブレークポイントを設定してオブジェクトツリーをたどってみて、どうにかWriterとCalc/ImpressとのそれぞれでのZoomValueプロパティへのアクセス方法が分かった。

というわけで見よう見まねで書いてみた「現在の状態からちょっとだけズームイン/ズームアウトする」マクロが、以下の物。言語はOpenOffice.org BASICです。


REM ********* for Writer **********
sub ZoomIn
  dim viewSettings   as object
  viewSettings   = ThisComponent.CurrentController.ViewSettings
  viewSettings.ZoomValue =  viewSettings.ZoomValue * 1.2
end sub

sub ZoomOut
  dim viewSettings   as object
  viewSettings   = ThisComponent.CurrentController.ViewSettings
  viewSettings.ZoomValue =  viewSettings.ZoomValue / 1.2
end sub

REM ********* for Calc and Impress **********
sub ZoomIn2
  dim controller   as object
  controller   = ThisComponent.CurrentController
  controller.ZoomValue =  controller.ZoomValue * 1.2
end sub

sub ZoomOut2
  dim controller   as object
  controller   = ThisComponent.CurrentController
  controller.ZoomValue =  controller.ZoomValue / 1.2
end sub

使い方は以下の通り。

  1. 「ツール」→「マクロ」→「マクロの管理」→「OpenOffice.org Basic...」と辿って、マクロ管理画面を開く。
  2. 「マイマクロ」→「Standard」→「Module1」を選択して、「編集」ボタンをクリック。
  3. マクロエディタが起動するので、上のマクロをそのままファイル末尾に貼り付けて保存。
  4. Writer、Calc、Impressそれぞれの「ツール」→「カスタマイズ」で、ツールバーの「標準」やメニューの「表示」を選択。
  5. 「保存場所」で「OpenOffice.org Writer(Calc/Impress)」を選択。ここで現在のドキュメントを選択すると、そのドキュメント固有のマクロになってしまうので、要注意。
  6. 「ズーム」の項目の下あたりに、「追加」ボタンで新しく項目を挿入。カテゴリー「OpenOffice.orgマクロ」→「マイマクロ」→「Standard」→「Module1」と辿って、Writerの場合は「ZoomIn」と「ZoomOut」を、CalcとImpressの場合は「ZoomIn2」と「ZoomOut2」を選択し、「追加」ボタンを押して挿入する。
  7. ツールバーの場合、項目を選択して「変更」ボタンをクリックし、ポップアップから「アイコンの変更」を選択すれば、ツールバーボタン用のアイコンを設定できる。一覧の中からズームイン・ズームアウト用っぽいものを見つけて適当に選択すればよい。

これで、ホイールマウスがないときでもいつでも拡大縮小し放題です。やっと積年の恨みを晴らせました(意味不明)。次はキーボードショートカットの定義の仕方でも調べますかね。

なんか、初めてMozillaの拡張機能を作ったときのことを思い出した。右も左も分からん、そもそも言語のことすら全然知らない状態で、既成のコードを見ながら文法を少しずつ把握していく、あの不安感。目的としているAPIに関する日本語の資料も皆無で、英語の資料やソースコードを見ながら見よう見まねのトライアンドエラーで探り当てていくという、果てしなく不毛な作業。ああ、これは萎えるわぁ……それにもめげずに初期のMozillaやOOoを支えてきた人達ってやっぱすごいと思った。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能