irc.ui: Update to work with the latest irc.client changes

db4
Bruno Deferrari 2008-10-05 21:33:53 -02:00
parent a712fd3d0b
commit 14dcf83993
2 changed files with 21 additions and 27 deletions

View File

@ -8,7 +8,7 @@ IN: irc.ui.commands
: say ( string -- ) : say ( string -- )
irc-tab get irc-tab get
[ window>> client>> profile>> nickname>> <own-message> print-irc ] [ window>> client>> profile>> nickname>> <own-message> print-irc ]
[ listener>> write-message ] 2bi ; [ chat>> speak ] 2bi ;
: join ( string -- ) : join ( string -- )
irc-tab get window>> join-channel ; irc-tab get window>> join-channel ;
@ -18,7 +18,7 @@ IN: irc.ui.commands
: whois ( string -- ) : whois ( string -- )
"WHOIS" swap { } clone swap <irc-client-message> "WHOIS" swap { } clone swap <irc-client-message>
irc-tab get listener>> write-message ; irc-tab get listener>> speak ;
: quote ( string -- ) : quote ( string -- )
drop ; ! THIS WILL CHANGE drop ; ! THIS WILL CHANGE

View File

@ -15,7 +15,7 @@ RENAME: join sequences => sjoin
IN: irc.ui IN: irc.ui
SYMBOL: listener SYMBOL: chat
SYMBOL: client SYMBOL: client
@ -24,7 +24,7 @@ TUPLE: ui-window < tabbed client ;
M: ui-window ungraft* M: ui-window ungraft*
client>> terminate-irc ; client>> terminate-irc ;
TUPLE: irc-tab < frame listener client window ; TUPLE: irc-tab < frame chat client window ;
: write-color ( str color -- ) : write-color ( str color -- )
foreground associate format ; foreground associate format ;
@ -117,7 +117,7 @@ M: irc-disconnected write-irc
M: irc-connected write-irc M: irc-connected write-irc
drop "* Connected" dark-green write-color ; drop "* Connected" dark-green write-color ;
M: irc-listener-end write-irc M: irc-chat-end write-irc
drop ; drop ;
M: irc-message write-irc M: irc-message write-irc
@ -135,7 +135,7 @@ M: object time-happened drop now ;
: send-message ( message -- ) : send-message ( message -- )
[ print-irc ] [ print-irc ]
[ listener get write-message ] bi ; [ chat get speak ] bi ;
GENERIC: handle-inbox ( tab message -- ) GENERIC: handle-inbox ( tab message -- )
@ -150,7 +150,7 @@ M: object handle-inbox
: display ( stream tab -- ) : display ( stream tab -- )
'[ _ [ [ t ] '[ _ [ [ t ]
[ _ dup listener>> read-message handle-inbox ] [ _ dup chat>> hear handle-inbox ]
[ ] while ] with-output-stream ] "ircv" spawn drop ; [ ] while ] with-output-stream ] "ircv" spawn drop ;
: <irc-pane> ( tab -- tab pane ) : <irc-pane> ( tab -- tab pane )
@ -175,33 +175,28 @@ irc-editor "general" f {
{ T{ key-down f f "ENTER" } editor-send } { T{ key-down f f "ENTER" } editor-send }
} define-command-map } define-command-map
: new-irc-tab ( listener ui-window class -- irc-tab ) : new-irc-tab ( chat ui-window class -- irc-tab )
new-frame new-frame
swap >>window swap >>window
swap >>listener swap >>chat
<irc-pane> [ <scroller> @center grid-add ] keep <irc-pane> [ <scroller> @center grid-add ] keep
<irc-editor> <scroller> @bottom grid-add ; <irc-editor> <scroller> @bottom grid-add ;
GENERIC: init-listener ( listener -- )
M: object init-listener drop ;
M: irc-channel-listener init-listener join-irc-channel ;
M: irc-tab graft* M: irc-tab graft*
[ listener>> dup ] [ window>> client>> ] bi add-listener [ chat>> ] [ window>> client>> ] bi attach-chat ;
init-listener ;
M: irc-tab ungraft* M: irc-tab ungraft*
listener>> remove-listener ; chat>> dettach-chat ;
TUPLE: irc-channel-tab < irc-tab userlist ; TUPLE: irc-channel-tab < irc-tab userlist ;
: <irc-channel-tab> ( listener ui-window -- irc-tab ) : <irc-channel-tab> ( chat ui-window -- irc-tab )
irc-channel-tab new-irc-tab irc-channel-tab new-irc-tab
<pile> [ <scroller> @right grid-add ] keep >>userlist ; <pile> [ <scroller> @right grid-add ] keep >>userlist ;
: update-participants ( tab -- ) : update-participants ( tab -- )
[ userlist>> [ clear-gadget ] keep ] [ userlist>> [ clear-gadget ] keep ]
[ listener>> participants>> ] bi [ chat>> participants>> ] bi
[ +operator+ value-labels dark-green add-gadget-color ] [ +operator+ value-labels dark-green add-gadget-color ]
[ +voice+ value-labels blue add-gadget-color ] [ +voice+ value-labels blue add-gadget-color ]
[ +normal+ value-labels black add-gadget-color ] tri drop ; [ +normal+ value-labels black add-gadget-color ] tri drop ;
@ -211,22 +206,22 @@ M: participant-changed handle-inbox
TUPLE: irc-server-tab < irc-tab ; TUPLE: irc-server-tab < irc-tab ;
: <irc-server-tab> ( listener -- irc-tab ) : <irc-server-tab> ( chat -- irc-tab )
f irc-server-tab new-irc-tab ; f irc-server-tab new-irc-tab ;
: <irc-nick-tab> ( listener ui-window -- irc-tab ) : <irc-nick-tab> ( chat ui-window -- irc-tab )
irc-tab new-irc-tab ; irc-tab new-irc-tab ;
M: irc-tab pref-dim* M: irc-tab pref-dim*
drop { 480 480 } ; drop { 480 480 } ;
: join-channel ( name ui-window -- ) : join-channel ( name ui-window -- )
[ dup <irc-channel-listener> ] dip [ dup <irc-channel-chat> ] dip
[ <irc-channel-tab> swap ] keep [ <irc-channel-tab> swap ] keep
add-page ; add-page ;
: query-nick ( nick ui-window -- ) : query-nick ( nick ui-window -- )
[ dup <irc-nick-listener> ] dip [ dup <irc-nick-chat> ] dip
[ <irc-nick-tab> swap ] keep [ <irc-nick-tab> swap ] keep
add-page ; add-page ;
@ -237,16 +232,15 @@ M: irc-tab pref-dim*
: ui-connect ( profile -- ui-window ) : ui-connect ( profile -- ui-window )
<irc-client> <irc-client>
{ [ [ <irc-server-listener> ] dip add-listener ] { [ [ <irc-server-chat> ] dip attach-chat ]
[ listeners>> +server-listener+ swap at <irc-server-tab> dup [ chats>> +server-chat+ swap at <irc-server-tab> dup
"Server" associate ui-window new-tabbed [ swap (>>window) ] keep ] "Server" associate ui-window new-tabbed [ swap (>>window) ] keep ]
[ >>client ] [ >>client ]
[ connect-irc ] } cleave ; [ connect-irc ] } cleave ;
: server-open ( server port nick password channels -- ) : server-open ( server port nick password channels -- )
[ <irc-profile> ui-connect [ irc-window ] keep ] dip 2drop ; [ <irc-profile> ui-connect [ irc-window ] keep ] dip
! FIXME: should join channels only after we have been logged in [ over join-channel ] each drop ;
! [ over join-channel ] each drop ;
: main-run ( -- ) run-ircui ; : main-run ( -- ) run-ircui ;