forked from KolibriOS/kolibrios
Tinypad 4.0.4 in progress (tabs + memory manager)
git-svn-id: svn://kolibrios.org@259 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
82ef5da45f
commit
ce67c673a0
@ -210,7 +210,7 @@ macro section name { align 16
|
|||||||
label name }
|
label name }
|
||||||
macro func name {
|
macro func name {
|
||||||
if ~used name
|
if ~used name
|
||||||
display 'FUNC NOT USED: ',`name,13,10
|
;display 'FUNC NOT USED: ',`name,13,10
|
||||||
else
|
else
|
||||||
align 4
|
align 4
|
||||||
name:
|
name:
|
||||||
@ -372,6 +372,25 @@ struct system_colors
|
|||||||
work_graph dd ?
|
work_graph dd ?
|
||||||
ends
|
ends
|
||||||
|
|
||||||
|
struct FILEDATE
|
||||||
|
Second db ?
|
||||||
|
Minute db ?
|
||||||
|
Hour db ?
|
||||||
|
db ?
|
||||||
|
Day db ?
|
||||||
|
Month db ?
|
||||||
|
Year dw ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct FILEINFO
|
||||||
|
Attributes dd ?
|
||||||
|
IsUnicode db ?
|
||||||
|
db 3 dup(?)
|
||||||
|
DateCreate FILEDATE
|
||||||
|
DateAccess FILEDATE
|
||||||
|
DateModify FILEDATE
|
||||||
|
Size dq ?
|
||||||
|
ends
|
||||||
|
|
||||||
; constants
|
; constants
|
||||||
|
|
||||||
|
@ -1,31 +1,42 @@
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; project name: TINYPAD
|
; project name: TINYPAD
|
||||||
; compiler: flat assembler 1.67.1
|
; compiler: flat assembler 1.67.15
|
||||||
; memory to compile: 2.0/7.0 MBytes (without/with size optimizations)
|
; memory to compile: 2.0/7.0 MBytes (without/with size optimizations)
|
||||||
; version: 4.0.4 pre
|
; version: 4.0.4 pre
|
||||||
; last update: 2006-12-30 (Dec 30, 2006)
|
; last update: 2007-01-03 (Jan 3, 2007)
|
||||||
; minimal kernel: revision #138 (svn://kolibrios.org/kernel)
|
; minimal kernel: revision #138 (svn://kolibrios.org/kernel)
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
|
; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
|
||||||
; maintained by: Mike Semenyako >> mike.dld@gmail.com
|
; maintained by: Mike Semenyako >> mike.dld@gmail.com
|
||||||
; Ivan Poddubny >> ivan-yar@bk.ru
|
; Ivan Poddubny >> ivan-yar@bk.ru
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; TODO:
|
; TODO (FOR 4.1.0):
|
||||||
; - optimize drawing (reduce flickering)
|
; - optimize drawing (reduce flickering)
|
||||||
; - optimize memory usage (allocate only needed amount, not static 3 Mbytes)
|
; - add vertical selection, undo, goto position, overwrite mode
|
||||||
; - add block selection ability, undo action, goto position
|
|
||||||
; - working with multiple files (add tabs)
|
|
||||||
; - improve window drawing with small dimensions
|
; - improve window drawing with small dimensions
|
||||||
; - other bugfixes and speed/size optimizations
|
; - other bug-fixes and speed/size optimizations
|
||||||
|
;
|
||||||
|
; TODO (FOR 4.0.4, PLANNED FOR 2007-01-21):
|
||||||
|
; - finish tabbed interface [critical]
|
||||||
|
; - add memory reallocation to keys handler [critical]
|
||||||
|
; - rework save_file (memory manager) [critical]
|
||||||
|
; - reduce flickering (changes checker) [average]
|
||||||
|
; - incorrect saved/modified lines flags on copy/paste [normal]
|
||||||
|
; - case-insensitive file extensions comparison (.asm/.inc) [normal]
|
||||||
|
; - prompt to save file before closing/opening [low]
|
||||||
;
|
;
|
||||||
; HISTORY:
|
; HISTORY:
|
||||||
; 4.0.4 pre (mike.dld)
|
; 4.0.4 pre (mike.dld)
|
||||||
; bug-fixes:
|
; bug-fixes:
|
||||||
; - clear statusbar text if dialog operation cancelled
|
; - statusbar contained hint after dialog operation cancelled
|
||||||
|
; - small drawing fix for gutter and line saved/modified markers
|
||||||
; changes:
|
; changes:
|
||||||
; - modified/saved colors now match those in MSVS
|
; - modified/saved colors now match those in MSVS
|
||||||
|
; - function 70 for *all* file operations (including diamond's fixes)
|
||||||
|
; - use memory manager instead of statically allocated region
|
||||||
; new features:
|
; new features:
|
||||||
; - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor)
|
; - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor)
|
||||||
|
; - tabbed interface, ability to open several files in one app instance
|
||||||
; 4.0.3 (mike.dld)
|
; 4.0.3 (mike.dld)
|
||||||
; bug-fixes:
|
; bug-fixes:
|
||||||
; - 1-char selection if pressing <BS> out of real line length
|
; - 1-char selection if pressing <BS> out of real line length
|
||||||
@ -132,22 +143,14 @@
|
|||||||
; auto-indent
|
; auto-indent
|
||||||
; Ctrl+L - insert comment string
|
; Ctrl+L - insert comment string
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Memory 0x300000:
|
|
||||||
; stack for popup 0x00dff0 -
|
|
||||||
; stack for help 0x00eff0 -
|
|
||||||
; stack 0x00fff0 -
|
|
||||||
; load position 0x010000 +
|
|
||||||
; edit area 0x080000 +
|
|
||||||
; copy/paste area 0x2f0000 +
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
include 'lang.inc'
|
include 'lang.inc'
|
||||||
include 'macros.inc' ; useful stuff
|
include 'macros.inc' ; useful stuff
|
||||||
;include 'proc32.inc'
|
;include 'proc32.inc'
|
||||||
include 'tinypad.inc'
|
include 'tinypad.inc'
|
||||||
;purge mov,add,sub ; SPEED
|
purge mov,add,sub ; SPEED
|
||||||
|
|
||||||
header '01',1,@CODE,TINYPAD_END,AREA_ENDMEM,MAIN_STACK,@PARAMS,self_path
|
header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,self_path
|
||||||
|
|
||||||
APP_VERSION equ '4.0.4 pre'
|
APP_VERSION equ '4.0.4 pre'
|
||||||
|
|
||||||
@ -155,15 +158,15 @@ APP_VERSION equ '4.0.4 pre'
|
|||||||
|
|
||||||
ASEPC = '-' ; separator character (char)
|
ASEPC = '-' ; separator character (char)
|
||||||
ATOPH = POP_IHEIGHT+2 ; menu bar height (pixels)
|
ATOPH = POP_IHEIGHT+2 ; menu bar height (pixels)
|
||||||
;OLEFT = 50+1 ; left offset (pixels) !!! don't change !!!
|
|
||||||
SCRLW = 16 ; scrollbar widht/height (pixels)
|
SCRLW = 16 ; scrollbar widht/height (pixels)
|
||||||
ATABW = 8 ; tab width (chars)
|
ATABW = 8 ; tab width (chars)
|
||||||
LINEH = 10 ; line height (pixels)
|
LINEH = 10 ; line height (pixels)
|
||||||
PATHL = 255 ; maximum path length (chars) !!! don't change !!!
|
PATHL = 256 ; maximum path length (chars) !!! don't change !!!
|
||||||
AMINS = 8 ; minimal scroll thumb size (pixels)
|
AMINS = 8 ; minimal scroll thumb size (pixels)
|
||||||
LCHGW = 2 ; changed/saved marker width
|
LCHGW = 3 ; changed/saved marker width
|
||||||
|
|
||||||
STATH = 14 ; status bar height
|
STATH = 16 ; status bar height
|
||||||
|
TBARH = 18 ; tab bar height
|
||||||
|
|
||||||
MEV_LDOWN = 1
|
MEV_LDOWN = 1
|
||||||
MEV_LUP = 2
|
MEV_LUP = 2
|
||||||
@ -184,8 +187,8 @@ label color_tbl dword
|
|||||||
RGB(255,255,255) ; RGB(224,224,224) ; RGB(255,255,255) ; background
|
RGB(255,255,255) ; RGB(224,224,224) ; RGB(255,255,255) ; background
|
||||||
RGB(255,255,255) ; RGB(255,255,255) ; RGB(255,255,255) ; selection text
|
RGB(255,255,255) ; RGB(255,255,255) ; RGB(255,255,255) ; selection text
|
||||||
RGB( 10, 36,106) ; RGB( 0, 0,128) ; RGB( 0, 64,128) ; selection background
|
RGB( 10, 36,106) ; RGB( 0, 0,128) ; RGB( 0, 64,128) ; selection background
|
||||||
RGB(255,255, 0) ; modified line marker
|
RGB(255,238, 98) ; modified line marker
|
||||||
RGB( 0,255, 0) ; saved line marker
|
RGB(108,226,108) ; saved line marker
|
||||||
|
|
||||||
ins_mode db 1
|
ins_mode db 1
|
||||||
|
|
||||||
@ -220,12 +223,26 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
mov al,0
|
mov al,0
|
||||||
rep stosb
|
rep stosb
|
||||||
|
|
||||||
|
mov [tab_bar.Style],2
|
||||||
|
|
||||||
|
mcall 68,11
|
||||||
|
or eax,eax
|
||||||
|
jz key.alt_x.close
|
||||||
|
|
||||||
|
mov eax,65536
|
||||||
|
call mem.Alloc
|
||||||
|
mov [temp_buf],eax
|
||||||
|
|
||||||
|
mov eax,65536
|
||||||
|
call mem.Alloc
|
||||||
|
mov [cur_tab.Editor.Data],eax
|
||||||
|
|
||||||
inc [do_not_draw]
|
inc [do_not_draw]
|
||||||
|
|
||||||
mov [left_ofs],40+1
|
mov [left_ofs],40+1
|
||||||
mov [f_info+4],0
|
; mov [f_info+4],0
|
||||||
mov [f_info+12],AREA_TEMP
|
; mov [f_info+12],AREA_TEMP
|
||||||
mov [f_info+16],AREA_EDIT-AREA_TEMP
|
; mov [f_info+16],AREA_EDIT-AREA_TEMP
|
||||||
|
|
||||||
mov esi,s_example
|
mov esi,s_example
|
||||||
mov edi,tb_opensave.text
|
mov edi,tb_opensave.text
|
||||||
@ -262,17 +279,35 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
;// diamond ]
|
;// diamond ]
|
||||||
|
|
||||||
add edx,20
|
add edx,20
|
||||||
mcall 60,1,AREA_TEMP-16 ; 0x10000-16
|
|
||||||
mov dword[AREA_TEMP-16+4],8 ; [0x10000-16+4],8
|
mov eax,edx
|
||||||
|
call mem.Alloc
|
||||||
|
mov ebp,eax
|
||||||
|
|
||||||
|
;! mcall 60,1,AREA_TEMP-16 ; 0x10000-16
|
||||||
|
;! mov dword[AREA_TEMP-16+4],8 ; [0x10000-16+4],8
|
||||||
|
mcall 60,1,ebp
|
||||||
|
mov dword[ebp+4],8
|
||||||
mcall 40,1000000b
|
mcall 40,1000000b
|
||||||
mcall 23,200
|
mcall 23,200
|
||||||
cmp eax,7
|
cmp eax,7
|
||||||
jne key.alt_x.close ; ýòî íà mcall -1 ìåòêà
|
jne key.alt_x.close
|
||||||
mov esi,AREA_TEMP-16 ; 0x10000-16
|
;! mov esi,AREA_TEMP-16 ; 0x10000-16
|
||||||
mov byte[esi],1
|
;! mov byte[esi],1
|
||||||
mov eax,[esi+12]
|
;! mov eax,[esi+12]
|
||||||
inc eax
|
mov byte[ebp],1
|
||||||
call load_file.file_found
|
;! mov eax,[ebp+12]
|
||||||
|
;! inc eax
|
||||||
|
;! call load_file.file_found
|
||||||
|
|
||||||
|
mov ecx,[ebp+12]
|
||||||
|
mov esi,ebp
|
||||||
|
call create_tab
|
||||||
|
call load_from_memory
|
||||||
|
|
||||||
|
mov eax,ebp
|
||||||
|
call mem.Free
|
||||||
|
|
||||||
jmp @f
|
jmp @f
|
||||||
.noipc:
|
.noipc:
|
||||||
|
|
||||||
@ -292,9 +327,9 @@ section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|||||||
mov [tb_opensave.length],al
|
mov [tb_opensave.length],al
|
||||||
|
|
||||||
no_params:
|
no_params:
|
||||||
call btn.load_file;do_load_file
|
;call btn.load_file;do_load_file
|
||||||
jnc @f
|
;jnc @f
|
||||||
call new_file
|
call create_tab
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
dec [do_not_draw]
|
dec [do_not_draw]
|
||||||
@ -307,7 +342,7 @@ red:
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
still:
|
still:
|
||||||
call writepos ; write current position & number of strings
|
call draw_statusbar ; write current position & number of strings
|
||||||
|
|
||||||
.skip_write:
|
.skip_write:
|
||||||
mcall 10;23,50; wait here until event
|
mcall 10;23,50; wait here until event
|
||||||
@ -329,7 +364,7 @@ func start_fasm ;/////////////////////////////////////////////////////////////
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; BL = run after compile
|
; BL = run after compile
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [asm_mode],0
|
cmp [cur_tab.Editor.AsmMode],0 ;! [asm_mode],0
|
||||||
jne @f
|
jne @f
|
||||||
ret
|
ret
|
||||||
@@: mov esi,f_info.path ; s_fname
|
@@: mov esi,f_info.path ; s_fname
|
||||||
@ -458,48 +493,37 @@ endf
|
|||||||
; @@: ret
|
; @@: ret
|
||||||
;endf
|
;endf
|
||||||
|
|
||||||
func set_opt
|
set_opt:
|
||||||
test [options],al
|
|
||||||
je @f
|
|
||||||
not al
|
|
||||||
and [options],al
|
|
||||||
ret
|
|
||||||
@@: or [options],al
|
|
||||||
ret
|
|
||||||
endf
|
|
||||||
|
|
||||||
func set_line_numbers
|
.line_numbers:
|
||||||
mov al,OPTS_LINENUMS
|
mov al,OPTS_LINENUMS
|
||||||
call set_opt
|
jmp .main
|
||||||
ret
|
.optimal_fill:
|
||||||
endf
|
|
||||||
|
|
||||||
func set_optimal_fill
|
|
||||||
mov al,OPTS_OPTIMSAVE
|
mov al,OPTS_OPTIMSAVE
|
||||||
call set_opt
|
jmp .main
|
||||||
ret
|
.auto_indents:
|
||||||
endf
|
|
||||||
|
|
||||||
func set_auto_indents
|
|
||||||
mov al,OPTS_AUTOINDENT
|
mov al,OPTS_AUTOINDENT
|
||||||
call set_opt
|
jmp .main
|
||||||
ret
|
.auto_braces:
|
||||||
endf
|
|
||||||
|
|
||||||
func set_auto_braces
|
|
||||||
mov al,OPTS_AUTOBRACES
|
mov al,OPTS_AUTOBRACES
|
||||||
call set_opt
|
jmp .main
|
||||||
ret
|
.secure_sel:
|
||||||
endf
|
|
||||||
|
|
||||||
func set_secure_sel
|
|
||||||
mov al,OPTS_SECURESEL
|
mov al,OPTS_SECURESEL
|
||||||
call set_opt
|
|
||||||
|
.main:
|
||||||
|
xor [options],al
|
||||||
|
; test [options],al
|
||||||
|
; je @f
|
||||||
|
; not al
|
||||||
|
; and [options],al
|
||||||
|
; ret
|
||||||
|
; @@: or [options],al
|
||||||
ret
|
ret
|
||||||
endf
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include 'tp-defines.inc'
|
||||||
|
|
||||||
include 'tp-draw.asm'
|
include 'tp-draw.asm'
|
||||||
include 'tp-key.asm'
|
include 'tp-key.asm'
|
||||||
include 'tp-button.asm'
|
include 'tp-button.asm'
|
||||||
@ -509,6 +533,8 @@ include 'tp-common.asm'
|
|||||||
include 'tp-dialog.asm'
|
include 'tp-dialog.asm'
|
||||||
include 'tp-popup.asm'
|
include 'tp-popup.asm'
|
||||||
include 'tp-tbox.asm'
|
include 'tp-tbox.asm'
|
||||||
|
include 'tp-tabctl.asm'
|
||||||
|
include 'tp-editor.asm'
|
||||||
include 'tp-recode.asm'
|
include 'tp-recode.asm'
|
||||||
|
|
||||||
;include 'lib-ini.asm'
|
;include 'lib-ini.asm'
|
||||||
@ -559,6 +585,7 @@ accel_table dd \
|
|||||||
0x00010150,key.shift_down ,\ ; Shift+Down
|
0x00010150,key.shift_down ,\ ; Shift+Down
|
||||||
0x00010151,key.shift_pgdn ,\ ; Shift+PageDown
|
0x00010151,key.shift_pgdn ,\ ; Shift+PageDown
|
||||||
0x00010153,key.del ,\ ; Shift+Delete
|
0x00010153,key.del ,\ ; Shift+Delete
|
||||||
|
0x0002000F,key.ctrl_tab ,\ ; Ctrl+Tab
|
||||||
0x00020015,key.ctrl_y ,\ ; Ctrl+Y
|
0x00020015,key.ctrl_y ,\ ; Ctrl+Y
|
||||||
0x00020018,key.ctrl_o ,\ ; Ctrl+O
|
0x00020018,key.ctrl_o ,\ ; Ctrl+O
|
||||||
0x0002001E,key.ctrl_a ,\ ; Ctrl+A
|
0x0002001E,key.ctrl_a ,\ ; Ctrl+A
|
||||||
@ -582,6 +609,7 @@ accel_table dd \
|
|||||||
\;0x00020150,key.ctrl_down ,\ ; Ctrl+Down
|
\;0x00020150,key.ctrl_down ,\ ; Ctrl+Down
|
||||||
0x00020151,key.ctrl_pgdn ,\ ; Ctrl+PageDown
|
0x00020151,key.ctrl_pgdn ,\ ; Ctrl+PageDown
|
||||||
0x00020153,key.del ,\ ; Ctrl+Del
|
0x00020153,key.del ,\ ; Ctrl+Del
|
||||||
|
0x0003000F,key.shift_ctrl_tab ,\ ; Shift+Ctrl+Tab
|
||||||
0x0003001F,key.shift_ctrl_s ,\ ; Shift+Ctrl+S
|
0x0003001F,key.shift_ctrl_s ,\ ; Shift+Ctrl+S
|
||||||
0x00030147,key.shift_ctrl_home ,\ ; Shift+Ctrl+Home
|
0x00030147,key.shift_ctrl_home ,\ ; Shift+Ctrl+Home
|
||||||
\;0x00030148,key.shift_ctrl_up ,\ ; Shift+Ctrl+Up
|
\;0x00030148,key.shift_ctrl_up ,\ ; Shift+Ctrl+Up
|
||||||
@ -613,15 +641,10 @@ accel_table_textbox dd \
|
|||||||
|
|
||||||
accel_table2 dd \
|
accel_table2 dd \
|
||||||
1,btn.close_main_window ,\
|
1,btn.close_main_window ,\
|
||||||
\;10000,btn.compile ,\
|
|
||||||
\;10001,btn.compile_run ,\
|
|
||||||
\;10002,btn.debug_board ,\
|
|
||||||
\;10003,btn.sysfuncs_txt ,\
|
|
||||||
'UP',btn.scroll_up ,\
|
'UP',btn.scroll_up ,\
|
||||||
'DN',btn.scroll_down ,\
|
'DN',btn.scroll_down ,\
|
||||||
'LT',btn.scroll_left ,\
|
'LT',btn.scroll_left ,\
|
||||||
'RT',btn.scroll_right ,\
|
'RT',btn.scroll_right ,\
|
||||||
\;5,key.ctrl_o ,\
|
|
||||||
0
|
0
|
||||||
|
|
||||||
accel_table2_botdlg dd \
|
accel_table2_botdlg dd \
|
||||||
@ -632,7 +655,6 @@ accel_table2_botdlg dd \
|
|||||||
0
|
0
|
||||||
|
|
||||||
add_table:
|
add_table:
|
||||||
; times $61 db -$00
|
|
||||||
times $1A db -$20
|
times $1A db -$20
|
||||||
times $25 db -$00
|
times $25 db -$00
|
||||||
times $10 db -$20
|
times $10 db -$20
|
||||||
@ -641,15 +663,8 @@ add_table:
|
|||||||
times $04 db -$00,-$01
|
times $04 db -$00,-$01
|
||||||
times $08 db -$00
|
times $08 db -$00
|
||||||
|
|
||||||
;error_beep db 0xA0,0x30,0
|
|
||||||
|
|
||||||
s_status dd 0
|
s_status dd 0
|
||||||
|
|
||||||
sz s_example,'EXAMPLE.ASM'
|
|
||||||
sz s_still ,'still'
|
|
||||||
|
|
||||||
;sz param_setup,'LANG',0 ; parameter for SETUP
|
|
||||||
|
|
||||||
fasm_start:
|
fasm_start:
|
||||||
dd 7
|
dd 7
|
||||||
dd 0
|
dd 0
|
||||||
@ -679,246 +694,18 @@ docpak_start:
|
|||||||
dd 0
|
dd 0
|
||||||
db '/RD/1/DOCPAK',0
|
db '/RD/1/DOCPAK',0
|
||||||
|
|
||||||
;sz setup ,'SETUP ' ; to change keyboard layout
|
|
||||||
|
|
||||||
sz sysfuncs_param,'g',0
|
sz sysfuncs_param,'g',0
|
||||||
|
|
||||||
lsz sysfuncs_filename,\
|
include 'tp-locale.inc'
|
||||||
ru,<'SYSFUNCR.TXT',0>,\
|
|
||||||
en,<'SYSFUNCS.TXT',0>
|
|
||||||
|
|
||||||
sz htext,'TINYPAD ',APP_VERSION
|
|
||||||
|
|
||||||
lszc help_text,b,\
|
|
||||||
ru,'ŠŽŒ€<C592>„›:',\
|
|
||||||
ru,' ',\
|
|
||||||
ru,' CTRL+F1 : <20>â® ®ª®',\
|
|
||||||
ru,' CTRL+S : <20>¥à¢ ï áâப ¤«ï ª®¯¨à®¢ ¨ï',\
|
|
||||||
ru,' CTRL+E : <20>®á«¥¤ïï áâப ¤«ï ª®¯¨à®¢ ¨ï',\
|
|
||||||
ru,' CTRL+P : ‚áâ ¢¨âì ¢ë¡à ®¥ ⥪ãéãî ¯®§¨æ¨î',\
|
|
||||||
ru,' CTRL+D : “¤ «¨âì áâபã',\
|
|
||||||
ru,' CTRL+L : ‚áâ ¢¨âì áâபã-à §¤¥«¨â¥«ì',\
|
|
||||||
ru,' CTRL+[ : <20>¥à¥©â¨ ¢ ç «® ä ©« ',\
|
|
||||||
ru,' CTRL+] : <20>¥à¥©â¨ ¢ ª®¥æ ä ©« ',\
|
|
||||||
ru,' CTRL+F2 : ‡ £à㧨âì ä ©«',\
|
|
||||||
ru,' CTRL+F3 : <20>®¨áª',\
|
|
||||||
ru,' CTRL+F4 : ‘®åà ¨âì ä ©«',\
|
|
||||||
ru,' CTRL+F5 : ‚¢¥á⨠¨¬ï ä ©« ',\
|
|
||||||
ru,' CTRL+F6 : ‚¢¥á⨠áâப㠤«ï ¯®¨áª ',\
|
|
||||||
ru,' CTRL+F8 : ‘¬¥¨âì à ᪫ ¤ªã ª« ¢¨ âãàë',\
|
|
||||||
\
|
|
||||||
en,'COMMANDS:',\
|
|
||||||
en,' ',\
|
|
||||||
en,' CTRL+F1 : SHOW THIS WINDOW',\
|
|
||||||
en,' CTRL+S : SELECT FIRST STRING TO COPY',\
|
|
||||||
en,' CTRL+E : SELECT LAST STRING TO COPY',\
|
|
||||||
en,' CTRL+P : PASTE SELECTED TO CURRENT POSITION',\
|
|
||||||
en,' CTRL+D : DELETE CURRENT LINE',\
|
|
||||||
en,' CTRL+L : INSERT SEPARATOR LINE',\
|
|
||||||
en,' CTRL+[ : GO TO THE BEGINNING OF FILE',\
|
|
||||||
en,' CTRL+] : GO TO THE END OF FILE',\
|
|
||||||
en,' CTRL+F2 : LOAD FILE',\
|
|
||||||
en,' CTRL+F3 : SEARCH',\
|
|
||||||
en,' CTRL+F4 : SAVE FILE',\
|
|
||||||
en,' CTRL+F5 : ENTER FILENAME',\
|
|
||||||
en,' CTRL+F6 : ENTER SEARCH STRING',\
|
|
||||||
en,' CTRL+F8 : CHANGE KEYBOARD LAYOUT'
|
|
||||||
db 0
|
|
||||||
|
|
||||||
menubar_res main_menu,\
|
|
||||||
ru,'” ©«' ,popup_file ,onshow.file ,\
|
|
||||||
ru,'<27>à ¢ª ' ,popup_edit ,onshow.edit ,\
|
|
||||||
ru,'<27>®¨áª' ,popup_search ,onshow.search ,\
|
|
||||||
ru,'‡ ¯ãáª' ,popup_run ,onshow.run ,\
|
|
||||||
ru,'Š®¤¨à®¢ª ',popup_recode ,onshow.recode ,\
|
|
||||||
ru,'Ž¯æ¨¨' ,popup_options,onshow.options,\
|
|
||||||
\
|
|
||||||
en,'File' ,popup_file ,onshow.file ,\
|
|
||||||
en,'Edit' ,popup_edit ,onshow.edit ,\
|
|
||||||
en,'Search' ,popup_search ,onshow.search ,\
|
|
||||||
en,'Run' ,popup_run ,onshow.run ,\
|
|
||||||
en,'Encoding',popup_recode ,onshow.recode ,\
|
|
||||||
en,'Options' ,popup_options,onshow.options
|
|
||||||
|
|
||||||
popup_res popup_file,\
|
|
||||||
ru,'<27>®¢ë©' ,'Ctrl+N' ,key.ctrl_n ,\
|
|
||||||
ru,'Žâªàëâì...' ,'Ctrl+O' ,key.ctrl_o ,\
|
|
||||||
ru,'‘®åà ¨âì' ,'Ctrl+S' ,key.ctrl_s ,\
|
|
||||||
ru,'‘®åà ¨âì ª ª...','Ctrl+Shift+S',key.shift_ctrl_s,\
|
|
||||||
ru,'-' ,'' ,0 ,\
|
|
||||||
ru,'‚ë室' ,'Alt+X' ,key.alt_x ,\
|
|
||||||
\
|
|
||||||
en,'New' ,'Ctrl+N' ,key.ctrl_n ,\
|
|
||||||
en,'Open...' ,'Ctrl+O' ,key.ctrl_o ,\
|
|
||||||
en,'Save' ,'Ctrl+S' ,key.ctrl_s ,\
|
|
||||||
en,'Save as...','Ctrl+Shift+S',key.shift_ctrl_s,\
|
|
||||||
en,'-' ,'' ,0 ,\
|
|
||||||
en,'Exit' ,'Alt+X' ,key.alt_x
|
|
||||||
|
|
||||||
popup_res popup_edit,\
|
|
||||||
ru,'‚ë१ âì' ,'Ctrl+X',key.ctrl_x,\
|
|
||||||
ru,'Š®¯¨à®¢ âì' ,'Ctrl+C',key.ctrl_c,\
|
|
||||||
ru,'‚áâ ¢¨âì' ,'Ctrl+V',key.ctrl_v,\
|
|
||||||
ru,'“¤ «¨âì' ,'' ,key.del ,\
|
|
||||||
ru,'-' ,'' ,0 ,\
|
|
||||||
ru,'‚뤥«¨âì ¢áñ','Ctrl+A',key.ctrl_a,\
|
|
||||||
\; ru,'-' ,'' ,0 ,\
|
|
||||||
\; ru,'‚¥à⨪ «ì®¥ ¢ë¤¥«¥¨¥','Alt+Ins',0 ,\
|
|
||||||
\
|
|
||||||
en,'Cut' ,'Ctrl+X',key.ctrl_x,\
|
|
||||||
en,'Copy' ,'Ctrl+C',key.ctrl_c,\
|
|
||||||
en,'Paste' ,'Ctrl+V',key.ctrl_v,\
|
|
||||||
en,'Delete' ,'' ,key.del ,\
|
|
||||||
en,'-' ,'' ,0 ,\
|
|
||||||
en,'Select all','Ctrl+A',key.ctrl_a;,\
|
|
||||||
; en,'-' ,'' ,0 ,\
|
|
||||||
; en,'Vertical selection','Alt+Ins',0
|
|
||||||
|
|
||||||
popup_res popup_search,\
|
|
||||||
ru,'<27>¥à¥©â¨...' ,'Ctrl+G',key.ctrl_g,\
|
|
||||||
ru,'-' ,'' ,0 ,\
|
|
||||||
ru,'<27> ©â¨...' ,'Ctrl+F',key.ctrl_f,\
|
|
||||||
ru,'<27> ©â¨ ¤ «¥¥','F3' ,key.f3 ,\
|
|
||||||
ru,'‡ ¬¥¨âì...','Ctrl+H',key.ctrl_h,\
|
|
||||||
\
|
|
||||||
en,'Position...','Ctrl+G',key.ctrl_g,\
|
|
||||||
en,'-' ,'' ,0 ,\
|
|
||||||
en,'Find...' ,'Ctrl+F',key.ctrl_f,\
|
|
||||||
en,'Find next' ,'F3' ,key.f3 ,\
|
|
||||||
en,'Replace...' ,'Ctrl+H',key.ctrl_h
|
|
||||||
|
|
||||||
popup_res popup_run,\
|
|
||||||
ru,'‡ ¯ãáâ¨âì' ,'F9' ,key.f9 ,\
|
|
||||||
ru,'Š®¬¯¨«¨à®¢ âì' ,'Ctrl+F9',key.ctrl_f9 ,\
|
|
||||||
ru,'-' ,'' ,0 ,\
|
|
||||||
ru,'„®áª ®â« ¤ª¨' ,'' ,open_debug_board ,\
|
|
||||||
ru,'‘¨áâ¥¬ë¥ äãªæ¨¨','' ,open_sysfuncs_txt,\
|
|
||||||
\
|
|
||||||
en,'Run' ,'F9' ,key.f9 ,\
|
|
||||||
en,'Compile' ,'Ctrl+F9',key.ctrl_f9 ,\
|
|
||||||
en,'-' ,'' ,0 ,\
|
|
||||||
en,'Debug board' ,'' ,open_debug_board ,\
|
|
||||||
en,'System functions' ,'' ,open_sysfuncs_txt
|
|
||||||
|
|
||||||
popup_res popup_recode,\
|
|
||||||
ru,'CP866 -> CP1251' ,'',recode.866.1251,\
|
|
||||||
ru,'CP1251 -> CP866' ,'',recode.1251.866,\
|
|
||||||
ru,'-' ,'',0,\
|
|
||||||
ru,'CP866 -> KOI8-R' ,'',recode.866.koi,\
|
|
||||||
ru,'KOI8-R -> CP866' ,'',recode.koi.866,\
|
|
||||||
ru,'-' ,'',0,\
|
|
||||||
ru,'CP1251 -> KOI8-R' ,'',recode.1251.koi,\
|
|
||||||
ru,'KOI8-R -> CP1251' ,'',recode.koi.1251,\
|
|
||||||
\
|
|
||||||
en,'CP866 -> CP1251' ,'',recode.866.1251,\
|
|
||||||
en,'CP1251 -> CP866' ,'',recode.1251.866,\
|
|
||||||
en,'-' ,'',0,\
|
|
||||||
en,'CP866 -> KOI8-R' ,'',recode.866.koi,\
|
|
||||||
en,'KOI8-R -> CP866' ,'',recode.koi.866,\
|
|
||||||
en,'-' ,'',0,\
|
|
||||||
en,'CP1251 -> KOI8-R' ,'',recode.1251.koi,\
|
|
||||||
en,'KOI8-R -> CP1251' ,'',recode.koi.1251
|
|
||||||
|
|
||||||
popup_res popup_options,\
|
|
||||||
ru,'‚¥è¨© ¢¨¤...' ,'',0,\
|
|
||||||
ru,'-' ,'',0,\
|
|
||||||
ru,'<27>¥§®¯ ᮥ ¢ë¤¥«¥¨¥' ,'',set_secure_sel,\
|
|
||||||
ru,'€¢â®¬ â¨ç¥áª¨¥ ᪮¡ª¨' ,'',set_auto_braces,\
|
|
||||||
ru,'€¢â®¬ â¨ç¥áª¨© ®âáâã¯' ,'',set_auto_indents,\
|
|
||||||
ru,'“¬ ï â ¡ã«ïæ¨ï' ,'',0,\
|
|
||||||
ru,'Ž¯â¨¬ «ì®¥ á®åà ¥¨¥','',set_optimal_fill,\
|
|
||||||
ru,'-' ,'',0,\
|
|
||||||
ru,'<27>®¬¥à áâப' ,'',set_line_numbers,\
|
|
||||||
\
|
|
||||||
en,'Appearance...' ,'',0,\
|
|
||||||
en,'-' ,'',0,\
|
|
||||||
en,'Secure selection' ,'',set_secure_sel,\
|
|
||||||
en,'Automatic brackets' ,'',set_auto_braces,\
|
|
||||||
en,'Automatic indents' ,'',set_auto_indents,\
|
|
||||||
en,'Smart tabulation' ,'',0,\
|
|
||||||
en,'Optimal fill on saving','',set_optimal_fill,\
|
|
||||||
en,'-' ,'',0,\
|
|
||||||
en,'Line numbers' ,'',set_line_numbers
|
|
||||||
|
|
||||||
lsz s_modified,\
|
|
||||||
ru,'ˆ§¬¥¥®',\
|
|
||||||
en,'Modified'
|
|
||||||
|
|
||||||
lsz s_2filename,\
|
|
||||||
ru,'ˆ¬ï ä ©« :',\
|
|
||||||
en,'Filename:'
|
|
||||||
lsz s_2open,\
|
|
||||||
ru,'Žâªàëâì',\
|
|
||||||
en,'Open'
|
|
||||||
lsz s_2save,\
|
|
||||||
ru,'‘®åà ¨âì',\
|
|
||||||
en,'Save'
|
|
||||||
lsz s_2find,\
|
|
||||||
ru,'<27> ©â¨',\
|
|
||||||
en,'Find'
|
|
||||||
db ':'
|
|
||||||
lsz s_2replace,\
|
|
||||||
ru,'‡ ¬¥¨âì',\
|
|
||||||
en,'Replace'
|
|
||||||
db ':'
|
|
||||||
lsz s_2cancel,\
|
|
||||||
ru,'Žâ¬¥ ',\
|
|
||||||
en,'Cancel'
|
|
||||||
|
|
||||||
lsz s_enter_filename,\
|
|
||||||
ru,<'‚¢¥¤¨â¥ ¨¬ï ä ©« ',0>,\
|
|
||||||
en,<'Enter filename',0>
|
|
||||||
|
|
||||||
lsz s_enter_text_to_find,\
|
|
||||||
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï ¯®¨áª ',0>,\
|
|
||||||
en,<'Enter text to find',0>
|
|
||||||
|
|
||||||
lsz s_enter_text_to_replace,\
|
|
||||||
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï § ¬¥ë',0>,\
|
|
||||||
en,<'Enter text to replace',0>
|
|
||||||
|
|
||||||
lsz s_text_not_found,\
|
|
||||||
ru,<'„®á⨣ãâ ª®¥æ ä ©« , ⥪áâ ¥ ©¤¥',0>,\
|
|
||||||
en,<'Reached end of file, text not found',0>
|
|
||||||
|
|
||||||
lszc s_fs_error,b,\
|
|
||||||
ru,<'Ž¯¥à æ¨ï § ¢¥àè¥ ãá¯¥è® (0)',0>,\
|
|
||||||
ru,<'',0>,\
|
|
||||||
ru,<'”ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ®© ä ©«®¢®© á¨á⥬ë (2)',0>,\
|
|
||||||
ru,<'<27>¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ (3)',0>,\
|
|
||||||
ru,<'',0>,\
|
|
||||||
ru,<'<27>¥¢®§¬®¦® ®âªàëâì ä ©« (5)',0>,\
|
|
||||||
ru,<'Ž¯¥à æ¨ï § ¢¥àè¥ ãá¯¥è® (6)',0>,\
|
|
||||||
ru,<'€¤à¥á 室¨âáï § £à ¨æ ¬¨ ¯ ¬ï⨠¯à®£à ¬¬ë (7)',0>,\
|
|
||||||
ru,<'<27> ¤¨áª¥ ¥â ᢮¡®¤®£® ¬¥áâ (8)',0>,\
|
|
||||||
ru,<'’ ¡«¨æ FAT ã¨ç⮦¥ (9)',0>,\
|
|
||||||
ru,<'„®áâ㯠§ ¯à¥éñ (10)',0>,\
|
|
||||||
ru,<'Žè¨¡ª ãáâனá⢠(11)',0>,\
|
|
||||||
\
|
|
||||||
en,<'Operation executed successfully (0)',0>,\
|
|
||||||
en,<'',0>,\
|
|
||||||
en,<'Function is not supported for the given filesystem (2)',0>,\
|
|
||||||
en,<'Unknown filesystem (3)',0>,\
|
|
||||||
en,<'',0>,\
|
|
||||||
en,<'Unable to open file (5)',0>,\
|
|
||||||
en,<'Operation executed successfully (6)',0>,\
|
|
||||||
en,<'Pointer lies outside of application memory (7)',0>,\
|
|
||||||
en,<'Disk is full (8)',0>,\
|
|
||||||
en,<'FAT table is destroyed (9)',0>,\
|
|
||||||
en,<'Access denied (10)',0>,\
|
|
||||||
en,<'Device error (11)',0>
|
|
||||||
|
|
||||||
sz symbols_ex,';?.%"',"'"
|
sz symbols_ex,';?.%"',"'"
|
||||||
sz symbols ,'#&*\:/<>|{}()[]=+-, '
|
sz symbols ,'#&*\:/<>|{}()[]=+-, '
|
||||||
|
|
||||||
ini_sec_window db 'Window',0
|
sz ini_sec_window ,'Window',0
|
||||||
ini_window_top db 'Top',0
|
sz ini_window_top ,'Top',0
|
||||||
ini_window_left db 'Left',0
|
sz ini_window_left ,'Left',0
|
||||||
ini_window_right db 'Right',0
|
sz ini_window_right ,'Right',0
|
||||||
ini_window_bottom db 'Bottom',0
|
sz ini_window_bottom,'Bottom',0
|
||||||
|
|
||||||
finfo_ini dd ?,?,?,AREA_TEMP,AREA_EDIT-AREA_TEMP
|
|
||||||
db '/rd/1/tinypad.ini',0
|
|
||||||
|
|
||||||
TINYPAD_END: ; end of file
|
TINYPAD_END: ; end of file
|
||||||
|
|
||||||
@ -928,38 +715,26 @@ self_path rb PATHL
|
|||||||
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
f_info70 rd 7
|
|
||||||
|
|
||||||
f_info.length dd ?
|
f_info.length dd ?
|
||||||
f_info dd ?,?,?,?,?;?,0,?,AREA_TEMP,AREA_EDIT-AREA_TEMP
|
|
||||||
|
|
||||||
f_info.path:
|
f_info.path:
|
||||||
times PATHL+1 db ?
|
times PATHL+1 db ?
|
||||||
|
f_info70 rd 7
|
||||||
|
|
||||||
|
file_info FILEINFO
|
||||||
|
|
||||||
|
tab_bar TABCTL
|
||||||
|
virtual at tab_bar.Current
|
||||||
|
cur_tab TABITEM
|
||||||
|
;cur_tab_addr dd ?
|
||||||
|
end virtual
|
||||||
|
|
||||||
pos.x dd ? ; global X position (cursor)
|
|
||||||
pos.y dd ? ; global Y position (cursor)
|
|
||||||
sel.x dd ? ; global X position (selection start)
|
|
||||||
sel.y dd ? ; global Y position (selection start)
|
|
||||||
lines dd ? ; number of lines in file
|
|
||||||
lines.scr dd ? ; number of lines on the screen
|
lines.scr dd ? ; number of lines on the screen
|
||||||
columns dd ? ; number of columns in file
|
|
||||||
columns.scr dd ? ; number of columns on the screen
|
columns.scr dd ? ; number of columns on the screen
|
||||||
top_ofs dd ? ; height occupied by top buttons
|
top_ofs dd ? ; height occupied by top buttons
|
||||||
bot_ofs dd ? ; height occupied by bottom buttons
|
bot_ofs dd ? ; height occupied by bottom buttons
|
||||||
dw ?
|
dw ?
|
||||||
left_ofs dd ? ;
|
left_ofs dd ? ;
|
||||||
top_line dd ? ; topmost visible line on screen
|
|
||||||
left_col dd ? ; leftmost visible char on line
|
|
||||||
vscrl_top dd ?
|
|
||||||
vscrl_size dd ?
|
|
||||||
hscrl_top dd ?
|
|
||||||
hscrl_size dd ?
|
|
||||||
;skinh dd ? ; skin height
|
|
||||||
__rc dd ?,?,?,?
|
__rc dd ?,?,?,?
|
||||||
;filelen dd ? ; file size (on save) ???
|
|
||||||
filesize dd ? ; file size (on load) ???
|
|
||||||
ya dd ? ; for read_string
|
|
||||||
;copy_start dd ? ; first line for copying (Ctrl+S)
|
|
||||||
copy_count dd ? ; number of lines for copying (Ctrl+E)
|
copy_count dd ? ; number of lines for copying (Ctrl+E)
|
||||||
copy_size dd ? ; size of data to copy
|
copy_size dd ? ; size of data to copy
|
||||||
s_title.size dd ? ; caption length
|
s_title.size dd ? ; caption length
|
||||||
@ -978,7 +753,6 @@ sel.selected db ?
|
|||||||
|
|
||||||
in_sel db ?
|
in_sel db ?
|
||||||
|
|
||||||
asm_mode db ? ; ASM highlight?
|
|
||||||
do_not_draw db ? ; draw top and bottom buttons?
|
do_not_draw db ? ; draw top and bottom buttons?
|
||||||
main_closed db ? ; main window closed?
|
main_closed db ? ; main window closed?
|
||||||
tb_casesen db ? ; focused textbox is case-sensitive?
|
tb_casesen db ? ; focused textbox is case-sensitive?
|
||||||
@ -1021,13 +795,14 @@ just_from_popup db ?
|
|||||||
|
|
||||||
bot_mode db ?
|
bot_mode db ?
|
||||||
|
|
||||||
modified db ?
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
bot_dlg_height dd ?
|
bot_dlg_height dd ?
|
||||||
bot_dlg_mode2 db ?
|
bot_dlg_mode2 db ?
|
||||||
|
|
||||||
|
temp_buf dd ?
|
||||||
|
copy_buf dd ?
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -1038,22 +813,6 @@ p_info process_information
|
|||||||
p_info2 process_information
|
p_info2 process_information
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
|
||||||
diff16 'Main memory size',0,$
|
|
||||||
|
|
||||||
MAIN_STACK = 0x0000FFF0
|
|
||||||
POPUP_STACK = 0x0000EFF0
|
|
||||||
|
|
||||||
AREA_TEMP = 0x00010000 ; 0x00010000
|
|
||||||
AREA_EDIT = 0x000C0000 ; 0x00080000
|
|
||||||
AREA_TEMP2 = 0x00190000 ; 0x002E0000
|
|
||||||
AREA_CBUF = 0x001A0000 ; 0x002F0000
|
|
||||||
AREA_ENDMEM = 0x001B0000 ; 0x00300000
|
|
||||||
|
|
||||||
diff10 'Header+options size',0,@CODE
|
|
||||||
diff10 'Load area size',AREA_TEMP,AREA_EDIT
|
|
||||||
diff10 'Edit area size',AREA_EDIT,AREA_TEMP2
|
|
||||||
diff10 'Total memory usage',0,AREA_ENDMEM
|
|
||||||
|
|
||||||
;store dword '/hd/' at tb_opensave.text+4*0
|
;store dword '/hd/' at tb_opensave.text+4*0
|
||||||
;store dword '1/tp' at tb_opensave.text+4*1
|
;store dword '1/tp' at tb_opensave.text+4*1
|
||||||
;store dword 'ad4/' at tb_opensave.text+4*2
|
;store dword 'ad4/' at tb_opensave.text+4*2
|
||||||
@ -1061,3 +820,13 @@ diff10 'Total memory usage',0,AREA_ENDMEM
|
|||||||
;store dword 'pad.' at tb_opensave.text+4*4
|
;store dword 'pad.' at tb_opensave.text+4*4
|
||||||
;store dword 'asm' at tb_opensave.text+4*5
|
;store dword 'asm' at tb_opensave.text+4*5
|
||||||
;store byte 23 at tb_opensave.length
|
;store byte 23 at tb_opensave.length
|
||||||
|
|
||||||
|
;rb 1024*36
|
||||||
|
rb 1024*4
|
||||||
|
MAIN_STACK:
|
||||||
|
rb 1024*4
|
||||||
|
POPUP_STACK:
|
||||||
|
|
||||||
|
STATIC_MEM_END:
|
||||||
|
|
||||||
|
diff10 'Main memory size',0,$
|
||||||
|
@ -1,3 +1,56 @@
|
|||||||
|
|
||||||
|
struct POINT
|
||||||
|
X dd ?
|
||||||
|
Y dd ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct RECT
|
||||||
|
Left dd ?
|
||||||
|
Top dd ?
|
||||||
|
Right dd ?
|
||||||
|
Bottom dd ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct SCROLLBAR
|
||||||
|
Top dd ?
|
||||||
|
Size dd ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct EDITOR
|
||||||
|
FilePath db PATHL dup(?)
|
||||||
|
FileName dd ?
|
||||||
|
Data dd ?
|
||||||
|
Bounds RECT
|
||||||
|
Caret POINT
|
||||||
|
SelStart POINT
|
||||||
|
Lines dd ?
|
||||||
|
Columns dd ?
|
||||||
|
TopLeft POINT
|
||||||
|
VScroll SCROLLBAR
|
||||||
|
HScroll SCROLLBAR
|
||||||
|
Gutter.Width dd ?
|
||||||
|
Gutter.Visible db ?
|
||||||
|
AsmMode db ?
|
||||||
|
Modified db ?
|
||||||
|
db ?
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct TABITEM
|
||||||
|
Editor EDITOR
|
||||||
|
ends
|
||||||
|
|
||||||
|
struct TABCTL
|
||||||
|
Bounds RECT
|
||||||
|
Items dd ?
|
||||||
|
Items.Count dd ?
|
||||||
|
Current TABITEM
|
||||||
|
Current.Ptr dd ?
|
||||||
|
Style db ?
|
||||||
|
db 3 dup(?)
|
||||||
|
ends
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual at -20
|
virtual at -20
|
||||||
POPUP:
|
POPUP:
|
||||||
.actions dd ?
|
.actions dd ?
|
||||||
@ -29,13 +82,13 @@ macro popup_res _name,[_lang,_title,_accel,_action]
|
|||||||
dw ? ; x
|
dw ? ; x
|
||||||
_name:
|
_name:
|
||||||
forward
|
forward
|
||||||
if (lang eq _lang)
|
if (lang eq _lang) | (_lang eq @!)
|
||||||
db 1
|
db 1
|
||||||
end if
|
end if
|
||||||
common
|
common
|
||||||
.data:
|
.data:
|
||||||
forward
|
forward
|
||||||
if lang eq _lang
|
if (lang eq _lang) | (_lang eq @!)
|
||||||
if _title eq '-'
|
if _title eq '-'
|
||||||
db 1,'-'
|
db 1,'-'
|
||||||
c2 = c2+1
|
c2 = c2+1
|
||||||
@ -63,8 +116,12 @@ macro popup_res _name,[_lang,_title,_accel,_action]
|
|||||||
align 4
|
align 4
|
||||||
.actions:
|
.actions:
|
||||||
forward
|
forward
|
||||||
if lang eq _lang
|
if (lang eq _lang) | (_lang eq @!)
|
||||||
dd _action
|
if (_action eq )
|
||||||
|
dd 0
|
||||||
|
else
|
||||||
|
dd _name#.#_action
|
||||||
|
end if
|
||||||
end if
|
end if
|
||||||
common
|
common
|
||||||
.size = $-_name+20
|
.size = $-_name+20
|
||||||
|
@ -22,64 +22,44 @@ button:
|
|||||||
|
|
||||||
jmp still.skip_write
|
jmp still.skip_write
|
||||||
|
|
||||||
; cmp eax,BUTTON_SCRLUP
|
|
||||||
; jne not_up
|
|
||||||
btn.scroll_up:
|
btn.scroll_up:
|
||||||
dec [top_line]
|
dec [cur_tab.Editor.TopLeft.Y] ;! [top_line]
|
||||||
jns @f
|
jns @f
|
||||||
inc [top_line]
|
inc [cur_tab.Editor.TopLeft.Y] ;! [top_line]
|
||||||
ret;jmp still.skip_write
|
ret
|
||||||
@@: call check_inv_all.skip_check
|
@@: call check_inv_all.skip_check
|
||||||
ret
|
ret
|
||||||
; not_up:
|
|
||||||
|
|
||||||
; cmp eax,BUTTON_SCRLDN
|
|
||||||
; jne not_down
|
|
||||||
btn.scroll_down:
|
btn.scroll_down:
|
||||||
inc [top_line]
|
inc [cur_tab.Editor.TopLeft.Y] ;! [top_line]
|
||||||
mov eax,[lines]
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
sub eax,[lines.scr]
|
sub eax,[lines.scr]
|
||||||
cmp eax,[top_line]
|
cmp eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
jge @f
|
jge @f
|
||||||
dec [top_line]
|
dec [cur_tab.Editor.TopLeft.Y] ;! [top_line]
|
||||||
;dec eax
|
ret
|
||||||
;mov [top_line],eax
|
|
||||||
ret;jmp still.skip_write
|
|
||||||
@@: call check_inv_all.skip_check
|
@@: call check_inv_all.skip_check
|
||||||
ret
|
ret
|
||||||
; not_down:
|
|
||||||
|
|
||||||
; cmp eax,BUTTON_SCRLLT
|
|
||||||
; jne not_left
|
|
||||||
btn.scroll_left:
|
btn.scroll_left:
|
||||||
dec [left_col]
|
dec [cur_tab.Editor.TopLeft.X] ;! [left_col]
|
||||||
jns @f
|
jns @f
|
||||||
inc [left_col]
|
inc [cur_tab.Editor.TopLeft.X] ;! [left_col]
|
||||||
ret;jmp still.skip_write
|
ret;jmp still.skip_write
|
||||||
@@: call check_inv_all.skip_check
|
@@: call check_inv_all.skip_check
|
||||||
ret
|
ret
|
||||||
; not_left:
|
|
||||||
|
|
||||||
; cmp eax,BUTTON_SCRLRT
|
|
||||||
; jne not_right
|
|
||||||
btn.scroll_right:
|
btn.scroll_right:
|
||||||
inc [left_col]
|
inc [cur_tab.Editor.TopLeft.X] ;! [left_col]
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
sub eax,[columns.scr]
|
sub eax,[columns.scr]
|
||||||
cmp eax,[left_col]
|
cmp eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
jge @f
|
jge @f
|
||||||
dec [left_col]
|
dec [cur_tab.Editor.TopLeft.X] ;! [left_col]
|
||||||
;dec eax
|
ret
|
||||||
;mov [left_col],eax
|
|
||||||
ret;jmp still.skip_write
|
|
||||||
@@: call check_inv_all.skip_check
|
@@: call check_inv_all.skip_check
|
||||||
ret
|
ret
|
||||||
; not_right:
|
|
||||||
|
|
||||||
; SEARCH {
|
|
||||||
; search:
|
|
||||||
; cmp al,BUTTON_SEARCH
|
|
||||||
; jne no_search
|
|
||||||
btn.search:
|
btn.search:
|
||||||
key.f3:
|
key.f3:
|
||||||
call search
|
call search
|
||||||
@ -90,7 +70,7 @@ button:
|
|||||||
|
|
||||||
func search
|
func search
|
||||||
cld
|
cld
|
||||||
mov ecx,[pos.y]
|
mov ecx,[cur_tab.Editor.Caret.Y] ;! ecx,[pos.y]
|
||||||
mov edx,ecx
|
mov edx,ecx
|
||||||
call get_line_offset
|
call get_line_offset
|
||||||
cmp word[esi],0
|
cmp word[esi],0
|
||||||
@ -100,11 +80,9 @@ func search
|
|||||||
or eax,eax
|
or eax,eax
|
||||||
jz .end_line.2
|
jz .end_line.2
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
sub ecx,[pos.x]
|
sub ecx,[cur_tab.Editor.Caret.X] ;! ecx,[pos.x]
|
||||||
push esi
|
push esi
|
||||||
add esi,[pos.x]
|
add esi,[cur_tab.Editor.Caret.X] ;! esi,[pos.x]
|
||||||
;dec ecx
|
|
||||||
;inc esi
|
|
||||||
jmp @f
|
jmp @f
|
||||||
|
|
||||||
.next_line:
|
.next_line:
|
||||||
@ -140,15 +118,15 @@ func search
|
|||||||
|
|
||||||
.found:
|
.found:
|
||||||
add esp,4
|
add esp,4
|
||||||
mov [pos.y],edx
|
mov [cur_tab.Editor.Caret.Y],edx ;! [pos.y],edx
|
||||||
mov [sel.y],edx
|
mov [cur_tab.Editor.SelStart.Y],edx ;! [sel.y],edx
|
||||||
mov ecx,edx
|
mov ecx,edx
|
||||||
lea eax,[esi-4]
|
lea eax,[esi-4]
|
||||||
call get_line_offset
|
call get_line_offset
|
||||||
sub eax,esi
|
sub eax,esi
|
||||||
mov [sel.x],eax
|
mov [cur_tab.Editor.SelStart.X],eax ;! [sel.x],eax
|
||||||
add eax,[s_search.size]
|
add eax,[s_search.size]
|
||||||
mov [pos.x],eax
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
mov [s_status],0
|
mov [s_status],0
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
@ -170,136 +148,87 @@ func search
|
|||||||
ret
|
ret
|
||||||
endf
|
endf
|
||||||
|
|
||||||
; SEARCH }
|
|
||||||
|
|
||||||
; no_search:
|
|
||||||
|
|
||||||
; TOOLBAR {
|
|
||||||
; cmp eax,10000
|
|
||||||
; jb no_toolbar
|
|
||||||
|
|
||||||
; add eax,-10000
|
|
||||||
; jnz @f
|
|
||||||
btn.compile:
|
btn.compile:
|
||||||
key.ctrl_f9:
|
key.ctrl_f9:
|
||||||
mov bl,0;[run_outfile],0
|
mov bl,0
|
||||||
call start_fasm
|
call start_fasm
|
||||||
ret;jmp still
|
ret
|
||||||
; @@: dec eax
|
|
||||||
; jnz @f
|
|
||||||
btn.compile_run:
|
btn.compile_run:
|
||||||
key.f9:
|
key.f9:
|
||||||
mov bl,1;[run_outfile],1
|
mov bl,1
|
||||||
call start_fasm
|
call start_fasm
|
||||||
ret;jmp still
|
ret
|
||||||
; @@: dec eax
|
|
||||||
; jnz @f
|
|
||||||
btn.debug_board:
|
btn.debug_board:
|
||||||
call open_debug_board
|
call open_debug_board
|
||||||
ret;jmp still
|
ret
|
||||||
; @@: dec eax
|
|
||||||
; jnz still
|
|
||||||
btn.sysfuncs_txt:
|
btn.sysfuncs_txt:
|
||||||
call open_sysfuncs_txt
|
call open_sysfuncs_txt
|
||||||
ret;jmp still
|
ret
|
||||||
; TOOLBAR }
|
|
||||||
|
|
||||||
; no_toolbar:
|
|
||||||
|
|
||||||
; cmp al,4
|
|
||||||
; jne noid4
|
|
||||||
|
|
||||||
; LOAD_FILE {
|
|
||||||
; do_load_file:
|
|
||||||
btn.load_file:
|
btn.load_file:
|
||||||
key.ctrl_l:
|
key.ctrl_l:
|
||||||
; cmp [s_fname],'/'
|
|
||||||
; jne @f
|
|
||||||
; call load_hd_file
|
|
||||||
; jmp .restorecursor
|
|
||||||
; @@: call load_file
|
|
||||||
call load_file
|
call load_file
|
||||||
jnc @f
|
jnc @f
|
||||||
ret
|
ret
|
||||||
; .restorecursor:
|
|
||||||
@@:
|
@@:
|
||||||
xor eax,eax
|
|
||||||
mov [top_line],eax
|
|
||||||
mov [left_col],eax
|
|
||||||
mov [pos.x],eax
|
|
||||||
mov [pos.y],eax
|
|
||||||
mov [sel.x],eax
|
|
||||||
mov [sel.y],eax
|
|
||||||
|
|
||||||
mov [modified],al
|
xor eax,eax
|
||||||
|
mov [cur_tab.Editor.TopLeft.Y],eax ;! [top_line],eax
|
||||||
|
mov [cur_tab.Editor.TopLeft.X],eax ;! [left_col],eax
|
||||||
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
|
mov [cur_tab.Editor.Caret.Y],eax ;! [pos.y],eax
|
||||||
|
mov [cur_tab.Editor.SelStart.X],eax ;! [sel.x],eax
|
||||||
|
mov [cur_tab.Editor.SelStart.Y],eax ;! [sel.y],eax
|
||||||
|
|
||||||
|
mov [cur_tab.Editor.Modified],al ;! [modified],al
|
||||||
|
|
||||||
; enable color syntax for ASM and INC files:
|
; enable color syntax for ASM and INC files:
|
||||||
mov [asm_mode],al
|
mov [cur_tab.Editor.AsmMode],al ;! [asm_mode],al
|
||||||
|
|
||||||
mov eax,[f_info.length] ; [s_fname.size]
|
mov eax,[f_info.length]
|
||||||
add eax,f_info.path ; s_fname
|
add eax,f_info.path
|
||||||
mov byte[eax],0
|
mov byte[eax],0
|
||||||
mov ecx, dword [eax-3]
|
mov ecx, dword [eax-3]
|
||||||
or ecx, 0x202020
|
or ecx, 0x202020
|
||||||
cmp ecx, 'asm'
|
cmp ecx, 'asm'
|
||||||
jne @f
|
jne @f
|
||||||
inc [asm_mode]
|
inc [cur_tab.Editor.AsmMode] ;! [asm_mode]
|
||||||
jmp .nocol
|
jmp .nocol
|
||||||
@@: cmp ecx, 'inc'
|
@@: cmp ecx, 'inc'
|
||||||
jne .nocol
|
jne .nocol
|
||||||
inc [asm_mode]
|
inc [cur_tab.Editor.AsmMode] ;! [asm_mode]
|
||||||
.nocol:
|
.nocol:
|
||||||
|
|
||||||
update_caption:
|
update_caption:
|
||||||
macro unused {
|
lea esi,[cur_tab.Editor.FilePath] ;! mov esi,f_info.path
|
||||||
movzx ecx,[f_info.length] ; [s_fname.size]
|
|
||||||
add ecx,10 ; strlen(" - TINYPAD");
|
|
||||||
cmp ecx,[s_title.size]
|
|
||||||
jne @f
|
|
||||||
add ecx,-10
|
|
||||||
mov esi,f_info.path ; s_fname ; strcmp(s_fname,header);
|
|
||||||
mov edi,s_title
|
|
||||||
repe cmpsb
|
|
||||||
jne @f
|
|
||||||
; call draw_file
|
|
||||||
clc
|
|
||||||
ret;jmp still
|
|
||||||
@@:
|
|
||||||
}
|
|
||||||
; set window title:
|
|
||||||
mov esi,f_info.path ; s_fname
|
|
||||||
mov edi,s_title
|
mov edi,s_title
|
||||||
|
|
||||||
cld
|
@@: lodsb
|
||||||
mov ecx,[f_info.length] ; [s_fname.size]
|
cmp al,0
|
||||||
jecxz @f
|
je @f
|
||||||
;lea eax,[ecx+10]
|
stosb
|
||||||
;mov [s_title.size],eax
|
jmp @b
|
||||||
|
@@:
|
||||||
;cld
|
;cld
|
||||||
rep movsb
|
;mov ecx,[f_info.length]
|
||||||
|
;jecxz @f
|
||||||
|
;rep movsb
|
||||||
|
|
||||||
mov dword[edi],' - '
|
mov dword[edi],' - '
|
||||||
add edi,3
|
add edi,3
|
||||||
@@: mov esi,htext
|
@@: mov esi,htext
|
||||||
mov ecx,htext.size
|
mov ecx,htext.size
|
||||||
|
cld
|
||||||
rep movsb
|
rep movsb
|
||||||
|
|
||||||
mov al,0
|
mov al,0
|
||||||
stosb
|
stosb
|
||||||
|
|
||||||
; call drawwindow
|
mcall 71,1,s_title
|
||||||
|
|
||||||
clc
|
clc
|
||||||
ret;jmp still
|
ret
|
||||||
; LOAD_FILE }
|
|
||||||
|
|
||||||
; noid4:
|
|
||||||
|
|
||||||
; cmp al, 2
|
|
||||||
; jz yessave
|
|
||||||
|
|
||||||
; dec al ; close if butid == 1
|
|
||||||
; jnz nosave
|
|
||||||
; EXIT:
|
|
||||||
btn.close_main_window:
|
btn.close_main_window:
|
||||||
key.alt_x:
|
key.alt_x:
|
||||||
mov esi,self_path
|
mov esi,self_path
|
||||||
@ -310,11 +239,6 @@ macro unused {
|
|||||||
stosb
|
stosb
|
||||||
or al,al
|
or al,al
|
||||||
jnz @b
|
jnz @b
|
||||||
; mov ebx,f_info
|
|
||||||
; mov dword[ebx+0],1
|
|
||||||
; mov dword[ebx+8],self_path
|
|
||||||
; mov dword[ebx+12],0
|
|
||||||
; mcall 58
|
|
||||||
|
|
||||||
mov [f_info70+0],2
|
mov [f_info70+0],2
|
||||||
mov [f_info70+4],0
|
mov [f_info70+4],0
|
||||||
@ -325,31 +249,6 @@ macro unused {
|
|||||||
mov [f_info70+21],f_info.path
|
mov [f_info70+21],f_info.path
|
||||||
mcall 70,f_info70
|
mcall 70,f_info70
|
||||||
|
|
||||||
; test eax,eax
|
|
||||||
; je .close
|
|
||||||
; cmp eax,6
|
|
||||||
; je .close
|
|
||||||
; ret
|
|
||||||
|
|
||||||
.close:
|
.close:
|
||||||
mov [main_closed],1
|
mov [main_closed],1
|
||||||
mcall -1
|
mcall -1
|
||||||
|
|
||||||
; SAVE_FILE {
|
|
||||||
; yessave:
|
|
||||||
; btn.save_file:
|
|
||||||
; key.ctrl_s:
|
|
||||||
; mov [bot_mode],1
|
|
||||||
; mov [bot_save_mode],1
|
|
||||||
; mov [bot_dlg_height],16*2+4*2-1
|
|
||||||
; mov [bot_dlg_handler],osdlg_handler
|
|
||||||
; call drawwindow
|
|
||||||
; call save_file
|
|
||||||
; ret;jmp still
|
|
||||||
; SAVE_FILE }
|
|
||||||
|
|
||||||
; nosave:
|
|
||||||
; btn.save_enter_name:
|
|
||||||
; inc al
|
|
||||||
; call read_string
|
|
||||||
; ret;jmp still
|
|
@ -4,60 +4,62 @@ func check_cur_vis_inv ;//////////////////////////////////////////////////////
|
|||||||
push eax ebx
|
push eax ebx
|
||||||
xor bl,bl
|
xor bl,bl
|
||||||
.chk_y:
|
.chk_y:
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jge @f
|
jge @f
|
||||||
mov [pos.y],0
|
mov [cur_tab.Editor.Caret.Y],0 ;! [pos.y],0
|
||||||
jmp .chk_dy
|
jmp .chk_dy
|
||||||
@@: cmp eax,[lines]
|
@@: cmp eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
jl .chk_dy
|
jl .chk_dy
|
||||||
mov eax,[lines]
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
dec eax
|
dec eax
|
||||||
mov [pos.y],eax
|
mov [cur_tab.Editor.Caret.Y],eax ;! [pos.y],eax
|
||||||
.chk_dy:
|
.chk_dy:
|
||||||
mov eax,[top_line]
|
mov eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
cmp eax,[pos.y]
|
cmp eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
jle @f
|
jle @f
|
||||||
push [pos.y]
|
m2m [cur_tab.Editor.TopLeft.Y],[cur_tab.Editor.Caret.Y]
|
||||||
pop [top_line]
|
;! push [pos.y]
|
||||||
|
;! pop [top_line]
|
||||||
inc bl
|
inc bl
|
||||||
@@: add eax,[lines.scr]
|
@@: add eax,[lines.scr]
|
||||||
cmp eax,[pos.y]
|
cmp eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
jg .chk_x
|
jg .chk_x
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
sub eax,[lines.scr]
|
sub eax,[lines.scr]
|
||||||
inc eax
|
inc eax
|
||||||
mov [top_line],eax
|
mov [cur_tab.Editor.TopLeft.Y],eax ;! [top_line],eax
|
||||||
inc bl
|
inc bl
|
||||||
.chk_x:
|
.chk_x:
|
||||||
mov eax,[pos.x]
|
mov eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jge @f
|
jge @f
|
||||||
mov [pos.x],0
|
mov [cur_tab.Editor.Caret.X],0 ;! [pos.x],0
|
||||||
jmp .chk_dx
|
jmp .chk_dx
|
||||||
@@: cmp eax,[columns]
|
@@: cmp eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
jl .chk_dx
|
jl .chk_dx
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
mov [pos.x],eax
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
.chk_dx:
|
.chk_dx:
|
||||||
mov eax,[left_col]
|
mov eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
cmp eax,[pos.x]
|
cmp eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
jle @f
|
jle @f
|
||||||
push [pos.x]
|
m2m [cur_tab.Editor.TopLeft.X],[cur_tab.Editor.Caret.X]
|
||||||
pop [left_col]
|
;! push [pos.x]
|
||||||
|
;! pop [left_col]
|
||||||
inc bl
|
inc bl
|
||||||
@@: add eax,[columns.scr]
|
@@: add eax,[columns.scr]
|
||||||
cmp eax,[pos.x]
|
cmp eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
jg @f
|
jg @f
|
||||||
mov eax,[pos.x]
|
mov eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
sub eax,[columns.scr]
|
sub eax,[columns.scr]
|
||||||
inc eax
|
inc eax
|
||||||
mov [left_col],eax
|
mov [cur_tab.Editor.TopLeft.X],eax ;! [left_col],eax
|
||||||
inc bl
|
inc bl
|
||||||
@@: cmp [mev],MEV_LDOWN
|
@@: cmp [mev],MEV_LDOWN
|
||||||
jne .exit
|
jne .exit
|
||||||
push [pos.x] [pos.y]
|
push [cur_tab.Editor.Caret.X] [cur_tab.Editor.Caret.Y] ;! [pos.x] [pos.y]
|
||||||
pop [sel.y] [sel.x]
|
pop [cur_tab.Editor.SelStart.Y] [cur_tab.Editor.SelStart.X] ;! [sel.y] [sel.x]
|
||||||
.exit:
|
.exit:
|
||||||
or bl,bl
|
or bl,bl
|
||||||
clc
|
clc
|
||||||
@ -72,13 +74,13 @@ endf
|
|||||||
func clear_selection ;////////////////////////////////////////////////////////
|
func clear_selection ;////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax ebx
|
push eax ebx
|
||||||
mov eax,[sel.y]
|
mov eax,[cur_tab.Editor.SelStart.Y] ;! eax,[sel.y]
|
||||||
mov ebx,[pos.y]
|
mov ebx,[cur_tab.Editor.Caret.Y] ;! ebx,[pos.y]
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jle @f
|
jle @f
|
||||||
xchg eax,ebx
|
xchg eax,ebx
|
||||||
@@: push [pos.x] [pos.y]
|
@@: push [cur_tab.Editor.Caret.X] [cur_tab.Editor.Caret.Y] ;! [pos.x] [pos.y]
|
||||||
pop [sel.y] [sel.x]
|
pop [cur_tab.Editor.SelStart.Y] [cur_tab.Editor.SelStart.X] ;! [sel.y] [sel.x]
|
||||||
call draw_file.ex
|
call draw_file.ex
|
||||||
pop ebx eax
|
pop ebx eax
|
||||||
ret
|
ret
|
||||||
@ -105,24 +107,24 @@ endf
|
|||||||
func check_bottom_right ;/////////////////////////////////////////////////////
|
func check_bottom_right ;/////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax
|
push eax
|
||||||
mov eax,[top_line]
|
mov eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
add eax,[lines.scr]
|
add eax,[lines.scr]
|
||||||
cmp eax,[lines]
|
cmp eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
jbe .lp1
|
jbe .lp1
|
||||||
mov eax,[lines]
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
sub eax,[lines.scr]
|
sub eax,[lines.scr]
|
||||||
jns @f
|
jns @f
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
@@: mov [top_line],eax
|
@@: mov [cur_tab.Editor.TopLeft.Y],eax ;! [top_line],eax
|
||||||
.lp1: mov eax,[left_col]
|
.lp1: mov eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
add eax,[columns.scr]
|
add eax,[columns.scr]
|
||||||
cmp eax,[columns]
|
cmp eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
jbe .exit
|
jbe .exit
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
sub eax,[columns.scr]
|
sub eax,[columns.scr]
|
||||||
jns @f
|
jns @f
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
@@: mov [left_col],eax
|
@@: mov [cur_tab.Editor.TopLeft.X],eax ;! [left_col],eax
|
||||||
.exit:
|
.exit:
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
@ -148,12 +150,12 @@ endf
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func check_inv_all ;//////////////////////////////////////////////////////////
|
func check_inv_all ;//////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
mov ecx,[top_line]
|
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
.skip_init:
|
.skip_init:
|
||||||
call check_cur_vis
|
call check_cur_vis
|
||||||
mov [pos.y],eax
|
mov [cur_tab.Editor.Caret.Y],eax ;! [pos.y],eax
|
||||||
mov [top_line],ecx
|
mov [cur_tab.Editor.TopLeft.Y],ecx ;! [top_line],ecx
|
||||||
.skip_check:
|
.skip_check:
|
||||||
; call clear_screen
|
; call clear_screen
|
||||||
call draw_file
|
call draw_file
|
||||||
@ -167,9 +169,9 @@ func check_cur_vis ;//////////////////////////////////////////////////////////
|
|||||||
jb .low
|
jb .low
|
||||||
mov edx,ecx
|
mov edx,ecx
|
||||||
add edx,[lines.scr]
|
add edx,[lines.scr]
|
||||||
cmp edx,[lines]
|
cmp edx,[cur_tab.Editor.Lines] ;! edx,[lines]
|
||||||
jbe @f
|
jbe @f
|
||||||
mov edx,[lines]
|
mov edx,[cur_tab.Editor.Lines] ;! edx,[lines]
|
||||||
@@: cmp eax,edx
|
@@: cmp eax,edx
|
||||||
jb @f
|
jb @f
|
||||||
lea ecx,[eax+1]
|
lea ecx,[eax+1]
|
||||||
@ -180,17 +182,17 @@ func check_cur_vis ;//////////////////////////////////////////////////////////
|
|||||||
.low: mov ecx,eax
|
.low: mov ecx,eax
|
||||||
@@: mov edx,ecx
|
@@: mov edx,ecx
|
||||||
add edx,[lines.scr]
|
add edx,[lines.scr]
|
||||||
cmp edx,[lines]
|
cmp edx,[cur_tab.Editor.Lines] ;! edx,[lines]
|
||||||
jbe @f
|
jbe @f
|
||||||
mov ecx,[lines]
|
mov ecx,[cur_tab.Editor.Lines] ;! ecx,[lines]
|
||||||
sub ecx,[lines.scr]
|
sub ecx,[lines.scr]
|
||||||
jns @f
|
jns @f
|
||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
@@:;mov [top_line],ecx
|
@@:;mov [top_line],ecx
|
||||||
|
|
||||||
pushad
|
pushad
|
||||||
mov eax,[pos.x]
|
mov eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
mov ebx,[left_col]
|
mov ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
mov ecx,ebx
|
mov ecx,ebx
|
||||||
add ecx,[columns.scr]
|
add ecx,[columns.scr]
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
@ -201,10 +203,10 @@ func check_cur_vis ;//////////////////////////////////////////////////////////
|
|||||||
sub ebx,[columns.scr]
|
sub ebx,[columns.scr]
|
||||||
jmp @f
|
jmp @f
|
||||||
.lp1: mov ebx,eax
|
.lp1: mov ebx,eax
|
||||||
@@: mov [left_col],ebx
|
@@: mov [cur_tab.Editor.TopLeft.X],ebx ;! [left_col],ebx
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
mov [pos.x],eax
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
popad
|
popad
|
||||||
|
|
||||||
ret
|
ret
|
||||||
@ -230,12 +232,12 @@ func get_line_offset ;////////////////////////////////////////////////////////
|
|||||||
; ESI = line data offset
|
; ESI = line data offset
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
push eax ecx
|
push eax ecx
|
||||||
mov esi,AREA_EDIT
|
mov esi,[cur_tab.Editor.Data] ;! AREA_EDIT
|
||||||
jecxz .exit
|
@@: dec ecx
|
||||||
@@: movzx eax,word[esi]
|
js .exit
|
||||||
dec ecx
|
movzx eax,word[esi]
|
||||||
lea esi,[esi+eax+4]
|
lea esi,[esi+eax+4]
|
||||||
jnz @b
|
jmp @b
|
||||||
.exit:
|
.exit:
|
||||||
pop ecx eax
|
pop ecx eax
|
||||||
ret
|
ret
|
||||||
@ -246,10 +248,10 @@ func init_sel_vars ;//////////////////////////////////////////////////////////
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
pushad
|
pushad
|
||||||
mov [sel.selected],1
|
mov [sel.selected],1
|
||||||
mov eax,[sel.x]
|
mov eax,[cur_tab.Editor.SelStart.X] ;! eax,[sel.x]
|
||||||
mov ebx,[sel.y]
|
mov ebx,[cur_tab.Editor.SelStart.Y] ;! ebx,[sel.y]
|
||||||
mov ecx,[pos.x]
|
mov ecx,[cur_tab.Editor.Caret.X] ;! ecx,[pos.x]
|
||||||
mov edx,[pos.y]
|
mov edx,[cur_tab.Editor.Caret.Y] ;! edx,[pos.y]
|
||||||
cmp ebx,edx
|
cmp ebx,edx
|
||||||
jl .lp2
|
jl .lp2
|
||||||
jne @f
|
jne @f
|
||||||
@ -352,6 +354,20 @@ func uint2str ;///////////////////////////////////////////////////////////////
|
|||||||
ret
|
ret
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func strlen ;/////////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ebx
|
||||||
|
mov ebx,eax
|
||||||
|
xor eax,eax
|
||||||
|
@@: cmp byte[ebx+eax],0
|
||||||
|
je @f
|
||||||
|
inc eax
|
||||||
|
jmp @b
|
||||||
|
@@: pop ebx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func rgb_to_gray ;////////////////////////////////////////////////////////////
|
func rgb_to_gray ;////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -492,7 +508,9 @@ func line_add_spaces ;////////////////////////////////////////////////////////
|
|||||||
jbe .exit
|
jbe .exit
|
||||||
sub ecx,edx
|
sub ecx,edx
|
||||||
push ecx
|
push ecx
|
||||||
mov edi,AREA_TEMP2
|
mov edi,[cur_tab.Editor.Data] ;! AREA_TEMP2
|
||||||
|
add edi,[edi-4]
|
||||||
|
dec edi
|
||||||
mov eax,esi
|
mov eax,esi
|
||||||
mov esi,edi
|
mov esi,edi
|
||||||
sub esi,ecx
|
sub esi,ecx
|
||||||
@ -502,6 +520,7 @@ func line_add_spaces ;////////////////////////////////////////////////////////
|
|||||||
neg ecx
|
neg ecx
|
||||||
lea ecx,[esi+ecx+1]
|
lea ecx,[esi+ecx+1]
|
||||||
std
|
std
|
||||||
|
diff16 '32DC',0,$
|
||||||
rep movsb
|
rep movsb
|
||||||
pop edi ecx
|
pop edi ecx
|
||||||
add [eax],cx
|
add [eax],cx
|
||||||
@ -516,6 +535,8 @@ endf
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func delete_selection ;///////////////////////////////////////////////////////
|
func delete_selection ;///////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
; call init_sel_vars
|
||||||
|
|
||||||
cmp [sel.selected],0
|
cmp [sel.selected],0
|
||||||
je .exit.2
|
je .exit.2
|
||||||
|
|
||||||
@ -542,13 +563,14 @@ func delete_selection ;///////////////////////////////////////////////////////
|
|||||||
mov [edi-4],bx
|
mov [edi-4],bx
|
||||||
add edi,[sel.begin.x]
|
add edi,[sel.begin.x]
|
||||||
lea esi,[esi+eax+4]
|
lea esi,[esi+eax+4]
|
||||||
mov ecx,AREA_TEMP2
|
mov ecx,[cur_tab.Editor.Data] ;! AREA_TEMP2
|
||||||
|
add ecx,[ecx-4]
|
||||||
sub ecx,esi
|
sub ecx,esi
|
||||||
cld
|
cld
|
||||||
rep movsb
|
rep movsb
|
||||||
mov eax,[sel.end.y]
|
mov eax,[sel.end.y]
|
||||||
sub eax,[sel.begin.y]
|
sub eax,[sel.begin.y]
|
||||||
sub [lines],eax
|
sub [cur_tab.Editor.Lines],eax ;! [lines],eax
|
||||||
jmp .exit
|
jmp .exit
|
||||||
|
|
||||||
.single_line:
|
.single_line:
|
||||||
@ -567,20 +589,21 @@ func delete_selection ;///////////////////////////////////////////////////////
|
|||||||
lea edi,[esi+4]
|
lea edi,[esi+4]
|
||||||
add edi,[sel.begin.x]
|
add edi,[sel.begin.x]
|
||||||
lea esi,[edi+ecx]
|
lea esi,[edi+ecx]
|
||||||
mov ecx,AREA_TEMP2
|
mov ecx,[cur_tab.Editor.Data] ;! AREA_TEMP2
|
||||||
|
add ecx,[ecx-4]
|
||||||
sub ecx,esi
|
sub ecx,esi
|
||||||
cld
|
cld
|
||||||
rep movsb
|
rep movsb
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
mov eax,[sel.begin.x]
|
mov eax,[sel.begin.x]
|
||||||
mov [pos.x],eax
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
mov [sel.x],eax
|
mov [cur_tab.Editor.SelStart.X],eax ;! [sel.x],eax
|
||||||
mov eax,[sel.begin.y]
|
mov eax,[sel.begin.y]
|
||||||
mov [pos.y],eax
|
mov [cur_tab.Editor.Caret.Y],eax ;! [pos.y],eax
|
||||||
mov [sel.y],eax
|
mov [cur_tab.Editor.SelStart.Y],eax ;! [sel.y],eax
|
||||||
popad
|
popad
|
||||||
mov [modified],1
|
mov [cur_tab.Editor.Modified],1 ;! [modified],1
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -588,3 +611,103 @@ func delete_selection ;///////////////////////////////////////////////////////
|
|||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func get_selection_size ;/////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ecx esi
|
||||||
|
mov ecx,[sel.end.y]
|
||||||
|
inc ecx
|
||||||
|
call get_line_offset
|
||||||
|
mov eax,esi
|
||||||
|
mov ecx,[sel.begin.y]
|
||||||
|
call get_line_offset
|
||||||
|
sub eax,esi
|
||||||
|
pop esi ecx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func get_lines_in_file ;//////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; ESI = data pointer
|
||||||
|
; ECX = data length
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ebx ecx esi
|
||||||
|
or ebx,-1
|
||||||
|
.lp0: inc ebx
|
||||||
|
.lp1: dec ecx
|
||||||
|
jle .lp2
|
||||||
|
lodsb
|
||||||
|
cmp al,10
|
||||||
|
je .LF
|
||||||
|
cmp al,13
|
||||||
|
je .CR
|
||||||
|
jmp .lp1
|
||||||
|
.lp2: mov eax,ebx
|
||||||
|
pop esi ecx ebx
|
||||||
|
ret
|
||||||
|
|
||||||
|
.CR: cmp byte[esi],10
|
||||||
|
jne .lp0
|
||||||
|
lodsb
|
||||||
|
.LF: jmp .lp0
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func mem.Alloc ;//////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ebx ecx
|
||||||
|
lea ecx,[eax+4+4095]
|
||||||
|
and ecx,not 4095
|
||||||
|
mcall 68,12
|
||||||
|
add ecx,-4
|
||||||
|
mov [eax],ecx
|
||||||
|
add eax,4
|
||||||
|
pop ecx ebx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func mem.ReAlloc ;////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ebx ecx esi edi eax
|
||||||
|
or eax,eax
|
||||||
|
jz @f
|
||||||
|
lea ecx,[ebx+4+4095]
|
||||||
|
and ecx,not 4095
|
||||||
|
add ecx,-4
|
||||||
|
cmp ecx,[eax-4]
|
||||||
|
je .exit
|
||||||
|
@@: mov eax,ebx
|
||||||
|
call mem.Alloc
|
||||||
|
xchg eax,[esp]
|
||||||
|
or eax,eax
|
||||||
|
jz .exit
|
||||||
|
mov esi,eax
|
||||||
|
xchg eax,[esp]
|
||||||
|
mov edi,eax
|
||||||
|
mov ecx,[esi-4]
|
||||||
|
cmp ecx,[edi-4]
|
||||||
|
jbe @f
|
||||||
|
mov ecx,[edi-4]
|
||||||
|
@@: add ecx,3
|
||||||
|
shr ecx,2
|
||||||
|
cld
|
||||||
|
rep movsd
|
||||||
|
xchg eax,[esp]
|
||||||
|
call mem.Free
|
||||||
|
.exit:
|
||||||
|
pop eax edi esi ecx ebx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func mem.Free ;///////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ebx ecx
|
||||||
|
lea ecx,[eax-4]
|
||||||
|
mcall 68,13
|
||||||
|
pop ecx ebx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
37
programs/develop/tinypad/trunk/tp-defines.inc
Normal file
37
programs/develop/tinypad/trunk/tp-defines.inc
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
define mm.File.New key.ctrl_n
|
||||||
|
define mm.File.Open key.ctrl_o
|
||||||
|
define mm.File.Save key.ctrl_s
|
||||||
|
define mm.File.SaveAs key.shift_ctrl_s
|
||||||
|
define mm.File.Exit key.alt_x
|
||||||
|
|
||||||
|
define mm.Edit.Cut key.ctrl_x
|
||||||
|
define mm.Edit.Copy key.ctrl_c
|
||||||
|
define mm.Edit.Insert key.ctrl_d
|
||||||
|
define mm.Edit.Delete key.del
|
||||||
|
define mm.Edit.SelAll key.ctrl_a
|
||||||
|
|
||||||
|
define mm.Search.Position key.ctrl_g
|
||||||
|
define mm.Search.Find key.ctrl_f
|
||||||
|
define mm.Search.FindNext key.f3
|
||||||
|
define mm.Search.Replace key.ctrl_h
|
||||||
|
|
||||||
|
define mm.Run.Run key.f9
|
||||||
|
define mm.Run.Compile key.ctrl_f9
|
||||||
|
define mm.Run.DbgBoard open_debug_board
|
||||||
|
define mm.Run.SysFuncs open_sysfuncs_txt
|
||||||
|
|
||||||
|
define mm.Encoding.CP866.CP1251 recode.866.1251
|
||||||
|
define mm.Encoding.CP1251.CP866 recode.1251.866
|
||||||
|
define mm.Encoding.CP866.KOI8R recode.866.koi
|
||||||
|
define mm.Encoding.KOI8R.CP866 recode.koi.866
|
||||||
|
define mm.Encoding.CP1251.KOI8R recode.1251.koi
|
||||||
|
define mm.Encoding.KOI8R.CP1251 recode.koi.1251
|
||||||
|
|
||||||
|
define mm.Options.Appearance 0
|
||||||
|
define mm.Options.SecureSel set_opt.secure_sel
|
||||||
|
define mm.Options.AutoBrackets set_opt.auto_braces
|
||||||
|
define mm.Options.AutoIndents set_opt.auto_indents
|
||||||
|
define mm.Options.SmartTabs 0
|
||||||
|
define mm.Options.OptimalFill set_opt.optimal_fill
|
||||||
|
define mm.Options.LineNumbers set_opt.line_numbers
|
@ -266,7 +266,7 @@ botdlg.button:
|
|||||||
jnc @f
|
jnc @f
|
||||||
.lp2:
|
.lp2:
|
||||||
ret
|
ret
|
||||||
@@: call update_caption
|
@@: ;call update_caption
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [bot_mode],al
|
mov [bot_mode],al
|
||||||
mov [bot_dlg_height],eax
|
mov [bot_dlg_height],eax
|
||||||
@ -290,16 +290,21 @@ botdlg.button:
|
|||||||
|
|
||||||
.found:
|
.found:
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
push [copy_size] [copy_count]
|
push [copy_size] [copy_count] [copy_buf]
|
||||||
|
|
||||||
mov esi,AREA_CBUF
|
; mov esi,0 ;! AREA_CBUF
|
||||||
mov edi,AREA_CBUF-304
|
; mov edi,0 ;! AREA_CBUF-304
|
||||||
mov ecx,300/4
|
; mov ecx,300/4
|
||||||
rep movsd
|
; rep movsd
|
||||||
|
|
||||||
|
movzx eax,[tb_replace.length]
|
||||||
|
add eax,10
|
||||||
|
call mem.Alloc
|
||||||
|
mov [copy_buf],eax
|
||||||
|
|
||||||
movzx eax,[tb_replace.length]
|
movzx eax,[tb_replace.length]
|
||||||
mov esi,tb_replace.text
|
mov esi,tb_replace.text
|
||||||
mov edi,AREA_CBUF
|
mov edi,[copy_buf] ;! AREA_CBUF
|
||||||
stosd
|
stosd
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
jecxz .lp1
|
jecxz .lp1
|
||||||
@ -308,17 +313,20 @@ botdlg.button:
|
|||||||
mov [copy_size],eax
|
mov [copy_size],eax
|
||||||
mov [copy_count],1
|
mov [copy_count],1
|
||||||
|
|
||||||
push [sel.x]
|
push [cur_tab.Editor.SelStart.X] ;! [sel.x]
|
||||||
call init_sel_vars
|
call init_sel_vars
|
||||||
call key.ctrl_v
|
call key.ctrl_v
|
||||||
pop [sel.x]
|
pop [cur_tab.Editor.SelStart.X] ;! [sel.x]
|
||||||
|
|
||||||
mov esi,AREA_CBUF-304
|
mov eax,[copy_buf]
|
||||||
mov edi,AREA_CBUF
|
call mem.Free
|
||||||
mov ecx,300/4
|
|
||||||
rep movsd
|
|
||||||
|
|
||||||
pop [copy_count] [copy_size]
|
; mov esi,0 ;! AREA_CBUF-304
|
||||||
|
; mov edi,0 ;! AREA_CBUF
|
||||||
|
; mov ecx,300/4
|
||||||
|
; rep movsd
|
||||||
|
|
||||||
|
pop [copy_buf] [copy_count] [copy_size]
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
call check_inv_all
|
call check_inv_all
|
||||||
|
@ -10,22 +10,6 @@ func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
|||||||
mcall 48,3,sc,sizeof.system_colors
|
mcall 48,3,sc,sizeof.system_colors
|
||||||
call calc_3d_colors
|
call calc_3d_colors
|
||||||
|
|
||||||
test [options],OPTS_LINENUMS
|
|
||||||
jnz @f
|
|
||||||
mov eax,2+LCHGW
|
|
||||||
jmp .lp1
|
|
||||||
@@: mov edi,p_info+100
|
|
||||||
mov eax,[lines]
|
|
||||||
mov ecx,10
|
|
||||||
call uint2str
|
|
||||||
lea eax,[edi-p_info-100]
|
|
||||||
cmp eax,3
|
|
||||||
jae @f
|
|
||||||
mov eax,3
|
|
||||||
@@: imul eax,6
|
|
||||||
add eax,2+4+LCHGW
|
|
||||||
.lp1: mov [left_ofs],eax
|
|
||||||
|
|
||||||
mcall 12,1
|
mcall 12,1
|
||||||
|
|
||||||
push [color_tbl+4*5]
|
push [color_tbl+4*5]
|
||||||
@ -46,53 +30,75 @@ func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
|||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
|
|
||||||
; mcall 9,p_info,-1
|
; mcall 9,p_info,-1
|
||||||
cmp [p_info.client_box.height],LINEH
|
cmp [p_info.client_box.height],LINEH
|
||||||
jl .exit.2
|
jl .exit.2
|
||||||
|
|
||||||
|
;++ calculate editor bounds ++
|
||||||
|
mov [tab_bar.Bounds.Left],0
|
||||||
|
mov [tab_bar.Bounds.Top],ATOPH
|
||||||
|
mov eax,[p_info.client_box.width]
|
||||||
|
mov [tab_bar.Bounds.Right],eax
|
||||||
|
mov eax,[p_info.client_box.height]
|
||||||
|
sub eax,[bot_dlg_height]
|
||||||
|
add eax,-STATH-1
|
||||||
|
mov [tab_bar.Bounds.Bottom],eax
|
||||||
|
|
||||||
|
call align_editor_in_tab
|
||||||
|
|
||||||
mov [top_ofs],ATOPH;+1
|
mov [top_ofs],ATOPH;+1
|
||||||
|
|
||||||
mov eax,[p_info.client_box.width]
|
mov eax,[cur_tab.Editor.Bounds.Right]
|
||||||
sub eax,SCRLW+1
|
sub eax,[cur_tab.Editor.Bounds.Left]
|
||||||
sub eax,[left_ofs]
|
sub eax,[cur_tab.Editor.Gutter.Width]
|
||||||
|
sub eax,SCRLW+LCHGW+4
|
||||||
cdq
|
cdq
|
||||||
mov ebx,6
|
mov ebx,6
|
||||||
div ebx
|
div ebx
|
||||||
mov [columns.scr],eax
|
mov [columns.scr],eax
|
||||||
|
|
||||||
mov eax,[p_info.client_box.height] ; calculate buttons position
|
mov eax,[cur_tab.Editor.Bounds.Bottom]
|
||||||
add eax,-STATH;*3-2-2
|
sub eax,[cur_tab.Editor.Bounds.Top]
|
||||||
sub eax,[bot_dlg_height]
|
|
||||||
mov [bot_ofs],eax
|
|
||||||
|
|
||||||
call draw_bottom_dialog
|
|
||||||
|
|
||||||
mov [do_not_draw],1 ; do_not_draw = true
|
|
||||||
|
|
||||||
mov ebx,eax
|
|
||||||
sub ebx,[top_ofs]
|
|
||||||
sub ebx,SCRLW*3+AMINS+5
|
|
||||||
js .no_draw
|
|
||||||
|
|
||||||
dec [do_not_draw] ; do_not_draw = false
|
|
||||||
sub eax,SCRLW+3
|
sub eax,SCRLW+3
|
||||||
sub eax,[top_ofs]
|
|
||||||
cdq
|
cdq
|
||||||
mov ebx,LINEH
|
mov ebx,LINEH
|
||||||
div ebx
|
div ebx
|
||||||
mov [lines.scr],eax
|
mov [lines.scr],eax
|
||||||
|
|
||||||
mov ebx,[p_info.client_box.width]
|
mov eax,[p_info.client_box.height]
|
||||||
mov ecx,[top_ofs-2]
|
add eax,-STATH+1;*3-2-2
|
||||||
mov cx,word[top_ofs]
|
sub eax,[bot_dlg_height]
|
||||||
sub ecx,1*65536+1
|
mov [bot_ofs],eax
|
||||||
mcall 38,,,[cl_3d_inset];[sc.work_text]
|
|
||||||
mov ecx,[p_info.client_box.height]
|
call draw_bottom_dialog
|
||||||
sub ecx,STATH+1
|
|
||||||
push cx
|
; mov [do_not_draw],1 ; do_not_draw = true
|
||||||
shl ecx,16
|
|
||||||
pop cx
|
; mov ebx,eax
|
||||||
mcall
|
; sub ebx,[top_ofs]
|
||||||
|
; sub ebx,SCRLW*3+AMINS+5
|
||||||
|
; js .no_draw
|
||||||
|
|
||||||
|
; dec [do_not_draw] ; do_not_draw = false
|
||||||
|
; sub eax,SCRLW+3
|
||||||
|
; sub eax,[top_ofs]
|
||||||
|
; cdq
|
||||||
|
; mov ebx,LINEH
|
||||||
|
; div ebx
|
||||||
|
; mov [lines.scr],eax
|
||||||
|
|
||||||
|
;-- horizontal lines for menubar and statusbar --
|
||||||
|
;mov ebx,[p_info.client_box.width]
|
||||||
|
;mov ecx,[top_ofs-2]
|
||||||
|
;mov cx,word[top_ofs]
|
||||||
|
;sub ecx,1*65536+1
|
||||||
|
;mcall 38,,,[cl_3d_inset];[sc.work_text]
|
||||||
|
;mov ecx,[p_info.client_box.height]
|
||||||
|
;sub ecx,STATH+1
|
||||||
|
;push cx
|
||||||
|
;shl ecx,16
|
||||||
|
;pop cx
|
||||||
|
;mcall
|
||||||
|
|
||||||
inc [top_ofs]
|
inc [top_ofs]
|
||||||
|
|
||||||
@ -134,7 +140,11 @@ func drawwindow ;///// DRAW WINDOW ///////////////////////////////////////////
|
|||||||
@@:
|
@@:
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
call draw_file
|
;-- draw file --
|
||||||
|
;call draw_file
|
||||||
|
;++ draw editor control ++
|
||||||
|
call draw_editor
|
||||||
|
call draw_tabctl
|
||||||
.exit.2:
|
.exit.2:
|
||||||
mcall 12,2
|
mcall 12,2
|
||||||
ret
|
ret
|
||||||
@ -177,6 +187,8 @@ func draw_main_menu ;/////////////////////////////////////////////////////////
|
|||||||
inc ebx
|
inc ebx
|
||||||
mcall 13,,ATOPH-1,[cl_3d_normal]
|
mcall 13,,ATOPH-1,[cl_3d_normal]
|
||||||
|
|
||||||
|
mcall 38,[p_info.client_box.width],<ATOPH-1,ATOPH-1>,[sc.frame];[cl_3d_pushed]
|
||||||
|
|
||||||
mov edx,main_menu
|
mov edx,main_menu
|
||||||
mov ebx,9*65536+ATOPH/2-4
|
mov ebx,9*65536+ATOPH/2-4
|
||||||
mov ecx,[sc.work_text]
|
mov ecx,[sc.work_text]
|
||||||
@ -220,6 +232,9 @@ func draw_file.ex ;///////////////////////////////////////////////////////////
|
|||||||
; EAX = start line
|
; EAX = start line
|
||||||
; EBX = end line
|
; EBX = end line
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
call draw_editor;_text
|
||||||
|
ret
|
||||||
|
macro unused {
|
||||||
cmp [p_info.client_box.height],LINEH
|
cmp [p_info.client_box.height],LINEH
|
||||||
jge @f
|
jge @f
|
||||||
ret
|
ret
|
||||||
@ -235,10 +250,10 @@ func draw_file.ex ;///////////////////////////////////////////////////////////
|
|||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jle @f
|
jle @f
|
||||||
xchg eax,ebx
|
xchg eax,ebx
|
||||||
@@: cmp eax,[top_line]
|
@@: cmp eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
jge @f
|
jge @f
|
||||||
mov eax,[top_line]
|
mov eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
@@: mov ecx,[top_line]
|
@@: mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
add ecx,[lines.scr]
|
add ecx,[lines.scr]
|
||||||
cmp ebx,ecx
|
cmp ebx,ecx
|
||||||
jl @f
|
jl @f
|
||||||
@ -258,19 +273,23 @@ func draw_file.ex ;///////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
mov ebx,[top_ofs]
|
mov ebx,[top_ofs]
|
||||||
add ebx,[left_ofs-2]
|
add ebx,[left_ofs-2]
|
||||||
sub eax,[top_line]
|
sub eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
imul eax,LINEH
|
imul eax,LINEH
|
||||||
add ebx,eax
|
add ebx,eax
|
||||||
|
|
||||||
imul ebp,[left_col],6*65536
|
imul ebp,[cur_tab.Editor.TopLeft.X],6*65536 ;! ebp,[left_col],6*65536
|
||||||
or [draw_blines],-1
|
or [draw_blines],-1
|
||||||
|
|
||||||
jmp draw_file.next_line
|
jmp draw_file.next_line
|
||||||
|
}
|
||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func draw_file ;//////////////////////////////////////////////////////////////
|
func draw_file ;//////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
call draw_editor;_text
|
||||||
|
ret
|
||||||
|
macro unused {
|
||||||
cmp [p_info.client_box.height],LINEH
|
cmp [p_info.client_box.height],LINEH
|
||||||
jge @f
|
jge @f
|
||||||
ret
|
ret
|
||||||
@ -283,7 +302,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov ebx,[top_ofs]
|
mov ebx,[top_ofs]
|
||||||
add ebx,[left_ofs-2]
|
add ebx,[left_ofs-2]
|
||||||
|
|
||||||
mov ecx,[top_line]
|
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
push ecx
|
push ecx
|
||||||
call get_line_offset
|
call get_line_offset
|
||||||
|
|
||||||
@ -294,9 +313,9 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
jle .exit
|
jle .exit
|
||||||
add esp,-4
|
add esp,-4
|
||||||
|
|
||||||
imul ebp,[left_col],6*65536
|
imul ebp,[cur_tab.Editor.TopLeft.X],6*65536 ;! ebp,[left_col],6*65536
|
||||||
mov eax,[lines.scr]
|
mov eax,[lines.scr]
|
||||||
sub eax,[lines]
|
sub eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
mov [draw_blines],eax
|
mov [draw_blines],eax
|
||||||
|
|
||||||
.next_line:
|
.next_line:
|
||||||
@ -327,7 +346,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
cmp eax,[sel.end.y]
|
cmp eax,[sel.end.y]
|
||||||
je .lp5
|
je .lp5
|
||||||
.lp2: mov eax,[sel.begin.x]
|
.lp2: mov eax,[sel.begin.x]
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
jle .lp6.2
|
jle .lp6.2
|
||||||
cmp eax,[columns.scr]
|
cmp eax,[columns.scr]
|
||||||
jge .lp6
|
jge .lp6
|
||||||
@ -350,7 +369,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
cmp eax,[sel.end.y]
|
cmp eax,[sel.end.y]
|
||||||
je .lp5
|
je .lp5
|
||||||
.lp4: mov eax,[sel.end.x]
|
.lp4: mov eax,[sel.end.x]
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
jle .lp6
|
jle .lp6
|
||||||
cmp eax,[columns.scr]
|
cmp eax,[columns.scr]
|
||||||
jg .lp6.2
|
jg .lp6.2
|
||||||
@ -369,7 +388,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov bx,ax
|
mov bx,ax
|
||||||
mov [in_sel],3
|
mov [in_sel],3
|
||||||
jmp .lp6
|
jmp .lp6
|
||||||
.lp5: mov eax,[left_col]
|
.lp5: mov eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
cmp eax,[sel.begin.x]
|
cmp eax,[sel.begin.x]
|
||||||
jge .lp4
|
jge .lp4
|
||||||
add eax,[columns.scr]
|
add eax,[columns.scr]
|
||||||
@ -378,7 +397,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov eax,[sel.begin.x]
|
mov eax,[sel.begin.x]
|
||||||
cmp eax,[sel.end.x]
|
cmp eax,[sel.end.x]
|
||||||
je .lp6
|
je .lp6
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
imul eax,6
|
imul eax,6
|
||||||
pushad
|
pushad
|
||||||
mov ebx,[sel.end.x]
|
mov ebx,[sel.end.x]
|
||||||
@ -452,13 +471,13 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
push esi ebx
|
push esi ebx
|
||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
sub ebx,[left_col]
|
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
cmp ebx,[columns.scr]
|
cmp ebx,[columns.scr]
|
||||||
jge .skip_t
|
jge .skip_t
|
||||||
add ebx,esi
|
add ebx,esi
|
||||||
jle .skip_t
|
jle .skip_t
|
||||||
mov ebx,[esp+8+4*2] ;// 4*2=esi+ebx
|
mov ebx,[esp+8+4*2] ;// 4*2=esi+ebx
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
jge .qqq
|
jge .qqq
|
||||||
sub edx,eax
|
sub edx,eax
|
||||||
add esi,eax
|
add esi,eax
|
||||||
@ -475,7 +494,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
mov eax,[esp] ; ebx
|
mov eax,[esp] ; ebx
|
||||||
add eax,[esp+4] ; esi
|
add eax,[esp+4] ; esi
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
sub eax,[columns.scr]
|
sub eax,[columns.scr]
|
||||||
jle .qweqwe
|
jle .qweqwe
|
||||||
sub esi,eax
|
sub esi,eax
|
||||||
@ -499,7 +518,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
mov esi,[sel.begin.x]
|
mov esi,[sel.begin.x]
|
||||||
sub esi,[esp]
|
sub esi,[esp]
|
||||||
pushad
|
pushad
|
||||||
mov ecx,[left_col]
|
mov ecx,[cur_tab.Editor.TopLeft.X] ;! ecx,[left_col]
|
||||||
sub ecx,[esp+4*8]
|
sub ecx,[esp+4*8]
|
||||||
jle @f
|
jle @f
|
||||||
sub esi,ecx
|
sub esi,ecx
|
||||||
@ -529,7 +548,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
sub eax,[esp]
|
sub eax,[esp]
|
||||||
push ebx
|
push ebx
|
||||||
mov ebx,[esp+4]
|
mov ebx,[esp+4]
|
||||||
sub ebx,[left_col]
|
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
jge .ya2.1
|
jge .ya2.1
|
||||||
add eax,ebx
|
add eax,ebx
|
||||||
.ya2.1:
|
.ya2.1:
|
||||||
@ -561,7 +580,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
sub esi,[esp]
|
sub esi,[esp]
|
||||||
push eax
|
push eax
|
||||||
mov eax,[esp+4]
|
mov eax,[esp+4]
|
||||||
sub eax,[left_col]
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
jge .nt3.1
|
jge .nt3.1
|
||||||
add esi,eax
|
add esi,eax
|
||||||
.nt3.1:
|
.nt3.1:
|
||||||
@ -642,7 +661,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
shl ebx,16
|
shl ebx,16
|
||||||
add ebx,[top_ofs]
|
add ebx,[top_ofs]
|
||||||
mov edi,[sc.work_text]
|
mov edi,[sc.work_text]
|
||||||
mov ecx,[top_line]
|
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
inc ecx
|
inc ecx
|
||||||
mov edx,p_info+100
|
mov edx,p_info+100
|
||||||
@@: pushad
|
@@: pushad
|
||||||
@ -660,10 +679,10 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
popad
|
popad
|
||||||
add ebx,LINEH
|
add ebx,LINEH
|
||||||
inc ecx
|
inc ecx
|
||||||
cmp ecx,[lines]
|
cmp ecx,[cur_tab.Editor.Lines] ;! ecx,[lines]
|
||||||
jg @f
|
jg @f
|
||||||
mov esi,ecx
|
mov esi,ecx
|
||||||
sub esi,[top_line]
|
sub esi,[cur_tab.Editor.TopLeft.Y] ;! esi,[top_line]
|
||||||
cmp esi,[lines.scr]
|
cmp esi,[lines.scr]
|
||||||
jbe @b
|
jbe @b
|
||||||
@@: add esp,4*8*2
|
@@: add esp,4*8*2
|
||||||
@ -688,8 +707,8 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
add esp,4
|
add esp,4
|
||||||
cmp [bot_mode],0
|
cmp [bot_mode],0
|
||||||
jne @f
|
jne @f
|
||||||
mov ebx,[pos.x]
|
mov ebx,[cur_tab.Editor.Caret.X] ;! ebx,[pos.x]
|
||||||
sub ebx,[left_col]
|
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
js @f
|
js @f
|
||||||
cmp ebx,[columns.scr]
|
cmp ebx,[columns.scr]
|
||||||
ja @f
|
ja @f
|
||||||
@ -699,8 +718,8 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
push bx
|
push bx
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
pop bx
|
pop bx
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
sub eax,[top_line]
|
sub eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
js @f
|
js @f
|
||||||
cmp eax,[lines.scr]
|
cmp eax,[lines.scr]
|
||||||
jge @f
|
jge @f
|
||||||
@ -786,15 +805,15 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
; sub ebx,1*65536-2
|
; sub ebx,1*65536-2
|
||||||
|
|
||||||
push ebx
|
push ebx
|
||||||
mov eax,[lines]
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
mov ebx,[lines.scr]
|
mov ebx,[lines.scr]
|
||||||
mov ecx,[top_line]
|
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
mov edx,[bot_ofs]
|
mov edx,[bot_ofs]
|
||||||
sub edx,[top_ofs]
|
sub edx,[top_ofs]
|
||||||
add edx,-SCRLW*3+1
|
add edx,-SCRLW*3+1
|
||||||
call get_scroll_vars
|
call get_scroll_vars
|
||||||
mov [vscrl_top],eax
|
mov [cur_tab.Editor.VScroll.Top],eax ;! [vscrl_top],eax
|
||||||
mov [vscrl_size],ebx
|
mov [cur_tab.Editor.VScroll.Size],ebx ;! [vscrl_size],ebx
|
||||||
pop ebx
|
pop ebx
|
||||||
|
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
@ -810,7 +829,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
; rol ecx,16
|
; rol ecx,16
|
||||||
; movsx eax,cx
|
; movsx eax,cx
|
||||||
; sar ecx,16
|
; sar ecx,16
|
||||||
push ebx ecx SCRLW [vscrl_size]
|
push ebx ecx SCRLW [cur_tab.Editor.VScroll.Size] ;! ebx ecx SCRLW [vscrl_size]
|
||||||
dec dword[esp]
|
dec dword[esp]
|
||||||
call draw_3d_panel
|
call draw_3d_panel
|
||||||
popad
|
popad
|
||||||
@ -819,7 +838,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
inc ebx
|
inc ebx
|
||||||
|
|
||||||
mov ecx,[top_ofs-2]
|
mov ecx,[top_ofs-2]
|
||||||
mov cx,word[vscrl_top]
|
mov cx,word[cur_tab.Editor.VScroll.Top] ;! cx,word[vscrl_top]
|
||||||
add ecx,(SCRLW-1)*65536
|
add ecx,(SCRLW-1)*65536
|
||||||
mov edx,[sc.work];[color_tbl+4*5]
|
mov edx,[sc.work];[color_tbl+4*5]
|
||||||
or cx,cx
|
or cx,cx
|
||||||
@ -827,8 +846,8 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
mcall 13
|
mcall 13
|
||||||
@@:
|
@@:
|
||||||
mov ecx,[top_ofs]
|
mov ecx,[top_ofs]
|
||||||
add ecx,[vscrl_top]
|
add ecx,[cur_tab.Editor.VScroll.Top] ;! ecx,[vscrl_top]
|
||||||
add ecx,[vscrl_size]
|
add ecx,[cur_tab.Editor.VScroll.Size] ;! ecx,[vscrl_size]
|
||||||
add ecx,SCRLW-1
|
add ecx,SCRLW-1
|
||||||
mov di,cx
|
mov di,cx
|
||||||
shl ecx,16
|
shl ecx,16
|
||||||
@ -915,20 +934,20 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
; inc ecx
|
; inc ecx
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
mov ebx,[columns.scr]
|
mov ebx,[columns.scr]
|
||||||
mov ecx,[left_col]
|
mov ecx,[cur_tab.Editor.TopLeft.X] ;! ecx,[left_col]
|
||||||
mov edx,[p_info.client_box.width]
|
mov edx,[p_info.client_box.width]
|
||||||
add edx,-(SCRLW*3)
|
add edx,-(SCRLW*3)
|
||||||
call get_scroll_vars
|
call get_scroll_vars
|
||||||
mov [hscrl_top],eax
|
mov [cur_tab.Editor.HScroll.Top],eax ;! [hscrl_top],eax
|
||||||
mov [hscrl_size],ebx
|
mov [cur_tab.Editor.HScroll.Size],ebx ;! [hscrl_size],ebx
|
||||||
pop ecx
|
pop ecx
|
||||||
|
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
add ebx,1+SCRLW
|
add ebx,1+SCRLW
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
mov bx,word[hscrl_size]
|
mov bx,word[cur_tab.Editor.HScroll.Size] ;! bx,word[hscrl_size]
|
||||||
|
|
||||||
; mcall 13,,,[sc.work_button]
|
; mcall 13,,,[sc.work_button]
|
||||||
;!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!
|
||||||
@ -944,11 +963,11 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
;!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
mov ebx,(1+SCRLW)*65536
|
mov ebx,(1+SCRLW)*65536
|
||||||
mov bx,word[hscrl_top]
|
mov bx,word[cur_tab.Editor.HScroll.Top] ;! bx,word[hscrl_top]
|
||||||
mcall 13,,,[sc.work];[color_tbl+4*5]
|
mcall 13,,,[sc.work];[color_tbl+4*5]
|
||||||
mov ebx,1+SCRLW
|
mov ebx,1+SCRLW
|
||||||
add ebx,[hscrl_top]
|
add ebx,[cur_tab.Editor.HScroll.Top] ;! ebx,[hscrl_top]
|
||||||
add ebx,[hscrl_size]
|
add ebx,[cur_tab.Editor.HScroll.Size] ;! ebx,[hscrl_size]
|
||||||
mov di,bx
|
mov di,bx
|
||||||
shl ebx,16
|
shl ebx,16
|
||||||
mov bx,word[p_info.client_box.width]
|
mov bx,word[p_info.client_box.width]
|
||||||
@ -978,6 +997,7 @@ func draw_file ;//////////////////////////////////////////////////////////////
|
|||||||
.exit:
|
.exit:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
|
}
|
||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -991,7 +1011,7 @@ func get_next_part ;//////////////////////////////////////////////////////////
|
|||||||
; EDX = string
|
; EDX = string
|
||||||
; ESI = length
|
; ESI = length
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [asm_mode],0
|
cmp [cur_tab.Editor.AsmMode],0 ;! [asm_mode],0
|
||||||
je .plain.text
|
je .plain.text
|
||||||
xor ebx,ebx
|
xor ebx,ebx
|
||||||
mov edx,ecx
|
mov edx,ecx
|
||||||
@ -1099,12 +1119,17 @@ func get_next_part ;//////////////////////////////////////////////////////////
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
func draw_statusbar ;///// WRITE POSITION ////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cmp [do_not_draw],1 ; return if drawing is not permitted
|
cmp [do_not_draw],1 ; return if drawing is not permitted
|
||||||
jae .exit
|
jae .exit
|
||||||
pusha
|
pusha
|
||||||
|
|
||||||
|
mov ecx,[p_info.client_box.height-2]
|
||||||
|
mov cx,word[p_info.client_box.height]
|
||||||
|
sub ecx,STATH*65536+STATH
|
||||||
|
mcall 38,[p_info.client_box.width],,[sc.frame];[cl_3d_pushed]
|
||||||
|
|
||||||
; mcall 9,p_info,-1
|
; mcall 9,p_info,-1
|
||||||
|
|
||||||
mov ecx,[p_info.client_box.height-2]
|
mov ecx,[p_info.client_box.height-2]
|
||||||
@ -1116,9 +1141,10 @@ func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
|||||||
mcall 38,<6*13,6*13>,,[cl_3d_inset]
|
mcall 38,<6*13,6*13>,,[cl_3d_inset]
|
||||||
|
|
||||||
pushad
|
pushad
|
||||||
|
add ecx,1*65536
|
||||||
; sub ebx,(6*13+1)*65536-1
|
; sub ebx,(6*13+1)*65536-1
|
||||||
; sub ebx,[left_ofs]
|
; sub ebx,[left_ofs]
|
||||||
mov cx,STATH+1
|
mov cx,STATH
|
||||||
mcall 13,<0,6*13>,,[cl_3d_normal]
|
mcall 13,<0,6*13>,,[cl_3d_normal]
|
||||||
mcall ,<6*13+1,6*(s_modified.size+2)-1>
|
mcall ,<6*13+1,6*(s_modified.size+2)-1>
|
||||||
mov ebx,(6*(s_modified.size+15)+1)*65536
|
mov ebx,(6*(s_modified.size+15)+1)*65536
|
||||||
@ -1133,7 +1159,7 @@ func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
|||||||
and ecx,0x0000FFFF
|
and ecx,0x0000FFFF
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
inc eax
|
inc eax
|
||||||
mov ecx,10
|
mov ecx,10
|
||||||
mov edi,p_info+0x100;htext2.pos1
|
mov edi,p_info+0x100;htext2.pos1
|
||||||
@ -1141,7 +1167,7 @@ func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
|||||||
call uint2str
|
call uint2str
|
||||||
mov al,','
|
mov al,','
|
||||||
stosb
|
stosb
|
||||||
mov eax,[pos.x]
|
mov eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
|
||||||
inc eax
|
inc eax
|
||||||
call uint2str
|
call uint2str
|
||||||
|
|
||||||
@ -1156,7 +1182,7 @@ func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
|||||||
sub ebx,edi
|
sub ebx,edi
|
||||||
mcall 4,,[sc.work_text],p_info+0x100
|
mcall 4,,[sc.work_text],p_info+0x100
|
||||||
|
|
||||||
cmp [modified],0
|
cmp [cur_tab.Editor.Modified],0 ;! [modified],0
|
||||||
je @f
|
je @f
|
||||||
and ebx,0x0000FFFF
|
and ebx,0x0000FFFF
|
||||||
; add ebx,[left_ofs-2]
|
; add ebx,[left_ofs-2]
|
||||||
@ -1176,58 +1202,17 @@ func writepos ;///// WRITE POSITION //////////////////////////////////////////
|
|||||||
ret
|
ret
|
||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
func draw_framerect ; ebx,ecx,edx
|
||||||
func print_text ;/////////////////////////////////////////////////////////////
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
pusha
|
|
||||||
; mov ebx,(LBTNW+5+2)*65536
|
|
||||||
mov bx,word[p_info.box.width]
|
|
||||||
; sub bx,LBTNW+RBTNW+10+3
|
|
||||||
mov ecx,[ya-2]
|
|
||||||
; mov cx,ABTNH+1
|
|
||||||
mcall 13,,,[sc.work]
|
|
||||||
; mov ebx,(LBTNW+5+2+4)*65536+ABTNH/2-3
|
|
||||||
add ebx,[ya]
|
|
||||||
mov eax,[p_info.box.width]
|
|
||||||
; sub eax,LBTNW+RBTNW+10+8
|
|
||||||
push eax
|
|
||||||
cdq
|
|
||||||
mov ecx,6
|
|
||||||
div ecx
|
|
||||||
cmp eax,PATHL
|
|
||||||
jbe @f
|
|
||||||
mov eax,PATHL
|
|
||||||
@@: mov esi,eax
|
|
||||||
mcall 4,,[color_tbl+0],[addr]
|
|
||||||
|
|
||||||
mov eax,[ya]
|
|
||||||
mov ebx,eax
|
|
||||||
; add eax,ABTNH/2-6
|
|
||||||
shl eax,16
|
|
||||||
add eax,ebx
|
|
||||||
; add eax,ABTNH/2-6+11
|
|
||||||
mov ecx,eax
|
|
||||||
imul eax,[temp],6
|
|
||||||
pop ebx
|
|
||||||
cmp eax,ebx
|
|
||||||
jae @f
|
|
||||||
; add eax,LBTNW+5+2+4
|
|
||||||
mov ebx,eax
|
|
||||||
shl eax,16
|
|
||||||
add ebx,eax
|
|
||||||
mcall 38,,,[color_tbl+0]
|
|
||||||
|
|
||||||
@@: popa
|
|
||||||
ret
|
|
||||||
endf
|
|
||||||
|
|
||||||
func draw_framerect ; ebx,ecx
|
|
||||||
push ebx ecx
|
push ebx ecx
|
||||||
|
; x1 = esp+6
|
||||||
|
; x2 = esp+4 (width)
|
||||||
|
; y1 = esp+2
|
||||||
|
; y2 = esp+0 (height)
|
||||||
|
|
||||||
add bx,[esp+6]
|
add bx,[esp+6]
|
||||||
mov cx,[esp+2]
|
mov cx,[esp+2]
|
||||||
dec ebx
|
dec ebx
|
||||||
mcall 38,,,[cl_3d_inset]
|
mcall 38
|
||||||
add cx,[esp]
|
add cx,[esp]
|
||||||
rol ecx,16
|
rol ecx,16
|
||||||
add cx,[esp]
|
add cx,[esp]
|
||||||
@ -1246,6 +1231,6 @@ func draw_framerect ; ebx,ecx
|
|||||||
sub ebx,0x00010001
|
sub ebx,0x00010001
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
add esp,8
|
pop ecx ebx
|
||||||
ret
|
ret
|
||||||
endf
|
endf
|
757
programs/develop/tinypad/trunk/tp-editor.asm
Normal file
757
programs/develop/tinypad/trunk/tp-editor.asm
Normal file
@ -0,0 +1,757 @@
|
|||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor ;////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
sub bx,word[cur_tab.Editor.Bounds.Left]
|
||||||
|
inc ebx
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub cx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
inc ecx
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
@^
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Bottom-2]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
mcall
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Left]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
mcall
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Right-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
mcall
|
||||||
|
^@
|
||||||
|
mov [cur_tab.Editor.Gutter.Visible],0
|
||||||
|
test [options],OPTS_LINENUMS
|
||||||
|
jnz @f
|
||||||
|
xor eax,eax ;! mov eax,2+LCHGW
|
||||||
|
jmp .lp1
|
||||||
|
@@: inc [cur_tab.Editor.Gutter.Visible]
|
||||||
|
mov edi,p_info+100
|
||||||
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
|
mov ecx,10
|
||||||
|
call uint2str
|
||||||
|
lea eax,[edi-p_info-100]
|
||||||
|
cmp eax,3
|
||||||
|
jae @f
|
||||||
|
mov eax,3
|
||||||
|
@@: imul eax,6
|
||||||
|
add eax,8
|
||||||
|
.lp1: mov [cur_tab.Editor.Gutter.Width],eax ;! [left_ofs],eax
|
||||||
|
mov [left_ofs],eax
|
||||||
|
|
||||||
|
call draw_editor_gutter
|
||||||
|
call draw_editor_vscroll
|
||||||
|
call draw_editor_hscroll
|
||||||
|
call draw_editor_text
|
||||||
|
call draw_editor_caret
|
||||||
|
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor_gutter ;/////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
cmp [cur_tab.Editor.Gutter.Visible],0
|
||||||
|
je .exit
|
||||||
|
|
||||||
|
add esp,-4*8*2
|
||||||
|
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Gutter.Width]
|
||||||
|
add ebx,0x00010000
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub cx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
add cx,-SCRLW
|
||||||
|
add ecx,0x00010000
|
||||||
|
dec cx
|
||||||
|
mcall 13,,,[cl_3d_normal]
|
||||||
|
|
||||||
|
add bx,word[cur_tab.Editor.Bounds.Left]
|
||||||
|
push bx
|
||||||
|
shl ebx,16
|
||||||
|
pop bx
|
||||||
|
add ecx,[cur_tab.Editor.Bounds.Top]
|
||||||
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
|
||||||
|
add ebx,-2*65536
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Top]
|
||||||
|
add bx,3
|
||||||
|
mov edi,[sc.work_text]
|
||||||
|
mov ecx,[cur_tab.Editor.TopLeft.Y]
|
||||||
|
inc ecx
|
||||||
|
mov edx,p_info+100
|
||||||
|
@@: pushad
|
||||||
|
push eax edx edi
|
||||||
|
mov eax,ecx
|
||||||
|
mov ecx,10
|
||||||
|
mov edi,edx
|
||||||
|
call uint2str
|
||||||
|
mov esi,edi
|
||||||
|
pop edi edx eax
|
||||||
|
sub esi,edx
|
||||||
|
imul eax,esi,6*65536
|
||||||
|
sub ebx,eax
|
||||||
|
mcall 4,,edi
|
||||||
|
popad
|
||||||
|
add ebx,LINEH
|
||||||
|
inc ecx
|
||||||
|
cmp ecx,[cur_tab.Editor.Lines]
|
||||||
|
jg @f
|
||||||
|
mov esi,ecx
|
||||||
|
sub esi,[cur_tab.Editor.TopLeft.Y]
|
||||||
|
cmp esi,[lines.scr]
|
||||||
|
jbe @b
|
||||||
|
@@: add esp,4*8*2
|
||||||
|
|
||||||
|
.exit:
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor_vscroll ;////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Right]
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,(-SCRLW)*65536+SCRLW
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,SCRLW
|
||||||
|
mcall 8,,,'UP' or 0x40000000
|
||||||
|
pushad
|
||||||
|
sar ebx,16
|
||||||
|
sar ecx,16
|
||||||
|
push ebx ecx SCRLW SCRLW
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
mov eax,8
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
pushad
|
||||||
|
push 0x18
|
||||||
|
shr ecx,16
|
||||||
|
mov bx,cx
|
||||||
|
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3
|
||||||
|
mcall 4,,[sc.work_text],esp,1
|
||||||
|
add esp,4
|
||||||
|
popad
|
||||||
|
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,(-SCRLW*2)*65536+SCRLW
|
||||||
|
mcall ,,,'DN' or 0x40000000
|
||||||
|
pushad
|
||||||
|
sar ebx,16
|
||||||
|
sar ecx,16
|
||||||
|
push ebx ecx SCRLW SCRLW
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
mov eax,8
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
pushad
|
||||||
|
push 0x19
|
||||||
|
shr ecx,16
|
||||||
|
mov bx,cx
|
||||||
|
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3
|
||||||
|
mcall 4,,[sc.work_text],esp,1
|
||||||
|
add esp,4
|
||||||
|
popad
|
||||||
|
|
||||||
|
push ebx
|
||||||
|
mov eax,[cur_tab.Editor.Lines]
|
||||||
|
mov ebx,[lines.scr]
|
||||||
|
mov ecx,[cur_tab.Editor.TopLeft.Y]
|
||||||
|
mov edx,[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub edx,[cur_tab.Editor.Bounds.Top]
|
||||||
|
add edx,-SCRLW*3+1
|
||||||
|
call get_scroll_vars
|
||||||
|
mov [cur_tab.Editor.VScroll.Top],eax
|
||||||
|
mov [cur_tab.Editor.VScroll.Size],ebx
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
mov ecx,eax
|
||||||
|
add ecx,[cur_tab.Editor.Bounds.Top]
|
||||||
|
add ecx,SCRLW+1
|
||||||
|
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
pushad
|
||||||
|
sar ebx,16
|
||||||
|
push ebx ecx SCRLW [cur_tab.Editor.VScroll.Size]
|
||||||
|
dec dword[esp]
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
mov eax,13
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
add ebx,1*65536-1
|
||||||
|
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,word[cur_tab.Editor.VScroll.Top]
|
||||||
|
add ecx,(SCRLW+1)*65536
|
||||||
|
mov edx,[sc.work]
|
||||||
|
or cx,cx
|
||||||
|
jle @f
|
||||||
|
mcall 13
|
||||||
|
@@:
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top]
|
||||||
|
add ecx,[cur_tab.Editor.VScroll.Top]
|
||||||
|
add ecx,[cur_tab.Editor.VScroll.Size]
|
||||||
|
add ecx,SCRLW+1
|
||||||
|
mov di,cx
|
||||||
|
shl ecx,16
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub cx,di
|
||||||
|
sub cx,SCRLW*2;+1
|
||||||
|
jle @f
|
||||||
|
mcall
|
||||||
|
@@:
|
||||||
|
rol ebx,16
|
||||||
|
dec bx
|
||||||
|
push bx
|
||||||
|
rol ebx,16
|
||||||
|
pop bx
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Top-2]
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
add ecx,(SCRLW)*65536-SCRLW*2-1
|
||||||
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor_hscroll ;////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,SCRLW
|
||||||
|
mov ecx,[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,(-SCRLW)*65536+SCRLW
|
||||||
|
mcall 8,,,'LT' or 0x40000000
|
||||||
|
pushad
|
||||||
|
sar ebx,16
|
||||||
|
sar ecx,16
|
||||||
|
push ebx ecx SCRLW SCRLW
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
pushad
|
||||||
|
push 0x1B
|
||||||
|
shr ecx,16
|
||||||
|
mov bx,cx
|
||||||
|
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3
|
||||||
|
mcall 4,,[sc.work_text],esp,1
|
||||||
|
add esp,4
|
||||||
|
popad
|
||||||
|
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Right]
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,(-SCRLW*2)*65536+SCRLW
|
||||||
|
mcall 8,,,'RT' or 0x40000000
|
||||||
|
pushad
|
||||||
|
sar ebx,16
|
||||||
|
sar ecx,16
|
||||||
|
push ebx ecx SCRLW SCRLW
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
pushad
|
||||||
|
push 0x1A
|
||||||
|
shr ecx,16
|
||||||
|
mov bx,cx
|
||||||
|
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3
|
||||||
|
mcall 4,,[sc.work_text],esp,1
|
||||||
|
add esp,4
|
||||||
|
popad
|
||||||
|
|
||||||
|
push ecx
|
||||||
|
mov eax,[cur_tab.Editor.Columns]
|
||||||
|
mov ebx,[columns.scr]
|
||||||
|
mov ecx,[cur_tab.Editor.TopLeft.X]
|
||||||
|
mov edx,[cur_tab.Editor.Bounds.Right]
|
||||||
|
add edx,-(SCRLW*3)
|
||||||
|
call get_scroll_vars
|
||||||
|
mov [cur_tab.Editor.HScroll.Top],eax
|
||||||
|
mov [cur_tab.Editor.HScroll.Size],ebx
|
||||||
|
pop ecx
|
||||||
|
|
||||||
|
mov ebx,eax
|
||||||
|
add ebx,[cur_tab.Editor.Bounds.Left]
|
||||||
|
add ebx,SCRLW+1
|
||||||
|
shl ebx,16
|
||||||
|
mov bx,word[cur_tab.Editor.HScroll.Size]
|
||||||
|
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
pushad
|
||||||
|
sar ecx,16
|
||||||
|
rol ebx,16
|
||||||
|
movsx eax,bx
|
||||||
|
sar ebx,16
|
||||||
|
dec ebx
|
||||||
|
push eax ecx ebx SCRLW
|
||||||
|
call draw_3d_panel
|
||||||
|
popad
|
||||||
|
;!!!!!!!!!!!!!!!!!!
|
||||||
|
add ecx,1*65536-1
|
||||||
|
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Left]
|
||||||
|
mov bx,word[cur_tab.Editor.HScroll.Top]
|
||||||
|
add ebx,(1+SCRLW)*65536
|
||||||
|
mcall 13,,,[sc.work]
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left]
|
||||||
|
add ebx,1+SCRLW
|
||||||
|
add ebx,[cur_tab.Editor.HScroll.Top]
|
||||||
|
add ebx,[cur_tab.Editor.HScroll.Size]
|
||||||
|
mov di,bx
|
||||||
|
shl ebx,16
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
sub bx,di
|
||||||
|
sub bx,SCRLW*2
|
||||||
|
jle @f
|
||||||
|
mcall
|
||||||
|
@@:
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Left-2]
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
add ebx,(SCRLW)*65536-SCRLW*2-1
|
||||||
|
rol ecx,16
|
||||||
|
dec cx
|
||||||
|
push cx
|
||||||
|
rol ecx,16
|
||||||
|
pop cx
|
||||||
|
mcall 38,,,[cl_3d_inset]
|
||||||
|
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor_text ;///////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
mov eax,[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub eax,[cur_tab.Editor.Bounds.Top]
|
||||||
|
cmp eax,LINEH
|
||||||
|
jge @f
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
call init_sel_vars
|
||||||
|
call check_bottom_right
|
||||||
|
|
||||||
|
pushad
|
||||||
|
|
||||||
|
mov eax,[cur_tab.Editor.Bounds.Left]
|
||||||
|
add eax,[cur_tab.Editor.Gutter.Width]
|
||||||
|
add eax,LCHGW+3
|
||||||
|
mov [left_ofs],eax
|
||||||
|
mov eax,[cur_tab.Editor.Bounds.Top]
|
||||||
|
add eax,3
|
||||||
|
mov [top_ofs],eax
|
||||||
|
|
||||||
|
mov ebx,[top_ofs]
|
||||||
|
add ebx,[left_ofs-2]
|
||||||
|
|
||||||
|
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
|
||||||
|
push ecx
|
||||||
|
call get_line_offset
|
||||||
|
|
||||||
|
.start:
|
||||||
|
add esp,4
|
||||||
|
mov ecx,[lines.scr]
|
||||||
|
or ecx,ecx
|
||||||
|
jle .exit
|
||||||
|
add esp,-4
|
||||||
|
|
||||||
|
imul ebp,[cur_tab.Editor.TopLeft.X],6*65536 ;! ebp,[left_col],6*65536
|
||||||
|
mov eax,[lines.scr]
|
||||||
|
sub eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
|
mov [draw_blines],eax
|
||||||
|
|
||||||
|
.next_line:
|
||||||
|
|
||||||
|
push ecx ebx
|
||||||
|
|
||||||
|
mov ecx,ebx
|
||||||
|
shl ecx,16
|
||||||
|
mov cl,LINEH
|
||||||
|
mov ebx,[cur_tab.Editor.Bounds.Right]
|
||||||
|
;sub ebx,[cur_tab.Editor.Bounds.Left]
|
||||||
|
add ebx,-SCRLW
|
||||||
|
add ebx,[left_ofs-2]
|
||||||
|
sub ebx,[left_ofs]
|
||||||
|
add ebx,-2*65536+2
|
||||||
|
|
||||||
|
; selection (text background)
|
||||||
|
mov [in_sel],0
|
||||||
|
mov edx,[color_tbl+4*5]
|
||||||
|
mov eax,[esp+4*2]
|
||||||
|
cmp eax,[sel.begin.y]
|
||||||
|
jl .lp6
|
||||||
|
je .lp1
|
||||||
|
cmp eax,[sel.end.y]
|
||||||
|
jg .lp6
|
||||||
|
je .lp3
|
||||||
|
jmp .lp6.2
|
||||||
|
.lp1: mov eax,[sel.begin.y]
|
||||||
|
cmp eax,[sel.end.y]
|
||||||
|
je .lp5
|
||||||
|
.lp2: mov eax,[sel.begin.x]
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
jle .lp6.2
|
||||||
|
cmp eax,[columns.scr]
|
||||||
|
jge .lp6
|
||||||
|
imul eax,6
|
||||||
|
pushad
|
||||||
|
sub bx,ax
|
||||||
|
rol ebx,16
|
||||||
|
mov bx,ax
|
||||||
|
add ebx,[left_ofs]
|
||||||
|
add ebx,-2
|
||||||
|
rol ebx,16
|
||||||
|
mov edx,[color_tbl+4*7]
|
||||||
|
mcall 13
|
||||||
|
popad
|
||||||
|
mov bx,ax
|
||||||
|
mov [in_sel],2
|
||||||
|
jmp .lp6
|
||||||
|
.lp3: mov eax,[sel.begin.y]
|
||||||
|
cmp eax,[sel.end.y]
|
||||||
|
je .lp5
|
||||||
|
.lp4: mov eax,[sel.end.x]
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
jle .lp6
|
||||||
|
cmp eax,[columns.scr]
|
||||||
|
jg .lp6.2
|
||||||
|
imul eax,6
|
||||||
|
pushad
|
||||||
|
sub bx,ax
|
||||||
|
rol ebx,16
|
||||||
|
add eax,[left_ofs];OLEFT-1
|
||||||
|
add eax,-2
|
||||||
|
mov bx,ax
|
||||||
|
rol ebx,16
|
||||||
|
mcall 13
|
||||||
|
popad
|
||||||
|
inc eax
|
||||||
|
mov edx,[color_tbl+4*7]
|
||||||
|
mov bx,ax
|
||||||
|
mov [in_sel],3
|
||||||
|
jmp .lp6
|
||||||
|
.lp5: mov eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
cmp eax,[sel.begin.x]
|
||||||
|
jge .lp4
|
||||||
|
add eax,[columns.scr]
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jl .lp2
|
||||||
|
mov eax,[sel.begin.x]
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
je .lp6
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
imul eax,6
|
||||||
|
pushad
|
||||||
|
mov ebx,[sel.end.x]
|
||||||
|
sub ebx,[sel.begin.x]
|
||||||
|
imul ebx,6
|
||||||
|
sal ebx,16
|
||||||
|
dec eax
|
||||||
|
add eax,[left_ofs]
|
||||||
|
mov bx,ax
|
||||||
|
rol ebx,16
|
||||||
|
mov edx,[color_tbl+4*7]
|
||||||
|
mcall 13
|
||||||
|
movzx eax,bx
|
||||||
|
sar ebx,16
|
||||||
|
add eax,ebx
|
||||||
|
mov ebx,eax
|
||||||
|
sal ebx,16
|
||||||
|
sub ax,[esp+4*4]
|
||||||
|
neg ax
|
||||||
|
add ax,word[left_ofs]
|
||||||
|
add ax,-2
|
||||||
|
mov bx,ax
|
||||||
|
mov edx,[color_tbl+4*5]
|
||||||
|
mcall 13
|
||||||
|
popad
|
||||||
|
mov bx,ax
|
||||||
|
mov [in_sel],4
|
||||||
|
jmp .lp6
|
||||||
|
|
||||||
|
.lp6.2:
|
||||||
|
mov edx,[color_tbl+4*7]
|
||||||
|
inc [in_sel]
|
||||||
|
.lp6:
|
||||||
|
mcall 13
|
||||||
|
|
||||||
|
lodsd
|
||||||
|
|
||||||
|
pushad
|
||||||
|
mov edx,[color_tbl+4*5]
|
||||||
|
test eax,0x00010000
|
||||||
|
jz @f
|
||||||
|
mov edx,[color_tbl+4*8]
|
||||||
|
test eax,0x00020000
|
||||||
|
jz @f
|
||||||
|
mov edx,[color_tbl+4*9]
|
||||||
|
@@: mov ebx,[left_ofs]
|
||||||
|
add ebx,-LCHGW-2;-4
|
||||||
|
shl ebx,16
|
||||||
|
mov bx,LCHGW
|
||||||
|
mcall 13
|
||||||
|
popad
|
||||||
|
|
||||||
|
xor ecx,ecx
|
||||||
|
and eax,0x0000FFFF
|
||||||
|
mov [cur_line_len],eax
|
||||||
|
|
||||||
|
or eax,eax
|
||||||
|
ja .next_block
|
||||||
|
add esp,4*2
|
||||||
|
jmp .exit ; .draw_cursor
|
||||||
|
|
||||||
|
.next_block:
|
||||||
|
|
||||||
|
push esi ecx
|
||||||
|
call get_next_part
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
push ecx
|
||||||
|
mov ecx,eax
|
||||||
|
|
||||||
|
push esi ebx
|
||||||
|
mov eax,ebx
|
||||||
|
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
|
cmp ebx,[columns.scr]
|
||||||
|
jge .skip_t
|
||||||
|
add ebx,esi
|
||||||
|
jle .skip_t
|
||||||
|
mov ebx,[esp+8+4*2] ;// 4*2=esi+ebx
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
jge .qqq
|
||||||
|
sub edx,eax
|
||||||
|
add esi,eax
|
||||||
|
; mov eax,OLEFT*65536
|
||||||
|
xor eax,eax
|
||||||
|
jmp .qqq2
|
||||||
|
.qqq:
|
||||||
|
; inc eax
|
||||||
|
imul eax,6*65536
|
||||||
|
.qqq2:
|
||||||
|
and ebx,0x0000FFFF
|
||||||
|
add eax,[left_ofs-2];OLEFT*65536
|
||||||
|
add ebx,eax
|
||||||
|
|
||||||
|
mov eax,[esp] ; ebx
|
||||||
|
add eax,[esp+4] ; esi
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
sub eax,[columns.scr]
|
||||||
|
jle .qweqwe
|
||||||
|
sub esi,eax
|
||||||
|
.qweqwe:
|
||||||
|
|
||||||
|
mov al,[in_sel]
|
||||||
|
cmp al,0
|
||||||
|
je .draw_t
|
||||||
|
dec al
|
||||||
|
jz .ya4
|
||||||
|
.nt1: dec al
|
||||||
|
jnz .nt2
|
||||||
|
mov eax,[esp]
|
||||||
|
cmp eax,[sel.begin.x]
|
||||||
|
jge .ya4
|
||||||
|
add eax,[esp+4]
|
||||||
|
cmp eax,[sel.begin.x]
|
||||||
|
jl .draw_t
|
||||||
|
;---[ selection crosses block from the right ]-(-
|
||||||
|
.ya1: mov eax,esi
|
||||||
|
mov esi,[sel.begin.x]
|
||||||
|
sub esi,[esp]
|
||||||
|
pushad
|
||||||
|
mov ecx,[cur_tab.Editor.TopLeft.X] ;! ecx,[left_col]
|
||||||
|
sub ecx,[esp+4*8]
|
||||||
|
jle @f
|
||||||
|
sub esi,ecx
|
||||||
|
sub [esp+4],ecx
|
||||||
|
@@: sub eax,esi
|
||||||
|
add edx,esi
|
||||||
|
imul esi,6
|
||||||
|
rol ebx,16
|
||||||
|
add bx,si
|
||||||
|
rol ebx,16
|
||||||
|
mov esi,eax
|
||||||
|
mov ecx,[color_tbl+4*6]
|
||||||
|
mcall 4
|
||||||
|
popad
|
||||||
|
jmp .draw_t
|
||||||
|
;----------------------------------------------)-
|
||||||
|
.nt2: dec al
|
||||||
|
jnz .nt3
|
||||||
|
mov eax,[esp]
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jge .draw_t
|
||||||
|
add eax,[esp+4]
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jl .ya4
|
||||||
|
;---[ selection crosses block from the left ]--(-
|
||||||
|
.ya2: mov eax,[sel.end.x]
|
||||||
|
sub eax,[esp]
|
||||||
|
push ebx
|
||||||
|
mov ebx,[esp+4]
|
||||||
|
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
|
||||||
|
jge .ya2.1
|
||||||
|
add eax,ebx
|
||||||
|
.ya2.1:
|
||||||
|
pop ebx
|
||||||
|
pushad
|
||||||
|
mov esi,eax
|
||||||
|
mov ecx,[color_tbl+4*6]
|
||||||
|
mcall 4
|
||||||
|
popad
|
||||||
|
sub esi,eax
|
||||||
|
add edx,eax
|
||||||
|
imul eax,6*65536
|
||||||
|
add ebx,eax
|
||||||
|
jmp .draw_t
|
||||||
|
;----------------------------------------------)-
|
||||||
|
.nt3: mov eax,[esp]
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jge .draw_t
|
||||||
|
cmp eax,[sel.begin.x]
|
||||||
|
jge @f
|
||||||
|
add eax,[esp+4]
|
||||||
|
cmp eax,[sel.begin.x]
|
||||||
|
jl .draw_t
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jl .ya1
|
||||||
|
;---[ selection inside block ]-----------------(-
|
||||||
|
mov eax,esi
|
||||||
|
mov esi,[sel.begin.x]
|
||||||
|
sub esi,[esp]
|
||||||
|
push eax
|
||||||
|
mov eax,[esp+4]
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
jge .nt3.1
|
||||||
|
add esi,eax
|
||||||
|
.nt3.1:
|
||||||
|
pop eax
|
||||||
|
sub eax,esi
|
||||||
|
pushad
|
||||||
|
add edx,esi
|
||||||
|
imul esi,6*65536
|
||||||
|
add ebx,esi
|
||||||
|
mov esi,[sel.end.x]
|
||||||
|
sub esi,[sel.begin.x]
|
||||||
|
mov ecx,[color_tbl+4*6]
|
||||||
|
sub eax,esi
|
||||||
|
push eax
|
||||||
|
mcall 4
|
||||||
|
add edx,esi
|
||||||
|
imul esi,6*65536
|
||||||
|
add ebx,esi
|
||||||
|
pop esi
|
||||||
|
mov ecx,[esp+4*6]
|
||||||
|
mcall 4
|
||||||
|
popad
|
||||||
|
jmp .draw_t
|
||||||
|
;----------------------------------------------)-
|
||||||
|
@@: add eax,esi
|
||||||
|
dec eax
|
||||||
|
cmp eax,[sel.end.x]
|
||||||
|
jge .ya2
|
||||||
|
;---[ block inside selection ]-----------------(-
|
||||||
|
.ya4: mov ecx,[color_tbl+4*6]
|
||||||
|
;----------------------------------------------)-
|
||||||
|
|
||||||
|
.draw_t:
|
||||||
|
mcall 4;[esp+8]
|
||||||
|
.skip_t:
|
||||||
|
pop eax eax ; ebx esi
|
||||||
|
imul eax,6
|
||||||
|
add [esp+4*2+2],ax
|
||||||
|
pop ecx esi
|
||||||
|
cmp ecx,[cur_line_len];LINE_WIDTH
|
||||||
|
jl .next_block
|
||||||
|
|
||||||
|
pop ebx ecx
|
||||||
|
and ebx,0x0000FFFF
|
||||||
|
add ebx,[left_ofs-2]
|
||||||
|
add ebx,LINEH
|
||||||
|
add esi,[cur_line_len];LINE_WIDTH
|
||||||
|
inc dword[esp]
|
||||||
|
dec ecx
|
||||||
|
jg .next_line
|
||||||
|
|
||||||
|
.exit:
|
||||||
|
|
||||||
|
cmp [draw_blines],0
|
||||||
|
jl @f
|
||||||
|
mov ecx,[esp-8]
|
||||||
|
shl ecx,16
|
||||||
|
mov cx,word[cur_tab.Editor.Bounds.Bottom]
|
||||||
|
sub cx,[esp-8]
|
||||||
|
add cx,-SCRLW
|
||||||
|
mov eax,[cur_tab.Editor.Bounds.Left]
|
||||||
|
add eax,[cur_tab.Editor.Gutter.Width]
|
||||||
|
inc eax
|
||||||
|
mov ebx,eax
|
||||||
|
shl ebx,16
|
||||||
|
mov bx,word[cur_tab.Editor.Bounds.Right]
|
||||||
|
sub bx,ax
|
||||||
|
add ebx,-SCRLW
|
||||||
|
mcall 13,,,[color_tbl+4*5]
|
||||||
|
@@:
|
||||||
|
|
||||||
|
popad
|
||||||
|
add esp,4
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_editor_caret ;//////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
cmp [bot_mode],0
|
||||||
|
jne @f
|
||||||
|
mov ebx,[cur_tab.Editor.Caret.X]
|
||||||
|
sub ebx,[cur_tab.Editor.TopLeft.X]
|
||||||
|
js @f
|
||||||
|
cmp ebx,[columns.scr]
|
||||||
|
ja @f
|
||||||
|
imul ebx,6
|
||||||
|
add ebx,[left_ofs]
|
||||||
|
dec ebx
|
||||||
|
push bx
|
||||||
|
shl ebx,16
|
||||||
|
pop bx
|
||||||
|
mov eax,[cur_tab.Editor.Caret.Y]
|
||||||
|
sub eax,[cur_tab.Editor.TopLeft.Y]
|
||||||
|
js @f
|
||||||
|
cmp eax,[lines.scr]
|
||||||
|
jge @f
|
||||||
|
imul eax,LINEH
|
||||||
|
add eax,[top_ofs]
|
||||||
|
mov esi,eax
|
||||||
|
shl esi,16
|
||||||
|
add eax,LINEH-2
|
||||||
|
mov si,ax
|
||||||
|
mov ecx,2
|
||||||
|
cmp [ins_mode],0
|
||||||
|
jne .lp8
|
||||||
|
add cl,4
|
||||||
|
.lp8: push ecx
|
||||||
|
mcall 38,,esi,0x01000000
|
||||||
|
add ebx,0x00010001
|
||||||
|
pop ecx
|
||||||
|
loop .lp8
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
endf
|
@ -10,18 +10,18 @@ func save_file ;//////////////////////////////////////////////////////////////
|
|||||||
rep movsb
|
rep movsb
|
||||||
mov byte[edi],0
|
mov byte[edi],0
|
||||||
|
|
||||||
mov esi,AREA_EDIT ; 0x70000 = 448 Kbytes (maximum)
|
mov esi,[cur_tab.Editor.Data] ;! AREA_EDIT ; 0x70000 = 448 Kbytes (maximum)
|
||||||
mov edi,AREA_TEMP
|
mov edi,0 ;!!! AREA_TEMP
|
||||||
|
|
||||||
.new_string:
|
.new_string:
|
||||||
call save_string
|
call save_string
|
||||||
cmp dword[esi],0
|
cmp dword[esi],0
|
||||||
jne .new_string
|
jne .new_string
|
||||||
sub edi,AREA_TEMP+2 ; minus last CRLF
|
sub edi,0 ;!!! AREA_TEMP+2 ; minus last CRLF
|
||||||
;! mov [filelen],edi
|
;! mov [filelen],edi
|
||||||
cmp byte[f_info.path],'/'
|
cmp byte[f_info.path],'/'
|
||||||
je .systree_save
|
je .systree_save
|
||||||
mcall 33,f_info.path,AREA_TEMP,edi,0;[filelen],0
|
mcall 33,f_info.path,0,edi,0 ;!!! AREA_TEMP,edi,0;[filelen],0
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jz .exit
|
jz .exit
|
||||||
; call file_not_found
|
; call file_not_found
|
||||||
@ -40,7 +40,7 @@ func save_file ;//////////////////////////////////////////////////////////////
|
|||||||
|
|
||||||
mov [f_info70+0],2
|
mov [f_info70+0],2
|
||||||
mov [f_info70+12],edi
|
mov [f_info70+12],edi
|
||||||
mov [f_info70+16],AREA_TEMP
|
mov [f_info70+16],0 ;!!! AREA_TEMP
|
||||||
mov byte[f_info70+20],0
|
mov byte[f_info70+20],0
|
||||||
mov [f_info70+21],f_info.path
|
mov [f_info70+21],f_info.path
|
||||||
mcall 70,f_info70
|
mcall 70,f_info70
|
||||||
@ -51,7 +51,7 @@ func save_file ;//////////////////////////////////////////////////////////////
|
|||||||
jnz .exit.2
|
jnz .exit.2
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
mov [modified],0
|
mov [cur_tab.Editor.Modified],0 ;! [modified],0
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -145,48 +145,13 @@ func set_status_fs_error
|
|||||||
@@: inc esi
|
@@: inc esi
|
||||||
mov [s_status],esi
|
mov [s_status],esi
|
||||||
pop eax
|
pop eax
|
||||||
call writepos
|
call draw_statusbar
|
||||||
ret
|
|
||||||
endf
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
func load_hd_file ;///////////////////////////////////////////////////////////
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
mov [f_info+0],0
|
|
||||||
mov [f_info+8],300000/512
|
|
||||||
; mov esi,s_fname
|
|
||||||
; mov edi,f_info.path;pathfile_read
|
|
||||||
; mov ecx,PATHL
|
|
||||||
; cld
|
|
||||||
; rep movsb
|
|
||||||
;mcall 58,f_info ; fileinfo_read
|
|
||||||
|
|
||||||
mov [f_info70+0],0
|
|
||||||
mov [f_info70+4],0
|
|
||||||
mov [f_info70+8],0
|
|
||||||
mov [f_info70+12],300000;/512
|
|
||||||
mov [f_info70+16],AREA_TEMP
|
|
||||||
mov byte[f_info70+20],0
|
|
||||||
mov [f_info70+21],f_info.path
|
|
||||||
mcall 70,f_info70
|
|
||||||
|
|
||||||
call set_status_fs_error
|
|
||||||
|
|
||||||
xchg eax,ebx
|
|
||||||
inc eax
|
|
||||||
test ebx,ebx
|
|
||||||
je load_file.file_found
|
|
||||||
cmp ebx,6 ;// ATV driver fix (6 instead of 5)
|
|
||||||
je load_file.file_found
|
|
||||||
; jmp file_not_found
|
|
||||||
stc
|
|
||||||
ret
|
ret
|
||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
func load_file ;//////////////////////////////////////////////////////////////
|
func load_file ;//////////////////////////////////////////////////////////////
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
mov esi,tb_opensave.text
|
mov esi,tb_opensave.text
|
||||||
mov edi,f_info.path
|
mov edi,f_info.path
|
||||||
movzx ecx,[tb_opensave.length]
|
movzx ecx,[tb_opensave.length]
|
||||||
@ -195,24 +160,81 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
rep movsb
|
rep movsb
|
||||||
mov byte[edi],0
|
mov byte[edi],0
|
||||||
|
|
||||||
cmp byte[f_info.path],'/'
|
xor eax,eax
|
||||||
je load_hd_file
|
mov [f_info70+0],5
|
||||||
|
mov [f_info70+4],eax
|
||||||
|
mov [f_info70+8],eax
|
||||||
|
mov [f_info70+12],eax
|
||||||
|
mov [f_info70+16],file_info
|
||||||
|
mov byte[f_info70+20],al
|
||||||
|
mov [f_info70+21],f_info.path
|
||||||
|
mcall 70,f_info70
|
||||||
|
mov [f_info70+0],0
|
||||||
|
mov eax,dword[file_info.Size]
|
||||||
|
mov [f_info70+12],eax
|
||||||
|
call mem.Alloc
|
||||||
|
mov [f_info70+16],eax
|
||||||
|
mcall 70,f_info70
|
||||||
|
|
||||||
mcall 6,f_info.path,0,16800,AREA_TEMP ; 6 = open file
|
call set_status_fs_error
|
||||||
inc eax ; eax = -1 -> file not found
|
|
||||||
jnz .file_found
|
mov esi,[f_info70+16]
|
||||||
; jmp file_not_found
|
|
||||||
|
xchg eax,ebx
|
||||||
|
test ebx,ebx
|
||||||
|
je .file_found
|
||||||
|
cmp ebx,6 ;// ATV driver fix (6 instead of 5)
|
||||||
|
je .file_found
|
||||||
|
|
||||||
|
mov eax,[f_info70+16]
|
||||||
|
call mem.Free
|
||||||
stc
|
stc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.file_found:
|
.file_found:
|
||||||
dec eax
|
mov ecx,eax
|
||||||
mov [filesize],eax
|
call create_tab
|
||||||
mov [lines],1
|
push ecx esi edi
|
||||||
mov [columns],0
|
mov esi,tb_opensave.text
|
||||||
mov esi,AREA_TEMP
|
lea edi,[ebp+TABITEM.Editor.FilePath]
|
||||||
mov edi,AREA_EDIT
|
;mov ecx,[f_info.length]
|
||||||
mov edx,eax
|
movzx ecx,[tb_opensave.length]
|
||||||
|
rep movsb
|
||||||
|
mov byte[edi],0
|
||||||
|
lea edi,[ebp+TABITEM.Editor.FilePath]
|
||||||
|
movzx ecx,[tb_opensave.length]
|
||||||
|
@@: cmp byte[edi+ecx-1],'/'
|
||||||
|
je @f
|
||||||
|
dec ecx
|
||||||
|
jmp @b
|
||||||
|
@@: mov [ebp+TABITEM.Editor.FileName],ecx
|
||||||
|
call flush_cur_tab
|
||||||
|
pop edi esi ecx
|
||||||
|
call load_from_memory
|
||||||
|
mov eax,[f_info70+16]
|
||||||
|
call mem.Free
|
||||||
|
clc
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func load_from_memory ;///////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; ECX = data length
|
||||||
|
; ESI = data pointer
|
||||||
|
; EBP = EDITOR*
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
call get_lines_in_file
|
||||||
|
mov [ebp+EDITOR.Lines],eax
|
||||||
|
imul ebx,eax,14
|
||||||
|
add ebx,ecx
|
||||||
|
mov eax,[ebp+EDITOR.Data]
|
||||||
|
call mem.ReAlloc
|
||||||
|
mov [ebp+EDITOR.Data],eax
|
||||||
|
|
||||||
|
mov [ebp+EDITOR.Columns],0
|
||||||
|
mov edi,eax
|
||||||
|
mov edx,ecx
|
||||||
|
|
||||||
.next_line:
|
.next_line:
|
||||||
mov ebx,edi
|
mov ebx,edi
|
||||||
@ -244,11 +266,10 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
sub eax,10
|
sub eax,10
|
||||||
jnz @f
|
jnz @f
|
||||||
inc eax
|
inc eax
|
||||||
@@: cmp eax,[columns]
|
@@: cmp eax,[ebp+EDITOR.Columns] ;! eax,[columns]
|
||||||
jbe @f
|
jbe @f
|
||||||
mov [columns],eax
|
mov [ebp+EDITOR.Columns],eax ;! [columns],eax
|
||||||
@@: mov [modified],0
|
@@: mov [ebp+EDITOR.Modified],0 ;! [modified],0
|
||||||
clc
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.CR: cmp byte[esi],10
|
.CR: cmp byte[esi],10
|
||||||
@ -261,11 +282,11 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
lea eax,[edi-4]
|
lea eax,[edi-4]
|
||||||
sub eax,ebx
|
sub eax,ebx
|
||||||
mov [ebx],eax
|
mov [ebx],eax
|
||||||
inc [lines]
|
;inc [cur_tab.Editor.Lines] ;! [lines]
|
||||||
add eax,-10
|
add eax,-10
|
||||||
cmp eax,[columns]
|
cmp eax,[ebp+EDITOR.Columns] ;! eax,[columns]
|
||||||
jbe .next_line
|
jbe .next_line
|
||||||
mov [columns],eax
|
mov [ebp+EDITOR.Columns],eax ;! [columns],eax
|
||||||
jmp .next_line
|
jmp .next_line
|
||||||
|
|
||||||
.TB: lea eax,[edi-4]
|
.TB: lea eax,[edi-4]
|
||||||
@ -278,30 +299,3 @@ func load_file ;//////////////////////////////////////////////////////////////
|
|||||||
rep stosb
|
rep stosb
|
||||||
jmp .next_char
|
jmp .next_char
|
||||||
endf
|
endf
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
func new_file ;///////////////////////////////////////////////////////////////
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
; mcall 55,eax,error_beep ; beep
|
|
||||||
mov [lines],1 ; open empty document
|
|
||||||
mov [columns],1
|
|
||||||
xor eax,eax
|
|
||||||
mov [top_line],eax
|
|
||||||
mov [pos.x],eax
|
|
||||||
mov [pos.y],eax
|
|
||||||
mov edi,AREA_EDIT+4
|
|
||||||
mov ecx,10
|
|
||||||
mov [edi-4],ecx
|
|
||||||
mov [edi+10],eax
|
|
||||||
mov al,' '
|
|
||||||
cld
|
|
||||||
rep stosb
|
|
||||||
|
|
||||||
mov [f_info.length],0
|
|
||||||
mov [modified],0
|
|
||||||
mov [asm_mode],0
|
|
||||||
call update_caption
|
|
||||||
call drawwindow
|
|
||||||
|
|
||||||
ret
|
|
||||||
endf
|
|
File diff suppressed because it is too large
Load Diff
179
programs/develop/tinypad/trunk/tp-locale.inc
Normal file
179
programs/develop/tinypad/trunk/tp-locale.inc
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
|
||||||
|
sz htext,'TINYPAD ',APP_VERSION
|
||||||
|
|
||||||
|
menubar_res main_menu,\
|
||||||
|
ru,'” ©«' ,mm.File ,onshow.file ,\
|
||||||
|
ru,'<27>à ¢ª ' ,mm.Edit ,onshow.edit ,\
|
||||||
|
ru,'<27>®¨áª' ,mm.Search ,onshow.search ,\
|
||||||
|
ru,'‡ ¯ãáª' ,mm.Run ,onshow.run ,\
|
||||||
|
ru,'Š®¤¨à®¢ª ',mm.Encoding,onshow.recode ,\
|
||||||
|
ru,'Ž¯æ¨¨' ,mm.Options ,onshow.options,\
|
||||||
|
\
|
||||||
|
en,'File' ,mm.File ,onshow.file ,\
|
||||||
|
en,'Edit' ,mm.Edit ,onshow.edit ,\
|
||||||
|
en,'Search' ,mm.Search ,onshow.search ,\
|
||||||
|
en,'Run' ,mm.Run ,onshow.run ,\
|
||||||
|
en,'Encoding',mm.Encoding,onshow.recode ,\
|
||||||
|
en,'Options' ,mm.Options ,onshow.options
|
||||||
|
|
||||||
|
popup_res mm.File,\
|
||||||
|
ru,'<27>®¢ë©' ,'Ctrl+N' ,New ,\
|
||||||
|
ru,'Žâªàëâì...' ,'Ctrl+O' ,Open ,\
|
||||||
|
ru,'‘®åà ¨âì' ,'Ctrl+S' ,Save ,\
|
||||||
|
ru,'‘®åà ¨âì ª ª...','Ctrl+Shift+S',SaveAs,\
|
||||||
|
ru,'-' ,'' , ,\
|
||||||
|
ru,'‚ë室' ,'Alt+X' ,Exit ,\
|
||||||
|
\
|
||||||
|
en,'New' ,'Ctrl+N' ,New ,\
|
||||||
|
en,'Open...' ,'Ctrl+O' ,Open ,\
|
||||||
|
en,'Save' ,'Ctrl+S' ,Save ,\
|
||||||
|
en,'Save as...','Ctrl+Shift+S',SaveAs,\
|
||||||
|
en,'-' ,'' , ,\
|
||||||
|
en,'Exit' ,'Alt+X' ,Exit
|
||||||
|
|
||||||
|
popup_res mm.Edit,\
|
||||||
|
ru,'‚ë१ âì' ,'Ctrl+X',Cut ,\
|
||||||
|
ru,'Š®¯¨à®¢ âì' ,'Ctrl+C',Copy ,\
|
||||||
|
ru,'‚áâ ¢¨âì' ,'Ctrl+V',Insert,\
|
||||||
|
ru,'“¤ «¨âì' ,'' ,Delete,\
|
||||||
|
ru,'-' ,'' , ,\
|
||||||
|
ru,'‚뤥«¨âì ¢áñ','Ctrl+A',SelAll,\
|
||||||
|
\
|
||||||
|
en,'Cut' ,'Ctrl+X',Cut ,\
|
||||||
|
en,'Copy' ,'Ctrl+C',Copy ,\
|
||||||
|
en,'Paste' ,'Ctrl+V',Insert,\
|
||||||
|
en,'Delete' ,'' ,Delete,\
|
||||||
|
en,'-' ,'' , ,\
|
||||||
|
en,'Select all','Ctrl+A',SelAll
|
||||||
|
|
||||||
|
popup_res mm.Search,\
|
||||||
|
ru,'<27>¥à¥©â¨...' ,'Ctrl+G',Position,\
|
||||||
|
ru,'-' ,'' , ,\
|
||||||
|
ru,'<27> ©â¨...' ,'Ctrl+F',Find ,\
|
||||||
|
ru,'<27> ©â¨ ¤ «¥¥','F3' ,FindNext,\
|
||||||
|
ru,'‡ ¬¥¨âì...','Ctrl+H',Replace ,\
|
||||||
|
\
|
||||||
|
en,'Position...','Ctrl+G',Position,\
|
||||||
|
en,'-' ,'' , ,\
|
||||||
|
en,'Find...' ,'Ctrl+F',Find ,\
|
||||||
|
en,'Find next' ,'F3' ,FindNext,\
|
||||||
|
en,'Replace...' ,'Ctrl+H',Replace
|
||||||
|
|
||||||
|
popup_res mm.Run,\
|
||||||
|
ru,'‡ ¯ãáâ¨âì' ,'F9' ,Run ,\
|
||||||
|
ru,'Š®¬¯¨«¨à®¢ âì' ,'Ctrl+F9',Compile ,\
|
||||||
|
ru,'-' ,'' , ,\
|
||||||
|
ru,'„®áª ®â« ¤ª¨' ,'' ,DbgBoard,\
|
||||||
|
ru,'‘¨áâ¥¬ë¥ äãªæ¨¨','' ,SysFuncs,\
|
||||||
|
\
|
||||||
|
en,'Run' ,'F9' ,Run ,\
|
||||||
|
en,'Compile' ,'Ctrl+F9',Compile ,\
|
||||||
|
en,'-' ,'' , ,\
|
||||||
|
en,'Debug board' ,'' ,DbgBoard,\
|
||||||
|
en,'System functions' ,'' ,SysFuncs
|
||||||
|
|
||||||
|
popup_res mm.Encoding,\
|
||||||
|
@!,'CP866 -> CP1251','',CP866.CP1251,\
|
||||||
|
@!,'CP1251 -> CP866' ,'',CP1251.CP866,\
|
||||||
|
@!,'-' ,'', ,\
|
||||||
|
@!,'CP866 -> KOI8-R','',CP866.KOI8R ,\
|
||||||
|
@!,'KOI8-R -> CP866' ,'',KOI8R.CP866 ,\
|
||||||
|
@!,'-' ,'', ,\
|
||||||
|
@!,'CP1251 -> KOI8-R','',CP1251.KOI8R,\
|
||||||
|
@!,'KOI8-R -> CP1251','',KOI8R.CP1251
|
||||||
|
|
||||||
|
popup_res mm.Options,\
|
||||||
|
ru,'‚¥è¨© ¢¨¤...' ,'',Appearance ,\
|
||||||
|
ru,'-' ,'', ,\
|
||||||
|
ru,'<27>¥§®¯ ᮥ ¢ë¤¥«¥¨¥' ,'',SecureSel ,\
|
||||||
|
ru,'€¢â®¬ â¨ç¥áª¨¥ ᪮¡ª¨' ,'',AutoBrackets,\
|
||||||
|
ru,'€¢â®¬ â¨ç¥áª¨© ®âáâã¯' ,'',AutoIndents ,\
|
||||||
|
ru,'“¬ ï â ¡ã«ïæ¨ï' ,'',SmartTabs ,\
|
||||||
|
ru,'Ž¯â¨¬ «ì®¥ á®åà ¥¨¥','',OptimalFill ,\
|
||||||
|
ru,'-' ,'', ,\
|
||||||
|
ru,'<27>®¬¥à áâப' ,'',LineNumbers ,\
|
||||||
|
\
|
||||||
|
en,'Appearance...' ,'',Appearance ,\
|
||||||
|
en,'-' ,'', ,\
|
||||||
|
en,'Secure selection' ,'',SecureSel ,\
|
||||||
|
en,'Automatic brackets' ,'',AutoBrackets,\
|
||||||
|
en,'Automatic indents' ,'',AutoIndents ,\
|
||||||
|
en,'Smart tabulation' ,'',SmartTabs ,\
|
||||||
|
en,'Optimal fill on saving','',OptimalFill ,\
|
||||||
|
en,'-' ,'', ,\
|
||||||
|
en,'Line numbers' ,'',LineNumbers
|
||||||
|
|
||||||
|
lsz s_modified,\
|
||||||
|
ru,'ˆ§¬¥¥®',\
|
||||||
|
en,'Modified'
|
||||||
|
|
||||||
|
lsz s_2filename,\
|
||||||
|
ru,'ˆ¬ï ä ©« :',\
|
||||||
|
en,'Filename:'
|
||||||
|
lsz s_2open,\
|
||||||
|
ru,'Žâªàëâì',\
|
||||||
|
en,'Open'
|
||||||
|
lsz s_2save,\
|
||||||
|
ru,'‘®åà ¨âì',\
|
||||||
|
en,'Save'
|
||||||
|
lsz s_2find,\
|
||||||
|
ru,'<27> ©â¨',\
|
||||||
|
en,'Find'
|
||||||
|
db ':'
|
||||||
|
lsz s_2replace,\
|
||||||
|
ru,'‡ ¬¥¨âì',\
|
||||||
|
en,'Replace'
|
||||||
|
db ':'
|
||||||
|
lsz s_2cancel,\
|
||||||
|
ru,'Žâ¬¥ ',\
|
||||||
|
en,'Cancel'
|
||||||
|
|
||||||
|
lsz s_enter_filename,\
|
||||||
|
ru,<'‚¢¥¤¨â¥ ¨¬ï ä ©« ',0>,\
|
||||||
|
en,<'Enter filename',0>
|
||||||
|
|
||||||
|
lsz s_enter_text_to_find,\
|
||||||
|
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï ¯®¨áª ',0>,\
|
||||||
|
en,<'Enter text to find',0>
|
||||||
|
|
||||||
|
lsz s_enter_text_to_replace,\
|
||||||
|
ru,<'‚¢¥¤¨â¥ ⥪áâ ¤«ï § ¬¥ë',0>,\
|
||||||
|
en,<'Enter text to replace',0>
|
||||||
|
|
||||||
|
lsz s_text_not_found,\
|
||||||
|
ru,<'„®á⨣ãâ ª®¥æ ä ©« , ⥪áâ ¥ ©¤¥',0>,\
|
||||||
|
en,<'Reached end of file, text not found',0>
|
||||||
|
|
||||||
|
lszc s_fs_error,b,\
|
||||||
|
ru,<'Ž¯¥à æ¨ï § ¢¥àè¥ ãá¯¥è® (0)',0>,\
|
||||||
|
ru,<'',0>,\
|
||||||
|
ru,<'”ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ®© ä ©«®¢®© á¨á⥬ë (2)',0>,\
|
||||||
|
ru,<'<27>¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ (3)',0>,\
|
||||||
|
ru,<'',0>,\
|
||||||
|
ru,<'<27>¥¢®§¬®¦® ®âªàëâì ä ©« (5)',0>,\
|
||||||
|
ru,<'Ž¯¥à æ¨ï § ¢¥àè¥ ãá¯¥è® (6)',0>,\
|
||||||
|
ru,<'€¤à¥á 室¨âáï § £à ¨æ ¬¨ ¯ ¬ï⨠¯à®£à ¬¬ë (7)',0>,\
|
||||||
|
ru,<'<27> ¤¨áª¥ ¥â ᢮¡®¤®£® ¬¥áâ (8)',0>,\
|
||||||
|
ru,<'’ ¡«¨æ FAT ã¨ç⮦¥ (9)',0>,\
|
||||||
|
ru,<'„®áâ㯠§ ¯à¥éñ (10)',0>,\
|
||||||
|
ru,<'Žè¨¡ª ãáâனá⢠(11)',0>,\
|
||||||
|
\
|
||||||
|
en,<'Operation executed successfully (0)',0>,\
|
||||||
|
en,<'',0>,\
|
||||||
|
en,<'Function is not supported for the given filesystem (2)',0>,\
|
||||||
|
en,<'Unknown filesystem (3)',0>,\
|
||||||
|
en,<'',0>,\
|
||||||
|
en,<'Unable to open file (5)',0>,\
|
||||||
|
en,<'Operation executed successfully (6)',0>,\
|
||||||
|
en,<'Pointer lies outside of application memory (7)',0>,\
|
||||||
|
en,<'Disk is full (8)',0>,\
|
||||||
|
en,<'FAT table is destroyed (9)',0>,\
|
||||||
|
en,<'Access denied (10)',0>,\
|
||||||
|
en,<'Device error (11)',0>
|
||||||
|
|
||||||
|
lsz sysfuncs_filename,\
|
||||||
|
ru,<'SYSFUNCR.TXT',0>,\
|
||||||
|
en,<'SYSFUNCS.TXT',0>
|
||||||
|
|
||||||
|
sz s_example,'EXAMPLE.ASM'
|
||||||
|
sz s_still ,'still'
|
@ -123,7 +123,7 @@ mouse:
|
|||||||
call check_mouse_in_edit_area
|
call check_mouse_in_edit_area
|
||||||
jnc still.skip_write
|
jnc still.skip_write
|
||||||
mcall 37,0
|
mcall 37,0
|
||||||
mov [popup_edit+POPUP.pos],eax
|
mov [mm.Edit+POPUP.pos],eax
|
||||||
@@: mcall 37,2
|
@@: mcall 37,2
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jnz @f
|
jnz @f
|
||||||
@ -131,7 +131,7 @@ mouse:
|
|||||||
jmp @b
|
jmp @b
|
||||||
@@: and [mst],0xFD
|
@@: and [mst],0xFD
|
||||||
call onshow.edit
|
call onshow.edit
|
||||||
mov dword[POPUP_STACK],popup_edit
|
mov dword[POPUP_STACK],mm.Edit
|
||||||
mcall 51,1,popup_thread_start,POPUP_STACK
|
mcall 51,1,popup_thread_start,POPUP_STACK
|
||||||
mov [h_popup],eax
|
mov [h_popup],eax
|
||||||
jmp still.skip_write
|
jmp still.skip_write
|
||||||
@ -157,31 +157,31 @@ mouse:
|
|||||||
cdq;xor edx,edx
|
cdq;xor edx,edx
|
||||||
mov ecx,LINEH
|
mov ecx,LINEH
|
||||||
idiv ecx
|
idiv ecx
|
||||||
@@: add eax,[top_line]
|
@@: add eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
pop eax
|
pop eax
|
||||||
cdq;xor edx,edx
|
cdq;xor edx,edx
|
||||||
mov ecx,6
|
mov ecx,6
|
||||||
idiv ecx
|
idiv ecx
|
||||||
@@: add eax,[left_col]
|
@@: add eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
|
|
||||||
cmp eax,[columns]
|
cmp eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
jl @f
|
jl @f
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
@@: cmp ebx,[lines]
|
@@: cmp ebx,[cur_tab.Editor.Lines] ;! ebx,[lines]
|
||||||
jl @f
|
jl @f
|
||||||
mov ebx,[lines]
|
mov ebx,[cur_tab.Editor.Lines] ;! ebx,[lines]
|
||||||
dec ebx
|
dec ebx
|
||||||
@@:
|
@@:
|
||||||
cmp [pos.x],eax
|
cmp [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
jne .change_cur_pos
|
jne .change_cur_pos
|
||||||
cmp [pos.y],ebx
|
cmp [cur_tab.Editor.Caret.Y],ebx ;! [pos.y],ebx
|
||||||
je still.skip_write
|
je still.skip_write
|
||||||
|
|
||||||
.change_cur_pos:
|
.change_cur_pos:
|
||||||
mov [pos.x],eax
|
mov [cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
|
||||||
mov eax,[pos.y]
|
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
|
||||||
mov [pos.y],ebx
|
mov [cur_tab.Editor.Caret.Y],ebx ;! [pos.y],ebx
|
||||||
call check_cur_vis_inv
|
call check_cur_vis_inv
|
||||||
jc .check_ldown
|
jc .check_ldown
|
||||||
; cmp eax,ebx
|
; cmp eax,ebx
|
||||||
@ -213,20 +213,20 @@ mouse:
|
|||||||
; sub ebx,[__rc+0x4]
|
; sub ebx,[__rc+0x4]
|
||||||
cmp [vscrl_capt],0
|
cmp [vscrl_capt],0
|
||||||
jge .vcaptured
|
jge .vcaptured
|
||||||
mov eax,[vscrl_top]
|
mov eax,[cur_tab.Editor.VScroll.Top] ;! eax,[vscrl_top]
|
||||||
cmp ebx,eax
|
cmp ebx,eax
|
||||||
jb .center_vcapture
|
jb .center_vcapture
|
||||||
add eax,[vscrl_size]
|
add eax,[cur_tab.Editor.VScroll.Size] ;! eax,[vscrl_size]
|
||||||
cmp ebx,eax
|
cmp ebx,eax
|
||||||
jae .center_vcapture
|
jae .center_vcapture
|
||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
sub eax,[vscrl_top]
|
sub eax,[cur_tab.Editor.VScroll.Top] ;! eax,[vscrl_top]
|
||||||
dec eax
|
dec eax
|
||||||
mov [vscrl_capt],eax
|
mov [vscrl_capt],eax
|
||||||
dec ebx
|
dec ebx
|
||||||
jmp .vcaptured
|
jmp .vcaptured
|
||||||
.center_vcapture:
|
.center_vcapture:
|
||||||
mov eax,[vscrl_size]
|
mov eax,[cur_tab.Editor.VScroll.Size] ;! eax,[vscrl_size]
|
||||||
shr eax,1
|
shr eax,1
|
||||||
mov [vscrl_capt],eax
|
mov [vscrl_capt],eax
|
||||||
.vcaptured:
|
.vcaptured:
|
||||||
@ -236,24 +236,24 @@ mouse:
|
|||||||
@@: mov [mouse_captured],1
|
@@: mov [mouse_captured],1
|
||||||
mov eax,[bot_ofs]
|
mov eax,[bot_ofs]
|
||||||
sub eax,[top_ofs]
|
sub eax,[top_ofs]
|
||||||
sub eax,[vscrl_size]
|
sub eax,[cur_tab.Editor.VScroll.Size] ;! eax,[vscrl_size]
|
||||||
sub eax,SCRLW*3-2
|
sub eax,SCRLW*3-2
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jge @f
|
jge @f
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
@@:
|
@@:
|
||||||
mov [vscrl_top],ebx
|
mov [cur_tab.Editor.VScroll.Top],ebx ;! [vscrl_top],ebx
|
||||||
mov eax,[lines]
|
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
|
||||||
sub eax,[lines.scr]
|
sub eax,[lines.scr]
|
||||||
imul ebx
|
imul ebx
|
||||||
mov ebx,[bot_ofs]
|
mov ebx,[bot_ofs]
|
||||||
sub ebx,[top_ofs]
|
sub ebx,[top_ofs]
|
||||||
sub ebx,SCRLW*3-2 ;**
|
sub ebx,SCRLW*3-2 ;**
|
||||||
sub ebx,[vscrl_size]
|
sub ebx,[cur_tab.Editor.VScroll.Size] ;! ebx,[vscrl_size]
|
||||||
idiv ebx
|
idiv ebx
|
||||||
cmp eax,[top_line]
|
cmp eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
|
||||||
je still.skip_write
|
je still.skip_write
|
||||||
mov [top_line],eax
|
mov [cur_tab.Editor.TopLeft.Y],eax ;! [top_line],eax
|
||||||
call check_bottom_right
|
call check_bottom_right
|
||||||
call draw_file
|
call draw_file
|
||||||
jmp still.skip_write
|
jmp still.skip_write
|
||||||
@ -274,20 +274,20 @@ mouse:
|
|||||||
; sub ebx,[__rc+0x0]
|
; sub ebx,[__rc+0x0]
|
||||||
cmp [hscrl_capt],0
|
cmp [hscrl_capt],0
|
||||||
jge .hcaptured
|
jge .hcaptured
|
||||||
mov eax,[hscrl_top]
|
mov eax,[cur_tab.Editor.HScroll.Top] ;! eax,[hscrl_top]
|
||||||
cmp ebx,eax
|
cmp ebx,eax
|
||||||
jl .center_hcapture
|
jl .center_hcapture
|
||||||
add eax,[hscrl_size]
|
add eax,[cur_tab.Editor.HScroll.Size] ;! eax,[hscrl_size]
|
||||||
cmp ebx,eax
|
cmp ebx,eax
|
||||||
jge .center_hcapture
|
jge .center_hcapture
|
||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
sub eax,[hscrl_top]
|
sub eax,[cur_tab.Editor.HScroll.Top] ;! eax,[hscrl_top]
|
||||||
dec eax
|
dec eax
|
||||||
mov [hscrl_capt],eax
|
mov [hscrl_capt],eax
|
||||||
dec ebx
|
dec ebx
|
||||||
jmp .hcaptured
|
jmp .hcaptured
|
||||||
.center_hcapture:
|
.center_hcapture:
|
||||||
mov eax,[hscrl_size]
|
mov eax,[cur_tab.Editor.HScroll.Size] ;! eax,[hscrl_size]
|
||||||
shr eax,1
|
shr eax,1
|
||||||
mov [hscrl_capt],eax
|
mov [hscrl_capt],eax
|
||||||
.hcaptured:
|
.hcaptured:
|
||||||
@ -296,23 +296,23 @@ mouse:
|
|||||||
xor ebx,ebx
|
xor ebx,ebx
|
||||||
@@: mov [mouse_captured],1
|
@@: mov [mouse_captured],1
|
||||||
mov eax,[p_info.box.width]
|
mov eax,[p_info.box.width]
|
||||||
sub eax,[hscrl_size]
|
sub eax,[cur_tab.Editor.HScroll.Size] ;! eax,[hscrl_size]
|
||||||
sub eax,SCRLW*3+10+1
|
sub eax,SCRLW*3+10+1
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
jge @f
|
jge @f
|
||||||
mov ebx,eax
|
mov ebx,eax
|
||||||
@@:
|
@@:
|
||||||
mov [hscrl_top],ebx
|
mov [cur_tab.Editor.HScroll.Top],ebx ;! [hscrl_top],ebx
|
||||||
mov eax,[columns]
|
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
|
||||||
sub eax,[columns.scr]
|
sub eax,[columns.scr]
|
||||||
imul ebx
|
imul ebx
|
||||||
mov ebx,[p_info.box.width]
|
mov ebx,[p_info.box.width]
|
||||||
sub ebx,SCRLW*3+10+1 ;**
|
sub ebx,SCRLW*3+10+1 ;**
|
||||||
sub ebx,[hscrl_size]
|
sub ebx,[cur_tab.Editor.HScroll.Size] ;! ebx,[hscrl_size]
|
||||||
idiv ebx
|
idiv ebx
|
||||||
cmp eax,[left_col]
|
cmp eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
|
||||||
je still.skip_write
|
je still.skip_write
|
||||||
mov [left_col],eax
|
mov [cur_tab.Editor.TopLeft.X],eax ;! [left_col],eax
|
||||||
call check_bottom_right
|
call check_bottom_right
|
||||||
call draw_file
|
call draw_file
|
||||||
jmp still.skip_write
|
jmp still.skip_write
|
||||||
@ -373,52 +373,52 @@ endf
|
|||||||
onshow:
|
onshow:
|
||||||
|
|
||||||
.file:
|
.file:
|
||||||
or byte[popup_file+3],0x01
|
or byte[mm.File+3],0x01
|
||||||
cmp [f_info.length],0
|
cmp [f_info.length],0
|
||||||
jne @f
|
jne @f
|
||||||
and byte[popup_file+3],0xFE
|
and byte[mm.File+3],0xFE
|
||||||
@@: ret
|
@@: ret
|
||||||
|
|
||||||
.edit:
|
.edit:
|
||||||
or byte[popup_edit+2],0x01
|
or byte[mm.Edit+2],0x01
|
||||||
cmp [copy_size],0
|
cmp [copy_size],0
|
||||||
jne @f
|
jne @f
|
||||||
and byte[popup_edit+2],0xFE
|
and byte[mm.Edit+2],0xFE
|
||||||
@@: or dword[popup_edit+0],0x01000101
|
@@: or dword[mm.Edit+0],0x01000101
|
||||||
cmp [sel.selected],0
|
cmp [sel.selected],0
|
||||||
jne @f
|
jne @f
|
||||||
and dword[popup_edit+0],0xFEFFFEFE
|
and dword[mm.Edit+0],0xFEFFFEFE
|
||||||
@@: ret
|
@@: ret
|
||||||
|
|
||||||
.search:
|
.search:
|
||||||
mov byte[popup_search+0],0
|
mov byte[mm.Search+0],0
|
||||||
;mov byte[popup_search+4],0
|
;mov byte[mm.Search+4],0
|
||||||
ret
|
ret
|
||||||
.run:
|
.run:
|
||||||
ret
|
ret
|
||||||
.recode:
|
.recode:
|
||||||
ret
|
ret
|
||||||
.options:
|
.options:
|
||||||
mov word[popup_options+0],0
|
mov word[mm.Options+0],0
|
||||||
mov byte[popup_options+5],0
|
mov byte[mm.Options+5],0
|
||||||
or byte[popup_options+2],0x02
|
or byte[mm.Options+2],0x02
|
||||||
test [options],OPTS_SECURESEL
|
test [options],OPTS_SECURESEL
|
||||||
jnz @f
|
jnz @f
|
||||||
and byte[popup_options+2],0xFD
|
and byte[mm.Options+2],0xFD
|
||||||
@@: or byte[popup_options+3],0x02
|
@@: or byte[mm.Options+3],0x02
|
||||||
test [options],OPTS_AUTOBRACES
|
test [options],OPTS_AUTOBRACES
|
||||||
jnz @f
|
jnz @f
|
||||||
and byte[popup_options+3],0xFD
|
and byte[mm.Options+3],0xFD
|
||||||
@@: or byte[popup_options+4],0x02
|
@@: or byte[mm.Options+4],0x02
|
||||||
test [options],OPTS_AUTOINDENT
|
test [options],OPTS_AUTOINDENT
|
||||||
jnz @f
|
jnz @f
|
||||||
and byte[popup_options+4],0xFD
|
and byte[mm.Options+4],0xFD
|
||||||
@@: or byte[popup_options+6],0x02
|
@@: or byte[mm.Options+6],0x02
|
||||||
test [options],OPTS_OPTIMSAVE
|
test [options],OPTS_OPTIMSAVE
|
||||||
jnz @f
|
jnz @f
|
||||||
and byte[popup_options+6],0xFD
|
and byte[mm.Options+6],0xFD
|
||||||
@@: or byte[popup_options+8],0x02
|
@@: or byte[mm.Options+8],0x02
|
||||||
test [options],OPTS_LINENUMS
|
test [options],OPTS_LINENUMS
|
||||||
jnz @f
|
jnz @f
|
||||||
and byte[popup_options+8],0xFD
|
and byte[mm.Options+8],0xFD
|
||||||
@@: ret
|
@@: ret
|
@ -19,8 +19,8 @@ recode:
|
|||||||
mov edi,table.koi.1251
|
mov edi,table.koi.1251
|
||||||
|
|
||||||
.main:
|
.main:
|
||||||
mov ecx,[lines]
|
mov ecx,[cur_tab.Editor.Lines] ;! ecx,[lines]
|
||||||
mov esi,AREA_EDIT
|
mov esi,[cur_tab.Editor.Data] ;! AREA_EDIT
|
||||||
jecxz .exit
|
jecxz .exit
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
.lp0: dec ecx
|
.lp0: dec ecx
|
||||||
@ -30,7 +30,7 @@ recode:
|
|||||||
@@: dec edx
|
@@: dec edx
|
||||||
js .lp0
|
js .lp0
|
||||||
lodsb
|
lodsb
|
||||||
add al,-$80
|
add al,-$80
|
||||||
js @b
|
js @b
|
||||||
mov al,[edi+eax]
|
mov al,[edi+eax]
|
||||||
mov [esi-1],al
|
mov [esi-1],al
|
||||||
|
294
programs/develop/tinypad/trunk/tp-tabctl.asm
Normal file
294
programs/develop/tinypad/trunk/tp-tabctl.asm
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
|
||||||
|
sz s_defname,'Untitled',0
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func flush_cur_tab ;//////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; EBP = TABITEM*
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ecx esi edi
|
||||||
|
mov esi,cur_tab
|
||||||
|
mov edi,[tab_bar.Current.Ptr]
|
||||||
|
mov ecx,sizeof.TABITEM/4
|
||||||
|
cld
|
||||||
|
rep movsd
|
||||||
|
pop edi esi ecx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func set_cur_tab ;////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; EBP = TABITEM*
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push ecx esi edi
|
||||||
|
cmp [tab_bar.Current.Ptr],0
|
||||||
|
je @f
|
||||||
|
call flush_cur_tab
|
||||||
|
@@: mov esi,ebp
|
||||||
|
mov edi,cur_tab
|
||||||
|
mov ecx,sizeof.TABITEM/4
|
||||||
|
rep movsd
|
||||||
|
mov [tab_bar.Current.Ptr],ebp
|
||||||
|
call update_caption
|
||||||
|
pop edi esi ecx
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func create_tab ;/////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push eax ecx esi edi
|
||||||
|
|
||||||
|
inc [tab_bar.Items.Count]
|
||||||
|
imul ebx,[tab_bar.Items.Count],sizeof.TABITEM
|
||||||
|
mov eax,[tab_bar.Items]
|
||||||
|
mov ecx,eax
|
||||||
|
call mem.ReAlloc
|
||||||
|
mov [tab_bar.Items],eax
|
||||||
|
sub ecx,eax
|
||||||
|
sub [tab_bar.Current.Ptr],ecx
|
||||||
|
lea ebp,[eax+ebx-sizeof.TABITEM]
|
||||||
|
call set_cur_tab
|
||||||
|
|
||||||
|
mov eax,1024
|
||||||
|
call mem.Alloc
|
||||||
|
mov [cur_tab.Editor.Data],eax
|
||||||
|
mov [cur_tab.Editor.Lines],1
|
||||||
|
mov [cur_tab.Editor.Columns],1
|
||||||
|
xor eax,eax
|
||||||
|
mov [cur_tab.Editor.TopLeft.X],eax
|
||||||
|
mov [cur_tab.Editor.TopLeft.Y],eax
|
||||||
|
mov [cur_tab.Editor.Caret.X],eax
|
||||||
|
mov [cur_tab.Editor.Caret.Y],eax
|
||||||
|
mov [cur_tab.Editor.SelStart.X],eax
|
||||||
|
mov [cur_tab.Editor.SelStart.Y],eax
|
||||||
|
mov edi,[cur_tab.Editor.Data]
|
||||||
|
add edi,4
|
||||||
|
mov ecx,10
|
||||||
|
mov [edi-4],ecx
|
||||||
|
mov [edi+10],eax
|
||||||
|
mov al,' '
|
||||||
|
cld
|
||||||
|
rep stosb
|
||||||
|
|
||||||
|
mov esi,s_defname
|
||||||
|
mov edi,cur_tab.Editor.FilePath
|
||||||
|
mov ecx,s_defname.size
|
||||||
|
rep movsb
|
||||||
|
mov [cur_tab.Editor.FileName],0
|
||||||
|
|
||||||
|
mov [f_info.length],0
|
||||||
|
mov [cur_tab.Editor.Modified],0
|
||||||
|
mov [cur_tab.Editor.AsmMode],0
|
||||||
|
|
||||||
|
call flush_cur_tab
|
||||||
|
call update_caption
|
||||||
|
call drawwindow
|
||||||
|
|
||||||
|
mov ebp,cur_tab
|
||||||
|
pop edi esi ecx eax
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func delete_tab ;/////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func get_tab_size ;///////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; EBP = TABITEM*
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
push eax
|
||||||
|
cmp [tab_bar.Style],3
|
||||||
|
jae .lp1
|
||||||
|
lea eax,[ebp+TABITEM.Editor.FilePath]
|
||||||
|
add eax,[ebp+TABITEM.Editor.FileName]
|
||||||
|
call strlen
|
||||||
|
imul ebx,eax,6
|
||||||
|
add ebx,9
|
||||||
|
jmp .lp2
|
||||||
|
.lp1: call get_max_tab_width
|
||||||
|
mov ebx,eax
|
||||||
|
.lp2: mov ecx,TBARH-1
|
||||||
|
pop eax
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
func draw_tabctl ;////////////////////////////////////////////////////////////
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
mov ebx,[tab_bar.Bounds.Left-2]
|
||||||
|
mov bx,word[tab_bar.Bounds.Right]
|
||||||
|
sub bx,word[tab_bar.Bounds.Left]
|
||||||
|
inc ebx
|
||||||
|
mov ecx,[tab_bar.Bounds.Top-2]
|
||||||
|
mov cx,word[tab_bar.Bounds.Bottom]
|
||||||
|
sub cx,word[tab_bar.Bounds.Top]
|
||||||
|
inc ecx
|
||||||
|
mov edx,[cl_3d_normal]
|
||||||
|
call draw_framerect
|
||||||
|
|
||||||
|
mov al,[tab_bar.Style]
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_top
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_bottom
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_left
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_right
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_top:
|
||||||
|
add ebx,1*65536-2
|
||||||
|
mov ecx,[tab_bar.Bounds.Top-2]
|
||||||
|
xor cx,cx
|
||||||
|
add ecx,1*65536+TBARH
|
||||||
|
mcall 13
|
||||||
|
add ecx,(TBARH-2)*65536-(TBARH-3)
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_bottom:
|
||||||
|
add ebx,1*65536-2
|
||||||
|
mov ecx,[tab_bar.Bounds.Bottom-2]
|
||||||
|
xor cx,cx
|
||||||
|
add ecx,-TBARH*65536+TBARH
|
||||||
|
mcall 13
|
||||||
|
mov cx,1
|
||||||
|
mcall ,,,[sc.work]
|
||||||
|
add ecx,-1*65536+2;-(TBARH-3)
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
|
||||||
|
mov ecx,[tab_bar.Items.Count]
|
||||||
|
mov ebp,[tab_bar.Items]
|
||||||
|
mov esi,[tab_bar.Bounds.Left]
|
||||||
|
inc esi
|
||||||
|
mov edi,[tab_bar.Bounds.Bottom]
|
||||||
|
add edi,-TBARH+1
|
||||||
|
@@: push ecx
|
||||||
|
|
||||||
|
call get_tab_size
|
||||||
|
rol ebx,16
|
||||||
|
mov bx,si
|
||||||
|
rol ebx,16
|
||||||
|
rol ecx,16
|
||||||
|
mov cx,di
|
||||||
|
rol ecx,16
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
|
||||||
|
cmp ebp,[tab_bar.Current.Ptr]
|
||||||
|
jne .lp1
|
||||||
|
push ebx ecx
|
||||||
|
add ebx,1*65536-2
|
||||||
|
dec ecx
|
||||||
|
mcall 13,,,[sc.work]
|
||||||
|
pop ecx ebx
|
||||||
|
.lp1:
|
||||||
|
pushad
|
||||||
|
lea eax,[ebp+TABITEM.Editor.FilePath]
|
||||||
|
add eax,[ebp+TABITEM.Editor.FileName]
|
||||||
|
mov edx,eax
|
||||||
|
call strlen
|
||||||
|
mov esi,eax
|
||||||
|
shr ecx,16
|
||||||
|
mov bx,cx
|
||||||
|
add ebx,0x00050005
|
||||||
|
mcall 4,,0x00000000
|
||||||
|
popad
|
||||||
|
|
||||||
|
movzx ebx,bx
|
||||||
|
lea esi,[esi+ebx+1]
|
||||||
|
add ebp,sizeof.TABITEM
|
||||||
|
|
||||||
|
pop ecx
|
||||||
|
dec ecx
|
||||||
|
jnz @b
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_left:
|
||||||
|
call get_max_tab_width
|
||||||
|
mov ebx,[tab_bar.Bounds.Left-2]
|
||||||
|
mov bx,ax
|
||||||
|
add ebx,1*65536
|
||||||
|
add ecx,1*65536-2
|
||||||
|
push eax
|
||||||
|
mcall 13
|
||||||
|
pop eax
|
||||||
|
add eax,-2
|
||||||
|
shl eax,16
|
||||||
|
add ebx,eax
|
||||||
|
mov bx,3
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_right:
|
||||||
|
call get_max_tab_width
|
||||||
|
mov ebx,[tab_bar.Bounds.Right-2]
|
||||||
|
mov bx,ax
|
||||||
|
shl eax,16
|
||||||
|
sub ebx,eax
|
||||||
|
add ecx,1*65536-2
|
||||||
|
mcall 13
|
||||||
|
add ebx,-1*65536
|
||||||
|
mov bx,3
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
|
call draw_framerect
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
func get_max_tab_width
|
||||||
|
mov eax,100
|
||||||
|
ret
|
||||||
|
endf
|
||||||
|
|
||||||
|
func align_editor_in_tab
|
||||||
|
m2m [cur_tab.Editor.Bounds.Left],[tab_bar.Bounds.Left]
|
||||||
|
m2m [cur_tab.Editor.Bounds.Top],[tab_bar.Bounds.Top]
|
||||||
|
m2m [cur_tab.Editor.Bounds.Right],[tab_bar.Bounds.Right]
|
||||||
|
m2m [cur_tab.Editor.Bounds.Bottom],[tab_bar.Bounds.Bottom]
|
||||||
|
|
||||||
|
inc [cur_tab.Editor.Bounds.Left]
|
||||||
|
inc [cur_tab.Editor.Bounds.Top]
|
||||||
|
dec [cur_tab.Editor.Bounds.Right]
|
||||||
|
dec [cur_tab.Editor.Bounds.Bottom]
|
||||||
|
|
||||||
|
mov al,[tab_bar.Style]
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_top
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_bottom
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_left
|
||||||
|
dec al
|
||||||
|
jz .tabs_on_right
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_top:
|
||||||
|
add [cur_tab.Editor.Bounds.Top],TBARH
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_bottom:
|
||||||
|
sub [cur_tab.Editor.Bounds.Bottom],TBARH
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_left:
|
||||||
|
call get_max_tab_width
|
||||||
|
add [cur_tab.Editor.Bounds.Left],eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
.tabs_on_right:
|
||||||
|
call get_max_tab_width
|
||||||
|
sub [cur_tab.Editor.Bounds.Right],eax
|
||||||
|
ret
|
||||||
|
endf
|
@ -85,6 +85,7 @@ func textbox.draw ; TBOX* ebp
|
|||||||
mov [tb.sel.x],ah
|
mov [tb.sel.x],ah
|
||||||
|
|
||||||
mcall 13,dword[tbox.x],dword[tbox.y],[color_tbl+4*5];[sc.work]
|
mcall 13,dword[tbox.x],dword[tbox.y],[color_tbl+4*5];[sc.work]
|
||||||
|
mov edx,[cl_3d_inset]
|
||||||
call draw_framerect
|
call draw_framerect
|
||||||
|
|
||||||
call textbox.get_width
|
call textbox.get_width
|
||||||
|
Loading…
Reference in New Issue
Block a user