Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4623 → Rev 4622

/programs/network/ircc/gui.inc
282,23 → 282,6
cmp [edi + window.data_ptr], 0
jne .more_btn
 
; Draw the close window button
 
mov edi, [window_active]
cmp [edi + window.type], WINDOWTYPE_SERVER ; dont let the user close server window
je @f
 
; mov eax, 8
mov ebx, [xsize]
sub ebx, 12
shl ebx, 16
mov bx, 12
mov ecx, 6 shl 16 + 12
mov edx, WINDOW_BTN_CLOSE
mov esi, 0x00aa0000 ; red !
mcall
@@:
 
; Draw the windownames onto the buttons
 
mov eax, 4
322,28 → 305,25
jnz .more
.enough:
 
ret
; Draw the close window button
 
mov edi, [window_active]
cmp [edi + window.type], WINDOWTYPE_SERVER ; dont let the user close server window
je @f
 
 
highlight_updated_tabs:
mov eax, 4
mov ebx, 10 shl 16 + 15
mov ecx, 0x80aa0000
mov esi, MAX_WINDOWS
mov edi, windows
.more_:
test [edi + window.flags], FLAG_UPDATED
jz .next
lea edx, [edi + window.name]
mov eax, 8
mov ebx, [xsize]
sub ebx, 12
shl ebx, 16
mov bx, 12
mov ecx, 6 shl 16 + 12
mov edx, WINDOW_BTN_CLOSE
; mov esi, [colors.work_button]
mov esi, 0x00aa0000 ; red !
mcall
.next:
add edi, sizeof.window ; get ptr to next window
cmp [edi + window.data_ptr], 0
je .enough_
add ebx, 125 shl 16
dec esi
jnz .more_
.enough_:
 
ret
@@:
 
ret
 
 
/programs/network/ircc/ircc.asm
13,7 → 13,7
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
version equ '0.20'
version equ '0.19'
 
; connection status
STATUS_DISCONNECTED = 0
200,7 → 200,7
 
; Welcome user
mov esi, str_welcome
call print_asciiz
call print_text2
 
; Check if parameter contains an URL
cmp byte[param], 0
242,7 → 242,6
jne .no_update
call draw_channel_list
.no_update:
call highlight_updated_tabs
 
jmp mainloop
 
291,9 → 290,8
mov ebx, [ebx + window.data_ptr]
lea esi, [ebx + window_data.names + eax]
call window_open
test ebx, ebx
jz mainloop
mov [window_active], ebx
push [window_print]
pop [window_active]
call redraw
 
jmp mainloop
305,11 → 303,6
cmp ax, MAX_WINDOWS
ja exit
 
; Save users scrollbar position
push [scroll1.position]
mov edx, [window_active]
pop [edx + window.users_scroll]
 
; OK, time to switch to another window.
mov dx, sizeof.window
mul dx
323,9 → 316,6
push [edx + window.text_line_print]
pop [scroll2.position]
 
push [edx + window.users_scroll]
pop [scroll1.position]
 
call draw_window
jmp mainloop
 
446,7 → 436,7
has_left_channel db ' has left ', 0
joins_channel db ' has joined ', 0
is_now_known_as db ' is now known as ', 0
has_quit_irc db ' has quit IRC', 10, 0
has_quit_irc db ' has quit IRC.', 10, 0
 
sets_mode db ' sets mode ', 0
str_kicked db ' is kicked from ', 0
455,7 → 445,7
str_realchange db 'Real name is now ', 0
str_talking db 'Now talking in ', 0
str_topic db 'Topic is "', 0
str_topic_end db '"', 10, 0
str_topic_end db '".', 10, 0
str_setby db 'Set by ', 0
 
str_connecting db 3, '3* Connecting to ', 0
466,25 → 456,17
str_reconnect db 3, '5* Connection reset by user', 10, 0
str_notconnected db 3, '5* Not connected to server', 10, 0
 
str_dotnewline db '.',10, 0
str_newline db 10, 0
str_1 db 3, '13 -', 0
str_2 db '- ', 0
 
str_list db 'list', 0
 
