|
— main.scpt |
|
— Cocoa-AppleScript Applet |
|
— |
|
— Copyright 2011 {Your Company}. All rights reserved. |
|
|
|
— This is the main script for a Cocoa-AppleScript Applet. |
|
— You can put the usual script applet handlers here. |
|
|
|
use AppleScript version "2.4" |
|
use scripting additions |
|
use framework "Foundation" |
|
use framework "AppKit" |
|
use script "BridgePlus" — for pre-10.11 compatibility |
|
|
|
on date_pick(theMessage) |
|
if not (current application's NSThread's isMainThread()) as boolean then |
|
display alert "This script must be run from the main thread." buttons {"Cancel"} as critical |
|
error number -128 |
|
end if |
|
|
|
— create a view |
|
set theView to current application's NSView's alloc()'s initWithFrame:(current application's NSMakeRect(0, 0, 100, 200)) |
|
|
|
— create date picker |
|
set datePicker to current application's NSDatePicker's alloc()'s initWithFrame:(current application's NSMakeRect(0, 0, 100, 100)) |
|
|
|
— set style: choices are NSTextFieldAndStepperDatePickerStyle, NSClockAndCalendarDatePickerStyle, or NSTextFieldDatePickerStyle |
|
datePicker's setDatePickerStyle:(current application's NSClockAndCalendarDatePickerStyle) |
|
|
|
— set elements: choices include NSHourMinuteDatePickerElementFlag, NSHourMinuteSecondDatePickerElementFlag, NSTimeZoneDatePickerElementFlag, NSYearMonthDatePickerElementFlag, and NSEraDatePickerElementFlag |
|
datePicker's setDatePickerElements:((current application's NSYearMonthDayDatePickerElementFlag) + (current application's NSHourMinuteSecondDatePickerElementFlag as integer)) |
|
|
|
|
|
— set initial date |
|
datePicker's setDateValue:(current application's NSDate's |date|()) |
|
|
|
— get the size it needs |
|
set theSize to datePicker's fittingSize() |
|
|
|
–resize the picker and view accordingly |
|
theView's setFrameSize:theSize |
|
datePicker's setFrameSize:theSize |
|
|
|
— add the picker to the view |
|
theView's setSubviews:{datePicker} |
|
|
|
— create an alert |
|
set theAlert to current application's NSAlert's alloc()'s init() |
|
|
|
— set up alert |
|
tell theAlert |
|
its setMessageText:theMessage |
|
its setInformativeText:"Any date" |
|
its addButtonWithTitle:"OK" |
|
its addButtonWithTitle:"Cancel" |
|
its setAccessoryView:theView |
|
end tell |
|
|
|
— show alert in modal loop |
|
set returnCode to theAlert's runModal() |
|
if returnCode = (current application's NSAlertSecondButtonReturn) then error number -128 |
|
|
|
— retrieve date |
|
set theDate to ASify from (datePicker's dateValue()) — or simply coerce to date in 10.11 |
|
|
|
–> date "2015年8月20日木曜日 19:43:58" |
|
|
|
return theDate |
|
|
|
end date_pick |
|
|
|
if button returned of (display dialog "You need to have your To-Do highlighted in Things. Continue?" buttons {"No", "Continue"}) is "Continue" then |
|
|
|
|
|
|
|
|
|
set theCompletionDate to my date_pick("When did you complete the selected to do?") |
|
|
|
|
|
tell application "Things3" |
|
set theList to the selected to dos |
|
|
|
|
|
repeat with theToDo in theList |
|
set the completion date of theToDo to theCompletionDate |
|
end repeat |
|
end tell |
|
end if |
|
|
|
tell current application to quit |