Ubuntu Türkiye

Masaüstleri => KDE Masaüstü / PLASMA => Konuyu başlatan: mthnzbk - 21 Mayıs 2015 - 04:08:44

Başlık: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 21 Mayıs 2015 - 04:08:44
RSS okuyucu bir uygulama geliştiriyorum. KDE uygulamalarının yanı sıra bazı yazılımlarda da simgeler sistem simgelerinden kullanılıyor. Bu nasıl yapılır? KDE şart değil. Unity olsun, Gnome olsun fark etmez.
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: heartsmagic - 21 Mayıs 2015 - 21:04:53
Çok anladığımdan değil ama bu olay dile bağımlı değil mi biraz? Kısacası masaüstü taraflı araştırmak yerine dil taraflı araştırmak daha doğru olmaz mı?
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 21 Mayıs 2015 - 22:34:36
İngilizce olarak pek bir sonuç alamadım. Gerçi yazdıklarım doğru muydu onu da bilmiyorum :)
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mhmtkrktr - 21 Mayıs 2015 - 22:41:38
@heartsmagic 'in dediği gibi bu konu az da olsa dile bağlı uygulama  değişkenliği gösterebilir. Qt hakkında bilgi sahibi değilim fakat gtk için bir örnek verecek olursak,
.fonksiyon_tanımı:butonun_durumu {
    background-image: url("butonun_bulunduğu_dizin/butonun_adı.png");
}


Butonun_tanımı = program içinde tanımlanmış olmalı,
Butonun_durumu = Butonun pencere değişkenlerine göre hareket kazanmasını sağlar. Örn: active = pencerenin, diğer pencerelerin üzerinde bulunduğu zamanki şekli veya rengi. hover = örn: fare ile aynı buton üzerine geldiğinde, butonun hareketlenmesi veya renk değiştirmesi.
Butonun_dizini = Program için özel bir simge teması kullanılacaksa, dizin yolu girilmeli. Kullanıcı tarafından tanımlanmış, genel bir simge teması kullanılacaksa, ( simgenin adı, bu simge temasının içinde olması şartıyla ) dizin adı girilmeden, doğrudan simge adı girilebilir. Bu şekilde sistemin geneli için, hangi simge teması seçilmişse, program o temadaki simgeyi kullanacaktır.
Butonun_adı = Buton için tanımlanmış isim ve uzantısı. Uzantı tema motorunun desteklediği, png , svg vb. bir format olabilir.

