Objective-Cでアラートダイアログを出してみる

とりあえずAppleScriptでいうアラートダイアログをObjective-Cでも出してみようということで、

1.ボタンを押すとアラートダイアログが出現。

2.どれかボタンを押すと押した内容がテキストフィールドに出る的なものを作ってみた。

これはバージョンで出来る出来ないあるのかな。。
とりあえず環境は毎度同じなXcode4.2です。

 
職業柄、変数名などはできるだけAppleScriptに近いような表現がいいかな?ということで
そういう名前にしています。
プロパティの設定もJavaScriptに近いほうがわかりやすいかなと、
selfを使った表現にしています。
わかりずらくなってたらごめんなさい。
 

– (IBAction)Button:(id)sender {
NSAlert *AlertDialog =[NSAlert
alertWithMessageText:@”アラートダイアログてすと”
defaultButton:@”OK”
alternateButton:@”Cancel”
otherButton:@”Other”
informativeTextWithFormat:@”どれかボタンをおしてください。”
];

switch([AlertDialog runModal]){
case 1:
self.TextField.stringValue=@”OKだよーー”;
break;

case 0:
self.TextField.stringValue=@”Cancelだよーー”;
break;

case -1:
self.TextField.stringValue=@”Otherだよーー”;
break;
}

}

Objective-Cで利用できるframeworkについて

Objective-Cを勉強するにあたって、
「書きながら覚えよう」
ということでこのブログにかきかきしながら知識を深められたらなってことで、
基本的なライブラリの「Cocoaフレームワーク」で利用できるクラスなどを

ひとつづつ読み解いてこちらにまとめていこっかななんて思っています。
↓↓↓↓↓↓↓↓↓↓↓
Objective-Cで利用できるframework
こりゃ、、先はながいね、、、、。

ASOC(AppleScriptObjC)とTextFieldと私

前回はASOCでボタン用のハンドラ作って
IllustratorのJavaScript動かすのをやってみたけど

今度はWindow上のTextFieldにAppleScriptから文字を出力するようなものをつくってみようとおもう。
まずはいつもどおりMainManu.xibのウィンドウにテキストフィールドとプッシュボタンをObjectLibraryからドラッグして配置

AppDelegate.applescriptの

property parent : class “NSObject”の下あたりに
property TextField : missing value
の1行を追加してプロパティTextFieldを宣言。
missing valueは初期化されていない値(AppleScript)
Objective-Cのnilのかわりらしい。
初期化みたいなものかな。

そして前にやったようにプッシュボタン用のハンドラPushButtonを用意。

on PushButton_(sender)
end PushButton_

そしてApp DelegateのConnections inspector(右クリックでもでる)の
OutletsにTextField
Received ActionsにPushButton
が追加されているはずなので

TextFieldからウィンドウ上のテキストフィールドに
PushButtonからウィンドウ上のプッシュボタンにドラッグすると
接続完了。
接続できるとこんな感じになるとおもう↓

接続ができたらプッシュボタン用のハンドラPushButton内に
下の一行を追加

set stringValue of TextField to “へろーわーるど”
AppleScriptの文法で
TextFieldのstringValueに文字列「へろーわーるど」をセットするっていうことですね。

on PushButton_(sender)
set stringValue of TextField to “へろーわーるど”
end PushButton_

これで完成。

実行!!


無事プッシュボタンをクリックすることでウィンドウ上のテキストフィールドに「へろーわーるど」が表示されました。

