From 48a3fad1a13a10578089b0ad07507d0b276d7e43 Mon Sep 17 00:00:00 2001 From: slava Date: Thu, 5 Oct 2006 21:15:41 +0000 Subject: [PATCH] Search gadget improvements --- TODO.FACTOR.txt | 7 ++--- library/help/markup.factor | 7 +++-- library/syntax/parser.factor | 2 +- library/ui/load.factor | 4 +-- library/ui/test/fields.factor | 7 ----- library/ui/text/editor.factor | 3 ++- library/ui/text/field.factor | 21 --------------- library/ui/text/interactor.factor | 1 + library/ui/tools/browser.factor | 23 +++++++++++++--- library/ui/tools/help.factor | 14 ++++++++-- library/ui/tools/listener.factor | 2 +- library/ui/tools/search.factor | 45 +++++++++---------------------- library/ui/tools/workspace.factor | 14 ++++++++-- library/ui/ui.factor | 5 ++-- 14 files changed, 71 insertions(+), 84 deletions(-) delete mode 100644 library/ui/test/fields.factor delete mode 100644 library/ui/text/field.factor diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 147f5d4f25..b5817299a7 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,7 +1,6 @@ - auto-invoke code gc - fix alien-callback/SEH bug on win32 - list mouse gestures -- search gadget should use list - maybe simplify list into displaying list a sequence of strings - the mouse button overload sucks, use popup menus instead - nested presentation mouse over is not right @@ -12,10 +11,8 @@ - better help result ranking - minibuffer should show a title - browser: toolbar is missing -- new search gadget: - - field does not move caret properly - - use it instead of the old search gadget - - listener: 'edit a file' feature +- listener: 'edit a file' feature +- viewport sizing issue + ui: diff --git a/library/help/markup.factor b/library/help/markup.factor index 69ded476db..3c0d5793dc 100644 --- a/library/help/markup.factor +++ b/library/help/markup.factor @@ -135,11 +135,14 @@ M: f print-element drop ; ! Some links : >link ( obj -- obj ) dup link? [ ] unless ; -: $link ( element -- ) - first link-style [ +: ($link) ( article -- ) + link-style [ dup article-title swap >link write-object ] with-style ; +: $link ( element -- ) + first ($link) ; + : $vocab-link ( element -- ) first link-style [ dup write-object diff --git a/library/syntax/parser.factor b/library/syntax/parser.factor index 2342963736..d8b09309d2 100644 --- a/library/syntax/parser.factor +++ b/library/syntax/parser.factor @@ -107,7 +107,7 @@ TUPLE: bad-escape ; global [ { "scratchpad" "syntax" "arrays" "compiler" "definitions" - "errors" "generic" "hashtables" "help" "inference" + "errors" "generic" "hashtables" "inference" "io" "kernel" "listener" "math" "memory" "modules" "namespaces" "parser" "prettyprint" "sequences" "shells" "strings" "styles" "test" diff --git a/library/ui/load.factor b/library/ui/load.factor index f9c3472a43..aa4e9b8b62 100644 --- a/library/ui/load.factor +++ b/library/ui/load.factor @@ -33,15 +33,14 @@ PROVIDE: library/ui { "text/elements.factor" "text/editor.factor" "text/commands.factor" - "text/field.factor" "text/interactor.factor" "gadgets/presentations.factor" "ui.factor" "tools/tools.factor" + "tools/search.factor" "tools/messages.factor" "tools/listener.factor" "tools/walker.factor" - "tools/search.factor" "tools/browser.factor" "tools/help.factor" "tools/dataflow.factor" @@ -52,7 +51,6 @@ PROVIDE: library/ui { "test/models.factor" "test/document.factor" "test/rectangles.factor" - "test/fields.factor" "test/commands.factor" "test/panes.factor" "test/editor.factor" diff --git a/library/ui/test/fields.factor b/library/ui/test/fields.factor deleted file mode 100644 index 85bb43ef03..0000000000 --- a/library/ui/test/fields.factor +++ /dev/null @@ -1,7 +0,0 @@ -IN: temporary -USING: gadgets-text kernel models namespaces test ; - -[ ] [ f dup "model" set "field" set ] unit-test -[ ] [ "Hello world" "field" get set-editor-text ] unit-test -[ "Hello world" ] [ "field" get field-commit ] unit-test -[ "Hello world" ] [ "model" get model-value ] unit-test diff --git a/library/ui/text/editor.factor b/library/ui/text/editor.factor index f48d30644a..a7bbcd1609 100644 --- a/library/ui/text/editor.factor +++ b/library/ui/text/editor.factor @@ -123,7 +123,8 @@ M: editor model-changed ] when drop ; M: loc-monitor model-changed - loc-monitor-editor control-self scroll>caret ; + loc-monitor-editor control-self + dup relayout-1 scroll>caret ; : draw-caret ( -- ) editor get editor-focused? [ diff --git a/library/ui/text/field.factor b/library/ui/text/field.factor deleted file mode 100644 index 43fa1a057a..0000000000 --- a/library/ui/text/field.factor +++ /dev/null @@ -1,21 +0,0 @@ -! Copyright (C) 2006 Slava Pestov -! See http://factorcode.org/license.txt for BSD license. -IN: gadgets-text -USING: gadgets generic kernel models sequences gadgets-theme ; - -TUPLE: field model ; - -C: field ( model -- field ) - over set-delegate - [ set-field-model ] keep - dup dup set-control-self ; - -: field-commit ( field -- string ) - [ editor-text ] keep - [ field-model [ dupd set-model ] when* ] keep - select-all ; - -field "Field commands" { - { "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] } - { "Accept input" T{ key-down f f "RETURN" } [ field-commit drop ] } -} define-commands diff --git a/library/ui/text/interactor.factor b/library/ui/text/interactor.factor index 79023a19c8..4eae030bee 100644 --- a/library/ui/text/interactor.factor +++ b/library/ui/text/interactor.factor @@ -60,4 +60,5 @@ M: interactor stream-readln interactor "Interactor commands" { { "Evaluate" T{ key-down f f "RETURN" } [ interactor-commit ] } + { "Clear input" T{ key-down f { C+ } "k" } [ control-model clear-doc ] } } define-commands diff --git a/library/ui/tools/browser.factor b/library/ui/tools/browser.factor index 09053fee4f..c4e14ac0be 100644 --- a/library/ui/tools/browser.factor +++ b/library/ui/tools/browser.factor @@ -45,7 +45,7 @@ TUPLE: tile definition gadget ; dup faint-boundary ; C: tile ( definition -- gadget ) - 2dup { tile } + 2dup { tile } "Word commands" over set-gadget-delegate [ set-tile-definition ] keep ; @@ -87,9 +87,24 @@ C: navigator ( -- gadget ) C: browser ( -- gadget ) { - { [ ] set-browser-navigator f 1/5 } - { [ ] set-browser-definitions [ ] 3/5 } - { [ [ apropos ] ] set-browser-search f 1/5 } + { + [ ] + set-browser-navigator + f + 1/5 + } + { + [ ] + set-browser-definitions + [ ] + 3/5 + } + { + [ "" [ browser call-tool ] ] + set-browser-search + f + 1/5 + } } { 0 1 } make-track* ; M: browser focusable-child* browser-search ; diff --git a/library/ui/tools/help.factor b/library/ui/tools/help.factor index b48a0512d5..936650b422 100644 --- a/library/ui/tools/help.factor +++ b/library/ui/tools/help.factor @@ -22,8 +22,18 @@ TUPLE: help-gadget pane history search ; C: help-gadget ( -- gadget ) dup init-history { - { [ ] set-help-gadget-pane [ ] 4/5 } - { [ [ search-help. ] ] set-help-gadget-search f 1/5 } + { + [ ] + set-help-gadget-pane + [ ] + 4/5 + } + { + [ "" [ help-gadget call-tool ] ] + set-help-gadget-search + f + 1/5 + } } { 0 1 } make-track* ; M: help-gadget focusable-child* help-gadget-search ; diff --git a/library/ui/tools/listener.factor b/library/ui/tools/listener.factor index 0273a26368..ef23f7dd12 100644 --- a/library/ui/tools/listener.factor +++ b/library/ui/tools/listener.factor @@ -128,7 +128,7 @@ M: listener-gadget tool-help : insert-completion ( completion -- ) find-listener [ - >r peek word-name r> listener-gadget-input user-input + >r word-name r> listener-gadget-input user-input ] keep hide-minibuffer ; listener-gadget "Toolbar" { diff --git a/library/ui/tools/search.factor b/library/ui/tools/search.factor index 09df128166..efadc74cab 100644 --- a/library/ui/tools/search.factor +++ b/library/ui/tools/search.factor @@ -6,39 +6,12 @@ gadgets-panes gadgets-scrolling gadgets-text gadgets-theme generic help tools kernel models sequences words gadgets-borders gadgets-lists namespaces ; -TUPLE: search-gadget input ; - -: ( model quot -- ) - [ over empty? [ 2drop ] [ call ] if ] curry - ; - -: ( field -- gadget ) - { - { [ "Search: "