]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.gadgets.editors: Add page up/down
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 16 Feb 2009 07:03:50 +0000 (01:03 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 16 Feb 2009 07:03:50 +0000 (01:03 -0600)
basis/ui/gadgets/editors/editors-tests.factor
basis/ui/gadgets/editors/editors.factor
basis/ui/gadgets/line-support/line-support.factor

index ec2f39f00954b7b2b56eca6799c16190993a6c07..f8dc5b91c9f12802da50936c798f0bdad90f9f8e 100644 (file)
@@ -1,7 +1,8 @@
 USING: accessors ui.gadgets.editors tools.test kernel io
 io.streams.plain definitions namespaces ui.gadgets
 ui.gadgets.grids prettyprint documents ui.gestures tools.test.ui
-models documents.elements ui.gadgets.scrollers sequences ;
+models documents.elements ui.gadgets.scrollers ui.gadgets.line-support
+sequences ;
 IN: ui.gadgets.editors.tests
 
 [ "foo bar" ] [
@@ -57,4 +58,11 @@ IN: ui.gadgets.editors.tests
 [ ] [ <editor> "A" over set-editor-string com-join-lines ] unit-test
 [ "A B" ] [ <editor> "A\nB" over set-editor-string [ com-join-lines ] [ editor-string ] bi ] unit-test
 
-[ 2 ] [ <editor> 20 >>min-rows 20 >>min-cols pref-viewport-dim length ] unit-test
\ No newline at end of file
+[ 2 ] [ <editor> 20 >>min-rows 20 >>min-cols pref-viewport-dim length ] unit-test
+
+[ 20 ] [
+    <editor> 20 >>min-rows 20 >>min-cols
+    dup pref-viewport-dim >>dim
+    visible-lines
+] unit-test
+
index 7724e262aeaa4072319e6e48ff4d627adbc706ef..d7aa6056f88ce6b7a9572d62b41b236c7bce84f8 100755 (executable)
@@ -480,11 +480,23 @@ TUPLE: multiline-editor < editor ;
 
 : next-line ( editor -- ) line-elt editor-next ;
 
-: select-previous-line ( editor -- ) 
-    line-elt editor-select-prev ;
+<PRIVATE
 
-: select-next-line ( editor -- ) 
-    line-elt editor-select-next ;
+: page-elt ( editor -- editor element ) dup visible-lines <page-elt> ;
+
+PRIVATE>
+
+: previous-page ( editor -- ) page-elt editor-prev ;
+
+: next-page ( editor -- ) page-elt editor-next ;
+
+: select-previous-line ( editor -- ) line-elt editor-select-prev ;
+
+: select-next-line ( editor -- ) line-elt editor-select-next ;
+
+: select-previous-page ( editor -- ) page-elt editor-select-prev ;
+
+: select-next-page ( editor -- ) page-elt editor-select-next ;
 
 : insert-newline ( editor -- )
     "\n" swap user-input* drop ;
@@ -522,6 +534,10 @@ multiline-editor "multiline" f {
     { T{ key-down f f "DOWN" } next-line }
     { T{ key-down f { S+ } "UP" } select-previous-line }
     { T{ key-down f { S+ } "DOWN" } select-next-line }
+    { T{ key-down f f "PAGE_UP" } previous-page }
+    { T{ key-down f f "PAGE_DOWN" } next-page }
+    { T{ key-down f { S+ } "PAGE_UP" } select-previous-page }
+    { T{ key-down f { S+ } "PAGE_DOWN" } select-next-page }
     { T{ key-down f f "RET" } insert-newline }
     { T{ key-down f { S+ } "RET" } insert-newline }
     { T{ key-down f f "ENTER" } insert-newline }
index b5f969da11d387bdb9b94be26f54d7f3a4ce957b..ab44d458393d17a2d1c28f5dcf4bee8bc51cd927 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays combinators fry kernel math math.functions math.order
 math.ranges math.vectors namespaces opengl sequences ui.gadgets
-ui.render ui.text ui.gadgets.scrollers ;
+ui.render ui.text ui.gadgets.scrollers ui.gadgets.viewports ;
 IN: ui.gadgets.line-support
 
 ! Some code shared by table and editor gadgets
@@ -77,4 +77,7 @@ M: line-gadget pref-viewport-dim
     [ pref-dim ] keep
     [ line-gadget-width ]
     [ line-gadget-height ]
-    2bi 2array ;
\ No newline at end of file
+    2bi 2array ;
+
+: visible-lines ( gadget -- n )
+    [ visible-dim second ] [ line-height ] bi /i 1- ;
\ No newline at end of file