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

Compare commits

..

15 Commits
3.0.0 ... 3.0.1

Author SHA1 Message Date
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 language: java
jdk: jdk:
- oraclejdk8 - oraclejdk11
dist: trusty
env: env:
global: global:

View File

@@ -188,6 +188,15 @@ Monarch comes with a system for setting up transitions easily in a gui_script us
end end
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: The predefined transitions provided by ```monarch.transitions.gui``` are:
* ```slide_in_right``` * ```slide_in_right```

View File

@@ -677,16 +677,16 @@ function M.show(id, options, data, cb)
-- close all popups, one by one -- close all popups, one by one
while top.popup do while top.popup do
stack[#stack] = nil stack[#stack] = nil
show_out(top, screen, function() show_out(top, screen, callbacks.track())
assert(coroutine.resume(co)) callbacks.yield_until_done()
end)
coroutine.yield()
top = stack[#stack] top = stack[#stack]
end end
-- unload and transition out from top -- unload and transition out from top
-- unless we're showing the same screen as is already visible -- wait until we are done if showing the same screen as is already visible
if top and top.id ~= screen.id then local same_screen = top and top.id == screen.id
show_out(top, screen, callbacks.track()) show_out(top, screen, callbacks.track())
if same_screen and then
callbacks.yield_until_done()
end end
end end
end end
@@ -817,7 +817,13 @@ function M.is_preloading(id)
local screen = screens[id] local screen = screens[id]
return screen.preloading return screen.preloading
end 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 --- Invoke a callback when a specific screen has been preloaded
-- This is mainly useful on app start when wanting to show a screen that -- 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 = nil
local callback_count = 0 local callback_count = 0
local function is_done()
return callback_count == 0
end
local function invoke_if_done() local function invoke_if_done()
if callback_count == 0 and callback then if callback_count == 0 and callback then
local ok, err = pcall(callback) local ok, err = pcall(callback)
@@ -37,6 +41,17 @@ function M.create()
invoke_if_done() invoke_if_done()
end 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 return instance
end end

View File

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