README.md

# silk

[![Package Version](https://img.shields.io/hexpm/v/silk)](https://hex.pm/packages/silk)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/silk/)

Gleam wrapper for the Erlang port of wxWidgets.

Note: silk is experimental and has not yet been completed.
The goal is to have an accurate mapping from built in Erlang functions to Gleam.

```sh
gleam add silk
```
```gleam
import gleam/erlang/process
import gleam/int
import gleam/list
import silk/boxsizer
import silk/constants
import silk/frame
import silk/sizer
import silk/staticboxsizer
import silk/statictext
import silk/types
import silk/window
import silk/wx

pub fn main() {
  wx.new()
  let frame =
    frame.new4(wx.null(), constants.id_any, "Demo Window", [
      frame.Size(#(500, 500)),
    ])
  let main_sizer = boxsizer.new(constants.vertical)
  let text_sizer =
    staticboxsizer.new3(constants.vertical, frame, [
      staticboxsizer.Label("Area of Text"),
    ])


  let static = statictext.new3(frame, constants.id_any, "Hello World")
  sizer.add3(text_sizer, static, [
    sizer.Border(10),
    sizer.Flag(int.bitwise_or(
      constants.stretch_expand,
      constants.direction_all,
    )),
  ])


  sizer.add3(main_sizer, wx.coerce(text_sizer), [
    sizer.Flag(constants.stretch_expand),
  ])

  window.set_sizer(frame, main_sizer)

  window.show(frame)
  process.sleep_forever()
}

@external(erlang, "wxPanel", "setSizer")
pub fn set_sizer(panel: a, sizer: b) -> types.OkT
```

Further documentation can be found at <https://hexdocs.pm/silk>.