Multi-window code cleanups

release
slava 2006-03-18 07:23:57 +00:00
parent 5135e21055
commit 0eb39be459
7 changed files with 38 additions and 28 deletions

View File

@ -161,6 +161,7 @@ vectors words ;
"/library/freetype/freetype.factor"
"/library/freetype/freetype-gl.factor"
"/library/ui/backend.factor"
"/library/ui/timers.factor"
"/library/ui/gadgets.factor"
"/library/ui/layouts.factor"
@ -185,6 +186,7 @@ vectors words ;
"/library/ui/panes.factor"
"/library/ui/outliner.factor"
"/library/ui/listener.factor"
"/library/ui/launchpad.factor"
"/library/ui/commands.factor"
"/library/ui/presentations.factor"

View File

@ -1,19 +1,16 @@
! Copyright (C) 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays cocoa freetype gadgets-layouts
gadgets-listener gadgets-panes hashtables kernel lists math
namespaces objc objc-NSApplication objc-NSEvent objc-NSObject
objc-NSOpenGLView objc-NSView objc-NSWindow sequences threads ;
USING: arrays cocoa freetype gadgets gadgets-launchpad
gadgets-layouts gadgets-listener gadgets-panes hashtables kernel
lists math namespaces objc objc-NSApplication objc-NSEvent
objc-NSObject objc-NSOpenGLView objc-NSView objc-NSWindow
sequences threads ;
! Cocoa backend for Factor UI
IN: objc-FactorView
DEFER: FactorView
IN: gadgets
: repaint-handle ( handle -- ) 1 [setNeedsDisplay:] ;
IN: gadgets-cocoa
! Hash mapping aliens to gadgets
@ -148,15 +145,20 @@ H{ } clone views set-global
: <FactorWindow> ( gadget title -- window )
>r <FactorView> r> <ViewWindow> ;
IN: gadgets
: repaint-handle ( handle -- ) 1 [setNeedsDisplay:] ;
: in-window ( gadget status dim title -- )
>r <world> r> <FactorWindow> drop ;
IN: shells
: ui
[
[
<listener> { 600 700 0 } <world>
"Listener" <FactorWindow> drop
[ clear listener-thread ] in-thread
pane get request-focus
launchpad-window
listener-window
finish-launching
event-loop
] with-cocoa

View File

@ -30,5 +30,4 @@ USING: kernel math objc-NSObject objc-NSView objc-NSWindow ;
[ swap [setContentView:] ] keep
dup dup [contentView] [setInitialFirstResponder:]
dup 1 [setAcceptsMouseMovedEvents:]
dup f [makeKeyAndOrderFront:]
( [autorelease] ) ;
dup f [makeKeyAndOrderFront:] ;

View File

@ -0,0 +1,5 @@
IN: gadgets
DEFER: repaint-handle ( handle -- )
DEFER: in-window ( gadget status dim title -- )

View File

@ -101,8 +101,3 @@ M: gadget children-on ( rect/point gadget -- list )
GENERIC: gadget-help
M: gadget gadget-help drop f ;
! Repaint/relayout protocol
! This word is defined in the backend
DEFER: repaint-handle ( handle -- )

View File

@ -1,18 +1,20 @@
IN: gadgets-launchpad
USING: gadgets-buttons gadgets-labels gadgets-layouts io kernel
memory namespaces sequences ;
USING: gadgets gadgets-buttons gadgets-labels gadgets-layouts
gadgets-listener io kernel memory namespaces sequences ;
: <launchpad> ( menu -- )
[ first2 >r <label> r> <bevel-button> ] map make-pile ;
[ first2 >r <label> r> <bevel-button> ] map make-pile
1 over set-pack-fill ;
: default-launchpad
{
{ "Listener" [ global [ "Hi" print ] bind drop ] }
{ "Browser" [ global [ "Hi" print ] bind drop ] }
{ "Inspector" [ global [ "Hi" print ] bind drop ] }
{ "Help" [ global [ "Hi" print ] bind drop ] }
{ "Tutorial" [ global [ "Hi" print ] bind drop ] }
{ "System" [ global [ "Hi" print ] bind drop ] }
{ "Listener" [ listener-window ] }
{ "Save image" [ save ] }
{ "Exit" [ 0 exit ] }
} <launchpad> ;
: simple-window ( gadget title -- )
>r "" <label> over pref-dim r> in-window ;
: launchpad-window ( -- )
default-launchpad "Factor" simple-window ;

View File

@ -71,3 +71,8 @@ SYMBOL: browser-pane
<browser-scroller> <listener-scroller>
0 <x-splitter> over @center frame-add
<bottom-bar> >r over @bottom frame-add r> ;
: listener-window ( -- )
<listener> { 600 700 0 } "Listener" in-window
[ clear listener-thread ] in-thread
pane get request-focus ;