7 Ağustos 2016 Pazar

LibreOffice Calc Bileşeni İçin TC Kimlik No Kontrol Eklentisi

Selamlar,
LibreOffice Calc bileşeni için BASIC ile yazdığım bu eklenti, bir sütundaki TC kimlik numaralarının geçerli olup olmadığını kontrol ediyor.



Kullanıcıya kimlik numaralarının hangi satır ve sütundan başladığını soruyor, eğer kimlik numaraları geçerli değilse geçerli olmayan numaraların rengini kırmızı olarak değiştiriyor.




Numaralar düzeltilip eklenti tekrar çalıştırıldığında numaranın rengini tekrar siyah olarak değiştiriyor.




BASIC ile yazılmış eklentilerin LibreOffice tarafından çalıştırılması bir macro çalıştırılıyormuş gibi yapılıyor.
LibreOffice'te macroların çalıştırılması içinse Kütüphane > Modül > Macro hiyerarşisinde yazılmış olması gerekiyor.
Bu nedenle eklenti de aynı hiyerarşi ile yazılmalı.

Kütüphane olarak bir dizin, modül olarak bu dizinin altında eklentinin kodları bulunan bir dosya ve bu dosya içinde macro gibi çalıştırılacak olan fonksiyon ve alt yordamlar bulunmalı.

Eklentide bir ileti penceresi bulunması için bu pencere de kütüphaneye eklenmiş olmalı.

Eklentinin hiyerarşik olarak çalıştırılma işi Addons.xcu dosyasında
        <prop oor:name="URL" oor:type="xs:string">
          <value>macro:///TcNoControl.TcControl.TcKimlikKontrol</value>
        </prop> 
ile belirtiliyor.

Burada TcNoControl kütüphane ismi, TcControl modül ismi ve TcKimlikKontrol ise macro ismi olarak yer alıyor.

Bu yazıda bahsettiğim python eklentisinin aksine bu eklentide manifest.xml dosyasından kaynak olarak çağırılacak tek bir dosya yerine şu şekilde belirtilen kütüphane dizini çağırılıyor:
 <manifest:file-entry manifest:full-path="TcNoControl/" manifest:media-type="application/vnd.sun.star.basic-library"/>

Kütüphane dizininin içinde bulunan dosyalardan hangi dosyanın modül dosyası olarak çağırıldığını belirtmek için script.xlb adında bir dosya bulunuyor ve çağırma işi şöyle yapılıyor:
<library:library xmlns:library="http://openoffice.org/2000/library" library:name="TcNoControl" library:readonly="false" library:passwordprotected="false">
 <library:element library:name="TcControl"/>
</library:library>

Eklentinin sorunsuz olarak çalışabilmesi için modül dosyası olan TcControl dosyası belirtilen xml etiketi içinde html kodlaması ile kodlanmış olmalı.


