Menu

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

AppleScriptの穴

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

アラートダイアログ上にTab View+Popup Buttonを表示して切り替え

Posted on 9月 16, 2019 by Takaaki Naganoya

アラートダイアログ上にTabViewとPopup Buttonを表示して、Popup Menuの選択状況に合わせてTabViewの表示ビューを切り替え、Popup Menuの選択アイテムを1はじまりの番号で返すAppleScriptです。

最終的には各TabViewItem内にCustomViewを生成して、各種データ(TableとかWebとかImageとか)を一覧から選択するようなUI部品として使い回すつもりです。

このバージョンではTabViewのタブが表示状態になっていますが、最終的にはタブレスのTabViewとして表示することになります。

AppleScript名:アラートダイアログ上にTab View+Popup Buttonを表示して切り替え
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/09/16
—
–  Copyright © 2019 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property NSView : a reference to current application’s NSView
property NSAlert : a reference to current application’s NSAlert
property NSMenu : a reference to current application’s NSMenu
property NSTabView : a reference to current application’s NSTabView
property NSMenuItem : a reference to current application’s NSMenuItem
property NSTabViewItem : a reference to current application’s NSTabViewItem
property NSPopUpButton : a reference to current application’s NSPopUpButton
property NSRunningApplication : a reference to current application’s NSRunningApplication

property TabPosition : 0 —0=Top, 1=Left, 2=Bottom, 3=Right, 4=None

property returnCode : 0

property aTabV : missing value
property selectedNum : 1

set paramObj to {myMessage:"Main Message", mySubMessage:"Sub information", viewWidth:500, viewHeight:300}

–my dispTextViewWithAlertdialog:paramObj –for debug
my performSelectorOnMainThread:"dispTabViewWithAlertdialog:" withObject:paramObj waitUntilDone:true
return selectedNum

on dispTabViewWithAlertdialog:paramObj
  –Receive Parameters
  
set aMainMes to (myMessage of paramObj) as string –Main Message
  
set aSubMes to (mySubMessage of paramObj) as string –Sub Message
  
set aWidth to (viewWidth of paramObj) as integer –TextView width
  
set aHeight to (viewHeight of paramObj) as integer –TextView height
  
  
  
set selectedNum to 0
  
  
set aView to NSView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, aWidth, aHeight))
  
  
–Ppopup Buttonをつくる
  
set a1Button to NSPopUpButton’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, aHeight – 20, 400, 20)) pullsDown:false
  
a1Button’s removeAllItems()
  
  
set a1Menu to NSMenu’s alloc()’s init()
  
  
repeat with i from 1 to 8
    set aTitle to "Selection #" & (i as string)
    
set aMenuItem to (NSMenuItem’s alloc()’s initWithTitle:aTitle action:"actionHandler:" keyEquivalent:"")
    (
aMenuItem’s setEnabled:true)
    (
aMenuItem’s setTarget:me)
    (
aMenuItem’s setTag:(i as string))
    (
a1Menu’s addItem:aMenuItem)
  end repeat
  
  
a1Button’s setMenu:a1Menu
  
  
–Make Tab View
  
set aTabV to NSTabView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, aWidth, aHeight – 30))
  
aTabV’s setTabViewType:(TabPosition)
  
aTabV’s setTabViewType:(TabPosition)
  
  
repeat with i from 1 to 8
    set aTVItem to (NSTabViewItem’s alloc()’s initWithIdentifier:(i as string))
    (
aTVItem’s setLabel:(i as string))
    
    
–make custom view within a tab view item here
    
    (
aTabV’s addTabViewItem:aTVItem)
  end repeat
  
  
  
aView’s setSubviews:{a1Button, aTabV}
  
aView’s setNeedsDisplay:true
  
  
  
— set up alert
  
set theAlert to NSAlert’s alloc()’s init()
  
tell theAlert
    –for Messages
    
its setMessageText:(aMainMes)
    
its setInformativeText:(aSubMes)
    
    
–for Buttons
    
its addButtonWithTitle:"OK"
    
its addButtonWithTitle:"Cancel"
    
    
–Add Accessory View
    
its setAccessoryView:(aView)
    
    
–for Help Button
    
its setShowsHelp:(true)
    
its setDelegate:(me)
  end tell
  
  
  
