..:: BİLGİ VADİSİ ::..

..:: BİLGİ VADİSİ ::.. (http://www.bilgivadisi.biz/index.php)
-   Dreambox Plugins (http://www.bilgivadisi.biz/forumdisplay.php?f=754)
-   -   Dreambox Plugin nasil yapilir (http://www.bilgivadisi.biz/showthread.php?t=28279)

yergun_002 29.10.10 05:37

Dreambox Plugin nasil yapilir
 
Toplam 1 Eklenti bulunuyor.
Dreambox Plugin nasil yapilir
Bu tarif Bacicciosat aka Luponero'dan alıntıdır

-Enigma eklentileri C++ programlama dilini kullanır
-Enigma eklentileri Dreambox'da plugin ismi ile çalışırlar.

Her plugin iki kısımdan oluşur:

1- .cfg dosyası (text dosyasıdır)
2- .so dosyası (Bu derlenmiş çalıştırılabilir gerçek uygulama dosyasıdır)

DİKKAT: : Bu iki dosyanın aynı isimde olması ŞARTTIR. Örneğin: demo.so demo.cfg

1) .cfg dosyası hakkında:

.cfg dosyası uygulama hakkındaki genel bilgilerin tutulduğu dosyadır.
Örneğimizde bizde bu standart .cfg dosyasını kullanacağız.
Sizinde değiştirmeniz gereken tek şey .cfg dosyasının "ismi" olmalıdır.
Bu isim sarı tuşa bastığınızda gelen Dreambox Pluginleri listesinde görünen isimdir.

İçeriği şöyledir:


Kod:
name=Demo Enigma Bibledesc=depend=type=2needfb=0needrc=0needlcd=0en igmaplugin=1
2) so. dosyası hakkında:

.so dosyası gerçek uygulama olup kaynak kodun derlenmiş şeklidir.
Kaynak kod C++ lisanında yazılmış olup .cpp uzantısı vardır.
Bu kod daha önce kurduğumuz ortamda derlendiğinde .so uzantılı bir dosya oluşturacak ve biz bunu Dreamboxumuza yükleyebileceğiz.
Neticede yeni bir enigma plugini oluşturabilmemiz için:
-bir .cfg dosyası
-bir .cpp kaynak dosyası
-ve birde .cpp dosyamızı derlemek için gerekli makefile dosyasına ihtiyacımız olacaktır.

Bu 3 dosyada bu tarifede verilmiştir. Dilediğiniz gibi inceleyebilir, değiştirebilir ve derleyebilirsiniz.

3)Kaynak koda genel bir bakış

.so uzantılı dosyamızı elde edebilmemiz için gereken kaynak kodumuz .cpp uzantılı bir dosyada bulunmaktadır.
Bu kaynak kodu olağan bir C++ kaynak kodu olup:
-C ve C++ kütüphaneleri
-Enigma kütüphaneleri
-API (Advanced Graphics Interface)
içermelidir.
Enigma kaynak kodunu gösterebilmek için bunu 4 ana kısma ayırabiliriz:

a)Include dosyaları Bunlar kodumuzun ihtiyaç duyduğu kütüphanelerdir. C, C++ ve Enigma kütüphaneleri olabilir.

b)Klaslar ve Fonksiyon Önermeleri Kaynak kodumuzda kullanacağımız klaslar ve Fonksiyonların önerildiği kısımdır

c)Uygulamanın giriş adresi Enigmanın kodu başlatmak için ihtiyaç duyduğu fonksiyon.

d)Kod Grafik nesnelerin işlenmesi için kullanacağımız normal C++ koduna Enigma API ve fonksiyonları adını veriyoruz.

Buraya kadarki kısmı anladıysak ilk Enigma uygulamamızı yapabiliriz.






Pencere oluşturma ve içine yazma
Ekte:
- .cfg dosyası (Bibledemo.cfg)
- Derlenmiş ve çalışan plugin (Bibledemo.so)
- Kaynak kodu (bibledemo.cpp)
- makefile dosyası (kaynak kodu değiştirirseniz tekrar derleme için ihtiyacınız olacak dosya)

Şimdi çalıştığında Dreambox'un ekrana "Hello World" yazdığı bir plugin yapalım:

Anlatacağımız Enigma API'nin pencere yaratma işlemidir:

Kod:
// pencereyi yarateWindow(int takefocus=0);// pencereyi kapat~eWindow();// pencere başlığını düzenlesetText(eString string);// konumlandırcmove(ePoint(x, y));// ölçeklendircresize(eSize(x, y));

Hangi kodun ne işe yaradığı üstünde yazıyor. Bu kodu yazacağımız ana API nin listesi.

bibledemo.cpp

Herşeyden önce uygulamamızın ihtiyaç duyduğu kütüphaneleri eklememiz gerek. (Örneğimizde Enigma Plugin, Standard C, Enigma Window, Enigma elabel kütüphaneleri gerek)

Kod:
#include <plugin.h>#include <stdio.h>#include <lib/gui/ewindow.h>#include <lib/gui/elabel.h>
Şimdide sınıfların deklare edilmesi gerek:

Kod:
// The Class declaration of our Main Windowclass eBibleMainWindow: public eWindow{ // metni gösterecek etiket eLabel *label;public: // yapıcı eBibleMainWindow(); // yıkıcı ~eBibleMainWindow();};
Sıra giriş noktasının belirtilmesine geldi:

Kod:
// Uygulama giriş noktası.Kod burdan çalışmaya başlıyorextern "C" int plugin_exec( PluginParam *par ){ // demo dialog kısmımız. eBibleMainWindow dlg; //dialogu göster... dlg.show(); // dialoga kontrolu geçir.. (the dialog is modal!) int result=dlg.exec(); // ve gizle. dlg.hide(); return result;}
Burdan itibaren kodumuz çalışmaya başladı. Artık penceremizi yaratabilir ve içinde "Hello Word" yazısını yazdırabiliriz.

Kodumuzda:

1)Ana penceremizi yaratacak,
2)Bu pencereye ekrada bir yer ayarlayacak
3)En ve Boyunu tespit edecek
4)Pencerenin adını koyacak
5)Mesajı göstermek için bir etiket yaratacak
6)Bu etikete bir yer boyut verecek
7)mesajımızıda bu etiketin içine koyacağız

Kod:
eBibleMainWindow::eBibleMainWindow(): eWindow(1){ // dialogumuzu 100.100 poziyonuna ***ürelim cmove(ePoint(100, 100)); // ... x ve y boyutlarını verelim. cresize(eSize(520, 376)); // başlık koyalım. setText("Enigma Bible Lesson 1: Window"); // metni göstermek için bir etiket yaratalım. label=new eLabel(this); // konumlandıralım label->move(ePoint(50, 50)); // boyutlandıralım label->resize(eSize(200, 100)); // metni verelim label->setText("Hello World !!");}

hates35 19.11.10 18:42

tşk
 
paylaşım için teşekkürler.

yenıkan 18.05.11 17:19

teşekürler

albayceyhun 01.06.11 17:15

teşekürler

ifa888 26.12.11 22:41

teşekürler

Eniqma27 13.08.12 14:58

paylaşım için teşekkürler


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 23:03 .

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Dizayn ve Kurulum : Makinist