Şu şekilde bir örnek daha açıklayıcı olacaktır;
Program, diğer pencerelerin üzerindeyken kapatma butonu,
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FVVH4hl1.png&hash=ee0c27e523f32cd6f0f8bc1577ca7b5ff30481e9) 
.titlebar .titlebutton.close:active {
   color: transparent;
    border-image: none;
    box-shadow: none;
    background-size: 31px 23px;
    background-position: center;
    background-repeat: no-repeat;
    background-image: url('window-controls/close_focused.png'), -gtk-gradient (linear, left top, left bottom,
                                     from (#6c6c72),
                                     color-stop (0.8,#37383d),
                                     color-stop (0.51,#3b3c41),
                                     color-stop (0.9,#45454b),
                                     to (#6c6c72));
        border-radius: 12px;
}


Fare ile kapatma butonunun üzerine gelince, hover durumu,
(https://forum.ubuntu-tr.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FPumpH1l.png&hash=98d139396f4842ec4500e8abbb4723083e483ffe)
.titlebar .titlebutton.close:hover {
   color: transparent;
    border-image: none;
    box-shadow: none;
    background-size: 31px 23px;
    background-position: center;
    background-repeat: no-repeat;
    border-radius: 12px;
    background-image: url('window-controls/close_focused.png'), -gtk-gradient (linear,  left top, left bottom, 
                                     from (#db5757),
                                     color-stop (0.4,#7c1818),
                                     color-stop (0.55,#6d0303),
                                     color-stop (0.7,#961c1c),
                                     to (#ae5f5f));
}


Burada color, border-image, box-shadow, background-size, her buton için ayrı ayrı verilebileceği gibi, en başa bir kez tanımlanarak, tüm simgeler için aynı standart geçerli yapılabilir.
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: if - 21 Mayıs 2015 - 22:54:59
Qt için sanırım şu: http://doc.qt.io/qt-5/qicon.html
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 21 Mayıs 2015 - 22:56:45
Bunu biliyorum, demek istediğim anlaşılmadı sanırım. Programlamayı geçersek konsol komutuyla bir masaüstü ortamının adını, kullanılan simge setinin adını/yolunu nasıl öğrenebilirim?
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: kaansef - 22 Mayıs 2015 - 01:42:19
Bu linkte masaüstü ortamının adını nasıl alacağınızı göstermiş. 

http://askubuntu.com/questions/125062/how-can-i-find-which-desktop-enviroment-i-am-using
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: htaslan - 22 Mayıs 2015 - 02:07:53
GUI programlama yaklaşımına pek ilgim olduğunu söyleyemem. Ancak programlamaya giriş dersinde hoca problemlere anlık çözümler üretmek yerine kendinizi tekrarlamayacak şekilde uzun vadeli çözümler üretmemizi sürekli söylerdi. Buradan hareketle icon setleri bir yapılandırma dosyasında tutabilirsin. Peki nasıl mı ? Programı kullanacak kişinin kullanıcı kaynaklı problemleri olabilir. Yani sen masaüstü ortamının adını bilip sürekli program çalıştığında bunu döndürmek yerine bunu program kurulurken bir kere çalıştırıp bir konfigürasyon dosyasında tutup oradan alabilirsin. Bu durum maliyeti düşürür. Benim nacizane tavsiyem bunu bash ile halledebilirsin. Bash kodlarını C içerisinde unistd ile çalıştırabilirsin. Araman gereken anahtar kelimelerden execvp olabilir.  Peki konfigürasyon dosyası nedir dersen örneğin dil bazında çalışmak istersen Python, Ruby için yaml, C/C++ için libyaml modülleri sana yol gösterebilir.
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 22 Mayıs 2015 - 03:38:43
Alıntı yapılan: kaansef - 22 Mayıs 2015 - 01:42:19
Bu *bağlantıda masaüstü ortamının adını nasıl alacağınızı göstermiş.

http://askubuntu.com/questions/125062/how-can-i-find-which-desktop-enviroment-i-am-using

os.environ ile masaüstü ortamını buldum -> XDG_CURRENT_DESKTOP = KDE konsolda python yazıp entera bastıktan sonra şu kodu dener misin? KDE dışındaysa masaüstün:

import os
print os.environ["XDG_CURRENT_DESKTOP"]
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: sem - 22 Mayıs 2015 - 10:48:44
Fikir vermesi açısından;

https://forum.ubuntu-tr.net/index.php?topic=24750.0
Bağlantısındaki 

Kısayol Oluşturucu programının ikon tanımlaması?
başlığına bakabilirsiniz. QT ile de benzer bir yol vardır diye tahmin ediyorum.
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 22 Mayıs 2015 - 18:19:55
Malesef. Ben kullanılan simge setinin hangisi olduğunu tespit edir onun ikonlarını kullanacağım. Open, Save, Exit ikonları gibi.
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: sem - 25 Mayıs 2015 - 13:25:57
https://github.com/bitcoin/bitcoin/issues/1222
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: unixmania - 25 Mayıs 2015 - 15:09:42
meraba.Şöyle yapacan:)QIcon undoicon = QIcon::fromTheme("edit-undo");

Farzedelim yukardaki kodun çalıştığı sistemde geçerli tema 'breeze' olsun.İkonu "/usr/share/icons/breeze"  içinde arar.

Temalar Freedesktop'un belirlediği  standarda uyar. Standart belirlenmiş ekşınlar için değişmez isimler sunar, Mesela 'edit-undo'.

Ayrıca icon arama path'larınıda bir standarda kavuşturur.QIcon::themeName() //geçerli temanın adını döndürür.
QIcon::themeSearchPaths()  //ikon arama path'larını döndürür.
Standart isimler burda.

http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

NOT: qt ile alakalı çalışıyorsan dokumantasyonu ('qt5-doc'  arch'taki paketin adı) kursan iyi olur. Onda herşey yazar:İngilizce ama;)
Başlık: Ynt: Programımda KDE simgeleri kullanmak?
Gönderen: mthnzbk - 25 Mayıs 2015 - 16:59:45
İnternet üzerinde Qt belgelerine zaten bakıyorumda bu QIcon'un themeName() i falan dikkatimi çekmemişti. Deniyeceğim. Olursa sonraki sürüme göre uyarlarım.