ILogoPlugin Methodları

Geliştirilecek Logo App ILogoPlugin interface’inden türetilerek geliştirilmelidir. ILogoPlugin doğrudan Logo App ile ilgili bilgilerin sunulacağı arayüzleri içerir.

Logo App geliştiricisi ILogoPlugin tarafından sunulan arayüzler implement etmek zorundadır. 

interface ILogoPlugin
 public interface ILogoPlugin
    { 
        string ExecuteAction(string request);   
        string GetApiKey(string request);
        string GetConfig(string request);
        string GetDescription();
        string GetExtension(string request);
        int GetVersion();
        string GetWidgets();
        string OnEvent(string request);
        void SetHost(LogoPluginHost host);
        string ShowWidget(string request);
    }
class SampleApp:ILogoPlugin
namespace SampleLogoApp
{
    [ComVisible(true)]
    [Guid("82DB21B7-11E0-4E2A-8907-E78EA....")]
    public class Sample : ILogoPlugin
    {
        [DllImport("user32.dll", SetLastError = true)]
        private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
        private ILogoPluginHost m_Host;
        public SamplePluginForm1 frm1;
        public SamplePluginForm2 frm2;
      	AppDomain currentDomain = AppDomain.CurrentDomain;

        public Sample()
        {
            ...
        }

        private string Icon_Image()
        {
            return "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAhFBMVE.....="; 
        }
        public string ExecuteAction(string request)
        {
            return "{}";
        }
        public string GetApiKey(string request)
        {
            return "{}";
        }
        public string GetConfig(string request)
        {
            return request;
        }
        public string GetDescription()
        {
            return "Sample Logo App ......";
        }
        public string GetExtension(string request)
        {
            return "{}";
        }
        public int GetVersion()
        {
            return 1;
        }
        public string OnEvent(string request)
        {
            return "{}";
        }
        public void SetHost(LogoPluginHost host)
        {
            m_Host = host;
        }
        public string GetWidgets()
        {
            return "["
            + "{"
            + " \"tag\" : 1, "
            + " \"name\" : \"Sample Plugin Widget 1\", "
            + " \"header\" : \"Sample Widget 1\", "
            + " \"description\" : \"" + GetDescription() + "\", "
            + " \"settings\":["
            + " ....}"
            + "]";
        }
        public string ShowWidget(string request)
        {
            return "[...]";
        }
 
    }
}


GetDescription

Logo App’i tanımlayan ifadedir. Logo App uygulamasını özetleyecek, geliştiricinin belirlemesi gereken bir ifadedir. Maksimum 255 karakter olmalıdır.
GetWidget arayüzünden çağrılır. Tanım Üründe aşağıdaki Logo App'lerin listelendiği pencerede açıklama alanında çıkacaktır.


GetDescription Örnek
public string GetDescription(){
    return "Logo App Outlook Calender Entegrasyon";
}

GetVersion

Logo App uygulamasının versiyon numarasını belirtilir. Geliştirici tarafından verilmesi gerekir.

GetVersion Örnek
public int GetVersion()
{
    return 1;
}


GetExtention

Bu metod  kullanılarak Üründeki Menü‘ye yeni modül eklenebilir. Oluşturulan modüle veya varolan bir menü grubu altına çalıştırılabilir seçenek eklenebilir.

Şu an için bu arayüz  boş bırakılacaktır.

 Detaylı Açıklama İçin...

Request

Uygulama (Host) “typ” ve “typid” parametreleri ile sorgulama yapar.

Response

Dönüş değerinde  "typ" , "tag", "name", "image" alanları kullanılır. Dönüş değeri olarak array tipinde dönüş yapılır.

Örnek:


public string GetExtension(string request)
{
    return "{}";
}


Örnek request:
{
“typ” :  0,
“typid”:  0
}
 
typ : sorgulanan menü tipini belirtir, alabileceği değerler
Değer
Açıklama
1
Modül
2
Alt menü

typeid : typ ile ile belirtilen tipe ait id.

Bu metod ile aşağıdaki yapıda dönüş yapılır:

[{
    "typ" : 1,
    "tag"  : 1,
    "name" : "Deneme Plugin Menu",
   "image" :  “Icon_Image”
}]


"typ" : menü tipini belirtir, alabileceği değerler:

Değer
Açıklama
1
Mödül
2
Alt menü
3
Çalıştırılabilir uygulama


tag” : menü seçeneğine ait id.

name” : Menü seçeneğine ait başlık bilgisi

image”: PNG formatında, boyutları 48x48 olan, base64  ile kodlanmış resim.



 Örnek ...


Request

Yeni modül varmı?

Reponse

Evet, typ 1, name ...
{ “typ”:1, typid:0}
 
[{
    "typ" : 1,
    "tag"  : 1,
    "name" : "Deneme Plugin Menu",
   "image" :  “Icon_Image”
}]

Request

id’si 1 olan modüle ait bir şeyler varmı?

Reponse

Evet, alt mödül var . typ 2, name ...
{ “typ”:1, typid:1}
[{
   "typ" : 2,
   "tag"  : 2,
   "name" : "Deneme Alt Header  Menu",'+
   "image" : “Icon_Image”
}]