str_help db 'The following commands are available:', 10
str_help db 10, 'following commands are available:', 10
db 10
db '/nick <nick> : change nickname', 10
db '/real <real name> : change real name', 10
db '/server <address> : connect to server', 10
db '/code <code> : change codepage (cp866, cp1251, or utf8)', 10
db '/join <channel> : join a channel', 10
db '/part <channel> : part from a channel', 10
db '/quit : quit server', 10
db '/msg <user> : send a private message', 10
db '/ctcp <user> : send a message using client to client protocol', 10
db 10
db 'Other commands are send straight to server.', 10
db 10, 0
db '/nick <nick> : change nickname to <nick>', 10
db '/real <real name> : change real name to <real name>', 10
db '/server <address> : connect to server <address>', 10
db '/code <code> : change codepage to cp866, cp1251, or utf8', 10, 0
 
str_welcome db 3, '3 ___', 3, '7__________', 3, '6_________ ', 3, '4 __ __ __', 10
db 3, '3| \', 3, '7______ \', 3, '6_ ___ \ ', 3, '4 ____ | | |__| ____ _____/ |_', 10
601,4 → 583,11
 
windows rb MAX_WINDOWS*sizeof.window
 
IM_END:
IM_END:
 
 
 
 
 
 
 
/programs/network/ircc/serverparser.inc
171,13 → 171,11
cmd_justprint:
 
add esi, 4
call skip_parameter ; our nickname
call skip_parameter
call print_text2
mov esi, str_newline
call print_text2
 
call print_asciiz
 
mov al, 10
call print_char
 
ret
 
 
193,12 → 191,12
mov byte [esi-1], 0
push esi
mov esi, str_1
call print_asciiz
mov esi, servercommand+1
mov bl, '!'
call print_string
call print_text2
mov eax, servercommand+1
mov dl, '!'
call print_text
mov esi, str_2
call print_asciiz
call print_text2
pop esi
 
.gogogo:
205,10 → 203,10
add esi, 6
call skip_parameter
call skip_parameter
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
ret
 
253,8 → 251,6
push esi
mov esi, servercommand+1
call window_open
test ebx, ebx
jz .fail2
pop esi
call skip_parameter ; our own nickname
 
265,8 → 261,6
 
.channel:
call window_open
test ebx, ebx
jz .fail
 
.print:
; nope, just plain old privmsg, print it using '<nick> message' format
275,29 → 269,25
end if
 
push esi
mov al, '<'
call print_char
mov bl, '<'
call print_character
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov al, '>'
call print_char
mov bl, '>'
call print_character
 
mov al, ' '
call print_char
mov bl, ' '
call print_character
 
pop esi
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov bl, 10
call print_character
 
ret
 
.fail2:
pop esi
.fail:
ret
 
365,13 → 355,13
end if
 
mov esi, ctcp_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
call print_asciiz
call print_text2
 
mov esi, ctcp_time
call print_asciiz
call print_text2
 
ret
 
384,13 → 374,13
end if
 
mov esi, ctcp_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
call print_asciiz
call print_text2
 
mov esi, ctcp_version
call print_asciiz
call print_text2
 
ret
 
402,13 → 392,13
end if
 
mov esi, ctcp_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
call print_asciiz
call print_text2
 
mov esi, ctcp_ping
call print_asciiz
call print_text2
 
ret
 
421,20 → 411,20
end if
 
mov esi, action_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1 ; print nickname
mov bl, '!'
call print_string
mov eax, servercommand+1 ; print nickname
mov dl, '!'
call print_text
 
mov al, ' '
call print_char
mov bl, ' '
call print_character
 
pop esi
call print_asciiz
call print_text2 ; print message
 
mov al, 10
call print_char
mov bl, 10
call print_character
 
ret
 
450,13 → 440,10
ret
 
.send:
 
call window_open
test ebx, ebx
jz .fail
mov [ebx + window.type], WINDOWTYPE_DCC
 
.fail:
 
ret
 
 
533,8 → 520,6
.not_me:
push esi
call window_open
test ebx, ebx
jz .fail2
 
if TIMESTAMP
call print_timestamp
541,20 → 526,21
end if
 
mov esi, part_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
mov cl, ' '
call print_text
 
mov esi, has_left_channel
call print_asciiz
call print_text2
 
