Merge branch 'master' of git://factorcode.org/git/factor

release
Eduardo Cavazos 2007-11-23 15:50:49 -06:00
commit 3c8c97887b
18 changed files with 79 additions and 44 deletions

2
core/quotations/quotations-docs.factor Normal file → Executable file
View File

@ -22,7 +22,7 @@ $nl
ABOUT: "quotations" ABOUT: "quotations"
HELP: callable HELP: callable
{ $class-description "The class whose instances can be passed to " { $link call } ". This includes quotations, " { $link f } " (which behaves like an empty quotation), and composed quotations built up with " { $link curry } "." } ; { $class-description "The class whose instances can be passed to " { $link call } ". This includes quotations and composed quotations built up with " { $link curry } " or " { $link compose } "." } ;
HELP: quotation HELP: quotation
{ $description "The class of quotations. See " { $link "syntax-quots" } " for syntax and " { $link "quotations" } " for general information." } ; { $description "The class of quotations. See " { $link "syntax-quots" } " for syntax and " { $link "quotations" } " for general information." } ;

6
extra/documents/documents.factor Normal file → Executable file
View File

@ -167,6 +167,12 @@ M: char-elt prev-elt
M: char-elt next-elt M: char-elt next-elt
drop [ drop 1 +col ] (next-char) ; drop [ drop 1 +col ] (next-char) ;
TUPLE: one-char-elt ;
M: one-char-elt prev-elt 2drop ;
M: one-char-elt next-elt 2drop ;
: (word-elt) ( loc document quot -- loc ) : (word-elt) ( loc document quot -- loc )
pick >r pick >r
>r >r first2 swap r> doc-line r> call >r >r first2 swap r> doc-line r> call

2
extra/macros/macros.factor Normal file → Executable file
View File

@ -19,7 +19,7 @@ IN: macros
: MACRO: : MACRO:
(:) (MACRO:) ; parsing (:) (MACRO:) ; parsing
PREDICATE: word macro PREDICATE: compound macro
"macro" word-prop >boolean ; "macro" word-prop >boolean ;
M: macro definer drop \ MACRO: \ ; ; M: macro definer drop \ MACRO: \ ; ;

View File

@ -1,5 +1,5 @@
USING: dlists ui.gadgets kernel ui namespaces io.streams.string USING: dlists ui.gadgets kernel ui namespaces io.streams.string
io ui.private ; io ;
IN: tools.test.ui IN: tools.test.ui
! We can't print to stdio here because that might be a pane ! We can't print to stdio here because that might be a pane

View File

@ -1,5 +1,5 @@
USING: ui.gadgets.editors tools.test kernel io io.streams.plain USING: ui.gadgets.editors tools.test kernel io io.streams.plain
definitions namespaces ui.gadgets ui.private definitions namespaces ui.gadgets
ui.gadgets.grids prettyprint documents ui.gestures ui.gadgets.grids prettyprint documents ui.gestures
tools.test.inference tools.test.ui models ; tools.test.inference tools.test.ui models ;

View File

