Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

slider+buttonを作成 v5

Posted on 5月 21, 2020 by Takaaki Naganoya

スライダーをダイアログ上に表示して、ユーザーの入力を求めるAppleScriptです。


▲Script Editor上で実行


▲Script Debugger上で実行


▲Script Menu上で実行


▲Switch Control上で実行

最近はこうした箱庭ダイアログシリーズも書き方がこなれてきて、ランタイム環境に依存せずに(実際は、特定の環境で動かないということが少なくなりつつ)実行できるようになってきました。

スライダーコントロールはこうした箱庭シリーズの初期にいろいろいじくって試していたものですが、あまりに初期すぎて書き方が古いものが多かったので、最新のこなれた書き方で書き直しておきました。

ただ、スライダーコントロールが単体でダイアログ上に配置されていても、実際にハマる用途が存在せず、単なるデモンストレーションに終始してしまいそうであります。

アラートダイアログの通知メッセージ(一番大きな文字で表示される)をスライダーで変更することができなかったので、ダイアログのタイトルでスライダーの値を表示するようにしています。スライダーが必要な状況というのは、いくつかのパラメータを一緒に設定するケースが多いはずなので、やっぱり単体で設定できても意味がないような気がとてもします。

AppleScript名:slider+buttonを作成 v5
— Created 2020-5-17 by Takaaki Naganoya
— 2020 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property NSAlert : a reference to current application’s NSAlert
property NSSlider : a reference to current application’s NSSlider
property NSSplitView : a reference to current application’s NSSplitView
property NSTickMarkBelow : a reference to current application’s NSTickMarkBelow
property NSRunningApplication : a reference to current application’s NSRunningApplication
property NSScreenSaverWindowLevel : a reference to current application’s NSScreenSaverWindowLevel

property windisp : false
property wController : false
property aSliderValMSG : ""

property sliderRes : 0

set aMaxVal to 12
set aButtonMSG to "OK"
set winWidth to 400
set aSliderValMSG to "Slider Value : "

set paramObj to {myMax:aMaxVal, myBMes:aButtonMSG, mySliderMes:aSliderValMSG, myWidth:winWidth}
–my getSliderValue:paramObj
my performSelectorOnMainThread:"getSliderValue:" withObject:(paramObj) waitUntilDone:true
return sliderRes

on getSliderValue:paramObj
  set aMaxVal to (myMax of paramObj) as real
  
set aButtonMSG to (myBMes of paramObj) as string
  
set aSliderValMSG to (mySliderMes of paramObj) as string
  
set winWidth to (myWidth of paramObj) as real
  
  
set (my aSliderValMSG) to aSliderValMSG
  
  
set aView to NSSplitView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, winWidth, 40))
  
aView’s setVertical:false
  
  
–Sliderをつくる
  
set aSlider to makeSider(aMaxVal) of me
  
aView’s setSubviews:{aSlider}
  
  
— set up alert  
  
set theAlert to NSAlert’s alloc()’s init()
  
tell theAlert
    its setMessageText:""
    
–its setInformativeText:aSubMes
    
its addButtonWithTitle:"OK"
    
its addButtonWithTitle:"Cancel"
    
its setAccessoryView:aView
    
set aWin to its |window|()
    
set bList to buttons()
  end tell
  
  
aWin’s setTitle:(my aSliderValMSG & (sliderRes as text))
  
aWin’s setLevel:NSScreenSaverWindowLevel
  
— show alert in modal loop
  
NSRunningApplication’s currentApplication()’s activateWithOptions:0
  
my performSelectorOnMainThread:"doModal:" withObject:(theAlert) waitUntilDone:true
  
if (my returnCode as number) = 1001 then error number -128
  
  
set sliderRes to (aSlider’s intValue()) as number
end getSliderValue:

on doModal:aParam
  set (my returnCode) to aParam’s runModal()
end doModal:

on sliderChanged:aSender
  set sliderRes to aSender’s intValue()
  
set parentWin to aSender’s |window|()
  
parentWin’s setTitle:(my aSliderValMSG & (sliderRes as text))
end sliderChanged:

on makeSider(aMaxNum)
  set aSlider to NSSlider’s alloc()’s init()
  
aSlider’s setMaxValue:aMaxNum
  
aSlider’s setMinValue:1
  
aSlider’s setNumberOfTickMarks:aMaxNum
  
aSlider’s setKnobThickness:50
  
aSlider’s setAllowsTickMarkValuesOnly:true
  
aSlider’s setTickMarkPosition:(NSTickMarkBelow)
  
set sliderRes to (aMaxNum div 2)
  
aSlider’s setIntValue:sliderRes
  
aSlider’s setTarget:me
  
aSlider’s setAction:("sliderChanged:")
  
return aSlider
end makeSider

★Click Here to Open This Script 

More from my site

  • アラートダイアログでMarkdownをプレビュー v3aアラートダイアログでMarkdownをプレビュー v3a
  • アラートダイアログ上に印刷対象ページ一覧を表示して対象ページを指定(v2)アラートダイアログ上に印刷対象ページ一覧を表示して対象ページを指定(v2)
  • アラートダイアログ上にWebViewでCesiumを用いて地球儀上に地図を表示アラートダイアログ上にWebViewでCesiumを用いて地球儀上に地図を表示
  • アラートダイアログ上のWebViewでGio.jsを用いて地球儀+データアニメーション表示 v2aアラートダイアログ上のWebViewでGio.jsを用いて地球儀+データアニメーション表示 v2a
  • アラートダイアログ上にWebViewでChart.jsを表示(Pie Chart) v2アラートダイアログ上にWebViewでChart.jsを表示(Pie Chart) v2
  • アラートダイアログ上にd3-cloudを用いてワードクラウドを表示アラートダイアログ上にd3-cloudを用いてワードクラウドを表示
(Visited 163 times, 1 visits today)
Posted in dialog | Tagged 10.13savvy 10.14savvy 10.15savvy NSAlert NSRunningApplication NSSlider NSSplitView | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 13.6.5 AS系のバグ、一切直らず
  • CotEditorで2つの書類の行単位での差分検出
  • Apple純正マウス、キーボードのバッテリー残量取得
  • macOS 15, Sequoia
  • 初心者がつまづきやすい「log」コマンド
  • 指定のWordファイルをPDFに書き出す
  • Adobe AcrobatをAppleScriptから操作してPDF圧縮
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • メキシカンハットの描画
  • 与えられた文字列の1D Listのすべての順列組み合わせパターン文字列を返す v3(ベンチマーク用)
  • 2023年に書いた価値あるAppleScript
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • Numbersで選択範囲のセルの前後の空白を削除
  • Cocoa Scripting Course 続刊計画
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • NaturalLanguage.frameworkでNLEmbeddingの処理が可能な言語をチェック
  • AppleScriptによる並列処理

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1392) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (208) 13.0savvy (181) 14.0savvy (131) 15.0savvy (108) CotEditor (64) Finder (51) iTunes (19) Keynote (115) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (75) Pages (54) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC