programs 't_edit' and 'planet_v' now use 'OpenDialog'

git-svn-id: svn://kolibrios.org@1467 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-05-27 14:46:37 +00:00
parent 18f7c161ab
commit a5e9346baa
6 changed files with 429 additions and 298 deletions

View File

@ -19,6 +19,8 @@ include 'dll.inc'
include '../../develop/libraries/box_lib/load_lib.mac' include '../../develop/libraries/box_lib/load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/box_lib/asm/trunk/opendial.mac'
use_OpenDialog
min_window_w equ 485 ;¬¨­¨¬ «ì­ ï è¨à¨­  ®ª­  min_window_w equ 485 ;¬¨­¨¬ «ì­ ï è¨à¨­  ®ª­ 
min_window_h equ 325 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ®ª­  min_window_h equ 325 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ®ª­ 
@ -109,19 +111,16 @@ start:
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
; init bmp file ; init bmp file
push dword RGB_TILE_SIZE+300 ;300 - § Ї б­лҐ Ў ©вл б гзҐв®¬ § Ј®«®ўЄ  bmp д ©«  stdcall mem.Alloc, dword RGB_TILE_SIZE+300 ;300 - § ¯ á­ë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª  bmp ä ©« 
call mem.Alloc
mov [bmp_icon],eax mov [bmp_icon],eax
stdcall array_tile_function, tile_00,max_tiles_count,tile_init stdcall array_tile_function, tile_00,max_tiles_count,tile_init
stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols
push dword TREE_ICON_SYS16_BMP_SIZE stdcall mem.Alloc, dword TREE_ICON_SYS16_BMP_SIZE
call mem.Alloc
mov [tree_sys_icon],eax mov [tree_sys_icon],eax
push dword TREE_ICON_NOD16_BMP_SIZE stdcall mem.Alloc, dword TREE_ICON_NOD16_BMP_SIZE
call mem.Alloc
mov [tree_nod_icon],eax mov [tree_nod_icon],eax
copy_path fn_icon1,sys_path,file_name,0x0 copy_path fn_icon1,sys_path,file_name,0x0
@ -173,10 +172,15 @@ start:
mov byte[file_name],0 mov byte[file_name],0
; OpenDialog initialisation
init_OpenDialog OpenDialog_data
align 4
red_win: red_win:
call draw_win call draw_window
call but_MetLoad call but_MetLoad
align 4
still: still:
mov eax,10 mov eax,10
mcall mcall
@ -201,6 +205,7 @@ still:
jmp still jmp still
align 4
key: key:
push eax ebx push eax ebx
mcall 2 mcall 2
@ -212,13 +217,13 @@ key:
push dword tree2 push dword tree2
call [tl_key] call [tl_key]
mov ebx,dword[el_focus] ;что-бы карта не двигалась если окна treelist в фокусе mov ebx,dword[el_focus] ;çâ®-¡ë ª àâ  ­¥ ¤¢¨£ « áì ¥á«¨ ®ª­  treelist ¢ 䮪ãá¥
cmp ebx, dword tree1 cmp ebx, dword tree1
je .end_f je .end_f
cmp ebx, dword tree2 cmp ebx, dword tree2
je .end_f je .end_f
;что-бы карта не двигалась если текстовые поля в фокусе ;çâ®-¡ë ª àâ  ­¥ ¤¢¨£ « áì ¥á«¨ ⥪áâ®¢ë¥ ¯®«ï ¢ 䮪ãá¥
test word[edit1.flags],10b ;ed_focus test word[edit1.flags],10b ;ed_focus
jne .end_f jne .end_f
test word[edit2.flags],10b ;ed_focus test word[edit2.flags],10b ;ed_focus
@ -266,7 +271,7 @@ key:
align 4 align 4
draw_win: draw_window:
pushad pushad
mcall 12,1 mcall 12,1
@ -301,8 +306,7 @@ pushad
stdcall dword[tl_draw],dword tree1 stdcall dword[tl_draw],dword tree1
stdcall dword[tl_draw],dword tree2 stdcall dword[tl_draw],dword tree2
mov dword[wScrMetki.all_redraw],1 mov dword[wScrMetki.all_redraw],1
push dword wScrMetki stdcall [scrollbar_ver_draw], dword wScrMetki
call [scrollbar_ver_draw]
mov eax,8 ;ª­®¯ª  mov eax,8 ;ª­®¯ª 
mov ebx,145*65536+20 mov ebx,145*65536+20
@ -316,6 +320,11 @@ pushad
mov edx,5 mov edx,5
int 0x40 int 0x40
mov ebx,170*65536+40 ;ª­®¯ª  ¢ë§®¢  ¤¨ «®£  OpenDial
;mov ecx,5*65536+25
mov edx,13
int 0x40
mov bx,di mov bx,di
shl ebx,16 shl ebx,16
mov bx,100 mov bx,100
@ -351,7 +360,7 @@ pushad
shl ebx,16 shl ebx,16
mov bx,30 mov bx,30
;mov ebx,405*65536+30 ;mov ebx,405*65536+30
mov ecx,265*65536+25 ;mov ecx,265*65536+25
mov edx,11 mov edx,11
int 0x40 int 0x40
@ -360,7 +369,7 @@ pushad
shl ebx,16 shl ebx,16
mov bx,30 mov bx,30
;mov ebx,370*65536+30 ;mov ebx,370*65536+30
mov ecx,265*65536+25 ;mov ecx,265*65536+25
mov edx,10 mov edx,10
int 0x40 int 0x40
@ -446,11 +455,8 @@ pushad
call draw_tiles call draw_tiles
push dword ch2 stdcall [check_box_draw], dword ch1
call [check_box_draw] stdcall [check_box_draw], dword ch2
push dword ch1
call [check_box_draw]
stdcall [edit_box_draw], edit1 stdcall [edit_box_draw], edit1
stdcall [edit_box_draw], edit2 stdcall [edit_box_draw], edit2
@ -522,6 +528,10 @@ button:
jne @f jne @f
call fun_goto_met call fun_goto_met
@@: @@:
cmp ah,13 ;¤¨ «®£ OpenDialog ¤«ï ¯®¨áª  ¯ ¯ª¨
jne @f
call fun_opn_dlg
@@:
cmp ah,1 cmp ah,1
jne still jne still
@ -531,10 +541,10 @@ button:
stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy
stdcall dword[tl_data_clear], tree1 stdcall dword[tl_data_clear], tree1
mov dword[tree2.data_img_sys],0 ;чистим указатель на системные иконки, mov dword[tree2.data_img_sys],0 ;ç¨á⨬ 㪠§ â¥«ì ­  á¨á⥬­ë¥ ¨ª®­ª¨,
;т. к. они были удалены верхней функцией tl_data_clear ;â. ª. ®­¨ ¡ë«¨ 㤠«¥­ë ¢¥àå­¥© ä㭪樥© tl_data_clear
;повторный вызов tl_data_clear без чистки указателя вызвет ошибку ;¯®¢â®à­ë© ¢ë§®¢ tl_data_clear ¡¥§ ç¨á⪨ 㪠§ â¥«ï ¢ë§¢¥â ®è¨¡ªã
mov dword[tree2.data_img],0 ;чистим указатель на иконки узлов mov dword[tree2.data_img],0 ;ç¨á⨬ 㪠§ â¥«ì ­  ¨ª®­ª¨ 㧫®¢
stdcall dword[tl_data_clear], tree2 stdcall dword[tl_data_clear], tree2
; stdcall dword[img_destroy], dword[data_icon] ; stdcall dword[img_destroy], dword[data_icon]
@ -550,7 +560,7 @@ proc img_rgb_wdiv2 data_rgb:dword, size:dword
mov eax,dword[data_rgb] mov eax,dword[data_rgb]
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
imul ecx,3 imul ecx,3
@@: ;затемнение цвета пикселей @@: ;§ â¥¬­¥­¨¥ æ¢¥â  ¯¨ªá¥«¥©
shr byte[eax],1 shr byte[eax],1
and byte[eax],0x7f and byte[eax],0x7f
inc eax inc eax
@ -559,8 +569,8 @@ proc img_rgb_wdiv2 data_rgb:dword, size:dword
mov eax,dword[data_rgb] mov eax,dword[data_rgb]
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
shr ecx,1 shr ecx,1
@@: ;сложение цветов пикселей @@: ;á«®¦¥­¨¥ 梥⮢ ¯¨ªá¥«¥©
mov ebx,dword[eax+3] ;копируем цвет соседнего пикселя mov ebx,dword[eax+3] ;ª®¯¨à㥬 梥â á®á¥¤­¥£® ¯¨ªá¥«ï
add word[eax],bx add word[eax],bx
shr ebx,16 shr ebx,16
add byte[eax+2],bl add byte[eax+2],bl
@ -574,8 +584,8 @@ proc img_rgb_wdiv2 data_rgb:dword, size:dword
add ebx,3 add ebx,3
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
shr ecx,1 shr ecx,1
dec ecx ;лишний пиксель dec ecx ;«¨è­¨© ¯¨ªá¥«ì
@@: ;поджатие пикселей @@: ;¯®¤¦ â¨¥ ¯¨ªá¥«¥©
mov edx,dword[ebx] mov edx,dword[ebx]
mov word[eax],dx mov word[eax],dx
shr edx,16 shr edx,16
@ -600,7 +610,7 @@ proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
mov eax,dword[data_rgb] ;eax = mov eax,dword[data_rgb] ;eax =
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
imul ecx,3 imul ecx,3
@@: ;затемнение цвета пикселей @@: ;§ â¥¬­¥­¨¥ æ¢¥â  ¯¨ªá¥«¥©
shr byte[eax],1 shr byte[eax],1
and byte[eax],0x7f and byte[eax],0x7f
inc eax inc eax
@ -614,8 +624,8 @@ proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
shr ecx,1 shr ecx,1
xor edi,edi xor edi,edi
@@: ;сложение цветов пикселей @@: ;á«®¦¥­¨¥ 梥⮢ ¯¨ªá¥«¥©
mov edx,dword[ebx] ;копируем цвет нижнего пикселя mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠭¨¦­¥£® ¯¨ªá¥«ï
add word[eax],dx add word[eax],dx
shr edx,16 shr edx,16
add byte[eax+2],dl add byte[eax+2],dl
@ -638,10 +648,10 @@ proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
add ebx,eax add ebx,eax
mov ecx,dword[size] ;ecx = size mov ecx,dword[size] ;ecx = size
shr ecx,1 shr ecx,1
sub ecx,dword[size_w] ;лишняя строка пикселей sub ecx,dword[size_w] ;«¨è­ïï áâப  ¯¨ªá¥«¥©
xor edi,edi xor edi,edi
@@: ;поджатие пикселей @@: ;¯®¤¦ â¨¥ ¯¨ªá¥«¥©
mov edx,dword[ebx] ;копируем цвет нижнего пикселя mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠭¨¦­¥£® ¯¨ªá¥«ï
mov word[eax],dx mov word[eax],dx
shr edx,16 shr edx,16
mov byte[eax+2],dl mov byte[eax+2],dl
@ -835,6 +845,24 @@ proc mem_clear, mem:dword, len:dword
ret ret
endp endp
align 4
fun_opn_dlg: ;äã­ªæ¨ï ¤«ï ¢ë§®¢  OpenFile ¤¨ «®£ 
pushad
copy_path open_dialog_name,sys_path,file_name,0
mov [OpenDialog_data.type],2
mov dword[plugin_path],0 ;çâ®-¡ë ¯à¨ ®âªàë⨨ ¤¨ «®£®¢®£® ®ª­  ¯ãâì ¢á¥£¤  ¡à «áï ¨§ OpenDialog_data.dir_default_path
start_OpenDialog OpenDialog_data
cmp [OpenDialog_data.status],2
je @f
mov esi,[OpenDialog_data.openfile_path]
stdcall [str_len],dword[edit1.text],dword[edit1.max]
mov [edit1.size],eax
mov [edit1.pos],eax
stdcall [edit_box_draw], edit1
@@:
popad
ret
txt_met_up db 24,0 txt_met_up db 24,0
txt_met_dn db 25,0 txt_met_dn db 25,0
txt_met_sh db '*',0 txt_met_sh db '*',0
@ -855,7 +883,7 @@ checkboxes_end:
ch_text1 db '¡à âì ᢥàåã' ch_text1 db '¡à âì ᢥàåã'
ch_text2 db '¡à âì á­¨§ã' ch_text2 db '¡à âì á­¨§ã'
edit1 edit_box 190, 215, 10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 500, ed_buffer.1, mouse_dd, 0 edit1 edit_box 190, 215, 10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 4090, openfile_path, mouse_dd, 0
edit2 edit_box 100, 370, 240, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 30, ed_buffer.2, mouse_dd, 0 edit2 edit_box 100, 370, 240, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 30, ed_buffer.2, mouse_dd, 0
editboxes_end: editboxes_end:
@ -901,7 +929,6 @@ wScrMetki:
.ar_offset dd 1 ;+84 .ar_offset dd 1 ;+84
ed_buffer: ;òåêñò äëÿ edit ed_buffer: ;òåêñò äëÿ edit
.1: rb 502
.2: rb 32 .2: rb 32
el_focus dd tree1 el_focus dd tree1
@ -917,20 +944,50 @@ run_file_70 FileInfoBlock
txt_tile_path db 'tile path',0 txt_tile_path db 'tile path',0
rb 300 rb 300
txt_tile_type dd txt_tile_type_0 ;указатель на выбранный тип файлов txt_tile_type dd txt_tile_type_0 ;㪠§ â¥«ì ­  ¢ë¡à ­­ë© ⨯ ä ©«®¢
txt_tile_type_0 db 0 txt_tile_type_0 db 0
rb 10 rb 10
;---------------------------------------------------------------------
align 4 align 4
map: ;координаты карты OpenDialog_data:
.coord_x dd 0 ;координата x .type dd 2
.coord_y dd 0 ;координата y .procinfo dd procinfo ;+4
.zoom db 1 ;масштаб .com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_path dd plugin_path ;+16
.dir_default_path dd openfile_path ;+20
.start_path dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_path dd openfile_path ;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
.filename_area dd filename_area ;+40
.filter_area dd Filter
communication_area_name:
db 'FFFFFFFF_open_dialog',0
open_dialog_name:
db 'opendial',0
communication_area_default_path:
db '/rd/1',0
Filter:
dd Filter.end - Filter.1
.1:
db 'TXT',0
.end:
db 0
align 4
map: ;ª®®à¤¨­ âë ª àâë
.coord_x dd 0 ;ª®®à¤¨­ â  x
.coord_y dd 0 ;ª®®à¤¨­ â  y
.zoom db 1 ;¬ áèâ ¡
align 4 align 4
tile_00 rb size_tile_struc * max_tiles_count tile_00 rb size_tile_struc * max_tiles_count
;этот код не мой, он преобразует число в строку ;íâ®â ª®¤ ­¥ ¬®©, ®­ ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
;input: ;input:
; eax = value ; eax = value
; edi = string buffer ; edi = string buffer
@ -946,32 +1003,39 @@ tl_convert_to_str:
align 4 align 4
.str: .str:
mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax cmp eax,ecx ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
jb @f jb @f
xor edx,edx ;очистить edx xor edx,edx ;®ç¨áâ¨âì edx
div ecx ;разделить - остаток в edx div ecx ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
push edx ;положить в стек push edx ;¯®«®¦¨âì ¢ á⥪
;dec edi ;смещение необходимое для записи с конца строки ;dec edi ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
call .str;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
pop eax pop eax
@@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная)) @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
or al,0x30 ;данная команда короче чем две выше or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
stosb ;записать элемент из регистра al в ячеку памяти es:edi stosb ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
ret ;вернуться чень интересный ход т.к. пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться ret ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
hed db 'Planet viewer 26.03.10',0 ;Ї®¤ЇЁбм ®Є­  hed db 'Planet viewer 27.05.10',0 ;¯®¤¯¨áì ®ª­ 
sc system_colors ;á¨á⥬­ë¥ æ¢¥â  sc system_colors ;á¨á⥬­ë¥ 梥â 
mouse_dd dd 0 ;­ã¦­® ¤«ï Shift-  ¢ editbox mouse_dd dd 0 ;­ã¦­® ¤«ï Shift-  ¢ editbox
i_end:
rb 1024
align 16
procinfo process_information
stacktop:
sys_path rb 4096 sys_path rb 4096
file_name: file_name:
rb 4096 rb 4096
i_end: plugin_path:
procinfo process_information rb 4096
rb 1024 openfile_path:
stacktop: rb 4096
filename_area:
rb 256
mem: mem:

