CLCLで重宝している機能の一つが、クリップボード内のテキストを整形するテキスト処理機能です。正確には、tool_textというプラグインをインストールすることで、利用できるようになるものです。
履歴メニューを右クリックすると、さらにメニューが表示され、様々なテキスト処理を行えます。
- 日時変換
- 大文字/小文字変換
- 日本語文字コード変換
- 引用符付加/除去
- テキスト整形
- テキストの挟み込み
- 改行の除去
- テキストの連結
- テキスト編集
エディタの置き換え機能などを使わずに、定型作業を行えるというのは、大変便利なものです。PTHPasteboardでは、おそらくフィルタがこれに該当するのでしょう。
こういった機能をClipMenuでも実現する方法を、いくつか考えてみました。
- Objective-Cで実装
- OgreKitを採用して、正規表現を使用
- RubyCocoa や PyObjCを採用して、RubyやPythonを使用
- WebKitを採用して、JavaScriptを使用
1番目は、ユーザーの手で自由に追加できないので却下。
2番目は、正規表現だけですべてをこなすというのは難しそうなので、同じく却下。
3番が、本当は望ましかったんですが、二つの理由で残念ながら却下になりました。
まず、ドキュメントをざっと見て、実現可能かどうかが分からなかったこと。RubyやPythonからCocoaを利用する例ばかりで、Objective-Cからオブジェクトをスクリプト言語に渡して、結果をまた受け取る方法を見つけられませんでした。
また、RubyCocoaやPyObjCの両方が標準搭載されているのが、Mac OS X v10.5だけというのもネックでした。両方とも、オープンソースで誰でもダウンロードして入手できますが、わざわざインストールしてもらう訳にもいきません。
そういう理由もあり、WebKitのJavaScriptエンジンを利用してみることにしました。Mac OS v10.3.9以降なら、何の追加インストールも必要ないのも魅力です。
それに、思いのほか便利にできています。Objective-CとJavaScriptの間でオブジェクトをやり取りする際は、自動的に型変換を行ってくれます。さらに、JavaScriptに渡したオブジェクトの、Objective-Cで書かれたメソッドを、JavaScript側から呼び出すこともできるようです。Dashboardのプラグインを思い出しました。
「ユーザーが、自由にテキスト加工コマンドを追加可能」をコンセプトに、今後のバージョンアップで実装する予定です。
ネトランという雑誌にソフトが掲載されるということで、編集部関係の方からお知らせをいただきました。
「へぇ〜、最近はMac用のソフトも扱ってるんだ」と思いつつ、メールを読み進めると、掲載予定ソフトの名前は、
なんだ、そっちかぁ。2年前に作った、Windows用ソフトでした。
しかし、こういう種類のソフトがネトランに掲載されるというのは、少し意外な感じもします。イメージは、「落とす」とか「ぶっこぬき」といった感じだったので。
ちなみに、このソフトのMac版が、my first cocoa appだったりします。未公開でしたが。
複数のクリップボード履歴をとるソフト、ClipMenuのバージョン0.1.1をリリースしました。
変更点はこちら:
- メニューのフォントサイズ変更に対応。
- メニューに表示する文字列を、トリムしてから表示するように変更。
- メニューの表示文字数に、小さすぎる値を入れた際に、正常に動作しない問題を修正。
ご要望のあった、メニューのフォントの大きさを変えられるようにしてみました。メニューのアイコンサイズに合わせてフォントサイズを変える方法と、ポップアップメニューから好きなサイズを選ぶ方法の2種類の設定を用意しました。
サイズは、最小9ポイントから、最大96ポイントの範囲から選べます。
ただし、初期状態ではオフになってますから、サイズを変更したい方は、設定画面でチェックボックスにチェックを入れてください。
フリーウェアですから、お気軽に試してみてください。
ダウンロードはこちらです。
» ClipMenu
Apache + mod_rewrite環境で、web.redirectメソッドを使うと、スクリプト名を含んだURLになってしまって困っていました。
たとえば、
http://example.com/blog/search
から、blogのルートディレクトリにリダイレクトさせようと、web.redict(’/')を実行すると、
http://example.com/blog/
になって欲しいのに、
http://example.com/blog/code.py/
になってしまうのです。スクリプト名を見せたくないからmod_rewriteを使っているのに、これでは意味がありません。
例によって、ググってやっと見つけたヒントがこちら。
web.redirect – web.py | Google Groups
Apacheの環境変数に、REAL_SCRIPT_NAMEを設定すればよいようです。ただ、”/path/to/site”に何を入れれば良いのか分からなかったので、さらにGoogle Groups内で検索。
Calling web.redirect(’/'), the url goes to …:8001 – web.py | Google Groups
こちらのスレッドに従って、REAL_SCRIPT_NAMEに空白を設定してみます。
import os os.environ['REAL_SCRIPT_NAME'] = ''
すると、
http://example.com/blog/search
からのリダイレクトが、
http://example.com/
に変わりました。確かに、URLにスクリプト名は出なくなりました。ただ、リダイレクトして欲しいのは、blogディレクトリなので、少し修正。
import os os.environ['REAL_SCRIPT_NAME'] = '/blog'
これで、望み通りの動作になりました。web.py | Google Groupsに感謝です。
各所で、ClipMenuをご紹介していただきました。どうもありがとうございます!
- 新しもの好きのダウンロード ~Mac フリーソフト新着情報~
- ClipMenu – soundscape out
- ClipMenu 0.1.0 : PISCES
- Macの手書き説明書 | ClipMenu
- ClipMenu (クリップボードの機能拡張)
- マック アップ サーチ:詳細:ClipMenu
- 覚え書き@kazuhi.to: links for 2008-01-06
搭載したい機能も、まだまだありますし、これからも着実にバージョンアップしていきたいと思います。
Cocoaアプリの制作が一段落付いたので、前々から懸案事項だったWebフレームワーク探しを開始。フレームワークの導入で、ホームページ管理の手間を少しでも減らしたいところです。
選ぶに当たってのポイントは、さくらインターネットのCGI環境で実用的な速度で動くことが、まず第一。あとは、なるべく軽量でシンプルなものならなお良い。
今検討しているのが、web.py。Pythonで書かれたフレームワークです。本当は、Rubyで書かれたRamazeにしたかったけど、CGIでうまく動かない&情報が少ないため断念。
Pythonは、以前『みんなのPython』を読んだときに試して、あまり積極的に使いたいとは思ってませんでした。ただ、年末に『Pythonチュートリアル』を借りて読んでみたら、前ほど拒絶反応がでなかったので方針変更。慣れなんでしょうか?
とりあえず、CGIでの動作確認、テンプレートの使用、MySQLからのデータ読み出しまでは試してみた。スッキリしているのは、好印象。エラーメッセージが、なんだか読みづらい気もするけど、やはり、慣れか?
いろいろハマったうちの一つが、これ。’/www/.python-eggs’に書き込めないとかいうエラー。MySQL for Pythonを使おうとすると、引っかかるみたい。web.pyのHTTPサーバーで動かしていたときは出なかったんで、困った。
ググってみたところ、Apacheの設定にSetEnvで’.python-eggs’を追加すれば良いらしいけど、さくらではその設定は許可されていない。
改めてGoogle.comで調べなおしたら、英語の掲示板で答えを発見。
import os os.environ['PYTHON_EGG_CACHE'] = '/home/username/.python-eggs'
Pythonスクリプト側で環境変数を設定してあげれば良かったんですね。また一つ、勉強になりました。


Recent Comments