Gambas: Linux İçin Basic

ArticleCategory:[]

Software Development

AuthorImage:[Author image]

Jonas Alvarez

TranslationInfo:[Translation info]

original in es Jonás Alvarez

es to en Miguel Alfageme Sánchez, Samuel Landete Benavente.

en to tr İnanç Özçubukçu

AboutTheAuthor:[]

Jonás Alvarez unix ve windows ortamlarında uzun yıllar uygulama geliştirici olarak çalıştı. Diğer yandan birçok O.S., Ağ ve Geliştirme kursları vermiştir.

Abstract:[Pequeño sumario del artículo]

Gambas, Linux için erişilebilir bir Basic Programlama Dilidir. Günlük işler için Gambas'ın ne kadar basit fakat güçlü olduğunu görebileceğimiz bir örneği burada geliştireceğiz.

ArticleIllustration:[Ilustración para la cabecera del artículo]

Dibujo de una gamba

ArticleBody:[Article content]

Giriş

En yaygın ve basit programlama dillerinden birisi, temelde yeniler için, Basic'tir. Şu ana kadar Basic için en yaygın uygulama geliştirme ortamı Microsoft Visual Basic IDE idi. Son zamanlarda Linux kullanıcı makinelerine Linux yayılmakta. Sunucularla ve Guru ların kullanımıyla sınırlı kalmayıp istemci bilgisayarları için OS olmaya başlamış, elektronik mesaj okuma gereksinimlerina cevap verebilir, sanal yörede dolaşabilir ve dosya değiştirebilir olmuşlardır. Bunu takiben bazı Basic geliştirme ortamları artık mevcuttur. Gambas yazımızda da görüldüğü üzere BASIC geliştirme için grafik arayüzlü bir ortamdır. Visual Basic ile benzer programlama tarzları olmasına karşın, sonradan göreceğimiz üzere farklılıkları vardır. Kullanacağım sürüm SUSE 9.0 dağıtımı üzerinde 0.64a'dır. Bu satırları yazarken Gambas proje sayfası 'nda son sürümün 0.81 olduğunu görüyoruz ancak bu bizim yazımızı etkilemiyor.

Gambas ile kimler ilgilidir?

Bir süredir Visual Basic uygulamaları geliştiricisi olarak bu örneği oluşturmak için sadece başlangıç yaptım, daha fazlasına gereksinim duymadım. Bu benim Gambas ile ilk tanışmam ve gözüken o ki Visual Basic kullanmış herhangi birisi Gambas'ı kullanabilir. Basic'in birçok şey için ne kadar yararlı olduğunu gösterir bir örnek olabilir.

Örnek

Madem ki yaparak öğrenmeyi seviyorum, ekranda gerisayım aracı olan bir basit bir saat uygulaması örneğiyle başlayalım. Zamanı değiştirebilir, istediğimiz zaman durdurup yeniden başlatabiliriz.

Gambas'ı çalıştırır çalıştırmaz yardımcısı ile karşılaşıyoruz:

startup


New Project seçeneğini seçiyoruz. Sonraki ekranda Project Name bize soruluyor. Projemize CountDown adını veriyoruz.Second Dialog da project directory seçmeliyiz. Çalışma dizinimizi seçiyor ve aşağıdaki kutucuğuna yaratacağımız dizin adını giriyoruz.

new project


Eğer ilk kez Gambas çalıştırıyorsak yada seçeneği iptal etmediysek günün ipucunu göreceğiz. Bizi ilgilendiren birşey var mı diye bakıyor ve pencereyi kapatıyoruz. Çalışma ortamının içerisindeyiz, çalışmaya hazırız. Masaüstünde birçok pencere görebiliriz. Eğer KDE gibi bir ortam içerisindeysek, birçok masaüstü ile bir tanesini Gambas ile ilişkilendirmek isteyebiliriz. Kişisel olarak genelde ilk aktifleştirdiğim seçeneklerden birisi her masaüstünün kendi ikonlarını göstermesidir.

Uygulamanın ana formunu oluşturuyoruz. Bunun için proje ekranının her hangi bir yerinde sağ tuşa basıyor ve yeni bir form oluşturuyoruz.

new form


Form ismini belirtiyoruz, örneğimizde FCountDown, geri kalan tüm değerleri kabul edildiği şekilde bırakıyoruz.

new form dialog


Şimdilik boş olmakla beraber ilk formumuzu yaratmış bulunmaktayız.

form


Burada saatimizin sahip olacağı denetimleri ekleyeceğiz. Formumuza ekleyeceklerimiz için element araççubuğuna tıklıyoruz. denetimlerin üzerinden fareyi geçirirsek isimlerini görebiliriz. Çift tıklama ile denetim formun sol üst köşesine yerleşir. Tek tıklama ile boyutunu değiştirebilir, formun istediğimiz yerine taşıyabiliriz. Programımız için bir Etikete, Text Kutusuna, Sayaca, İki Butona ve bir ToggleButton'a gerek olacak.

