forked from KolibriOS/kolibrios
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:
parent
18f7c161ab
commit
a5e9346baa
@ -19,6 +19,8 @@ include 'dll.inc'
|
||||
|
||||
include '../../develop/libraries/box_lib/load_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_h equ 325 ;¬¨¨¬ «ì ï ¢ëá®â ®ª
|
||||
@ -109,19 +111,16 @@ start:
|
||||
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
|
||||
|
||||
; init bmp file
|
||||
push dword RGB_TILE_SIZE+300 ;300 - § Ї блҐ Ў ©вл б гзҐв®¬ § Ј®«®ўЄ bmp д ©«
|
||||
call mem.Alloc
|
||||
stdcall mem.Alloc, dword RGB_TILE_SIZE+300 ;300 - § ¯ áë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª bmp ä ©«
|
||||
mov [bmp_icon],eax
|
||||
|
||||
stdcall array_tile_function, tile_00,max_tiles_count,tile_init
|
||||
stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols
|
||||
|
||||
push dword TREE_ICON_SYS16_BMP_SIZE
|
||||
call mem.Alloc
|
||||
stdcall mem.Alloc, dword TREE_ICON_SYS16_BMP_SIZE
|
||||
mov [tree_sys_icon],eax
|
||||
|
||||
push dword TREE_ICON_NOD16_BMP_SIZE
|
||||
call mem.Alloc
|
||||
stdcall mem.Alloc, dword TREE_ICON_NOD16_BMP_SIZE
|
||||
mov [tree_nod_icon],eax
|
||||
|
||||
copy_path fn_icon1,sys_path,file_name,0x0
|
||||
@ -173,10 +172,15 @@ start:
|
||||
|
||||
mov byte[file_name],0
|
||||
|
||||
; OpenDialog initialisation
|
||||
init_OpenDialog OpenDialog_data
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_win
|
||||
call draw_window
|
||||
call but_MetLoad
|
||||
|
||||
align 4
|
||||
still:
|
||||
mov eax,10
|
||||
mcall
|
||||
@ -201,6 +205,7 @@ still:
|
||||
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
key:
|
||||
push eax ebx
|
||||
mcall 2
|
||||
@ -212,13 +217,13 @@ key:
|
||||
push dword tree2
|
||||
call [tl_key]
|
||||
|
||||
mov ebx,dword[el_focus] ;что-бы карта не двигалась если окна treelist в фокусе
|
||||
mov ebx,dword[el_focus] ;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ®ª treelist ¢ 䮪ãá¥
|
||||
cmp ebx, dword tree1
|
||||
je .end_f
|
||||
cmp ebx, dword tree2
|
||||
je .end_f
|
||||
|
||||
;что-бы карта не двигалась если текстовые поля в фокусе
|
||||
;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ⥪áâ®¢ë¥ ¯®«ï ¢ 䮪ãá¥
|
||||
test word[edit1.flags],10b ;ed_focus
|
||||
jne .end_f
|
||||
test word[edit2.flags],10b ;ed_focus
|
||||
@ -266,7 +271,7 @@ key:
|
||||
|
||||
|
||||
align 4
|
||||
draw_win:
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
|
||||
@ -301,8 +306,7 @@ pushad
|
||||
stdcall dword[tl_draw],dword tree1
|
||||
stdcall dword[tl_draw],dword tree2
|
||||
mov dword[wScrMetki.all_redraw],1
|
||||
push dword wScrMetki
|
||||
call [scrollbar_ver_draw]
|
||||
stdcall [scrollbar_ver_draw], dword wScrMetki
|
||||
|
||||
mov eax,8 ;ª®¯ª
|
||||
mov ebx,145*65536+20
|
||||
@ -316,6 +320,11 @@ pushad
|
||||
mov edx,5
|
||||
int 0x40
|
||||
|
||||
mov ebx,170*65536+40 ;ª®¯ª ¢ë§®¢ ¤¨ «®£ OpenDial
|
||||
;mov ecx,5*65536+25
|
||||
mov edx,13
|
||||
int 0x40
|
||||
|
||||
mov bx,di
|
||||
shl ebx,16
|
||||
mov bx,100
|
||||
@ -351,7 +360,7 @@ pushad
|
||||
shl ebx,16
|
||||
mov bx,30
|
||||
;mov ebx,405*65536+30
|
||||
mov ecx,265*65536+25
|
||||
;mov ecx,265*65536+25
|
||||
mov edx,11
|
||||
int 0x40
|
||||
|
||||
@ -360,7 +369,7 @@ pushad
|
||||
shl ebx,16
|
||||
mov bx,30
|
||||
;mov ebx,370*65536+30
|
||||
mov ecx,265*65536+25
|
||||
;mov ecx,265*65536+25
|
||||
mov edx,10
|
||||
int 0x40
|
||||
|
||||
@ -446,11 +455,8 @@ pushad
|
||||
|
||||
call draw_tiles
|
||||
|
||||
push dword ch2
|
||||
call [check_box_draw]
|
||||
push dword ch1
|
||||
call [check_box_draw]
|
||||
|
||||
stdcall [check_box_draw], dword ch1
|
||||
stdcall [check_box_draw], dword ch2
|
||||
stdcall [edit_box_draw], edit1
|
||||
stdcall [edit_box_draw], edit2
|
||||
|
||||
@ -522,6 +528,10 @@ button:
|
||||
jne @f
|
||||
call fun_goto_met
|
||||
@@:
|
||||
cmp ah,13 ;¤¨ «®£ OpenDialog ¤«ï ¯®¨áª ¯ ¯ª¨
|
||||
jne @f
|
||||
call fun_opn_dlg
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
|
||||
@ -531,10 +541,10 @@ button:
|
||||
stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy
|
||||
|
||||
stdcall dword[tl_data_clear], tree1
|
||||
mov dword[tree2.data_img_sys],0 ;чистим указатель на системные иконки,
|
||||
;т. к. они были удалены верхней функцией tl_data_clear
|
||||
;повторный вызов tl_data_clear без чистки указателя вызвет ошибку
|
||||
mov dword[tree2.data_img],0 ;чистим указатель на иконки узлов
|
||||
mov dword[tree2.data_img_sys],0 ;ç¨á⨬ 㪠§ ⥫ì á¨áâ¥¬ë¥ ¨ª®ª¨,
|
||||
;â. ª. ®¨ ¡ë«¨ 㤠«¥ë ¢¥à奩 äãªæ¨¥© tl_data_clear
|
||||
;¯®¢â®àë© ¢ë§®¢ tl_data_clear ¡¥§ ç¨á⪨ 㪠§ â¥«ï ¢ë§¢¥â ®è¨¡ªã
|
||||
mov dword[tree2.data_img],0 ;ç¨á⨬ 㪠§ â¥«ì ¨ª®ª¨ 㧫®¢
|
||||
stdcall dword[tl_data_clear], tree2
|
||||
|
||||
; 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 ecx,dword[size] ;ecx = size
|
||||
imul ecx,3
|
||||
@@: ;затемнение цвета пикселей
|
||||
@@: ;§ ⥬¥¨¥ 梥⠯¨ªá¥«¥©
|
||||
shr byte[eax],1
|
||||
and byte[eax],0x7f
|
||||
inc eax
|
||||
@ -559,8 +569,8 @@ proc img_rgb_wdiv2 data_rgb:dword, size:dword
|
||||
mov eax,dword[data_rgb]
|
||||
mov ecx,dword[size] ;ecx = size
|
||||
shr ecx,1
|
||||
@@: ;сложение цветов пикселей
|
||||
mov ebx,dword[eax+3] ;копируем цвет соседнего пикселя
|
||||
@@: ;á«®¦¥¨¥ 梥⮢ ¯¨ªá¥«¥©
|
||||
mov ebx,dword[eax+3] ;ª®¯¨à㥬 梥â á®á¥¤¥£® ¯¨ªá¥«ï
|
||||
add word[eax],bx
|
||||
shr ebx,16
|
||||
add byte[eax+2],bl
|
||||
@ -574,8 +584,8 @@ proc img_rgb_wdiv2 data_rgb:dword, size:dword
|
||||
add ebx,3
|
||||
mov ecx,dword[size] ;ecx = size
|
||||
shr ecx,1
|
||||
dec ecx ;лишний пиксель
|
||||
@@: ;поджатие пикселей
|
||||
dec ecx ;«¨è¨© ¯¨ªá¥«ì
|
||||
@@: ;¯®¤¦ ⨥ ¯¨ªá¥«¥©
|
||||
mov edx,dword[ebx]
|
||||
mov word[eax],dx
|
||||
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 ecx,dword[size] ;ecx = size
|
||||
imul ecx,3
|
||||
@@: ;затемнение цвета пикселей
|
||||
@@: ;§ ⥬¥¨¥ 梥⠯¨ªá¥«¥©
|
||||
shr byte[eax],1
|
||||
and byte[eax],0x7f
|
||||
inc eax
|
||||
@ -614,8 +624,8 @@ proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
|
||||
mov ecx,dword[size] ;ecx = size
|
||||
shr ecx,1
|
||||
xor edi,edi
|
||||
@@: ;сложение цветов пикселей
|
||||
mov edx,dword[ebx] ;копируем цвет нижнего пикселя
|
||||
@@: ;á«®¦¥¨¥ 梥⮢ ¯¨ªá¥«¥©
|
||||
mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠨¦¥£® ¯¨ªá¥«ï
|
||||
add word[eax],dx
|
||||
shr edx,16
|
||||
add byte[eax+2],dl
|
||||
@ -638,10 +648,10 @@ proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
|
||||
add ebx,eax
|
||||
mov ecx,dword[size] ;ecx = size
|
||||
shr ecx,1
|
||||
sub ecx,dword[size_w] ;лишняя строка пикселей
|
||||
sub ecx,dword[size_w] ;«¨èïï áâப ¯¨ªá¥«¥©
|
||||
xor edi,edi
|
||||
@@: ;поджатие пикселей
|
||||
mov edx,dword[ebx] ;копируем цвет нижнего пикселя
|
||||
@@: ;¯®¤¦ ⨥ ¯¨ªá¥«¥©
|
||||
mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠨¦¥£® ¯¨ªá¥«ï
|
||||
mov word[eax],dx
|
||||
shr edx,16
|
||||
mov byte[eax+2],dl
|
||||
@ -835,6 +845,24 @@ proc mem_clear, mem:dword, len:dword
|
||||
ret
|
||||
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_dn db 25,0
|
||||
txt_met_sh db '*',0
|
||||
@ -855,7 +883,7 @@ checkboxes_end:
|
||||
ch_text1 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
|
||||
editboxes_end:
|
||||
|
||||
@ -901,7 +929,6 @@ wScrMetki:
|
||||
.ar_offset dd 1 ;+84
|
||||
|
||||
ed_buffer: ;òåêñò äëÿ edit
|
||||
.1: rb 502
|
||||
.2: rb 32
|
||||
|
||||
el_focus dd tree1
|
||||
@ -917,20 +944,50 @@ run_file_70 FileInfoBlock
|
||||
|
||||
txt_tile_path db 'tile path',0
|
||||
rb 300
|
||||
txt_tile_type dd txt_tile_type_0 ;указатель на выбранный тип файлов
|
||||
txt_tile_type dd txt_tile_type_0 ;㪠§ â¥«ì ¢ë¡à ë© â¨¯ ä ©«®¢
|
||||
txt_tile_type_0 db 0
|
||||
rb 10
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
map: ;координаты карты
|
||||
.coord_x dd 0 ;координата x
|
||||
.coord_y dd 0 ;координата y
|
||||
.zoom db 1 ;масштаб
|
||||
OpenDialog_data:
|
||||
.type dd 2
|
||||
.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 'TXT',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
align 4
|
||||
map: ;ª®®à¤¨ âë ª àâë
|
||||
.coord_x dd 0 ;ª®®à¤¨ â x
|
||||
.coord_y dd 0 ;ª®®à¤¨ â y
|
||||
.zoom db 1 ;¬ áèâ ¡
|
||||
|
||||
align 4
|
||||
tile_00 rb size_tile_struc * max_tiles_count
|
||||
|
||||
;этот код не мой, он преобразует число в строку
|
||||
;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
|
||||
;input:
|
||||
; eax = value
|
||||
; edi = string buffer
|
||||
@ -946,32 +1003,39 @@ tl_convert_to_str:
|
||||
|
||||
align 4
|
||||
.str:
|
||||
mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число
|
||||
;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной
|
||||
cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax
|
||||
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«®
|
||||
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®©
|
||||
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax
|
||||
jb @f
|
||||
xor edx,edx ;очистить edx
|
||||
div ecx ;разделить - остаток в edx
|
||||
push edx ;положить в стек
|
||||
;dec edi ;смещение необходимое для записи с конца строки
|
||||
call .str;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx
|
||||
xor edx,edx ;®ç¨áâ¨âì edx
|
||||
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx
|
||||
push edx ;¯®«®¦¨âì ¢ á⥪
|
||||
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨
|
||||
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx
|
||||
pop eax
|
||||
@@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная))
|
||||
or al,0x30 ;данная команда короче чем две выше
|
||||
stosb ;записать элемент из регистра al в ячеку памяти es:edi
|
||||
ret ;вернуться чень интересный ход т.к. пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться
|
||||
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï))
|
||||
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
|
||||
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi
|
||||
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
|
||||
|
||||
|
||||
hed db 'Planet viewer 26.03.10',0 ;Ї®¤ЇЁбм ®Є
|
||||
hed db 'Planet viewer 27.05.10',0 ;¯®¤¯¨áì ®ª
|
||||
|
||||
sc system_colors ;á¨áâ¥¬ë¥ æ¢¥â
|
||||
mouse_dd dd 0 ;㦮 ¤«ï Shift- ¢ editbox
|
||||
i_end:
|
||||
rb 1024
|
||||
align 16
|
||||
procinfo process_information
|
||||
stacktop:
|
||||
sys_path rb 4096
|
||||
file_name:
|
||||
rb 4096
|
||||
i_end:
|
||||
procinfo process_information
|
||||
rb 1024
|
||||
stacktop:
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
mem:
|
||||
|
||||
|
@ -48,7 +48,7 @@ table
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>TextEditor версия от 29.04.2010</h1>
|
||||
<h1>TextEditor версия от 27.05.2010</h1>
|
||||
<h2>О программе</h2>
|
||||
<p>Программа для работы с текстовыми файлами.
|
||||
Лицензия свободная.</p>
|
||||
@ -77,7 +77,7 @@ table
|
||||
<tr><td>Многократная отмена/повтор действий</td>
|
||||
<td>нет</td><td>есть</td></tr>
|
||||
<tr><td>Ограничения на размер файлов</td>
|
||||
<td>нет</td><td>есть</td></tr>
|
||||
<td>нет</td><td>есть при открытии файлов, при редактировании нет</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>Некоторые недоработки</h2>
|
||||
@ -147,7 +147,7 @@ ends</pre>
|
||||
<ul>
|
||||
<li>Евтихов Максим (Maxxxx32) - элемент EditBox.</li>
|
||||
<li>Алексей Теплов (Lrz) - элемент EditBox, макрос load_library.</li>
|
||||
<li>Mario79 - элемент скроллинг.</li>
|
||||
<li>Mario79 - элементы: скроллинги, меню, OpenDial.</li>
|
||||
<li>Diamond - за программу KlbrInWin, и помощь при написании программы.</li>
|
||||
<li>Insolor - за тестирование программы на ошибки.</li>
|
||||
<li>Leency и другим, кто помогал на форуме советами.</li>
|
||||
|
@ -28,8 +28,7 @@
|
||||
; destroys : nothing
|
||||
;********************************************************************
|
||||
strlen:
|
||||
push ecx
|
||||
push edi
|
||||
push ecx edi
|
||||
pushfd
|
||||
cld ; !
|
||||
mov ecx,-1
|
||||
@ -40,8 +39,7 @@ strlen:
|
||||
sub eax,esi
|
||||
dec eax
|
||||
popfd
|
||||
pop edi
|
||||
pop ecx
|
||||
pop edi ecx
|
||||
ret
|
||||
|
||||
|
||||
@ -51,8 +49,7 @@ strlen:
|
||||
; Copyright (c) 2009 Igor Afanasiev
|
||||
|
||||
linlen:
|
||||
push ecx
|
||||
push edi
|
||||
push ecx edi
|
||||
pushfd
|
||||
cld ; !
|
||||
mov ecx,eax
|
||||
@ -64,8 +61,7 @@ linlen:
|
||||
sub eax,esi
|
||||
dec eax
|
||||
popfd
|
||||
pop edi
|
||||
pop ecx
|
||||
pop edi ecx
|
||||
ret
|
||||
;%endif
|
||||
|
||||
|
@ -26,7 +26,7 @@ struct symbol
|
||||
ends
|
||||
|
||||
|
||||
hed db 'TextEditor 17.05.10',0 ;¯®¤¯¨áì ®ª
|
||||
hed db 'TextEditor 27.05.10',0 ;¯®¤¯¨áì ®ª
|
||||
sc system_colors
|
||||
|
||||
fn_icon db 'te_icon.bmp',0
|
||||
@ -126,7 +126,8 @@ but_no_msg_OpenFile:
|
||||
; äãªæ¨ï ®âªàëâ¨ï ä ©« á ¢®§¬®¦ë¬ ®ª®¬ á®®¡é¥¨ï (® ¢®§¬®¦®á⨠®â¬¥¨âì ®âªàë⨥)
|
||||
align 4
|
||||
ted_but_open_file:
|
||||
push eax ebx
|
||||
pushad
|
||||
|
||||
stdcall [ted_can_save], tedit0
|
||||
cmp al,1
|
||||
jne @f
|
||||
@ -134,10 +135,24 @@ ted_but_open_file:
|
||||
stdcall [mb_setfunctions],msgbox_5_funct
|
||||
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]
|
||||
call ted_messages_after_open_file
|
||||
.ret_f:
|
||||
pop ebx eax
|
||||
popad
|
||||
ret
|
||||
|
||||
;input:
|
||||
|
@ -1,4 +1,3 @@
|
||||
;--- äàííûå ïðîãðàììû ----------------------------------------------
|
||||
fn_col_option dd def_col_file
|
||||
fn_syntax_dir db 'info/',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_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
|
||||
@ -97,7 +84,7 @@ ted_but_redo dd sz_ted_but_redo
|
||||
ted_but_reverse dd sz_ted_but_reverse
|
||||
ted_but_find_next dd sz_ted_but_find_next
|
||||
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
|
||||
|
||||
@ -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_find_next db 'ted_but_find_next',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
|
||||
msgbox_lib_import:
|
||||
@ -252,7 +239,7 @@ hScr:
|
||||
.ar_offset dd 1 ;+84
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
ws_dir_lbox: ;äî÷åðíèé ñêðîëëèíã äëÿ ýëåìåíòà ListBox
|
||||
ws_dir_lbox: ;¤®ç¥à¨© áªà®««¨£ ¤«ï í«¥¬¥â ListBox
|
||||
.x:
|
||||
.size_x dw 16 ;+0
|
||||
.start_x dw 0 ;+2
|
||||
@ -326,14 +313,50 @@ menu_data_1:
|
||||
.font_height dd 8 ;+108
|
||||
.cursor_out dd 0 ;+112
|
||||
.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_FIND equ 1 ;¯ ¥«ì ¯®¨áª
|
||||
TED_PANEL_SYNTAX equ 2 ;¯ ¥«ì ¢ë¡®à ä ©«®¢ ¯®¤á¢¥âª¨
|
||||
TED_PANEL_WIDTH equ 150 ;è¨à¨ ¯ ¥«¨
|
||||
|
||||
count_of_dir_list_files equ 15
|
||||
count_of_dir_list_files equ 15 ;¬ ªá¨¬ «ì®¥ ç¨á«® ä ©«®¢ á¨â ªá¨á ¯®ª §ë¢ ¥¬ëå ¢ ®ª¥ í«¥¬¥â tree1
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
struct TexSelect
|
||||
@ -436,7 +459,6 @@ db '
|
||||
.end:
|
||||
db 0
|
||||
|
||||
;--------
|
||||
msgbox_1:
|
||||
dw 0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
@ -447,7 +469,7 @@ msgbox_1:
|
||||
db 0
|
||||
msgbox_2:
|
||||
db 3,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db '‘®åà ¨âì ¨§¬¥¥¨ï ¢ ä ©«¥?',0
|
||||
db '‘®åà ¨âì',0
|
||||
db '<27>¥ á®åà ïâì',0
|
||||
@ -460,7 +482,7 @@ msgbox_2_funct:
|
||||
|
||||
msgbox_3:
|
||||
db 1,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db 'Žè¨¡ª ¯à¨ ®âªàë⨨ ä ©« á 梥⮢묨 áâனª ¬¨!',13,\
|
||||
'<27>®â®¬ã ¢ë¤¥«¥¨¥ á«®¢ 梥⮬ ¥ ¢®§¬®¦®.',13,\
|
||||
' (ª®¤ ®è¨¡ª¨ ='
|
||||
@ -471,7 +493,7 @@ msgbox_3:
|
||||
|
||||
msgbox_4:
|
||||
db 1,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db 'Žè¨¡ª ¯à¨ ®âªàë⨨ ä ©« !',13,\
|
||||
'‚®§¬®¦® ¨¬ï ä ©« ¢¢¥¤¥® ¥ ¯à ¢¨«ì®.',13,\
|
||||
' (ª®¤ ®è¨¡ª¨ ='
|
||||
@ -482,7 +504,7 @@ msgbox_4:
|
||||
|
||||
msgbox_5:
|
||||
db 3,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db '‘®åà ¨âì ¨§¬¥¥¨ï ¢ ä ©«¥?',0
|
||||
db '<27>¥ á®åà ïâì',0
|
||||
db 'Žâ¬¥ ',0
|
||||
@ -493,7 +515,7 @@ msgbox_5_funct:
|
||||
|
||||
msgbox_6:
|
||||
db 1,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db 'Žè¨¡ª ¯à¨ á®åà ¥¨¨ ä ©« !',13,\
|
||||
'‚®§¬®¦® ¨¬ï ä ©« ¢¢¥¤¥® ¥ ¯à ¢¨«ì®.',13,\
|
||||
' (ª®¤ ®è¨¡ª¨ ='
|
||||
@ -503,7 +525,7 @@ msgbox_6:
|
||||
db 0
|
||||
msgbox_7:
|
||||
db 1,0
|
||||
db '’¥ªáâ ¥ ©¤¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '’¥ªáâ ¥ ©¤¥',0
|
||||
db '„®á⨣ãâ ª®¥æ ¤®ªã¬¥â .',13,\
|
||||
'<27>®¯à®¡ã©â¥ ¯¥à¥©â¨ ¢ ç «® ¤®ªã¬¥â ',13,\
|
||||
'¨«¨ ¨§¬¥¨âì § ¯à®á ¨ ¯®¢â®à¨âì ¯®¨áª.',0
|
||||
@ -511,13 +533,20 @@ msgbox_7:
|
||||
db 0
|
||||
msgbox_8:
|
||||
db 3,0
|
||||
db '‚¨¬ ¨¥',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db '‚¨¬ ¨¥',0
|
||||
db '„«ï ¢ë室 § ¢¥àè¨â¥ à ¡®âã á ä ©«®¬.',13,\
|
||||
'<27>®¯à®¡ã©â¥ á®åà ¨âì ¨§¬¥¥¨ï ¢ ä ©«¥',13,\
|
||||
'¨«¨ ç âì ®¢ë© ¯ãá⮩.',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
|
||||
txtFindNext db '<27> ©â¨ ¤ «¥¥',0
|
||||
txtFormatCapt db '”®à¬ â',0
|
||||
@ -535,7 +564,6 @@ db 'Exit',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
;--------
|
||||
msgbox_1:
|
||||
dw 0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
@ -546,7 +574,7 @@ msgbox_1:
|
||||
db 0
|
||||
msgbox_2:
|
||||
db 3,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'Save changes to the file?',0
|
||||
db 'Save',0
|
||||
db 'Discard',0
|
||||
@ -559,7 +587,7 @@ msgbox_2_funct:
|
||||
|
||||
msgbox_3:
|
||||
db 1,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'Error opening the file with the color settings!',13,\
|
||||
'Because color selection of words is not possible.',13,\
|
||||
' (error code ='
|
||||
@ -570,7 +598,7 @@ msgbox_3:
|
||||
|
||||
msgbox_4:
|
||||
db 1,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'Error opening file!',13,\
|
||||
'Maybe the file name is not entered correctly.',13,\
|
||||
' (error code ='
|
||||
@ -581,7 +609,7 @@ msgbox_4:
|
||||
|
||||
msgbox_5:
|
||||
db 3,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'Save changes to the file?',0
|
||||
db 'Discard',0
|
||||
db 'Cancel',0
|
||||
@ -592,7 +620,7 @@ msgbox_5_funct:
|
||||
|
||||
msgbox_6:
|
||||
db 1,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'Error saving file!',13,\
|
||||
'Maybe the file name is not entered correctly.',13,\
|
||||
' (error code ='
|
||||
@ -602,7 +630,7 @@ msgbox_6:
|
||||
db 0
|
||||
msgbox_7:
|
||||
db 1,0
|
||||
db 'Text not found.',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Text not found.',0
|
||||
db 'Reached end of the document.',13,\
|
||||
'Try to go to the beginning of the document',13,\
|
||||
'or change the query and search again.',0
|
||||
@ -610,20 +638,26 @@ msgbox_7:
|
||||
db 0
|
||||
msgbox_8:
|
||||
db 3,0
|
||||
db 'Warning',0 ;+2 = +MB_TEXT_OFFSET
|
||||
db 'Warning',0
|
||||
db 'To quit, quit the file.',13,\
|
||||
'Try to keep changes to a file',13,\
|
||||
'or start a new blank file.',0
|
||||
db 'Cancel',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
|
||||
txtFindNext db 'Find next',0
|
||||
txtFormatCapt db 'Format',0
|
||||
txtFormatApply db 'Apply',0
|
||||
|
||||
end if
|
||||
;------
|
||||
|
||||
KM_SHIFT equ 0x00010000
|
||||
KM_CTRL equ 0x00020000
|
||||
|
@ -25,6 +25,9 @@ include '../../develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
|
||||
include 'lang.inc'
|
||||
include '../../develop/libraries/box_lib/asm/trunk/opendial.mac'
|
||||
use_OpenDialog
|
||||
|
||||
include 't_data.inc'
|
||||
include 'strlen.inc'
|
||||
include 't_draw.inc' ;draw main window functions
|
||||
@ -47,7 +50,7 @@ start:
|
||||
mov esi,file_name
|
||||
call strlen
|
||||
mov ecx,eax
|
||||
mov edi,buf_cmd_lin
|
||||
mov edi,openfile_path
|
||||
rep movsb ;ª®¯¨à㥬 ¨¬ï ä ©« ¢ ¡ãä¥à edit1
|
||||
|
||||
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 dword[tl_data_init], tree1
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; OpenDialog initialisation
|
||||
init_OpenDialog OpenDialog_data
|
||||
|
||||
; init bmp file
|
||||
mov ecx,1200*18
|
||||
@ -170,9 +175,9 @@ mov ecx,ebx
|
||||
stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name
|
||||
|
||||
;--- 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
|
||||
mov esi,buf_cmd_lin
|
||||
mov esi,openfile_path
|
||||
call strlen ;eax=strlen
|
||||
mov [edit1.size],eax
|
||||
call but_no_msg_OpenFile
|
||||
@ -180,11 +185,31 @@ mov ecx,ebx
|
||||
|
||||
align 4
|
||||
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
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,10*65536+485
|
||||
mov ecx,10*65536+280
|
||||
mov ecx,10*65536+320
|
||||
mov edx,[sc.work]
|
||||
or edx,0x73000000
|
||||
mov edi,hed
|
||||
@ -202,6 +227,13 @@ red_win:
|
||||
inc bx
|
||||
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 [menu_bar_draw], dword menu_data_1
|
||||
|
||||
@ -231,23 +263,7 @@ red_win:
|
||||
@@:
|
||||
|
||||
mcall 12,2
|
||||
|
||||
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
|
||||
|
||||
ret
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
@ -490,10 +506,9 @@ button:
|
||||
txtErrIni0 db '<27>¥ ®âªàë«áï ä ©« á ¨ª®ª ¬¨',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
|
||||
|
||||
buf_cmd_lin db 302 dup(0)
|
||||
buf_find db 302 dup(0)
|
||||
|
||||
if lang eq ru
|
||||
@ -522,6 +537,7 @@ load_lib_end:
|
||||
|
||||
|
||||
i_end:
|
||||
rb 1024
|
||||
align 16
|
||||
procinfo process_information
|
||||
thread:
|
||||
@ -533,6 +549,12 @@ stacktop:
|
||||
rb 4096
|
||||
file_name_rez:
|
||||
rb 4096
|
||||
plugin_path:
|
||||
rb 4096
|
||||
openfile_path:
|
||||
rb 4096
|
||||
filename_area:
|
||||
rb 256
|
||||
file_info:
|
||||
rb 40
|
||||
mem:
|
||||
|
Loading…
Reference in New Issue
Block a user