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.confirm hem input hem onay amacıyla kullanılabilir; dönen değerin nil olup 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:

  1. Kullanıcıdan fixture numarası al
  2. Girişin geçerli olup olmadığını kontrol et
  3. 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ı (nil dönüşü) mutlaka ele alın, aksi hâlde plugin çöker
  • gma.echo ile 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.