GrandMA3 Plugin ile UI Widget Kullanımı

GrandMA3 plugin geliştirmede UI widget'larını Lua ile nasıl oluşturacağınızı ve yöneteceğinizi öğrenin.

GrandMA3 Plugin'lerde UI Widget Nedir?

GrandMA3, plugin geliştiricilere yalnızca arka planda çalışan scriptler yazma imkânı sunmaz; aynı zamanda ekranda görsel arayüz elemanları oluşturmanıza da olanak tanır. Bu elemanlar UI widget olarak adlandırılır ve kullanıcıyla etkileşimli bir deneyim yaratmanızı sağlar.

Widget'lar sayesinde plugin'iniz bir değer girişi isteyebilir, seçim menüsü sunabilir veya ekranda özel bir bilgi penceresi açabilir. Bu, özellikle saha kullanımında operatörün iş akışını hızlandıran güçlü bir özelliktir.

Temel Widget Türleri

GrandMA3 Lua API'si üzerinden erişilebilen başlıca widget türleri şunlardır:

  • TextInput: Kullanıcıdan metin veya sayısal değer almak için
  • Confirm / MessageBox: Evet/Hayır onay diyalogları
  • SelectInput: Liste üzerinden seçim yaptırmak için
  • Display / Label: Ekranda bilgi göstermek için

İlk Widget: Basit Bir Onay Kutusu

En sık kullanılan widget türlerinden biri onay (confirm) diyalogudur. Aşağıdaki örnek, kullanıcıya bir işlemi onaylatır:

local result = root:FindChild("GUI") local dialog = EclConfirmDialog("İşlemi Onaylıyor musunuz?", "Evet", "Hayır") if dialog == 1 then Echo("Onaylandı") else Echo("İptal edildi") end

Burada EclConfirmDialog fonksiyonu iki buton seçeneği sunar ve kullanıcının tıkladığı butona göre 1 veya 2 değeri döner.

Metin Girişi (TextInput) Widget

Kullanıcıdan dinamik değer almanız gerektiğinde TextInput widget'ı devreye girer. Örneğin bir fixture grubu adı veya başlangıç değeri girebilirsiniz:

local userInput = EclTextInput("Değer Girin", "Varsayılan") if userInput ~= nil then Echo("Girilen değer: " .. userInput) end
İpucu: Kullanıcı diyalogu iptal ettiğinde fonksiyon nil döner. Bu durumu her zaman kontrol edin; aksi takdirde plugin hata verir ve çalışmayı durdurur.

SelectInput ile Liste Sunmak

Birden fazla seçenek arasından tercih yaptırmak için SelectInput widget'ı kullanılır. Bu özellikle sahne modları veya renk paleti seçimlerinde çok işe yarar:

local options = {"Kırmızı", "Yeşil", "Mavi"} local selected = EclSelectInput("Renk Seçin", options) if selected ~= nil then Echo("Seçilen: " .. options[selected]) end

Fonksiyon, seçilen elemanın liste içindeki indeks numarasını döndürür. Bu nedenle options[selected] ile asıl değere ulaşırsınız.

Widget Kullanımında Dikkat Edilmesi Gerekenler

  1. Widget fonksiyonları yalnızca GUI thread içinde çalışır; arka plan görevlerinde (coroutine) kullanmak sorunlara yol açabilir.
  2. Her widget çağrısı ekranı geçici olarak bloke eder; bu nedenle gereksiz diyalog açmaktan kaçının.
  3. Kullanıcı girdisini doğrulamadan doğrudan komut olarak kullanmayın; tip kontrolü yapın.
  4. Plugin'i farklı ekran çözünürlüklerinde test edin; GrandMA3 farklı dokunmatik panel boyutlarında çalışabilir.

Pratik Bir Kullanım Senaryosu

Diyelim ki bir plugin yazıyorsunuz ve kullanıcının seçtiği fixture'lara belirli bir dimmer değeri atamak istiyorsunuz. Widget akışı şu şekilde kurulabilir:

  1. SelectInput ile mod seçimi yaptırın (örneğin: Sahne, Prova, Acil)
  2. TextInput ile dimmer yüzdesini alın
  3. ConfirmDialog ile işlemi onaylatın
  4. Onay gelirse Lua komutuyla değeri uygulayın

Bu yaklaşım, plugin'inizi hem güvenli hem de kullanıcı dostu hale getirir. Operatör hangi adımda ne yapıldığını net biçimde görür ve yanlışlıkla komut çalıştırma riski en aza iner.