diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 232b2008b1..92cb269ab9 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -17,11 +17,15 @@ + ui: +- tabular output +- arrows in outliner and scrollbars +- completion +- debugger should use outlining +- support nested incremental layouts more efficiently - make-pane should not need world-theme - fix up the min thumb size hack - long lines of text fail in draw-surface - only redraw dirty gadgets -- faster mouse tracking - off-by-one error in pick-up? - closing ui does not stop timers - adding/removing timers automatically for animated gadgets diff --git a/library/help/tutorial.factor b/library/help/tutorial.factor index e73ebbef3b..837e41632a 100644 --- a/library/help/tutorial.factor +++ b/library/help/tutorial.factor @@ -33,8 +33,8 @@ M: general-list tutorial-line : ( list -- gadget ) [ tutorial-line ] map - 1 over set-pack-fill [ add-gadgets ] keep - empty-border ; + make-pile 1 over set-pack-fill + gap-border ; : tutorial-pages [ diff --git a/library/styles.factor b/library/styles.factor index a6bc39a71e..cb47457bc1 100644 --- a/library/styles.factor +++ b/library/styles.factor @@ -3,12 +3,14 @@ IN: styles ! Colors are RGB triples. -: black @{ 0 0 0 }@ ; -: gray @{ 128 128 128 }@ ; -: white @{ 255 255 255 }@ ; -: red @{ 255 0 0 }@ ; -: green @{ 0 255 0 }@ ; -: blue @{ 0 0 255 }@ ; +: black @{ 0 0 0 }@ ; +: dark-gray @{ 64 64 64 }@ ; +: gray @{ 128 128 128 }@ ; +: light-gray @{ 192 192 192 }@ ; +: white @{ 255 255 255 }@ ; +: red @{ 255 0 0 }@ ; +: green @{ 0 255 0 }@ ; +: blue @{ 0 0 255 }@ ; SYMBOL: foreground ! Used for text and outline shapes. SYMBOL: background ! Used for filled shapes. diff --git a/library/test/errors.factor b/library/test/errors.factor index 97239cd8d5..d148717f37 100644 --- a/library/test/errors.factor +++ b/library/test/errors.factor @@ -14,7 +14,7 @@ USE: memory [ t ] [ [ "Hello" throw ] catch drop - global [ "error" get ] bind + global [ error get ] bind "Hello" = ] unit-test diff --git a/library/tools/debugger.factor b/library/tools/debugger.factor index f585188213..2e02e616c3 100644 --- a/library/tools/debugger.factor +++ b/library/tools/debugger.factor @@ -5,6 +5,9 @@ USING: generic inspector kernel kernel-internals lists math namespaces parser prettyprint sequences io sequences-internals strings vectors words ; +SYMBOL: error +SYMBOL: error-continuation + : expired-error. ( obj -- ) "Object did not survive image save/load: " write . ; @@ -100,10 +103,12 @@ M: string error. ( error -- ) print ; M: object error. ( error -- ) . ; -: :s ( -- ) "error-datastack" get stack. ; -: :r ( -- ) "error-callstack" get stack. ; +: :s ( -- ) error-continuation get continuation-data stack. ; -: :get ( var -- value ) "error-namestack" get (get) ; +: :r ( -- ) error-continuation get continuation-call stack. ; + +: :get ( var -- value ) + error-continuation get continuation-name (get) ; : debug-help ( -- ) ":s :r show stacks at time of error." print @@ -122,21 +127,10 @@ M: object error. ( error -- ) . ; #! and return to the caller. [ print-error debug-help ] recover ; -: save-error ( error ds rs ns cs -- ) - #! Save the stacks and parser state for post-mortem - #! inspection after an error. - global [ - "error-catchstack" set - "error-namestack" set - "error-callstack" set - "error-datastack" set - "error" set - ] bind ; +: save-error ( error continuation -- ) + global [ error-continuation set error set ] bind ; : init-error-handler ( -- ) ( kernel calls on error ) - [ - datastack dupd callstack namestack catchstack - save-error rethrow - ] 5 setenv + [ dup continuation save-error rethrow ] 5 setenv kernel-error 12 setenv ; diff --git a/library/tools/describe.factor b/library/tools/describe.factor index 766668c924..9b77ede0da 100644 --- a/library/tools/describe.factor +++ b/library/tools/describe.factor @@ -51,9 +51,6 @@ DEFER: describe #! Outlining word browser. vocabs [ f over [ words. ] curry write-outliner ] each ; -: stack. ( seq -- seq ) - reverse-slice >array describe ; - : usage. ( word -- ) #! Outlining usages browser. usage [ usage. ] object-outline ; @@ -62,5 +59,8 @@ DEFER: describe #! Outlining call hierarchy browser. uses [ uses. ] object-outline ; +: stack. ( seq -- seq ) + reverse-slice >array describe ; + : .s datastack stack. ; : .r callstack stack. ; diff --git a/library/ui/books.factor b/library/ui/books.factor index 290385bfd5..48edfcc1a6 100644 --- a/library/ui/books.factor +++ b/library/ui/books.factor @@ -2,24 +2,17 @@ ! See http://factor.sf.net/license.txt for BSD license. IN: gadgets-books USING: gadgets gadgets-buttons gadgets-labels gadgets-layouts -generic kernel lists math matrices sequences ; +generic kernel lists math matrices namespaces sequences ; TUPLE: book page ; C: book ( pages -- book ) - over set-delegate - 0 over set-book-page - [ add-gadgets ] keep ; - -M: book pref-dim ( book -- dim ) - gadget-children [ pref-dim ] map @{ 0 0 0 }@ [ vmax ] reduce ; + over set-delegate + 0 over set-book-page [ add-gadgets ] keep ; M: book layout* ( book -- ) - dup rect-dim over gadget-children [ - f over set-gadget-visible? - @{ 0 0 0 }@ over set-rect-loc - set-gadget-dim - ] each-with + dup delegate layout* + dup gadget-children [ f swap set-gadget-visible? ] each dup book-page swap gadget-children nth [ t swap set-gadget-visible? ] when* ; @@ -42,12 +35,11 @@ TUPLE: book-browser book ; : ( book -- gadget ) [ - { "|<" [ find-book first-page ] } - { "<" [ find-book prev-page ] } - { ">" [ find-book next-page ] } - { ">|" [ find-book last-page ] } - ] [ first2 >r