diff --git a/.gitignore b/.gitignore index eb92321..d194f34 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ tmp/ -out/ *.exe \ No newline at end of file diff --git a/README.md b/README.md index df9a27b..4833a3f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Build modern, cross-platform desktop apps in HTML + Go from one codebase. It use - ⚡**Fast development**: Use *ANY* web framework for your UI. Tiramisu handles all the magic of making it work, for you. ## Installation -`go install git.iwakura.rip/grng/tiramisu` +`go get -u git.iwakura.rip/grng/tiramisu` ## Example @@ -23,7 +23,7 @@ import ( func main() { // create the webview instance - app := tiramisu.New(tiramisu.Options{ + app := tiramisu.New(tiramisu.TiramisuOptions{ Title: "Tiramisu Example", Width: 800, Height: 600, diff --git a/examples/minimal/index.html b/examples/minimal/index.html new file mode 100644 index 0000000..e1fd12b --- /dev/null +++ b/examples/minimal/index.html @@ -0,0 +1,6 @@ + + + +

hello tiramisu!

+ + \ No newline at end of file diff --git a/examples/minimal/main.go b/examples/minimal/main.go new file mode 100644 index 0000000..fb114b0 --- /dev/null +++ b/examples/minimal/main.go @@ -0,0 +1,24 @@ +package main + +import ( + _ "embed" + + t "git.iwakura.rip/grng/tiramisu" + webview "github.com/webview/webview_go" +) + +//go:embed index.html +var html string + +func main() { + app := t.New(t.TiramisuOptions{ + Debug: true, + Width: 800, + Height: 600, + Title: "Tiramisu", + Hints: webview.HintFixed, + }) + + app.HTML(html) + app.Run() +} diff --git a/runtime/out/preload.d.ts b/runtime/out/preload.d.ts new file mode 100644 index 0000000..b55de9c --- /dev/null +++ b/runtime/out/preload.d.ts @@ -0,0 +1,11 @@ +declare const tiramisu: { + invoke: (name: string, ...args: any[]) => Promise; + fs: { + readFile: (path: string) => Promise; + readDir: (path: string) => Promise; + exists: (path: string) => Promise; + }; + notifications: { + notify: (message: string, ico?: string) => Promise; + }; +}; diff --git a/runtime/out/preload.js b/runtime/out/preload.js new file mode 100644 index 0000000..bff5712 --- /dev/null +++ b/runtime/out/preload.js @@ -0,0 +1,12 @@ +const tiramisu = { + invoke: window.__TIRAMISU_INTERNAL_invoke, + fs: { + readFile: window.__TIRAMISU_FILESYSTEM_readFile, + readDir: window.__TIRAMISU_FILESYSTEM_readDir, + exists: window.__TIRAMISU_INTERNAL_exists, + }, + notifications: { + notify: window.__TIRAMISU_NOTIFICATIONS_notify, + }, +}; +window.tiramisu = tiramisu; diff --git a/tiramisu.go b/tiramisu.go index 3292cc5..e51a7b1 100644 --- a/tiramisu.go +++ b/tiramisu.go @@ -40,14 +40,16 @@ func New(o TiramisuOptions) *Tiramisu { return t } -func (t *Tiramisu) Run(fn func()) { +func (t *Tiramisu) Run(fns ...func()) { defer t.w.Destroy() t.w.Dispatch(func() { t.loadJSRuntime() t.loadGoRuntime() - if fn != nil { - fn() + for _, fn := range fns { + if fn != nil { + fn() + } } }) t.w.Run() @@ -95,6 +97,12 @@ func (t *Tiramisu) HTML(html string) { t.loadGoRuntime() } +func (t *Tiramisu) Navigate(url string) { + t.w.Navigate(url) + t.loadJSRuntime() + t.loadGoRuntime() +} + //go:embed runtime/out/* var runtimeFS embed.FS