Display a system-alert for callback errors in the UI; also for thread errors in deployed apps; fixes #92, fixes #95
parent
dabbe35bd9
commit
c68e2308a8
|
@ -1,14 +1,6 @@
|
|||
USING: compiler.units continuations kernel namespaces
|
||||
threads.private words vocabs tools.deploy.shaker ;
|
||||
USING: namespaces tools.deploy.shaker ;
|
||||
IN: debugger
|
||||
|
||||
: error. ( error -- ) original-error get die-with2 ;
|
||||
|
||||
: print-error ( error -- ) error. ;
|
||||
|
||||
"threads" vocab [
|
||||
[
|
||||
"error-in-thread" "threads" lookup
|
||||
[ [ drop error. ] define ] [ f "combination" set-word-prop ] bi
|
||||
] with-compilation-unit
|
||||
] when
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
USING: namespaces tools.deploy.config fry sequences system kernel ui ui.gadgets.worlds ;
|
||||
USING: continuations namespaces sequences kernel ui
|
||||
ui.gadgets.worlds ;
|
||||
|
||||
deploy-name get "Factor" or '[
|
||||
_ " encountered an error." append
|
||||
[
|
||||
"Error"
|
||||
"The application encountered an error it cannot recover from and will now exit."
|
||||
system-alert die
|
||||
] ui-error-hook set-global
|
||||
]
|
||||
[ ui-error-hook set-global ]
|
||||
[ callback-error-hook set-global ]
|
||||
[ [ drop ] prepose thread-error-hook set-global ] tri
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
! Copyright (C) 2006, 2009 Slava Pestov.
|
||||
! Copyright (C) 2006, 2011 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors debugger io kernel namespaces prettyprint
|
||||
ui.gadgets.panes ui.gadgets.worlds ui ;
|
||||
USING: accessors continuations debugger io io.streams.string
|
||||
kernel namespaces prettyprint ui ui.gadgets.worlds ;
|
||||
IN: ui.debugger
|
||||
|
||||
: <error-pane> ( error -- pane )
|
||||
<pane> [ [ print-error ] with-pane ] keep ; inline
|
||||
: error-alert ( error -- )
|
||||
[ "Error" ] dip [ print-error ] with-string-writer
|
||||
system-alert ;
|
||||
|
||||
: error-window ( error -- )
|
||||
<error-pane> "Error" open-window ;
|
||||
! ( error -- )
|
||||
[ error-alert ] ui-error-hook set-global
|
||||
|
||||
[ error-window ] ui-error-hook set-global
|
||||
! ( error -- )
|
||||
[
|
||||
ui-running? [ dup error-alert ] [ dup print-error ] if die
|
||||
] callback-error-hook set-global
|
||||
|
||||
M: world-error error.
|
||||
"An error occurred while drawing the world " write
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
! Copyright (C) 2006, 2009 Slava Pestov.
|
||||
! Copyright (C) 2006, 2011 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors arrays hashtables io kernel math models
|
||||
colors.constants namespaces sequences words continuations debugger
|
||||
prettyprint help editors fonts ui ui.commands ui.gestures ui.gadgets
|
||||
ui.pens.solid ui.gadgets.worlds ui.gadgets.packs ui.gadgets.buttons
|
||||
ui.gadgets.labels ui.gadgets.presentations ui.gadgets.viewports
|
||||
ui.gadgets.tables ui.gadgets.tracks ui.gadgets.scrollers
|
||||
ui.gadgets.borders ui.gadgets.status-bar ui.tools.traceback
|
||||
ui.tools.inspector ui.tools.browser ui.debugger ;
|
||||
colors.constants namespaces sequences words continuations
|
||||
debugger prettyprint help editors fonts ui ui.commands
|
||||
ui.debugger ui.gestures ui.gadgets ui.pens.solid
|
||||
ui.gadgets.worlds ui.gadgets.packs ui.gadgets.buttons
|
||||
ui.gadgets.labels ui.gadgets.presentations ui.gadgets.panes
|
||||
ui.gadgets.viewports ui.gadgets.tables ui.gadgets.tracks
|
||||
ui.gadgets.scrollers ui.gadgets.borders ui.gadgets.status-bar
|
||||
ui.tools.traceback ui.tools.inspector ui.tools.browser ;
|
||||
IN: ui.tools.debugger
|
||||
|
||||
TUPLE: debugger < track error restarts restart-hook restart-list continuation ;
|
||||
|
@ -26,6 +27,9 @@ M: restart-renderer row-columns
|
|||
t >>selection-required?
|
||||
t >>single-click? ; inline
|
||||
|
||||
: <error-pane> ( error -- pane )
|
||||
<pane> [ [ print-error ] with-pane ] keep ; inline
|
||||
|
||||
: <error-display> ( debugger -- gadget )
|
||||
[ <filled-pile> ] dip
|
||||
[ error>> <error-pane> add-gadget ]
|
||||
|
@ -66,7 +70,7 @@ M: object error-in-debugger? drop f ;
|
|||
|
||||
[
|
||||
dup error-in-debugger?
|
||||
[ rethrow ] [ error-continuation get debugger-window ] if
|
||||
[ error-alert ] [ error-continuation get debugger-window ] if
|
||||
] ui-error-hook set-global
|
||||
|
||||
debugger "gestures" f {
|
||||
|
|
Loading…
Reference in New Issue