マク〜

その他

間違いなく、日本で最も質のいい Apple ニュースサイトだった。

Español Traducción

作ったもの

取り消す - Tiger の 切り捨て

macOS 開発

iTunesVolume 1.2 で Tiger を切り捨てたが、ドイツの方から苦情が来た。彼にはいろいろとお世話になっているので使えなくなるのは申し訳ない...
どうしようもないので Tiger をサポートする方針に戻すことにした。

Tiger を切り捨てた理由は前にも書いた通り、

  1. 環境設定ウインドウの表示に NSViewController を使用
  2. ZMHUDControls での描画に NSGradient を使用

するためだった。どちらも Leopard で追加されたクラス。

1 に関しては、NSViewController と同じ働きをするクラス "ZMViewController" を自分で作って対処。意外と簡単にできた。

2、Tiger 以前でグラデーションを実現したければ CTGradient を使う必要がある。

CTGradient に NSGradient と同じメソッドをカテゴリで実装。
しかし、問題が発生。NSGradient と CTGradient で結果が異なるのだ。

使用する NSColor の透明度がすべて同じときは問題ないのだが、異なる透明度のものを使用すると互いに違う結果になってしまう。(画像は [NSColor colorWithDeviceWhite: 1 alpha: 0] と [NSColor colorWithDeviceWhite: 1 alpha: 1] で作ったグラデーション。)

どうすべきだろうか...

MobileMe のバグ?

Mac ソフトウェア

最近アップロードしたページ、Safari で問題なく見れていたのだが Google 検索での結果を見ると

なぜか「ファイルタイプ:不明」と表示されていた。

今日 ZMHUDControls の、ほかの Mac での動作を確認しようとサブマシンの PowerBook G4 を久々に起動させて ZMHUDControls のページにアクセス(このマシンのみ Safari でなく Firefox をメインブラウザにしてる)したら

こんなダイアログが表示されて、なぜか HTML ファイルをダウンロードして保存しようとする。

HTML ファイルのヘッダが間違っているのかと思って文法チェッカでチェックしてみたら、多くのミスを発見。修正してアップロード。

だが、それでも状況は変わらなかった。Safari ではしっかり表示するのに Firefox はファイルとして保存しようとする。

そういえば、これらのページには共通点が。
いつもは Finder から iDisk を使って Sites フォルダにアップロードするのだが、問題の起こるファイルだけ MobileMe のページの「iDisk」を使って Sites フォルダにアップロードしていたのだ。
Finder からアップロードし直してみるとしっかり表示された。

...MobileMe のバグ?
MobileMe のページで転送する方が Finder を使うより速度が速いので直るといいな。

影、復活

macOS 開発

「アプリケーションウインドウ」Exposé を実行したときにウインドウの影が消えてしまう問題の解決法を発見。

ここによると、NSWindow のウインドウレベルをデスクトップのレベル(kCGDesktopIconWindowLevel)以下にしたときに発生する問題で、あるウインドウのタグをいじれば解決するらしい。

いつからか自分の Mac でも起こっていてちょっと気になっていた。
zumuya のソフトでウインドウレベルをデスクトップ以下にしているもの... そう、iTunesVolume。

setLevel: をオーバーライドして簡単に解決できた。

-(void)setLevel: (NSInteger)toLevel
{
    [super setLevel: toLevel];
    [self CGSetExposeFade:  (toLevel > NSNormalWindowLevel)];
}

-(void)CGSetExposeFade: (BOOL)flag
{
    CGSWindow wid = [self windowNumber];
    CGSConnection cid = _CGSDefaultConnection();
    int tags[2];
    tags[0] = tags[1] = 0;
    OSStatus retVal = CGSGetWindowTags(cid, wid, (CGSWindowTag*)tags, 32);
    if (!retVal) {
        if (flag){
            tags[0] = tags[0] | 0x00000002;
            retVal = CGSSetWindowTags(cid, wid, (CGSWindowTag*)tags, 32);
        } else {
            tags[0] = tags[0] & 0x00000002;
            retVal = CGSClearWindowTags(cid, wid, (CGSWindowTag*)tags, 32);
        }
    }
}

