diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 5b00f00e3b..e37b464392 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,3 +1,24 @@ ++ tomorrow: + +- help gadget: opens 'f' initially +- amd64 crash +- get factor running on mac intel + ++ day after: + +- multiple listener-run-files is broken +- roundoff is still not quite right with tracks +- world title a model? gadget-title returns one +- httpd search tools +- get embedded factor templates in httpd working better +- docs: slice: if sequence or seq start is changed, abstraction violation +tathi: hrm. wish I knew more about OpenGL. +[2:45pm] tathi: Factor's text display is a bit odd sometimes, until you mouse over (or click, if there's no "live" text) +[2:46pm] tathi: but the text display code looks good as far as I can tell +[2:48pm] tathi: it appears to be using the font metrics from the sprite tuple, but re-using the texture from the previous letter +[2:48pm] tathi: very odd +[2:59pm] tathi: hmm...and it looks like it's only be happening the first time you use a given character (from a given font face) + + io: - unix i/o: problems with passing f to syscalls @@ -6,83 +27,60 @@ - gdb triggers 'mutliple i/o ops on port' error - "localhost" 50 won't fail -+ help: - -- document module system -- refactor style stack code so that nested styles are handled at a lower-level - - with-style & with-stream-style - - in HTML, we can nest div tags, etc -- automatically update help graph and search index when adding/removing - articles/words -- help search: - - store positions in index - - phrase scoring algorithm based on how close the terms occur? -- fix remaining HTML stream issues -- better line spacing in ui and html - related issue - + ui: -- clipping seems off +- grid slows down with 2000 lines +- f should be clickable +- clickable vocabs +- x11 raise-window +- remaining HTML issues need fixing +- better component padding and spacing in UI +- see if its possible to only repaint dirty regions - x11 title bars are funny -- cocoa: starting the UI with +foo switches opens them as files - if the listener is running a command when the image is saved, it restores to an unresponsive gadget - fix top level window positioning - services do not launch if factor not running - prettyprinter's highlighting of non-leaves doesn't really work - rollover is not updated on window focus changes -- fix listener scroll to -- multiple listener-run-files is broken -- table line styles - x11 input methods -- roundoff is still not quite right with tracks - new browser: - browse generic words and classes - need actions for reloading the source file and opening word in jEdit - highlight showing panes in originating list - - single set of tabs across the top - make-frame should compile -- speed up ideas: - - only do clipping for certain gadgets - - use glRect - - use complex numbers instead of arrays for co-ordinates - - use vertex arrays - - use display lists - reimplement tab completion - cocoa: - horizontal wheel scrolling - polish OS X menu bar code - - dock menu - variable width word wrap +- use models for the following: + - editor gadgets + - validator models + - search tool + - slider needs range-model or similar + - outliner + compiler/ffi: +- faster sequence= for UI - fix compiled gc check - there was a performance hit, investigate - float boxing and overflow checks need a gc check too -- amd64 crash -- get factor running on mac intel - constant branch folding - type inference at branch merge points - free up r11, r12 as a vreg on ppc - float= on powerpc doesn't consider nans equal - intrinsic fixnum>float float>fixnum -- win64 port -- complex float type -- complex float intrinsics - remove literal table - C functions returning structs by value -- FIELD: char key_vector[32]; -- FIELD: union { char b[20]; short s[10]; long l[5]; } data; -- MEMBER: long pad[24]; -- C structs: use new-style string mode parsing - [ [ dup call ] dup call ] infer hangs - the invalid recursion form case needs to be fixed, for inlines too - code gc + misc: -- if a primitive throws an error, :c doesn't show the call frame there +- hashed generic method dispatch - fix this: [ 1 2 3 4 5 6 7 8 9 10 10 10 10 10 10 10 10 10 10 11 11 11 113 ] . @@ -90,6 +88,4 @@ ] - code walker & exceptions -- test and debug problems -- slice: if sequence or seq start is changed, abstraction violation -- make 3.4 bits>double an error - break: perhaps use current stdio to run break listener diff --git a/library/ui/tools/browser.factor b/library/ui/tools/browser.factor index 952c2ad45e..7be7554916 100644 --- a/library/ui/tools/browser.factor +++ b/library/ui/tools/browser.factor @@ -151,7 +151,7 @@ C: browser ( -- browser ) { [ ] set-browser-track f @center } } make-frame* ; -M: browser gadget-title drop "Browser" ; +M: browser gadget-title drop "Browser" ; : browser-window ( -- ) open-window ; diff --git a/library/ui/tools/help.factor b/library/ui/tools/help.factor index 32cffe021c..c85542f850 100644 --- a/library/ui/tools/help.factor +++ b/library/ui/tools/help.factor @@ -9,8 +9,7 @@ TUPLE: help-gadget history ; : show-help ( link help -- ) dup help-gadget-history add-history - [ help-gadget-history set-model ] keep - dup update-title ; + help-gadget-history set-model ; : go-home ( help -- ) "handbook" swap show-help ; @@ -35,8 +34,8 @@ C: help-gadget ( -- gadget ) } make-frame* ; M: help-gadget gadget-title - "Help - " swap help-gadget-history model-value - article-title append ; + help-gadget-history + [ "Help - " swap article-title append ] ; : help-tool [ help-gadget? ] diff --git a/library/ui/tools/listener.factor b/library/ui/tools/listener.factor index f5b1996c52..c9c96508c9 100644 --- a/library/ui/tools/listener.factor +++ b/library/ui/tools/listener.factor @@ -4,7 +4,7 @@ IN: gadgets-listener USING: arrays gadgets gadgets-editors gadgets-frames gadgets-labels gadgets-panes gadgets-presentations gadgets-scrolling gadgets-theme generic hashtables inspector io -jedit kernel listener math namespaces parser prettyprint +jedit kernel listener math models namespaces parser prettyprint sequences styles threads words ; TUPLE: listener-gadget pane stack ; @@ -56,7 +56,7 @@ M: listener-gadget pref-dim* M: listener-gadget focusable-child* ( listener -- gadget ) listener-gadget-pane ; -M: listener-gadget gadget-title drop "Listener" ; +M: listener-gadget gadget-title drop "Listener" ; : listener-window ( -- ) open-window ; diff --git a/library/ui/ui.factor b/library/ui/ui.factor index 4d79a26ed3..e1be321dea 100644 --- a/library/ui/ui.factor +++ b/library/ui/ui.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. IN: gadgets USING: arrays gadgets gadgets-frames gadgets-labels -gadgets-theme gadgets-viewports hashtables kernel math +gadgets-theme gadgets-viewports hashtables kernel math models namespaces queues sequences threads ; ! Assoc mapping aliens to gadgets @@ -55,7 +55,7 @@ SYMBOL: windows GENERIC: gadget-title ( gadget -- string ) -M: gadget gadget-title drop "Factor" ; +M: gadget gadget-title drop "Factor" ; M: world gadget-title world-gadget gadget-title ; @@ -69,15 +69,11 @@ C: titled-gadget ( gadget title -- ) [ set-titled-gadget-title ] keep { { f f f @center } } make-frame* ; -: update-title ( gadget -- ) - dup gadget-parent dup world? - [ >r gadget-title r> set-title ] [ 2drop ] if ; - : open-window ( gadget -- ) dup pref-dim over set-gadget-dim open-window* ; : open-titled-window ( gadget title -- ) - open-window ; + open-window ; : find-window ( quot -- world ) windows get [ second ] map @@ -97,7 +93,6 @@ C: titled-gadget ( gadget title -- ) : start-world ( world -- ) dup graft - dup gadget-title over set-title dup relayout world-gadget request-focus ; diff --git a/library/ui/world.factor b/library/ui/world.factor index c2885de27a..58cdbe1d92 100644 --- a/library/ui/world.factor +++ b/library/ui/world.factor @@ -14,7 +14,7 @@ kernel math models namespaces opengl sequences ; ! we don't store this in the world's rect-loc, since the ! co-ordinate system might be different, and generally the ! UI code assumes that everything starts at { 0 0 }. -TUPLE: world gadget status focus focused? fonts handle loc ; +TUPLE: world gadget title status focus focused? fonts handle loc ; : free-fonts ( world -- ) dup world-handle select-gl-context @@ -23,6 +23,7 @@ TUPLE: world gadget status focus focused? fonts handle loc ; DEFER: request-focus C: world ( gadget -- world ) + f over set-world-title f over set-world-status { { f set-world-gadget f @center } } make-frame* t over set-gadget-root? @@ -35,6 +36,25 @@ C: world ( gadget -- world ) M: world pref-dim* ( world -- dim ) delegate pref-dim* { 1024 768 } vmin ; +: activate-world-model ( world model -- ) + [ add-connection ] keep activate-model ; + +M: world graft* ( world -- ) + dup dup world-title activate-world-model + dup dup world-status activate-world-model + model-changed ; + +: deactivate-world-model ( world model -- ) + [ remove-connection ] keep deactivate-model ; + +M: world ungraft* ( world -- ) + dup + dup world-title deactivate-world-model + dup world-status deactivate-world-model ; + +M: world model-changed ( world -- ) + dup world-title model-value swap set-title ; + : focused-ancestors ( world -- seq ) world-focus parents ;