Added /commands
parent
97ccee96e5
commit
3928d3dae0
|
@ -0,0 +1,16 @@
|
||||||
|
! Copyright (C) 2008 William Schlieper
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
|
||||||
|
USING: kernel vocabs.loader sequences strings irc.messages ;
|
||||||
|
|
||||||
|
IN: irc.ui.commandparser
|
||||||
|
|
||||||
|
"irc.ui.commands" require
|
||||||
|
|
||||||
|
: command ( string -- command )
|
||||||
|
dup empty? [ drop "say" ] when
|
||||||
|
dup "irc.ui.commands" lookup
|
||||||
|
[ "quote" "irc.ui.commands" lookup ] unless* ;
|
||||||
|
|
||||||
|
: parse-message ( string -- )
|
||||||
|
"/" head? [ " " split1 swap command execute ] when ;
|
|
@ -0,0 +1,13 @@
|
||||||
|
! Copyright (C) 2008 William Schlieper
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
|
||||||
|
USING: kernel irc.client irc.messages irc.ui
|
||||||
|
|
||||||
|
IN: irc.ui.commands
|
||||||
|
|
||||||
|
: say ( string -- )
|
||||||
|
[ client get profile>> nickname>> <own-message> print-irc ]
|
||||||
|
[ listener get write-message ] bi ;
|
||||||
|
|
||||||
|
: quote ( string -- )
|
||||||
|
drop ; ! THIS WILL CHANGE
|
|
@ -3,13 +3,17 @@
|
||||||
|
|
||||||
USING: accessors kernel threads combinators concurrency.mailboxes
|
USING: accessors kernel threads combinators concurrency.mailboxes
|
||||||
sequences strings hashtables splitting fry assocs hashtables
|
sequences strings hashtables splitting fry assocs hashtables
|
||||||
ui ui.gadgets.panes ui.gadgets.editors ui.gadgets.scrollers
|
ui ui.gadgets ui.gadgets.panes ui.gadgets.editors
|
||||||
ui.commands ui.gadgets.frames ui.gestures ui.gadgets.tabs
|
ui.gadgets.scrollers ui.commands ui.gadgets.frames ui.gestures
|
||||||
io io.styles namespaces irc.client irc.messages calendar
|
ui.gadgets.tabs ui.gadgets.grids
|
||||||
calendar.format ;
|
io io.styles namespaces irc.client irc.client.private
|
||||||
|
irc.messages irc.messages.private irc.ui.commandparser
|
||||||
|
calendar calendar.format ;
|
||||||
|
|
||||||
IN: irc.ui
|
IN: irc.ui
|
||||||
|
|
||||||
|
SYMBOL: listener
|
||||||
|
|
||||||
SYMBOL: client
|
SYMBOL: client
|
||||||
|
|
||||||
TUPLE: ui-window client tabs ;
|
TUPLE: ui-window client tabs ;
|
||||||
|
@ -20,14 +24,15 @@ TUPLE: ui-window client tabs ;
|
||||||
: green { 0 0.5 0 1 } ;
|
: green { 0 0.5 0 1 } ;
|
||||||
: blue { 0 0 1 1 } ;
|
: blue { 0 0 1 1 } ;
|
||||||
|
|
||||||
: prefix>nick ( prefix -- nick )
|
: dot-or-parens ( string -- string )
|
||||||
"!" split first ;
|
dup empty? [ drop "." ]
|
||||||
|
[ "(" prepend ")" append ] if ;
|
||||||
|
|
||||||
GENERIC: write-irc ( irc-message -- )
|
GENERIC: write-irc ( irc-message -- )
|
||||||
|
|
||||||
M: privmsg write-irc
|
M: privmsg write-irc
|
||||||
"<" blue write-color
|
"<" blue write-color
|
||||||
[ prefix>> prefix>nick write ] keep
|
[ prefix>> parse-name write ] keep
|
||||||
"> " blue write-color
|
"> " blue write-color
|
||||||
trailing>> write ;
|
trailing>> write ;
|
||||||
|
|
||||||
|
@ -44,22 +49,20 @@ M: own-message write-irc
|
||||||
|
|
||||||
M: join write-irc
|
M: join write-irc
|
||||||
"* " green write-color
|
"* " green write-color
|
||||||
prefix>> prefix>nick write
|
prefix>> parse-name write
|
||||||
" has entered the channel." green write-color ;
|
" has entered the channel." green write-color ;
|
||||||
|
|
||||||
M: part write-irc
|
M: part write-irc
|
||||||
"* " red write-color
|
"* " red write-color
|
||||||
[ prefix>> prefix>nick write ] keep
|
[ prefix>> parse-name write ] keep
|
||||||
" has left the channel(" red write-color
|
" has left the channel" red write-color
|
||||||
trailing>> write
|
trailing>> dot-or-parens red write-color ;
|
||||||
")" red write-color ;
|
|
||||||
|
|
||||||
M: quit write-irc
|
M: quit write-irc
|
||||||
"* " red write-color
|
"* " red write-color
|
||||||
[ prefix>> prefix>nick write ] keep
|
[ prefix>> parse-name write ] keep
|
||||||
" has left IRC(" red write-color
|
" has left IRC" red write-color
|
||||||
trailing>> write
|
trailing>> dot-or-parens red write-color ;
|
||||||
")" red write-color ;
|
|
||||||
|
|
||||||
M: irc-end write-irc
|
M: irc-end write-irc
|
||||||
drop "* You have left IRC" red write-color ;
|
drop "* You have left IRC" red write-color ;
|
||||||
|
@ -77,9 +80,9 @@ M: irc-message write-irc
|
||||||
[ timestamp>> timestamp>hms write " " write ]
|
[ timestamp>> timestamp>hms write " " write ]
|
||||||
[ write-irc nl ] bi ;
|
[ write-irc nl ] bi ;
|
||||||
|
|
||||||
: send-message ( message listener client -- )
|
: send-message ( message -- )
|
||||||
[ nip profile>> nickname>> <own-message> print-irc ]
|
[ print-irc ]
|
||||||
[ drop write-message ] 3bi ;
|
[ listener get write-message ] bi ;
|
||||||
|
|
||||||
: display ( stream listener -- )
|
: display ( stream listener -- )
|
||||||
'[ , [ [ t ]
|
'[ , [ [ t ]
|
||||||
|
@ -95,32 +98,42 @@ TUPLE: irc-editor < editor outstream listener client ;
|
||||||
: <irc-editor> ( pane listener client -- editor )
|
: <irc-editor> ( pane listener client -- editor )
|
||||||
[ irc-editor new-editor
|
[ irc-editor new-editor
|
||||||
swap >>listener swap <pane-stream> >>outstream
|
swap >>listener swap <pane-stream> >>outstream
|
||||||
] dip client>> >>client ;
|
] dip >>client ;
|
||||||
|
|
||||||
: editor-send ( irc-editor -- )
|
: editor-send ( irc-editor -- )
|
||||||
{ [ outstream>> ]
|
{ [ outstream>> ]
|
||||||
[ editor-string ]
|
|
||||||
[ listener>> ]
|
[ listener>> ]
|
||||||
[ client>> ]
|
[ client>> ]
|
||||||
|
[ editor-string ]
|
||||||
[ "" swap set-editor-string ] } cleave
|
[ "" swap set-editor-string ] } cleave
|
||||||
'[ , , , send-message ] with-output-stream ;
|
'[ , listener set , client set , parse-message ] with-output-stream ;
|
||||||
|
|
||||||
irc-editor "general" f {
|
irc-editor "general" f {
|
||||||
{ T{ key-down f f "RET" } editor-send }
|
{ T{ key-down f f "RET" } editor-send }
|
||||||
{ T{ key-down f f "ENTER" } editor-send }
|
{ T{ key-down f f "ENTER" } editor-send }
|
||||||
} define-command-map
|
} define-command-map
|
||||||
|
|
||||||
: irc-page ( name pane editor tabbed -- )
|
TUPLE: irc-page < frame listener client ;
|
||||||
[ [ <scroller> @bottom frame, ! editor
|
|
||||||
<scroller> @center frame, ! pane
|
: <irc-page> ( listener client -- irc-page )
|
||||||
] make-frame swap ] dip add-page ;
|
irc-page new-frame
|
||||||
|
[ g swap client>> >>client swap [ swap (>>listener) ] keep
|
||||||
|
[ <irc-pane> [ <scroller> g @center grid-add ] keep ]
|
||||||
|
[ g client>> <irc-editor> <scroller> g @bottom grid-add ] bi
|
||||||
|
g ] with-gadget ;
|
||||||
|
|
||||||
|
M: irc-page graft*
|
||||||
|
[ listener>> ] [ client>> ] bi
|
||||||
|
add-listener ;
|
||||||
|
|
||||||
|
M: irc-page ungraft*
|
||||||
|
[ listener>> ] [ client>> ] bi
|
||||||
|
remove-listener ;
|
||||||
|
|
||||||
: join-channel ( name ui-window -- )
|
: join-channel ( name ui-window -- )
|
||||||
[ dup <irc-channel-listener> ] dip
|
[ dup <irc-channel-listener> ] dip
|
||||||
[ client>> add-listener ]
|
[ <irc-page> swap ] keep
|
||||||
[ drop <irc-pane> dup ]
|
tabs>> add-page ;
|
||||||
[ [ <irc-editor> ] keep ] 2tri
|
|
||||||
tabs>> irc-page ;
|
|
||||||
|
|
||||||
: irc-window ( ui-window -- )
|
: irc-window ( ui-window -- )
|
||||||
[ tabs>> ]
|
[ tabs>> ]
|
||||||
|
|
Loading…
Reference in New Issue