pop esi
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
mov ebx, [window_print]
mov esi, servercommand+1
562,13 → 548,8
 
ret
 
.fail2:
pop esi
 
ret
 
 
 
cmd_join:
 
cmp byte[esi+4], ' '
575,7 → 556,7
jne .fail
add esi, 5 ; skip 'JOIN '
 
; did we join a channel?
; compare nick: did we join a channel?
mov edi, servercommand+1
call compare_to_nick
jne .not_me
582,7 → 563,7
 
push esi
call window_open
test ebx, ebx
test eax, eax
jz .fail
mov [ebx + window.type], WINDOWTYPE_CHANNEL
mov [window_active], ebx
592,17 → 573,17
end if
 
mov esi, join_header
call print_asciiz
call print_text2
 
mov esi, str_talking
call print_asciiz
call print_text2
 
pop esi
mov bl, ' '
call print_string
pop eax
mov dl, ' '
call print_text
 
mov al, 10
call print_char
mov esi, str_dotnewline
call print_text2
 
call draw_window
 
611,8 → 592,6
.not_me:
push esi
call window_open
test ebx, ebx
jz .fail
 
if TIMESTAMP
call print_timestamp
619,20 → 598,20
end if
 
mov esi, join_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov esi, joins_channel
call print_asciiz
call print_text2
 
pop esi
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
mov ebx, [window_print]
mov esi, servercommand+1
641,7 → 620,7
ret
 
.fail:
pop esi
add esp, 4
ret
 
 
711,20 → 690,20
end if
 
mov esi, nick_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov esi, is_now_known_as
call print_asciiz
call print_text2
 
mov esi, [esp + 8]
call print_asciiz
mov esi, [esp + 8] ; FIXME: dont print the 0x0a0d!!!
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
; Now do this for all open windows
.next_window:
755,8 → 734,6
; find the channel user has been kicked from
push esi
call window_open
test ebx, ebx
jz .fail
push esi
 
if TIMESTAMP
764,37 → 741,34
end if
 
mov esi, kick_header
call print_asciiz
call print_text2
 
pop esi
mov bl, ' '
call print_string
pop eax
mov dl, ' '
call print_text
 
mov esi, str_kicked
call print_asciiz
call print_text2
 
pop esi
mov bl, ' '
call print_string
pop eax
mov dl, ' '
call print_text
 
mov esi, str_by
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov al, 10
call print_char
mov esi, str_dotnewline
call print_text2
 
mov ebx, [window_print]
mov esi, servercommand+1
call user_remove
 
ret
 
.fail:
pop esi
 
ret
 
826,14 → 800,14
end if
 
mov esi, quit_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov esi, has_quit_irc
call print_asciiz
call print_text2
 
; TODO: check if quit message was given, and print it to the window
pop ebx
867,20 → 841,20
end if
 
mov esi, mode_header
call print_asciiz
call print_text2
 
mov esi, servercommand+1
mov bl, '!'
call print_string
mov eax, servercommand+1
mov dl, '!'
call print_text
 
mov esi, sets_mode
call print_asciiz
call print_text2
 
pop esi
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
; TODO: keep track of user modes in username list
 
894,21 → 868,21
end if
 
mov esi, mode_header
call print_asciiz
call print_text2
 
mov esi, [esp]
mov bl, ' '
call print_string
mov eax, [esp]
mov dl, ' '
call print_text
 
mov esi, sets_mode
call print_asciiz
call print_text2
 
pop esi
call skip_parameter
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
ret
 
920,8 → 894,6
inc esi ; channel type '*', '=' or '@'
inc esi ; ' '
call window_open
test ebx, ebx
jz .fail
 
; now find window ptr and check if this is the first 353 message
mov ebx, [window_print]
947,7 → 919,6
 
.done:
call draw_channel_list
.fail:
 
ret
 
960,10 → 931,9
add esi, 4 ; skip '366 '
call skip_parameter
call window_open
test ebx, ebx
jz .fail
 
mov ebx, [window_print]
and [ebx + window.flags], not FLAG_RECEIVING_NAMES
.fail:
 
ret
 
975,8 → 945,6
add esi, 4 ; skip '332 '
call skip_parameter
call window_open
test ebx, ebx
jz .fail
 