Request

id’si 109 olan alt menüye ait bir şeyler varmı?

Açıklama

Evet, çalıştırılabilir menü var. typ 3, name ...
{ “typ”:2, typid:109}
[{
   "typ" : 3,
   "tag"  : 3,
   "name" : "Deneme İşlem Menusu",
   "image" : “Icon_Image”
}]


ExecuteAction

Ürün tarafında Logo App'e ait menü seçeneğinin tıklandığını gösterir.

Şu an için bu arayüz  boş bırakılacaktır.


SetHost

ILogoPluginHost'u uygulamış nesne, bu metoda parametre olarak geçilir. Logo App'in bu değeri bir değişkende saklaması beklenir.


public class Sample : ILogoPlugin
{
....
    private ILogoPluginHost m_Host;
	public void SetHost(LogoPluginHost host)
	{
		m_Host = host;
	}
...
}

OnEvent

Ürün(Go3,Tiger3) tarafında meydana gelen olaylar bu metodla Logo App'e bildirilir.

Üründe bir form açılığında Logo App'te bir handler çalışmasını istiyorsanız OnEvent arayüzünü kullanmalısınız.


 Click here to expand...

Parametre

Açıklama

eventType

Meydana gelen olayı belirtir Integer değerdir.

formId

Olayın meydana geldiği formun id’si

formName

Olayın meydana geldiği formun adı.

formData

Olayın meydana geldiği forma ait veriler.

controlName

Olayın meydana geldiği controlun adı

controlIndex

Olayın meydana geldiği controle göre değişir. DBGridler’de seçili satırı gösterir.

data

Olayın meydana geldiği forma göre değişir.

Listeleme formlarında açılırken 0 olarak gelirken veri girişi formlarında değişiklik yapılan kayda ait lrefid gelir.

DbGrid’lerde seçili kayda ait lrefid’yi gösterir.

eventType

Açıklama

Örnek

49

Form açıldığı zaman tetiklenir.

{
"formName": "ClFicheBrwForm",
"formData": "",
"controlName": "",
"controlIndex": 0,
"formId": 55,
"eventType": 49,
"data": 0
}
{
"formName": "ItemForm",
"formData": "",
"controlName": "",
 "controlIndex": 0,
"formId": 1001,
"eventType": 49,
"data": 2
}
Refid : 2 olan kaydın seçildiğini gösterir.

50

Form kapatılırken tetiklenir.

{ "formName": "ClFicheBrwForm",
"formData": "",
"controlName": "",
"controlIndex": 0,
"formId": 55,
"eventType": 3,
"data": 0
}

42

Listeleme ekranlarında yeni kayıt butonuna basıldığında tetiklenir.

{
"formName": " ClFicheBrwForm ",
"formData": "",
"controlName": " ClFicheGrid ",
"controlIndex": 55,
"formId": 55,
"eventType": 42,
"data": 1
}

37

Listeleme ekranlarında değiştir butonuna basıldığında tetiklenir.

{
"formName": "CSCardBrw",
"formData": "",
"controlName": "CSCardDataGrid",
"controlIndex": 1,
"formId": 5000,
"eventType": 37,
"data": 1
}

22

Listeleme ekranlarında sil butonuna basıldığında tetiklenir.

{
"formName": "AccFicheBrwFrm",
"formData": "",
"controlName": "AccFicheGrid",
"controlIndex": 904,
"formId": 904,
"eventType": 22,
"data": 1
}

38

Listeleme ekranlarında incele butonuna basıldığında tetiklenir.

{
"formName": "CSCardBrw",
"formData": "",
"controlName": "CSCardDataGrid",
"controlIndex": 1,
"formId": 5000,
"eventType": 38,
"data": 1
}

47

Listeleme ekranlarında kopyala butonuna basıldığında tetiklenir.

{
"formName": "AccBrw",
"formData": "",
"controlName": "AccDataGrid",
"controlIndex": 0,
"formId": 900,
"eventType": 47,
"data": 1
}

34

Grid Listelerinde satır seçildiğinde tetiklenir.

{
"formName": "BnFcBrwForm",
"formData": "",
"controlName": "BnFchBrwData",
"controlIndex": 2,
"formId": 758,
"eventType": 34,
"data": 2
}



 Click here to expand...

Aşağıdaki listede LOD ve LogoApp içinde kullanılan eventlerin listesi bulunmakta.

 LOGO App’lerde tüm eventler kullanılmıyor.


