3
0
mirror of https://github.com/britzl/monarch.git synced 2025-11-26 10:50:55 +01:00

Compare commits

...

16 Commits
3.0.0 ... 3.0.2

Author SHA1 Message Date
Björn Ritzl
68cda52c0d Update monarch.lua 2019-09-14 01:25:43 +02:00
Björn Ritzl
81237762be Transition out and in again if showing the same screen twice
Fixes #54
2019-09-14 01:23:14 +02:00
Björn Ritzl
8001d370c2 Delete foo.txt 2019-09-14 01:16:10 +02:00
Björn Ritzl
ac409eb4c8 Update ci-workflow.yml 2019-08-19 07:17:00 +02:00
Björn Ritzl
5f776b0bc4 Update ci-workflow.yml 2019-08-19 07:15:31 +02:00
Björn Ritzl
9a47129135 Removed test 2019-08-19 07:13:03 +02:00
Björn Ritzl
4ea29a9efa Update ci-workflow.yml 2019-08-19 07:12:29 +02:00
Björn Ritzl
fa7cf75d3a Merge branch 'master' of https://github.com/britzl/monarch 2019-08-19 06:18:36 +02:00
Björn Ritzl
bbc4baa5e1 Update foo.txt 2019-08-19 06:18:34 +02:00
Björn Ritzl
0085704614 Update README.md 2019-08-19 06:17:26 +02:00
Björn Ritzl
e37b9bde89 Update .travis.yml 2019-08-13 06:09:07 +02:00
Björn Ritzl
21b16e1473 Create foo.txt 2019-08-09 07:51:44 +02:00
Björn Ritzl
36291f3762 Added test workflow 2019-08-09 07:30:46 +02:00
Björn Ritzl
fd5f82c40b Update ci-workflow.yml 2019-08-09 07:26:07 +02:00
Björn Ritzl
92bddc742b Create ci-workflow.yml 2019-08-09 07:11:15 +02:00
Björn Ritzl
0c0446746c Update README.md 2019-08-05 14:45:40 +02:00
6 changed files with 59 additions and 20 deletions

16
.github/workflows/ci-workflow.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: CI
on: [push]
jobs:
build_and_run:
name: Build and run
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Run.sh
env:
DEFOLD_USER: bjorn.ritzl@gmail.com
DEFOLD_AUTH: foobar
DEFOLD_BOOSTRAP_COLLECTION: /test/test.collectionc
run: ./.travis/run.sh

View File

@@ -15,9 +15,7 @@ addons:
language: java
jdk:
- oraclejdk8
dist: trusty
- oraclejdk11
env:
global:

View File

@@ -188,6 +188,15 @@ Monarch comes with a system for setting up transitions easily in a gui_script us
end
end
It is also possible to assign transitions to multiple nodes:
function init(self)
self.transition = transitions.create() -- note that no node is passed to transition.create()!
.show_in(gui.get_node("node1"), transitions.slide_in_right, gui.EASING_OUTQUAD, 0.6, 0)
.show_in(gui.get_node("node2"), transitions.slide_in_right, gui.EASING_OUTQUAD, 0.6, 0)
end
The predefined transitions provided by ```monarch.transitions.gui``` are:
* ```slide_in_right```

View File

@@ -677,16 +677,16 @@ function M.show(id, options, data, cb)
-- close all popups, one by one
while top.popup do
stack[#stack] = nil
show_out(top, screen, function()
assert(coroutine.resume(co))
end)
coroutine.yield()
show_out(top, screen, callbacks.track())
callbacks.yield_until_done()
top = stack[#stack]
end
-- unload and transition out from top
-- unless we're showing the same screen as is already visible
if top and top.id ~= screen.id then
show_out(top, screen, callbacks.track())
-- wait until we are done if showing the same screen as is already visible
local same_screen = top and top.id == screen.id
show_out(top, screen, callbacks.track())
if same_screen then
callbacks.yield_until_done()
end
end
end
@@ -817,7 +817,13 @@ function M.is_preloading(id)
local screen = screens[id]
return screen.preloading
end
function M.is_preloaded(id)
assert(id, "You must provide a screen id")
id = tohash(id)
assert(screens[id], ("There is no screen registered with id %s"):format(tostring(id)))
local screen = screens[id]
return screen.preloaded
end
--- Invoke a callback when a specific screen has been preloaded
-- This is mainly useful on app start when wanting to show a screen that

View File

@@ -7,6 +7,10 @@ function M.create()
local callback = nil
local callback_count = 0
local function is_done()
return callback_count == 0
end
local function invoke_if_done()
if callback_count == 0 and callback then
local ok, err = pcall(callback)
@@ -37,6 +41,17 @@ function M.create()
invoke_if_done()
end
function instance.yield_until_done()
local co = coroutine.running()
callback = function()
coroutine.resume(co)
end
invoke_if_done()
if not is_done() then
coroutine.yield()
end
end
return instance
end

View File

@@ -405,18 +405,13 @@ return function()
end)
it("should be able to preload a screen and always keep it loaded", function()
monarch.show(SCREEN_PRELOAD, nil, { count = 1 })
monarch.show(SCREEN_PRELOAD)
assert(wait_until_shown(SCREEN_PRELOAD), "Screen_preload was never shown")
-- first time the screen gets loaded it will increment the count
assert(monarch.data(SCREEN_PRELOAD).count == 2)
monarch.show(SCREEN_PRELOAD, { clear = true }, { count = 1 })
assert(wait_until_shown(SCREEN_PRELOAD), "Screen_preload was never shown")
-- second time the screen gets shown it will already be loaded and not increment the count
assert(monarch.data(SCREEN_PRELOAD).count == 1)
monarch.back()
assert(wait_until_hidden(SCREEN_PRELOAD), "Screen_preload was never hidden")
assert(monarch.is_preloaded(SCREEN_PRELOAD))
end)
it("should be able to reload a preloaded screen", function()
monarch.show(SCREEN_PRELOAD, nil, { count = 1 })
assert(wait_until_shown(SCREEN_PRELOAD), "Screen_preload was never shown")