if TIMESTAMP
call print_timestamp
984,19 → 952,17
 
push esi
mov esi, topic_header
call print_asciiz
call print_text2
 
mov esi, str_topic
call print_asciiz
call print_text2
 
pop esi
call print_asciiz
call print_text2
 
mov esi, str_topic_end
call print_asciiz
call print_text2
 
.fail:
 
ret
 
 
1005,8 → 971,6
add esi, 4 ; skip '333 '
call skip_parameter
call window_open
test ebx, ebx
jz .fail
 
if TIMESTAMP
call print_timestamp
1014,49 → 978,35
 
push esi
mov esi, topic_header
call print_asciiz
call print_text2
 
mov esi, str_setby
call print_asciiz
call print_text2
 
pop esi
mov bl, '!'
call print_string
pop eax
mov dl, '!'
call print_text
 
mov al, 10
call print_char
mov esi, str_newline
call print_text2
 
.fail:
 
ret
 
 
 
cmd_322: ; LIST
 
add esi, 4
 
mov [window_print], windows ; FIXME
call skip_parameter
mov eax, esi
mov dl, 13
call print_text
mov esi, str_newline
call print_text2
 
push esi
mov esi, str_list
call window_open
test ebx, ebx
jz .fail
 
mov [window_active], ebx
call draw_windowtabs
pop esi
call print_asciiz
mov al, 10
call print_char
 
ret
 
.fail:
pop esi
 
ret
 
cmd_323: ; LIST END
 
ret
/programs/network/ircc/textbox.inc
52,13 → 52,9
 
ret
 
;----------------------------------
; scan untill next line is reached
;
; When you set the direction flag before calling, you can also scan for previous line!
; IN: esi
; OUT: esi
;----------------------------------
; in: esi
; out:esi
text_nextline:
 
mov ecx, [textbox_width]
77,65 → 73,52
ret
 
 
;----------------------------------
; print string
;
; IN: esi = ptr to string
; bl = char which marks end of string
; OUT: esi = ptr to end of str
;----------------------------------
print_string:
print_text: ; eax = start ptr
; dl = end char
pusha
ptr2:
mov bl, [eax]
 
push eax
.loop:
lodsb
cmp al, bl
cmp bl, dl
je .done
cmp al, 13
je .loop
test al, al
test bl, bl
jz .done
call print_char
jmp .loop
call print_character
 
inc eax
jmp ptr2
 
.done:
pop eax
popa
 
ret
 
 
;----------------------------------
; print ASCIIZ string
;
; IN: esi = ptr to ASCIIZ string
; OUT: esi = ptr to end of str
;----------------------------------
print_asciiz:
 
push eax
print_text2: ; esi = ptr to ASCIIZ string
 
pusha
.loop:
lodsb
test al, al
jz .done
call print_char
mov bl, al
call print_character
jmp .loop
 
.done:
pop eax
popa
 
ret
 
 
;----------------------------------
; print character
;
; IN: al = char to print
; OUT: /
;----------------------------------
print_char:
print_character:
 
push esi edi
mov esi, [window_print]
mov edi, [esi + window.text_write]
stosb
mov byte[edi], bl
inc edi
cmp edi, [esi + window.text_end]
jae .uh_ow
mov [esi + window.text_write], edi
347,34 → 330,33
 
pusha
mcall 3 ; get system time
mov ebx, eax
 
mov al, '['
call print_char
mov bl, '['
call print_character
mov ecx, TIMESTAMP
.loop:
mov al, bl
shr al, 4
add al, '0'
call print_char
mov bl, al
shr bl, 4
add bl, '0'
call print_character
 
mov al, bl
and al, 0x0f
add al, '0'
call print_char
mov bl, al
and bl, 0x0f
add bl, '0'
call print_character
 
dec ecx
jz .done
 
mov al, ':'
call print_char
shr ebx, 8
mov bl, ':'
call print_character
shr eax, 8
jmp .loop
.done:
mov al, ']'
call print_char
mov al, ' '
call print_char
mov bl, ']'
call print_character
mov bl, ' '
call print_character
 
popa
ret
/programs/network/ircc/window.inc
82,6 → 82,25
ret
 
 
 
