Home>History>

2005.07-12

2005.12.25

QuickDMG 2.0.3 を公開しました。

フォルダやファイルから手早くディスクイメージファイルを作ることができます。

  • package を 通常のフォルダと同じように扱ってしまう不具合を修正。ファイルと同じように扱います。

2005.12.17

ファイルの default application を変更するには・・・・

Finder の情報ウィンドウで設定できるファイルを開くアプリケーションの設定をプログラムからやりたかったのだけど・・・・方法が見つからない!!Finder や System Events の AppleScript 辞書にも、Launch Services や File Manager の API reference にも、それらしい物がない。誰か知っていらっしゃいましたら教えてください。

きっとできないんだろうな・・・・

2005.12.14

whichapp 1.0 を公開しました。

Unix シェル環境から Macintosh アプリケーションの場所を調べるコマンドラインツールです。シェルスクリプトで、Macintosh アプリケーションへのパスが必要なときに使ってください。

2005.12.13

神前さん、寄付ありがとうございました。

これで、7人目。本当にありがとうございます。これで食べていく訳ではないでが、非常に励みになります。

2005.12.07

GoFinder 1.0 を公開しました。

Finder で前面のウィンドウだけを最前面に持ってくる形で、Finder をフロントアプリケーションにします。スクリプトファイルの実行にショートカットキーを割り当てられるユーティリティー(DragThingKeyboard Maestroなど)に登録して使うと便利です。

多くの場合、作業中のフォルダは Finder で前面にあるかと思います。そのフォルダからファイルをドラッグ&ドロップしたいなどの理由で、通常の方法(Dock 内のアイコンをクリックするなど)でフロントアプリケーションを Finder に切り替えると Finder のウィンドウで画面が覆い尽くされてしまい、ドラッグ&ドロップ先が見えなくなってしまうこともしばしばかと思います。GoFinder を使えば、よけいな Finder Window で画面が覆い尽くされずにすみます。

おまけの機能として、Finder がフロントプロセスにある状態で GoFinder を実行すると、すべての Finder WIndow を前面に持ってきます。

2005.12.06

Show Project in Terminal 1.0 を公開しました。

Xcode の最前目のプロジェクトのフォルダを working directory としたターミナルを 開きます。僕はもっぱら CVS コマンドの実行に使っています。

Xcode 2.1 (MacOS X 10.4.3) と 拙作 SmartActivate が必要です。

以前、Show Project in iTerm という物を公開しておりました。iTerm だと複数のターミナルを一つのウィンドウにまとめられて画面スペースを節約するのにとても重宝しておりましたが、SmartActivate のおかげで必要なウィンドウだけを前面に持ってこられるようになったので標準のターミナル.app を使った物に作り替えました。

PayPal で donation(寄付)を受け付けられるようにしました。

大して寄付が集まる訳でもないのに、受け入れ口を増やしました。うまくいくかどうかわからないので、誰か試しに寄付してください・・・・。

2005.11.30

Miura さん、寄付ありがとうございました。

大して反響もなく(たいした作品を公開していないのが一番の原因かと思いますが) 、作品を公開する意義に疑問を感じることもしばしばですが、ささやかでもご支援いただけると励みになります。これで、6人目。

2005.11.29

QuickDMG 2.0.2 を公開しました。

フォルダやファイルから手早くディスクイメージファイルを作ることができます。

MacOS X ではディスクユーティリティーでディスクイメージファイルを作成できますが、とても煩雑な操作が必要です。QuickDMG を使えば、手軽にディスクイメージファイルを生成できます。

とくに、圧縮ディスクイメージファイルは Zip や StuffIt 形式の圧縮ファイルとは違い、「解凍しなくても中のファイルを開く事ができる」と言うという特徴がありますので、僕は、アーカイバとして利用しています。あまり開かないけど捨てる訳にも行かないファイル等の圧縮や、バックアップに最適です。

  • 保存場所に書き込み権限がない時のエラー処理を追加
  • MacOS X 10.4 で動作確認

2005.11.21

TerminalCommander 1.4 を公開しました。

ターミナルでのシェルコマンドの実行を支援するライブラリです。ターミナルウィンドウを追跡し、同じターミナルでのコマンドの実行、コマンドの終了の検出をする事ができます。

SmartActivate を使用して Terminal.app をactivate するときは、最前面のウィンドウだけにするようにしました。

2005.11.19

FileClipper 1.2.2 を公開しました。

クリップボード経由での、ファイルのコピー、移動、エイリアスファイルの作成を実現するアップルスクリプトです。OnMyCommandCMQuicksilver から起動して使うのがおすすめです。

  • DOS format のディスクからのコピーの際にコピー先に同じ名前があると、エラーが発生する不具合に対処
  • OnMyCommandCM の launcher command を OnMyCommandCM 1.7b1 の物に更新

