0

私はそのようなPDKプラグインを作成しました:

#include <iostream>
#include <fstream>

#include "PDL.h"
#include "SDL.h"

#define forever for(;;)

using namespace std;

PDL_bool changeUserAgent(PDL_JSParameters * params)
{
    ofstream s("/media/internal/myfile.txt");
    s << "Some content";
    s.close();
    return PDL_TRUE;
}

int main(int argc, char** argv) 
{
    int err = SDL_Init(SDL_INIT_VIDEO);
    if ( err )
    {
        cerr << "Could not init SDL: " << SDL_GetError();
        return 1;
    }

    PDL_Init(0);

    PDL_RegisterJSHandler("changeUserAgent", changeUserAgent);
    PDL_JSRegistrationComplete();
    PDL_CallJS("ready", NULL, 0); //for enyo

    atexit(SDL_Quit);
    atexit(PDL_Quit);

    SDL_Event Event;
    bool paused = false, gotEvent;

    forever
    {
        if (paused) 
        {
            SDL_WaitEvent(&Event);
            gotEvent = true;
        }
        else 
        {
            gotEvent = SDL_PollEvent(&Event);
        }

        while (gotEvent)
        {
            switch (Event.type)
            {
                case SDL_ACTIVEEVENT:
                    if (Event.active.state == SDL_APPACTIVE) {
                        paused = !Event.active.gain;
                    }
                    break;

                case SDL_QUIT:
                    // We exit anytime we get a request to quit the app
                    // all shutdown code is registered via atexit() so this is clean.
                    exit(0);
                    break;

                default:
                    break;
            }
        }

        gotEvent = SDL_PollEvent(&Event);
    }

    return 0;
}

Enyoで私は電話します

enyo.kind(
{
    name: "UserAgentTool",
    kind: enyo.VFlexBox,
    components: 
    [
        // UI components
        {
            kind: enyo.Hybrid,
            name: "plugin",
            executable: "UserAgentTool-plugin"
        }
    ],
    uaclick: function(inSender)
    { 
        this.$.plugin.callPluginMethodDeferred(null, "changeUserAgent")
        enyo.windows.addBannerMessage("User agent changed to " + inSender.getUserAgent(), '{}') 
    }
});

UIボタンは新しい種類です

enyo.kind(
{
    name: "DeviceButton",
    kind: "Button",
    // some other properties
    onclick: "uaclick",
})

DeviceButtonをクリックすると、バナーが正常に表示されます。これは、uaclick「slot」が実行されていることを示しています。ただし、ファイル「/media/internal/myfile.txt」は作成されません。私は何が間違っているのですか?

ありがとう、Marcin

編集:コールバックをどのように使用する必要がありますか?私は本当にEnyoの初心者です:(これは「onclick」と同じですか?

Enyoアプリのappinfo.jsonは次のとおりです。

{
"id": "com.palm.marmistrz.useragenttool",
"version": "1.0.0",
"vendor": "Marcin Mielniczuk",
"type": "web",
"main": "index.html",
"title": "User Agent Tool",
"icon": "icon.png",
"uiRevision":2
}

プラグイン用のappinfo.jsonがありません。単なる実行可能ファイルです。ディレクトリのls-lは次のとおりです。

rw-r--r-- 1 marcin marcin  215 Nov  2 13:09 appinfo.json
drwx------ 3 marcin marcin 4096 Nov  7 15:10 build
-rw-r--r-- 1 marcin marcin  100 Oct 31 18:57 depends.js
-rw-r--r-- 1 marcin marcin   21 Oct 13 14:45 framework_config.json
drwxr-xr-x 2 marcin marcin 4096 Oct 13 14:44 images
-rw-r--r-- 1 marcin marcin  295 Oct 13 14:44 index.html
drwx------ 2 marcin marcin 4096 Nov  7 15:08 plugin
drwxr-xr-x 2 marcin marcin 4096 Nov  7 15:06 source
-rw-r--r-- 1 marcin marcin 8884 Nov  6 17:41 UserAgentTool-plugin

buildは、プラグインイメージをビルドするためのディレクトリです。プラグインは、プラグインソースソースはEnyoソースです。

私はこれを間違ってしましたか?

ありがとう!

4

0 に答える 0