window_is_updated:
 
mov edi, [window_print]
cmp edi, [window_active]
je .skip
test [edi + window.flags], FLAG_UPDATED
jnz .skip
or [edi + window.flags], FLAG_UPDATED
 
; TODO: make some noise
 
call draw_windowtabs ; highlight updated tabs
.skip:
 
ret
 
 
 
window_close: ; closes the 'print' window
 
; Remove the window (overwrite current structure with trailing ones)
161,7 → 180,6
;
; IN: esi = ptr to ASCIIZ windowname
; OUT: esi = ptr to next parameter
; ebx = window ptr/0 on error
 
window_open:
 
208,6 → 226,5
mov [window_print], ebx
ret
 
.error:
xor ebx, ebx
.error: ; TODO: return error?
ret
/programs/network/ircc/userparser.inc
35,25 → 35,25
call print_timestamp
end if
 
mov al, '<'
call print_char
mov bl, '<'
call print_character
 
mov esi, user_nick
call print_asciiz
call print_text2
 
mov al, '>'
call print_char
mov al, ' '
call print_char
mov bl, '>'
call print_character
mov bl, ' '
call print_character
 
mov eax, [edit1.size]
mov byte[usercommand + eax],0
 
mov esi, usercommand
call print_asciiz
call print_text2
 
mov al, 10
call print_char
mov bl, 10
call print_character
 
; and now send it to the server
mov dword[packetbuf], 'PRIV'
92,7 → 92,7
 
.notconnected:
mov esi, str_notconnected
call print_asciiz
call print_text2
 
ret
 
145,7 → 145,7
 
.notconnected:
mov esi, str_notconnected
call print_asciiz
call print_text2
 
ret
 
200,20 → 200,20
end if
 
mov esi, msg_header
call print_asciiz
call print_text2
 
mov esi, packetbuf+8
mov bl, ' '
call print_string
mov eax, packetbuf+8
mov dl, ' '
call print_text
 
mov al, '*'
call print_char
mov bl, '*'
call print_character
 
mov al, ' '
call print_char
mov bl, ' '
call print_character
 
pop esi
call print_asciiz
call print_text2
 
.fail:
ret
313,14 → 313,12
stosb
 
mov esi, str_nickchange
call print_asciiz
 
call print_text2
mov esi, user_nick
call print_asciiz
call print_text2
mov esi, str_dotnewline
call print_text2
 
mov al, 10
call print_char
 
ret
 
 
345,14 → 343,12
stosb
 
mov esi, str_realchange
call print_asciiz
 
call print_text2
mov esi, user_real_name
call print_asciiz
call print_text2
mov esi, str_dotnewline
call print_text2
 
mov al, 10
call print_char
 
ret
 
 
398,8 → 394,6
 
mov esi, usercommand+7
call window_open
; test ebx, ebx
; jz .fail
 
ret
 
408,7 → 402,7
cmd_usr_help:
 
mov esi, str_help
call print_asciiz
call print_text2
 
ret
 
/programs/network/ircc/socket.inc
21,14 → 21,12
call print_timestamp
end if
mov esi, str_connecting
call print_asciiz
 
call print_text2
mov esi, irc_server_name
call print_asciiz
call print_text2
mov esi, str_dotnewline
call print_text2
 
mov al, 10
call print_char
 
; update status
inc [status] ; was STATUS_DISCONNECTED, now STATUS_RESOLVING
 
75,7 → 73,7
call print_timestamp
end if
mov esi, str_sockerr
call print_asciiz
call print_text2
 
ret
 
86,7 → 84,7
call print_timestamp
end if
mov esi, str_dnserr
call print_asciiz
call print_text2
 
ret
 
97,7 → 95,7
call print_timestamp
end if
mov esi, str_refused
call print_asciiz
call print_text2
 
ret
 
106,7 → 104,7
call print_timestamp
end if
mov esi, str_reconnect
call print_asciiz
call print_text2
 
mov esi, quit_msg
call cmd_usr_quit.with_message
251,7 → 249,7
 
.disconnected:
mov esi, str_disconnected
call print_asciiz
call print_text2
 
mov [status], STATUS_DISCONNECTED
mcall close, [socketnum]