あまり関係ないですが、OnMyCommandCM の設定を行う アプリケーション OMCEdit の最近の日本語へのローカライズは僕が担当しています。まあ、あまり大した事をしていませんけどね。

2005.11.16

Name List View 1.0.3 を公開しました。

最前面の Finder Window を「ツールバーの無い名前欄だけのリスト表示」に変更します。

  • フローティングウィンドウ(情報ウィンドウや表示オプションウィンドウ)を表示しているときにウィンドウのズームが行われない不具合を修正

2005.11.15

TeX Tools for mi 3.0.3 を公開しました。

  • PDF ファイルが存在しない状態でツール「PDF ファイルを開く」を実行するとエラーが発生する不具合を修正(天羽さんありがとうございました。)
  • カーソルが行頭にあるとき、「置換入力」を実行するとエラーが発生する不具合を修正
  • ターミナルの設定ファイル com.apple.Terminal.plist に異常があるときのエラー処理を追加(天羽さんありがとうございました。)
  • MacOS 10.4.3 での動作を確認しました。

2005.11.14

Name List View 1.0.2 を公開しました。

最前面の Finder Window を「ツールバーの無い名前欄だけのリスト表示」に変更します。

MacOS X 10.4.(3) でエラーが発生する問題に対処しました。MacOS X 10.4 の Finder には AppleScript のバグがあるようです。以下のコードが動作しません。

tell application "Finder"
set zoomed of Finder window 1 to true
end tell

この問題に対処するために UI Elements Scripting を使うようにしました。

ようやく、MacOS X 10.4 を導入しました。

2005.11.08

Open in Terminal 1.2 を公開しました。

Finder で選択されている場所が working directory になっている ターミナル を開きます。

SmartActivate のインストールが必要です。SmartActivate を使って、ウィンドウを1枚だけ前面に持ってくるようにしました。

2005.11.01

UnixScriptTools for mi 1.2.2 を公開しました。

  • MacOS X 10.4 との互換性を改善したつもり

未だ、MacOS X 10.4 に移行していませんので、自分でテストしていないですが、MacOS X 10.4 で動かない要因を一つなくしました。

2005.10.30

SmartActivate 1.0 を公開しました。

指定したアプリケーションプロセスを、そのアプリケーションで最前面のウィンドウだけを前面に持ってくる形でフロントプロセスに切り替えるスクリプティング機能追加と、コマンドラインツールです。

初めて作ったスクリプティング機能追加です。Objective-C のコードをスクリプティング機能追加にしようとしたのでえらく苦労してしまいました。というのも、コードに Objective-C が混じっている場合、ADC の document と sample code にしたがって素直に OSAX を作るとスクリプトエディタ等いくつかのアプリケーションが終了時にクラッシュするようになってしまいます。なんでこのようなことが起きるかと言うと、OSAX は Loadable Bundle としての側面があり、Objective-C を使った Bundle は unload できなくて、アプリケーションが終了時に unload しようとしてしまうのでクラッシュするという事のようです。

そこで、SAIsBusy() で常に true を返すようにして unload できなくさせました。しかしこうしてしまうと SATerminate() が呼ばれなくなります。そこで、atexit を使ってプロセスの終了時に SATerminate() を実行されるようにしました。

以上の情報は、すべて applescript-implementers mailing-list で質問したり、過去ログをあさったりして得た物です。

2005.10.11

FilterScripts for mi 2.0.3 を公開しました。

  • MacOS X 10.4 との互換性を改善したつもり
  • エラーが表示されない不具合を修正
  • 8KB 以上のエラー出力があると動作が止まってしまう不具合を修正

まだ、MacOS X 10.4 に移行していませんので、自分でテストしていないですが、MacOS X 10.4 で動かない要因を一つなくしました。あと、なぜか Interface Builder での nib ファイルのコネクションが切れまくっていましたが・・・誰も文句言って下さらないので、誰も困っていないのでしょうね。(いつもかつ、すべてがですが)自己満足アップデートです。

2005.10.04

Show Project in iTerm 1.0 を公開しました。

Xcode の最前目のプロジェクトのフォルダを working directory としたターミナルを iTerm で開きます。僕はもっぱら CVS コマンドの実行に使っています。

スクリプトメニュー等に登録して使って下さい。

close で window が release されるのはしょうがなくない?

よくよく考えたら、AppleScript Stuido 1.3(Panther)でも、Interface Builder で「Release when closed」を設定すれば、ウィンドウの close で release されるはず(たぶん)。すると、Panther でもウィンドウを release する手段はある訳です。

やっぱり、AppleScript Studio 1.4 で、window が close されると window が release されるという仕様変更は不可解です。

