php-libui
php-libui copied to clipboard
php bindings to the libui C library.
中文说明
php-libui
PHP bindings to the libui C library.
libui is a lightweight, portable GUI library that uses the native GUI technologies of each platform it supports.
Requirements
- PHP >= 7.4
- PHP FFI extension available
- libui latest version
A Simple Example
first download libui dynamic library from https://github.com/andlabs/libui/releases or checkout source for self-build, then load in php code use following code
include '/src/UI.php';
$ui = new \UI\UI('/usr/lib64/libui.so'); //load libui dynamic library
$ui->init();
$mainwin = $ui->newWindow("libui Control Gallery", 640, 480,1);
$ui->controlShow($mainwin);
$ui->main();
Note: When Call libui C function need remove ui prefix of name, then to lower case first char
Use UIBuild create UI
Basic Usage:
include '/src/UI.php';
$ui = new \UI\UI('/usr/lib64/libui.so');
$config = ['title' => 'test', 'width' => 600,'height' => 450];
$build = $ui->build($config);
$build->show();
build config structure
build config is array, main key contain body,menu and window attribute key; in config array, element key is attr name, element value is attr value,similar the following:
[
'title' => 'window title name',
'width' => 600,
'menu' => [],
'body' => [
'name' => 'box'
'childs' => []
]
]
window attribute key list:
| attr | type | Description | Default Vlaue |
|---|---|---|---|
| title | string | window title | No Win Title |
| width | int | window width | 800 |
| height | int | window height | 640 |
| border | int | window border | 0 |
| margin | int | window margin | 0 |
| quit | \UI\Event | quit callback | null |
| close | \UI\Event | close callback | null |
| resize | \UI\Event | resize callback | null |
menu array
The array level 1 of item element is one menu, similar:
[
[
'title' => 'File',
'id' => 'menu_id_1',
'childs' => [
['title' => 'New File'],
['title' => 'Open File'],
]
],
[
'title' => 'Edit',
'id' => 'menu_id_1',
'childs' => [
['title' => 'Undo'],
['title' => 'Copy'],
]
],
]
Top menu only contain title, id, childs , the title value will display in window, every element of childs array is submenu that display in drop-down menu. if element is string and equral hr will display a separator
current Build UI Config of submenu only contain the following attr:
| attr | type | Description | require |
|---|---|---|---|
| title | string | menu title | yes |
| type | string | menu type, value is text,quit,about,preferences or checkbox, default is text |
no |
| click | \UI\Event | click callback | no |
| childs | array | child menu list | no |
body array
every element key of body array is control config, widget element is control name and attr element is control attr. see examples/table.php Build UI current only support the following control:
-
button, Button control,contain the following attr:attr type Description require type string control type, smiliar HTML <button>tag oftypeattr, potential value is following:
1.file, open file button
2.save, save file button
3.font, select font button
4.color, select color button
5.button, is default valueyes title string button label name yes click \UI\Event when click callback, when type fileandsaveis after select file callno change \UI\Event only when colorandfontavailable, select color or font be callno id string no -
boxbox layout,the following attr:attr type Description require dir string layout direction, Specify one of his horizontal and default value,vis verticalyes padded int padding value, default is 0no child_fit int Whether to automatically adapt no childs array sub control list no id string no -
groupgroup layout, havetitleandmargin,child,idattr -
labeltext control, only hastitleandidattr -
hrhorizontal separator, no attr -
vrvertical separator, no attr -
inputinput control, the following attr:attr type Description require type string miliar HTML <input>tag oftypeattr, specify one of the following value:
1.passwordpassword entry control
2.searchsearch entry control
3.textareamultiline entry control
4.radioradio
5.selectselect
6.checkboxcheckbox
7.text, is default value
8.numberis Spinbox
9.slideryes readonly bool whether readonly no wrap bool only textareais available,falseis non wrapping textareano option array radioandselectavailable, element value is option title, key is natural order numberno change \UI\Event exclude checkboxandradiono title string checkboxavailableyes click \UI\Event only radioandcheckboxavailableno min int numberandslideravailableyes max int numberandslideravailableyes id string no editable bool selectavailableno -
formform layout, haspadded,childs,idattr -
gridgrid layout, the following attr:attr type Description require padded int no child_left int no child_top int no child_width int no child_height int no child_hexpand int no child_haligin int no child_vexpand int no child_valign int no childs array no id string no -
tabletable control, has following sub key :attr type Description require th array every element of value is array, key is id, has the following attr:
1.editable,booltype, the column is whether editable
2.textColor
3.title
4.type, specify value ofbutton,image,imgtext,progress,checkbox,checkboxtext,color,textyes tbody array the table row value list, every element is one row value, when row of column is array has the following attr:
1.imagetype, hassrcwidthheight
2.colortype hasr,g,b
3.rowBgcolor
4.changeisarray, every element is one row change callback list, column iscallableyes id string no -
tabtab control, haspagesub array,pagearray every element value is page child control and key is page title -
imgimage control, has flowing attr:attr type Description require src array is image paths list, every element value is image file path, key is natural order number yes width int the image control width, default is srcfirst element image widthno height int the image control heigth, default is srcfirst element image widthno id string no -
datetimedatetime controlattr type description require type string specify one of value time,date,datetimeyes change \UI\Event no id string no -
progress, hasidattr -
unsupport control must call libui C function by
UI\UI
Control common method:
- show()
- hide()
- enable()
- disable()
- destroy()
- parent()
- setParent($parent)
- isVisible()
- isEnabled()
specify control see class statement in control directory
UI method
see UI.php
UIBuild method
see UIBuild.php