— 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 selectedNum to (a1Button’s indexOfSelectedItem()) + 1
end dispTabViewWithAlertdialog:

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

on alertShowHelp:aNotification
  display dialog "Help Me!" buttons {"OK"} default button 1 with icon 1
  
return false –trueを返すと親ウィンドウ(アラートダイアログ)がクローズする
end alertShowHelp:

–Popup Action Handler
on actionHandler:sender
  set aTag to tag of sender as integer
  
aTabV’s selectTabViewItemAtIndex:(aTag – 1)
end actionHandler:

★Click Here to Open This Script 

More from my site

  • 指定のフォントとサイズに該当するテキストを抽出する v3指定のフォントとサイズに該当するテキストを抽出する v3
  • Keynote書類のテキスト色を置換Keynote書類のテキスト色を置換
  • Keynote書類の現在のスライド上の表1の背景色を置換 v1Keynote書類の現在のスライド上の表1の背景色を置換 v1
  • Numbers書類の現在のシート上の表1の背景色を置換 v1Numbers書類の現在のシート上の表1の背景色を置換 v1
  • Pages書類の1ページ目の表の背景色を置換 v4Pages書類の1ページ目の表の背景色を置換 v4
  • Pages書類の1ページ目の表の背景色を置換 v3.1(約20倍速)Pages書類の1ページ目の表の背景色を置換 v3.1(約20倍速)
Posted in dialog GUI Menu | Tagged 10.12savvy 10.13savvy 10.14savvy NSAlert NSMenu NSMenuItem NSPopUpButton NSRunningApplication NSTabView NSTabViewItem NSView | 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

  • 指定フォルダ内の指定拡張子のファイルのうち、指定キーワードで始まるものを
  • 最前面のKeynote書類のテキストアイテムの英語化率を求める
  • Safariで表示中のWebページの最終更新日時を取得
  • Numbersで選択範囲のセルのデータを取得して重複データを抽出
  • Keynoteで選択中のテキストアイテムからテキスト取り出し
  • プリンタを指定してダイアログ非表示状態で印刷実行
  • フルパスからファイル名を取得する
  • CotEditorのScript集、PowerPack & Basic Packを配布開始
  • 画面上の指定座標にマウスカーソルを強制移動させてクリック
  • Keynoteの各slideのtitleから目次のテキストを作成してNumbersの表を作成
  • PDFから指定ページ以降を削除
  • 透明ウィンドウで時計表示
  • Numbersの表の選択範囲をHTML化 v2
  • UniversalDetectorで文字コード判定
  • SMCkitで各種センサー値を取得する
  • 頭のいいタイマー割り込み実行
  • 文字エンコーディングを自動判別してファイル読み込み v1.2.1
  • 指定容量の指定名称のRAMディスクを作成する
  • iCloud Driveフォルダへのパスを求める
  • 色が赤系統か青系統かを判定する

Tags

10.11savvy (1109) 10.12savvy (1249) 10.13savvy (1384) 10.14savvy (506) 10.15savvy (297) 11.0savvy (105) CotEditor (47) Finder (43) iTunes (25) Keynote (60) NSAlert (59) NSAlertSecondButtonReturn (16) NSArray (50) NSBitmapImageRep (20) NSBundle (19) NSButton (33) NSColor (48) NSDictionary (26) NSFileManager (23) NSFont (18) NSImage (40) NSJSONSerialization (20) NSMutableArray (61) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (55) NSScreen (30) NSScrollView (22) NSString (113) NSURL (93) NSURLRequest (22) NSUTF8StringEncoding (29) NSUUID (18) NSView (33) NSWindow (17) NSWorkspace (19) Numbers (42) Pages (16) Safari (34) System Events (16) WKUserContentController (20) WKUserScript (19) WKUserScriptInjectionTimeAtDocumentEnd (17) WKWebView (21) WKWebViewConfiguration (21)

カテゴリー

  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Bluetooth
  • boolean
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • History
  • How To
  • Icon
  • Image
  • Input Method
  • Internet
  • JavaScript
  • JXA
  • Keychain
  • Language
  • list
  • Locale
  • Machine Learning
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • shell script
  • 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)
  • 未分類

アーカイブ

  • 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
Proudly powered by WordPress
Theme: Flint by Star Verte LLC