View File

@ -48,7 +48,7 @@ table
</head> </head>
<body> <body>
<h1>TextEditor версия от 29.04.2010</h1> <h1>TextEditor версия от 27.05.2010</h1>
<h2>О программе</h2> <h2>О программе</h2>
<p>Программа для работы с текстовыми файлами. <p>Программа для работы с текстовыми файлами.
Лицензия свободная.</p> Лицензия свободная.</p>
@ -77,7 +77,7 @@ table
<tr><td>Многократная отмена/повтор действий</td> <tr><td>Многократная отмена/повтор действий</td>
<td>нет</td><td>есть</td></tr> <td>нет</td><td>есть</td></tr>
<tr><td>Ограничения на размер файлов</td> <tr><td>Ограничения на размер файлов</td>
<td>нет</td><td>есть</td></tr> <td>нет</td><td>есть при открытии файлов, при редактировании нет</td></tr>
</table> </table>
<h2>Некоторые недоработки</h2> <h2>Некоторые недоработки</h2>
@ -147,7 +147,7 @@ ends</pre>
<ul> <ul>
<li>Евтихов Максим (Maxxxx32) - элемент EditBox.</li> <li>Евтихов Максим (Maxxxx32) - элемент EditBox.</li>
<li>Алексей Теплов (Lrz) - элемент EditBox, макрос load_library.</li> <li>Алексей Теплов (Lrz) - элемент EditBox, макрос load_library.</li>
<li>Mario79 - элемент скроллинг.</li> <li>Mario79 - элементы: скроллинги, меню, OpenDial.</li>
<li>Diamond - за программу KlbrInWin, и помощь при написании программы.</li> <li>Diamond - за программу KlbrInWin, и помощь при написании программы.</li>
<li>Insolor - за тестирование программы на ошибки.</li> <li>Insolor - за тестирование программы на ошибки.</li>
<li>Leency и другим, кто помогал на форуме советами.</li> <li>Leency и другим, кто помогал на форуме советами.</li>

