BaCon/Linux GUI programlama

Vikikitap, özgür kütüphane
BaCon ile Linux programlamaya hızlı bir giriş yapılabilir. Grafik Kullanıcı Arayüzü (GUI) oluşturmak oldukça kolaydır. hug.bac dosyasını indirip program kodunuzun başına INCLUDE "hug.bac" şeklinde bir satır ilave ederek GUI yazabilirsiniz. Aşağıdaki kodla başlığı “Merhaba dünya!” olan bir pencere oluşturabilirsiniz:
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ü