AppleScript: Чи можливо в діалоговому вікні введення не було вибрано "відповідь за замовчуванням"?


2

Коли ви використовуєте default answerпараметр в display dialogAppleScript, будь-який текст встановлений default answerавтоматично, підсвічується після відображення діалогового вікна.

Чи можна вказати відповідь за замовчуванням без відповіді, виділеної?

Я б хотів, щоб курсор розміщувався після останнього символу відповіді за замовчуванням, щоб користувач міг додавати текст до цієї відповіді, не натискаючи клавіші (або, що ще гірше, випадково перезаписавши відповідь за замовчуванням).


Я не думаю, що це корисна практика користувальницького інтерфейсу, щоб використовувати власну відповідь як відповідь за замовчуванням. Відповідь по замовчуванням А повинно бути так чи ні , але не немає, але ... (або так, але ... ).
кланомат

@klanomath Діалогове вікно, про яке йдеться, не отримує від користувача введення так / ні - воно отримує ключове слово. Залежно від наміру користувача, ключове слово за замовчуванням іноді буде достатньо. В іншому випадку користувач захоче повністю видалити ключове слово. Однак у більшості випадків користувач захоче додати текст до цього ключового слова (саме тому я хочу, default answerщоб його не було вибрано, щоб користувач міг негайно додати текст, не спочатку натискаючи клавішу зі стрілкою вправо). Працевлаштування A default answer- це найефективніший спосіб запропонувати всі ці параметри під рукою користувача.
сфера

Відповіді:


2

Я зрозумів це.

Якщо натиснути клавішу зі стрілкою праворуч за кілька мілісекунд до того, як з'явиться діалогове вікно, тоді default answerне буде вибрано значення, а миготливий курсор буде розміщений після тексту за замовчуванням.

Ви можете виконати цю дію в AppleScript так:

-- Unselect the default answer in an input dialog:
tell application "System Events"
        key code 124 -- right arrow key
end tell

display dialog "Enter a keyword:" default answer "I do not want this text to be highlighted. "

Теоретично зазначене рішення не повинно працювати. Теоретично натискання клавіш повинно починатись і завершуватися перед початком display dialogкоманди. Але цей метод діє з будь-якої причини.


Примітка. Цей метод не працюватиме, якщо ви вставите key code 124перед першим діалоговим вікном вашого файлу AppleScript. У цьому випадку мій вище код не буде працювати так, як бажано, і default answerтекст залишиться обраним. (Це може ввести в оману справно, якщо ви просто запускаєте код AppleScript з Script Editor.app або Automator.app, але він не працюватиме належним чином, якщо ви запускаєте файл .scpt через швидкі сценарії, osascriptу Terminal.app або будь-який інший метод.)

Однак якщо display dialogмова йде про другий, третій або п'ятдесятий діалог у файлі AppleScript, моє рішення працює правильно. Не запитуйте мене, чому це не працюватиме в першому діалоговому вікні (тому що я не знаю).

Отже, у вас немає іншого вибору, як переставити діалогові вікна файлу AppleScript, щоб у першому діалоговому вікні не було потрібного default answer.

Одне рішення, якщо у вашому початковому діалоговому вікні має бути default answerневибраний параметр, - це вставити діалогове вікно, яке автоматично продовжується після того, як пройде короткий проміжок часу. Це діалогове вікно слід вставити безпосередньо перед вищевказаним блоком. Це не елегантне рішення, але ось який код працює:

display alert "Please wait..." message "..." buttons ("") giving up after 1
-- I think that "1" is the minimum for "giving up after." I tried "0.5" and the dialog completely stalled.

Поки це не передує початковому діалогу сценарію, я особисто визнав свій метод надійним; він працює на моєму комп’ютері 100% часу.


Хоча ви, можливо, вважали це надійним, я цього не зробив. Він працював один раз в десять разів, і крім того, це не програмно правильний метод, оскільки key code подія насправді повинна закінчитися до початку display dialog. Він, ймовірно, відрізнятиметься від кожної тестованої системи, і IMO - це справжня надійність для вас. Крім того, надійним є те, коли він працює щоразу для кожного, хто його спробує.
користувач3439894

@ user3439894 Я забув згадати важливий застереження. Будь ласка, дивіться мою оновлену відповідь. Чи надійний мій метод у вашій системі, коли display dialogпитання йдеться не про початкове діалогове вікно AppleScript (і коли ви фактично запускаєте файл .scpt поза таким середовищем, як Script Editor.app або Automator.app)?
сфера

Гаразд, лише коли він працює як автономний додаток, він здається надійним. Очевидно, я не робив обширних тестувань, але, безумовно, це був зовсім інший запуск, як складений додаток проти запуску в редакторі сценаріїв. Якби у мене була реальна потреба, я зараз не так, я, певно, побачив, чи можна було б зробити діалогове вікно у програмі Cocoa-AppleScript, щоб не було обрано відповідь за замовчуванням. Хороший обхід, хоча. Я дам йому +1 за винахідливість.
користувач3439894

@ user3439894 Дякую Це не так добре, як відповідь користувача3439894, але він перемагає інші відповіді :). Щоб було зрозуміло, мій код працює не тільки надійно, коли він зберігається як окремий .app файл. Він також надійно працює як .scpt файл, якщо цей .scpt файл запускається FastScripts.app або в Terminal.app via osascript.
сфера

Коли я сказав: " Добре, лише коли це працює як автономне додаток, це здається надійним ". Я розумію, що це означало порівняння між .app та запуском у редакторі сценаріїв, тому що це все, що я перевірив. Приємно знати, що він працює і в інших сценаріях. Не продавайте себе коротко, це, безумовно, хороша відповідь за обставин! :)
користувач3439894
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.