View File

@ -28,8 +28,7 @@
; destroys : nothing ; destroys : nothing
;******************************************************************** ;********************************************************************
strlen: strlen:
push ecx push ecx edi
push edi
pushfd pushfd
cld ; ! cld ; !
mov ecx,-1 mov ecx,-1
@ -40,8 +39,7 @@ strlen:
sub eax,esi sub eax,esi
dec eax dec eax
popfd popfd
pop edi pop edi ecx
pop ecx
ret ret
@ -51,8 +49,7 @@ strlen:
; Copyright (c) 2009 Igor Afanasiev ; Copyright (c) 2009 Igor Afanasiev
linlen: linlen:
push ecx push ecx edi
push edi
pushfd pushfd
cld ; ! cld ; !
mov ecx,eax mov ecx,eax
@ -64,8 +61,7 @@ linlen:
sub eax,esi sub eax,esi
dec eax dec eax
popfd popfd
pop edi pop edi ecx
pop ecx
ret ret
;%endif ;%endif

View File

@ -26,7 +26,7 @@ struct symbol
ends ends
hed db 'TextEditor 17.05.10',0 ;¯®¤¯¨áì ®ª­  hed db 'TextEditor 27.05.10',0 ;¯®¤¯¨áì ®ª­ 
sc system_colors sc system_colors
fn_icon db 'te_icon.bmp',0 fn_icon db 'te_icon.bmp',0
@ -126,7 +126,8 @@ but_no_msg_OpenFile:
; äã­ªæ¨ï ®âªàëâ¨ï ä ©«  á ¢®§¬®¦­ë¬ ®ª­®¬ á®®¡é¥­¨ï (® ¢®§¬®¦­®á⨠®â¬¥­¨âì ®âªàë⨥) ; äã­ªæ¨ï ®âªàëâ¨ï ä ©«  á ¢®§¬®¦­ë¬ ®ª­®¬ á®®¡é¥­¨ï (® ¢®§¬®¦­®á⨠®â¬¥­¨âì ®âªàë⨥)
align 4 align 4
ted_but_open_file: ted_but_open_file:
push eax ebx pushad
stdcall [ted_can_save], tedit0 stdcall [ted_can_save], tedit0
cmp al,1 cmp al,1
jne @f jne @f
@ -134,10 +135,24 @@ ted_but_open_file:
stdcall [mb_setfunctions],msgbox_5_funct stdcall [mb_setfunctions],msgbox_5_funct
jmp .ret_f jmp .ret_f
@@: @@:
copy_path open_dialog_name,sys_path,file_name,0
mov [OpenDialog_data.type],0
start_OpenDialog OpenDialog_data
cmp [OpenDialog_data.status],2
jne @f
stdcall [mb_create],msgbox_9,thread ;message: error run 'open file dialog'
jmp .ret_f
@@:
mov esi,[OpenDialog_data.openfile_path]
call strlen
mov [edit1.size],eax
mov [edit1.pos],eax
stdcall [edit_box_draw], edit1
stdcall [ted_open_file], tedit0,run_file_70,[edit1.text] stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]
call ted_messages_after_open_file call ted_messages_after_open_file
.ret_f: .ret_f:
pop ebx eax popad
ret ret
;input: ;input:

