Skip to content
takke edited this page Feb 12, 2012 · 2 revisions

MZ3 Script の概要

MZ3 Script とは?

各種HTML/XMLパーサやMZ3自体の動作を記述するLuaスクリプト。

MZ3用プラグインの記述にも利用する。

フォルダ構成

(MZ3のインストールフォルダ)
   +- scripts             : MZ3 ビルトインスクリプト用フォルダ
      +- mz3.lua          : MZ3 ビルトインスクリプト・エントリポイント
      +- *.lua            : mz3.lua がロードする各種スクリプト
      +- (ディレクトリ)   : mz3.lua がロードする各種スクリプト用フォルダ
   +- plugins             : プラグイン用フォルダ
      +- *.lua            : プラグインスクリプト
   +- user_scripts        : ユーザ作成スクリプト用フォルダ
      +- *.lua            : ユーザ作成スクリプト

ロード順序

スクリプト群は起動時に下記の順序でロードされます。

  1. scripts/mz3.lua
  2. plugins/*.lua
  3. user_scripts/*.lua

Ctrl+F5キーで再ロードできます。

MZ3 Script API

MZ3独自の API (Lua関数) をスクリプト内で利用できる。

これらの API は mz3_lua_api.cpp にて定義されている。

API は全て関数として提供されるが、MZ3 起動時に読み込まれる wrapper.lua により、Lua のオブジェクト形式で呼び出すことも可能。

また、スクリプト内ではほとんどのLua標準APIを利用できる。

TODO

  • ステータスバー(メイン画面以外)
  • パース完了イベント
  • 汎用エディットダイアログ
  • 汎用セレクトダイアログ
  • マクロメニュー登録
  • タブ・カテゴリ登録
    • プラグインファイルを配置して起動すると、確認画面が出て、YESでタブやカテゴリが登録される、というユースケース。

リファレンス

各関数のリファレンス:http://www.mz3.jp/luadoc_mz3_api/files/mz3_lua_api.html

イベント

() 内はイベントハンドラのタイプ。

全画面共通のイベント

  • select_item (type1)

    • mz3_menu.insert_menu による登録済みメニューの選択
    • データ:MZ3Data
  • creating_default_group (type1)

    • デフォルトのグループリスト生成イベント
    • APIで作成したパーサをタブやカテゴリに登録する際に利用する
    • データ:MZ3GroupData
  • estimate_access_type_by_url (type2)

    • estimate_access_type_by_url のイベントハンドラ
    • text : URL
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : [integer] アクセス種別
  • check_account (type2)

    • ユーザが入力したアカウントの形式チェック
    • service_name : アカウント用サービス名("mixi", "gooホーム", etc...)
    • id : ユーザが入力したID
    • password : ユーザが入力したパスワード
    • 返却値(1) : [bool] チェックOKなら true、NGなら false
  • set_basic_auth_account (type2)

    • 通信時の BASIC 認証用アカウントの設定イベント
    • serialize_key : シリアライズキー
    • 返却値(1) : [bool] 設定時は true、続行時は false
    • 返却値(2) : [integer] キャンセルフラグ(中止時は true、設定時は false)
    • 返却値(3) : [string] ID
    • 返却値(4) : [string] パスワード

メイン画面用イベント

  • dblclk_body_list (type1)

    • ボディリストのダブルクリック
    • データ:MZ3Data
  • enter_body_list (type1)

    • ボディリストのダブルクリック
    • データ:MZ3Data
  • popup_body_menu (type2)

    • 下ペインの右クリック等によるメニュー表示時のイベントハンドラ
    • text : serialize_key
    • data1 : 下ペインの選択アイテム (MZ3Data)
    • data2 : 親ウィンドウ (CWnd*)
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : nil
  • post_end (type2)

    • POST 完了イベント
    • text : serialize_key
    • (int) http_status : HTTP Status Code (200, 404, etc...)
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : nil
  • get_end (type2)

    • GET 完了イベント
    • text : serialize_key
    • (int) http_status : HTTP Status Code (200, 404, etc...)
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : nil
  • get_body_list_default_icon_index (type2)

    • ボディリストのアイコンのインデックス取得
    • text : serialize_key
    • data1 : 下ペインの選択アイテム (MZ3Data)
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : アイコンインデックス
  • reset_twitter_style_post_mode (type2)

    • Twitter風書き込みモードの初期化イベント
    • タブやカテゴリの切り替え時、通信完了時などに呼び出される。
    • mz3_main_view.set_post_mode を呼び出して書き込みモードを変更すること。
    • serialize_key : シリアライズキー
    • 返却値(1) : [bool] 設定時は true、続行時は false
  • get_view_style (type2)

    • メイン画面のビュースタイルを変更する
    • text : カテゴリの serialize_key
    • 返却値(1) : [bool] 成功時は true、失敗時は false
    • 返却値(2) : VIEW_STYLE_*

レポート画面用イベント

  • popup_report_menu (type2)

    • レポートビューのポップアップメニュー表示
    • serialize_key : シリアライズキー
    • report_item : レポートアイテム
    • sub_item_idx : 選択アイテムのインデックス
    • wnd : wnd
    • 返却値(1) : [bool] 設定時は true、続行時は false
  • get_write_view_type_by_report_item_access_type (type2)

    • レポート画面からの返信時の書き込み種別の判定
    • report_item : レポートアイテム
    • 返却値(1) : [bool] 設定時は true、続行時は false
    • 返却値(2) : [int] 書き込み種別

書き込み画面用イベント

  • init_write_view (type2)

    • レポートビューのポップアップメニュー表示
    • write_view_type : 書き込み種別
    • write_item : 書き込み画面の要素
    • 返却値(1) : [bool] 設定時は true、続行時は false
    • 返却値(2) : [int] is_from_main_view 1 の場合メイン画面に戻る、0 の場合レポート画面に戻る
    • 返却値(3) : [string] init_focus 初期フォーカス
      • 'body' : 本文から開始
      • 'title' : タイトルから開始
    • 返却値(4) : [int] enable_combo_box 1 の場合コンボボックス有効
    • 返却値(5) : [int] enable_title_change 1 の場合タイトル変更有効
  • is_enable_write_view_attach_image_mode (type2)

    • 書き込み画面で「画像が添付可能なモードか」の判定
    • write_view_type : 書き込み種別
    • write_item : 書き込み画面の要素
    • 返却値(1) : [bool] 設定時は true、続行時は false
    • 返却値(2) : [int] 添付可であれば1、不可であれば0
  • click_write_view_send_button (type2)

    • 書き込み画面の書き込みボタン押下イベント
    • write_view_type : 書き込み種別
    • write_item : 書き込み画面の要素
    • 返却値(1) : [bool] 設定時は true、続行時は false
  • get_end_write_view (type2)

    • GET 完了イベント
    • write_view_type : 書き込み種別
    • write_item : 書き込み画面の要素
    • http_status : (int) HTTP Status Code (200, 404, etc...)
    • filename : レスポンスファイル名
    • access_type : アクセス種別
    • 返却値(1) : [bool] 成功時は true、失敗時は false
  • post_end_write_view (type2)

    • POST 完了イベント
    • write_view_type : 書き込み種別
    • write_item : 書き込み画面の要素
    • http_status : (int) HTTP Status Code (200, 404, etc...)
    • filename : レスポンスファイル名
    • 返却値(1) : [bool] 成功時は true、失敗時は false
  • popup_write_menu (type2)

    • 書き込み画面のポップアップメニュー表示(他画面と違い追加形式である点に注意)
    • write_view_key : 書き込み種別のキー
    • write_item : 書き込み画面の要素
    • menu : メニューデータ
    • 返却値(1) : [bool] 設定時は true、続行時は false

MZ3 API モジュール構成

API | ----------------------------------|-------------------------------------------------------------------- MZ3 Core API (mz3) | 各種ユーティリティを含むMZ3自体の情報取得・変更を行うAPI。 MZ3 Data API (mz3_data) | MZ3Data の操作用API。MZ3Data は MZ3 内の汎用データ格納オブジェクトで、MZ3 の各種リストの要素といったUI要素に対応する。 MZ3 DataList API (mz3_data_list) | MZ3DataList の操作用API MZ3 HtmlArray API (mz3_htmlarray) | HtmlArray の操作用API MZ3 Menu API (mz3_menu) | Menu 関連API MZ3 Inifile API (mz3_inifile) | iniファイル関連API MZ3 GroupData API (mz3_group_data)| MZ3GroupData の操作用API。タブの集合を扱う(MZ3トップページのタブ群) MZ3 GroupItem API (mz3_group_item)| MZ3GroupItem の操作用API。タブを扱う

利用例