forked from KolibriOS/kolibrios
More scrolling bugfixes, added some commands.
git-svn-id: svn://kolibrios.org@4622 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
83400f932d
commit
a6a2dda144
@ -1,6 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2013. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2014. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Written by hidnplayr@kolibrios.org ;;
|
;; Written by hidnplayr@kolibrios.org ;;
|
||||||
@ -95,11 +95,22 @@ draw_window: ; Completely redraw the window, recalculate all coordinates and
|
|||||||
mov [textbox_width], eax
|
mov [textbox_width], eax
|
||||||
|
|
||||||
; recalculate text line breaks (because height/width might have changed..)
|
; recalculate text line breaks (because height/width might have changed..)
|
||||||
mov edi, [window_active]
|
; meanwhile, recalculate line number of current line
|
||||||
|
mov esi, [edi + window.text_print]
|
||||||
|
mov al, byte[esi]
|
||||||
|
push eax
|
||||||
|
mov byte[esi], 0
|
||||||
|
push esi
|
||||||
|
|
||||||
mov esi, [edi + window.text_start]
|
mov esi, [edi + window.text_start]
|
||||||
call text_insert_newlines
|
call text_insert_newlines
|
||||||
mov [edi + window.text_lines], edx
|
mov [edi + window.text_lines], edx
|
||||||
mov [edi + window.text_scanned], esi
|
mov [edi + window.text_scanned], esi
|
||||||
|
mov [edi + window.text_line_print], edx
|
||||||
|
|
||||||
|
pop esi
|
||||||
|
pop eax
|
||||||
|
mov byte[esi], al
|
||||||
|
|
||||||
; and redraw the textbox (and scrollbar if needed)
|
; and redraw the textbox (and scrollbar if needed)
|
||||||
mov [scroll2.all_redraw], 1
|
mov [scroll2.all_redraw], 1
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
version equ '0.18'
|
version equ '0.19'
|
||||||
|
|
||||||
; connection status
|
; connection status
|
||||||
STATUS_DISCONNECTED = 0
|
STATUS_DISCONNECTED = 0
|
||||||
@ -436,7 +436,7 @@ ctcp_time db '] TIME', 10, 0
|
|||||||
has_left_channel db ' has left ', 0
|
has_left_channel db ' has left ', 0
|
||||||
joins_channel db ' has joined ', 0
|
joins_channel db ' has joined ', 0
|
||||||
is_now_known_as db ' is now known as ', 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
|
sets_mode db ' sets mode ', 0
|
||||||
str_kicked db ' is kicked from ', 0
|
str_kicked db ' is kicked from ', 0
|
||||||
|
@ -47,20 +47,37 @@ server_parser:
|
|||||||
|
|
||||||
server_commands:
|
server_commands:
|
||||||
|
|
||||||
|
dd '001 ', cmd_justprint
|
||||||
|
dd '002 ', cmd_justprint
|
||||||
|
dd '003 ', cmd_justprint
|
||||||
|
dd '004 ', cmd_justprint
|
||||||
|
dd '005 ', cmd_justprint
|
||||||
|
|
||||||
|
dd '250 ', cmd_justprint
|
||||||
|
dd '251 ', cmd_justprint
|
||||||
|
dd '252 ', cmd_justprint
|
||||||
|
dd '253 ', cmd_justprint
|
||||||
|
dd '254 ', cmd_justprint
|
||||||
|
dd '255 ', cmd_justprint
|
||||||
|
|
||||||
|
dd '265 ', cmd_justprint
|
||||||
|
dd '266 ', cmd_justprint
|
||||||
|
|
||||||
dd '322 ', cmd_322 ; RPL_LIST
|
dd '322 ', cmd_322 ; RPL_LIST
|
||||||
dd '323 ', cmd_323 ; RPL_LISTEND
|
dd '323 ', cmd_323 ; RPL_LISTEND
|
||||||
dd '324 ', cmd_324 ;;;;
|
dd '324 ', cmd_justprint
|
||||||
dd '328 ', cmd_328 ; RPL_CHANNEL_URL
|
dd '328 ', cmd_justprint ; RPL_CHANNEL_URL
|
||||||
dd '329 ', cmd_329
|
dd '329 ', cmd_justprint
|
||||||
dd '332 ', cmd_topic
|
dd '332 ', cmd_topic
|
||||||
dd '333 ', cmd_333 ; nickname and time of topic
|
dd '333 ', cmd_333 ; nickname and time of topic
|
||||||
dd '353 ', cmd_353 ; name reply
|
dd '353 ', cmd_353 ; name reply
|
||||||
dd '366 ', cmd_366 ; end of names list
|
dd '366 ', cmd_366 ; end of names list
|
||||||
dd '372 ', cmd_372 ; motd
|
dd '372 ', cmd_justprint ; motd
|
||||||
dd '375 ', cmd_375 ; start of motd
|
dd '375 ', cmd_justprint ; start of motd
|
||||||
dd '376 ', cmd_376 ; end of motd
|
dd '376 ', cmd_justprint ; end of motd
|
||||||
dd '421 ', cmd_421 ; unknown command
|
dd '421 ', cmd_justprint ; unknown command
|
||||||
dd '433 ', cmd_433 ; nickname already in use
|
dd '433 ', cmd_justprint ; nickname already in use
|
||||||
|
|
||||||
dd 'join', cmd_join
|
dd 'join', cmd_join
|
||||||
dd 'kick', cmd_kick
|
dd 'kick', cmd_kick
|
||||||
dd 'mode', cmd_mode
|
dd 'mode', cmd_mode
|
||||||
@ -151,27 +168,27 @@ skip_parameter:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
cmd_324:
|
cmd_justprint:
|
||||||
cmd_329:
|
|
||||||
cmd_328:
|
|
||||||
cmd_421:
|
|
||||||
cmd_372:
|
|
||||||
cmd_375:
|
|
||||||
cmd_376:
|
|
||||||
cmd_433:
|
|
||||||
add esi, 4
|
add esi, 4
|
||||||
jmp cmd_notice.loop
|
call skip_parameter
|
||||||
|
call print_text2
|
||||||
|
mov esi, str_newline
|
||||||
|
call print_text2
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
cmd_notice:
|
cmd_notice:
|
||||||
|
|
||||||
|
if TIMESTAMP
|
||||||
|
call print_timestamp
|
||||||
|
end if
|
||||||
|
|
||||||
cmp byte[servercommand], ':'
|
cmp byte[servercommand], ':'
|
||||||
jne .gogogo
|
jne .gogogo
|
||||||
|
|
||||||
mov byte [esi-1], 0
|
mov byte [esi-1], 0
|
||||||
if TIMESTAMP
|
|
||||||
call print_timestamp
|
|
||||||
end if
|
|
||||||
|
|
||||||
push esi
|
push esi
|
||||||
mov esi, str_1
|
mov esi, str_1
|
||||||
call print_text2
|
call print_text2
|
||||||
@ -184,25 +201,10 @@ cmd_notice:
|
|||||||
|
|
||||||
.gogogo:
|
.gogogo:
|
||||||
add esi, 6
|
add esi, 6
|
||||||
|
call skip_parameter
|
||||||
.loop:
|
call skip_parameter
|
||||||
inc esi
|
|
||||||
cmp byte [esi], 0
|
|
||||||
je .fail
|
|
||||||
cmp byte [esi], ' '
|
|
||||||
jne .loop
|
|
||||||
|
|
||||||
.loop2:
|
|
||||||
inc esi
|
|
||||||
cmp byte [esi], 0
|
|
||||||
je .fail
|
|
||||||
cmp byte [esi], ' '
|
|
||||||
je .loop2
|
|
||||||
cmp byte [esi], ':'
|
|
||||||
je .loop2
|
|
||||||
|
|
||||||
.fail:
|
|
||||||
call print_text2
|
call print_text2
|
||||||
|
|
||||||
mov esi, str_newline
|
mov esi, str_newline
|
||||||
call print_text2
|
call print_text2
|
||||||
|
|
||||||
@ -827,11 +829,12 @@ cmd_mode:
|
|||||||
cmp byte [esi+4], ' '
|
cmp byte [esi+4], ' '
|
||||||
jne .fail
|
jne .fail
|
||||||
add esi, 5 ; skip 'MODE '
|
add esi, 5 ; skip 'MODE '
|
||||||
|
push esi
|
||||||
call window_find
|
call window_find
|
||||||
test ebx, ebx
|
test ebx, ebx
|
||||||
jz .fail
|
jz .user
|
||||||
|
mov [esp], esi
|
||||||
mov [window_print], ebx
|
mov [window_print], ebx
|
||||||
push esi
|
|
||||||
|
|
||||||
if TIMESTAMP
|
if TIMESTAMP
|
||||||
call print_timestamp
|
call print_timestamp
|
||||||
@ -853,9 +856,33 @@ cmd_mode:
|
|||||||
mov esi, str_newline
|
mov esi, str_newline
|
||||||
call print_text2
|
call print_text2
|
||||||
|
|
||||||
;;; TODO: change username if needed
|
; TODO: keep track of user modes in username list
|
||||||
|
|
||||||
.fail:
|
.fail:
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
.user:
|
||||||
|
if TIMESTAMP
|
||||||
|
call print_timestamp
|
||||||
|
end if
|
||||||
|
|
||||||
|
mov esi, mode_header
|
||||||
|
call print_text2
|
||||||
|
|
||||||
|
mov eax, [esp]
|
||||||
|
mov dl, ' '
|
||||||
|
call print_text
|
||||||
|
|
||||||
|
mov esi, sets_mode
|
||||||
|
call print_text2
|
||||||
|
|
||||||
|
pop esi
|
||||||
|
call skip_parameter
|
||||||
|
call print_text2
|
||||||
|
|
||||||
|
mov esi, str_newline
|
||||||
|
call print_text2
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -942,7 +969,7 @@ cmd_topic:
|
|||||||
cmd_333:
|
cmd_333:
|
||||||
|
|
||||||
add esi, 4 ; skip '333 '
|
add esi, 4 ; skip '333 '
|
||||||
call skip_parameter ;;;;
|
call skip_parameter
|
||||||
call window_open
|
call window_open
|
||||||
|
|
||||||
if TIMESTAMP
|
if TIMESTAMP
|
||||||
@ -956,9 +983,6 @@ cmd_333:
|
|||||||
mov esi, str_setby
|
mov esi, str_setby
|
||||||
call print_text2
|
call print_text2
|
||||||
|
|
||||||
; pop esi
|
|
||||||
; call print_text2
|
|
||||||
|
|
||||||
pop eax
|
pop eax
|
||||||
mov dl, '!'
|
mov dl, '!'
|
||||||
call print_text
|
call print_text
|
||||||
|
@ -201,6 +201,20 @@ draw_channel_text:
|
|||||||
mov [edi + window.text_print], esi
|
mov [edi + window.text_print], esi
|
||||||
.noscroll:
|
.noscroll:
|
||||||
|
|
||||||
|
; Update and draw scrollbar when nescessary
|
||||||
|
mov edx, [edi + window.text_lines]
|
||||||
|
cmp edx, [textbox_height]
|
||||||
|
jbe .scroll_done
|
||||||
|
|
||||||
|
mov [scroll2.max_area], edx
|
||||||
|
mov eax, [edi + window.text_line_print]
|
||||||
|
mov [scroll2.position], eax
|
||||||
|
|
||||||
|
push dword scroll2 ; redraw scrollbar
|
||||||
|
call [scrollbar_draw]
|
||||||
|
mov [scroll2.all_redraw], 0 ; next time, dont redraw it completely
|
||||||
|
.scroll_done:
|
||||||
|
|
||||||
; Calculate start offset coordinates (align text to bottom)
|
; Calculate start offset coordinates (align text to bottom)
|
||||||
mov ebx, [textbox_height]
|
mov ebx, [textbox_height]
|
||||||
sub ebx, [edi + window.text_lines]
|
sub ebx, [edi + window.text_lines]
|
||||||
@ -262,7 +276,6 @@ draw_channel_text:
|
|||||||
or ecx, 0x40000000
|
or ecx, 0x40000000
|
||||||
.no_colors:
|
.no_colors:
|
||||||
|
|
||||||
.draw:
|
|
||||||
mov esi, 1
|
mov esi, 1
|
||||||
mcall 4 ; draw text
|
mcall 4 ; draw text
|
||||||
add ebx, FONT_WIDTH shl 16
|
add ebx, FONT_WIDTH shl 16
|
||||||
@ -283,21 +296,6 @@ draw_channel_text:
|
|||||||
jnz .drawloop
|
jnz .drawloop
|
||||||
.end_of_text:
|
.end_of_text:
|
||||||
|
|
||||||
; Update and draw scrollbar when nescessary
|
|
||||||
mov edi, [window_active]
|
|
||||||
mov edx, [edi + window.text_lines]
|
|
||||||
cmp edx, [textbox_height]
|
|
||||||
jbe .scroll_done
|
|
||||||
|
|
||||||
mov [scroll2.max_area], edx
|
|
||||||
mov eax, [edi + window.text_line_print]
|
|
||||||
mov [scroll2.position], eax
|
|
||||||
|
|
||||||
push dword scroll2 ; redraw scrollbar
|
|
||||||
call [scrollbar_draw]
|
|
||||||
mov [scroll2.all_redraw], 0 ; next time, dont redraw it completely
|
|
||||||
.scroll_done:
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user