View File

@ -1,4 +1,3 @@
;--- äàííûå ïðîãðàììû ----------------------------------------------
fn_col_option dd def_col_file fn_col_option dd def_col_file
fn_syntax_dir db 'info/',0 fn_syntax_dir db 'info/',0
def_col_file db 'default.syn',0 def_col_file db 'default.syn',0
@ -11,18 +10,6 @@ msgbox_name db 'msgbox.obj',0
fn_icon_tl_sys db 'tl_sys_16.bmp',0 fn_icon_tl_sys db 'tl_sys_16.bmp',0
fn_icon_tl_nod db 'tl_nod_16.bmp',0 fn_icon_tl_nod db 'tl_nod_16.bmp',0
;---------------------------------------------------------------------
fileinfo:
dd 5
dd 0
dd 0
dd 0
dd file_info
string:
db 0
dd file_name
;plugin dd 0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
@ -97,7 +84,7 @@ ted_but_redo dd sz_ted_but_redo
ted_but_reverse dd sz_ted_but_reverse ted_but_reverse dd sz_ted_but_reverse
ted_but_find_next dd sz_ted_but_find_next ted_but_find_next dd sz_ted_but_find_next
ted_text_colored dd sz_ted_text_colored ted_text_colored dd sz_ted_text_colored
;;;version_text_edit dd sz_ted_version ;version_text_edit dd sz_ted_version
dd 0,0 dd 0,0
@ -171,7 +158,7 @@ sz_ted_but_redo db 'ted_but_redo',0
sz_ted_but_reverse db 'ted_but_reverse',0 sz_ted_but_reverse db 'ted_but_reverse',0
sz_ted_but_find_next db 'ted_but_find_next',0 sz_ted_but_find_next db 'ted_but_find_next',0
sz_ted_text_colored db 'ted_text_colored',0 sz_ted_text_colored db 'ted_text_colored',0
;;;sz_ted_version db 'version_text_edit',0 ;sz_ted_version db 'version_text_edit',0
;-------------------------------------------------- ;--------------------------------------------------
align 4 align 4
msgbox_lib_import: msgbox_lib_import:
@ -252,7 +239,7 @@ hScr:
.ar_offset dd 1 ;+84 .ar_offset dd 1 ;+84
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
ws_dir_lbox: ;äî÷åðíèé ñêðîëëèíã äëÿ ýëåìåíòà ListBox ws_dir_lbox: ;¤®ç¥à­¨© áªà®««¨­£ ¤«ï í«¥¬¥­â  ListBox
.x: .x:
.size_x dw 16 ;+0 .size_x dw 16 ;+0
.start_x dw 0 ;+2 .start_x dw 0 ;+2
@ -326,14 +313,50 @@ menu_data_1:
.font_height dd 8 ;+108 .font_height dd 8 ;+108
.cursor_out dd 0 ;+112 .cursor_out dd 0 ;+112
.get_mouse_flag dd 0 ;+116 .get_mouse_flag dd 0 ;+116
;-------------------------
;---------------------------------------------------------------------
align 4
OpenDialog_data:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_path dd plugin_path ;+16
.dir_default_path dd openfile_path ;+20
.start_path dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_path dd openfile_path ;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
.filename_area dd filename_area ;+40
.filter_area dd Filter
communication_area_name:
db 'FFFFFFFF_open_dialog',0
open_dialog_name:
db 'opendial',0
communication_area_default_path:
db '/rd/1',0
Filter:
dd Filter.end - Filter.1
.1:
db 'ASM',0
db 'CPP',0
db 'INC',0
db 'INI',0
db 'TXT',0
db 'H',0
db 'HTM',0
db 'HTML',0
.end:
db 0
TED_PANEL_NULL equ 0 ;­¥â ®âªàë⮩ ¯ ­¥«¨ TED_PANEL_NULL equ 0 ;­¥â ®âªàë⮩ ¯ ­¥«¨
TED_PANEL_FIND equ 1 ;¯ ­¥«ì ¯®¨áª  TED_PANEL_FIND equ 1 ;¯ ­¥«ì ¯®¨áª 
TED_PANEL_SYNTAX equ 2 ;¯ ­¥«ì ¢ë¡®à  ä ©«®¢ ¯®¤á¢¥âª¨ TED_PANEL_SYNTAX equ 2 ;¯ ­¥«ì ¢ë¡®à  ä ©«®¢ ¯®¤á¢¥âª¨
TED_PANEL_WIDTH equ 150 ;è¨à¨­  ¯ ­¥«¨ TED_PANEL_WIDTH equ 150 ;è¨à¨­  ¯ ­¥«¨
count_of_dir_list_files equ 15 count_of_dir_list_files equ 15 ;¬ ªá¨¬ «ì­®¥ ç¨á«® ä ©«®¢ ᨭ⠪á¨á  ¯®ª §ë¢ ¥¬ëå ¢ ®ª­¥ í«¥¬¥­â  tree1
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
struct TexSelect struct TexSelect
@ -436,7 +459,6 @@ db '
.end: .end:
db 0 db 0
;--------
msgbox_1: msgbox_1:
dw 0 dw 0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET
@ -447,7 +469,7 @@ msgbox_1:
db 0 db 0
msgbox_2: msgbox_2:
db 3,0 db 3,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db '‘®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥?',0 db '‘®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥?',0
db '‘®åà ­¨âì',0 db '‘®åà ­¨âì',0
db '<27>¥ á®åà ­ïâì',0 db '<27>¥ á®åà ­ïâì',0
@ -460,7 +482,7 @@ msgbox_2_funct:
msgbox_3: msgbox_3:
db 1,0 db 1,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db 'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©«  á 梥⮢묨 ­ áâனª ¬¨!',13,\ db 'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©«  á 梥⮢묨 ­ áâனª ¬¨!',13,\
'<27>®â®¬ã ¢ë¤¥«¥­¨¥ á«®¢ 梥⮬ ­¥ ¢®§¬®¦­®.',13,\ '<27>®â®¬ã ¢ë¤¥«¥­¨¥ á«®¢ 梥⮬ ­¥ ¢®§¬®¦­®.',13,\
' (ª®¤ ®è¨¡ª¨ =' ' (ª®¤ ®è¨¡ª¨ ='
@ -471,7 +493,7 @@ msgbox_3:
msgbox_4: msgbox_4:
db 1,0 db 1,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db 'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« !',13,\ db 'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« !',13,\
'‚®§¬®¦­® ¨¬ï ä ©«  ¢¢¥¤¥­® ­¥ ¯à ¢¨«ì­®.',13,\ '‚®§¬®¦­® ¨¬ï ä ©«  ¢¢¥¤¥­® ­¥ ¯à ¢¨«ì­®.',13,\
' (ª®¤ ®è¨¡ª¨ =' ' (ª®¤ ®è¨¡ª¨ ='
@ -482,7 +504,7 @@ msgbox_4:
msgbox_5: msgbox_5:
db 3,0 db 3,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db '‘®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥?',0 db '‘®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥?',0
db '<27>¥ á®åà ­ïâì',0 db '<27>¥ á®åà ­ïâì',0
db 'Žâ¬¥­ ',0 db 'Žâ¬¥­ ',0
@ -493,7 +515,7 @@ msgbox_5_funct:
msgbox_6: msgbox_6:
db 1,0 db 1,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db 'Žè¨¡ª  ¯à¨ á®åà ­¥­¨¨ ä ©« !',13,\ db 'Žè¨¡ª  ¯à¨ á®åà ­¥­¨¨ ä ©« !',13,\
'‚®§¬®¦­® ¨¬ï ä ©«  ¢¢¥¤¥­® ­¥ ¯à ¢¨«ì­®.',13,\ '‚®§¬®¦­® ¨¬ï ä ©«  ¢¢¥¤¥­® ­¥ ¯à ¢¨«ì­®.',13,\
' (ª®¤ ®è¨¡ª¨ =' ' (ª®¤ ®è¨¡ª¨ ='
@ -503,7 +525,7 @@ msgbox_6:
db 0 db 0
msgbox_7: msgbox_7:
db 1,0 db 1,0
db '’¥ªáâ ­¥ ­ ©¤¥­',0 ;+2 = +MB_TEXT_OFFSET db '’¥ªáâ ­¥ ­ ©¤¥­',0
db '„®á⨣­ãâ ª®­¥æ ¤®ªã¬¥­â .',13,\ db '„®á⨣­ãâ ª®­¥æ ¤®ªã¬¥­â .',13,\
'<27>®¯à®¡ã©â¥ ¯¥à¥©â¨ ¢ ­ ç «® ¤®ªã¬¥­â ',13,\ '<27>®¯à®¡ã©â¥ ¯¥à¥©â¨ ¢ ­ ç «® ¤®ªã¬¥­â ',13,\
'¨«¨ ¨§¬¥­¨âì § ¯à®á ¨ ¯®¢â®à¨âì ¯®¨áª.',0 '¨«¨ ¨§¬¥­¨âì § ¯à®á ¨ ¯®¢â®à¨âì ¯®¨áª.',0
@ -511,13 +533,20 @@ msgbox_7:
db 0 db 0
msgbox_8: msgbox_8:
db 3,0 db 3,0
db '‚­¨¬ ­¨¥',0 ;+2 = +MB_TEXT_OFFSET db '‚­¨¬ ­¨¥',0
db '„«ï ¢ë室  § ¢¥àè¨â¥ à ¡®âã á ä ©«®¬.',13,\ db '„«ï ¢ë室  § ¢¥àè¨â¥ à ¡®âã á ä ©«®¬.',13,\
'<27>®¯à®¡ã©â¥ á®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥',13,\ '<27>®¯à®¡ã©â¥ á®åà ­¨âì ¨§¬¥­¥­¨ï ¢ ä ©«¥',13,\
'¨«¨ ­ ç âì ­®¢ë© ¯ãá⮩.',0 '¨«¨ ­ ç âì ­®¢ë© ¯ãá⮩.',0
db 'Žâ¬¥­ ',0 db 'Žâ¬¥­ ',0
db 0 db 0
msgbox_9:
db 3,0
db '‚­¨¬ ­¨¥',0
db '<27>¥ ®âªàë«áï ',39,'¤¨ «®£ ®âªàëâ¨ï ä ©« .',39,0
db '‡ ªàëâì',0
db 0
txtFile db '” ©«:',0
txtFindCapt db '<27>®¨áª',0 txtFindCapt db '<27>®¨áª',0
txtFindNext db '<27> ©â¨ ¤ «¥¥',0 txtFindNext db '<27> ©â¨ ¤ «¥¥',0
txtFormatCapt db '”®à¬ â',0 txtFormatCapt db '”®à¬ â',0
@ -535,7 +564,6 @@ db 'Exit',0
.end: .end:
db 0 db 0
;--------
msgbox_1: msgbox_1:
dw 0 dw 0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
@ -546,7 +574,7 @@ msgbox_1:
db 0 db 0
msgbox_2: msgbox_2:
db 3,0 db 3,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'Save changes to the file?',0 db 'Save changes to the file?',0
db 'Save',0 db 'Save',0
db 'Discard',0 db 'Discard',0
@ -559,7 +587,7 @@ msgbox_2_funct:
msgbox_3: msgbox_3:
db 1,0 db 1,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'Error opening the file with the color settings!',13,\ db 'Error opening the file with the color settings!',13,\
'Because color selection of words is not possible.',13,\ 'Because color selection of words is not possible.',13,\
' (error code =' ' (error code ='
@ -570,7 +598,7 @@ msgbox_3:
msgbox_4: msgbox_4:
db 1,0 db 1,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'Error opening file!',13,\ db 'Error opening file!',13,\
'Maybe the file name is not entered correctly.',13,\ 'Maybe the file name is not entered correctly.',13,\
' (error code =' ' (error code ='
@ -581,7 +609,7 @@ msgbox_4:
msgbox_5: msgbox_5:
db 3,0 db 3,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'Save changes to the file?',0 db 'Save changes to the file?',0
db 'Discard',0 db 'Discard',0
db 'Cancel',0 db 'Cancel',0
@ -592,7 +620,7 @@ msgbox_5_funct:
msgbox_6: msgbox_6:
db 1,0 db 1,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'Error saving file!',13,\ db 'Error saving file!',13,\
'Maybe the file name is not entered correctly.',13,\ 'Maybe the file name is not entered correctly.',13,\
' (error code =' ' (error code ='
@ -602,7 +630,7 @@ msgbox_6:
db 0 db 0
msgbox_7: msgbox_7:
db 1,0 db 1,0
db 'Text not found.',0 ;+2 = +MB_TEXT_OFFSET db 'Text not found.',0
db 'Reached end of the document.',13,\ db 'Reached end of the document.',13,\
'Try to go to the beginning of the document',13,\ 'Try to go to the beginning of the document',13,\
'or change the query and search again.',0 'or change the query and search again.',0
@ -610,20 +638,26 @@ msgbox_7:
db 0 db 0
msgbox_8: msgbox_8:
db 3,0 db 3,0
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET db 'Warning',0
db 'To quit, quit the file.',13,\ db 'To quit, quit the file.',13,\
'Try to keep changes to a file',13,\ 'Try to keep changes to a file',13,\
'or start a new blank file.',0 'or start a new blank file.',0
db 'Cancel',0 db 'Cancel',0
db 0 db 0
msgbox_9:
db 3,0
db 'Warning',0
db 'Error run ',39,'open file dialog',39,0
db 'Close',0
db 0
txtFile db 'File:',0
txtFindCapt db 'Search',0 txtFindCapt db 'Search',0
txtFindNext db 'Find next',0 txtFindNext db 'Find next',0
txtFormatCapt db 'Format',0 txtFormatCapt db 'Format',0
txtFormatApply db 'Apply',0 txtFormatApply db 'Apply',0
end if end if
;------
KM_SHIFT equ 0x00010000 KM_SHIFT equ 0x00010000
KM_CTRL equ 0x00020000 KM_CTRL equ 0x00020000