{ Events }


      LEVT_FORMCREATE   = 1;

      LEVT_FORMCLSQRY   = 2;

      LEVT_FORMCLOSE    = 3;

      LEVT_FORMACTIV    = 4;

      LEVT_FORMDEACTIV  = 5;

      LEVT_FORMKEYDOWN  = 6;

      LEVT_CTRLVERIFY   = 7;

      LEVT_CTRLENTER    = 8;

      LEVT_CTRLEXIT     = 9;

      LEVT_CTRLKEYPRESS = 10;

      LEVT_DBLCLICK     = 11;

      LEVT_BTNCLICK     = 12;

      LEVT_COMBOCHG     = 13;

      LEVT_BEFORESAVE   = 14;

      LEVT_AFTERSAVE    = 15;

      LEVT_MENUCLICK    = 16;

      LEVT_TBTNCLICK    = 17;

      LEVT_DBGEDITNEW   = 18;

      LEVT_DBGEDITCUR   = 19;

      LEVT_DBGEDITDUP   = 20;

      LEVT_DBGVIEWCUR   = 21;

      LEVT_DBGDELCUR    = 22;

      LEVT_DBGSELCUR    = 23;

      LEVT_POPUPMENU    = 24;

      LEVT_DBGPREPQRY   = 25;

      LEVT_DBGSETROW    = 26;

      LEVT_FORMSHOW     = 27;

      LEVT_SAVEDATA     = 28;

      LEVT_DELETEDATA   = 29;

      LEVT_MGROWCHANGE  = 30;

      LEVT_POPUPAFTERCLK= 31;

      LEVT_CTRLCHANGE   = 32;

      LEVT_BEFOREDBLCLICK= 33;

      LEVT_DBGROWCHANGE = 34;

      LEVT_DBGAFTERDEL  = 35;

      LEVT_DRAWCELL     = 36;

      LEVT_DBGEDITCHK   = 37;     

LEVT_DBGVIEWCHK   = 38;

      LEVT_ONTIMER      = 39;

      LEVT_POPUPFILTACT = 40;

      LEVT_COMBOFLT     = 41;

      LEVT_DBGNEWCHK    = 42;

      LEVT_MGBEFOREDEL  = 43;

      LEVT_DBGSELCHK    = 44;

      LEVT_MGAFTERDEL   = 45;

      LEVT_MGAROWCHANGE = 46;

      LEVT_DBGDUPCHK    = 47;

      LEVT_DBGSORTFLD   = 48;

      LEVT_FORMAFTERSHW = 49;



GetWidget

Logo App'in sağladığı widget listesini döner. 


Her widget için aşağıdaki alanların tanımlanması gerekir.

Alanadı

Açıklama

tag

Widget için verilen id

name

Widget için isim

header

Widget’i anlatır başlık bilgisi

description

Widget’i anlatır kısa açıklama (Maks.255)

settings

Widget’e ait bilgilerin kaydedilebilmesi için kullanılır. Örneğin: Döviz bilgilerinin kaç dakikada bir yenilenmesi kullanıya sorulup bu veri saklanabilir. Bu alanda kullanıya sorulacak alanlar tanımlanır.

Kullanılabilecek alanlar:


Alan Adı

Açıklama

name

Kullanıcıya gösterilecek alan bilgisi.

typ

Veri girişi türü, aşağıdaki türler tanımlanabilir:

1. string 

2. integer

3. boolean

4. float

5. datetime


Bu türlerin haricinde bir alan tanımlanırsa string kabul edilir.

value

Varsayılan değer.

image

Widget’e ait simge.Png formatında 48x48 boyutlarında base64 ile kodlanır.


Aşağıda örnek bir plugin tanımlaması bulunmaktadır. Plugine ait Ayarlar linkine tıklandığında aşağıdaki gibi bir ekran gelecektir.

[
   {
        "tag" : 1,
        "name" : "Deneme Plugin", '+
        "header" : "COM plugin denemesi", '+
        "description" : "COM Plugin/Widget Örneği.", '+
        "settings":[{ "name" : "Firma", "typ" : "string", "value" : "firma adı"}],
        "image" : "Icon_Image"
   }
]




ShowWidget

Ürün Logo App'in widget göstermesini istediği zaman çağırır.

Request ile parametre olarak “parent”, ”tag”  parametreleri geçilir.

Response olarak “handle” parametresi döner.


Request Parametre

Açıklama

Örnek

parent

Uygulamaya ait Windows Handle. 

Plugin Widget’i oluşturduktan sonra ShowWidget metodu içinde

SetParent metodu kullanılarak uygulama ile ilişkilendirmelidirler.

Örnek :

SetParent(Widget.Handle,parent);
Request:
{
 "parent": 123456789,
 "tag": 1
}

tag

Gösterilecek widget’e ait id.

Response ParametreAçıklamaÖrnek

handle

Oluşturulan widget’e ait Windows Handle. 

Response:
{
 "handle": 1230000
}



GetApiKey

Logo App lisansına ait bilgidir. Ürün tarafından kontrol edilecektir.

API Key, Logo Yazılım tarafından oluşturulur.

Logo iş Ortağı, uygulaması hazır olduğunda

  • progid="namespace.class" bilgisini Logo Yazılıma gönderir.

Logo Yazılım, iş ortağı için Base64 formatında anahtar üretir ve teslim eder.

Üretilen anahtarın kullanımı aşağıdaki kod parçasında belirtilmiştir.

PluginInfo = new PluginInfo
       {      
           . 
           .
           PluginApiKey ="{\"key\":\"clUa0Wq6rqxkLDJrX2......................z+eIHwA==\"}";   
           .  
           .
       }



Page viewed 4594 times by 6 users since Apr 11, 2017



Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım