Cocoa

GraphvizRでCocoaReplをグラフ化してみる

びっずびずに(以下略)・・・興味本位でCocoaReplのグラフ化してみた話。ソースを見るとReplControllerにインスタンス変数がたくさんあって楽しげ。でもインスタンスをどこからたどるかわからなかったのでObjectSpaceから無理矢理探してみた。 # 環境変数と…

フォントファミリとフォントの名前一覧

NSFontManagerを使うと、利用可能なフォントファミリーやフォントの情報が得られる。例えばヒラギノ一族の場合、 require 'osx/cocoa' include OSX fm = NSFontManager.sharedFontManager fm.availableFontFamilies.each do |family| if /Hira/ =~ family pu…

LimeChat for OSXのフォントを変更する

ソースを読む。やべえ鼻血でそうwとりあえずフォントのカスタマイズ機能がまだないみたいだったので、調べてみた。 /Application/LimeChat.app を右クリック→パッケージの内容を表示 Contents/Resources/log.rb をエディタで開く 38行目あたりを以下のよう…

Leopardメモ - CocoaReplが動かなくてはまる

ひ日誌 - CocoaRepl の便利なおまけ機能 Leopard解体新書--第1回:RubyCocoaでWebページ表示:スペシャル - ZDNet Japan 前から気になってたCocoaReplを使ってみるかあ、とXcode3.0を入れてビルドしてみたが、エラーとなってコンパイルができない。Xcode2.4に…

One-Click Installer + RubyCocoa

今までMacPortsのRubyだったけど1.8.6が出てないようなのでuninstall。 One-Click InstallerでRubyを入れてみた。 これだと/usr/localに入るのだが、RubyCocoaのパッケージは/usrの下に入るようだ。 環境変数にライブラリパス設定しないと動かないとかはいや…

ヒレガス本 第14章 レスポンダとキーボード・イベント

木下さんのCocoa本が出るとのことで、多少急ぎ気味。 Xcodeでバックスラッシュを押したつもりでも円マークが入力される。キートップにはたしかに円マークが印字されているが…。キーバインドにもなさそう? 困るなあ。とりあえずターミナルでバックスラッシュ…

ヒレガス本 第13章 イメージとマウス・イベント

他にいろいろ始めちゃったので久々。 NSViewの親のNSResponderに、イベント関係のメソッドが用意されている。mouseUpとかmouseDraggedとかmouseUpとか。引数はNSEventオブジェクトが渡されるので、ここから情報を取り出す。 NSEventのメソッド。locationInWi…

ヒレガス本 第12章 カスタム・ビュー

