LibreOffice eklentileri .oxt uzantılı bir sıkıştırılmış dosya ile LibreOffice'e ekleniyor.
- 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from zipfile import ZipFile | |
import os, os.path, sys | |
scriptdir = os.path.dirname(os.path.abspath(sys.argv[0])) | |
extensionname = open( | |
os.path.join(scriptdir, 'extensionname.txt')).readlines()[0].rstrip('\n') | |
with ZipFile(extensionname, 'w') as build: | |
os.chdir(scriptdir) | |
for root, dirs, files in os.walk('.'): | |
for name in files: | |
if not name == extensionname: | |
build.write(os.path.join(root, name)) |
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!