Xcode上で作成するAppleScriptアプリケーションで、ダブルクリックとコンテクストメニュー表示を受け入れるボタンのプロジェクトの試作品です。
–> Download Xcode Projext (doubleClick v2)
ボタンでシングルクリックを受け付けるのは簡単ですが、ダブルクリックを受信するためには、少し手間がかかります。まして、コンテクストメニュー表示は、、、、、
この試作品では、クリックされたボタンを識別できていません。ダブルクリックされたボタンのTagとか、コンテクストメニュー表示させたボタンのTagを取得できるように改変したいところです。
こうした(↑)テーマセレクタで、ダブルクリックでそのままテーマ選択を行えるように対処したいところです。テーマセレクタとか環境設定なんて、アプリケーション開発の最後のほうでやっつけ的に行うので、それほど気合いを入れて作っているものではありません(個人の見解です)。
当初はもっと仕様的に「盛った」ものを作ろうとデザインしたのですが、いざ作ってみたら技術的に難しすぎたので、技術的な難易度を大幅に下げて実装してみました(ここで妥協ができないとモノが仕上がりません)。
自分はRadio Buttonに画像を載せて「選択状態だけとれればいい」と割り切って実装しましたが、たしかにダブルクリックぐらいは受け付けたほうがよいでしょう。Keynoteのテーマセレクタのように。
AppleScript名:AppDelegate.applescript |
— — AppDelegate.applescript — doubleClick — — Created by Takaaki Naganoya on 2020/01/29. — Copyright © 2020 Takaaki Naganoya. All rights reserved. — script AppDelegate property parent : class "NSObject" — IBOutlets property theWindow : missing value property theView : missing value property DCButton : missing value property aConMenu : missing value on applicationWillFinishLaunching:aNotification — end applicationWillFinishLaunching: on applicationShouldTerminate:sender return current application’s NSTerminateNow end applicationShouldTerminate: on clicked:aSender display dialog "Clicked" end clicked: on dispContextual:aEvent current application’s NSMenu’s popUpContextMenu:(aConMenu) withEvent:(aEvent) forView:(theView) end dispContextual: on action:aSender display dialog (tag of aSender) as string end action: end script |
AppleScript名:DCButton.applescript |
— — DCButton.applescript — Kamenoko — — Created by Takaaki Naganoya on 2020/05/18. — Copyright © 2020 Takaaki Naganoya. All rights reserved. — script DCButton property parent : class "NSButton" on mouseDown:aEvent set buttonNum to aEvent’s buttonNumber() set aEtype to aEvent’s type() set aCount to aEvent’s clickCount() if aCount = 3 then –Triple Click display dialog "Triple Click" else if aCount = 2 then –Double Click display dialog "Double Click" end if end mouseDown: on mouseMoved:theEvent log {"mouseMoved", aEvent} end mouseMoved: on mouseUp:aEvent log {"mouseUp", aEvent} end mouseUp: on mouseDragged:aEvent log "mouseDragged" end mouseDragged: on rightMouseDown:aEvent –Display Contextual Menu current application’s NSApp’s delegate()’s performSelector:"dispContextual:" withObject:(aEvent) end rightMouseDown: on rightMouseUp:aEvent log {"rightMouseUp", aEvent} end rightMouseUp: on clicked:aSender continue clicked:(missing value) end clicked: (* on mouseEntered:theEvent log {"mouseEntered", theEvent} end mouseEntered: on mouseExited:theEvent log {"mouseExited", theEvent} end mouseExited: *) end script |