たいしたことやってないけど積み重ねだよね。(たぶん
ちょっとずつがんばっていこー。

関係ないけどなぜかWordPlessでのプラグインWP SyntaxHighlighterが使えなくなった。
WordPlessの更新のせいかな、、、

Objective-Cでカラー指定してみよう!っと

テスト環境
Mac OS X 10.6.8
Snow Leopard
Xcode4.2

今回はObjective-Cでのカラー指定についてじっけん
とりあえずは簡単そうなウィンドウの背景の色を青に変えてみよう、、ということで
グーグルさんに聞いてみて
どうやら定義済みのカラーがあるので(blueColorなど、、)
self.window.backgroundColor.backgroundColor = [UIColor blueColor];
という感じで指定してみた。

。。。

エラー。。。

じゃあ数値指定!
self.window.backgroundColor = [UIColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:1.0];

。。。

エラー。。。

わけわかんなくなったので
Xcode上でフレームワークのフォルダの階層をほじくってみると。。
どこまでほじほじしてもUIColorクラスなんてない。。。。。。

でもよく見ると

AppKit Frameworkの中に
NSColorてクラスを発見。
ためしに、、
UIColorのところをNSColorに変えてみる。

self.window.backgroundColor.backgroundColor = [NSColor blueColor];

おおおおおおお変わりました!
変わりました!やった、、、実はここまで2時間くらいかかった。

そのあと、色々しらべてみると。
UIKit Framework:iOSのGUI機能をあつかうフレームワーク
AppKit Framework:Mac OSXのGUI機能をあつかうフレームワーク
というふうに分かれてるとのこと、、

なのでとりあえずUIなんちゃらってクラスを見かけたらiOS用だって考えてもいいのかな、、

■定義済みの色
blackColor
blueColor
brownColor
clearColor
cyanColor
darkGrayColor
grayColor
greenColor
lightGrayColor
magentaColor
orangeColor
purpleColor
redColor
whiteColor
yellowColor

そして今度は数値、数値指定に挑戦。
今度は赤にしてみよう。
RGBの数値指定の場合
Red:レッド
green:グリーン
blue:ブルー
alpha:透明度
に0〜1.0までの数値で指定する
1.0は100%ってことでいいと思う

self.window.backgroundColor = [NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:1.0];

これはすんなり。。
色々調べたらシアンとかマゼンタとかも指定できそうなので
もしかしてCMYKもいける??
とほんとにカンで下の感じで書いてみた
とりあえずDTPで馴染みの色、金赤を指定してみる
シアン0% マゼンタ100% イエロー100% ブラック0% にしたいので

self.window.backgroundColor = [NSColor colorWithDeviceCyan:0.0 magenta:1.0 yellow:1.0 black:0.0 alpha:1.0];

おお!!これもできた!うれしい。

とりあえず今回はここまで。

ASOC(AppleScriptObjC)からIllustrator JavaScriptを実行してみた

Objective-Cの勉強でもんもんしてきたため息抜きに
ASOC(AppleScriptObjC)からIllustrator JavaScriptを実行してみた。(げんじつとーひ

AppleScriptとObjective-Cの「悪魔合体」のことをちまたではASOCってよぶらしいよ!
今回はIllustrator JavaScriptも合体させて「三神合体」とでもよぼうか。。(どーでもいい

よーはCocoaからAppleScriptを実行して、さらにIllustrator JavaScriptを実行しようというわけ。。

問題はXcode上でJSXファイルを他のファイルと同じところにぶっこんだらどうなるかってことなんだけど、、

ためしにぶっこむ!
そしてビルドして生成されたファイルのパッケージの中身を覗いてやると
思ったとおりResourcesフォルダにはいってるらしい。

なのでアプリケーションのフォルダのパスを
path to current application
で調べて
Contents:Resources:
もつけてやればたぶんOKかなと、、、

on AiScript_(sender)
	set ScriptPath to ((path to current application) & "Contents:Resources:") as string&"AiScript.jsx"
	tell application "Adobe Illustrator"
		activate
		do javascript file ScriptPath
	end tell    
end AiScript_

こんな感じのハンドルを作ってXcodeからボタンに割り当てるようにしてみたよ。
そして実行!


ほーーらね。無事Illustrator JavaScriptが実行されましたよ!
めでたしめでたし。
わーいわーい。

かんたんなのはこれでできるねw(手抜き感ぱなーい)