PocketMoneyViewer 0.14 Released
PocketMoneyViewer 0.14をリリースしました。変更点は、
- 残高列の追加 (thanks エヌ氏)
- ソートディスクリプタの保存
以上の2点です。ダウンロード
ご要望や苦情はコメントか@magical_eieiでお願いします。
- (id)initWithContentsOfBlogEntries:(NSArray *)blogEntries;
タグ ‘Mac’ の記事
PocketMoneyViewer 0.14をリリースしました。変更点は、
以上の2点です。ダウンロード
ご要望や苦情はコメントか@magical_eieiでお願いします。
C言語を使ってネットワーク経由でGrowlを制御してみた。
Growl SDKのBindingsにはC言語が入ってないんだよなぁ…
ネットワーク経由でGrowlを使うには
という手順を踏む。
Continue reading ‘ネットワーク経由でGrowlを制御’ »
前回までのlog(x)のグラフがつまらなかったので、今回からは散布図っぽい五芒星にしてみました。
core-plotで色を表すクラスはCPColorです。CPColorはCGColorのラッパクラスで単純な構造です。また、NSColor同様のコンビニエンスコンストラクタを持っています。
まずは、このCPColorとNSColorの相互変換クラス(CPColorTransformer)を作ります。IBのカラーウェルで直接CPColorを操作することを想定しているため、NSValueTransformerのサブクラスとしています。
次に、プロットに色をつけます。今回使用しているプロットCPScatterPlotでは、メンバ変数のdataLineStyle.lineColorにCPColorを持っています。このメンバに対してIBのカラーウェルで直接バインディングします。値変換には前に作ったCPColorTransformerを指定します。
Controllerの_hostingViewからCPScatterPlotの間にはNSArrayが入っているため、直接キーパスでバインディングすることができません*1。
そこで、Controllerにアウトレット(_plot)を追加します。それと、プロットを再描画させるためのアクション(reloadData:)も追加します。
_plotの追加にしたがって、実装部も変更します。
注意点としては、色変更後はreloadDataもしくはsetDataNeedsReloadingを呼び出す必要があります。今回のサンプルでは、カラーウェルのアクションをControllerのreloadDataに接続することによって自動的にreloadDataしています。
CPColorを保持してるCPLineStyleでは線の太さ(lineWidth)も保持しています。lineColor同様にIBのスライダにバインディングしてやると線の太さを簡単に変えることができます。
ソースからをSimpleGraph-1.2.tar.gzに置いています。
前回のグラフはラベルが見切れていて見栄えがよくありませんでした。今回は、このラベルの見切れを修正します。
ラベルの見切れを防ぐには、パディング*1を適切に設定する必要があります*2。パディングはCPLayerで定義されてるプロパティですから、その派生クラスで使用することができます。参考として、CPLayerから派生したクラスを右図に示します。
パディングは、上下左右を独立して設定することができ、それぞれpaddingLeft, paddingTop, paddingRight, paddingBottom(以下、まとめてpadding*とします)という名前になっています。
今回は、下と左が切れてるので、paddingBottom, paddingLeftを調整します。コードは以下のようになります。
これだけではおもしろくないので、対話的にパディングを変更させてみました。スライダ, テキストフィールドのバインド先はコントローラの_hostingView.hostedLayer.padding*です。
ソースをSimpleGraph-1.1.tar.gzに置いています。
次回は、グラフ*3に色をつけます。
core-plotはCocoaで2Dグラフを書くためのフレームワークです。以下のような特徴があります。
core-plotの概要を把握するためにHighLevelDesignOverviewの図だけでも眺めておくことをお勧めします。グッと理解しやすくなります*1。
今回は簡単なグラフを書きます。グラフの仕様は、
としています。
Controllerクラスの要点は以下の二つです。
コードは以下のようになります。
Controller.hをプロジェクトに追加したら、IBで画面設計します。
最終的にこんな感じになります。以上で画面設計は終わりです。
最後にControllerクラスの実装をおこないます。概要は、
という具合です。
dataSourceプロトコルはNSTableView等のdataSourceプロトコルと似た作りになっています。今回使用したのは、
手順は、
図にするとこんな感じです。
今回のソースコードを SimpleGraph-1.0.tar.gzに置いています。core-plotフレームワークも一緒についてるので、すぐにコンパイルできます。
次回は少しだけ見た目に手を入れたいと思います。
core-plotという素敵なフレームワークを発見した。でも、日本語の解説がない。というわけで、勝手に解説してみようと思う。まずは、core-plotのインストールから。
現時点でcore-plotはバイナリやtarballで配布されておらず、ソースコードを入手してから自分でコンパイルする必要がある。ソースコードはGoogle Codeから入手することができるが、Mercurialが必要となる。Mac OS XではMercurialは標準でインストールされていないため、自分でコンパイルするかMacPortsを利用してインストールする。
これでインストール完了です。次回は簡単なグラフを書きます。
Grand Central Dispatch試す前にボチボチとBlocksを調べ中。で、遊んでて面白いことに気付いた。以下のプログラムではブロックと入れ子関数は同じ振る舞いをするだろうと思っていたのだが、そうではなかった。(コンパイルするには-fnested-functionsオプションつけてください)
予想では
予想どうり動かそうとすると、
逆に言えば、
それから、ブロックの実体はCoreFoundationのオブジェクトのようでした。