@ -4,7 +4,7 @@ USING: arrays documents ui.clipboards ui.commands ui.gadgets
ui.gadgets.borders ui.gadgets.buttons ui.gadgets.labels ui.gadgets.borders ui.gadgets.buttons ui.gadgets.labels
ui.gadgets.scrollers ui.gadgets.theme ui.render ui.gestures io ui.gadgets.scrollers ui.gadgets.theme ui.render ui.gestures io
kernel math models namespaces opengl opengl.gl sequences strings kernel math models namespaces opengl opengl.gl sequences strings
io.styles math.vectors sorting colors combinators ; io.styles math.vectors sorting colors combinators assocs ;
IN: ui.gadgets.editors IN: ui.gadgets.editors
TUPLE: editor TUPLE: editor
@ -94,8 +94,11 @@ M: editor ungraft*
rot editor-line x>offset , rot editor-line x>offset ,
] { } make ; ] { } make ;
: clicked-loc ( editor -- loc )
[ hand-rel ] keep point>loc ;
: click-loc ( editor model -- ) : click-loc ( editor model -- )
>r [ hand-rel ] keep point>loc r> set-model ; >r clicked-loc r> set-model ;
: focus-editor ( editor -- ) : focus-editor ( editor -- )
t over set-editor-focused? relayout-1 ; t over set-editor-focused? relayout-1 ;
@ -244,11 +247,37 @@ M: editor user-input*
M: editor gadget-text* editor-string % ; M: editor gadget-text* editor-string % ;
: start-selection ( editor -- )
dup editor-caret click-loc ;
: extend-selection ( editor -- ) : extend-selection ( editor -- )
dup request-focus start-selection ; dup request-focus dup editor-caret click-loc ;
: mouse-elt ( -- elelement )
hand-click# get {
{ 2 T{ one-word-elt } }
{ 3 T{ one-line-elt } }
} at T{ one-char-elt } or ;
: drag-direction? ( loc editor -- ? )
editor-mark* <=> 0 < ;
: drag-selection-caret ( loc editor element -- loc )
>r [ drag-direction? ] 2keep
gadget-model
r> prev/next-elt ? ;
: drag-selection-mark ( loc editor element -- loc )
>r [ drag-direction? not ] 2keep
nip dup editor-mark* swap gadget-model
r> prev/next-elt ? ;
: drag-caret&mark ( editor -- caret mark )
dup clicked-loc swap mouse-elt
[ drag-selection-caret ] 3keep
drag-selection-mark ;
: drag-selection ( editor -- )
dup drag-caret&mark
pick editor-mark set-model
swap editor-caret set-model ;
: editor-cut ( editor clipboard -- ) : editor-cut ( editor clipboard -- )
dupd gadget-copy remove-selection ; dupd gadget-copy remove-selection ;
@ -296,17 +325,10 @@ M: editor gadget-text* editor-string % ;
dup T{ one-word-elt } select-elt dup T{ one-word-elt } select-elt
] unless gadget-selection ; ] unless gadget-selection ;
: (position-caret) ( editor -- )
dup extend-selection
dup editor-mark click-loc ;
: position-caret ( editor -- ) : position-caret ( editor -- )
hand-click# get { mouse-elt dup T{ one-char-elt } =
{ 1 [ (position-caret) ] } [ drop dup extend-selection dup editor-mark click-loc ]
{ 2 [ T{ one-word-elt } select-elt ] } [ select-elt ] if ;
{ 3 [ T{ one-line-elt } select-elt ] }
[ 2drop ]
} case ;
: insert-newline "\n" swap user-input ; : insert-newline "\n" swap user-input ;
@ -408,7 +430,7 @@ editor "caret-motion" f {
editor "selection" f { editor "selection" f {
{ T{ button-down f { S+ } } extend-selection } { T{ button-down f { S+ } } extend-selection }
{ T{ drag } start-selection } { T{ drag } drag-selection }
{ T{ gain-focus } focus-editor } { T{ gain-focus } focus-editor }
{ T{ lose-focus } unfocus-editor } { T{ lose-focus } unfocus-editor }
{ T{ delete-action } remove-selection } { T{ delete-action } remove-selection }

View File

@ -2,7 +2,7 @@ IN: temporary
USING: ui.gadgets ui.gadgets.packs ui.gadgets.worlds tools.test USING: ui.gadgets ui.gadgets.packs ui.gadgets.worlds tools.test
namespaces models kernel tools.test.inference dlists math namespaces models kernel tools.test.inference dlists math
math.parser ui sequences hashtables assocs io arrays math.parser ui sequences hashtables assocs io arrays
prettyprint io.streams.string ui.private ; prettyprint io.streams.string ;
[ T{ rect f { 10 10 } { 20 20 } } ] [ T{ rect f { 10 10 } { 20 20 } } ]
[ [

View File

@ -1,5 +1,5 @@
IN: temporary IN: temporary
USING: ui.gadgets ui.gadgets.scrollers ui.private USING: ui.gadgets ui.gadgets.scrollers
namespaces tools.test kernel models ui.gadgets.viewports namespaces tools.test kernel models ui.gadgets.viewports
ui.gadgets.labels ui.gadgets.grids ui.gadgets.frames ui.gadgets.labels ui.gadgets.grids ui.gadgets.frames
ui.gadgets.sliders math math.vectors arrays sequences ui.gadgets.sliders math math.vectors arrays sequences

19
extra/ui/gestures/gestures.factor Normal file → Executable file
View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: arrays assocs kernel math models namespaces USING: arrays assocs kernel math models namespaces
sequences words strings system hashtables math.parser sequences words strings system hashtables math.parser
math.vectors tuples classes ui.gadgets timers ; math.vectors tuples classes ui.gadgets timers combinators.lib ;
IN: ui.gestures IN: ui.gestures
: set-gestures ( class hash -- ) "gestures" set-word-prop ; : set-gestures ( class hash -- ) "gestures" set-word-prop ;
@ -176,9 +176,22 @@ drag-timer construct-empty drag-timer set-global
: hand-click-rel ( gadget -- loc ) : hand-click-rel ( gadget -- loc )
hand-click-loc get-global swap screen-loc v- ; hand-click-loc get-global swap screen-loc v- ;
: multi-click-timeout? ( -- ? )
millis hand-last-time get - double-click-timeout get <= ;
: multi-click-button? ( button -- button ? )
dup hand-last-button get = ;
: multi-click-position? ( -- ? )
hand-loc get hand-click-loc get v- norm 10 <= ;
: multi-click? ( button -- ? ) : multi-click? ( button -- ? )
millis hand-last-time get - double-click-timeout get <= {
swap hand-last-button get = and ; [ multi-click-timeout? ]
[ multi-click-button? ]
[ multi-click-position? ]
[ multi-click-position? ]
} && nip ;
: update-click# ( button -- ) : update-click# ( button -- )
global [ global [

View File

@ -1,6 +1,6 @@
IN: temporary IN: temporary
USING: tools.test tools.test.ui ui.tools.browser USING: tools.test tools.test.ui ui.tools.browser
tools.test.inference ui.private ; tools.test.inference ;
{ 0 1 } [ <browser-gadget> ] unit-test-effect { 0 1 } [ <browser-gadget> ] unit-test-effect
[ ] [ <browser-gadget> [ ] with-grafted-gadget ] unit-test [ ] [ <browser-gadget> [ ] with-grafted-gadget ] unit-test

View File

@ -1,7 +1,7 @@
USING: continuations documents ui.tools.interactor USING: continuations documents ui.tools.interactor
ui.tools.listener hashtables kernel namespaces parser sequences ui.tools.listener hashtables kernel namespaces parser sequences
timers tools.test ui.commands ui.gadgets ui.gadgets.editors timers tools.test ui.commands ui.gadgets ui.gadgets.editors
ui.gadgets.panes vocabs words tools.test.ui ui.private ; ui.gadgets.panes vocabs words tools.test.ui ;
IN: temporary IN: temporary
timers [ init-timers ] unless timers [ init-timers ] unless

View File

@ -1,6 +1,6 @@
USING: assocs ui.tools.search help.topics io.files io.styles USING: assocs ui.tools.search help.topics io.files io.styles
kernel namespaces sequences source-files threads timers kernel namespaces sequences source-files threads timers
tools.test ui.gadgets ui.gestures ui.private vocabs tools.test ui.gadgets ui.gestures vocabs
vocabs.loader words tools.test.ui debugger ; vocabs.loader words tools.test.ui debugger ;
IN: temporary IN: temporary

View File

@ -2,7 +2,7 @@ USING: ui.tools ui.tools.interactor ui.tools.listener
ui.tools.search ui.tools.workspace kernel models namespaces ui.tools.search ui.tools.workspace kernel models namespaces
sequences timers tools.test ui.gadgets ui.gadgets.buttons sequences timers tools.test ui.gadgets ui.gadgets.buttons
ui.gadgets.labelled ui.gadgets.presentations ui.gadgets.labelled ui.gadgets.presentations
ui.gadgets.scrollers vocabs tools.test.ui ui ui.private ; ui.gadgets.scrollers vocabs tools.test.ui ui ;
IN: temporary IN: temporary
[ [

View File

@ -1,6 +1,6 @@
USING: arrays continuations ui.tools.listener ui.tools.walker USING: arrays continuations ui.tools.listener ui.tools.walker
ui.tools.workspace inspector kernel namespaces sequences threads ui.tools.workspace inspector kernel namespaces sequences threads
listener tools.test ui ui.gadgets ui.gadgets.worlds ui.private listener tools.test ui ui.gadgets ui.gadgets.worlds
ui.gadgets.packs vectors ui.tools tools.interpreter ui.gadgets.packs vectors ui.tools tools.interpreter
tools.interpreter.debug tools.test.inference tools.test.ui ; tools.interpreter.debug tools.test.inference tools.test.ui ;
IN: temporary IN: temporary

View File

@ -28,8 +28,6 @@ SYMBOL: windows
: unregister-window ( handle -- ) : unregister-window ( handle -- )
windows global [ [ first = not ] curry* subset ] change-at ; windows global [ [ first = not ] curry* subset ] change-at ;
<PRIVATE
: raised-window ( world -- ) : raised-window ( world -- )
windows get-global [ second eq? ] curry* find drop windows get-global [ second eq? ] curry* find drop
windows get-global [ length 1- ] keep exchange ; windows get-global [ length 1- ] keep exchange ;
@ -67,8 +65,6 @@ M: world ungraft*
dup world-handle (close-window) dup world-handle (close-window)
reset-world ; reset-world ;
PRIVATE>
: open-world-window ( world -- ) : open-world-window ( world -- )
dup pref-dim over set-gadget-dim dup relayout graft ; dup pref-dim over set-gadget-dim dup relayout graft ;
@ -90,8 +86,6 @@ SYMBOL: ui-hook
<dlist> \ layout-queue set-global <dlist> \ layout-queue set-global
V{ } clone windows set-global ; V{ } clone windows set-global ;
<PRIVATE
: restore-gadget-later ( gadget -- ) : restore-gadget-later ( gadget -- )
dup gadget-graft-state { dup gadget-graft-state {
{ { f f } [ ] } { { f f } [ ] }
@ -133,7 +127,7 @@ SYMBOL: ui-hook
] { } make ; ] { } make ;
: redraw-worlds ( seq -- ) : redraw-worlds ( seq -- )
[ dup update-hand draw-world ] each ; [ dup update-hand [ draw-world ] time ] each ;
: notify ( gadget -- ) : notify ( gadget -- )
dup gadget-graft-state { dup gadget-graft-state {
@ -146,8 +140,6 @@ SYMBOL: ui-hook
: notify-queued ( -- ) : notify-queued ( -- )
graft-queue [ notify ] dlist-slurp ; graft-queue [ notify ] dlist-slurp ;
PRIVATE>
: ui-step ( -- ) : ui-step ( -- )
[ [
do-timers do-timers

View File

@ -397,8 +397,10 @@ M: windows-ui-backend (close-window)
GetDoubleClickTime double-click-timeout set-global ; GetDoubleClickTime double-click-timeout set-global ;
: cleanup-win32-ui ( -- ) : cleanup-win32-ui ( -- )
class-name-ptr get-global f UnregisterClass drop class-name-ptr get-global [
class-name-ptr get-global [ free ] when* dup f UnregisterClass drop
free
] when*
f class-name-ptr set-global ; f class-name-ptr set-global ;
: setup-pixel-format ( hdc -- ) : setup-pixel-format ( hdc -- )

View File

@ -1,4 +1,4 @@
<% USING: kernel io http.server namespaces sequences math html.elements random furnace webapps.article-manager webapps.article-manager.database ; %> <% USING: kernel io http.server namespaces sequences math html.elements random furnace webapps.article-manager webapps.article-manager.database html.elements ; %>
<div id="banner"><h1><% "arg1" get second article-title write %></h1></div> <div id="banner"><h1><% "arg1" get second article-title write %></h1></div>
<% f "navigation" render-template %> <% f "navigation" render-template %>
<div id="article"> <div id="article">

View File

@ -1,4 +1,4 @@
<% USING: kernel io http.server namespaces sequences math html furnace webapps.article-manager.database webapps.article-manager ; %> <% USING: kernel io http.server namespaces sequences math html furnace webapps.article-manager.database webapps.article-manager html.elements ; %>
<div id="banner"><h1><% "arg1" get second tag-title write %></h1></div> <div id="banner"><h1><% "arg1" get second tag-title write %></h1></div>
<% f "navigation" render-template %> <% f "navigation" render-template %>