Her şey formata uygun olarak yazıldıktan sonra eklenti dosyalarının bulunduğu dizine girip
zip -r TcControl.oxt ./*
komutuyla oxt uzantılı dosyayı oluşturduktan sonra eklenti kullanılabilir hale geliyor.

Github üzerinden eklentinin kodlarına ulaşabilir, depo içindeki oxt uzantılı dosyadan eklentiyi LibreOffice'e ekleyebilirsiniz.

Hoşçakalın!


Sihirli Düğme

Selamlar,
Yine bir LibreOffice eklentisiyle karşınızdayım. Bu eklenti çalışma esnasında işler iyiye gitmediğinde her şeyi düzelmek için iyi bir yardımcı.
Karşınızda sihirli düğme!
The magic button sitesinin bir türevi olan ve BASIC dilinde yazdığım bu eklenti sayesinde sıkıntılarınızdan kısa süreliğine de olsa kurtulmanız mümkün.

Eklentiyi LibreOffice'e ekledikten sonra herhangi bir bileşende araç çubuğuna eklenen düğme yardımıyla çalıştırabilirsiniz.






Bir süre bekledikten sonra mutlu sona ulaşıyoruz. :)




Eklentinin kaynak koduna Github üzerinden ulaşabilirsiniz.

Hoşçakalın!

18 Temmuz 2016 Pazartesi

LibreOffice İçin Eklenti Geliştirmek

Selamlar,
LibreOffice eklentileri .oxt uzantılı bir sıkıştırılmış dosya ile LibreOffice'e ekleniyor.



Eklentinin düzgün bir şekilde LibreOffice'e eklenebilmesi ve çalışabilmesi için bu .oxt uzantılı dosyanın içeriğinde mutlaka bulunması gereken birkaç dosya var:


  • description.xml (Bu dosyanın içinde eklentinin versiyonu, LibreOffice içinde hangi isimle çağırılacağı, bir simgesi varsa simgesi, eklentinin görüntülenecek olan adı, varsa bağımlılıkları, yayımcısı, ve lisansı hakkında bilgilere ulaşmak için gerekli dosyaların tam yolları yer alıyor.)

  • description/license.txt (Bu dosyada eklentinin lisansı hakkında bilgiler yer alıyor.)

  • META-INF/manifest.xml (Bu dosyanın içinde eklentinin LibreOffice içinde nasıl çağırılacağı bilgisi yer alıyor. Bu dosyada kullanılan format ve isimlendirme, eklentinin yazıldığı programlama diline göre değişebiliyor. Bu dosya hakkındaki detaylı bilgiye ulaşmak için bu linki kullanabilirsiniz.)

  • Addons.xcu (Eklenti yüklendikten sonra arayüzde nasıl bir değişiklik olacağı bu dosyada belirleniyor.)

  • TinyCopy.py (description.xml dosyasında identifier value ile belirtilen eklentinin amacını yerine getiren asıl kod bu dosyada yer alıyor. )

  • Eğer eklentinin bir simgesi varsa bu simge images dizininde bulunmalı.

  • Ayrıca eklenti yöneticisinde de eklentinin simgesi bulunacaksa bu simge de description dizininde bulunmalı.




Bu dosyaları oluşturduktan sonra şu betik yardımıyla .oxt dosyasını oluşturuyoruz:
  • build
Bu betiğin sorunsuz çalışması için extensionname.txt isimli içinde eklentiadi.oxt bulunan bir dosya da çalıştığımız dizinde bulunmalı.


TinyCopy Eklentisi

Eklenti yazmak için kullanmanız gereken dil konusunda bir kısıtlama yok ama eklentilerin çoğu python, java ya da basic ile yazılmış.

Bu eklenti işi nasıl oluyormuş diye kurcalarken temel seviyede bir iş yapan ve pythonla yazılmış bu eklenti ortaya çıktı.

LibreOffice'i açıp eklenti yöneticisi ile TinyCopy.oxt dosyasını seçerek eklentiyi eklemek istediğimizde lisans sözleşmesi karşımıza çıkıyor.






Sözleşmeyi kabul ettiğimizde eklentimiz eklenti yöneticisindeki yerini alıyor.






Calc bileşeni için yazmış olduğum bu eklentide LibreOffice kodunda hiç bir değişiklik yapmadan eklediğim simgeye tıklayarak A1 hücresinde yazılı olan veriyi B1 hücresine direk olarak kopyalayabiliyoruz.






Eklentiyi oluşturan dosyalar ve .oxt formatı github'da mevcut. Eklentinin nasıl çalıştığına dair daha detaylı bilgi sahibi olmak isterseniz bakmakta fayda var.


Hoşçakalın!




11 Nisan 2016 Pazartesi

LibreOffice Dil Değişikliğinde Yeniden Başlatma Penceresi

Selamlar,
LibreOffice'te kullanıcı arayüzü dilini değiştirdiğimizde dil değişikliğinin etkin olabilmesi için baştan başlatılması gerekiyor. 
Bu yamadan önce dili değiştirip pencereyi kapatmak için “Tamam” düğmesine bastığımızda LibreOffice’i baştan başlatmanız gerektiği söyleyen bir uyarı penceresi açılıyordu.



Hata kaydında dil ayarları penceresine yeniden başlat diye bir düğme eklenmesi istenmişti ama neden yeniden başlatıldığıyla ilgili hiçbir açıklaması olmayan bu düğmeyi eklemek yerine daha iyi olduğunu düşündüğüm bir çözüm yoluyla yamayı yolladım.


Yamadan sonra dili değişitirip tamam düğmesine basınca "LibreOffice'in arayüz dili değişikliğinin etkili olabilmesi için yeniden başlatılması gerekiyor" diye uyarı veren, şimdi yeniden başlat ve daha sonra yeniden başlat düğmeleri bulunan pencere yerini aldı.

LibreOffice 5.2.0 sürümüyle birlikte dili değiştirdiğimizde kendimiz yeniden başlatmak yerine bu pencereyi kullanacağız.

Hoşçakalın! :)

30 Mart 2016 Çarşamba

Özgür Yazılım Ve Linux Günleri 2016

Selamlar,
Bu sene on beşincisi düzenlenen Özgür Yazılım ve Linux Günleri, 26 - 27 Mart'ta İstanbul Bilgi Üniversitesi Santral Kampüsü'ndeydi.
Geçtiğimiz Eylül'den beri İstanbul'a uğramamış olmam ve 6 ayda İstanbul trafiğinin iyice zıvanadan çıkmış olması hasebiyle Tuzla'dan yola çıkıp Eyüp'e ulaşmam bir hayli uzun sürdü. Sonucunda Chris Hoca'nın açılış konuşmasını kaçırdım ve hatta Barış Büyükakyol'un "Özgür Yazılım, Özgür Kültür" seminerinin sonuna yetişebildim.

Etkinliğin ilk günü katıldığım bir diğer oturum ise +Aydan Taşdemir'in (a.k.a Reyiz) "Pgbarman ile PostgreSQL yedekleme" idi.

İlk gün öğleden sonra etkinlikten etkinliğe görebilme fırsatı bulduğum Kripton insanlarıyla sohbet ederek geçti.

İkinci gün +Necdet Yücel ve +Kaan Ozdincer'in "Yine Yeniden Özgür Yazılım" semineriyle oturumlara katılmaya başladım. Süre sınırı olmasa uzun uzun dinlesek dediğim bir seminerdi.

Öğleden sonra Fatih Kadir Akın ve +Halil Kaya'nın "Türkiye'de Hackathon Kültürü ve Özgür Hackathon'lar" seminerine katıldım.

Bu seminerin hemen ardından benim de konuşmacılar arasında yer aldığım "LibreOffice Geliştirme ve Yaygınlaştırma" çalışma toplantısını gerçekleştirdik.
LibreOffice Çanakkale ekibi olarak (+aybüke özdemir+Gülşah Köse+İrem Şendur+Burçin Akalın+yeliz taneroğlu+Ayşe Melike Yurtoğlu+Kerem Hallaç+Feyza Yavuz+Kader Tarlan ve +Ahmet Can KEPENEK) bugüne kadar LibreOffice'e olan katkılarımızdan bahsettik,
LibreOffice'in Türkiye'de geliştirimesini nasıl yaygınlaştırırız?
LibreOffice'in Türkiye'de kullanılmasını nasıl yaygınlaştırız?
sorularına cevap arayarak toplantıyı sonlandırdık.

Bu özgür yazılım günleri, konuşmacı olarak katıldığım ilk etkinlik olarak kayıt defterimde yerini aldı.  :)
Etkinlik programına buradan ulaşabilir, oturumlar hakkında kısaca bilgi edinebilirsiniz.
Son olarak: Özgür yazılım ulan!
Hoşçakalın!

Dipnot: Daha önce katıldığım özgür yazılım günlerinde alan konusunda bu kadar sıkıntı yaşandığını hatırlamıyorum. Özellikle oturum çıkışlarında birilerine çarpmadan yürümek çok zordu. Bir köşeye geçip sohbet etmek de neredeyse imkansızdı. Keşke daha önceki etkinlik alanı kullanılsaydı.