자체 제작 GUI 라이브러리 awebview에서 D 언어 군 귀여운

9735 단어 dlang

D언어군귀여운





namachan 씨의 DlangUI de Dlang-man 을 박 r…, 아니, 영감을 받았습니다.

자작 D 언어용 GUI 라이브러리 awebview을 사용하여 만들었습니다. 슬프게도 아직 Windows에서만 사용할 수 있습니다. 그 중 리눅스와 맥에서도 사용할 수 있도록 합니다.

코드



awebview에서는 HTML을 사용하여 UI 부분을 작성합니다.
<!doctype html>
<html lang="jp">
<head>
    <title>Hello</title>
</head>
<body>
<img src="views/dman.png">
%[elements["b_kawaii"].html%]
</body>
</html>

그리고는, UI의 제어 부분.
import awebview.gui.application;
import awebview.gui.activity;
import awebview.gui.html;
import awebview.gui.widgets.text;
import awebview.gui.widgets.button;
import awebview.wrapper;

import carbon.functional : passTo;

import std.random;
import std.datetime;

void main()
{
    auto app = SDLApplication.instance;
    auto pref = WebPreferences.recommended;

    with(app.newFactoryOf!SDLActivity(pref)){
        id = "MainActivity";
        width = 600;
        height = 400;
        title = "aaa";

        // ページの作成とか
        app.addActivity(newInstance.passTo!((a){
            a.load(new DManPage("dmanPage"));
        }));
    }

    app.run();
}


// ページ
class DManPage : TemplateHTMLPage!(import(`dman.html`))
{
    this(string id)
    {
        super(id, null);

        // ボタンの作成
        this ~= _kawaii = new InputButton!()("b_kawaii");
        _kawaii.staticProps["value"] = "D言語くん可愛い!!!";
        _kawaii.onClick.connect!"onClickKawaii"(this);  // クリック時のイベント
    }


    void onClickKawaii()
    {
        // <p>タグの作成
        auto dmanText = new Paragraph!()(format("dmanText%d", ++_count));
        this ~= dmanText;   // このページに登録
        this.activity[$("body")].append(dmanText.html); // このページのbodyの末尾に追加

        dmanText.text = "D言語くん可愛い";     // <p>タグの内部にテキスト

        // 以下3行で, ランダムに位置を表示する
        dmanText.staticProps["style.position"] = "absolute";
        dmanText.staticProps["style.top"] = format("%dpx", uniform(0, 300));
        dmanText.staticProps["style.left"] = format("%dpx", uniform(0, 500));
    }


  private:
    InputButton!() _kawaii;
    size_t _count;
}

awebview 사용법



D언어 AdventCalendar의 24일째 기사로 쓸 예정입니다. 졸론 트라이.

좋은 웹페이지 즐겨찾기