View File

@ -25,6 +25,9 @@ include '../../develop/libraries/box_lib/load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include 'lang.inc' include 'lang.inc'
include '../../develop/libraries/box_lib/asm/trunk/opendial.mac'
use_OpenDialog
include 't_data.inc' include 't_data.inc'
include 'strlen.inc' include 'strlen.inc'
include 't_draw.inc' ;draw main window functions include 't_draw.inc' ;draw main window functions
@ -47,7 +50,7 @@ start:
mov esi,file_name mov esi,file_name
call strlen call strlen
mov ecx,eax mov ecx,eax
mov edi,buf_cmd_lin mov edi,openfile_path
rep movsb ;ª®¯¨à㥬 ¨¬ï ä ©«  ¢ ¡ãä¥à edit1 rep movsb ;ª®¯¨à㥬 ¨¬ï ä ©«  ¢ ¡ãä¥à edit1
load_libraries l_libs_start,load_lib_end load_libraries l_libs_start,load_lib_end
@ -67,7 +70,9 @@ load_libraries l_libs_start,load_lib_end
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
stdcall [ted_init], tedit0 stdcall [ted_init], tedit0
stdcall dword[tl_data_init], tree1 stdcall dword[tl_data_init], tree1
;---------------------------------------------------------------------
; OpenDialog initialisation
init_OpenDialog OpenDialog_data
; init bmp file ; init bmp file
mov ecx,1200*18 mov ecx,1200*18
@ -170,9 +175,9 @@ mov ecx,ebx
stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name
;--- get cmd line --- ;--- get cmd line ---
cmp byte[buf_cmd_lin+3],0 ;buf_cmd_lin cmp byte[openfile_path+3],0 ;openfile_path
je @f ;if file names exist je @f ;if file names exist
mov esi,buf_cmd_lin mov esi,openfile_path
call strlen ;eax=strlen call strlen ;eax=strlen
mov [edit1.size],eax mov [edit1.size],eax
call but_no_msg_OpenFile call but_no_msg_OpenFile
@ -180,11 +185,31 @@ mov ecx,ebx
align 4 align 4
red_win: red_win:
call draw_window
align 4
still:
mov eax,10
mcall
cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
jz red_win
cmp al,2
jz key
cmp al,3
jz button
cmp al,6
jz mouse
jmp still
align 4
draw_window:
mcall 12,1 mcall 12,1
xor eax,eax xor eax,eax
mov ebx,10*65536+485 mov ebx,10*65536+485
mov ecx,10*65536+280 mov ecx,10*65536+320
mov edx,[sc.work] mov edx,[sc.work]
or edx,0x73000000 or edx,0x73000000
mov edi,hed mov edi,hed
@ -202,6 +227,13 @@ red_win:
inc bx inc bx
int 0x40 int 0x40
mov eax,4
mov ebx,185*65536+9
mov ecx,[sc.work_text]
or ecx,0x80000000
mov edx,txtFile
int 0x40
stdcall [edit_box_draw], dword edit1 stdcall [edit_box_draw], dword edit1
stdcall [menu_bar_draw], dword menu_data_1 stdcall [menu_bar_draw], dword menu_data_1
@ -231,23 +263,7 @@ red_win:
@@: @@:
mcall 12,2 mcall 12,2
ret
align 4
still:
mov eax,10
mcall
cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
jz red_win
cmp al,2
jz key
cmp al,3
jz button
cmp al,6
jz mouse
jmp still
align 4 align 4
mouse: mouse:
@ -490,10 +506,9 @@ button:
txtErrIni0 db '<27>¥ ®âªàë«áï ä ©« á ¨ª®­ª ¬¨',0 txtErrIni0 db '<27>¥ ®âªàë«áï ä ©« á ¨ª®­ª ¬¨',0
err_ini0 db 0 err_ini0 db 0
edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_cmd_lin, mouse_dd, 0 edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 4090, openfile_path, mouse_dd, 0
edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0 edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
buf_cmd_lin db 302 dup(0)
buf_find db 302 dup(0) buf_find db 302 dup(0)
if lang eq ru if lang eq ru
@ -522,6 +537,7 @@ load_lib_end:
i_end: i_end:
rb 1024
align 16 align 16
procinfo process_information procinfo process_information
thread: thread:
@ -533,6 +549,12 @@ stacktop:
rb 4096 rb 4096
file_name_rez: file_name_rez:
rb 4096 rb 4096
plugin_path:
rb 4096
openfile_path:
rb 4096
filename_area:
rb 256
file_info: file_info:
rb 40 rb 40
mem: mem: