BaCon/Linux GUI programlama
INCLUDE "hug.bac"
INIT
window = WINDOW("Merhaba dünya!", 200, 200)
DISPLAY
HUG fonksiyonları
[değiştir]
HUG İngilizce Highlevel Universal GUI ifadesinin kısaltmasıdır.
hug.bac dosyası, grafik kullanıcı arayüzü oluşturmak için kullanabileceğiniz fonksiyonları içermektedir. Bu dosyayı INCLUDE "hug.bac" şeklinde kodunuza ekleyerek kolayca grafik kullanıcı arayüzü oluşturabilirsiniz.
HUG, BaCon'un grafik kullanıcı arayüzlerini hızlı ve verimli bir şekilde ayarlamasına olanak tanıyan basit bir dizi işlevdir. Model olarak, araçlar kümesi HTML Formlarında sıkça bulunan araçlarla (widget) sınırlıdır. Ardından, güçlü kanvas aracıyla ve bazı çizim komutlarıyla ve ayrıca klavye ve fare olaylarını sorgulamak için kullanılan yöntemlerle genişletilir.
Uygulama, GTK kütüphanelerinden gerekli işlevleri almak için BaCon IMPORT deyimini kullanarak GTK'ya dayanır. Bu yaklaşımın avantajı, elde edilen yürütülebilir dosyanın GTK ile ikili düzeyde bağımlılığı bulunmamasıdır. Bu, HUG kullanan bir programın, GTK mevcut olmadığında bile yürütülebileceği anlamına gelir.
Genel kullanım
Bir kullanıcı arayüzünü kurmak için öncelikle gerekli pencere öğelerinin tanımlandığı bir pencere oluşturulur. Çoğu pencere aracı için, bir "geri çağırma" (callback) tanımlamak mümkündür. Aslında bu, pencere aracı etkinleştirildiğinde geri çağrılan kullanıcı tanımlı bir işlevdir.
ATTACH
[değiştir]ATTACH(pencere, araç, x, y)
Tür: yönerge
Bu işlev, pencereye <x>, <y> konumundaki bir pencere aracı (widget) ekler. Pencerenin sol üst köşesi referans olarak alınır (0, 0). Bu yönerge, bir pencerenin ekranda konumlandırılması için de kullanılabilir. Bu durumda pencere adı yerine 0, araç adı yerine pencere adı yazılır: ATTACH(0, pencere adı, x, y)
ATTACH kullanarak araçların pencere üzerinde konumlandırılmasına örnek:
INCLUDE "hug.bac"
INIT
pencere = WINDOW("İngilizce Sözlük", 600, 400)
arama = ENTRY("", 200, 25)
ATTACH(pencere, arama, 200, 15)
dil1 = RADIO("İngilizce", 80, 25, 0)
ATTACH(pencere, dil1, 220, 50)
dil2 = RADIO("Türkçe", 80, 25, dil1)
ATTACH(pencere, dil2, 300, 50)
anlamlar = EDIT(580, 300)
ATTACH(pencere, anlamlar, 10, 80)
DISPLAY
BUTTON
[değiştir]BUTTON('başlık', xboyut, yboyut)
Tür: fonksiyon
Bir başlığı ve <xboyut> genişliği ve <yboyut> yüksekliği olan bir düğme oluşturur. Oluşturulan düğmenin kimliğini (ID) döndürür.
CALLBACK
[değiştir]CALLBACK(araç, fonksiyon)
Tür: yönerge
<araç> için bir olay gerçekleştiğinde HUG'un atlayacağı <fonksiyon> bu yönerge ile ayarlanır.
CALLBACKX
[değiştir]CALLBACKX(araç, fonksiyon, değer)
Tür: yönerge
CALLBACK gibidir ancak farklı olarak tanımlanan <değer>, <fonksiyon> tarafından yakalanabilir.
CANVAS
[değiştir]CANVAS(xboyut, yboyut)
Tür: fonksiyon
<xboyut> genişliği ve <yboyut> yüksekliği olan bir kanvas (tuval) oluşturur. Sol üst köşe konumu (0, 0) olarak tanımlanır. En son oluşturulan tuval, çizimin yapıldığı varsayılan tuval olarak kabul edilir. Varsayılan tuval DRAW fonksiyonu ile değiştirilebilir.
Sistemde GtkGlArea kitaplığı veya GtkGlext kitaplığının bulunması koşuluyla tuval aynı zamanda bir OpenGL tuvali olarak da oluşturulabilir. Bunu yapmak için, tuvali oluşturmadan önce HUGOPTIONS'daki CANVAS seçeneğini kullanın.
CHECK
[değiştir]CHECK("başlık", xboyut, yboyut)
Tür: fonksiyon
<xboyut> genişliği ve <yboyut> yüksekliği olan etiketli bir onay düğmesi (check button) oluşturur. Oluşturulan onay düğmesinin kimliğini (ID) döndürür.
CIRCLE
[değiştir]CIRCLE("renk", xkonum, ykonum, genişlik, yükseklik, doldurma)
Tür: yönerge
Tuval üzerinde çevreleyen kutunun sol üst koordinatının <xkonum> ve <ykonum>da yerleştiği bir çember çizer. Çemberin toplam boyutu <genişlik> ve <yükseklik> ile belirlenir. Eğer <doldurma> sıfır değilse o zaman çember bir tam daire olacaktır. Bu yönerge bir GL tuval için de geçerlidir.
Renk, onaltılık sayı sisteminde bir üçlü olan "#rrggbb" formatında olur. RGB İngilizce Red "kırmızı", Green "yeşil" ve Blue "mavi" sözcüklerinin baş harfleridir. Bilgisayardaki bütün renkler bu üç rengin karışımından elde edilmektedir. Mesela "#FF0000" kırmızının, "#00FF00" yeşilin, "#0000FF" mavinin renk kodudur. FF onaltılık sayı sisteminde iki basamaklı en büyük sayıdır ve onluk sistemdeki karşılığı 255'tir. 00 ile birlikte bir renk için 256 seçenek bulunur ve böylece üç rengin karışımından 256 * 256 * 256 = 16.777.216 renk elde edilebilir.
CLIPBOARD
[değiştir]CLIPBOARD
Tür: fonksiyon
Pano nesnesini alır. Oluşturulan panonun kimliğini (ID) döndürür.
COMBO
[değiştir]COMBO("metin", xboyut, yboyut)
Tür: fonksiyon
Bir girisi olan ve genişliği <xboyut>, yüksekliği <yboyut> olan bir açılan kutu oluşturur. Oluşturulan açılan kutunun kimliğini (ID) döndürür.
DISABLE
[değiştir]DISABLE(araç)
Tür: yöntem
Bir aracı dondurur, böylece kullanılamaz.
DISPLAY
[değiştir]DISPLAY
Tür: yönerge
Ana olay döngüsünü çalıştırmaya başlar. Bu fonksiyon GUI oluşturmada en son fonksiyon olarak çağrılacaktır.
DRAW
[değiştir]DRAW(tuval)
Tür: yönerge
Çizimin gerçekleştiği varsayılan tuvali tanımlar.
GL_FREEZE'in etkin olduğu bir OpenGL tuvalinin (bkz. HUGOPTIONS) veya HUG olmayan çizimin kullanılması yağdayında, çizim tamponunu hazırlarken önce bu fonksiyon çağrılacaktır. Ardından, mevcut çizim tamamlandıktan sonra, GL tuvali SYNC yönergesi kullanılarak güncellenecektir.
Her durumda DRAW yönergesi mevcut düşük seviyeli çizim alt aracını döndürür.
EDIT
[değiştir]EDIT(xboyut, yboyut)
Tür: yönerge
<xboyut> genişliğinde ve <yboyut> yüksekliğinde çok satırlı bir metin aracı tanımlar. Metin aracının kimliğini (ID) döndürür. Bu araçtaki metin düzenini ayarlamak için HUGOPTIONS içindeki MARKUP özelliğine de bakınız.
ENABLE
[değiştir]ENABLE(araç)
Tür: yöntem
(DISABLE ile dondurulmuş) bir aracı serbest bırakır, böylece kullanılabilir.
ENTRY
[değiştir]ENTRY("metin", xboyut, yboyut)
Tür: fonksiyon
<xboyut> genişliğinde ve <yboyut> uzunluğunda boş veya biraz metin içeren bir metin girisi oluşturur. Oluşturulan metin girisinin kimliğini (ID) döndürür.
FILEDIALOG
[değiştir]FILEDIALOG("metin", "başlık", xboyut, yboyut, davranış)
Tür: fonksiyon
Dosya gezginli bir iletişim kutusu oluşturur. İletişim kutusu <davranış>a bağlı olarak "Dosya Aç" (0), "Dosya Kaydet" (1), "Klasör Seç" (2) veya "Klasör Oluştur" (3) için kullanılabilir.
Varsayılan olarak iletişim kutusu gizli olacaktır. Onu görülebilir yapmak için SHOW fonksiyonunu kullanınız. Oluşturulan iletişim kuüusunun kimliğini (ID) döndürür.
FOCUS
[değiştir]FOCUS(araç)
Tür: yöntem
Odağı bir araca yerleştirir.
FONT
[değiştir]FONT(araç, "Font adı")
Tür: yönerge
Bir araç için font tanımlar. Örnek:
FONT(pencere, "Luxi Mono 12")
FONT(dugme, "Arial 15")
FRAME
[değiştir]FRAME(xboyut, yboyut)
Tür: fonksiyon
<xboyut> genişliğinde ve <yboyut> uzunluğunda bir çerçeve tanımlar. Oluşturulan çerçevenin kimliğini (ID) döndürür.
GET
[değiştir]GET(araç)
Tür: yöntem
Araca bağlı olarak, araçtan bir değer alır. Geçerli davranış aşağıdaki tabloda gösterilmektedir.
Araç |
Değer davranışı |
---|---|
Window |
0 = pencereli, 1 = tam ekran |
Button |
0 = basılmamış, 1 = basılmış |
Toggle |
0 = basılmamış, 1 = basılmış |
Stock |
0 = basılmamış, 1 = basılmış |
Check |
0 = işaretlenmemiş, 1 = işaretlenmiş |
Radio |
0 = seçilmemiş, 1 = seçilmiş |
Entry |
Etkisi yok |
Password |
0 = içerikler görünemez, 1 = içerikler görülebilir |
Mark |
0 = seçilemez, 1 = seçilebilir |
Combo |
Açılan kutuda seçilen satırın indeks numarasını alır |
Progressbar |
İlerleme çubuğunun ilerleme yüzdesini alır |
Hseparator |
Etkisi yok |
Vseparator |
Etkisi yok |
Frame |
Etkisi yok |
Edit |
Metnin satır sayısını alır |
List |
Listedeki seçili satırın dizin numarasını alır |
Spin |
Geçerli değeri alır |
Notebook |
Geçerli sekme numarası değerini alır |
Msgdialog |
Etkisi yok |
Filedialog |
Etkisi yok |
Image |
Etkisi yok |
Clipboard |
Etkisi yok |
Hslider |
Geçerli değeri kaydırıcıdan alır |
Vslider |
Geçerli değeri kaydırıcıdan alır |
GETPROPERTY
[değiştir]GETPROPERTY(araç, "özellik", değişken)
Tür: yönerge
Bir aracın özelliğinin değerini değişkene döndürür. Örnek:
DECLARE t$ GETPROPERTY(pencere, "title", ADDRESS(t$))
GRAB$
[değiştir]GRAB$(araç)
Tür: yöntem
Araca bağlı olarak, metni alır. Geçerli davranış aşağıdaki tabloda gösterilmektedir.
Araç |
Davranış |
---|---|
Window |
Başlık çubuğundan metni döndürür |
Button |
Düğmedeki başlığı döndürür |
Toggle |
Düğmedeki başlığı döndürür |
Stock |
Düğmeden mevcut metni döndürür |
Check |
Onay düğmesinin yanındaki başlığı döndürür |
Radio |
Radyo düğmesinin yanındaki başlığı döndürür |
Entry |
Girideki metni alır |
Password |
Şifreden metni alır |
Mark |
Etiketten (Mark) metni alır |
Combo |
Açılan kutudan geçerli seçimi alır |
Progressbar |
İlerleme çubuğundan metni alır |
Hseparator |
Etkisi yok |
Vseparator |
Etkisi yok |
Frame |
Çerçeveden başlığı alır |
Edit |
Çok satırlı düzenleyiciden tam metni alır |
List |
Listeden geçerli seçilmiş satırı alır |
Spin |
Etkisi yok |
Notebook |
Aktif sekmedeki başlığı döndürür |
Msgdialog |
Mesaj iletişim kutusundaki metni döndürür |
Filedialog |
Dosya iletişim kutusundaki seçili dosya adını döndürür |
Image |
Görüntülenen dosya adını döndürür |
Clipboard |
Panodan metni alır |
Hslider |
Etkisi yok |
Vslider |
Etkisi yok |
HIDE
[değiştir]HIDE(araç)
Tür: yöntem
Bir aracı gizler ve o araç görünmez olur.
HSEPARATOR
[değiştir]HSEPARATOR(boyut)
Tür: fonksiyon
<boyut> uzunluğunda yatay bir ayırıcı çizgi oluşturur. Oluşturulan ayırıcının kimliğini (ID) döndürür.
HSLIDER
[değiştir]HSLIDER(xboyut, yboyut, başla, bitir, adım)
Tür: fonksiyon
<xboyut> genişliğinde ve <yboyut> yüksekliğinde yatay bir kaydırıcı oluşturur. Değer aralığı, <adım> adım ölçüsü ile <başla> ve <bitir> tarafından belirlenir. Oluşturulan kaydırıcının kimliğini (ID) döndürür.
HUGLIB$
[değiştir]HUGLIB$("tip")
Tür: fonksiyon
HUG tarafından kullanılmakta olan gerçek arka uç kütüphanesini döndürür. Bağımsız değişkenler aşağıdakilerden biri olabilir:
- "gtk" - geçerli GTK kitaplığı sürümü
- "gdk" - geçerli GDK kitaplığı sürümü
- "glib" - geçerli Glib kütüphanesi sürümü
- "gobject" - geçerli Gobject kitaplığı sürümü
- "pango" - geçerli Pango kütüphanesi sürümü
- "glarea" - geçerli GtkGlArea kitaplığı sürümü
- "glext" - geçerli GtkGlExt kütüphanesi sürümü