controls


Tüm denetimler yerinde olduğunda şuna benzer bir şey (az yada fazla, herkes kendi istediğini koyabilir) elde etmeliyiz :

controls in place


denetimleri forma koyduktan sonra isimlerini bizim için anlamlı olacak şekilde değiştiriyoruz. Bunu için Property sheet in Name özelliğini kullanıyoruz. Eğer Properties sheet 'i ekranda görebilirsek proje ekranından özellik seçeneğinden aktive edebiliriz. Aramak için faremizi butonların üzerinde gezdirebiliriz.

Label1 isimli denetimi lblContador olarak değiştiriyorum: denetimi tıklıyorum ve sonra Property Sheet içerisindeki ismini değiştirebiliyorum. Bunu için Name özelliğini kullanıyor ve lblContador 'u değer olarak atıyorum. Bundan sonra yazı boyutunu daha büyük bir tanesiyle değiştiriyorum. Bunun için butonun font özelliğinden Courier Bold 72 'u seçiyorum ve Kabul (OK) diyorum. Aynı yolla, ToggleButton1 ismini tglFuncionando olarak değiştiriyorum. TextBox1 denetim txtSegundos, Timer1 denetim clkMiReloj, Button1 ise cmdPonerSegundos oluyor ve son olarak Button2'yu cmdSalir olarak adlandırıyorum. Bunun yanısıra txtSegundos AlignmentRight olarak değiştiriyorum.

Ve temel kodu çalıştırıyoruz. Oldukça basit ve dizimde çok katı değil. İlk yaptığımız formda gördüklerimizi daha gerçekçi değerlerle değiştiriyoruz. Basic'ten beri seçeneklerin çoğunluğunun değişmesine karşın denetim özelliklerinden de bunu yaparak aynı sonuca ulaşabilirdik.

