GrandMA2 Plugin ile Kullanıcı Arayüzü (GUI) Oluşturma
GrandMA2 plugin sisteminde Lua kullanarak özel diyalog pencereleri ve etkileşimli arayüz bileşenleri oluşturmayı öğrenin.
GrandMA2 Plugin'de GUI Neden Önemli?
GrandMA2 plugin'leri yalnızca arka planda çalışan komut dosyaları değildir. Kullanıcı arayüzü (GUI) ekleyerek operatörün sahne başında hızlıca veri girebileceği, seçim yapabileceği ve geri bildirim alabileceği etkileşimli araçlar yaratabilirsiniz. Bu, özellikle karmaşık show dosyalarında zaman kazandıran kritik bir özelliktir.
Temel GUI Fonksiyonları
GrandMA2, Lua ortamına birkaç yerleşik arayüz fonksiyonu sunar. Bunların tamamı gma namespace'i altında tanımlıdır.
Input Diyaloğu
Kullanıcıdan metin veya sayısal değer almak için en sık kullanılan yöntemdir:
local userInput = gma.gui.confirm("Değeri Girin", "Başlangıç değeri")Bu fonksiyon, ekranda bir metin kutusu içeren modal bir pencere açar. Kullanıcı onaylarsa girilen değeri string olarak döndürür; iptal ederse nil döner. Bu nedenle dönen değeri her zaman kontrol etmek gerekir.
Onay Diyaloğu
Evet/Hayır kararı gerektiren işlemler için confirm yerine aşağıdaki yapıyı kullanabilirsiniz:
local result = gma.gui.confirm("Emin misiniz?", "Bu işlem geri alınamaz.")İpucu:gma.gui.confirmhem input hem onay amacıyla kullanılabilir; dönen değerinnilolup olmadığını kontrol ederek kullanıcının iptal edip etmediğini anlayabilirsiniz.
Mesaj Gösterme
Kullanıcıya bilgi vermek veya hata mesajı göstermek için iki farklı yöntem mevcuttur:
- gma.echo() — Komut satırına mesaj yazar, arayüzü kesmez
- gma.gui.msgbox() — Ekranda modal bir bilgi kutusu açar, kullanıcı kapatana kadar bekler
Hızlı durum bildirimleri için gma.echo tercih edilmelidir. Operatörün mutlaka görmesi gereken kritik uyarılar içinse msgbox daha uygundur.
Pratik Bir Örnek
Aşağıdaki örnek, kullanıcıdan bir fixture numarası alıp o fixture'ı seçen basit bir plugin akışını göstermektedir:
- Kullanıcıdan fixture numarası al
- Girişin geçerli olup olmadığını kontrol et
- Komutu çalıştır ve sonucu bildir
local num = gma.gui.confirm("Fixture Seç", "Fixture numarasını girin") if num == nil then gma.echo("İptal edildi.") return end local fixtureNum = tonumber(num) if fixtureNum == nil then gma.gui.msgbox("Hata", "Geçersiz numara girdiniz.") return end gma.cmd("Fixture " .. fixtureNum) gma.echo("Fixture " .. fixtureNum .. " seçildi.")GUI Tasarımında Dikkat Edilmesi Gerekenler
Sahne ortamında çalışan bir arayüz, stüdyo yazılımlarından farklı önceliklere sahiptir. Aşağıdaki kurallara uymak operatör deneyimini doğrudan etkiler:
- Modal pencereler show akışını durdurur; gereksiz yere kullanmaktan kaçının
- Mesajları kısa ve net tutun; operatörün okumak için zamanı yoktur
- Her kullanıcı girişini tonumber() veya tip kontrolüyle doğrulayın
- İptal senaryolarını (
nildönüşü) mutlaka ele alın, aksi hâlde plugin çöker gma.echoile log tutmak, hata ayıklamayı kolaylaştırır
Önemli Not: GrandMA2'nin yerleşik GUI fonksiyonları sınırlıdır; karmaşık form tasarımları desteklenmez. Çok adımlı veri girişi gerektiren senaryolarda, birden fazla confirm çağrısını sıralı kullanmak pratik bir çözümdür.