Показать переменную из цикла повтора в плавающем окне - PullRequest
0 голосов
/ 24 марта 2019

У меня есть appleScript, который фиксирует счетчик в другом приложении. Это работает нормально, но я хотел бы вывести результаты в другое плавающее окно и обновлять его при каждом цикле. Кто-нибудь знает способ сделать это? Полный новичок.

Спасибо

EDIT:

Мой код:

tell application "System Events"

tell process "MIDI Editor"
    with timeout of 0 seconds
        repeat
            set barCount to value of text field "Main Counter" of group "Counter Display Cluster" of window "Edit: kjhsdf" of application process "MIDI Editor" of application "System Events"
            delay 0.01
        end repeat
    end timeout
end tell

end tell

(Не уверен, почему это последнее сообщение конца вырывается из блока кода!)

Так вот его barCount, который я хочу отразить в реальном времени в другом окне

1 Ответ

2 голосов
/ 24 марта 2019

Из Редактора сценариев вы можете использовать AppleScriptObjC для программного создания немодального окна с текстовым полем, которое можно обновить.В приведенном ниже примере я использую повторяющийся таймер вместо оператора повторения AppleScript, поскольку подобные циклы будут блокировать пользовательский интерфейс.Сохраните сценарий как приложение, с опцией, оставшейся открытой.

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Cocoa"
use scripting additions

property WindowFrame : {{200, 600}, {150, 50}} -- window location and size
property TextFrame : {{10, 10}, {130, 30}} -- window size minus 20
property mainWindow : missing value
property textField : missing value
property timer : missing value

on run -- example
  setup()
  update()
  set my timer to current application's NSTimer's timerWithTimeInterval:0.25 target:me selector:"update" userInfo:(missing value) repeats:true
  current application's NSRunLoop's mainRunLoop's addTimer:timer forMode:(current application's NSDefaultRunLoopMode)
end run

to update() -- update text field
  set barCount to ""
  with timeout of 0.5 seconds
    tell application "System Events" to tell process "MIDI Editor"
      set barCount to value of text field "Main Counter" of group "Counter Display Cluster" of window "Edit: kjhsdf"
    end tell
  end timeout
  textField's setStringValue:(barCount as text)
end update

to setup() -- create UI objects
  tell (current application's NSTextField's alloc's initWithFrame:TextFrame)
    set my textField to it
    its setFont:(current application's NSFont's fontWithName:"Menlo" |size|:18)
    its setBordered:false
    its setDrawsBackground:false
    its setSelectable:false
  end tell
  tell (current application's NSWindow's alloc's initWithContentRect:WindowFrame styleMask:1 backing:(current application's NSBackingStoreBuffered) defer:true)
    set my mainWindow to it
    its setAllowsConcurrentViewDrawing:true
    its setHasShadow:true
    its setTitle:"Progress"
    its setLevel:(current application's NSFloatingWindowLevel)
    its (contentView's addSubview:textField)
    its setFrameAutosaveName:"Update Window" -- keep window position
    its setFrameUsingName:"Update Window"
    its makeKeyAndOrderFront:me
  end tell
end setup
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...