Form açılır açılmaz istediğimiz başlıkları dolduruyoruz. Form açılır açılmaz derken bir olayı idare etmekten bahsediyorduk: formu açmak. Bunu için formun denetim olmayan bir kısmına çift tıklıyoruz. Açılan pencereyi düzenliyor ve faremiz yeni bir prosedürün içerisine yerleşiyor: Public Sub Form_Open() (eğer daha önce Visul Basic'te programladıysak Form_Load 'ı kullanabiliriz. lblContador denetimini gerisayımda öngörülen saniyeleri göstermek için kullanacağız. Kodun ilk satırları şuna benzemektedir:

' Gambas class file
CONST fSegundosPorDefecto AS Float=120.0
fSegundos AS Float

PRIVATE SUB VerValores()
  DIM nMinutos AS Integer
  
  nMinutos = Int(Int(fSegundos) / 60)
  lblContador.Caption = nMinutos & ":" & Format (fSegundos - 
                                                nMinutos * 60, "00.0")
END

PRIVATE SUB VerActivarDesactivar()
  IF tglFuncionando.Value THEN
    tglFuncionando.Text = ("&Detener")
  ELSE
    tglFuncionando.Text = ("&Arrancar")
  ENDIF
END

PUBLIC SUB Form_Open()
  fSegundos = fSegundosPorDefecto
  VerValores
  tglFuncionando.Value = FALSE
  VerActivarDesactivar
  txtSegundos.Text = fSegundos
  cmdPonerSegundos.Text = ("&Reiniciar")
  cmdSalir.Text = ("&Salir")
END

Gambas'ın oluşturduğu Gambas class file bilgisi arkasına 120 saniye (iki dakika) değeri ile saniye sayılarını tutan bir sabit fSegundosPorDefecto ve gerisayımı durduracak bir değişken fSegundos ekledik. İki prosedür daha yarattık: VerValores, gerisayım değerlerini canlandırıyor ve VerActivarDesactivar, Start/Stop butonundaki yazıyı değiştiriyor.

Bu noktada zaten çalışan bir formumuz bulunmakta. Kullanışlı bir şey yapmasa da şu ana kadar neler yaptığımızı anlamamıza uzaktan yarayan denenebilir bir şey. Projenin anasayfasından yaptığımız değişiklikleri kaydediyoruz Project CountDown ve F5 ile yada aynı ekranın buton barındaki Execute butonu ile uygulamayı çalıştırıyoruz. Görmemiz gereken:

Project CountDown


Eğer bu ekranda belirmez yada hata alırsak yaptıklarımızı gözden geçirmeliyiz. Start, Reset yada Exit 'e bastığımızda hiçbir sonuç alamıyorsakta gözden geçirmeliyiz. İkinci işimiz şu olacak: Bir takım yöntemle butonlara olay atayıp kullanıcı bunlardan birine dokunduğunda oynayacak. Devam etmeden önce uygulamamızla biraz oynayarak tüm içerdiklerini keşfedelim. Kapatmak için sağ üst köşedeki X'e basabiliriz. Formlarda görebileceğiniz gibi KDE kullanıyorum ve pencerenizi başka yöntemle kapatmanın yolu muhtemelen vardır.

Buton özelliklerinden en sabiti üzerinden gidelim: kullanıcı Exit 'e basınca ne olmalı? Uygulamayı sonlandırmalıyız. Bunu sağlamak için temel kodu verebilmek için buton üzerindeki Exit yazısına çift tıklıyoruz (cmbExit). Görüyoruz ki Gambas bir takım kod satırları oluşturmakta ve faremiz bunların arasında durmakta. İşte kodun girilmesi gereken yer burası. Bu prosedür kullanıcı bu butona tıkladığı zaman çalışacak. Uygulamayı kapatmak için Me.Close 'u işletmeliyiz. Bu olayın kodu şu olacak:

PUBLIC SUB cmdSalir_Click()
ME.Close
END

Denetleyeceğimiz diğer bir buton da Reset. Aynı yolla: butona çift tıklıyoruz ve Gambas'ın bize gösterdiği kod içerisine şunu ekliyoruz:

PUBLIC SUB cmdPonerSegundos_Click()
fSegundos = txtSegundos.Text
VerValores
END

Bu noktada halen bir şey olmuyor gibi duruyor. Uygulamamız bazı tepkiler vermeli. Baştan itibaren formda yer alan Timer objesini aktive edeceğiz. Bunun için saat olaylarını alacak olan aracıyı ayarlıyoruz. Bunu önceki olaydan Form_Open kodtan yapıyoruz yada form içerisine koyuyoruz. Şimdi şu şekilde yapıyoruz. Formda Timer objesini tıklıyor ve property sheet içerinden Delay değerini her onuncu saniyede bir olayı almak için 1000ms 'den 100'e değiştiriyoruz. Bu bizim saat durdurucumuzu belirleyecek.

Halen saat her hareketlendiğinde çalışacak ve onu aktive edecek yolumuz yok. Saat kodunu oluşturmak için her zamanki basit yöntemle saat formuna çift tıklıyoruz. Bu bizi sağ tarafta kod penceresine götürecek. Kodumuzu yerleştirdikten sonra görünmesi gereken şu şekildedir:

PUBLIC SUB clkMiReloj_Timer()
  IF fSegundos < 0.1 THEN
    tglFuncionando.Value = FALSE
    tglFuncionando_Click
  ELSE
    fSegundos = fSegundos - 0.1
    VerValores
  END IF
END

Ve sonunda saat durdurucu düğmeyi aktifleşiyoruz. Ancak henüz idaresini yapmıyoruz. Çift tıklama ile bu olay için kodu girebiliriz:

PUBLIC SUB tglFuncionando_Click()
  clkMiReloj.Enabled = tglFuncionando.Value
  VerActivarDesactivar
END

Ve çalışmamızı test edebiliriz.

Son nokta: Gambas olması gerektiği gibi çoklu dil desteğine sahiptir.

Eğer koda bakacak olursanız değerlerin parantez içerisinde olduğunu göreceksiniz. Gambas bunları tercüme edecektir. Formun yazı denetimi için bu gerekli değildir. Projemiz çok kullanışlı bir hal aldı ve insanlar kendi dillerinde görmek istiyorlar. Proje penceresinde Project / Properties menüsüne gidiyoruz.

project properties

Burada projemize bir Başlık belirliyoruz ve dialogların tercümesine imkan sağlıyoruz. Şimdi aktif menülerde yeni bir seçeneğimiz var: Project / Translate. Dialoğu açarsak çevirinin çok sezgisel olmadığını görürüz:

project translation

Önce üst kısımda hedef dili seçiyoruz. Bir değeri çevirmek istediğimizde seçiyor ve buton kısmını işaretliyoruz. Bir kez tüm değerler çevrildi mi denemeyi eğer LANG değişkenini ayarladıysak yapabiliriz. Eğer çevirinin ingilizcede nasıl göründüğüne bakmak istiyorsam Gambas'ı kapatıyor ve şunu işletiyorum:

$ LANG=en_US; gambas

Önceki duruma dönmek için KDE menüsünden Gambas'ı çağırıyorum. Bunun sebebi sadece çevre değişkeninin henüz belirlenmemiş olması ve bu sebeple konsoldan erişilebilmesidir.

Sonuç

Orta seviye bir dil olması ve tüm Gambas'ın yüklü olması gerekmekle beraber Linux masaüstü uygulamaları geliştirmek için başlangıç amaçlı olarak iyi bir seçenek. Gördüğümüz gibi oldukça basit ve geliştirme oldukça hızlı. Birçok günlük uygulama için yeterli.

Ekran üstü yardımları File/Open example menüsüne kıyasla neredeyse tamam. project web adresini de ziyaret edebiliriz. Bağlantılar kısmında ilgimizi çekebilecek birçok proje bulabiliriz. Gelecek görebildiğim bir projenin sadece başlangıcıdır bu.