iTunesVolume 1.2

作ったもの

iTunesVolume 1.2 をもうすぐリリース。前のバージョンからちょうど一ヶ月。

Tiger の切り捨て

Tiger では動かなくなった。自分もサブマシンの iMac は Tiger なのでちょっと困る。
それでも Leopard で追加された API を使いたかったのだ。

新しい HUD コントロール

HUD コントロールに ZMHUDControls を使うようになった。
これも NSGradient を使っているので Leopard 専用。

スライダーの新機能

スライダーのつまみをドラッグすることで「次へ」「前へ」が操作できるようになった。

つまみを下の方にドラッグしてからカーソルの進んだ方向によって操作が変わる。
スライダーにできる操作が増えたのは久しぶりだ。

いい加減、これを「音量調節スライダー」と書かれることがなくなるといいな。

iTunes がアクティブのときフローターを表示しない設定

曲をいろいろ変えてるときに出てくるのは邪魔だった。iTunes Store でいろいろ選んで視聴してるときとか。

アートワークが非表示のときデスクトップがクリックできなくなる問題の修正

コンテキストメニューがすっきり

プレイリストメニューの階層も浅くなった。長過ぎるプレイリスト名は省略するように。

この方法で。Deprecated だって?...キニシナーイ!

TotalTunes Controls スキンへの対応

TotalTunes Controls 用スキンをアートワークアピアランスとして使用できるようになった。

でも正直、あまりいいデザインのものがないと思ったり...
全部の iTunes コントローラが一つの形式のものを使うようになればいいのに。

プラグインを追加できるようになった。

詳細は後日。

フローターで曲の長さを表示

右上にさりげなく表示。(↑このアートワークがフローターで表示したとき一番きれいに見える。)

最近「曲の年を表示できるようにしてほしい」なんて要望があるけど、作者はこれ以上表示項目を増やしたくない。
(このソフトの)フローターは「曲が変わったことを知らせる」ためのインターフェイスであって、「曲の情報を知る」ためのものではない。作曲者や年など、詳しい情報が知りたいときは情報ウインドウを使ってほしい。
と英語で反論したいのだが英語力が...

フローターの継続時間を変更できるように

言われた。確かに長過ぎた。

環境設定ウインドウの内部変更

使われるビューがそれぞれ独立した nib ファイルになった。

プラグインに対応するしくみをつくるために必要だった。
Leopard で追加された NSViewController クラスを使ってる。切り替えるビューを作るのにぴったりだ。

調べていて見つけたのでメモ:NSViewController を発展させたしくみをいろいろ考えてる記事が。英語だけどなかなか読み応えがありそう。アプリケーションはこのままシングルウインドウ化していくのかな...

個人的に Photoshop だけはマルチウインドウのままでいてほしいのだが。

ZMHUDControls 1.0

macOS 開発

とりあえずリリース。ここからダウンロードできる。

思ったより実用的かも。

ソースコードも含んでいるので、ぜひ参考に。あまりテストしていないので他の環境で正しく動くかどうか怪しい。

組み込んでみた

macOS 開発

いい感じだと思う。

とりあえず、ここに ZMHUDControls の TestApp を置いてみたので気になる人は動作確認を。
この Mac でしかテストしていないので他の Mac で動くかどうか怪しい。

いい感じ

macOS 開発

ZMHUDControls、細かい調整をした。必要な部品はそろっているので、とりあえず iTunesVolume に組み込んでみる。

ちょっと困る

この Web サイト

このページを作るのに使っている RapidWeaver の仕様のようなのだけど、月が変わると RSS でそれまでの記事が新着として再び登場してしまう。今のところ防ぐ方法を知らない...

増えた (2)

macOS 開発
© 2005-2021 zumuya