カスタム・ビューとNSBezierPathの簡単な使いかた。演習問題はこんなかんじ。 - (id)initWithFrame:(NSRect)frameRect { int i; NSPoint p; NSPoint p1, p2; if ((self = [super initWithFrame:frameRect]) != nil) { srandom(time(NULL)); path = [[NSBezie…

ヒレガス本 第11章 ローカライズ

特に難しいところはなかった。 今回少しつまづいたのは、Localizable.stringsを追加するところでファイル名を間違えてLocalizable.stringとしてしまったこと。この場合、名前を変更するだけでは文字列が読み込まれない。情報パネルから、ターゲットのタブを…

ヒレガス本 第10章 アラート・パネル

NSRunAltertPanel()でモーダル・ダイアログを出すことができる。演習問題はこんな感じ。switch case構文忘れてるし! - (IBAction)deleteEmployee: (id)sender { NSArray *a = [[tableView selectedRowEnumerator] allObjects]; int i; int choice; if ([a co…

ヒレガス本 第9章 通知の使用

NSNotificationCenterクラスで通知が管理される。defaultCenterメソッドでNSNotificationCenterオブジェクトが得られる。 addObserver:selector:name:objectメソッドでオブザーバを登録できる。このとき、どのイベントでどのイベントハンドラを呼びたいかを…

ヒレガス本 第8章 ユーザ・デフォルト

NSUserDefaultsクラスのクラスメソッドstandardUserDefaultsでデフォルトオブジェクトを得る。 registerDefaultsでデフォルトを登録する。ユーザの設定は、setObject:forKey等で保存する。 演習問題はこんな感じ。 - (IBAction)resetPreferences:(id)sender …

FlickrViewer.appの動画が

アップされていた。 ひ日誌(2007-05-01) RubyCocoaに惹かれてMacに移行してきたが、これでよかったのだと確信。追記:本筋とは関係ないがターミナルを半透明にして黒背景に白文字で全画面にする、ってのがよかった。

ヒレガス本 第6章 nibファイルとNSWindowController(2)

演習問題2でNSBundleを用いて明示的にパネルをロードするというところで詰まっていたが、わかってみれば単純。まずAppController.hに、Aboutパネル用のインスタンス変数と表示用のメソッドを追加する。 #import <Cocoa/Cocoa.h> @class PreferenceController; @interface Ap</cocoa/cocoa.h>…

ヒレガス本 第6章 nibファイルとNSWindowController

パネルを作るには、まずInterface Builderからnibファイルを新規作成し、パレットからパネルをどこでもいいからドラッグする。 Xcodeでファイルを新規作成し、NSWindowControllerのサブクラスとする。このクラスを、*.hファイルをnibウィンドウにドロップす…

ダイナミックObjective-C

メソッドの追加によるクラスの拡張 ここで、「既存のクラスにメソッドを追加」というところに注目してほしい。つまり、これを使うと、いまあるクラスの機能を拡張することができるのだ。自分で定義したクラスに限らず、Cocoaが提供するクラスも含めて、だ。 …

ヒレガス本 第6章 アーカイブ

Cocoaでの「アーカイブ」は、Javaとかで言う「シリアライゼーション」のこと。へー。 アーカイブ「する」側と「される」側で、それぞれ実装していく。「される」側では「プロトコル」を実装する。ふむふむ。Objective-Cの「プロトコル」はJavaとかでいう「イ…

ヒレガス本 第5章 ヘルパ・オブジェクト

まさかナイトライダーとロボコップが引用されるとは。 内容はTableViewの基本的な使いかたとかキー・バリュー・コーディングの話とか。セミナーのほうがよっぽど複雑だったので今回は余裕。練習問題1 - (void)tableViewSelectionDidChange:(NSNotification *…

ヒレガス本 第4章 コントロール

RaiseManプロジェクト、やった。 TextFieldには、フォーマッタをドロップ(アタッチ)することができる。これによって数値や日付でバリデーションが可能。へー。 NSWindowのアウトレットに、initialFirstResponderがある。これをコントロールに接続しておくと…

ヒレガス本 第3章 Objective-C

読んだ。 保持(参照)カウント、retainとかreleaseとか手動指定するのが基本のようだ。autoreleaseもあるけどautoreleaseを勝手に指定してくれるメソッドもあったりしてややこしい。このへんは覚えるしかないか。 昔お世話になったgdbに久々の御対面。こんな…

ヒレガス本

もう、あれこれ作りたいものが思いつくんだけど、ここはぐっと我慢。急がば回れ、と最初のサンプル、RandomApp。Mac OS X Cocoaプログラミング作者: アーロン・ヒレガス,村上雅章出版社/メーカー: ピアソンエデュケーション発売日: 2002/06メディア: 単行本…

チュートリアル

RubyCocoaでアプリ:indexを試してみた。環境はXcode 2.4とMacPortsで入れた下記パッケージ。 ruby @1.8.5_2 (active) rb-cocoa @0.4.3d2_0 (active) ちょっと記述が古くなっているものの、普通に作れた。 原文ではProjectBuilderを使うとなっているところは…

セミナー上級編(2)

怒涛のバインディング。典型的な3ペインアプリケーションが設定だけでほとんどできてしまうというお話。本格的(といっても他のツールをしらないので程度は不明だけど)なデータモデリングツールが無料でついてくるのはすごい。Macすごすぎ。

セミナー上級編(1)

Cocoaバインディング。このレベルになるとまさに部品と部品を接続するだけでアプリが作れてしまう感じ。このノリでRubyのGUIがぽいぽいっとつくれるのかな。楽しみ。

セミナー中級編(2)

簡易RSSリーダを作る、の続き。アウトラインビューを作って完成。Cの文法もほとんど忘れててぎりぎりついていけてる感じ。アウトレットとアクションの接続はちょっと慣れが必要だけどおもしろい。Interface Builderの「Interface」はGUIだけじゃなくてMVCの…

セミナー中級編

簡易RSSリーダを作る。テーブルビューのところまで。

セミナー初級編(2)

ぼくにもできたー(ジャイアント馬場ふうに)。

セミナー初級編

ADCの日本語ドキュメント まずは基本から、セミナー初級編。アウトレットの説明もこのとおり。

Ruby Rocks(1)

XcodeやらInterface Builderやらで苦戦。 Ruby Rocks | RubyCocoa Resources アウトレット(部品の接続口?)をつなぐ操作方法がわからなかった。正解はControlを押しながら部品をドラッグ。ここで手間取ったので続きはまた今度。

An Introduction to RubyCocoa

読む。 http://www.rubycocoa.com/an-introduction-to-rubycocoa 読んだ。だいたい雰囲気はわかった。 require 'osx/cocoa' sound = OSX::NSSound.soundNamed "Basso" sound.play rubyから呼び出すのはこんな感じ。OSX::を省略したければinclude OSXしておく…