Levana使用マニュアル

この文書はLevanaでコーディングをする為のガイド兼API仕様書となっています。

※　この文章は未完全です。現在Levanaプロジェクトそのものが未完成であり、
　　リリースバージョン名が０代(levana-0.x.x)である間は仕様もすぐに変わる可能性が高いです。
　　Luaの文法をご存知の方は、lev/all.luaファイルをご覧になれば、現状の仕様が大体掴めるかと思います。
　　また、なるべくLuaの文法を利用して、なるべく短いコーディングになるよう心がけていますが、
　　テーブル名・ファイル名・関数名・引数仕様などは現状、独断で決定していますので、
　　もし仕様に関するご要望などありましたら、
　　公式のリクエストページ　http://levana.sourceforge.jp/?Request　までお問合わせ下さい。


【LevanaとLevについて】

LevanaとはLua言語の文法を完全に引き継いだインタプリタであり、
同時にLuaに追加機能の関数を提供するAPIライブラリの名称です。
Levanaの機能を利用する為には、Luaコードファイル（entry.txtなど）の冒頭に、

require 'levana'

と記述して下さい。
levana実行ファイルからの起動の場合は実行ファイル本体から、
luaの公式インタプリタからの起動の場合は、
動的リンクライブラリ（DLLファイルあるいはSOファイル）から自動的に機能がロードされます。

ただし、LevanaライブラリはC++言語からの橋渡しという実装上の都合上、プリミティブな部分が多少あり、
関数の引数を省略できなかったりと、Luaらしくない文法で記述量も多くなりがちです。
代わりに以下に紹介する、Levライブラリの使用をオススメします。
（Levanaライブラリ本体のAPI説明はここでは割愛させて頂きます）

Levライブラリは、Levanaの再ラッピング定義のコード群です。現状はたった1つのファイルで構成されています。
Levライブラリは、そのままでは若干使いにくいLevana関数群を、
Luaらしい記述法で、コード記述量を大幅に広げ、お手軽スクリプトから本格プログラムまでの作成を支援します。
Levライブラリの機能を利用する為には、Luaコードファイル（entry.txtなど）の冒頭に、

require 'lev/all'

と記述して下さい。（lev/all.luaファイルが存在していると仮定）
このライブラリ自体がLevanaの機能を自動ロードして使っている為、

（間違った例）
require 'levana'
require 'lev/all'

とする必要はありません。
以下にLevライブラリの機能を紹介します。


【Levの機能紹介】

　require 'lev/all'
　　Levライブラリの機能を全てロードして使用可能にします。
　　この一行で初期化から、安全終了の為の予約など一切を行います。

appモジュール
　アプリケーション管理の関数を提供します。これは他のモジュールと違ってクラスではありません。

　app.autoloop()
　　ウィンドウのイベント処理などを行う自動ループです。
　　この関数が呼ばれると、指定されたトップウィンドウか、指定されていない場合ウィンドウ全てが閉じられるまで、
　　内部ループが呼ばれ続け、閉じられた後はLua側に処理が戻ります。
　　この仕様が嫌な場合は、app.yield関数等を作って自前でループを用意する方法もあります。

　top_frame = app.top()
　　アプリケーションのトップウィンドウtop_frameを返します。
　　トップウィンドウが指定されていない場合は、自動的にウィンドウの１つを返しますが、
　　ウィンドウが１つも作成されていない場合の振る舞いは未定義です。
　app.top(top_frame)
　　アプリケーションのトップウィンドウをtop_frameに設定します。

　app.yield()
　　アプリケーションの未処理のイベントを処理します。
　　app.autoloopを使う場合は、この関数は必要ないケースが多いでしょう。
　　逆にリアルタイムゲームなどで自前のループが必要な場合、ループ毎にこの関数を呼ぶようにして下さい。

lev.frameモジュール
　ウィンドウの作成や管理を扱うクラスです。

　frm = lev.frame({title = "フレームタイトル", x = X座標, y = Y座標, w = 横幅, h = 縦幅})
　　ウィンドウを新たに作成します。引数は完全省略・部分省略が可能です。
　　以下のメンバ関数の説明では、frmオブジェクトが生成されたものと仮定します。

　frm:close(force)
　　ウィンドウを閉じます。forceがtrueなら強制クローズ。省略されたりfalseの場合は安全クローズです。

　frm:connect_menu(id, func)
　　ウィンドウのメニューに、Luaで定義された関数を関連付けます。

　frame:set_menubar(mb)
　　予め作っておいたメニューバーオブジェクトmbをウィンドウに設定します。

　frm:show(showing)
　　ウィンドウを表示・非表示を指示します。showingがtrueであるか、省略された場合は表示、falseである場合は隠します。
　　ウィンドウが生成された時点では表示されない仕様なので、ウィンドウを表示する為にこの関数を呼んで下さい。

　title_str = frm:title()
　　ウィンドウタイトルを文字列で返します。
　frm:title(title_str)
　　ウィンドウタイトルを文字列で設定します。作成時に設定していて変更の必要が無ければ使いません。

※　書きかけ

