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/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:

View File

@ -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>

View File

@ -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

View File

@ -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:

View File

@ -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,48 +10,36 @@ 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
myimport:
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
scrollbar_ver_draw dd aScrollbar_ver_draw
scrollbar_ver_mouse dd aScrollbar_ver_mouse
scrollbar_hor_draw dd aScrollbar_hor_draw
scrollbar_hor_mouse dd aScrollbar_hor_mouse
;version_scrollbar dd aVersion_scrollbar
scrollbar_ver_draw dd aScrollbar_ver_draw
scrollbar_ver_mouse dd aScrollbar_ver_mouse
scrollbar_hor_draw dd aScrollbar_hor_draw
scrollbar_hor_mouse dd aScrollbar_hor_mouse
;version_scrollbar dd aVersion_scrollbar
;dinamic_button_draw dd aDbutton_draw
;dinamic_button_mouse dd aDbutton_mouse
;version_dbutton dd aVersion_dbutton
;dinamic_button_draw dd aDbutton_draw
;dinamic_button_mouse dd aDbutton_mouse
;version_dbutton dd aVersion_dbutton
menu_bar_draw dd aMenu_bar_draw
menu_bar_mouse dd aMenu_bar_mouse
;version_menu_bar dd aVersion_menu_bar
menu_bar_draw dd aMenu_bar_draw
menu_bar_mouse dd aMenu_bar_mouse
;version_menu_bar dd aVersion_menu_bar
tl_data_init dd sz_tl_data_init
tl_data_clear dd sz_tl_data_clear
@ -73,60 +60,60 @@ menu_bar_mouse dd aMenu_bar_mouse
tl_node_lev_inc dd sz_tl_node_lev_inc
tl_node_lev_dec dd sz_tl_node_lev_dec
ted_but_save_file dd sz_ted_but_save_file
ted_but_sumb_upper dd sz_ted_but_sumb_upper
ted_but_sumb_lover dd sz_ted_but_sumb_lover
ted_can_save dd sz_ted_can_save
ted_clear dd sz_ted_clear
ted_delete dd sz_ted_delete
ted_draw dd sz_ted_draw
ted_init dd sz_ted_init
ted_init_scroll_bars dd sz_ted_init_scroll_bars
ted_init_syntax_file dd sz_ted_init_syntax_file
ted_is_select dd sz_ted_is_select
ted_key dd sz_ted_key
ted_mouse dd sz_ted_mouse
ted_open_file dd sz_ted_open_file
ted_text_add dd sz_ted_text_add
ted_but_select_word dd sz_ted_but_select_word
ted_but_cut dd sz_ted_but_cut
ted_but_copy dd sz_ted_but_copy
ted_but_paste dd sz_ted_but_paste
ted_but_undo dd sz_ted_but_undo
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
ted_but_save_file dd sz_ted_but_save_file
ted_but_sumb_upper dd sz_ted_but_sumb_upper
ted_but_sumb_lover dd sz_ted_but_sumb_lover
ted_can_save dd sz_ted_can_save
ted_clear dd sz_ted_clear
ted_delete dd sz_ted_delete
ted_draw dd sz_ted_draw
ted_init dd sz_ted_init
ted_init_scroll_bars dd sz_ted_init_scroll_bars
ted_init_syntax_file dd sz_ted_init_syntax_file
ted_is_select dd sz_ted_is_select
ted_key dd sz_ted_key
ted_mouse dd sz_ted_mouse
ted_open_file dd sz_ted_open_file
ted_text_add dd sz_ted_text_add
ted_but_select_word dd sz_ted_but_select_word
ted_but_cut dd sz_ted_but_cut
ted_but_copy dd sz_ted_but_copy
ted_but_paste dd sz_ted_but_paste
ted_but_undo dd sz_ted_but_undo
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
dd 0,0
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
aScrollbar_ver_draw db 'scrollbar_v_draw',0
aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
aScrollbar_hor_draw db 'scrollbar_h_draw',0
aScrollbar_hor_mouse db 'scrollbar_h_mouse',0
;aVersion_scrollbar db 'version_scrollbar',0
aScrollbar_ver_draw db 'scrollbar_v_draw',0
aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
aScrollbar_hor_draw db 'scrollbar_h_draw',0
aScrollbar_hor_mouse db 'scrollbar_h_mouse',0
;aVersion_scrollbar db 'version_scrollbar',0
;aDbutton_draw db 'dbutton_draw',0
;aDbutton_mouse db 'dbutton_mouse',0
;aVersion_dbutton db 'version_dbutton',0
;aDbutton_draw db 'dbutton_draw',0
;aDbutton_mouse db 'dbutton_mouse',0
;aVersion_dbutton db 'version_dbutton',0
aMenu_bar_draw db 'menu_bar_draw',0
aMenu_bar_mouse db 'menu_bar_mouse',0
;aVersion_menu_bar db 'version_menu_bar',0
aMenu_bar_draw db 'menu_bar_draw',0
aMenu_bar_mouse db 'menu_bar_mouse',0
;aVersion_menu_bar db 'version_menu_bar',0
sz_tl_data_init db 'tl_data_init',0
sz_tl_data_clear db 'tl_data_clear',0
@ -147,38 +134,38 @@ aMenu_bar_mouse db 'menu_bar_mouse',0
sz_tl_node_lev_inc db 'tl_node_lev_inc',0
sz_tl_node_lev_dec db 'tl_node_lev_dec',0
sz_ted_but_save_file db 'ted_but_save_file',0
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0
sz_ted_can_save db 'ted_can_save',0
sz_ted_clear db 'ted_clear',0
sz_ted_delete db 'ted_delete',0
sz_ted_draw db 'ted_draw',0
sz_ted_init db 'ted_init',0
sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
sz_ted_init_syntax_file db 'ted_init_syntax_file',0
sz_ted_is_select db 'ted_is_select',0
sz_ted_key db 'ted_key',0
sz_ted_mouse db 'ted_mouse',0
sz_ted_open_file db 'ted_open_file',0
sz_ted_text_add db 'ted_text_add',0
sz_ted_but_select_word db 'ted_but_select_word',0
sz_ted_but_cut db 'ted_but_cut',0
sz_ted_but_copy db 'ted_but_copy',0
sz_ted_but_paste db 'ted_but_paste',0
sz_ted_but_undo db 'ted_but_undo',0
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_but_save_file db 'ted_but_save_file',0
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0
sz_ted_can_save db 'ted_can_save',0
sz_ted_clear db 'ted_clear',0
sz_ted_delete db 'ted_delete',0
sz_ted_draw db 'ted_draw',0
sz_ted_init db 'ted_init',0
sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
sz_ted_init_syntax_file db 'ted_init_syntax_file',0
sz_ted_is_select db 'ted_is_select',0
sz_ted_key db 'ted_key',0
sz_ted_mouse db 'ted_mouse',0
sz_ted_open_file db 'ted_open_file',0
sz_ted_text_add db 'ted_text_add',0
sz_ted_but_select_word db 'ted_but_select_word',0
sz_ted_but_cut db 'ted_but_cut',0
sz_ted_but_copy db 'ted_but_copy',0
sz_ted_but_paste db 'ted_but_paste',0
sz_ted_but_undo db 'ted_but_undo',0
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
;--------------------------------------------------
align 4
msgbox_lib_import:
mb_create dd amb_create
mb_reinit dd amb_reinit
mb_setfunctions dd amb_setfunctions
dd 0,0
dd 0,0
amb_create db 'mb_create',0
amb_reinit db 'mb_reinit',0
amb_setfunctions db 'mb_setfunctions',0
@ -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

View File

@ -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: