Vala ile Rize çayı uygulaması
Vala öğrenme amacı ile geliştirdiğimiz basit yazılım Allah'ın izni ile daha önce geliştirdiğimiz Rize isimli yazılıma benzedi.
Öncelikle uygulamanın kaynak kodu ile başlayalım.
Uygulamanın kaynak
dizinindeki rize.vala
kütüğünü aşağıdaki gibi değiştiriniz.
using Gtk;
using Gdk;
using GLib;
using Posix;
[GtkTemplate (ui = "/bir/cay/koy/rize.glade")]
class Pencere : Gtk.Window
{
public Pencere ()
{
ayarlar = new GLib.Settings("bir.cay.koy");
saat.set_label(ayarlar.get_string("saat"));
saatiAyarla = ayarlar.get_boolean("ayarla");
uygulama = ayarlar.get_string("uygulama");
GLib.Timeout.add(1000, saatiAzalt);
show_all();
}
private GLib.Settings ayarlar;
private bool saatiAyarla;
private string uygulama;
[GtkChild]
private unowned Label saat;
private int saniyeyeCevir(string sure)
{
int dakika = sure.split(":")[0].to_int();
int saniye = sure.split(":")[1].to_int();
return dakika * 60 + saniye;
}
private string metneCevir(int sureDakika)
{
int dakika = sureDakika / 60;
int saniye = sureDakika - dakika * 60;
if (dakika > 9)
if (saniye > 9)
return (dakika.to_string() + ":" + saniye.to_string());
else
return (dakika.to_string() + ":" + "0" + saniye.to_string());
else
if (saniye > 9)
return ("0" + dakika.to_string() + ":" + saniye.to_string());
else
return ("0" + dakika.to_string() + ":" + "0" + saniye.to_string());
}
private bool saatiAzalt()
{
int simdikiSaat = saniyeyeCevir(saat.get_label());
// 10 saniye kala saati gizle
if (simdikiSaat < 10)
this.visible = false;
if (simdikiSaat != 0)
simdikiSaat = simdikiSaat - 1;
else
{
Posix.system(uygulama);
return false;
}
saat.set_label(metneCevir(simdikiSaat));
if (saatiAyarla)
{
ayarlar.set_string("saat", metneCevir(simdikiSaat));
return false;
}
return true;
}
private void saatiArttir()
{
int simdikiSaat = saniyeyeCevir(saat.get_label());
simdikiSaat = simdikiSaat + 1;
saat.set_label(metneCevir(simdikiSaat));
if (saatiAyarla)
ayarlar.set_string("saat", metneCevir(simdikiSaat));
}
[GtkCallback]
private bool tusaBasildi(EventKey tus )
{
string tusIsmi = Gdk.keyval_name(tus.keyval);
if (tusIsmi == "a" || tusIsmi == "A")
{
saatiAyarla = !saatiAyarla;
if (saatiAyarla)
GLib.stdout.printf(" - Saati ayarlama açık - \n");
else
{
GLib.stdout.printf(" - Saati ayarlama kapalı - \n");
GLib.Timeout.add(1000, saatiAzalt);
}
}
if (tusIsmi == "minus" || tusIsmi == "KP_Subtract")
saatiAzalt();
if (tusIsmi == "plus" || tusIsmi == "KP_Add")
saatiArttir();
return true;
}
}
int main (string[] secenekler)
{
Gtk.init (ref secenekler);
var pencere = new Pencere();
pencere.destroy.connect(Gtk.main_quit);
Gtk.main();
return 0;
}
Daha önce kullanıcı saati + ve - tuşlarını kullanarak arttırıp azaltabiliyordu.
Burada şu işleve dikkat ediniz.
GLib.Timeout.add(1000, saatiAzalt);
Bu işlev her 1 saniyede, bir diğer ifade ile 1000 mili saniyede saatiAzalt
işlevini çağırıyor.
saatiAzalt
işlevi true
döndürdüğü sürece her bir saniyede saati azaltmaya devam ediyor.
Ama hatırlayabileceğiniz üzere kullanıcı a tuşuna basarak ayar yapabiliyordu.
if (saatiAyarla)
{
ayarlar.set_string("saat", metneCevir(simdikiSaat));
return false;
}
Burada eğer saati ayarlama kipine geçmiş isek false
döndürüyoruz. Böylece bu zamanlayıcı iptal oluyor.
Kullanıcı önceki derslerde olduğu gibi saati ayarlayabiliyor.
10 saniye kala saati gizliyoruz.
// 10 saniye kala saati gizle
if (simdikiSaat < 10)
this.visible = false;
Eğer şimdiki saat 0 değil ise saati azaltmaya devam ediyor. Eğer 0 ise uygulama
isimli uygulamayı çalıştırıyor.
if (simdikiSaat != 0)
simdikiSaat = simdikiSaat - 1;
else
{
Posix.system(uygulama);
return false;
}
Uygulama ayarları bölümüne uygulama isimli yeni bir anahtar ekledik. Bu anahtar süre bitince çalışacak uygulamayı gösteriyor.
uygulama = ayarlar.get_string("uygulama");
Varsayılan olarak süre tamamlanınca dairesel
isimli bir betiği çalıştırıyor. Ama dilerseniz değiştirebilirsiniz.
Uygulamanın kaynak dizinindeki meson.build
kütüğüne aşağıdaki gibi bir ekleme yaptık.
install_data(
'dairesel',
install_dir: get_option('bindir')
)
Bu ifade dairesel ismi betiği çalıştırılabilir dizine kopyalamasını söylüyor.
Aynı dizinde çaycı ve dairesel isimli iki tane betik ekledik.
Bunlardan dairesel isimli betik basitçe fareyi ekranda döndürüyor.
Uygulamanın çalışma şekli gereği fare dönerken durdurabilmeliyiz.
Uygulamayı çaycı
isimli betik kullanarak çağırıyoruz ki uygulama çalışmıyorsa çalıştırsın, çalışıyor ise sonlandırsın.
Veri dizininde bulunan meson.build
kütüğüne uygulama simgesini ve *.desktop uzantılı kütüğü kuran eklemeler yaptık.
Uygulamanın farklı büyüklükteki 16'dan başlayarak 128'e kadar simgelerini ekledik.
Veri dizininde bulunan rize.desktop
kütüğü uygulama hakkında bilgiler içeriyor.
[Desktop Entry]
Type=Application
Icon=rize
Name=rize
Exec=rize
Terminal=false
Hidden=false
Categories=Utility;Clock;
Comment=Rize çayı uygulaması
Örneğin hangi simgeyi tutacağı bilgisini içeriyor.
Uygulamanın kaynağını buradan indirebilirsiniz.
Eğer git kullanarak indirmek indirmek isterseniz
git clone https://codeberg.org/erdem/rizeden.git --branch Ders7
komutu ile bu dersi indirebilirsiniz.
rizeden
dizinin içine giriniz.
cd rizeden
Öncelikle derleme yapacağımız dizini oluşturuyoruz.
meson setup oluştur
Sonra bu oluşturduğumuz dizine girelim.
cd oluştur/
Burada uygulamayı derleyip kurmak için
sudo ninja install
komutunu verebilirsiniz.
Artık uygulamaya rize
yazarak erişebilirsiniz.
Uygulamayı kaldırmak için aynı dizinin içinde
sudo ninja uninstall
komutu vermek yeterlidir.
Eğer Gnome ya da Budgie masa üstü kullanıyorsanız uygulama için kısayol oluşturabilirsiniz.
Diğer masa üstleri için de benzer şekilde kısayol oluşturabilirsiniz.
Ayarlar bölümünden Klavye
bölümünü bulunuz.
En altta bulunanKısayolları Gör ve Özelleştir
bölümüne tıklayınız.
Tekrar en alta gelip buradan Özel Kısayollar
bölümüne tıklayınız. Buradan + işaretine basınız.
Ad
bölümüne Çaycı
Komut
bölümüne çaycı giriniz.
Daha sonra Kısayol Ayarla
tuşuna basınız.
Ctrl - Alt - R
tuşlarına beraber basınız.
Ekle
tuşuna basınız.
Artık Ctrl - Alt - R
tuşlarına beraber bastığınızda Rize uygulaması başlayacak.
Uygulamanın çalışmasını iptal etmek için ya da farenin dönmesini durdurmak için Ctrl - Alt - R
tuşlarına tekrar basınız.
Yorumlar