2005.10.03

close で window が release されるのはしょうがない?

AppleScript Studio 1.4 で、window が close されると window が release されるという仕様変更が、Panther と Tiger の間で AppleScript Studio アプリケーションの互換性に大きな影響を及ぼします。なんでこんな仕様変更をしたのかよくわからなかったのですが、よくよく考えれば Panther では window を release する手段は call method を使うしか無いのですね。

僕は window を release する必要があるアプリケーション(例えば書類を扱うもの)を作ってこなかったので気付きませんでしたが、書類 window は close されたら release されないとメモリリークになります。というわけで、AppleScript Studio 1.4 での仕様変更はしょうがない物なのかもしれないとおもうのですが・・・やっぱりガーベジコレクションとか、もっと良い解決策は無かったのかしら?

2005.10.01

TeX Tools for mi 3.0.2 を公開しました。

  • MacOS X 10.4 でエラーが発生する不具合を修正したつもり。
    • 僕は、未だ MacOS X 10.3.9 を使っているので直接確認した訳ではないですが、原田さんに確認いただいたところ(ご協力、誠にありがとうございました)問題なく動作しているようです。
  • 保存されていないファイルが最前面にある時にリファレンスパレットを表示するとエラーが発生する不具合を修正。
  • PDF プレビューアの設定に関するバグを修正。

MacOS X 10.4 での AppleScript Studio の仕様変更により、うまく動いていなかったようです。

AppleScript Studio 1.4 の Release Note には以下のようにあります。

In Tiger, the "Release when closed" NSWindow attribute in Interface Builder is not honored. The window object is always released regardless of how this attribute is set.

The workaround is not to close the window, but instead to hide it if you want to keep it around. You can do this by adding an on should close handler to your application as shown in the following example:

on should close theObject
  hide window "Main"
  return false
end should close

僕は、未だに MacOS X 10.4 に移行していないので以下の話はすべて推測ですが、TeX Tools for mi が上記の仕様変更が原因で Tiger では動作しなくなる可能性は分かっていました。しかし、言われた通りに on should close handler を追加するわけには行きませんでした。

というのも、Version 3.0 以降は機能の追加と将来の布石の為にウィンドウの制御はすべて Objective-C で行うようにしたからです。そして、すべてのウィンドウは NSWindowController の支配下に置きました。この場合、ウィンドウを close しても、ウィンドウは release されない、もしくは NSWindowController が良きに計らってくれると期待していましたが・・・・ 現実は甘くないようです。ウィンドウが表示されないという事は無いようなので、release はされないようですが、

[windowController close]

とすると、ウィンドウとその中身は AppleScript のことはきれいさっぱり忘れ、さらに AppleScript から姿を消すようです。たぶん、ウィンドウに close メッセージが送られると、release されなくてもそうなってしまうのでしょうね。

じゃあ、AppleScript Studio で hide に相当するメソッドは何なのか・・・Cocoa 歴がまだ半年ほどなのでなかなか分かりませんでした。

[[windowController window] orderOut:self];

とすれば、良いようです。さらに、NSWindowController のサブクラスを作って、windowShouldClose メソッドを override する必要があるでしょう。

- (BOOL)windowShouldClose:(id)sender
{
  [[self window] orderOut:self];
  return NO;
}

いずれも推測ですが、原田さんに試していただいた限りでは当たっているようです。

しかし、なんでこんな仕様変更がされたのでしょうね。素人の僕には、一見、改悪に思えます。なぜなら、AppleScript Studio と Objective-C が混在したアプリケーションを作る場合、Objective-C 側で AppleScript Studio の事をケアしてあげなければなりませんから。

FileterScripts for mi と UnixScriptTools for mi も同じ理由でエラーが発生するはずですが・・・何の報告も無いので利用者は皆無という事のようで・・・現実の厳しさを実感する今日この頃です。

2005.09.26

Rename PDF 1.0 を公開しました。

Acrobat で開かれている最前面の PDF ファイルのファイル名を変更します。 スクリプトメニュー等に登録して使って下さい。

2005.09.25

Close and Delete PDF 1.0 を公開しました。

Acrobat で開かれている最前面の PDF ファイルを閉じてゴミ箱に捨てます。 スクリプトメニュー等に登録して使って下さい。

斉藤さん、寄付ありがとうございました。

Open Scripts Folder 1.0 を公開しました。

スクリプトメニューで表示される最前面のアプリケーション用のフォルダを Finder で開きます。スクリプトメニューに登録して使って下さい。

2005.09.20

2005.09.16

2005.09.15

2005.09.10

2005.09.09

2005.08.24

2005.08.23

2005.08.21

2005.08.20

2005.08.19

2005.08.18

2005.08.17

2005.08.16

2005.08.15

2005.07.25