ThemePackの基本を解説します。
目次
/
├─ assets
│ ├─ designs
│ │ ├─ bases
│ │ │ ├─ main1.json
│ │ │ ├─ main2.json
│ │ │ ├─ main3.json
│ │ │ ├─ main4.json
│ │ │ ├─ main5.json
│ │ │ ├─ main6.json
│ │ │ ├─ main7.json
│ │ │ ├─ main8.json
│ │ │ ├─ fill_pallet1.json
│ │ │ ├─ fill_pallet2.json
│ │ │ ├─ fill_pallet3.json
│ │ │ ├─ fill_pallet4.json
│ │ │ ├─ stroke_pallet1.json
│ │ │ ├─ stroke_pallet2.json
│ │ │ ├─ stroke_pallet3.json
│ │ │ ├─ stroke_pallet4.json
│ │ │ ├─ settings1.json
│ │ │ ├─ settings2.json
│ │ │ ├─ settings3.json
│ │ │ ├─ settings4.json
│ │ │ ├─ export1.json
│ │ │ ├─ export2.json
│ │ │ ├─ export3.json
│ │ │ ├─ export4.json
│ │ │ ├─ save1.json
│ │ │ ├─ save2.json
│ │ │ ├─ save3.json
│ │ │ ├─ save4.json
│ │ │ ├─ load1.json
│ │ │ ├─ load2.json
│ │ │ ├─ load3.json
│ │ │ └─ load4.json
│ │ ├─ buttons
│ │ │ ├─ add_ellipse.json
│ │ │ ├─ add_rectangle.json
│ │ │ ├─ tgl_fill_pallet_mode.json
│ │ │ ├─ tgl_stroke_pallet_mode.json
│ │ │ ├─ tgl_settings_mode.json
│ │ │ ├─ tgl_export_mode.json
│ │ │ ├─ tgl_save_mode.json
│ │ │ ├─ tgl_load_mode.json
│ │ │ ├─ duplicate_layer.json
│ │ │ ├─ raise_layer.json
│ │ │ ├─ lower_layer.json
│ │ │ ├─ delete_shape.json
│ │ │ ├─ bring_to_front.json
│ │ │ ├─ send_to_back.json
│ │ │ ├─ move_up_1px.json
│ │ │ ├─ move_down_1px.json
│ │ │ ├─ move_right_1px.json
│ │ │ ├─ move_left_1px.json
│ │ │ ├─ rotate_left_90.json
│ │ │ ├─ rotate_right_90.json
│ │ │ ├─ double_width.json
│ │ │ ├─ double_height.json
│ │ │ ├─ double_ratio.json
│ │ │ ├─ half_width.json
│ │ │ ├─ half_height.json
│ │ │ ├─ half_ratio.json
│ │ │ ├─ zoom_in.json
│ │ │ ├─ zoom_out.json
│ │ │ ├─ reset_zoom.json
│ │ │ ├─ save_project.json
│ │ │ ├─ open_file.json
│ │ │ ├─ load_theme.json
│ │ │ ├─ convert_code.json
│ │ │ ├─ save_code_as_text_file.json
│ │ │ └─ save_code_to_clipboard.json
│ │ └─ others
│ │ ├─ canvas.json
│ │ ├─ fill_pickers.json
│ │ ├─ stroke_pickers.json
│ │ ├─ theme_path_dialog.json
│ │ ├─ export_preview.json
│ │ ├─ export_path_dialogson
│ │ ├─ save_path_dialog.json
│ │ └─ load_path_dialog.json
│ └─ images
└─ pack.meta
imagesディレクトリの下に、異なるネームスペース用の複数のディレクトリが存在することがあります。
pack.metaは、プログラムがフォルダがThemePackかどうかを調べるために利用されます。pack.metaは、以下のように記述します。
{
"pack":{
"pack_var": 0,
"description": "template for ThemePack wiki"
}
}
上記したディレクトリツリーのように、ThemePackはたくさんのjsonファイルで構成されています。それぞれのjsonファイルには、画面上の各要素を表すための情報が記載されており、Designファイルと呼ばれています。
以下は、最も簡素なDesignファイルの例です。
{
"description": "Design templates for ThemePack wiki",
"author": "boo_manKnow",
"containerAnker": "topRight",
"blockMode": "vertical",
"blockAnker": "CORNER",
"layer": 1,
"elements": {
"e1": {
"type": "base",
"layout": {
"x_point": 0,
"y_point": 0,
"width_point": 4,
"height_point": 4
},
"fillCol": "#FF0000"
}
}
}
例えば、上記のDesignファイルでは右上を軸にした赤色の正方形を、ツール内に描画することができます。それぞれの要素について説明します。
containerAnker、blockMode、blockAnkerはウィンドウサイズに依存しないGUIを実装するため作成された仕組みの一つです。
| 要素名 | 候補 | 役割 |
|---|---|---|
| containerAnker | topLeft / topRight / bottomRight / bottomLeft / center | コンテナ内のオブジェクトの位置はcontainerAnkerから見た相対座標で決定されます |
| blockMode | vertical / horizontal / both | blockModeでは尺度水準を決定します。3つの選択肢が用意されています |
| blockAnker | CORNER / CENTER | blockAnkerでは、オブジェクトの基点を左上にするか、中心にするかを決定できます |
参考:GUIを実装するために