libraries/box_lib: Post-SVN tidy (#433)
- Move source code from `trunk` into root directory. - Update build files and ASM include paths. Add SPDX license header where appropriate. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards [#75](KolibriOS/kolibrios#75), point 3) Reviewed-on: KolibriOS/kolibrios#433 Reviewed-by: Burer <burer@kolibrios.org> Reviewed-by: Ivan B <1+dunkaist@noreply.localhost> Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com> Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
This commit is contained in:
1 parent
f08fe1f2a0
commit
2cda4a9682
106 files changed
+19579
-18766
No files matched your search
@@ -10,7 +10,7 @@ include '../../../programs/proc32.inc'
|
||||
include '../../../programs/macros.inc'
|
||||
purge section,mov,add,sub
|
||||
|
||||
include '../../../programs/develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../../programs/develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../../programs/system/run/txtbut.inc'
|
||||
include '../../../programs/dll.inc'
|
||||
|
||||
|
||||
+1
-1
@@ -508,7 +508,7 @@ tup.append_table(img_files, {
|
||||
{"GAMES/TETRIS", VAR_PROGS .. "/games/tetris/tetris"},
|
||||
{"GAMES/C4", VAR_PROGS .. "/games/c4/c4"},
|
||||
{"LIB/ARCHIVER.OBJ", VAR_PROGS .. "/fs/kfar/kfar_arc/kfar_arc.obj"},
|
||||
{"LIB/BOX_LIB.OBJ", VAR_PROGS .. "/develop/libraries/box_lib/trunk/box_lib.obj"},
|
||||
{"LIB/BOX_LIB.OBJ", VAR_PROGS .. "/develop/libraries/box_lib/box_lib.obj"},
|
||||
{"LIB/BUF2D.OBJ", VAR_PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
|
||||
{"LIB/CONSOLE.OBJ", VAR_PROGS .. "/develop/libraries/console_coff/console.obj"},
|
||||
{"LIB/CNV_PNG.OBJ", VAR_PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
|
||||
|
||||
@@ -101,7 +101,7 @@ fasm develop\cObj\cObj.asm %BIN%\develop\cObj
|
||||
echo *
|
||||
echo Building systems libraries
|
||||
echo *
|
||||
fasm develop\libraries\box_lib\trunk\box_lib.asm %BIN%\lib\box_lib.obj
|
||||
fasm develop\libraries\box_lib\box_lib.asm %BIN%\lib\box_lib.obj
|
||||
fasm develop\libraries\console\console.asm %BIN%\lib\console.obj
|
||||
fasm develop\libraries\libs-dev\libgfx\libgfx.asm %BIN%\lib\libgfx.obj
|
||||
fasm develop\libraries\libs-dev\libimg\libimg.asm %BIN%\lib\libimg.obj
|
||||
|
||||
@@ -27,7 +27,7 @@ include '../../proc32.inc'
|
||||
include '../../macros.inc' ; макросы облегчают жизнь ассемблерщиков!
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
|
||||
@use_library
|
||||
|
||||
@@ -69,7 +69,7 @@ include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../config.inc' ; for nightbuild
|
||||
include '../../macros.inc'
|
||||
include '../libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../libraries/box_lib/box_lib.mac'
|
||||
include '../../load_lib.mac'
|
||||
|
||||
@use_library
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
; SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
; Info3ds - is a program for viewing the structure of *.3ds files
|
||||
; Copyright (C) 2011-2025 KolibriOS team
|
||||
|
||||
@@ -17,7 +18,7 @@ include '../../KOSfuncs.inc'
|
||||
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../develop/libraries/TinyGL/asm_fork/kosgl.inc'
|
||||
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
; SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
; Info3ds_u - is a program for viewing the structure of *.3ds files
|
||||
; Copyright (C) 2015-2025 KolibriOS team
|
||||
|
||||
@@ -17,7 +18,7 @@ include '../../KOSfuncs.inc'
|
||||
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../develop/libraries/TinyGL/asm_fork/kosgl.inc'
|
||||
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -12,7 +12,7 @@ include '../../KOSfuncs.inc'
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../dll.inc'
|
||||
include '../../system/skincfg/kglobals.inc'
|
||||
include '../../system/skincfg/unpacker.inc'
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+423
-421
@@ -1,421 +1,423 @@
|
||||
;*****************************************************************************
|
||||
; Example for Box_lib: scrollbar, menubar, dinamic_button
|
||||
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are met:
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above copyright
|
||||
; notice, this list of conditions and the following disclaimer in the
|
||||
; documentation and/or other materials provided with the distribution.
|
||||
; * Neither the name of the <organization> nor the
|
||||
; names of its contributors may be used to endorse or promote products
|
||||
; derived from this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
|
||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;******************************************************************************
|
||||
; import_boxlib procedure written by <Lrz>
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
use32
|
||||
org 0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd START
|
||||
dd IM_END
|
||||
dd I_END
|
||||
dd stacktop
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
@use_library
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- Start of program ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
mcall SF_SYS_MISC,SSF_HEAP_INIT
|
||||
mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
load_libraries l_libs_start,end_l_libs
|
||||
|
||||
test eax,eax
|
||||
jnz button.exit
|
||||
|
||||
; unpack deflate
|
||||
mov eax,[unpack_DeflateUnpack2]
|
||||
mov [deflate_unpack],eax
|
||||
|
||||
; OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @b
|
||||
|
||||
|
||||
; mov ebx,icons_file_name
|
||||
; mov esi,path
|
||||
; mov edi,file_name
|
||||
|
||||
copy_path icons_file_name,path,library_path,0
|
||||
|
||||
mcall SF_FILE,fileinfo
|
||||
|
||||
mov [fileinfo+0],dword 0
|
||||
|
||||
mov ecx,[file_info+32]
|
||||
mov [fileinfo+12],ecx
|
||||
mov [img_size],ecx
|
||||
|
||||
|
||||
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||
|
||||
|
||||
mov [fileinfo+16],eax
|
||||
mov [image_file],eax
|
||||
|
||||
|
||||
mcall SF_FILE,fileinfo
|
||||
|
||||
xor eax,eax
|
||||
mov [return_code],eax
|
||||
; mov eax,image_file
|
||||
push image_file
|
||||
call [cnv_png_import.Start]
|
||||
|
||||
mcall SF_SYS_MISC,SSF_MEM_FREE,[image_file]
|
||||
|
||||
cmp [return_code],dword 0
|
||||
jne button.exit
|
||||
|
||||
mov ebx,[raw_pointer]
|
||||
mov eax,[ebx+4]
|
||||
; set of button size
|
||||
mov [dinamic_button_data_1.size_x],ax
|
||||
mov [dinamic_button_data_1.size_y],ax
|
||||
mov [dinamic_button_data_2.size_x],ax
|
||||
mov [dinamic_button_data_2.size_y],ax
|
||||
mov eax,[ebx+12]
|
||||
; set of RAW resolution to pixel
|
||||
mov [dinamic_button_data_1.resolution_raw],eax
|
||||
mov [dinamic_button_data_2.resolution_raw],eax
|
||||
mov eax,[ebx+20]
|
||||
add eax,ebx
|
||||
; set RAW palette, use else resolution 8bit or less
|
||||
mov [dinamic_button_data_1.palette_raw],eax
|
||||
mov [dinamic_button_data_2.palette_raw],eax
|
||||
mov eax,[ebx+28]
|
||||
add eax,ebx
|
||||
; set RAW area for passive button
|
||||
mov [dinamic_button_data_1.passive_raw],eax
|
||||
mov [dinamic_button_data_2.passive_raw],eax
|
||||
mov ecx,[ebx+4]
|
||||
imul ecx,[ebx+4]
|
||||
imul ecx,[ebx+12]
|
||||
shr ecx,3
|
||||
add eax,ecx
|
||||
; set RAW area for active button
|
||||
mov [dinamic_button_data_1.active_raw],eax
|
||||
mov [dinamic_button_data_2.active_raw],eax
|
||||
add eax,ecx
|
||||
; RAW area for click button
|
||||
mov [dinamic_button_data_1.click_raw],eax
|
||||
mov [dinamic_button_data_2.click_raw],eax
|
||||
;---------------------------------------------------------------------
|
||||
red:
|
||||
call draw_window
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp eax,EV_REDRAW
|
||||
je red
|
||||
cmp eax,EV_KEY
|
||||
je key
|
||||
cmp eax,EV_BUTTON
|
||||
je button
|
||||
cmp eax,EV_MOUSE
|
||||
je mouse
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
;-----------------------------------------------
|
||||
cmp [scroll_bar_data_horizontal.delta2],0
|
||||
jne .horizontal
|
||||
.vertical:
|
||||
mov eax,[scroll_bar_data_vertical.max_area]
|
||||
cmp eax,[scroll_bar_data_vertical.cur_area]
|
||||
jbe .horizontal
|
||||
; mouse event for Vertical ScrollBar
|
||||
push dword scroll_bar_data_vertical
|
||||
call [scrollbar_v_mouse]
|
||||
mov eax,scroll_bar_data_vertical.redraw
|
||||
xor ebx,ebx
|
||||
cmp [eax],ebx
|
||||
je @f
|
||||
mov [eax],ebx
|
||||
jmp .draw_cube
|
||||
@@:
|
||||
cmp [scroll_bar_data_vertical.delta2],0
|
||||
jne still
|
||||
.horizontal:
|
||||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||||
cmp eax,[scroll_bar_data_horizontal.cur_area]
|
||||
jbe .other
|
||||
; mouse event for Horizontal ScrollBar
|
||||
push dword scroll_bar_data_horizontal
|
||||
call [scrollbar_h_mouse]
|
||||
mov eax,scroll_bar_data_horizontal.redraw
|
||||
xor ebx,ebx
|
||||
cmp [eax],ebx
|
||||
je .other
|
||||
mov [eax],ebx
|
||||
.draw_cube:
|
||||
call draw_cube
|
||||
jmp still
|
||||
.other:
|
||||
cmp [scroll_bar_data_vertical.delta2],0
|
||||
jne still
|
||||
cmp [scroll_bar_data_horizontal.delta2],0
|
||||
jne still
|
||||
;-----------------------------------------------
|
||||
.menu_bar_1:
|
||||
call .set_mouse_flag
|
||||
@@:
|
||||
; mouse event for Menu 1
|
||||
push dword menu_data_1
|
||||
call [menu_bar_mouse]
|
||||
cmp [menu_data_1.click],dword 1
|
||||
jne .menu_bar_2
|
||||
cmp [menu_data_1.cursor_out],dword 0
|
||||
jne analyse_out_menu_1
|
||||
jmp .menu_bar_1
|
||||
;--------------------------------------------
|
||||
.menu_bar_2:
|
||||
; mouse event for Menu 2
|
||||
push dword menu_data_2
|
||||
call [menu_bar_mouse]
|
||||
cmp [menu_data_2.click],dword 1
|
||||
jne .mouse_dinamic_button
|
||||
cmp [menu_data_2.cursor_out],dword 0
|
||||
jne analyse_out_menu_2
|
||||
jmp .menu_bar_1
|
||||
;--------------------------------------------
|
||||
.mouse_dinamic_button:
|
||||
; mouse event for Dinamic Button 1
|
||||
push dword dinamic_button_data_1
|
||||
call [dbutton_mouse]
|
||||
mov eax,dinamic_button_data_1.click
|
||||
cmp [eax],dword 1
|
||||
jne @f
|
||||
mov [eax],dword 0
|
||||
jmp about
|
||||
@@:
|
||||
; mouse event for Dinamic Button 2
|
||||
push dword dinamic_button_data_2
|
||||
call [dbutton_mouse]
|
||||
mov eax,dinamic_button_data_2.click
|
||||
cmp [eax],dword 1
|
||||
jne still ;@f
|
||||
mov [eax],dword 0
|
||||
jmp button.exit
|
||||
;---------------------------------------------------------------------
|
||||
.set_mouse_flag:
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [menu_data_1.get_mouse_flag],eax
|
||||
mov [menu_data_2.get_mouse_flag],eax
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
analyse_out_menu_1:
|
||||
; analyse result of Menu 1
|
||||
mov eax,[menu_data_1.cursor_out]
|
||||
cmp eax,dword 1
|
||||
je OpenDialog_start_0
|
||||
cmp eax,dword 2
|
||||
je OpenDialog_start_1
|
||||
cmp eax,dword 3
|
||||
je OpenDialog_start_2
|
||||
cmp eax,dword 4
|
||||
je button.exit
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
analyse_out_menu_2:
|
||||
; analyse result of Menu 2
|
||||
cmp [menu_data_2.cursor_out],dword 2
|
||||
je about
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
about:
|
||||
mcall SF_CREATE_THREAD,1,thread3,thread
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_start_0:
|
||||
mov [OpenDialog_data.type],0
|
||||
jmp OpenDialog_start
|
||||
OpenDialog_start_1:
|
||||
mov [OpenDialog_data.type],1
|
||||
jmp OpenDialog_start
|
||||
OpenDialog_start_2:
|
||||
mov [OpenDialog_data.type],2
|
||||
OpenDialog_start:
|
||||
; mov ebx,open_dialog_name
|
||||
; mov esi,path
|
||||
; mov edi,library_path
|
||||
; call copy_file_path
|
||||
|
||||
; copy_path open_dialog_name,path,library_path,0
|
||||
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
|
||||
cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
||||
je still ; some kind of alternative, instead OpenDialog
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still ; OpenDialog user say cancel
|
||||
; copy path
|
||||
; prepare path - PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
|
||||
call draw_window
|
||||
jmp still ; OpenDialog user selected the target file
|
||||
; [OpenDialog_data.openfile_pach] pointer of area the target file
|
||||
;---------------------------------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
draw_window:
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
mcall SF_CREATE_WINDOW,<0,400>,<0,400>,0x03AABBCC,0x805080D0,0x005080D0
|
||||
mcall SF_SET_CAPTION,1,header_1
|
||||
;---------------------------------------------
|
||||
; draw for Menu 1
|
||||
push dword menu_data_1
|
||||
call [menu_bar_draw]
|
||||
; draw for Menu 2
|
||||
push dword menu_data_2
|
||||
call [menu_bar_draw]
|
||||
;---------------------------------------------
|
||||
; draw for Dinamic Button 1
|
||||
push dword dinamic_button_data_1
|
||||
call [dbutton_draw]
|
||||
; draw for Dinamic Button 2
|
||||
push dword dinamic_button_data_2
|
||||
call [dbutton_draw]
|
||||
;---------------------------------------------
|
||||
mcall SF_DRAW_RECT,<170,200>,<25,15>,0xffffb0
|
||||
; mov bx,28
|
||||
; add ebx,2 shl 16
|
||||
; mcall SF_DRAW_TEXT,,0xC0000000,text_work_area,,0xffffb0
|
||||
; draw for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
;---------------------------------------------
|
||||
; set all_redraw flag for draw all ScrollBar
|
||||
; In some cases it is necessity to draw only the area
|
||||
; of moving of a "runner", for acceleration of output -
|
||||
; in this case the flag needs to be reset to 0 (zero).
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [scroll_bar_data_vertical.all_redraw],eax
|
||||
mov [scroll_bar_data_horizontal.all_redraw],eax
|
||||
|
||||
; draw for Vertical ScrollBar
|
||||
push dword scroll_bar_data_vertical
|
||||
call [scrollbar_v_draw]
|
||||
; draw for Horizontal ScrollBar
|
||||
push dword scroll_bar_data_horizontal
|
||||
call [scrollbar_h_draw]
|
||||
; reset all_redraw flag
|
||||
xor eax,eax
|
||||
mov [scroll_bar_data_vertical.all_redraw],eax
|
||||
mov [scroll_bar_data_horizontal.all_redraw],eax
|
||||
;---------------------------------------------
|
||||
call draw_cube
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
draw_cube:
|
||||
mcall SF_DRAW_RECT,<30,301>,<50,301>,0xafafaf
|
||||
mov ecx,[scroll_bar_data_vertical.position]
|
||||
add ecx,50
|
||||
shl ecx,16
|
||||
mov cx,30
|
||||
mov ebx,[scroll_bar_data_horizontal.position]
|
||||
add ebx,30
|
||||
shl ebx,16
|
||||
mov bx,30
|
||||
mcall SF_DRAW_RECT,,,0x0
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
include 'data.inc'
|
||||
include 'w_about.inc'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
rb 1024
|
||||
thread:
|
||||
;---------------------------------------------------------------------
|
||||
rb 1024
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
openfile_pach:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
file_name:
|
||||
library_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
plugin_pach:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
file_info:
|
||||
rb 40
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;*****************************************************************************
|
||||
; Example for Box_lib: scrollbar, menubar, dinamic_button
|
||||
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are met:
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above copyright
|
||||
; notice, this list of conditions and the following disclaimer in the
|
||||
; documentation and/or other materials provided with the distribution.
|
||||
; * Neither the name of the <organization> nor the
|
||||
; names of its contributors may be used to endorse or promote products
|
||||
; derived from this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
|
||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;******************************************************************************
|
||||
; import_boxlib procedure written by <Lrz>
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
use32
|
||||
org 0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd START
|
||||
dd IM_END
|
||||
dd I_END
|
||||
dd stacktop
|
||||
dd 0
|
||||
dd path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
@use_library
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- Start of program ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
mcall SF_SYS_MISC,SSF_HEAP_INIT
|
||||
mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
load_libraries l_libs_start,end_l_libs
|
||||
|
||||
test eax,eax
|
||||
jnz button.exit
|
||||
|
||||
; unpack deflate
|
||||
mov eax,[unpack_DeflateUnpack2]
|
||||
mov [deflate_unpack],eax
|
||||
|
||||
; OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @b
|
||||
|
||||
|
||||
; mov ebx,icons_file_name
|
||||
; mov esi,path
|
||||
; mov edi,file_name
|
||||
|
||||
copy_path icons_file_name,path,library_path,0
|
||||
|
||||
mcall SF_FILE,fileinfo
|
||||
|
||||
mov [fileinfo+0],dword 0
|
||||
|
||||
mov ecx,[file_info+32]
|
||||
mov [fileinfo+12],ecx
|
||||
mov [img_size],ecx
|
||||
|
||||
|
||||
mcall SF_SYS_MISC,SSF_MEM_ALLOC
|
||||
|
||||
|
||||
mov [fileinfo+16],eax
|
||||
mov [image_file],eax
|
||||
|
||||
|
||||
mcall SF_FILE,fileinfo
|
||||
|
||||
xor eax,eax
|
||||
mov [return_code],eax
|
||||
; mov eax,image_file
|
||||
push image_file
|
||||
call [cnv_png_import.Start]
|
||||
|
||||
mcall SF_SYS_MISC,SSF_MEM_FREE,[image_file]
|
||||
|
||||
cmp [return_code],dword 0
|
||||
jne button.exit
|
||||
|
||||
mov ebx,[raw_pointer]
|
||||
mov eax,[ebx+4]
|
||||
; set of button size
|
||||
mov [dinamic_button_data_1.size_x],ax
|
||||
mov [dinamic_button_data_1.size_y],ax
|
||||
mov [dinamic_button_data_2.size_x],ax
|
||||
mov [dinamic_button_data_2.size_y],ax
|
||||
mov eax,[ebx+12]
|
||||
; set of RAW resolution to pixel
|
||||
mov [dinamic_button_data_1.resolution_raw],eax
|
||||
mov [dinamic_button_data_2.resolution_raw],eax
|
||||
mov eax,[ebx+20]
|
||||
add eax,ebx
|
||||
; set RAW palette, use else resolution 8bit or less
|
||||
mov [dinamic_button_data_1.palette_raw],eax
|
||||
mov [dinamic_button_data_2.palette_raw],eax
|
||||
mov eax,[ebx+28]
|
||||
add eax,ebx
|
||||
; set RAW area for passive button
|
||||
mov [dinamic_button_data_1.passive_raw],eax
|
||||
mov [dinamic_button_data_2.passive_raw],eax
|
||||
mov ecx,[ebx+4]
|
||||
imul ecx,[ebx+4]
|
||||
imul ecx,[ebx+12]
|
||||
shr ecx,3
|
||||
add eax,ecx
|
||||
; set RAW area for active button
|
||||
mov [dinamic_button_data_1.active_raw],eax
|
||||
mov [dinamic_button_data_2.active_raw],eax
|
||||
add eax,ecx
|
||||
; RAW area for click button
|
||||
mov [dinamic_button_data_1.click_raw],eax
|
||||
mov [dinamic_button_data_2.click_raw],eax
|
||||
;---------------------------------------------------------------------
|
||||
red:
|
||||
call draw_window
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp eax,EV_REDRAW
|
||||
je red
|
||||
cmp eax,EV_KEY
|
||||
je key
|
||||
cmp eax,EV_BUTTON
|
||||
je button
|
||||
cmp eax,EV_MOUSE
|
||||
je mouse
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
;-----------------------------------------------
|
||||
cmp [scroll_bar_data_horizontal.delta2],0
|
||||
jne .horizontal
|
||||
.vertical:
|
||||
mov eax,[scroll_bar_data_vertical.max_area]
|
||||
cmp eax,[scroll_bar_data_vertical.cur_area]
|
||||
jbe .horizontal
|
||||
; mouse event for Vertical ScrollBar
|
||||
push dword scroll_bar_data_vertical
|
||||
call [scrollbar_v_mouse]
|
||||
mov eax,scroll_bar_data_vertical.redraw
|
||||
xor ebx,ebx
|
||||
cmp [eax],ebx
|
||||
je @f
|
||||
mov [eax],ebx
|
||||
jmp .draw_cube
|
||||
@@:
|
||||
cmp [scroll_bar_data_vertical.delta2],0
|
||||
jne still
|
||||
.horizontal:
|
||||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||||
cmp eax,[scroll_bar_data_horizontal.cur_area]
|
||||
jbe .other
|
||||
; mouse event for Horizontal ScrollBar
|
||||
push dword scroll_bar_data_horizontal
|
||||
call [scrollbar_h_mouse]
|
||||
mov eax,scroll_bar_data_horizontal.redraw
|
||||
xor ebx,ebx
|
||||
cmp [eax],ebx
|
||||
je .other
|
||||
mov [eax],ebx
|
||||
.draw_cube:
|
||||
call draw_cube
|
||||
jmp still
|
||||
.other:
|
||||
cmp [scroll_bar_data_vertical.delta2],0
|
||||
jne still
|
||||
cmp [scroll_bar_data_horizontal.delta2],0
|
||||
jne still
|
||||
;-----------------------------------------------
|
||||
.menu_bar_1:
|
||||
call .set_mouse_flag
|
||||
@@:
|
||||
; mouse event for Menu 1
|
||||
push dword menu_data_1
|
||||
call [menu_bar_mouse]
|
||||
cmp [menu_data_1.click],dword 1
|
||||
jne .menu_bar_2
|
||||
cmp [menu_data_1.cursor_out],dword 0
|
||||
jne analyse_out_menu_1
|
||||
jmp .menu_bar_1
|
||||
;--------------------------------------------
|
||||
.menu_bar_2:
|
||||
; mouse event for Menu 2
|
||||
push dword menu_data_2
|
||||
call [menu_bar_mouse]
|
||||
cmp [menu_data_2.click],dword 1
|
||||
jne .mouse_dinamic_button
|
||||
cmp [menu_data_2.cursor_out],dword 0
|
||||
jne analyse_out_menu_2
|
||||
jmp .menu_bar_1
|
||||
;--------------------------------------------
|
||||
.mouse_dinamic_button:
|
||||
; mouse event for Dinamic Button 1
|
||||
push dword dinamic_button_data_1
|
||||
call [dbutton_mouse]
|
||||
mov eax,dinamic_button_data_1.click
|
||||
cmp [eax],dword 1
|
||||
jne @f
|
||||
mov [eax],dword 0
|
||||
jmp about
|
||||
@@:
|
||||
; mouse event for Dinamic Button 2
|
||||
push dword dinamic_button_data_2
|
||||
call [dbutton_mouse]
|
||||
mov eax,dinamic_button_data_2.click
|
||||
cmp [eax],dword 1
|
||||
jne still ;@f
|
||||
mov [eax],dword 0
|
||||
jmp button.exit
|
||||
;---------------------------------------------------------------------
|
||||
.set_mouse_flag:
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [menu_data_1.get_mouse_flag],eax
|
||||
mov [menu_data_2.get_mouse_flag],eax
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
analyse_out_menu_1:
|
||||
; analyse result of Menu 1
|
||||
mov eax,[menu_data_1.cursor_out]
|
||||
cmp eax,dword 1
|
||||
je OpenDialog_start_0
|
||||
cmp eax,dword 2
|
||||
je OpenDialog_start_1
|
||||
cmp eax,dword 3
|
||||
je OpenDialog_start_2
|
||||
cmp eax,dword 4
|
||||
je button.exit
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
analyse_out_menu_2:
|
||||
; analyse result of Menu 2
|
||||
cmp [menu_data_2.cursor_out],dword 2
|
||||
je about
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
about:
|
||||
mcall SF_CREATE_THREAD,1,thread3,thread
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_start_0:
|
||||
mov [OpenDialog_data.type],0
|
||||
jmp OpenDialog_start
|
||||
OpenDialog_start_1:
|
||||
mov [OpenDialog_data.type],1
|
||||
jmp OpenDialog_start
|
||||
OpenDialog_start_2:
|
||||
mov [OpenDialog_data.type],2
|
||||
OpenDialog_start:
|
||||
; mov ebx,open_dialog_name
|
||||
; mov esi,path
|
||||
; mov edi,library_path
|
||||
; call copy_file_path
|
||||
|
||||
; copy_path open_dialog_name,path,library_path,0
|
||||
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
|
||||
cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
||||
je still ; some kind of alternative, instead OpenDialog
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still ; OpenDialog user say cancel
|
||||
; copy path
|
||||
; prepare path - PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
|
||||
call draw_window
|
||||
jmp still ; OpenDialog user selected the target file
|
||||
; [OpenDialog_data.openfile_pach] pointer of area the target file
|
||||
;---------------------------------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
draw_window:
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
mcall SF_CREATE_WINDOW,<0,400>,<0,400>,0x03AABBCC,0x805080D0,0x005080D0
|
||||
mcall SF_SET_CAPTION,1,header_1
|
||||
;---------------------------------------------
|
||||
; draw for Menu 1
|
||||
push dword menu_data_1
|
||||
call [menu_bar_draw]
|
||||
; draw for Menu 2
|
||||
push dword menu_data_2
|
||||
call [menu_bar_draw]
|
||||
;---------------------------------------------
|
||||
; draw for Dinamic Button 1
|
||||
push dword dinamic_button_data_1
|
||||
call [dbutton_draw]
|
||||
; draw for Dinamic Button 2
|
||||
push dword dinamic_button_data_2
|
||||
call [dbutton_draw]
|
||||
;---------------------------------------------
|
||||
mcall SF_DRAW_RECT,<170,200>,<25,15>,0xffffb0
|
||||
; mov bx,28
|
||||
; add ebx,2 shl 16
|
||||
; mcall SF_DRAW_TEXT,,0xC0000000,text_work_area,,0xffffb0
|
||||
; draw for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
;---------------------------------------------
|
||||
; set all_redraw flag for draw all ScrollBar
|
||||
; In some cases it is necessity to draw only the area
|
||||
; of moving of a "runner", for acceleration of output -
|
||||
; in this case the flag needs to be reset to 0 (zero).
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov [scroll_bar_data_vertical.all_redraw],eax
|
||||
mov [scroll_bar_data_horizontal.all_redraw],eax
|
||||
|
||||
; draw for Vertical ScrollBar
|
||||
push dword scroll_bar_data_vertical
|
||||
call [scrollbar_v_draw]
|
||||
; draw for Horizontal ScrollBar
|
||||
push dword scroll_bar_data_horizontal
|
||||
call [scrollbar_h_draw]
|
||||
; reset all_redraw flag
|
||||
xor eax,eax
|
||||
mov [scroll_bar_data_vertical.all_redraw],eax
|
||||
mov [scroll_bar_data_horizontal.all_redraw],eax
|
||||
;---------------------------------------------
|
||||
call draw_cube
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
draw_cube:
|
||||
mcall SF_DRAW_RECT,<30,301>,<50,301>,0xafafaf
|
||||
mov ecx,[scroll_bar_data_vertical.position]
|
||||
add ecx,50
|
||||
shl ecx,16
|
||||
mov cx,30
|
||||
mov ebx,[scroll_bar_data_horizontal.position]
|
||||
add ebx,30
|
||||
shl ebx,16
|
||||
mov bx,30
|
||||
mcall SF_DRAW_RECT,,,0x0
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
include 'data.inc'
|
||||
include 'w_about.inc'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
rb 1024
|
||||
thread:
|
||||
;---------------------------------------------------------------------
|
||||
rb 1024
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
openfile_pach:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
file_name:
|
||||
library_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
plugin_pach:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
file_info:
|
||||
rb 40
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
+401
-401
@@ -1,401 +1,401 @@
|
||||
;---------------------------------------------------------------------
|
||||
;--- data area -------------------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
header_1 db 'Box_lib Control Demo by Mario79',0
|
||||
|
||||
ok_btn db 'Ok',0
|
||||
|
||||
labelt3 db 'About program',0
|
||||
;---------------------------------------------------------------------
|
||||
start_temp_file_name: db 'ctrldemo_test',0
|
||||
icons_file_name: db 'reload_16x16_8b.png',0
|
||||
system_dir1 db '/sys/lib/'
|
||||
plugin_BMP_name db 'cnv_bmp.obj',0
|
||||
|
||||
system_dir db '/sys/lib/'
|
||||
|
||||
;plugins_directory db 'plugins/',0
|
||||
plugins_directory db 0
|
||||
|
||||
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
|
||||
system_dir_CnvPNG db '/sys/lib/cnv_png.obj',0
|
||||
system_dir_UNPACK db '/sys/lib/archiver.obj',0
|
||||
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
|
||||
; Если есть желание разъединить, то нужно использовать следующию конструкцию
|
||||
;system_path db '/sys/lib/box_lib.obj',0
|
||||
;... любая последовательность других команд и определений.
|
||||
;library_name db 'box_lib.obj',0
|
||||
;library_name db 'box_lib.obj',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
l_libs_start:
|
||||
library01 l_libs system_dir_Boxlib+9, file_name, system_dir_Boxlib,\
|
||||
import_box_lib, plugins_directory
|
||||
|
||||
library02 l_libs system_dir_CnvPNG+9, file_name, system_dir_CnvPNG,\
|
||||
cnv_png_import, plugins_directory
|
||||
|
||||
library03 l_libs system_dir_UNPACK+9, file_name, system_dir_UNPACK,\
|
||||
UNPACK_import, plugins_directory
|
||||
|
||||
library04 l_libs system_dir_ProcLib+9, file_name, system_dir_ProcLib, \
|
||||
ProcLib_import, plugins_directory
|
||||
|
||||
end_l_libs:
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
ProcLib_import:
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
;OpenDialog__Version dd aOpenDialog_Version
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
;aOpenDialog_Version db 'Version_OpenDialog',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
cnv_png_import:
|
||||
.Start dd aCP_Start
|
||||
.Version dd aCP_Version
|
||||
.Check dd aCP_Check
|
||||
.Assoc dd aCP_Assoc
|
||||
dd 0,0
|
||||
aCP_Start db 'START',0
|
||||
aCP_Version db 'version',0
|
||||
aCP_Check db 'Check_Header',0
|
||||
aCP_Assoc db 'Associations',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
UNPACK_import:
|
||||
;unpack_Version dd aUnpack_Version
|
||||
;unpack_PluginLoad dd aUnpack_PluginLoad
|
||||
;unpack_OpenFilePlugin dd aUnpack_OpenFilePlugin
|
||||
;unpack_ClosePlugin dd aUnpack_ClosePlugin
|
||||
;unpack_ReadFolder dd aUnpack_ReadFolder
|
||||
;unpack_SetFolder dd aUnpack_SetFolder
|
||||
;unpack_GetFiles dd aUnpack_GetFiles
|
||||
;unpack_GetOpenPluginInfo dd aUnpack_GetOpenPluginInfo
|
||||
;unpack_Getattr dd aUnpack_Getattr
|
||||
;unpack_Open dd aUnpack_Open
|
||||
;unpack_Read dd aUnpack_Read
|
||||
;unpack_Setpos dd aUnpack_Setpos
|
||||
;unpack_Close dd aUnpack_Close
|
||||
unpack_DeflateUnpack dd aUnpack_DeflateUnpack
|
||||
unpack_DeflateUnpack2 dd aUnpack_DeflateUnpack2
|
||||
dd 0,0
|
||||
;aUnpack_Version db 'version',0
|
||||
;aUnpack_PluginLoad db 'plugin_load',0
|
||||
;aUnpack_OpenFilePlugin db 'OpenFilePlugin',0
|
||||
;aUnpack_ClosePlugin db 'ClosePlugin',0
|
||||
;aUnpack_ReadFolder db 'ReadFolder',0
|
||||
;aUnpack_SetFolder db 'SetFolder',0
|
||||
;aUnpack_GetFiles db 'GetFiles',0
|
||||
;aUnpack_GetOpenPluginInfo db 'GetOpenPluginInfo',0
|
||||
;aUnpack_Getattr db 'getattr',0
|
||||
;aUnpack_Open db 'open',0
|
||||
;aUnpack_Read db 'read',0
|
||||
;aUnpack_Setpos db 'setpos',0
|
||||
;aUnpack_Close db 'close',0
|
||||
aUnpack_DeflateUnpack db 'deflate_unpack',0
|
||||
aUnpack_DeflateUnpack2 db 'deflate_unpack2',0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
fileinfo:
|
||||
dd 5
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd file_info
|
||||
string:
|
||||
db 0
|
||||
dd file_name
|
||||
|
||||
plugin dd 0
|
||||
;---------------------------------------------------------------------
|
||||
; not change this section!!!
|
||||
; start section
|
||||
;---------------------------------------------------------------------
|
||||
image_file dd 0
|
||||
raw_pointer dd 0
|
||||
return_code dd 0
|
||||
img_size dd 0
|
||||
deflate_unpack dd 0
|
||||
;---------------------------------------------------------------------
|
||||
; end section
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
include '../../import.inc' ;import_box_lib
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
scroll_bar_data_vertical:
|
||||
.x:
|
||||
.size_x dw 15 ;+0
|
||||
.start_x dw 370 ;+2
|
||||
.y:
|
||||
.size_y dw 300 ;+4
|
||||
.start_y dw 50 ;+6
|
||||
.btn_high dd 15 ;+8
|
||||
.type dd 1 ;+12
|
||||
.max_area dd 300 ;+16
|
||||
.cur_area dd 30 ;+20
|
||||
.position dd 140 ;+24
|
||||
.bckg_col dd 0xeeeeee ;+28
|
||||
.frnt_col dd 0xbbddff ;+32
|
||||
.line_col dd 0 ;+36
|
||||
.redraw dd 0 ;+40
|
||||
.delta dw 0 ;+44
|
||||
.delta2 dw 0 ;+46
|
||||
.run_x:
|
||||
.r_size_x dw 0 ;+48
|
||||
.r_start_x dw 0 ;+50
|
||||
.run_y:
|
||||
.r_size_y dw 0 ;+52
|
||||
.r_start_y dw 0 ;+54
|
||||
.m_pos dd 0 ;+56
|
||||
.m_pos_2 dd 0 ;+60
|
||||
.m_keys dd 0 ;+64
|
||||
.run_size dd 0 ;+68
|
||||
.position2 dd 0 ;+72
|
||||
.work_size dd 0 ;+76
|
||||
.all_redraw dd 0 ;+80
|
||||
.ar_offset dd 10 ;+84
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
scroll_bar_data_horizontal:
|
||||
.x:
|
||||
.size_x dw 300 ;0 ;+0
|
||||
.start_x dw 30 ;0 ;+2
|
||||
.y:
|
||||
.size_y dw 15 ;0 ;+4
|
||||
.start_y dw 370 ;0 ;+6
|
||||
.btn_high dd 15 ;+8
|
||||
.type dd 1 ;+12
|
||||
.max_area dd 300 ;+16
|
||||
.cur_area dd 30 ;+20
|
||||
.position dd 140 ;+24
|
||||
.bckg_col dd 0xeeeeee ;+28
|
||||
.frnt_col dd 0xbbddff ;+32
|
||||
.line_col dd 0 ;+36
|
||||
.redraw dd 0 ;+40
|
||||
.delta dw 0 ;+44
|
||||
.delta2 dw 0 ;+46
|
||||
.run_x:
|
||||
.r_size_x dw 0 ;+48
|
||||
.r_start_x dw 0 ;+50
|
||||
.run_y:
|
||||
.r_size_y dw 0 ;+52
|
||||
.r_start_y dw 0 ;+54
|
||||
.m_pos dd 0 ;+56
|
||||
.m_pos_2 dd 0 ;+60
|
||||
.m_keys dd 0 ;+64
|
||||
.run_size dd 0 ;+68
|
||||
.position2 dd 0 ;+72
|
||||
.work_size dd 0 ;+76
|
||||
.all_redraw dd 0 ;+80
|
||||
.ar_offset dd 10 ;+84
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
menu_data_1:
|
||||
.type: dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 40 ;+4
|
||||
.start_x dw 20 ;+6
|
||||
.y:
|
||||
.size_y dw 15 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.text_pointer: dd menu_text_area ;0 ;+12
|
||||
.pos_pointer: dd menu_text_area.1 ;0 ;+16
|
||||
.text_end dd menu_text_area.end ;0 ;+20
|
||||
.mouse_pos dd 0 ;+24
|
||||
.mouse_keys dd 0 ;+28
|
||||
.x1:
|
||||
.size_x1 dw 80 ;+32
|
||||
.start_x1 dw 20 ;+34
|
||||
.y1:
|
||||
.size_y1 dw 100 ;+36
|
||||
.start_y1 dw 40 ;+38
|
||||
.bckg_col dd 0xeeeeee ;+40
|
||||
.frnt_col dd 0xff ;+44
|
||||
.menu_col dd 0xffffff ;+48
|
||||
.select dd 0 ;+52
|
||||
.out_select dd 0 ;+56
|
||||
.buf_adress dd 0 ;+60
|
||||
.procinfo dd procinfo ;+64
|
||||
.click dd 0 ;+68
|
||||
.cursor dd 0 ;+72
|
||||
.cursor_old dd 0 ;+76
|
||||
.interval dd 16 ;+80
|
||||
.cursor_max dd 0 ;+84
|
||||
.extended_key dd 0 ;+88
|
||||
.menu_sel_col dd 0x00cc00 ;+92
|
||||
.bckg_text_col dd 0 ; +96
|
||||
.frnt_text_col dd 0xffffff ;+100
|
||||
.mouse_keys_old dd 0 ;+104
|
||||
.font_height dd 8 ;+108
|
||||
.cursor_out dd 0 ;+112
|
||||
.get_mouse_flag dd 0 ;+116
|
||||
;-------------------------
|
||||
menu_text_area:
|
||||
db 'File',0
|
||||
.1:
|
||||
db 'Open file',0
|
||||
db 'Save file',0
|
||||
db 'Select dir',0
|
||||
db 'Exit',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
menu_data_2:
|
||||
.type: dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 40 ;+4
|
||||
.start_x dw 60 ;+6
|
||||
.y:
|
||||
.size_y dw 15 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.text_pointer: dd menu_text_area_2 ;0 ;+12
|
||||
.pos_pointer: dd menu_text_area_2.1 ;0 ;+16
|
||||
.text_end dd menu_text_area_2.end ;0 ;+20
|
||||
.mouse_pos dd 0 ;+24
|
||||
.mouse_keys dd 0 ;+28
|
||||
.x1:
|
||||
.size_x1 dw 50 ;+32
|
||||
.start_x1 dw 60 ;+34
|
||||
.y1:
|
||||
.size_y1 dw 100 ;+36
|
||||
.start_y1 dw 40 ;+38
|
||||
.bckg_col dd 0xeeeeee ;+40
|
||||
.frnt_col dd 0xff ;+44
|
||||
.menu_col dd 0xffffff ;+48
|
||||
.select dd 0 ;+52
|
||||
.out_select dd 0 ;+56
|
||||
.buf_adress dd 0 ;+60
|
||||
.procinfo dd procinfo ;+64
|
||||
.click dd 0 ;+68
|
||||
.cursor dd 0 ;+72
|
||||
.cursor_old dd 0 ;+76
|
||||
.interval dd 16 ;+80
|
||||
.cursor_max dd 0 ;+84
|
||||
.extended_key dd 0 ;+88
|
||||
.menu_sel_col dd 0x00cc00 ;+92
|
||||
.bckg_text_col dd 0 ; +96
|
||||
.frnt_text_col dd 0xffffff ;+100
|
||||
.mouse_keys_old dd 0 ;+104
|
||||
.font_height dd 8 ;+108
|
||||
.cursor_out dd 0 ;+112
|
||||
.get_mouse_flag dd 0 ;+116
|
||||
;------------------------
|
||||
menu_text_area_2:
|
||||
db 'Help',0
|
||||
.1:
|
||||
db 'Test1',0
|
||||
db 'About',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
dinamic_button_data_1:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 20 ;+4
|
||||
.start_x dw 110 ;+6
|
||||
.y:
|
||||
.size_y dw 20 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.mouse_pos dd 0 ;+12
|
||||
.mouse_keys dd 0 ;+16
|
||||
.mouse_keys_old dd 0 ;+20
|
||||
.active_raw dd 0 ;+24
|
||||
.passive_raw dd 0 ;+28
|
||||
.click_raw dd 0 ;+32
|
||||
.resolution_raw dd 0 ;+36
|
||||
.palette_raw dd 0 ;+40
|
||||
.offset_raw dd 0 ;+44
|
||||
.select dd 0 ;+48
|
||||
.click dd 0 ;+52
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
dinamic_button_data_2:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 20 ;+4
|
||||
.start_x dw 140 ;+6
|
||||
.y:
|
||||
.size_y dw 20 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.mouse_pos dd 0 ;+12
|
||||
.mouse_keys dd 0 ;+16
|
||||
.mouse_keys_old dd 0 ;+20
|
||||
.active_raw dd 0 ;+24
|
||||
.passive_raw dd 0 ;+28
|
||||
.click_raw dd 0 ;+32
|
||||
.resolution_raw dd 0 ;+36
|
||||
.palette_raw dd 0 ;+40
|
||||
.offset_raw dd 0 ;+44
|
||||
.select dd 0 ;+48
|
||||
.click dd 0 ;+52
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 0
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_pach dd plugin_pach ;+16
|
||||
.dir_default_pach dd communication_area_default_pach ;+20
|
||||
.start_path dd od_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd openfile_pach ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 10 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 10 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
;open_dialog_name:
|
||||
; db 'opendial',0
|
||||
|
||||
od_path:
|
||||
db '/sys/File Managers/OpenDial',0
|
||||
|
||||
communication_area_default_pach:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter.1
|
||||
.1:
|
||||
db 'JPEG',0
|
||||
db 'JPG',0
|
||||
db 'JPE',0
|
||||
db 'PNG',0
|
||||
db 'GIF',0
|
||||
db 'BMP',0
|
||||
db 'KEX',0
|
||||
db 'DAT',0
|
||||
db 'INI',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw 28 ;+4
|
||||
.start_x dw 172 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw 200 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0x0 ;+20
|
||||
.background_color dd 0x0 ;+24
|
||||
.text_pointer dd openfile_pach ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
;--- data area -------------------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
header_1 db 'Box_lib Control Demo by Mario79',0
|
||||
|
||||
ok_btn db 'Ok',0
|
||||
|
||||
labelt3 db 'About program',0
|
||||
;---------------------------------------------------------------------
|
||||
start_temp_file_name: db 'ctrldemo_test',0
|
||||
icons_file_name: db 'reload_16x16_8b.png',0
|
||||
system_dir1 db '/sys/lib/'
|
||||
plugin_BMP_name db 'cnv_bmp.obj',0
|
||||
|
||||
system_dir db '/sys/lib/'
|
||||
|
||||
;plugins_directory db 'plugins/',0
|
||||
plugins_directory db 0
|
||||
|
||||
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
|
||||
system_dir_CnvPNG db '/sys/lib/cnv_png.obj',0
|
||||
system_dir_UNPACK db '/sys/lib/archiver.obj',0
|
||||
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
|
||||
; Если есть желание разъединить, то нужно использовать следующию конструкцию
|
||||
;system_path db '/sys/lib/box_lib.obj',0
|
||||
;... любая последовательность других команд и определений.
|
||||
;library_name db 'box_lib.obj',0
|
||||
;library_name db 'box_lib.obj',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
l_libs_start:
|
||||
library01 l_libs system_dir_Boxlib+9, file_name, system_dir_Boxlib,\
|
||||
import_box_lib, plugins_directory
|
||||
|
||||
library02 l_libs system_dir_CnvPNG+9, file_name, system_dir_CnvPNG,\
|
||||
cnv_png_import, plugins_directory
|
||||
|
||||
library03 l_libs system_dir_UNPACK+9, file_name, system_dir_UNPACK,\
|
||||
UNPACK_import, plugins_directory
|
||||
|
||||
library04 l_libs system_dir_ProcLib+9, file_name, system_dir_ProcLib, \
|
||||
ProcLib_import, plugins_directory
|
||||
|
||||
end_l_libs:
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
ProcLib_import:
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
;OpenDialog__Version dd aOpenDialog_Version
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
;aOpenDialog_Version db 'Version_OpenDialog',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
cnv_png_import:
|
||||
.Start dd aCP_Start
|
||||
.Version dd aCP_Version
|
||||
.Check dd aCP_Check
|
||||
.Assoc dd aCP_Assoc
|
||||
dd 0,0
|
||||
aCP_Start db 'START',0
|
||||
aCP_Version db 'version',0
|
||||
aCP_Check db 'Check_Header',0
|
||||
aCP_Assoc db 'Associations',0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
UNPACK_import:
|
||||
;unpack_Version dd aUnpack_Version
|
||||
;unpack_PluginLoad dd aUnpack_PluginLoad
|
||||
;unpack_OpenFilePlugin dd aUnpack_OpenFilePlugin
|
||||
;unpack_ClosePlugin dd aUnpack_ClosePlugin
|
||||
;unpack_ReadFolder dd aUnpack_ReadFolder
|
||||
;unpack_SetFolder dd aUnpack_SetFolder
|
||||
;unpack_GetFiles dd aUnpack_GetFiles
|
||||
;unpack_GetOpenPluginInfo dd aUnpack_GetOpenPluginInfo
|
||||
;unpack_Getattr dd aUnpack_Getattr
|
||||
;unpack_Open dd aUnpack_Open
|
||||
;unpack_Read dd aUnpack_Read
|
||||
;unpack_Setpos dd aUnpack_Setpos
|
||||
;unpack_Close dd aUnpack_Close
|
||||
unpack_DeflateUnpack dd aUnpack_DeflateUnpack
|
||||
unpack_DeflateUnpack2 dd aUnpack_DeflateUnpack2
|
||||
dd 0,0
|
||||
;aUnpack_Version db 'version',0
|
||||
;aUnpack_PluginLoad db 'plugin_load',0
|
||||
;aUnpack_OpenFilePlugin db 'OpenFilePlugin',0
|
||||
;aUnpack_ClosePlugin db 'ClosePlugin',0
|
||||
;aUnpack_ReadFolder db 'ReadFolder',0
|
||||
;aUnpack_SetFolder db 'SetFolder',0
|
||||
;aUnpack_GetFiles db 'GetFiles',0
|
||||
;aUnpack_GetOpenPluginInfo db 'GetOpenPluginInfo',0
|
||||
;aUnpack_Getattr db 'getattr',0
|
||||
;aUnpack_Open db 'open',0
|
||||
;aUnpack_Read db 'read',0
|
||||
;aUnpack_Setpos db 'setpos',0
|
||||
;aUnpack_Close db 'close',0
|
||||
aUnpack_DeflateUnpack db 'deflate_unpack',0
|
||||
aUnpack_DeflateUnpack2 db 'deflate_unpack2',0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
fileinfo:
|
||||
dd 5
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd file_info
|
||||
string:
|
||||
db 0
|
||||
dd file_name
|
||||
|
||||
plugin dd 0
|
||||
;---------------------------------------------------------------------
|
||||
; not change this section!!!
|
||||
; start section
|
||||
;---------------------------------------------------------------------
|
||||
image_file dd 0
|
||||
raw_pointer dd 0
|
||||
return_code dd 0
|
||||
img_size dd 0
|
||||
deflate_unpack dd 0
|
||||
;---------------------------------------------------------------------
|
||||
; end section
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
include '../import.inc' ;import_box_lib
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
scroll_bar_data_vertical:
|
||||
.x:
|
||||
.size_x dw 15 ;+0
|
||||
.start_x dw 370 ;+2
|
||||
.y:
|
||||
.size_y dw 300 ;+4
|
||||
.start_y dw 50 ;+6
|
||||
.btn_high dd 15 ;+8
|
||||
.type dd 1 ;+12
|
||||
.max_area dd 300 ;+16
|
||||
.cur_area dd 30 ;+20
|
||||
.position dd 140 ;+24
|
||||
.bckg_col dd 0xeeeeee ;+28
|
||||
.frnt_col dd 0xbbddff ;+32
|
||||
.line_col dd 0 ;+36
|
||||
.redraw dd 0 ;+40
|
||||
.delta dw 0 ;+44
|
||||
.delta2 dw 0 ;+46
|
||||
.run_x:
|
||||
.r_size_x dw 0 ;+48
|
||||
.r_start_x dw 0 ;+50
|
||||
.run_y:
|
||||
.r_size_y dw 0 ;+52
|
||||
.r_start_y dw 0 ;+54
|
||||
.m_pos dd 0 ;+56
|
||||
.m_pos_2 dd 0 ;+60
|
||||
.m_keys dd 0 ;+64
|
||||
.run_size dd 0 ;+68
|
||||
.position2 dd 0 ;+72
|
||||
.work_size dd 0 ;+76
|
||||
.all_redraw dd 0 ;+80
|
||||
.ar_offset dd 10 ;+84
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
scroll_bar_data_horizontal:
|
||||
.x:
|
||||
.size_x dw 300 ;0 ;+0
|
||||
.start_x dw 30 ;0 ;+2
|
||||
.y:
|
||||
.size_y dw 15 ;0 ;+4
|
||||
.start_y dw 370 ;0 ;+6
|
||||
.btn_high dd 15 ;+8
|
||||
.type dd 1 ;+12
|
||||
.max_area dd 300 ;+16
|
||||
.cur_area dd 30 ;+20
|
||||
.position dd 140 ;+24
|
||||
.bckg_col dd 0xeeeeee ;+28
|
||||
.frnt_col dd 0xbbddff ;+32
|
||||
.line_col dd 0 ;+36
|
||||
.redraw dd 0 ;+40
|
||||
.delta dw 0 ;+44
|
||||
.delta2 dw 0 ;+46
|
||||
.run_x:
|
||||
.r_size_x dw 0 ;+48
|
||||
.r_start_x dw 0 ;+50
|
||||
.run_y:
|
||||
.r_size_y dw 0 ;+52
|
||||
.r_start_y dw 0 ;+54
|
||||
.m_pos dd 0 ;+56
|
||||
.m_pos_2 dd 0 ;+60
|
||||
.m_keys dd 0 ;+64
|
||||
.run_size dd 0 ;+68
|
||||
.position2 dd 0 ;+72
|
||||
.work_size dd 0 ;+76
|
||||
.all_redraw dd 0 ;+80
|
||||
.ar_offset dd 10 ;+84
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
menu_data_1:
|
||||
.type: dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 40 ;+4
|
||||
.start_x dw 20 ;+6
|
||||
.y:
|
||||
.size_y dw 15 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.text_pointer: dd menu_text_area ;0 ;+12
|
||||
.pos_pointer: dd menu_text_area.1 ;0 ;+16
|
||||
.text_end dd menu_text_area.end ;0 ;+20
|
||||
.mouse_pos dd 0 ;+24
|
||||
.mouse_keys dd 0 ;+28
|
||||
.x1:
|
||||
.size_x1 dw 80 ;+32
|
||||
.start_x1 dw 20 ;+34
|
||||
.y1:
|
||||
.size_y1 dw 100 ;+36
|
||||
.start_y1 dw 40 ;+38
|
||||
.bckg_col dd 0xeeeeee ;+40
|
||||
.frnt_col dd 0xff ;+44
|
||||
.menu_col dd 0xffffff ;+48
|
||||
.select dd 0 ;+52
|
||||
.out_select dd 0 ;+56
|
||||
.buf_adress dd 0 ;+60
|
||||
.procinfo dd procinfo ;+64
|
||||
.click dd 0 ;+68
|
||||
.cursor dd 0 ;+72
|
||||
.cursor_old dd 0 ;+76
|
||||
.interval dd 16 ;+80
|
||||
.cursor_max dd 0 ;+84
|
||||
.extended_key dd 0 ;+88
|
||||
.menu_sel_col dd 0x00cc00 ;+92
|
||||
.bckg_text_col dd 0 ; +96
|
||||
.frnt_text_col dd 0xffffff ;+100
|
||||
.mouse_keys_old dd 0 ;+104
|
||||
.font_height dd 8 ;+108
|
||||
.cursor_out dd 0 ;+112
|
||||
.get_mouse_flag dd 0 ;+116
|
||||
;-------------------------
|
||||
menu_text_area:
|
||||
db 'File',0
|
||||
.1:
|
||||
db 'Open file',0
|
||||
db 'Save file',0
|
||||
db 'Select dir',0
|
||||
db 'Exit',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
menu_data_2:
|
||||
.type: dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 40 ;+4
|
||||
.start_x dw 60 ;+6
|
||||
.y:
|
||||
.size_y dw 15 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.text_pointer: dd menu_text_area_2 ;0 ;+12
|
||||
.pos_pointer: dd menu_text_area_2.1 ;0 ;+16
|
||||
.text_end dd menu_text_area_2.end ;0 ;+20
|
||||
.mouse_pos dd 0 ;+24
|
||||
.mouse_keys dd 0 ;+28
|
||||
.x1:
|
||||
.size_x1 dw 50 ;+32
|
||||
.start_x1 dw 60 ;+34
|
||||
.y1:
|
||||
.size_y1 dw 100 ;+36
|
||||
.start_y1 dw 40 ;+38
|
||||
.bckg_col dd 0xeeeeee ;+40
|
||||
.frnt_col dd 0xff ;+44
|
||||
.menu_col dd 0xffffff ;+48
|
||||
.select dd 0 ;+52
|
||||
.out_select dd 0 ;+56
|
||||
.buf_adress dd 0 ;+60
|
||||
.procinfo dd procinfo ;+64
|
||||
.click dd 0 ;+68
|
||||
.cursor dd 0 ;+72
|
||||
.cursor_old dd 0 ;+76
|
||||
.interval dd 16 ;+80
|
||||
.cursor_max dd 0 ;+84
|
||||
.extended_key dd 0 ;+88
|
||||
.menu_sel_col dd 0x00cc00 ;+92
|
||||
.bckg_text_col dd 0 ; +96
|
||||
.frnt_text_col dd 0xffffff ;+100
|
||||
.mouse_keys_old dd 0 ;+104
|
||||
.font_height dd 8 ;+108
|
||||
.cursor_out dd 0 ;+112
|
||||
.get_mouse_flag dd 0 ;+116
|
||||
;------------------------
|
||||
menu_text_area_2:
|
||||
db 'Help',0
|
||||
.1:
|
||||
db 'Test1',0
|
||||
db 'About',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
dinamic_button_data_1:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 20 ;+4
|
||||
.start_x dw 110 ;+6
|
||||
.y:
|
||||
.size_y dw 20 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.mouse_pos dd 0 ;+12
|
||||
.mouse_keys dd 0 ;+16
|
||||
.mouse_keys_old dd 0 ;+20
|
||||
.active_raw dd 0 ;+24
|
||||
.passive_raw dd 0 ;+28
|
||||
.click_raw dd 0 ;+32
|
||||
.resolution_raw dd 0 ;+36
|
||||
.palette_raw dd 0 ;+40
|
||||
.offset_raw dd 0 ;+44
|
||||
.select dd 0 ;+48
|
||||
.click dd 0 ;+52
|
||||
;---------------------------------------------------------------------
|
||||
align 4
|
||||
dinamic_button_data_2:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.size_x dw 20 ;+4
|
||||
.start_x dw 140 ;+6
|
||||
.y:
|
||||
.size_y dw 20 ;+8
|
||||
.start_y dw 25 ;+10
|
||||
.mouse_pos dd 0 ;+12
|
||||
.mouse_keys dd 0 ;+16
|
||||
.mouse_keys_old dd 0 ;+20
|
||||
.active_raw dd 0 ;+24
|
||||
.passive_raw dd 0 ;+28
|
||||
.click_raw dd 0 ;+32
|
||||
.resolution_raw dd 0 ;+36
|
||||
.palette_raw dd 0 ;+40
|
||||
.offset_raw dd 0 ;+44
|
||||
.select dd 0 ;+48
|
||||
.click dd 0 ;+52
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 0
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_pach dd plugin_pach ;+16
|
||||
.dir_default_pach dd communication_area_default_pach ;+20
|
||||
.start_path dd od_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd openfile_pach ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 10 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 10 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
;open_dialog_name:
|
||||
; db 'opendial',0
|
||||
|
||||
od_path:
|
||||
db '/sys/File Managers/OpenDial',0
|
||||
|
||||
communication_area_default_pach:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter.1
|
||||
.1:
|
||||
db 'JPEG',0
|
||||
db 'JPG',0
|
||||
db 'JPE',0
|
||||
db 'PNG',0
|
||||
db 'GIF',0
|
||||
db 'BMP',0
|
||||
db 'KEX',0
|
||||
db 'DAT',0
|
||||
db 'INI',0
|
||||
.end:
|
||||
db 0
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw 28 ;+4
|
||||
.start_x dw 172 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw 200 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0x0 ;+20
|
||||
.background_color dd 0x0 ;+24
|
||||
.text_pointer dd openfile_pach ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
+170
-164
@@ -1,164 +1,170 @@
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0 ; базовый адрес кода, всегда 0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0 ; указатель на строку с параметрами.
|
||||
dd cur_dir_path ; указатель на адрес, куда помещается строка, содержащая путь до программы в момент запуска.
|
||||
|
||||
include '../../../../../macros.inc'
|
||||
include '../../trunk/box_lib.mac'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../load_lib.mac'
|
||||
@use_library ;use load lib macros
|
||||
start:
|
||||
;universal load library/librarys
|
||||
sys_load_library library_name, library_path, system_path, import_box_lib
|
||||
;if return code =-1 then exit, else nornary work
|
||||
cmp eax,-1
|
||||
jz exit
|
||||
mcall SF_SET_EVENTS_MASK,0x80000027 ;установить маску для ожидаемых событий
|
||||
|
||||
push dword check1 ;подсчёт дины текста для Checkbox'ов
|
||||
call [init_checkbox]
|
||||
|
||||
push dword check2
|
||||
call [init_checkbox]
|
||||
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall SF_WAIT_EVENT
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_mouse]
|
||||
|
||||
push dword check1
|
||||
call [check_box_mouse]
|
||||
|
||||
push dword check2
|
||||
call [check_box_mouse]
|
||||
|
||||
push dword Option_boxs
|
||||
call [option_box_mouse]
|
||||
|
||||
push dword Option_boxs2
|
||||
call [option_box_mouse]
|
||||
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
exit:
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_key]
|
||||
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
mcall SF_CREATE_WINDOW,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_draw]
|
||||
|
||||
push dword check1
|
||||
call [check_box_draw]
|
||||
|
||||
push dword check2
|
||||
call [check_box_draw]
|
||||
|
||||
push dword Option_boxs
|
||||
call [option_box_draw]
|
||||
|
||||
push dword Option_boxs2
|
||||
call [option_box_draw]
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Всегда соблюдать последовательность в имени.
|
||||
system_path db '/sys/lib/'
|
||||
library_name db 'box_lib.obj',0
|
||||
; Если есть желание разъединить, то нужно использовать следующию конструкцию
|
||||
;system_path db '/sys/lib/box_lib.obj',0
|
||||
;... любая последовательность других команд и определений.
|
||||
;library_name db 'box_lib.obj',0
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
include '../../import.inc' ;creating a function import table
|
||||
|
||||
|
||||
check1 check_box2 (10 shl 16 + 12),(45 shl 16 + 12),5,0x80AABBCC,0,0,check_text1,ch_flag_en
|
||||
check2 check_box2 (10 shl 16 + 12),(60 shl 16 + 12),6,0x80AABBCC,0,0,check_text2
|
||||
|
||||
edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1
|
||||
edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,mouse_dd,ed_figure_only
|
||||
|
||||
op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
|
||||
option_group1 dd op1 ;указатели, они отображаются по умолчанию, когда выводится
|
||||
option_group2 dd op12 ;приложение
|
||||
Option_boxs dd op1,op2,op3,0
|
||||
Option_boxs2 dd op11,op12,op13,0
|
||||
|
||||
hed db 'BOXs load from lib <Lrz> date 27.04.2009',0
|
||||
hed_end:
|
||||
|
||||
rb 256
|
||||
check_text1 db 'First checkbox',0
|
||||
check_text2 db 'Second checkbox',0
|
||||
|
||||
op_text: ; Сопровождающий текст для Optionbox'а
|
||||
.1 db 'Option_Box #1'
|
||||
.e1:
|
||||
.2 db 'Option_Box #2'
|
||||
.e2:
|
||||
.3 db 'Option_Box #3'
|
||||
.e3:
|
||||
ed_buffer rb 100
|
||||
;-----------------------
|
||||
;sc system_colors
|
||||
|
||||
mouse_dd rd 1
|
||||
p_info process_information
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
i_end:
|
||||
rb 1024
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0 ; базовый адрес кода, всегда 0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0 ; указатель на строку с параметрами.
|
||||
dd cur_dir_path ; указатель на адрес, куда помещается строка, содержащая путь до программы в момент запуска.
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../box_lib.mac'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
@use_library ;use load lib macros
|
||||
start:
|
||||
;universal load library/librarys
|
||||
sys_load_library library_name, library_path, system_path, import_box_lib
|
||||
;if return code =-1 then exit, else nornary work
|
||||
cmp eax,-1
|
||||
jz exit
|
||||
mcall SF_SET_EVENTS_MASK,0x80000027 ;установить маску для ожидаемых событий
|
||||
|
||||
push dword check1 ;подсчёт дины текста для Checkbox'ов
|
||||
call [init_checkbox]
|
||||
|
||||
push dword check2
|
||||
call [init_checkbox]
|
||||
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall SF_WAIT_EVENT
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_mouse]
|
||||
|
||||
push dword check1
|
||||
call [check_box_mouse]
|
||||
|
||||
push dword check2
|
||||
call [check_box_mouse]
|
||||
|
||||
push dword Option_boxs
|
||||
call [option_box_mouse]
|
||||
|
||||
push dword Option_boxs2
|
||||
call [option_box_mouse]
|
||||
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
exit:
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_key]
|
||||
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
mcall SF_CREATE_WINDOW,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
|
||||
push dword edit2
|
||||
call [edit_box_draw]
|
||||
|
||||
push dword check1
|
||||
call [check_box_draw]
|
||||
|
||||
push dword check2
|
||||
call [check_box_draw]
|
||||
|
||||
push dword Option_boxs
|
||||
call [option_box_draw]
|
||||
|
||||
push dword Option_boxs2
|
||||
call [option_box_draw]
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Всегда соблюдать последовательность в имени.
|
||||
system_path db '/sys/lib/'
|
||||
library_name db 'box_lib.obj',0
|
||||
; Если есть желание разъединить, то нужно использовать следующию конструкцию
|
||||
;system_path db '/sys/lib/box_lib.obj',0
|
||||
;... любая последовательность других команд и определений.
|
||||
;library_name db 'box_lib.obj',0
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
include '../import.inc' ;creating a function import table
|
||||
|
||||
|
||||
check1 check_box2 (10 shl 16 + 12),(45 shl 16 + 12),5,0x80AABBCC,0,0,check_text1,ch_flag_en
|
||||
check2 check_box2 (10 shl 16 + 12),(60 shl 16 + 12),6,0x80AABBCC,0,0,check_text2
|
||||
|
||||
edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1
|
||||
edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,mouse_dd,ed_figure_only
|
||||
|
||||
op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
|
||||
option_group1 dd op1 ;указатели, они отображаются по умолчанию, когда выводится
|
||||
option_group2 dd op12 ;приложение
|
||||
Option_boxs dd op1,op2,op3,0
|
||||
Option_boxs2 dd op11,op12,op13,0
|
||||
|
||||
hed db 'BOXs load from lib <Lrz> date 27.04.2009',0
|
||||
hed_end:
|
||||
|
||||
rb 256
|
||||
check_text1 db 'First checkbox',0
|
||||
check_text2 db 'Second checkbox',0
|
||||
|
||||
op_text: ; Сопровождающий текст для Optionbox'а
|
||||
.1 db 'Option_Box #1'
|
||||
.e1:
|
||||
.2 db 'Option_Box #2'
|
||||
.e2:
|
||||
.3 db 'Option_Box #3'
|
||||
.e3:
|
||||
ed_buffer rb 100
|
||||
;-----------------------
|
||||
;sc system_colors
|
||||
|
||||
mouse_dd rd 1
|
||||
p_info process_information
|
||||
cur_dir_path rb 4096
|
||||
library_path rb 4096
|
||||
i_end:
|
||||
rb 1024
|
||||
mem:
|
||||
File renamed without changes.
File renamed without changes.
+162
-156
@@ -1,156 +1,162 @@
|
||||
; Простой пример программы для KolibriOS
|
||||
; озвучивает код нажатой клавиши
|
||||
; - переделан как пример использования tooltip
|
||||
|
||||
use32 ; включить 32-битный режим ассемблера
|
||||
org 0 ; адресация с нуля
|
||||
|
||||
db 'MENUET01' ; 8-байтный идентификатор MenuetOS
|
||||
dd 1 ; версия заголовка (всегда 1)
|
||||
dd START ; адрес первой команды
|
||||
dd CODE_END ; размер программы
|
||||
dd DATA_END ; количество памяти
|
||||
dd STACK_END ; адрес вершины стэка
|
||||
dd 0 ; адрес буфера для параметров
|
||||
dd cur_dir_path ; указатель на адрес, куда помещается строка, содержащая путь до программы в момент запуска.
|
||||
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../KOSfuncs.inc'
|
||||
include '../../../../../dll.inc' ; malloc fn
|
||||
include '../../trunk/box_lib.mac'
|
||||
include '../../../../../load_lib.mac'
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- НАЧАЛО ПРОГРАММЫ ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
; этот макрос обязателен для всех компонетов, использующих heap
|
||||
; кроме того, обязательно имортировать lib_init - при импорте определяются
|
||||
; функции хипа для библиотеки
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
|
||||
START:
|
||||
;---------------------------------------------------------------------
|
||||
;--- ИНИЦИАЛИЗАЦИЯ ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
mcall SF_SYS_MISC, SSF_HEAP_INIT
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, $C0000027 ; маска событий - мышь только в активном окне
|
||||
|
||||
sys_load_library lib_name, lib_path, sys_path, import_box_lib
|
||||
test eax,eax
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
|
||||
|
||||
invoke tooltip_init, redbox_tt ; only begin of list
|
||||
|
||||
red: ; перерисовать окно
|
||||
|
||||
call draw_window ; вызываем процедуру отрисовки окна
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- ЦИКЛ ОБРАБОТКИ СОБЫТИЙ ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
still:
|
||||
mcall SF_WAIT_EVENT_TIMEOUT, 5 ; ждать события не более чем 0.05с
|
||||
test eax, eax ; нет событий - проверить рисование тултипов по таймеру
|
||||
je yield
|
||||
cmp eax,EV_REDRAW
|
||||
je red ; если да - на метку red
|
||||
cmp eax,EV_KEY
|
||||
je key ; если да - на key
|
||||
cmp eax,EV_BUTTON
|
||||
je button ; если да - на button
|
||||
cmp eax,EV_MOUSE
|
||||
je mouse ; если да - на mouse
|
||||
|
||||
jmp still ; если другое событие - в начало цикла
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
yield:
|
||||
invoke tooltip_test_show, redbox_tt
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
mouse:
|
||||
invoke tooltip_mouse, redbox_tt
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
key: ; нажата клавиша на клавиатуре
|
||||
mcall SF_GET_KEY ; считать код символа (в ah)
|
||||
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
button:
|
||||
mcall SF_GET_BUTTON ; получить идентификатор нажатой кнопки
|
||||
|
||||
cmp ah, 1 ; если НЕ нажата кнопка с номером 1,
|
||||
jne still ; вернуться
|
||||
|
||||
pexit:
|
||||
invoke tooltip_delete, redbox_tt ; освобождаем память
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА ----------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors
|
||||
|
||||
mov edx, [sc.work] ; цвет фона
|
||||
or edx, 0x33000000 ; и тип окна 3
|
||||
mcall SF_CREATE_WINDOW, <200,300>, <200,150>, , ,title
|
||||
|
||||
; вывод квадратиков
|
||||
mcall SF_DRAW_RECT, <60,50>, <50,50>, $FF0000
|
||||
mcall SF_DRAW_RECT, <140,50>, <50,50>, $FF
|
||||
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
|
||||
ret ; выходим из процедуры
|
||||
|
||||
|
||||
CODE_END: ; метка конца программы; --------------------------------------------;
|
||||
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
;---------------------------------------------------------------------
|
||||
;--- ДАННЫЕ ПРОГРАММЫ ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
sys_path db '/sys/lib/'
|
||||
;sys_path db '/tmp0/1/'
|
||||
lib_name db 'box_lib.obj',0
|
||||
cur_dir_path rb 4096
|
||||
lib_path rb 4096
|
||||
|
||||
include '../../import.inc' ;import_box_lib
|
||||
|
||||
|
||||
;tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
|
||||
redbox_tt tooltip redboxtxt, blubox_tt, 60, 50, 50, 50, 0, $FFF473, 100
|
||||
blubox_tt tooltip bluboxtxt, 0, 140, 50, 50, 50, $110000FF, $FFF473, 100
|
||||
|
||||
redboxtxt db 'Red Box Tooltip', 13, 'May be multilined', 13, 13, 'Even with empty lines', 0
|
||||
bluboxtxt db 'Blue Box Tooltip', 0
|
||||
|
||||
sc system_colors
|
||||
|
||||
title db 'Toooltip demo',0
|
||||
|
||||
; stack----------------------------------------------------------------------- ;
|
||||
rb 4096
|
||||
STACK_END dd ?
|
||||
|
||||
DATA_END: ; метка конца данных программы; ------------------------------------ ;
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; Простой пример программы для KolibriOS
|
||||
; озвучивает код нажатой клавиши
|
||||
; - переделан как пример использования tooltip
|
||||
|
||||
use32 ; включить 32-битный режим ассемблера
|
||||
org 0 ; адресация с нуля
|
||||
|
||||
db 'MENUET01' ; 8-байтный идентификатор MenuetOS
|
||||
dd 1 ; версия заголовка (всегда 1)
|
||||
dd START ; адрес первой команды
|
||||
dd CODE_END ; размер программы
|
||||
dd DATA_END ; количество памяти
|
||||
dd STACK_END ; адрес вершины стэка
|
||||
dd 0 ; адрес буфера для параметров
|
||||
dd cur_dir_path ; указатель на адрес, куда помещается строка, содержащая путь до программы в момент запуска.
|
||||
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../dll.inc' ; malloc fn
|
||||
include '../box_lib.mac'
|
||||
include '../../../../load_lib.mac'
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- НАЧАЛО ПРОГРАММЫ ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
; этот макрос обязателен для всех компонетов, использующих heap
|
||||
; кроме того, обязательно имортировать lib_init - при импорте определяются
|
||||
; функции хипа для библиотеки
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
|
||||
START:
|
||||
;---------------------------------------------------------------------
|
||||
;--- ИНИЦИАЛИЗАЦИЯ ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
mcall SF_SYS_MISC, SSF_HEAP_INIT
|
||||
|
||||
mcall SF_SET_EVENTS_MASK, $C0000027 ; маска событий - мышь только в активном окне
|
||||
|
||||
sys_load_library lib_name, lib_path, sys_path, import_box_lib
|
||||
test eax,eax
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
|
||||
|
||||
invoke tooltip_init, redbox_tt ; only begin of list
|
||||
|
||||
red: ; перерисовать окно
|
||||
|
||||
call draw_window ; вызываем процедуру отрисовки окна
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- ЦИКЛ ОБРАБОТКИ СОБЫТИЙ ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
still:
|
||||
mcall SF_WAIT_EVENT_TIMEOUT, 5 ; ждать события не более чем 0.05с
|
||||
test eax, eax ; нет событий - проверить рисование тултипов по таймеру
|
||||
je yield
|
||||
cmp eax,EV_REDRAW
|
||||
je red ; если да - на метку red
|
||||
cmp eax,EV_KEY
|
||||
je key ; если да - на key
|
||||
cmp eax,EV_BUTTON
|
||||
je button ; если да - на button
|
||||
cmp eax,EV_MOUSE
|
||||
je mouse ; если да - на mouse
|
||||
|
||||
jmp still ; если другое событие - в начало цикла
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
yield:
|
||||
invoke tooltip_test_show, redbox_tt
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
mouse:
|
||||
invoke tooltip_mouse, redbox_tt
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
key: ; нажата клавиша на клавиатуре
|
||||
mcall SF_GET_KEY ; считать код символа (в ah)
|
||||
|
||||
jmp still ; вернуться к началу цикла
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
button:
|
||||
mcall SF_GET_BUTTON ; получить идентификатор нажатой кнопки
|
||||
|
||||
cmp ah, 1 ; если НЕ нажата кнопка с номером 1,
|
||||
jne still ; вернуться
|
||||
|
||||
pexit:
|
||||
invoke tooltip_delete, redbox_tt ; освобождаем память
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА ----------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall SF_REDRAW, SSF_BEGIN_DRAW
|
||||
|
||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors
|
||||
|
||||
mov edx, [sc.work] ; цвет фона
|
||||
or edx, 0x33000000 ; и тип окна 3
|
||||
mcall SF_CREATE_WINDOW, <200,300>, <200,150>, , ,title
|
||||
|
||||
; вывод квадратиков
|
||||
mcall SF_DRAW_RECT, <60,50>, <50,50>, $FF0000
|
||||
mcall SF_DRAW_RECT, <140,50>, <50,50>, $FF
|
||||
|
||||
|
||||
mcall SF_REDRAW, SSF_END_DRAW
|
||||
|
||||
ret ; выходим из процедуры
|
||||
|
||||
|
||||
CODE_END: ; метка конца программы; --------------------------------------------;
|
||||
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
;---------------------------------------------------------------------
|
||||
;--- ДАННЫЕ ПРОГРАММЫ ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
sys_path db '/sys/lib/'
|
||||
;sys_path db '/tmp0/1/'
|
||||
lib_name db 'box_lib.obj',0
|
||||
cur_dir_path rb 4096
|
||||
lib_path rb 4096
|
||||
|
||||
include '../import.inc' ;import_box_lib
|
||||
|
||||
|
||||
;tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
|
||||
redbox_tt tooltip redboxtxt, blubox_tt, 60, 50, 50, 50, 0, $FFF473, 100
|
||||
blubox_tt tooltip bluboxtxt, 0, 140, 50, 50, 50, $110000FF, $FFF473, 100
|
||||
|
||||
redboxtxt db 'Red Box Tooltip', 13, 'May be multilined', 13, 13, 'Even with empty lines', 0
|
||||
bluboxtxt db 'Blue Box Tooltip', 0
|
||||
|
||||
sc system_colors
|
||||
|
||||
title db 'Toooltip demo',0
|
||||
|
||||
; stack----------------------------------------------------------------------- ;
|
||||
rb 4096
|
||||
STACK_END dd ?
|
||||
|
||||
DATA_END: ; метка конца данных программы; ------------------------------------ ;
|
||||
File renamed without changes.
+6
-6
@@ -22,14 +22,14 @@ format MS COFF
|
||||
public EXPORTS
|
||||
|
||||
section '.flat' code readable align 16
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../macros.inc'
|
||||
include '../../../proc32.inc'
|
||||
include '../../../KOSfuncs.inc'
|
||||
include 'box_lib.mac' ;macro which should make life easier :)
|
||||
;include '../../../../debug.inc'
|
||||
;include '../../../debug.inc'
|
||||
include 'keys.inc'
|
||||
include '../../../../system/skincfg/kglobals.inc'
|
||||
include '../../../../system/skincfg/unpacker.inc'
|
||||
include '../../../system/skincfg/kglobals.inc'
|
||||
include '../../../system/skincfg/unpacker.inc'
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
mem.alloc dd ? ;ЇєэъЎш фы т√фхыхэш ярь Єш
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+401
-401
@@ -1,401 +1,401 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>¤ыхьхэЄ Text Editor</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<link href="../style.css" type=text/css rel=stylesheet>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p><a href="../box_lib.htm">═р уыртэє■ ↑</a></p>
|
||||
<h1>╬уыртыхэшх</h1>
|
||||
|
||||
<p><a href="#vveden">┬тхфхэшх</a></p>
|
||||
<p><a href="#funct">╘єэъЎшш</a></p>
|
||||
<ul>
|
||||
<li><a href="#fun_but_copy">ted_but_copy</a></li>
|
||||
<li><a href="#fun_but_cut">ted_but_cut</a></li>
|
||||
<li><a href="#fun_but_find">ted_but_find</a></li>
|
||||
<li><a href="#fun_but_find_next">ted_but_find_next</a></li>
|
||||
<li><a href="#fun_but_paste">ted_but_paste</a></li>
|
||||
<li><a href="#fun_but_redo">ted_but_redo</a></li>
|
||||
<li><a href="#fun_but_reverse">ted_but_reverse</a></li>
|
||||
<li><a href="#fun_but_save_file">ted_but_save_file</a></li>
|
||||
<li><a href="#fun_but_select_word">ted_but_select_word</a></li>
|
||||
<li><a href="#fun_but_sumb_lover">ted_but_sumb_lover</a></li>
|
||||
<li><a href="#fun_but_sumb_upper">ted_but_sumb_upper</a></li>
|
||||
<li><a href="#fun_but_undo">ted_but_undo</a></li>
|
||||
<li><a href="#fun_can_save">ted_can_save</a></li>
|
||||
<li><a href="#fun_clear">ted_clear</a></li>
|
||||
<li><a href="#fun_delete">ted_delete</a></li>
|
||||
<li><a href="#fun_draw">ted_draw</a></li>
|
||||
<li><a href="#fun_init">ted_init</a></li>
|
||||
<li><a href="#fun_init_scroll_bars">ted_init_scroll_bars</a></li>
|
||||
<li><a href="#fun_init_syntax_file">ted_init_syntax_file</a></li>
|
||||
<li><a href="#fun_is_select">ted_is_select</a></li>
|
||||
<li><a href="#fun_key">ted_key</a></li>
|
||||
<li><a href="#fun_mouse">ted_mouse</a></li>
|
||||
<li><a href="#fun_open_file">ted_open_file</a></li>
|
||||
<li><a href="#fun_text_add">ted_text_add</a></li>
|
||||
<li><a href="#fun_text_colored">ted_text_colored</a></li>
|
||||
<li><a href="#fun_go_to_position">ted_go_to_position</a></li>
|
||||
</ul>
|
||||
<p><a href="#syn_file">╘юЁьрЄ Їрщыр яюфётхЄъш *.syn</a></p>
|
||||
<p><a href="#struc_tedit">╤ЄЁєъЄєЁр tedit</a></p>
|
||||
|
||||
<h1><a name="vveden">┬тхфхэшх</a></h1>
|
||||
<p>▌ыхьхэЄ text_editor яючтюы хЄ ЁрсюЄрЄ№ ё ЄхъёЄют√ьш Їрщырьш, ёюфхЁцшЄ ьэюую ЇєэъЎшщ фы ЁхфръЄшЁютрэш ЄхъёЄр.</p>
|
||||
<p><img src="../../../../../../other/t_edit/t_edit.png"></p>
|
||||
<p>┬эх°эшщ тшф яЁюуЁрьь√, ё ¤ыхьхэЄюь text_editor.</p>
|
||||
|
||||
<h2>┬ючьюцэюёЄш ¤ыхьхэЄр</h2>
|
||||
<ul>
|
||||
<li>╬ЄъЁ√Єшх (Ctrl+O), ╤юїЁрэхэшх Їрщыр (Ctrl+S, Ctrl+Shift+S).</li>
|
||||
<li>╨хфръЄшЁютрэшх: ╧ютЄюЁ/╬Єьхэр фхщёЄтш (Ctrl+Z), ┬√ЁхчрЄ№, ╩юяшЁютрЄ№ (Ctrl+C), ┬ёЄртшЄ№ (Ctrl+V), ╧юшёъ (Ctrl+F, F3), ╟рьхэр (Ctrl+H), ╧хЁхїюф эр ёЄЁюъє (Ctrl+G).</li>
|
||||
<li>┬√фхыхэшх ЎтхЄюь ёыют, чрфрээ√ї т Їрщых ёшэЄръёшёр. ┬√тюф ёяЁртъш яю эшь, хёыш юэр хёЄ№ (эрцрЄшхь F1 ъюуфр ъєЁёюЁ эр ёыютх).</li>
|
||||
</ul>
|
||||
|
||||
<h2>╬ ЁрсюЄх ¤ыхьхэЄр</h2>
|
||||
<p>╨рчфхы фы яЁюуЁрььшёЄют (ш шэЄхЁхёє■∙шїё ы■фхщ), т ъюЄюЁюь Ёрёърчрэ√
|
||||
эхъюЄюЁ√х шфхш, эр ъюЄюЁ√ї яюёЄЁюхэр фрээр яЁюуЁрььр.</p>
|
||||
|
||||
<p>─ы ЁрсюЄ√ ё ЄхъёЄюь яЁюуЁрььр шёяюы№чєхЄ ёЄЁєъЄєЁ√:</p>
|
||||
<pre>struct symbol
|
||||
c db ? ; +0 ёшьтюы
|
||||
col db ? ; +1 ЎтхЄ
|
||||
perv dd ? ; +2
|
||||
next dd ? ; +6 єърчрЄхыш
|
||||
tc dd ? ; +10 тЁхь. ёючфрэш
|
||||
td dd ? ; +14 тЁхь. єфрыхэш
|
||||
ends</pre>
|
||||
<p>╩рцфр шч Єръшї ёЄЁєъЄєЁ ёюїЁрэ хЄ юфшэ ёшьтюы т яхЁхьхээющ 'c'. ╧хЁхьхээ√х
|
||||
'perv' ш 'next' їЁрэ Є шэфхъё√ яхЁтюую ш ёыхфє■∙хую ёшьтюыют. ┴ыруюфрЁ ўхьє
|
||||
ЄхъёЄ ёючфрхЄё т тшфх Ўхяюўъш ёшьтюыют (фтєэряЁртыхээ√щ ёяшёюъ).</p>
|
||||
<p><b>'tc'</b> - тЁхь ёючфрэш ёшьтюыр, яЁш юЄьхэх фхщёЄтш ЄхъёЄют√щ ЁхфръЄюЁ "чэрхЄ"
|
||||
ъръшх ёшьтюы√ юЄюсЁрцрЄ№, р ъръшх эхЄ (їюЄ тёх ёшьтюы√ "тшё Є" т ярь Єш).</p>
|
||||
<p><b>'td'</b> - тЁхь єфрыхэш ёшьтюыр, чряюыэ хЄё яЁш єфрыхэшш, яЁш юЄьхэх фхщёЄтш
|
||||
єфрыхэш ёшьтюыют, ЄхъёЄ ьюцхЄ с√Є№ тюёёЄрэютыхэ.</p>
|
||||
<p><b>'col'</b> - шёяюы№чєхЄё фы ЎтхЄютющ ЁрчьхЄъш, ёюфхЁцшЄ шэфхъё ЎтхЄр т ьрёёштх ЎтхЄют ted_text_colors.</p>
|
||||
|
||||
<h1><a name="funct">╘єэъЎшш</a></h1>
|
||||
<h2>╘єэъЎшш эр ¤ъёяюЁЄ:</h2>
|
||||
|
||||
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
||||
<p>╘єэъЎш ъюЄюЁр сєфхЄ т√ч√трЄ№ё яЁш эрцрЄшш эр ъэюяъє ъюяшЁютрэш т сєЇхЁ шыш эр <b>Ctrl+C</b>. ╥хъёЄ ъюяшЁєхЄё т сєЇхЁ <b>ted_buffer</b>, ьръёшьры№э√щ ЁрчьхЁ сєЇхЁр єърч√трхЄё т <b>ted_buffer_size</b>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_copy], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_cut">ted_but_cut</a></h4>
|
||||
<p>╘єэъЎш т√ЁхчрхЄ т√фхыхээ√щ ЄхъёЄ ш ъюяшЁєхЄ хую т сєЇхЁ.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_cut], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_find">ted_but_find</a></h4>
|
||||
<p>╘єэъЎш фы яюшёър ЄхъёЄр. ╚∙хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer_find</b>, яЁш эрїюцфхэшш яхЁхьх∙рхЄ ъєЁёюЁ ъ эрщфхэюьє ЄхъёЄє ш т√фхы хЄ хую. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ярЁрьхЄЁ√ яюшёър:</p>
|
||||
<ul>
|
||||
<li>0 - шёърЄ№ эшцх ъєЁёюЁр</li>
|
||||
<li>1 - шёърЄ№ т√°х ъєЁёюЁр</li>
|
||||
<li>2 - шёърЄ№ юЄ эрўрыр фюъєьхэЄр</li>
|
||||
</ul>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_find], tedit0, 2</pre>
|
||||
|
||||
<h4><a name="fun_but_find_next">ted_but_find_next</a></h4>
|
||||
<p>╘єэъЎш фы яюшёър ЄхъёЄр. ╚∙хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer_find</b>, яЁш эрїюцфхэшш яхЁхьх∙рхЄ ъєЁёюЁ ъ эрщфхэюьє ЄхъёЄє ш т√фхы хЄ хую. ╧юшёъ тхфхЄё эшцх Єхъє∙хую яюыюцхэш ъєЁёюЁр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_find_next], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_paste">ted_but_paste</a></h4><p></p>
|
||||
<p>╘єэъЎш тёЄрты хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer</b>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_paste], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_redo">ted_but_redo</a></h4>
|
||||
<p>╧ютЄюЁ хЄ юЄьхэхээ√х фхщёЄтш яю ЁхфръЄшЁютрэш■ ЄхъёЄр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_redo], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_reverse">ted_but_reverse</a></h4>
|
||||
<p>╠хэ хЄ яюЁ фюъ ёыхфютрэш ёшьтюыют т т√фхыхээюь ЄхъёЄх.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_reverse], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_save_file">ted_but_save_file</a></h4>
|
||||
<p>╘єэъЎш фы ёюїЁрэхэш Їрщыр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text]</pre>
|
||||
|
||||
<h4><a name="fun_but_select_word">ted_but_select_word</a></h4>
|
||||
<p>╘єэъЎш фы т√фхыхэш ъы■ўхтюую ёыютр яюф ъєЁёюЁюь. ┼ёыш ъы■ўхт√х ёыютр эх шёяюы№чє■Єё , Єюуфр сєфхЄ т√фхыхэ тхё№ ЄхъёЄ.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_select_word], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_sumb_lover">ted_but_sumb_lover</a></h4>
|
||||
<p>╧хЁхтюфшЄ т√фхыхээ√х ёшьтюы√ ъ эшцэхьє ЁхушёЄЁє.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_sumb_lover], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_sumb_upper">ted_but_sumb_upper</a></h4>
|
||||
<p>╧хЁхтюфшЄ т√фхыхээ√х ёшьтюы√ ъ тхЁїэхьє ЁхушёЄЁє.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_sumb_upper], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_undo">ted_but_undo</a></h4>
|
||||
<p>╬Єьхэ хЄ фхщёЄтш яю ЁхфръЄшЁютрэш■ ЄхъёЄр. ─хщёЄтш ЇєэъЎшш <b>ted_but_reverse</b> эх юЄьхэ ■Єё .</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_undo], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_can_save">ted_can_save</a></h4>
|
||||
<p>╘єэъЎш ъюЄюЁр яЁютхЁ хЄ с√ыш ыш эх ёюїЁрэхээ√х шчьхэхэш т ЄхъёЄх. ╨хчєы№ЄрЄ тючтЁр∙рхЄё т ЁхушёЄЁ <b>al</b>, хёыш шчьхэхэш с√ыш Єю тючтЁр∙рхЄ 1 шэрўх 0.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax
|
||||
stdcall [ted_can_save], tedit0
|
||||
cmp al,1
|
||||
.........
|
||||
pop eax</pre>
|
||||
|
||||
<h4><a name="fun_clear">ted_clear</a></h4>
|
||||
<p>╬ўшёЄър ЄхъёЄр т юъэх ЁхфръЄюЁр. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ярЁрьхЄЁ юяЁхфхы хЄ сєфхЄ ыш юўшёЄър ярь Єш яюыэющ.</p>
|
||||
<p>┼ёыш 2-щ ярЁрьхЄЁ Ёртхэ 1, Єю юўшёЄър сєфхЄ яюыэющ, яЁш 0 эхЄ. ╧юы№чютрЄхы■ эєцэю т√ч√трЄ№ ЇєэъЎш■ ё ярЁрьхЄЁюь 1, ярЁрьхЄЁ 0 фы тэєЄЁхээхую шёяюы№чютрэш .</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_clear], tedit0,1</pre>
|
||||
|
||||
<h4><a name="fun_delete">ted_delete</a></h4>
|
||||
<p>─хёЄЁєъЄюЁ ¤ыхьхэЄр, юётюсюцфрхЄ ярь Є№ чрэ Єє■ ¤ыхьхэЄюь.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_delete], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_draw">ted_draw</a></h4>
|
||||
<p>╧хЁхЁшёютър тёхую юъэр ЁхфръЄюЁр, тъы■ўр фюўхЁэшх ёъЁюыышэуш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_draw], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_init">ted_init</a></h4>
|
||||
<p>╩юэёЄЁєъЄюЁ ¤ыхьхэЄр, т√фхы хЄ ярь Є№ эхюсїюфшьє■ фы ЁрсюЄ√ ЄхъёЄютюую ЁхфръЄюЁр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_init_scroll_bars">ted_init_scroll_bars</a></h4>
|
||||
<p>╙ёЄрэртыштрхЄ ЎтхЄ ёъЁюыышэуют ш эрёЄЁрштрхЄ шї ЁрчьхЁ√ т чртшёшьюёЄш юЄ ЁрчьхЁют юъэр. ╠юцэю т√ч√трЄ№ ¤Єє ЇєэъЎш■ яЁш шчьхэхэшш ЁрчьхЁют юъэр т яюы№чютрЄхы№ёъющ яЁюуЁрььх. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) юяЎшш, єърч√тр■Є ъръшх эєцэю шчьхэшЄ№ ярЁрьхЄЁ√:</p>
|
||||
<ul>
|
||||
<li>1 - шчьхэшЄ№ ЎтхЄр ёъЁюыышэуют</li>
|
||||
<li>2 - шчьхэшыё ЁрчьхЁ юъэр</li>
|
||||
<li>4 - шчьхэшыё ЁрчьхЁ фюъєьхэЄр</li>
|
||||
</ul>
|
||||
<p>╧рЁрьхЄЁ√ ьюцэю ъюьсшэшЁютрЄ№ ўхЁхч <i>ыюушўхёъюх шыш</i>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init_scroll_bars], tedit0,2</pre>
|
||||
|
||||
<h4><a name="fun_init_syntax_file">ted_init_syntax_file</a></h4>
|
||||
<p>╘єэъЎш фы чруЁєчъш ЎтхЄют шэЄхЁЇхщёр ш ъы■ўхт√ї ёыют шч Їрщыр ёшэЄръёшёр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр ёшэЄръёшёр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name</pre>
|
||||
|
||||
<h4><a name="fun_is_select">ted_is_select</a></h4>
|
||||
<p>╬яЁхфхы хЄ хёЄ№ т юъэх ЁхфръЄюЁр т√фхыхээ√щ ЄхъёЄ. ┼ёыш хёЄ№ т ЁхушёЄЁ <b>al</b> чряшё√трхЄё 1 шэрўх 0. ╘єэъЎш эхюсїюфшьр фы ёючфрэш ярэхыхщ шэёЄЁхьхэЄют, т ъюЄюЁ√ї т чртшёшьюёЄш юЄ т√фхыхэш сєфєЄ фюёЄєяэ√ шыш чрсыюъшЁютрэ√ юяЁхфхыхээ√х ъэюяъш (фхщёЄтш ). ═ряЁшьхЁ ъэюяъє фы ъюяшЁютрэш т сєЇхЁ ьюцэю чрсыюъшЁютрЄ№ хёыш эхЄ т√сЁрээюую ЄхъёЄр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax edi
|
||||
mov edi,tedit0
|
||||
call [ted_is_select]
|
||||
cmp al,0
|
||||
.........
|
||||
pop edi eax</pre>
|
||||
|
||||
<h4><a name="fun_key">ted_key</a></h4>
|
||||
<p>╘єэъЎш т√ч√трхьр фы ЁхръЎшш эр ъыртшрЄєЁє. ┬ ЁхушёЄЁх <b>eax</b> фюыцхэ с√Є№ ъюф эрцрЄющ ъыртш°ш. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ЄрсышЎр фы ъюэтхЁЄрЎшш scan ъюфют т ascii,</p>
|
||||
<p>3) єяЁрты ■∙шх ёшьтюы√.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>mcall 66,3 ;66.3 яюыєўшЄ№ ёюёЄю эшх єяЁрты ■∙шї ъыртш°
|
||||
xor esi,esi
|
||||
mov ecx,1
|
||||
test al,0x03 ;[Shift]
|
||||
jz @f
|
||||
mov cl,2
|
||||
or esi,KM_SHIFT
|
||||
@@:
|
||||
test al,0x0c ;[Ctrl]
|
||||
jz @f
|
||||
or esi,KM_CTRL
|
||||
@@:
|
||||
test al,0x30 ;[Alt]
|
||||
jz @f
|
||||
mov cl,3
|
||||
or esi,KM_ALT
|
||||
@@:
|
||||
test al,0x80 ;[NumLock]
|
||||
jz @f
|
||||
or esi,KM_NUMLOCK
|
||||
@@:
|
||||
|
||||
mcall 26,2,,conv_tabl ;26.2 яюыєўшЄ№ Ёрёъырфъє ъыртшрЄєЁ√
|
||||
mcall 2 ;яюыєўрхь ъюф эрцрЄющ ъыртш°ш
|
||||
stdcall [ted_key], tedit0, conv_tabl,esi</pre>
|
||||
|
||||
<h4><a name="fun_mouse">ted_mouse</a></h4>
|
||||
<p>╘єэъЎш эр яхЁхьх∙хэшх шыш эрцрЄшх ь√°ш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_mouse], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_open_file">ted_open_file</a></h4>
|
||||
<p>╘єэъЎш фы юЄъЁ√Єш Їрщыр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр.</p>
|
||||
<p>┬ючтЁр∙рхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) eax = ъюф ю°шсъш</p>
|
||||
<p>2) ebx = ъюыышўхёЄтю яЁюўшЄрээ√ї срщЄ</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax ebx
|
||||
stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]
|
||||
.........
|
||||
pop ebx eax</pre>
|
||||
|
||||
<h4><a name="fun_text_add">ted_text_add</a></h4>
|
||||
<p>╘єэъЎш фы фюсртыхэш ЄхъёЄр. ╧ЁшэшьрхЄ 4 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) єърчрЄхы№ эр сєЇхЁ ё ЄхъёЄюь,</p>
|
||||
<p>3) фышэр ЄхъёЄр,</p>
|
||||
<p>4) юяЎшш тёЄртъш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>text_buffer db 500 dup(0)
|
||||
.........
|
||||
mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor
|
||||
stdcall [ted_text_add], tedit0,text_buffer,30,ebx</pre>
|
||||
<p><b>ted_opt_ed_change_time</b> - ЇшъёшЁютрЄ№ шчьхэхэш фюъєьхэЄр, ўЄю-с√ шї ьюцэю с√ыю юЄьхэшЄ№. ═ряЁшьхЁ хёыш эєцэю ёфхырЄ№ эхёъюы№ъю шчьхэхэшщ ЄхъёЄр, ъюЄюЁ√х сєфєЄ юЄьхэ Є№ё чр юфшэ Ёрч, Єю 1-х шчьхэхэшх шфхЄ ё ¤Єющ ъюэёЄрэЄющ р юёЄры№э√х эхЄ.</p>
|
||||
<p><b>ted_opt_ed_move_cursor</b> - ъюэёЄрэЄр ъюЄюЁр юяЁхфхы хЄ ёфтшу ъєЁёюЁр яюёых фюсртыхэш ЄхъёЄр.</p>
|
||||
|
||||
<h4><a name="fun_text_colored">ted_text_colored</a></h4>
|
||||
<p>╘єэъЎш фы ЁрчьхЄъш ЄхъёЄр ЎтхЄюь. ╬с√ўэю т√ч√трхЄё тэєЄЁш ёрьющ сшсышюЄхъш, яЁш шчьхэхэш ї ЄхъёЄр. ┬ эхъюЄюЁ√ї ёыєўр ї ьюцхЄ яюэрфюсшЄ№ё т√чтрЄ№ яЁшэєфшЄхы№эю шч тэх°эхщ яЁюуЁрьь√.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push edi
|
||||
mov edi,tedit0
|
||||
call [ted_text_colored]
|
||||
pop edi</pre>
|
||||
|
||||
<h4><a name="fun_go_to_position">ted_go_to_position</a></h4>
|
||||
<p>╘єэъЎш фы яхЁхїюфр эр єърчрээє■ яючшЎш■. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) эюьхЁ ёЄЁюъш,</p>
|
||||
<p>3) эюьхЁ ёшьтюыр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_go_to_position], tedit0,50,3</pre>
|
||||
|
||||
<h2>┬эєЄЁхээшх ЇєэъЎшш:</h2>
|
||||
<p><b>ted_get_text_perv_pos</b> - яхЁхїюф эр яЁхф√фє∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'perv')</p>
|
||||
<p><b>ted_get_text_next_pos</b> - яхЁхїюф эр ёыхфє■∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'next')</p>
|
||||
<p><b>ted_symbol_not_vis</b> - юяЁхфхы хЄ тшфшь√щ ыш єърчрээ√щ ёшьтюы эр ¤ъЁрэх (т чртшёшьюёЄш
|
||||
юЄ чэрўхэшщ 'tc' ш 'td')</p>
|
||||
<p><b>ted_iterat_next</b> - яхЁхїюф эр ёыхфє■∙шщ тшфшь√щ ёшьтюы т Ўхяш. ╚ёяюы№чєхЄ фы
|
||||
ЁрсюЄ√ ЇєэъЎшш ted_get_text_next_pos ш ted_symbol_not_vis.</p>
|
||||
<p><b>ted_iterat_perv</b> - яхЁхїюф эр яЁхфхфє∙шщ тшфшь√щ ёшьтюы т Ўхяш.</p>
|
||||
|
||||
<p><b>ted_iterat_next_pos_char</b> - эрщЄш ёыхфє■∙є■ яючшЎш■ єърчрээюую ёшьтюыр (edx-яюч. эрўрыр
|
||||
яюшёър, bl->ъюф шёъюьюую ёшьтюыр)</p>
|
||||
<p><b>ted_get_pos_by_coords</b> - схЁхЄ яючшЎш■ ёшьтюыр яю ъююЁфшэрЄрь (esi->ъююЁф. x, чэръ;
|
||||
ecx->ъююЁф. y, ёЄЁюър)</p>
|
||||
<p><b>ted_go_to_pos</b> - яхЁхёЄрты хЄ ъєЁёюЁ т єърчрээє■ яючшЎш■, хёыш єърчрээр яючшЎш
|
||||
эрїюфшЄё тэх ¤ъЁрэр, Єю Єръцх яхЁхёЄрты ■Єё ёъЁюышэуш (ecx->ъююЁф. x, чэръ; edx->ъююЁф. y, ёЄЁюър)</p>
|
||||
|
||||
<h1><a name="syn_file">╘юЁьрЄ Їрщыр яюфётхЄъш *.syn</a></h1>
|
||||
<table>
|
||||
<tr><th>▌ыхьхэЄ</th><th>╨рчьхЁ (срщЄ)</th></tr>
|
||||
<tr><td>╩юышўхёЄтю ЎтхЄют ЄхъёЄр</td>
|
||||
<td><pre>4</pre></td></tr>
|
||||
<tr><td>╩юышўхёЄтю яюфётхўштрхь√ї ёыют</td>
|
||||
<td><pre>4</pre></td></tr>
|
||||
<tr><td>╓тхЄр шэЄхЁЇхщёр</td>
|
||||
<td><pre>4*6</pre></td></tr>
|
||||
<tr><td>╓тхЄр фы ЄхъёЄр</td>
|
||||
<td><pre>4*(ъюы. Ўт. ЄхъёЄр)</pre></td></tr>
|
||||
<tr><td>╤ЄЁєъЄєЁ√ ёю ётющёЄтрьш ш юяшёрэш ьш ёыют</td>
|
||||
<td><pre>sizeof(TexColViv)*(ъюы. ёыют)</pre></td></tr>
|
||||
<tr><td>╨рчфхышЄхы№э√щ ёшьтюы, ючэрўр■∙шщ эрўрыю юяшёрэшщ ёыют (тёхуфр Ёртхэ 0)</td>
|
||||
<td><pre>1 срщЄ</pre></td></tr>
|
||||
<tr><td>╬яшёрэш ёыют (ёЄЁюъш ЄхъёЄр ё 0-ьш т ъюэЎх)</td>
|
||||
<td><pre>(фышээр ёяЁртюўэюую ЄхъёЄр + 1)</pre></td></tr>
|
||||
</table>
|
||||
<h4>╟рьхўрэш .</h4>
|
||||
<ul>
|
||||
<li>┬ёх ёыютр фюыцэ√ с√Є№ Ёрёяюыюцхэ√ т яюЁ фъх ёыхфютрэш шї ASCII ъюфют.
|
||||
┬ючьюцэю т сєфє∙шї тхЁёш ї ЇюЁьрЄ Їрщыют яюфётхЄъш сєфхЄ шчьхэхэ.</li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="struc_tedit">╤ЄЁєъЄєЁр tedit</a></h1>
|
||||
<p>╠ръЁюёр фы ёючфрэш ёЄЁєъЄєЁ√ ЄхъёЄютюую ЁхфръЄюЁр эхЄ. ╧юЄюьє фрээ√х фы эхую чрфр■Єё тЁєўэє■. ╧ЁшьхЁ ёЄЁєъЄєЁ√ фы ЄхъёЄютюую ЁхфръЄюЁр:</p>
|
||||
<pre>align 4
|
||||
tedit0: ;ёЄЁєъЄєЁр ЄхъёЄютюую ЁхфръЄюЁр
|
||||
.wnd BOX 195,5+20,325,260 ;+ 0
|
||||
.rec BOX 30,13,7,10 ;+16
|
||||
.drag_m db 0 ;+32 т√фхыхэшх юЄ ь√°ш
|
||||
.drag_k db 0 ;+33 т√фхыхэшх юЄ ъыртшрЄєЁ√
|
||||
.sel TexSelect 0,0,0,0 ;+34 ёЄЁєъЄєЁр т√фхыхэш
|
||||
.seln TexSelect ;+50 фюяюыэшЄхы№эр ёЄЁєъЄєЁр т√фхыхэш
|
||||
.tex dd 0 ;+66 text memory pointer
|
||||
.tex_1 dd 0 ;+70 text first symbol pointer
|
||||
.tex_end dd 0 ;+74 text end memory pointer
|
||||
.cur_x dd 0 ;+78 ъююЁфшэрЄр x ъєЁёюЁр
|
||||
.cur_y dd 0 ;+82 ъююЁфшэрЄр y ъєЁёюЁр
|
||||
.max_chars dd 5002 ;+86 ьръёшьры№эюх ўшёыю ёшьтюыют т юфэюь фюъєьхэЄх
|
||||
.count_colors_text dd 1 ;+90 ъюыышўхёЄтю ЎтхЄют ЄхъёЄр
|
||||
.count_key_words dd 0 ;+94 ъюыышўхёЄтю ъы■ўхт√ї ёыют
|
||||
.color_cursor dd 0xff0000 ;+98 ЎтхЄ ъєЁёюЁр
|
||||
.color_wnd_capt dd 0x0080c0 ;+102 ЎтхЄ яюыхщ тюъЁєу юъэр
|
||||
.color_wnd_work dd 0x0 ;+106 ЎтхЄ Їюэр юъэр
|
||||
.color_wnd_bord dd 0xffffff ;+110 ЎтхЄ ЄхъёЄр эр яюы ї
|
||||
.color_select dd 0x0000ff ;+114 ЎтхЄ т√фхыхэш
|
||||
.color_cur_text dd 0xffff00 ;+118 ЎтхЄ ёшьтюыр яюф ъєЁёюЁюь
|
||||
.color_wnd_text dd 0x80ffff ;+122 ЎтхЄ ЄхъёЄр т юъэх
|
||||
.syntax_file dd 0 ;+126 єърчрЄхы№ эр эрўрыю Їрщыр ёшэЄръёшёр
|
||||
.syntax_file_size dd 500 ;+130 ьръёшьры№э√щ ЁрчьхЁ Їрщыр ёшэЄръёшёр
|
||||
.text_colors dd 0 ;+134 єърчрЄхы№ эр ьрёёшт ЎтхЄют ЄхъёЄр
|
||||
.help_text_f1 dd 0 ;+138 єърчрЄхы№ эр ЄхъёЄ ёяЁртъш (яю эрцрЄшш F1)
|
||||
.help_id dd -1 ;+142 шфхэЄшЇшърЄюЁ фы ёяЁртъш
|
||||
.key_words_data dd 0 ;+146 єърчрЄхы№ эр ёЄЁєъЄєЁ√ ъы■ўхт√ї ёыют TexColViv
|
||||
.tim_ch dd ? ;+150 ъюышўхёЄтю шчьхэхэшщ т Їрщых
|
||||
.tim_undo dd ? ;+154 ъюышўхёЄтю юЄьхэхээ√ї фхщёЄтшщ
|
||||
.tim_ls dd ? ;+158 тЁхь яюёыхфэхую ёюїЁрэхэш
|
||||
.tim_co dd ? ;+162 тЁхь яюёыхфэхщ ЎтхЄютющ ЁрчьхЄъш
|
||||
.el_focus dd el_focus ;+166 єърчрЄхы№ эр яхЁхьхээє■ ¤ыхьхэЄр т Їюъєёх
|
||||
.err_save db 0 ;+170 ю°шсър ёюїЁрэхэш Їрщыр
|
||||
.panel_id db 0 ;+171 эюьхЁ юЄъЁ√Єющ ярэхыш
|
||||
.key_new db 0 ;+172 ёшьтюы, ъюЄюЁ√щ сєфхЄ фюсрты Єё ё ъыртшрЄєЁ√
|
||||
.symbol_new_line db 20 ;+173 ёшьтюы чртхЁ°хэш ёЄЁюъш
|
||||
.scr_w dd scrol_w1 ;+174 тхЁЄшъры№э√щ ёъЁюыышэу
|
||||
.scr_h dd scrol_h1 ;+178 уюЁшчюэЄры№э√щ ёъЁюыышэу
|
||||
.arr_key_pos dd 0 ;+182 єърчрЄхы№ эр ьрёёшт яючшЎшщ ъы■ўхт√ї ёыют
|
||||
.buffer dd buf ;+186 єърчрЄхы№ эр сєЇхЁ ъюяшЁютрэш /тёЄртъш
|
||||
.buffer_find dd 0 ;+190 єърчрЄхы№ эр сєЇхЁ фы яюшёър
|
||||
.cur_ins db 1 ;+194 Ёхцшь ЁрсюЄ√ ъєЁёюЁр (юс√ўэ√щ шыш чрьхэр)
|
||||
.mode_color db 1 ;+195 Ёхцшь т√фхыхэш ёыют ЎтхЄюь (0-т√ъы. 1-тъы.)
|
||||
.mode_invis db 0 ;+196 Ёхцшь яюърчр эхяхўрЄрхь√ї ёшьтюыют
|
||||
.gp_opt db 0 ;+197 юяЎшш тючтЁр∙рхь√х ЇєэъЎшхщ ted_get_pos_by_cursor
|
||||
.fun_on_key_ctrl_all dd but_ctrl_all ;+198 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш эрцрЄшш Ctrl+N,O,S,F,H,G
|
||||
dd 0,0,0 ;чрЁхчхЁтшЁютрэю
|
||||
.buffer_size dd BUF_SIZE ;+214 ЁрчьхЁ сєЇхЁр ъюяшЁютрэш /тёЄртъш
|
||||
.fun_find_err dd 0 ;+218 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш яюшёъ чръюэўшыё эхєфрўэю
|
||||
.fun_init_synt_err dd 0 ;+222 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш ю°шсюўэюь юЄъЁ√Єшш Їрщыр ёшэЄръёшёр
|
||||
.fun_draw_panel_buttons dd 0 ;+226 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш ярэхыш ё ъэюяърьш
|
||||
.fun_draw_panels dd 0 ;+230 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш ярэхыш яюшёър/чрьхэ√/яхЁхїюфр/ёшэЄръёшёр
|
||||
dd 0 ;чрЁхчхЁтшЁютрэю
|
||||
.fun_save_err dd 0 ;+238 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш ёюїЁрэхэшх Їрщыр чръюэўшыюё№ эхєфрўэю
|
||||
.increase_size dd 225 ;+242 ўшёыю ёшьтюыют эр ъюЄюЁ√х сєфхЄ єтхўштрЄ№ё ярь Є№ яЁш эхїтрЄъх
|
||||
.ptr_free_symb dd ? ;+246 єърчрЄхы№ эр ётюсюфэє■ ярь Є№, т ъюЄюЁє■ ьюцэю фюсрты Є№ ёшьтюы (шёяюы№чєхЄё тэєЄЁш ¤ыхьхэЄр фы єёъюЁхэш тёЄртъш ЄхъёЄр)
|
||||
.font_s dd ? ;+250 ёЄшыш фы °ЁшЇЄр (юЄ 0 фю 7 ьэюцшЄхы№ фы ЁрчьхЁр, +16 фы тЄюЁюую ёшёЄхьэюую °ЁшЇЄр)</pre>
|
||||
<hr>
|
||||
<p>─юъєьхэЄрЎш юсэюты ырё№ яюёыхфэшщ Ёрч 29.01.19.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<html>
|
||||
<head>
|
||||
<title>¤ыхьхэЄ Text Editor</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<link href="../style.css" type=text/css rel=stylesheet>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p><a href="../box_lib.htm">═р уыртэє■ ↑</a></p>
|
||||
<h1>╬уыртыхэшх</h1>
|
||||
|
||||
<p><a href="#vveden">┬тхфхэшх</a></p>
|
||||
<p><a href="#funct">╘єэъЎшш</a></p>
|
||||
<ul>
|
||||
<li><a href="#fun_but_copy">ted_but_copy</a></li>
|
||||
<li><a href="#fun_but_cut">ted_but_cut</a></li>
|
||||
<li><a href="#fun_but_find">ted_but_find</a></li>
|
||||
<li><a href="#fun_but_find_next">ted_but_find_next</a></li>
|
||||
<li><a href="#fun_but_paste">ted_but_paste</a></li>
|
||||
<li><a href="#fun_but_redo">ted_but_redo</a></li>
|
||||
<li><a href="#fun_but_reverse">ted_but_reverse</a></li>
|
||||
<li><a href="#fun_but_save_file">ted_but_save_file</a></li>
|
||||
<li><a href="#fun_but_select_word">ted_but_select_word</a></li>
|
||||
<li><a href="#fun_but_sumb_lover">ted_but_sumb_lover</a></li>
|
||||
<li><a href="#fun_but_sumb_upper">ted_but_sumb_upper</a></li>
|
||||
<li><a href="#fun_but_undo">ted_but_undo</a></li>
|
||||
<li><a href="#fun_can_save">ted_can_save</a></li>
|
||||
<li><a href="#fun_clear">ted_clear</a></li>
|
||||
<li><a href="#fun_delete">ted_delete</a></li>
|
||||
<li><a href="#fun_draw">ted_draw</a></li>
|
||||
<li><a href="#fun_init">ted_init</a></li>
|
||||
<li><a href="#fun_init_scroll_bars">ted_init_scroll_bars</a></li>
|
||||
<li><a href="#fun_init_syntax_file">ted_init_syntax_file</a></li>
|
||||
<li><a href="#fun_is_select">ted_is_select</a></li>
|
||||
<li><a href="#fun_key">ted_key</a></li>
|
||||
<li><a href="#fun_mouse">ted_mouse</a></li>
|
||||
<li><a href="#fun_open_file">ted_open_file</a></li>
|
||||
<li><a href="#fun_text_add">ted_text_add</a></li>
|
||||
<li><a href="#fun_text_colored">ted_text_colored</a></li>
|
||||
<li><a href="#fun_go_to_position">ted_go_to_position</a></li>
|
||||
</ul>
|
||||
<p><a href="#syn_file">╘юЁьрЄ Їрщыр яюфётхЄъш *.syn</a></p>
|
||||
<p><a href="#struc_tedit">╤ЄЁєъЄєЁр tedit</a></p>
|
||||
|
||||
<h1><a name="vveden">┬тхфхэшх</a></h1>
|
||||
<p>▌ыхьхэЄ text_editor яючтюы хЄ ЁрсюЄрЄ№ ё ЄхъёЄют√ьш Їрщырьш, ёюфхЁцшЄ ьэюую ЇєэъЎшщ фы ЁхфръЄшЁютрэш ЄхъёЄр.</p>
|
||||
<p><img src="../../../../../other/t_edit/t_edit.png"></p>
|
||||
<p>┬эх°эшщ тшф яЁюуЁрьь√, ё ¤ыхьхэЄюь text_editor.</p>
|
||||
|
||||
<h2>┬ючьюцэюёЄш ¤ыхьхэЄр</h2>
|
||||
<ul>
|
||||
<li>╬ЄъЁ√Єшх (Ctrl+O), ╤юїЁрэхэшх Їрщыр (Ctrl+S, Ctrl+Shift+S).</li>
|
||||
<li>╨хфръЄшЁютрэшх: ╧ютЄюЁ/╬Єьхэр фхщёЄтш (Ctrl+Z), ┬√ЁхчрЄ№, ╩юяшЁютрЄ№ (Ctrl+C), ┬ёЄртшЄ№ (Ctrl+V), ╧юшёъ (Ctrl+F, F3), ╟рьхэр (Ctrl+H), ╧хЁхїюф эр ёЄЁюъє (Ctrl+G).</li>
|
||||
<li>┬√фхыхэшх ЎтхЄюь ёыют, чрфрээ√ї т Їрщых ёшэЄръёшёр. ┬√тюф ёяЁртъш яю эшь, хёыш юэр хёЄ№ (эрцрЄшхь F1 ъюуфр ъєЁёюЁ эр ёыютх).</li>
|
||||
</ul>
|
||||
|
||||
<h2>╬ ЁрсюЄх ¤ыхьхэЄр</h2>
|
||||
<p>╨рчфхы фы яЁюуЁрььшёЄют (ш шэЄхЁхёє■∙шїё ы■фхщ), т ъюЄюЁюь Ёрёърчрэ√
|
||||
эхъюЄюЁ√х шфхш, эр ъюЄюЁ√ї яюёЄЁюхэр фрээр яЁюуЁрььр.</p>
|
||||
|
||||
<p>─ы ЁрсюЄ√ ё ЄхъёЄюь яЁюуЁрььр шёяюы№чєхЄ ёЄЁєъЄєЁ√:</p>
|
||||
<pre>struct symbol
|
||||
c db ? ; +0 ёшьтюы
|
||||
col db ? ; +1 ЎтхЄ
|
||||
perv dd ? ; +2
|
||||
next dd ? ; +6 єърчрЄхыш
|
||||
tc dd ? ; +10 тЁхь. ёючфрэш
|
||||
td dd ? ; +14 тЁхь. єфрыхэш
|
||||
ends</pre>
|
||||
<p>╩рцфр шч Єръшї ёЄЁєъЄєЁ ёюїЁрэ хЄ юфшэ ёшьтюы т яхЁхьхээющ 'c'. ╧хЁхьхээ√х
|
||||
'perv' ш 'next' їЁрэ Є шэфхъё√ яхЁтюую ш ёыхфє■∙хую ёшьтюыют. ┴ыруюфрЁ ўхьє
|
||||
ЄхъёЄ ёючфрхЄё т тшфх Ўхяюўъш ёшьтюыют (фтєэряЁртыхээ√щ ёяшёюъ).</p>
|
||||
<p><b>'tc'</b> - тЁхь ёючфрэш ёшьтюыр, яЁш юЄьхэх фхщёЄтш ЄхъёЄют√щ ЁхфръЄюЁ "чэрхЄ"
|
||||
ъръшх ёшьтюы√ юЄюсЁрцрЄ№, р ъръшх эхЄ (їюЄ тёх ёшьтюы√ "тшё Є" т ярь Єш).</p>
|
||||
<p><b>'td'</b> - тЁхь єфрыхэш ёшьтюыр, чряюыэ хЄё яЁш єфрыхэшш, яЁш юЄьхэх фхщёЄтш
|
||||
єфрыхэш ёшьтюыют, ЄхъёЄ ьюцхЄ с√Є№ тюёёЄрэютыхэ.</p>
|
||||
<p><b>'col'</b> - шёяюы№чєхЄё фы ЎтхЄютющ ЁрчьхЄъш, ёюфхЁцшЄ шэфхъё ЎтхЄр т ьрёёштх ЎтхЄют ted_text_colors.</p>
|
||||
|
||||
<h1><a name="funct">╘єэъЎшш</a></h1>
|
||||
<h2>╘єэъЎшш эр ¤ъёяюЁЄ:</h2>
|
||||
|
||||
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
||||
<p>╘єэъЎш ъюЄюЁр сєфхЄ т√ч√трЄ№ё яЁш эрцрЄшш эр ъэюяъє ъюяшЁютрэш т сєЇхЁ шыш эр <b>Ctrl+C</b>. ╥хъёЄ ъюяшЁєхЄё т сєЇхЁ <b>ted_buffer</b>, ьръёшьры№э√щ ЁрчьхЁ сєЇхЁр єърч√трхЄё т <b>ted_buffer_size</b>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_copy], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_cut">ted_but_cut</a></h4>
|
||||
<p>╘єэъЎш т√ЁхчрхЄ т√фхыхээ√щ ЄхъёЄ ш ъюяшЁєхЄ хую т сєЇхЁ.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_cut], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_find">ted_but_find</a></h4>
|
||||
<p>╘єэъЎш фы яюшёър ЄхъёЄр. ╚∙хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer_find</b>, яЁш эрїюцфхэшш яхЁхьх∙рхЄ ъєЁёюЁ ъ эрщфхэюьє ЄхъёЄє ш т√фхы хЄ хую. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ярЁрьхЄЁ√ яюшёър:</p>
|
||||
<ul>
|
||||
<li>0 - шёърЄ№ эшцх ъєЁёюЁр</li>
|
||||
<li>1 - шёърЄ№ т√°х ъєЁёюЁр</li>
|
||||
<li>2 - шёърЄ№ юЄ эрўрыр фюъєьхэЄр</li>
|
||||
</ul>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_find], tedit0, 2</pre>
|
||||
|
||||
<h4><a name="fun_but_find_next">ted_but_find_next</a></h4>
|
||||
<p>╘єэъЎш фы яюшёър ЄхъёЄр. ╚∙хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer_find</b>, яЁш эрїюцфхэшш яхЁхьх∙рхЄ ъєЁёюЁ ъ эрщфхэюьє ЄхъёЄє ш т√фхы хЄ хую. ╧юшёъ тхфхЄё эшцх Єхъє∙хую яюыюцхэш ъєЁёюЁр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_find_next], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_paste">ted_but_paste</a></h4><p></p>
|
||||
<p>╘єэъЎш тёЄрты хЄ ЄхъёЄ шч сєЇхЁр <b>ted_buffer</b>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_paste], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_redo">ted_but_redo</a></h4>
|
||||
<p>╧ютЄюЁ хЄ юЄьхэхээ√х фхщёЄтш яю ЁхфръЄшЁютрэш■ ЄхъёЄр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_redo], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_reverse">ted_but_reverse</a></h4>
|
||||
<p>╠хэ хЄ яюЁ фюъ ёыхфютрэш ёшьтюыют т т√фхыхээюь ЄхъёЄх.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_reverse], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_save_file">ted_but_save_file</a></h4>
|
||||
<p>╘єэъЎш фы ёюїЁрэхэш Їрщыр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text]</pre>
|
||||
|
||||
<h4><a name="fun_but_select_word">ted_but_select_word</a></h4>
|
||||
<p>╘єэъЎш фы т√фхыхэш ъы■ўхтюую ёыютр яюф ъєЁёюЁюь. ┼ёыш ъы■ўхт√х ёыютр эх шёяюы№чє■Єё , Єюуфр сєфхЄ т√фхыхэ тхё№ ЄхъёЄ.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_select_word], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_sumb_lover">ted_but_sumb_lover</a></h4>
|
||||
<p>╧хЁхтюфшЄ т√фхыхээ√х ёшьтюы√ ъ эшцэхьє ЁхушёЄЁє.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_sumb_lover], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_sumb_upper">ted_but_sumb_upper</a></h4>
|
||||
<p>╧хЁхтюфшЄ т√фхыхээ√х ёшьтюы√ ъ тхЁїэхьє ЁхушёЄЁє.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_sumb_upper], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_but_undo">ted_but_undo</a></h4>
|
||||
<p>╬Єьхэ хЄ фхщёЄтш яю ЁхфръЄшЁютрэш■ ЄхъёЄр. ─хщёЄтш ЇєэъЎшш <b>ted_but_reverse</b> эх юЄьхэ ■Єё .</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_but_undo], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_can_save">ted_can_save</a></h4>
|
||||
<p>╘єэъЎш ъюЄюЁр яЁютхЁ хЄ с√ыш ыш эх ёюїЁрэхээ√х шчьхэхэш т ЄхъёЄх. ╨хчєы№ЄрЄ тючтЁр∙рхЄё т ЁхушёЄЁ <b>al</b>, хёыш шчьхэхэш с√ыш Єю тючтЁр∙рхЄ 1 шэрўх 0.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax
|
||||
stdcall [ted_can_save], tedit0
|
||||
cmp al,1
|
||||
.........
|
||||
pop eax</pre>
|
||||
|
||||
<h4><a name="fun_clear">ted_clear</a></h4>
|
||||
<p>╬ўшёЄър ЄхъёЄр т юъэх ЁхфръЄюЁр. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ярЁрьхЄЁ юяЁхфхы хЄ сєфхЄ ыш юўшёЄър ярь Єш яюыэющ.</p>
|
||||
<p>┼ёыш 2-щ ярЁрьхЄЁ Ёртхэ 1, Єю юўшёЄър сєфхЄ яюыэющ, яЁш 0 эхЄ. ╧юы№чютрЄхы■ эєцэю т√ч√трЄ№ ЇєэъЎш■ ё ярЁрьхЄЁюь 1, ярЁрьхЄЁ 0 фы тэєЄЁхээхую шёяюы№чютрэш .</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_clear], tedit0,1</pre>
|
||||
|
||||
<h4><a name="fun_delete">ted_delete</a></h4>
|
||||
<p>─хёЄЁєъЄюЁ ¤ыхьхэЄр, юётюсюцфрхЄ ярь Є№ чрэ Єє■ ¤ыхьхэЄюь.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_delete], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_draw">ted_draw</a></h4>
|
||||
<p>╧хЁхЁшёютър тёхую юъэр ЁхфръЄюЁр, тъы■ўр фюўхЁэшх ёъЁюыышэуш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_draw], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_init">ted_init</a></h4>
|
||||
<p>╩юэёЄЁєъЄюЁ ¤ыхьхэЄр, т√фхы хЄ ярь Є№ эхюсїюфшьє■ фы ЁрсюЄ√ ЄхъёЄютюую ЁхфръЄюЁр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_init_scroll_bars">ted_init_scroll_bars</a></h4>
|
||||
<p>╙ёЄрэртыштрхЄ ЎтхЄ ёъЁюыышэуют ш эрёЄЁрштрхЄ шї ЁрчьхЁ√ т чртшёшьюёЄш юЄ ЁрчьхЁют юъэр. ╠юцэю т√ч√трЄ№ ¤Єє ЇєэъЎш■ яЁш шчьхэхэшш ЁрчьхЁют юъэр т яюы№чютрЄхы№ёъющ яЁюуЁрььх. ╧ЁшэшьрхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) юяЎшш, єърч√тр■Є ъръшх эєцэю шчьхэшЄ№ ярЁрьхЄЁ√:</p>
|
||||
<ul>
|
||||
<li>1 - шчьхэшЄ№ ЎтхЄр ёъЁюыышэуют</li>
|
||||
<li>2 - шчьхэшыё ЁрчьхЁ юъэр</li>
|
||||
<li>4 - шчьхэшыё ЁрчьхЁ фюъєьхэЄр</li>
|
||||
</ul>
|
||||
<p>╧рЁрьхЄЁ√ ьюцэю ъюьсшэшЁютрЄ№ ўхЁхч <i>ыюушўхёъюх шыш</i>.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init_scroll_bars], tedit0,2</pre>
|
||||
|
||||
<h4><a name="fun_init_syntax_file">ted_init_syntax_file</a></h4>
|
||||
<p>╘єэъЎш фы чруЁєчъш ЎтхЄют шэЄхЁЇхщёр ш ъы■ўхт√ї ёыют шч Їрщыр ёшэЄръёшёр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр ёшэЄръёшёр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_init_syntax_file], tedit0,run_file_70,file_name</pre>
|
||||
|
||||
<h4><a name="fun_is_select">ted_is_select</a></h4>
|
||||
<p>╬яЁхфхы хЄ хёЄ№ т юъэх ЁхфръЄюЁр т√фхыхээ√щ ЄхъёЄ. ┼ёыш хёЄ№ т ЁхушёЄЁ <b>al</b> чряшё√трхЄё 1 шэрўх 0. ╘єэъЎш эхюсїюфшьр фы ёючфрэш ярэхыхщ шэёЄЁхьхэЄют, т ъюЄюЁ√ї т чртшёшьюёЄш юЄ т√фхыхэш сєфєЄ фюёЄєяэ√ шыш чрсыюъшЁютрэ√ юяЁхфхыхээ√х ъэюяъш (фхщёЄтш ). ═ряЁшьхЁ ъэюяъє фы ъюяшЁютрэш т сєЇхЁ ьюцэю чрсыюъшЁютрЄ№ хёыш эхЄ т√сЁрээюую ЄхъёЄр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax edi
|
||||
mov edi,tedit0
|
||||
call [ted_is_select]
|
||||
cmp al,0
|
||||
.........
|
||||
pop edi eax</pre>
|
||||
|
||||
<h4><a name="fun_key">ted_key</a></h4>
|
||||
<p>╘єэъЎш т√ч√трхьр фы ЁхръЎшш эр ъыртшрЄєЁє. ┬ ЁхушёЄЁх <b>eax</b> фюыцхэ с√Є№ ъюф эрцрЄющ ъыртш°ш. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ЄрсышЎр фы ъюэтхЁЄрЎшш scan ъюфют т ascii,</p>
|
||||
<p>3) єяЁрты ■∙шх ёшьтюы√.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>mcall 66,3 ;66.3 яюыєўшЄ№ ёюёЄю эшх єяЁрты ■∙шї ъыртш°
|
||||
xor esi,esi
|
||||
mov ecx,1
|
||||
test al,0x03 ;[Shift]
|
||||
jz @f
|
||||
mov cl,2
|
||||
or esi,KM_SHIFT
|
||||
@@:
|
||||
test al,0x0c ;[Ctrl]
|
||||
jz @f
|
||||
or esi,KM_CTRL
|
||||
@@:
|
||||
test al,0x30 ;[Alt]
|
||||
jz @f
|
||||
mov cl,3
|
||||
or esi,KM_ALT
|
||||
@@:
|
||||
test al,0x80 ;[NumLock]
|
||||
jz @f
|
||||
or esi,KM_NUMLOCK
|
||||
@@:
|
||||
|
||||
mcall 26,2,,conv_tabl ;26.2 яюыєўшЄ№ Ёрёъырфъє ъыртшрЄєЁ√
|
||||
mcall 2 ;яюыєўрхь ъюф эрцрЄющ ъыртш°ш
|
||||
stdcall [ted_key], tedit0, conv_tabl,esi</pre>
|
||||
|
||||
<h4><a name="fun_mouse">ted_mouse</a></h4>
|
||||
<p>╘єэъЎш эр яхЁхьх∙хэшх шыш эрцрЄшх ь√°ш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_mouse], tedit0</pre>
|
||||
|
||||
<h4><a name="fun_open_file">ted_open_file</a></h4>
|
||||
<p>╘єэъЎш фы юЄъЁ√Єш Їрщыр. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) ёЄЁєъЄєЁр фы ЁрсюЄ√ 70-щ ЇєэъЎшш (фю т√чютр ЇєэъЎшш чряюыэхэш эх ЄЁхсєхЄ),</p>
|
||||
<p>3) ёЄЁюър ё яєЄхь ш шьхэхь Їрщыр.</p>
|
||||
<p>┬ючтЁр∙рхЄ 2 ярЁрьхЄЁр:</p>
|
||||
<p>1) eax = ъюф ю°шсъш</p>
|
||||
<p>2) ebx = ъюыышўхёЄтю яЁюўшЄрээ√ї срщЄ</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push eax ebx
|
||||
stdcall [ted_open_file], tedit0,run_file_70,[edit1.text]
|
||||
.........
|
||||
pop ebx eax</pre>
|
||||
|
||||
<h4><a name="fun_text_add">ted_text_add</a></h4>
|
||||
<p>╘єэъЎш фы фюсртыхэш ЄхъёЄр. ╧ЁшэшьрхЄ 4 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) єърчрЄхы№ эр сєЇхЁ ё ЄхъёЄюь,</p>
|
||||
<p>3) фышэр ЄхъёЄр,</p>
|
||||
<p>4) юяЎшш тёЄртъш.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>text_buffer db 500 dup(0)
|
||||
.........
|
||||
mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor
|
||||
stdcall [ted_text_add], tedit0,text_buffer,30,ebx</pre>
|
||||
<p><b>ted_opt_ed_change_time</b> - ЇшъёшЁютрЄ№ шчьхэхэш фюъєьхэЄр, ўЄю-с√ шї ьюцэю с√ыю юЄьхэшЄ№. ═ряЁшьхЁ хёыш эєцэю ёфхырЄ№ эхёъюы№ъю шчьхэхэшщ ЄхъёЄр, ъюЄюЁ√х сєфєЄ юЄьхэ Є№ё чр юфшэ Ёрч, Єю 1-х шчьхэхэшх шфхЄ ё ¤Єющ ъюэёЄрэЄющ р юёЄры№э√х эхЄ.</p>
|
||||
<p><b>ted_opt_ed_move_cursor</b> - ъюэёЄрэЄр ъюЄюЁр юяЁхфхы хЄ ёфтшу ъєЁёюЁр яюёых фюсртыхэш ЄхъёЄр.</p>
|
||||
|
||||
<h4><a name="fun_text_colored">ted_text_colored</a></h4>
|
||||
<p>╘єэъЎш фы ЁрчьхЄъш ЄхъёЄр ЎтхЄюь. ╬с√ўэю т√ч√трхЄё тэєЄЁш ёрьющ сшсышюЄхъш, яЁш шчьхэхэш ї ЄхъёЄр. ┬ эхъюЄюЁ√ї ёыєўр ї ьюцхЄ яюэрфюсшЄ№ё т√чтрЄ№ яЁшэєфшЄхы№эю шч тэх°эхщ яЁюуЁрьь√.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>push edi
|
||||
mov edi,tedit0
|
||||
call [ted_text_colored]
|
||||
pop edi</pre>
|
||||
|
||||
<h4><a name="fun_go_to_position">ted_go_to_position</a></h4>
|
||||
<p>╘єэъЎш фы яхЁхїюфр эр єърчрээє■ яючшЎш■. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:</p>
|
||||
<p>1) ёЄЁєъЄєЁр tedit,</p>
|
||||
<p>2) эюьхЁ ёЄЁюъш,</p>
|
||||
<p>3) эюьхЁ ёшьтюыр.</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш :</p>
|
||||
<pre>stdcall [ted_go_to_position], tedit0,50,3</pre>
|
||||
|
||||
<h2>┬эєЄЁхээшх ЇєэъЎшш:</h2>
|
||||
<p><b>ted_get_text_perv_pos</b> - яхЁхїюф эр яЁхф√фє∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'perv')</p>
|
||||
<p><b>ted_get_text_next_pos</b> - яхЁхїюф эр ёыхфє■∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'next')</p>
|
||||
<p><b>ted_symbol_not_vis</b> - юяЁхфхы хЄ тшфшь√щ ыш єърчрээ√щ ёшьтюы эр ¤ъЁрэх (т чртшёшьюёЄш
|
||||
юЄ чэрўхэшщ 'tc' ш 'td')</p>
|
||||
<p><b>ted_iterat_next</b> - яхЁхїюф эр ёыхфє■∙шщ тшфшь√щ ёшьтюы т Ўхяш. ╚ёяюы№чєхЄ фы
|
||||
ЁрсюЄ√ ЇєэъЎшш ted_get_text_next_pos ш ted_symbol_not_vis.</p>
|
||||
<p><b>ted_iterat_perv</b> - яхЁхїюф эр яЁхфхфє∙шщ тшфшь√щ ёшьтюы т Ўхяш.</p>
|
||||
|
||||
<p><b>ted_iterat_next_pos_char</b> - эрщЄш ёыхфє■∙є■ яючшЎш■ єърчрээюую ёшьтюыр (edx-яюч. эрўрыр
|
||||
яюшёър, bl->ъюф шёъюьюую ёшьтюыр)</p>
|
||||
<p><b>ted_get_pos_by_coords</b> - схЁхЄ яючшЎш■ ёшьтюыр яю ъююЁфшэрЄрь (esi->ъююЁф. x, чэръ;
|
||||
ecx->ъююЁф. y, ёЄЁюър)</p>
|
||||
<p><b>ted_go_to_pos</b> - яхЁхёЄрты хЄ ъєЁёюЁ т єърчрээє■ яючшЎш■, хёыш єърчрээр яючшЎш
|
||||
эрїюфшЄё тэх ¤ъЁрэр, Єю Єръцх яхЁхёЄрты ■Єё ёъЁюышэуш (ecx->ъююЁф. x, чэръ; edx->ъююЁф. y, ёЄЁюър)</p>
|
||||
|
||||
<h1><a name="syn_file">╘юЁьрЄ Їрщыр яюфётхЄъш *.syn</a></h1>
|
||||
<table>
|
||||
<tr><th>▌ыхьхэЄ</th><th>╨рчьхЁ (срщЄ)</th></tr>
|
||||
<tr><td>╩юышўхёЄтю ЎтхЄют ЄхъёЄр</td>
|
||||
<td><pre>4</pre></td></tr>
|
||||
<tr><td>╩юышўхёЄтю яюфётхўштрхь√ї ёыют</td>
|
||||
<td><pre>4</pre></td></tr>
|
||||
<tr><td>╓тхЄр шэЄхЁЇхщёр</td>
|
||||
<td><pre>4*6</pre></td></tr>
|
||||
<tr><td>╓тхЄр фы ЄхъёЄр</td>
|
||||
<td><pre>4*(ъюы. Ўт. ЄхъёЄр)</pre></td></tr>
|
||||
<tr><td>╤ЄЁєъЄєЁ√ ёю ётющёЄтрьш ш юяшёрэш ьш ёыют</td>
|
||||
<td><pre>sizeof(TexColViv)*(ъюы. ёыют)</pre></td></tr>
|
||||
<tr><td>╨рчфхышЄхы№э√щ ёшьтюы, ючэрўр■∙шщ эрўрыю юяшёрэшщ ёыют (тёхуфр Ёртхэ 0)</td>
|
||||
<td><pre>1 срщЄ</pre></td></tr>
|
||||
<tr><td>╬яшёрэш ёыют (ёЄЁюъш ЄхъёЄр ё 0-ьш т ъюэЎх)</td>
|
||||
<td><pre>(фышээр ёяЁртюўэюую ЄхъёЄр + 1)</pre></td></tr>
|
||||
</table>
|
||||
<h4>╟рьхўрэш .</h4>
|
||||
<ul>
|
||||
<li>┬ёх ёыютр фюыцэ√ с√Є№ Ёрёяюыюцхэ√ т яюЁ фъх ёыхфютрэш шї ASCII ъюфют.
|
||||
┬ючьюцэю т сєфє∙шї тхЁёш ї ЇюЁьрЄ Їрщыют яюфётхЄъш сєфхЄ шчьхэхэ.</li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="struc_tedit">╤ЄЁєъЄєЁр tedit</a></h1>
|
||||
<p>╠ръЁюёр фы ёючфрэш ёЄЁєъЄєЁ√ ЄхъёЄютюую ЁхфръЄюЁр эхЄ. ╧юЄюьє фрээ√х фы эхую чрфр■Єё тЁєўэє■. ╧ЁшьхЁ ёЄЁєъЄєЁ√ фы ЄхъёЄютюую ЁхфръЄюЁр:</p>
|
||||
<pre>align 4
|
||||
tedit0: ;ёЄЁєъЄєЁр ЄхъёЄютюую ЁхфръЄюЁр
|
||||
.wnd BOX 195,5+20,325,260 ;+ 0
|
||||
.rec BOX 30,13,7,10 ;+16
|
||||
.drag_m db 0 ;+32 т√фхыхэшх юЄ ь√°ш
|
||||
.drag_k db 0 ;+33 т√фхыхэшх юЄ ъыртшрЄєЁ√
|
||||
.sel TexSelect 0,0,0,0 ;+34 ёЄЁєъЄєЁр т√фхыхэш
|
||||
.seln TexSelect ;+50 фюяюыэшЄхы№эр ёЄЁєъЄєЁр т√фхыхэш
|
||||
.tex dd 0 ;+66 text memory pointer
|
||||
.tex_1 dd 0 ;+70 text first symbol pointer
|
||||
.tex_end dd 0 ;+74 text end memory pointer
|
||||
.cur_x dd 0 ;+78 ъююЁфшэрЄр x ъєЁёюЁр
|
||||
.cur_y dd 0 ;+82 ъююЁфшэрЄр y ъєЁёюЁр
|
||||
.max_chars dd 5002 ;+86 ьръёшьры№эюх ўшёыю ёшьтюыют т юфэюь фюъєьхэЄх
|
||||
.count_colors_text dd 1 ;+90 ъюыышўхёЄтю ЎтхЄют ЄхъёЄр
|
||||
.count_key_words dd 0 ;+94 ъюыышўхёЄтю ъы■ўхт√ї ёыют
|
||||
.color_cursor dd 0xff0000 ;+98 ЎтхЄ ъєЁёюЁр
|
||||
.color_wnd_capt dd 0x0080c0 ;+102 ЎтхЄ яюыхщ тюъЁєу юъэр
|
||||
.color_wnd_work dd 0x0 ;+106 ЎтхЄ Їюэр юъэр
|
||||
.color_wnd_bord dd 0xffffff ;+110 ЎтхЄ ЄхъёЄр эр яюы ї
|
||||
.color_select dd 0x0000ff ;+114 ЎтхЄ т√фхыхэш
|
||||
.color_cur_text dd 0xffff00 ;+118 ЎтхЄ ёшьтюыр яюф ъєЁёюЁюь
|
||||
.color_wnd_text dd 0x80ffff ;+122 ЎтхЄ ЄхъёЄр т юъэх
|
||||
.syntax_file dd 0 ;+126 єърчрЄхы№ эр эрўрыю Їрщыр ёшэЄръёшёр
|
||||
.syntax_file_size dd 500 ;+130 ьръёшьры№э√щ ЁрчьхЁ Їрщыр ёшэЄръёшёр
|
||||
.text_colors dd 0 ;+134 єърчрЄхы№ эр ьрёёшт ЎтхЄют ЄхъёЄр
|
||||
.help_text_f1 dd 0 ;+138 єърчрЄхы№ эр ЄхъёЄ ёяЁртъш (яю эрцрЄшш F1)
|
||||
.help_id dd -1 ;+142 шфхэЄшЇшърЄюЁ фы ёяЁртъш
|
||||
.key_words_data dd 0 ;+146 єърчрЄхы№ эр ёЄЁєъЄєЁ√ ъы■ўхт√ї ёыют TexColViv
|
||||
.tim_ch dd ? ;+150 ъюышўхёЄтю шчьхэхэшщ т Їрщых
|
||||
.tim_undo dd ? ;+154 ъюышўхёЄтю юЄьхэхээ√ї фхщёЄтшщ
|
||||
.tim_ls dd ? ;+158 тЁхь яюёыхфэхую ёюїЁрэхэш
|
||||
.tim_co dd ? ;+162 тЁхь яюёыхфэхщ ЎтхЄютющ ЁрчьхЄъш
|
||||
.el_focus dd el_focus ;+166 єърчрЄхы№ эр яхЁхьхээє■ ¤ыхьхэЄр т Їюъєёх
|
||||
.err_save db 0 ;+170 ю°шсър ёюїЁрэхэш Їрщыр
|
||||
.panel_id db 0 ;+171 эюьхЁ юЄъЁ√Єющ ярэхыш
|
||||
.key_new db 0 ;+172 ёшьтюы, ъюЄюЁ√щ сєфхЄ фюсрты Єё ё ъыртшрЄєЁ√
|
||||
.symbol_new_line db 20 ;+173 ёшьтюы чртхЁ°хэш ёЄЁюъш
|
||||
.scr_w dd scrol_w1 ;+174 тхЁЄшъры№э√щ ёъЁюыышэу
|
||||
.scr_h dd scrol_h1 ;+178 уюЁшчюэЄры№э√щ ёъЁюыышэу
|
||||
.arr_key_pos dd 0 ;+182 єърчрЄхы№ эр ьрёёшт яючшЎшщ ъы■ўхт√ї ёыют
|
||||
.buffer dd buf ;+186 єърчрЄхы№ эр сєЇхЁ ъюяшЁютрэш /тёЄртъш
|
||||
.buffer_find dd 0 ;+190 єърчрЄхы№ эр сєЇхЁ фы яюшёър
|
||||
.cur_ins db 1 ;+194 Ёхцшь ЁрсюЄ√ ъєЁёюЁр (юс√ўэ√щ шыш чрьхэр)
|
||||
.mode_color db 1 ;+195 Ёхцшь т√фхыхэш ёыют ЎтхЄюь (0-т√ъы. 1-тъы.)
|
||||
.mode_invis db 0 ;+196 Ёхцшь яюърчр эхяхўрЄрхь√ї ёшьтюыют
|
||||
.gp_opt db 0 ;+197 юяЎшш тючтЁр∙рхь√х ЇєэъЎшхщ ted_get_pos_by_cursor
|
||||
.fun_on_key_ctrl_all dd but_ctrl_all ;+198 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш эрцрЄшш Ctrl+N,O,S,F,H,G
|
||||
dd 0,0,0 ;чрЁхчхЁтшЁютрэю
|
||||
.buffer_size dd BUF_SIZE ;+214 ЁрчьхЁ сєЇхЁр ъюяшЁютрэш /тёЄртъш
|
||||
.fun_find_err dd 0 ;+218 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш яюшёъ чръюэўшыё эхєфрўэю
|
||||
.fun_init_synt_err dd 0 ;+222 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ яЁш ю°шсюўэюь юЄъЁ√Єшш Їрщыр ёшэЄръёшёр
|
||||
.fun_draw_panel_buttons dd 0 ;+226 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш ярэхыш ё ъэюяърьш
|
||||
.fun_draw_panels dd 0 ;+230 єърчрЄхы№ эр ЇєэъЎш■ Ёшёютрэш ярэхыш яюшёър/чрьхэ√/яхЁхїюфр/ёшэЄръёшёр
|
||||
dd 0 ;чрЁхчхЁтшЁютрэю
|
||||
.fun_save_err dd 0 ;+238 єърчрЄхы№ эр ЇєэъЎш■ т√ч√трхьє■ хёыш ёюїЁрэхэшх Їрщыр чръюэўшыюё№ эхєфрўэю
|
||||
.increase_size dd 225 ;+242 ўшёыю ёшьтюыют эр ъюЄюЁ√х сєфхЄ єтхўштрЄ№ё ярь Є№ яЁш эхїтрЄъх
|
||||
.ptr_free_symb dd ? ;+246 єърчрЄхы№ эр ётюсюфэє■ ярь Є№, т ъюЄюЁє■ ьюцэю фюсрты Є№ ёшьтюы (шёяюы№чєхЄё тэєЄЁш ¤ыхьхэЄр фы єёъюЁхэш тёЄртъш ЄхъёЄр)
|
||||
.font_s dd ? ;+250 ёЄшыш фы °ЁшЇЄр (юЄ 0 фю 7 ьэюцшЄхы№ фы ЁрчьхЁр, +16 фы тЄюЁюую ёшёЄхьэюую °ЁшЇЄр)</pre>
|
||||
<hr>
|
||||
<p>─юъєьхэЄрЎш юсэюты ырё№ яюёыхфэшщ Ёрч 29.01.19.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+87
-87
@@ -1,87 +1,87 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>¤ыхьхэЄ Tooltip</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<link href="../style.css" type=text/css rel=stylesheet>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../box_lib.htm">═р уыртэє■ ↑</a></p>
|
||||
<h1>╬уыртыхэшх</h1>
|
||||
<p><a href="#intro">┬тхфхэшх</a></p>
|
||||
<p><a href="#funct">╘єэъЎшш</a></p>
|
||||
<p><a href="#struc">╤ЄЁєъЄєЁр фрээ√ї</a></p>
|
||||
<p><a href="#source">╚ёїюфэ√щ ъюф ш яЁшьхЁ√</a></p>
|
||||
|
||||
<h1><a name="intro">┬тхфхэшх</a></h1>
|
||||
<p>╥єыЄшя - тёяы√тр■∙р яюфёърчър, яюърч√трхЄё яЁш чрфхЁцъх єърчрЄхы ь√°ш эрф ъюэъЁхЄэющ юсырёЄ№■, юс√ўэю ¤ыхьхэЄюь єяЁртыхэш .</p>
|
||||
<p>╬сырёЄ№ ъюэЄЁюы - яЁ ьюєуюы№эшъ ё чрфрээ√ьш ъююЁфшэрЄрьш</p>
|
||||
<p>╥хъёЄ ЄєыЄшяр ьюцхЄ с√Є№ ьэюуюёЄЁюўэ√ь, ё ЁрчфхышЄхыхь ъюф 13 (\r), яЁюшчтюы№э√ь ЁрчьхЁюь °ЁшЇЄр.</p>
|
||||
<p>┬ яхЁтющ тхЁёшш ЄєыЄшя т√тюфшЄё эшцх ъєЁёюЁр ь√°ш ш тяЁртю. ╙ўшЄ√трщЄх яЁш яырэшЁютрэшш шэЄхЁЇхщёр.</p>
|
||||
<p>╚ёяюы№чєхЄё фшэрьшўхёър ярь Є№, ёююЄтхЄёЄтхээю сшсышюЄхър фюыцэ√ с√Є№ чруЁєцхэр ё ЇєэъЎш ьш</p>
|
||||
<pre>@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load</pre>
|
||||
<p>ш ъєўр фюыцэр с√Є№ шэшЎшрышчшЁютрэр т√чютюь SysFn 68.11</p>
|
||||
|
||||
<h1><a name="funct">╘єэъЎшш</a></h1>
|
||||
<p>┬ёх ЇєэъЎшш шёяюы№чє■Є x86-32 calling convention, stdcall.</p>
|
||||
<p>▌Єю ючэрўрхЄ, ўЄю ЁхушёЄЁ√ EAX, ECX, EDX ьюуєЄ эх ёюїЁрэ Є№ ётюш чэрўхэш яюёых т√чютр ЇєэъЎшщ.</p>
|
||||
<p>╧ЁшьхЁ√ т√чютют ёьюЄЁшЄх т яЁюуЁрььх - яЁшьхЁх.</p>
|
||||
|
||||
<h2><a name="tooltip_init">tooltip_init(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ EAX==1 яЁш єёях°эюь т√фхыхэшшш ярь Єш, 0 яЁш ёсюх.</p>
|
||||
<p>┬√ч√трхЄё юфшэ Ёрч, шэшЎшрышчшЁєхЄ тёх ЄєыЄшя√, т√фхы ярь Є№ ш ЁрёёўшЄ√тр тэєЄЁхээшх яхЁхьхээ√х.</p>
|
||||
|
||||
<h2><a name="tooltip_delete">tooltip_delete(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>╬ётюсюцфрхЄ т√фхыхээє■ ярь Є№.</p>
|
||||
|
||||
<h2><a name="tooltip_test_show">tooltip_test_show(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>╧юърч эєцэюую шч тёхщ Ўхяюўъш ЄєыЄшяют яЁш схчфхщёЄтшш.
|
||||
─юыцэр т√ч√трЄ№ё яЁш схчфхщёЄтшш шыш яхЁшюфшўхёъш фы яЁютхЁъш ЄрщьхЁр.
|
||||
═ряЁшьхЁ яЁш юяЁюёх ёюс√Єшщ ЇєэъЎшхщ SysFn 23 (event 0).</p>
|
||||
|
||||
<h2><a name="tooltip_mouse">tooltip_mouse(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>▌Єр ЇєэъЎш фюыцэр т√ч√трЄ№ё яЁш ёюс√Єшш ь√°ш. ╤ЄшЁрхЄ ЄєыЄшя яЁш т√їюфх ь√°ш шч чюэ√ ъюэЄЁюы </p>
|
||||
|
||||
<h2><a name="get_font_size">get_font_size(color)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - ЎтхЄ ЄхъёЄр ё ЁрчьхЁюь °ЁшЇЄр, т ЇюЁьрЄх ЇєэъЎшш SysFn 4.</p>
|
||||
<p>┬ючтЁрЄ - EAX = width shl 16 + height.</p>
|
||||
<p>─хъюфшЁєхЄ шч ъюьсшэшЁютрээюую ЎтхЄр/ЁрчьхЁр °шЁшэє ш т√ёюЄє °ЁшЇЄр т яшъёхы ї</p>
|
||||
|
||||
<h1><a name="struc">╤ЄЁєъЄєЁр ЄєыЄшяр</a></h1>
|
||||
<p>╠ръЁюё фы ёючфрэш ёЄЁєъЄєЁ√ ЄєыЄшяр эшцх, тъы■ўхэ т box_lib.mac. ═х чрс√трхь юс·хфшэшЄ№ ЄєыЄшя√ т ёяшёюъ.</p>
|
||||
<pre>struc tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
|
||||
{
|
||||
.txt dd txt ; єърчрЄхы№ эр ЄхъёЄ asciiz, ЁрчфхышЄхы№ \r 13
|
||||
.next dd next ; ёыхфє■∙шшщ tooltip т Ўхяюўъх шыш 0
|
||||
.zone_y dw zone_y ; чюэр ъюэЄЁюы (т 90% ёыєўрхт ёютярфрхЄ ё ЁрчьхЁюь ъюэЄЁюыр)
|
||||
.zone_x dw zone_x ;
|
||||
.zone_h dw zone_h ;
|
||||
.zone_w dw zone_w ;
|
||||
.col_txt dd col_txt ; ЎтхЄ ЄхъёЄр ЄєыЄшяр, тъы■ўр ЁрчьхЁ SysFn4
|
||||
.col_bkg dd col_bkg ; ЎтхЄ Їюэр ЄєыЄшяр
|
||||
.tm_wait dw tm_wait ; тЁхь юцшфрэш ї10ьё
|
||||
;тЁхьхээ√х яхЁхьхээ√х
|
||||
.font_sz dd ? ; font size
|
||||
.mouse dd ? ; яЁхф√фє∙хх яюыюцхэшх (x, y)
|
||||
.tm_strt dd ? ; тЁхь чряєёър ЄрщьхЁр (тїюфр ь√°ш т чюэє) ї10ьё
|
||||
.video dd ? ; ярь Є№ фы ёюїЁрэхээюую яюф ЄєыЄшяюь
|
||||
.video_y dw ? ; ъююЁфшэрЄ√ чряюьэхээющ юсырёЄш ¤ъЁрэр, шыш 0 хёыш яєёЄю
|
||||
.video_x dw ?
|
||||
.video_h dw ? ; ЁрчьхЁ яЁхфЁрёўшЄ√трхЄё яЁш init
|
||||
.video_w dw ?
|
||||
}
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<h1><a name="source">╚ёїюфэ√щ ъюф ш яЁшьхЁ√</a></h1>
|
||||
<p>╚ёїюфэ√щ ъюф эрїюфшЄё т сшсышюЄхъх box_lib, Їрщы tooltip.asm</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш эрїюфшЄё т box_lib\asm\trunk\tooltip_demo.asm</p>
|
||||
<h1>EOF</h1>
|
||||
</body>
|
||||
</html>
|
||||
<html>
|
||||
<head>
|
||||
<title>¤ыхьхэЄ Tooltip</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<link href="../style.css" type=text/css rel=stylesheet>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="../box_lib.htm">═р уыртэє■ ↑</a></p>
|
||||
<h1>╬уыртыхэшх</h1>
|
||||
<p><a href="#intro">┬тхфхэшх</a></p>
|
||||
<p><a href="#funct">╘єэъЎшш</a></p>
|
||||
<p><a href="#struc">╤ЄЁєъЄєЁр фрээ√ї</a></p>
|
||||
<p><a href="#source">╚ёїюфэ√щ ъюф ш яЁшьхЁ√</a></p>
|
||||
|
||||
<h1><a name="intro">┬тхфхэшх</a></h1>
|
||||
<p>╥єыЄшя - тёяы√тр■∙р яюфёърчър, яюърч√трхЄё яЁш чрфхЁцъх єърчрЄхы ь√°ш эрф ъюэъЁхЄэющ юсырёЄ№■, юс√ўэю ¤ыхьхэЄюь єяЁртыхэш .</p>
|
||||
<p>╬сырёЄ№ ъюэЄЁюы - яЁ ьюєуюы№эшъ ё чрфрээ√ьш ъююЁфшэрЄрьш</p>
|
||||
<p>╥хъёЄ ЄєыЄшяр ьюцхЄ с√Є№ ьэюуюёЄЁюўэ√ь, ё ЁрчфхышЄхыхь ъюф 13 (\r), яЁюшчтюы№э√ь ЁрчьхЁюь °ЁшЇЄр.</p>
|
||||
<p>┬ яхЁтющ тхЁёшш ЄєыЄшя т√тюфшЄё эшцх ъєЁёюЁр ь√°ш ш тяЁртю. ╙ўшЄ√трщЄх яЁш яырэшЁютрэшш шэЄхЁЇхщёр.</p>
|
||||
<p>╚ёяюы№чєхЄё фшэрьшўхёър ярь Є№, ёююЄтхЄёЄтхээю сшсышюЄхър фюыцэ√ с√Є№ чруЁєцхэр ё ЇєэъЎш ьш</p>
|
||||
<pre>@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load</pre>
|
||||
<p>ш ъєўр фюыцэр с√Є№ шэшЎшрышчшЁютрэр т√чютюь SysFn 68.11</p>
|
||||
|
||||
<h1><a name="funct">╘єэъЎшш</a></h1>
|
||||
<p>┬ёх ЇєэъЎшш шёяюы№чє■Є x86-32 calling convention, stdcall.</p>
|
||||
<p>▌Єю ючэрўрхЄ, ўЄю ЁхушёЄЁ√ EAX, ECX, EDX ьюуєЄ эх ёюїЁрэ Є№ ётюш чэрўхэш яюёых т√чютр ЇєэъЎшщ.</p>
|
||||
<p>╧ЁшьхЁ√ т√чютют ёьюЄЁшЄх т яЁюуЁрььх - яЁшьхЁх.</p>
|
||||
|
||||
<h2><a name="tooltip_init">tooltip_init(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ EAX==1 яЁш єёях°эюь т√фхыхэшшш ярь Єш, 0 яЁш ёсюх.</p>
|
||||
<p>┬√ч√трхЄё юфшэ Ёрч, шэшЎшрышчшЁєхЄ тёх ЄєыЄшя√, т√фхы ярь Є№ ш ЁрёёўшЄ√тр тэєЄЁхээшх яхЁхьхээ√х.</p>
|
||||
|
||||
<h2><a name="tooltip_delete">tooltip_delete(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>╬ётюсюцфрхЄ т√фхыхээє■ ярь Є№.</p>
|
||||
|
||||
<h2><a name="tooltip_test_show">tooltip_test_show(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>╧юърч эєцэюую шч тёхщ Ўхяюўъш ЄєыЄшяют яЁш схчфхщёЄтшш.
|
||||
─юыцэр т√ч√трЄ№ё яЁш схчфхщёЄтшш шыш яхЁшюфшўхёъш фы яЁютхЁъш ЄрщьхЁр.
|
||||
═ряЁшьхЁ яЁш юяЁюёх ёюс√Єшщ ЇєэъЎшхщ SysFn 23 (event 0).</p>
|
||||
|
||||
<h2><a name="tooltip_mouse">tooltip_mouse(ttip)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - єърчрЄхы№ эр яхЁт√щ т Ўхяюўъх ЄєыЄшя.</p>
|
||||
<p>┬ючтЁрЄ - эхЄ.</p>
|
||||
<p>▌Єр ЇєэъЎш фюыцэр т√ч√трЄ№ё яЁш ёюс√Єшш ь√°ш. ╤ЄшЁрхЄ ЄєыЄшя яЁш т√їюфх ь√°ш шч чюэ√ ъюэЄЁюы </p>
|
||||
|
||||
<h2><a name="get_font_size">get_font_size(color)</a></h2>
|
||||
<p>╧рЁрьхЄЁ - ЎтхЄ ЄхъёЄр ё ЁрчьхЁюь °ЁшЇЄр, т ЇюЁьрЄх ЇєэъЎшш SysFn 4.</p>
|
||||
<p>┬ючтЁрЄ - EAX = width shl 16 + height.</p>
|
||||
<p>─хъюфшЁєхЄ шч ъюьсшэшЁютрээюую ЎтхЄр/ЁрчьхЁр °шЁшэє ш т√ёюЄє °ЁшЇЄр т яшъёхы ї</p>
|
||||
|
||||
<h1><a name="struc">╤ЄЁєъЄєЁр ЄєыЄшяр</a></h1>
|
||||
<p>╠ръЁюё фы ёючфрэш ёЄЁєъЄєЁ√ ЄєыЄшяр эшцх, тъы■ўхэ т box_lib.mac. ═х чрс√трхь юс·хфшэшЄ№ ЄєыЄшя√ т ёяшёюъ.</p>
|
||||
<pre>struc tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
|
||||
{
|
||||
.txt dd txt ; єърчрЄхы№ эр ЄхъёЄ asciiz, ЁрчфхышЄхы№ \r 13
|
||||
.next dd next ; ёыхфє■∙шшщ tooltip т Ўхяюўъх шыш 0
|
||||
.zone_y dw zone_y ; чюэр ъюэЄЁюы (т 90% ёыєўрхт ёютярфрхЄ ё ЁрчьхЁюь ъюэЄЁюыр)
|
||||
.zone_x dw zone_x ;
|
||||
.zone_h dw zone_h ;
|
||||
.zone_w dw zone_w ;
|
||||
.col_txt dd col_txt ; ЎтхЄ ЄхъёЄр ЄєыЄшяр, тъы■ўр ЁрчьхЁ SysFn4
|
||||
.col_bkg dd col_bkg ; ЎтхЄ Їюэр ЄєыЄшяр
|
||||
.tm_wait dw tm_wait ; тЁхь юцшфрэш ї10ьё
|
||||
;тЁхьхээ√х яхЁхьхээ√х
|
||||
.font_sz dd ? ; font size
|
||||
.mouse dd ? ; яЁхф√фє∙хх яюыюцхэшх (x, y)
|
||||
.tm_strt dd ? ; тЁхь чряєёър ЄрщьхЁр (тїюфр ь√°ш т чюэє) ї10ьё
|
||||
.video dd ? ; ярь Є№ фы ёюїЁрэхээюую яюф ЄєыЄшяюь
|
||||
.video_y dw ? ; ъююЁфшэрЄ√ чряюьэхээющ юсырёЄш ¤ъЁрэр, шыш 0 хёыш яєёЄю
|
||||
.video_x dw ?
|
||||
.video_h dw ? ; ЁрчьхЁ яЁхфЁрёўшЄ√трхЄё яЁш init
|
||||
.video_w dw ?
|
||||
}
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<h1><a name="source">╚ёїюфэ√щ ъюф ш яЁшьхЁ√</a></h1>
|
||||
<p>╚ёїюфэ√щ ъюф эрїюфшЄё т сшсышюЄхъх box_lib, Їрщы tooltip.asm</p>
|
||||
<p>╧ЁшьхЁ шёяюы№чютрэш эрїюфшЄё т box_lib\asm\tooltip_demo.asm</p>
|
||||
<h1>EOF</h1>
|
||||
</body>
|
||||
</html>
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,474 +1,480 @@
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1, start, i_end, mem, stacktop, 0, sys_path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
caption db 'Шифрование алгоритмом DES 21.05.25',0 ;подпись окна
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
image_data dd 0 ;указатель на временную память. для нужен преобразования изображения
|
||||
|
||||
fn_toolbar db 'toolbar.png',0
|
||||
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*5
|
||||
image_data_toolbar dd 0
|
||||
|
||||
IMAGE_FILE1_SIZE equ 128*144*3+54 ;размер файла с изображением
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_READ_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,l_libs_end
|
||||
;проверка на сколько удачно загузилась библиотека
|
||||
mov ebp,lib_0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
|
||||
mcall SF_SET_EVENTS_MASK,0xC0000027
|
||||
stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога
|
||||
|
||||
stdcall [buf2d_create], buf_0 ;создание буфера
|
||||
|
||||
load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_toolbar] ;освобождаем память
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
|
||||
stdcall [buf2d_convert_text_matrix], buf_1
|
||||
|
||||
load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov dword[open_file],eax
|
||||
|
||||
call but_new_file
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp al,EV_REDRAW
|
||||
jz red_win
|
||||
cmp al,EV_KEY
|
||||
jz key
|
||||
cmp al,EV_BUTTON
|
||||
jz button
|
||||
cmp al,EV_MOUSE
|
||||
jne @f
|
||||
jmp mouse
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
; *** рисование главного окна (выполняется 1 раз при запуске) ***
|
||||
mov edx,[sc.work]
|
||||
or edx,(3 shl 24)+0x10000000+0x20000000
|
||||
mov edi,caption
|
||||
mcall SF_CREATE_WINDOW, (20 shl 16)+480, (20 shl 16)+410
|
||||
|
||||
; *** создание кнопок на панель ***
|
||||
mov esi,[sc.work_button]
|
||||
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (5 shl 16)+20, 3
|
||||
mcall ,(30 shl 16)+20,,4
|
||||
mcall ,(55 shl 16)+20,,5
|
||||
mcall ,(85 shl 16)+20,,6
|
||||
mcall ,(110 shl 16)+20,,7
|
||||
|
||||
; *** рисование иконок на кнопках ***
|
||||
mcall SF_PUT_IMAGE, [image_data_toolbar], (16 shl 16)+16, (7 shl 16)+7 ;icon new
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;icon open
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;icon save
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(30 shl 16) ;
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
int 0x40
|
||||
|
||||
stdcall [edit_box_draw], edit1
|
||||
|
||||
; *** рисование буфера ***
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
stdcall [edit_box_key], dword edit1
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,3
|
||||
jne @f
|
||||
call but_new_file
|
||||
@@:
|
||||
cmp ah,4
|
||||
jne @f
|
||||
call but_open_file
|
||||
@@:
|
||||
cmp ah,5
|
||||
jne @f
|
||||
call but_save_file
|
||||
@@:
|
||||
cmp ah,6
|
||||
jne @f
|
||||
call but_1
|
||||
@@:
|
||||
cmp ah,7
|
||||
jne @f
|
||||
call but_2
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall mem.Free,[image_data_toolbar]
|
||||
stdcall mem.Free,[open_file]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
|
||||
align 4
|
||||
but_new_file:
|
||||
mov dword[open_file_size],0
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
align 4
|
||||
open_file dd 0 ;указатель на память для открытия файлов
|
||||
open_file_size dd 0 ;размер открытого файла (должен быть не больше max_open_file_size)
|
||||
|
||||
align 4
|
||||
but_open_file:
|
||||
pushad
|
||||
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||||
mov [OpenDialog_data.type],0
|
||||
stdcall [OpenDialog_Start],OpenDialog_data
|
||||
cmp [OpenDialog_data.status],2
|
||||
je .end_open_file
|
||||
;код при удачном открытии диалога
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_READ_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], openfile_path
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je .end_open_file
|
||||
|
||||
mov [open_file_size],ebx
|
||||
add ebx,[open_file]
|
||||
mov byte[ebx],0 ;на случай если ранее был открыт файл большего размера чистим конец буфера с файлом
|
||||
mcall SF_SET_CAPTION,1,openfile_path
|
||||
|
||||
call draw_file
|
||||
.end_open_file:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
draw_file:
|
||||
pushad
|
||||
stdcall [buf2d_clear], buf_0, [buf_0.color]
|
||||
cmp dword[open_file_size],0
|
||||
je .open_file
|
||||
mov eax,[open_file]
|
||||
mov ebx,3
|
||||
mov edx,[open_file_size]
|
||||
.cycle_0:
|
||||
mov edi,txt_buf
|
||||
mov esi,eax
|
||||
mov ecx,56
|
||||
;cld
|
||||
rep movsb
|
||||
mov byte[edi],0
|
||||
mov edi,txt_buf
|
||||
mov ecx,56
|
||||
.cycle_1:
|
||||
cmp byte[edi],0
|
||||
je @f
|
||||
cmp byte[edi],13
|
||||
je @f
|
||||
jmp .ok
|
||||
@@:
|
||||
mov byte[edi],' ' ;непечатные символы заменяем на пробел
|
||||
.ok:
|
||||
inc edi
|
||||
loop .cycle_1
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_buf,4,ebx,0xb0
|
||||
sub edx,56
|
||||
cmp edx,1
|
||||
jl @f
|
||||
add eax,56
|
||||
add ebx,10
|
||||
cmp ebx,[buf_0.h]
|
||||
jl .cycle_0
|
||||
jmp @f
|
||||
.open_file:
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_openfile,3,3,0xb000
|
||||
@@:
|
||||
stdcall [buf2d_draw], buf_0
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_save_file:
|
||||
pushad
|
||||
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||||
mov [OpenDialog_data.type],1
|
||||
stdcall [OpenDialog_Start],OpenDialog_data
|
||||
cmp [OpenDialog_data.status],2
|
||||
je .end_save_file
|
||||
;код при удачном открытии диалога
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_CREATE_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov ebx, dword[open_file]
|
||||
mov [run_file_70.Buffer], ebx
|
||||
mov ebx,[open_file_size]
|
||||
mov dword[run_file_70.Count], ebx ;размер файла
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], openfile_path
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;сохраняем файл изображения
|
||||
;cmp ebx,0xffffffff
|
||||
;je .end_save_file
|
||||
; ... сообщение о неудачном сохранении ...
|
||||
|
||||
.end_save_file:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_1:
|
||||
push eax
|
||||
mov eax,[open_file_size]
|
||||
shr eax,3
|
||||
stdcall [des_encryption], txt_key,mem_key,[open_file],eax
|
||||
pop eax
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_2:
|
||||
push eax
|
||||
mov eax,[open_file_size]
|
||||
shr eax,3
|
||||
stdcall [des_decryption], txt_key,mem_key,[open_file],eax
|
||||
pop eax
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
;данные для диалога открытия файлов
|
||||
align 4
|
||||
OpenDialog_data:
|
||||
.type dd 0 ;0 - открыть, 1 - сохранить, 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 default_dir ;+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
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 10 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 10 ;+54 ; Window Y position
|
||||
|
||||
default_dir db '/sys',0
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_name:
|
||||
db 'opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys/File managers/',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter ;.1
|
||||
.1:
|
||||
db 'TXT',0
|
||||
db 'ASM',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
|
||||
system_dir_0 db '/sys/lib/'
|
||||
lib_name_0 db 'proc_lib.obj',0
|
||||
system_dir_1 db '/sys/lib/'
|
||||
lib_name_1 db 'libimg.obj',0
|
||||
system_dir_2 db '/sys/lib/'
|
||||
lib_name_2 db 'buf2d.obj',0
|
||||
system_dir_3 db '/sys/lib/'
|
||||
lib_name_3 db 'crypt_des.obj',0
|
||||
system_dir_4 db '/sys/lib/'
|
||||
lib_name_4 db 'box_lib.obj',0
|
||||
|
||||
l_libs_start:
|
||||
lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
|
||||
lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
|
||||
lib_2 l_libs lib_name_2, library_path, system_dir_2, import_buf2d
|
||||
lib_3 l_libs lib_name_3, library_path, system_dir_3, import_des
|
||||
lib_4 l_libs lib_name_4, library_path, system_dir_4, import_box_lib
|
||||
l_libs_end:
|
||||
|
||||
include '../../libs-dev/libimg/import.inc'
|
||||
|
||||
align 4
|
||||
import_proclib: ;описание экспортируемых функций
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
|
||||
include '../../buf2d/import.inc'
|
||||
|
||||
align 4
|
||||
import_des: ;описание экспортируемых функций
|
||||
des_encryption dd sz_des_encryption
|
||||
des_decryption dd sz_des_decryption
|
||||
dd 0,0
|
||||
sz_des_encryption db 'des_encryption',0
|
||||
sz_des_decryption db 'des_decryption',0
|
||||
|
||||
include '../../box_lib/import.inc'
|
||||
|
||||
align 4
|
||||
buf_0: dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 31 ;+6 top
|
||||
.w: dd 456 ;+8 w
|
||||
.h: dd 350 ;+12 h
|
||||
.color: dd 0xffffd0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 128 ;+8 w
|
||||
dd 144 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
edit1 edit_box 58, 140,8, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 8, txt_key, mouse_dd, ed_focus+ed_always_focus,8,8
|
||||
|
||||
txt_openfile db 'Откройте файл для шифрования или дешифрования.',0
|
||||
txt_key db 'des_0123',0
|
||||
|
||||
align 16
|
||||
i_end:
|
||||
txt_buf rb 80
|
||||
mem_key rb 120
|
||||
mouse_dd rd 1
|
||||
procinfo process_information
|
||||
sc system_colors
|
||||
rb 2048
|
||||
stacktop:
|
||||
sys_path rb 1024
|
||||
file_name rb 1024 ;4096
|
||||
library_path rb 1024
|
||||
plugin_path rb 4096
|
||||
openfile_path rb 4096
|
||||
filename_area rb 256
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32
|
||||
org 0
|
||||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
|
||||
dd 1, start, i_end, mem, stacktop, 0, sys_path
|
||||
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
|
||||
@use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
caption db 'Шифрование алгоритмом DES 21.05.25',0 ;подпись окна
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
Position dd ?
|
||||
Flags dd ?
|
||||
Count dd ?
|
||||
Buffer dd ?
|
||||
db ?
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
image_data dd 0 ;указатель на временную память. для нужен преобразования изображения
|
||||
|
||||
fn_toolbar db 'toolbar.png',0
|
||||
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*5
|
||||
image_data_toolbar dd 0
|
||||
|
||||
IMAGE_FILE1_SIZE equ 128*144*3+54 ;размер файла с изображением
|
||||
|
||||
max_open_file_size equ 64*1024 ;64 Kb
|
||||
|
||||
macro load_image_file path,buf,size { ;макрос для загрузки изображений
|
||||
;path - может быть переменной или строковым параметром
|
||||
if path eqtype '' ;проверяем задан ли строкой параметр path
|
||||
jmp @f
|
||||
local .path_str
|
||||
.path_str db path ;формируем локальную переменную
|
||||
db 0
|
||||
@@:
|
||||
;32 - стандартный адрес по которому должен быть буфер с системным путем
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;выделяем память для изображения
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_READ_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;определяем вид изображения и переводим его во временный буфер image_data
|
||||
stdcall [img_decode], [buf],ebx,0
|
||||
mov [image_data],eax
|
||||
;преобразуем изображение к формату rgb
|
||||
stdcall [img_to_rgb2], [image_data],[buf]
|
||||
;удаляем временный буфер image_data
|
||||
stdcall [img_destroy], [image_data]
|
||||
@@:
|
||||
}
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
start:
|
||||
load_libraries l_libs_start,l_libs_end
|
||||
;проверка на сколько удачно загузилась библиотека
|
||||
mov ebp,lib_0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
|
||||
mcall SF_SET_EVENTS_MASK,0xC0000027
|
||||
stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога
|
||||
|
||||
stdcall [buf2d_create], buf_0 ;создание буфера
|
||||
|
||||
load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
|
||||
stdcall mem.Free,[image_data_toolbar] ;освобождаем память
|
||||
stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
|
||||
stdcall [buf2d_convert_text_matrix], buf_1
|
||||
|
||||
load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
|
||||
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov dword[open_file],eax
|
||||
|
||||
call but_new_file
|
||||
|
||||
align 4
|
||||
red_win:
|
||||
call draw_window
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall SF_WAIT_EVENT
|
||||
|
||||
cmp al,EV_REDRAW
|
||||
jz red_win
|
||||
cmp al,EV_KEY
|
||||
jz key
|
||||
cmp al,EV_BUTTON
|
||||
jz button
|
||||
cmp al,EV_MOUSE
|
||||
jne @f
|
||||
jmp mouse
|
||||
@@:
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
; *** рисование главного окна (выполняется 1 раз при запуске) ***
|
||||
mov edx,[sc.work]
|
||||
or edx,(3 shl 24)+0x10000000+0x20000000
|
||||
mov edi,caption
|
||||
mcall SF_CREATE_WINDOW, (20 shl 16)+480, (20 shl 16)+410
|
||||
|
||||
; *** создание кнопок на панель ***
|
||||
mov esi,[sc.work_button]
|
||||
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (5 shl 16)+20, 3
|
||||
mcall ,(30 shl 16)+20,,4
|
||||
mcall ,(55 shl 16)+20,,5
|
||||
mcall ,(85 shl 16)+20,,6
|
||||
mcall ,(110 shl 16)+20,,7
|
||||
|
||||
; *** рисование иконок на кнопках ***
|
||||
mcall SF_PUT_IMAGE, [image_data_toolbar], (16 shl 16)+16, (7 shl 16)+7 ;icon new
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;icon open
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;icon save
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(30 shl 16) ;
|
||||
int 0x40
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;
|
||||
int 0x40
|
||||
|
||||
stdcall [edit_box_draw], edit1
|
||||
|
||||
; *** рисование буфера ***
|
||||
stdcall [buf2d_draw], buf_0
|
||||
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall SF_GET_KEY
|
||||
stdcall [edit_box_key], dword edit1
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,3
|
||||
jne @f
|
||||
call but_new_file
|
||||
@@:
|
||||
cmp ah,4
|
||||
jne @f
|
||||
call but_open_file
|
||||
@@:
|
||||
cmp ah,5
|
||||
jne @f
|
||||
call but_save_file
|
||||
@@:
|
||||
cmp ah,6
|
||||
jne @f
|
||||
call but_1
|
||||
@@:
|
||||
cmp ah,7
|
||||
jne @f
|
||||
call but_2
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0
|
||||
stdcall [buf2d_delete],buf_1 ;удаляем буфер
|
||||
stdcall mem.Free,[image_data_toolbar]
|
||||
stdcall mem.Free,[open_file]
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
|
||||
align 4
|
||||
but_new_file:
|
||||
mov dword[open_file_size],0
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
align 4
|
||||
open_file dd 0 ;указатель на память для открытия файлов
|
||||
open_file_size dd 0 ;размер открытого файла (должен быть не больше max_open_file_size)
|
||||
|
||||
align 4
|
||||
but_open_file:
|
||||
pushad
|
||||
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||||
mov [OpenDialog_data.type],0
|
||||
stdcall [OpenDialog_Start],OpenDialog_data
|
||||
cmp [OpenDialog_data.status],2
|
||||
je .end_open_file
|
||||
;код при удачном открытии диалога
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_READ_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov dword[run_file_70.Count], max_open_file_size
|
||||
m2m [run_file_70.Buffer], [open_file]
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], openfile_path
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;загружаем файл изображения
|
||||
cmp ebx,0xffffffff
|
||||
je .end_open_file
|
||||
|
||||
mov [open_file_size],ebx
|
||||
add ebx,[open_file]
|
||||
mov byte[ebx],0 ;на случай если ранее был открыт файл большего размера чистим конец буфера с файлом
|
||||
mcall SF_SET_CAPTION,1,openfile_path
|
||||
|
||||
call draw_file
|
||||
.end_open_file:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
draw_file:
|
||||
pushad
|
||||
stdcall [buf2d_clear], buf_0, [buf_0.color]
|
||||
cmp dword[open_file_size],0
|
||||
je .open_file
|
||||
mov eax,[open_file]
|
||||
mov ebx,3
|
||||
mov edx,[open_file_size]
|
||||
.cycle_0:
|
||||
mov edi,txt_buf
|
||||
mov esi,eax
|
||||
mov ecx,56
|
||||
;cld
|
||||
rep movsb
|
||||
mov byte[edi],0
|
||||
mov edi,txt_buf
|
||||
mov ecx,56
|
||||
.cycle_1:
|
||||
cmp byte[edi],0
|
||||
je @f
|
||||
cmp byte[edi],13
|
||||
je @f
|
||||
jmp .ok
|
||||
@@:
|
||||
mov byte[edi],' ' ;непечатные символы заменяем на пробел
|
||||
.ok:
|
||||
inc edi
|
||||
loop .cycle_1
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_buf,4,ebx,0xb0
|
||||
sub edx,56
|
||||
cmp edx,1
|
||||
jl @f
|
||||
add eax,56
|
||||
add ebx,10
|
||||
cmp ebx,[buf_0.h]
|
||||
jl .cycle_0
|
||||
jmp @f
|
||||
.open_file:
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_openfile,3,3,0xb000
|
||||
@@:
|
||||
stdcall [buf2d_draw], buf_0
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_save_file:
|
||||
pushad
|
||||
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||||
mov [OpenDialog_data.type],1
|
||||
stdcall [OpenDialog_Start],OpenDialog_data
|
||||
cmp [OpenDialog_data.status],2
|
||||
je .end_save_file
|
||||
;код при удачном открытии диалога
|
||||
|
||||
mov eax,SF_FILE
|
||||
mov [run_file_70.Function], SSF_CREATE_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov ebx, dword[open_file]
|
||||
mov [run_file_70.Buffer], ebx
|
||||
mov ebx,[open_file_size]
|
||||
mov dword[run_file_70.Count], ebx ;размер файла
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], openfile_path
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;сохраняем файл изображения
|
||||
;cmp ebx,0xffffffff
|
||||
;je .end_save_file
|
||||
; ... сообщение о неудачном сохранении ...
|
||||
|
||||
.end_save_file:
|
||||
popad
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_1:
|
||||
push eax
|
||||
mov eax,[open_file_size]
|
||||
shr eax,3
|
||||
stdcall [des_encryption], txt_key,mem_key,[open_file],eax
|
||||
pop eax
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
align 4
|
||||
but_2:
|
||||
push eax
|
||||
mov eax,[open_file_size]
|
||||
shr eax,3
|
||||
stdcall [des_decryption], txt_key,mem_key,[open_file],eax
|
||||
pop eax
|
||||
call draw_file
|
||||
ret
|
||||
|
||||
;данные для диалога открытия файлов
|
||||
align 4
|
||||
OpenDialog_data:
|
||||
.type dd 0 ;0 - открыть, 1 - сохранить, 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 default_dir ;+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
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 10 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 10 ;+54 ; Window Y position
|
||||
|
||||
default_dir db '/sys',0
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_name:
|
||||
db 'opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys/File managers/',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter ;.1
|
||||
.1:
|
||||
db 'TXT',0
|
||||
db 'ASM',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
|
||||
system_dir_0 db '/sys/lib/'
|
||||
lib_name_0 db 'proc_lib.obj',0
|
||||
system_dir_1 db '/sys/lib/'
|
||||
lib_name_1 db 'libimg.obj',0
|
||||
system_dir_2 db '/sys/lib/'
|
||||
lib_name_2 db 'buf2d.obj',0
|
||||
system_dir_3 db '/sys/lib/'
|
||||
lib_name_3 db 'crypt_des.obj',0
|
||||
system_dir_4 db '/sys/lib/'
|
||||
lib_name_4 db 'box_lib.obj',0
|
||||
|
||||
l_libs_start:
|
||||
lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
|
||||
lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
|
||||
lib_2 l_libs lib_name_2, library_path, system_dir_2, import_buf2d
|
||||
lib_3 l_libs lib_name_3, library_path, system_dir_3, import_des
|
||||
lib_4 l_libs lib_name_4, library_path, system_dir_4, import_box_lib
|
||||
l_libs_end:
|
||||
|
||||
include '../../libs-dev/libimg/import.inc'
|
||||
|
||||
align 4
|
||||
import_proclib: ;описание экспортируемых функций
|
||||
OpenDialog_Init dd aOpenDialog_Init
|
||||
OpenDialog_Start dd aOpenDialog_Start
|
||||
dd 0,0
|
||||
aOpenDialog_Init db 'OpenDialog_init',0
|
||||
aOpenDialog_Start db 'OpenDialog_start',0
|
||||
|
||||
include '../../buf2d/import.inc'
|
||||
|
||||
align 4
|
||||
import_des: ;описание экспортируемых функций
|
||||
des_encryption dd sz_des_encryption
|
||||
des_decryption dd sz_des_decryption
|
||||
dd 0,0
|
||||
sz_des_encryption db 'des_encryption',0
|
||||
sz_des_decryption db 'des_decryption',0
|
||||
|
||||
include '../../box_lib/import.inc'
|
||||
|
||||
align 4
|
||||
buf_0: dd 0 ;указатель на буфер изображения
|
||||
dw 5 ;+4 left
|
||||
dw 31 ;+6 top
|
||||
.w: dd 456 ;+8 w
|
||||
.h: dd 350 ;+12 h
|
||||
.color: dd 0xffffd0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_1:
|
||||
dd 0 ;указатель на буфер изображения
|
||||
dw 25 ;+4 left
|
||||
dw 25 ;+6 top
|
||||
dd 128 ;+8 w
|
||||
dd 144 ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
edit1 edit_box 58, 140,8, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 8, txt_key, mouse_dd, ed_focus+ed_always_focus,8,8
|
||||
|
||||
txt_openfile db 'Откройте файл для шифрования или дешифрования.',0
|
||||
txt_key db 'des_0123',0
|
||||
|
||||
align 16
|
||||
i_end:
|
||||
txt_buf rb 80
|
||||
mem_key rb 120
|
||||
mouse_dd rd 1
|
||||
procinfo process_information
|
||||
sc system_colors
|
||||
rb 2048
|
||||
stacktop:
|
||||
sys_path rb 1024
|
||||
file_name rb 1024 ;4096
|
||||
library_path rb 1024
|
||||
plugin_path rb 4096
|
||||
openfile_path rb 4096
|
||||
filename_area rb 256
|
||||
mem:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,206 +1,212 @@
|
||||
; Copyright (c) 2009, <Lrz>
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are met:
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above copyright
|
||||
; notice, this list of conditions and the following disclaimer in the
|
||||
; documentation and/or other materials provided with the distribution.
|
||||
; * Neither the name of the <organization> nor the
|
||||
; names of its contributors may be used to endorse or promote products
|
||||
; derived from this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;*****************************************************************************
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd mem ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0 ; указатель на строку с параметрами.
|
||||
dd way_of_ini
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../box_lib/trunk/box_lib.mac'
|
||||
@use_library ;use load lib macros
|
||||
start:
|
||||
;universal load library/librarys
|
||||
sys_load_libraries l_libs_start,end_l_libs
|
||||
;if return code =-1 then exit, else nornary work
|
||||
cmp eax,-1
|
||||
jz exit
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
mov eax,dword [sc.work]
|
||||
mov dword [con_colors+4],eax
|
||||
|
||||
; mcall 66,1,0
|
||||
call [initialization_font] ; инициализация списка шрифтов
|
||||
push dword (8 shl 16 +16) ; поиск нужного шрифта в наборе шрифтов (пока доступен только 8х16)
|
||||
call [get_font]
|
||||
test eax,eax ;нашли ?
|
||||
jnz exit
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall 10 ;Ожидать события
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall 17 ;получить идентификатор нажатой клавиши
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
exit:
|
||||
call [free_fulder_info]
|
||||
call [free_font]
|
||||
mcall -1
|
||||
key:
|
||||
mcall 2 ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
|
||||
|
||||
mcall 13,<20,650>,<40,16>, dword[con_colors+4]
|
||||
|
||||
|
||||
push dword 20 shl 16 + 40 ; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
|
||||
push dword con_colors ; esp+8 = dd point to color of background and font
|
||||
push dword text ; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
call [font_draw_on_string] ; вывести по глифам строчку
|
||||
|
||||
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall 12,1
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+680 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+200 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0x34000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
;
|
||||
push dword 20 shl 16 + 40 ; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
|
||||
push dword con_colors ; esp+8 = dd point to color of background and font
|
||||
push dword text; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
call [font_draw_on_string] ; вывести по глифам строчку
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
;;;;;;;;;;;;
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
l_libs_start:
|
||||
library01 l_libs library_name, library_path, system_path, font_import
|
||||
library02 l_libs library_name1, library_path, system_path1, import_box_lib
|
||||
end_l_libs:
|
||||
|
||||
;
|
||||
system_path db '/sys/lib/'
|
||||
library_name db 'fonts_lib.obj',0
|
||||
|
||||
system_path1 db '/sys/lib/'
|
||||
library_name1 db 'box_lib.obj',0
|
||||
|
||||
align 4
|
||||
import_box_lib:
|
||||
|
||||
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
|
||||
|
||||
dd 0,0
|
||||
|
||||
aEdit_box_draw db 'edit_box_draw',0
|
||||
aEdit_box_key db 'edit_box_key',0
|
||||
aEdit_box_mouse db 'edit_box_mouse',0
|
||||
aVersion_ed db 'version_ed',0
|
||||
|
||||
font_import:
|
||||
initialization_font dd a_initialization_font
|
||||
get_font dd a_get_font
|
||||
free_fulder_info dd a_free_fulder_info
|
||||
free_font dd a_free_font
|
||||
font_draw_on_string dd a_font_draw_on_string
|
||||
show_all_glif dd a_show_all_glif
|
||||
Version_fn dd a_Version_fn
|
||||
dd 0,0
|
||||
|
||||
a_initialization_font db 'initialization_font',0
|
||||
a_get_font db 'get_font',0
|
||||
a_free_fulder_info db 'free_fulder_info',0
|
||||
a_free_font db 'free_font',0
|
||||
a_font_draw_on_string db 'font_draw_on_string',0
|
||||
a_show_all_glif db 'show_all_glif',0
|
||||
a_Version_fn db 'version_fn',0
|
||||
|
||||
|
||||
|
||||
edit1 edit_box 350,175,5,0xffffff,0x6f9480,0,0xAABBCC,0,test_leght,text,ed_focus,text_end-text-1,text_end-text-1
|
||||
|
||||
text db 'Пример использования библиотеки шрифтов fonts_lib.obj',0
|
||||
text_end:
|
||||
rb 256
|
||||
test_leght = ($-text)-1
|
||||
|
||||
hed db "Font's demo <Lrz>",0
|
||||
align 4
|
||||
con_colors dd 0x1E1EFF, 0x96FFCF
|
||||
|
||||
align 4
|
||||
sc system_colors
|
||||
way_of_ini rb 4096
|
||||
library_path rb 4096
|
||||
|
||||
align 4
|
||||
i_end:
|
||||
rb 1024
|
||||
mem:
|
||||
;конец кода
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; Copyright (c) 2009, <Lrz>
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are met:
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above copyright
|
||||
; notice, this list of conditions and the following disclaimer in the
|
||||
; documentation and/or other materials provided with the distribution.
|
||||
; * Neither the name of the <organization> nor the
|
||||
; names of its contributors may be used to endorse or promote products
|
||||
; derived from this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;*****************************************************************************
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd mem ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0 ; указатель на строку с параметрами.
|
||||
dd way_of_ini
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../box_lib/box_lib.mac'
|
||||
@use_library ;use load lib macros
|
||||
start:
|
||||
;universal load library/librarys
|
||||
sys_load_libraries l_libs_start,end_l_libs
|
||||
;if return code =-1 then exit, else nornary work
|
||||
cmp eax,-1
|
||||
jz exit
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
mov eax,dword [sc.work]
|
||||
mov dword [con_colors+4],eax
|
||||
|
||||
; mcall 66,1,0
|
||||
call [initialization_font] ; инициализация списка шрифтов
|
||||
push dword (8 shl 16 +16) ; поиск нужного шрифта в наборе шрифтов (пока доступен только 8х16)
|
||||
call [get_font]
|
||||
test eax,eax ;нашли ?
|
||||
jnz exit
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall 10 ;Ожидать события
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_mouse]
|
||||
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall 17 ;получить идентификатор нажатой клавиши
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
exit:
|
||||
call [free_fulder_info]
|
||||
call [free_font]
|
||||
mcall -1
|
||||
key:
|
||||
mcall 2 ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_key]
|
||||
|
||||
|
||||
mcall 13,<20,650>,<40,16>, dword[con_colors+4]
|
||||
|
||||
|
||||
push dword 20 shl 16 + 40 ; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
|
||||
push dword con_colors ; esp+8 = dd point to color of background and font
|
||||
push dword text ; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
call [font_draw_on_string] ; вывести по глифам строчку
|
||||
|
||||
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall 12,1
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+680 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+200 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0x34000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
push dword edit1
|
||||
call [edit_box_draw]
|
||||
;
|
||||
push dword 20 shl 16 + 40 ; esp+12= dd x shl 16 + y x- координата по Х, y - координата по Y
|
||||
push dword con_colors ; esp+8 = dd point to color of background and font
|
||||
push dword text; esp+4 = dd point to ASCIIZ
|
||||
; esp+0 = dd back
|
||||
call [font_draw_on_string] ; вывести по глифам строчку
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
;;;;;;;;;;;;
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
l_libs_start:
|
||||
library01 l_libs library_name, library_path, system_path, font_import
|
||||
library02 l_libs library_name1, library_path, system_path1, import_box_lib
|
||||
end_l_libs:
|
||||
|
||||
;
|
||||
system_path db '/sys/lib/'
|
||||
library_name db 'fonts_lib.obj',0
|
||||
|
||||
system_path1 db '/sys/lib/'
|
||||
library_name1 db 'box_lib.obj',0
|
||||
|
||||
align 4
|
||||
import_box_lib:
|
||||
|
||||
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
|
||||
|
||||
dd 0,0
|
||||
|
||||
aEdit_box_draw db 'edit_box_draw',0
|
||||
aEdit_box_key db 'edit_box_key',0
|
||||
aEdit_box_mouse db 'edit_box_mouse',0
|
||||
aVersion_ed db 'version_ed',0
|
||||
|
||||
font_import:
|
||||
initialization_font dd a_initialization_font
|
||||
get_font dd a_get_font
|
||||
free_fulder_info dd a_free_fulder_info
|
||||
free_font dd a_free_font
|
||||
font_draw_on_string dd a_font_draw_on_string
|
||||
show_all_glif dd a_show_all_glif
|
||||
Version_fn dd a_Version_fn
|
||||
dd 0,0
|
||||
|
||||
a_initialization_font db 'initialization_font',0
|
||||
a_get_font db 'get_font',0
|
||||
a_free_fulder_info db 'free_fulder_info',0
|
||||
a_free_font db 'free_font',0
|
||||
a_font_draw_on_string db 'font_draw_on_string',0
|
||||
a_show_all_glif db 'show_all_glif',0
|
||||
a_Version_fn db 'version_fn',0
|
||||
|
||||
|
||||
|
||||
edit1 edit_box 350,175,5,0xffffff,0x6f9480,0,0xAABBCC,0,test_leght,text,ed_focus,text_end-text-1,text_end-text-1
|
||||
|
||||
text db 'Пример использования библиотеки шрифтов fonts_lib.obj',0
|
||||
text_end:
|
||||
rb 256
|
||||
test_leght = ($-text)-1
|
||||
|
||||
hed db "Font's demo <Lrz>",0
|
||||
align 4
|
||||
con_colors dd 0x1E1EFF, 0x96FFCF
|
||||
|
||||
align 4
|
||||
sc system_colors
|
||||
way_of_ini rb 4096
|
||||
library_path rb 4096
|
||||
|
||||
align 4
|
||||
i_end:
|
||||
rb 1024
|
||||
mem:
|
||||
;конец кода
|
||||
@@ -1,467 +1,465 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2015. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 1024
|
||||
BUFFERSIZE = 4096
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
format binary as ""
|
||||
;--------------------------------------
|
||||
frame_1:
|
||||
.x = 5
|
||||
.y = 10
|
||||
.width = 350
|
||||
.height = 55
|
||||
;--------------------------------------
|
||||
frame_2:
|
||||
.x = 5
|
||||
.y = 75
|
||||
.width = 350
|
||||
.height = 55
|
||||
;---------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END ; required memory
|
||||
dd stacktop ; esp
|
||||
dd params ; I_PARAM
|
||||
dd 0x0 ; I_Path
|
||||
;---------------------------------------------------------------------
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../../debug-fdo.inc'
|
||||
include '../../box_lib/trunk/box_lib.mac'
|
||||
include '../../http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz exit
|
||||
;---------------------------------------------------------------------
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
call copy_file_name_path
|
||||
|
||||
mov edi,fname_buf
|
||||
mov esi,start_file_path
|
||||
call copy_file_name_path
|
||||
|
||||
;OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
;---------------------------------------------------------------------
|
||||
; check parameters
|
||||
cmp byte[params], 0 ; no parameters ?
|
||||
je reset_events ; load the GUI
|
||||
|
||||
inc [silently]
|
||||
|
||||
download:
|
||||
call download_1
|
||||
|
||||
test [silently], 0xff
|
||||
jnz save
|
||||
|
||||
reset_events:
|
||||
DEBUGF 1, "resetting events\n"
|
||||
|
||||
; Report events
|
||||
; defaults + mouse
|
||||
mcall 40,EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER
|
||||
;---------------------------------------------------------------------
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
;; DEBUGF 1, "waiting for events\n"
|
||||
|
||||
mcall 10 ; wait here for event
|
||||
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
|
||||
cmp eax, EV_KEY
|
||||
je key
|
||||
|
||||
cmp eax, EV_BUTTON
|
||||
je button
|
||||
|
||||
cmp eax, EV_MOUSE
|
||||
je mouse
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall 2 ; read key
|
||||
|
||||
stdcall [edit_box_key], dword edit1
|
||||
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
|
||||
mcall 17 ; get id
|
||||
|
||||
cmp ah, 26
|
||||
jne @f
|
||||
; invoke OpenDialog
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
call draw_window
|
||||
jmp still
|
||||
@@:
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je exit
|
||||
|
||||
call download_1
|
||||
jmp save
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
exit:
|
||||
DEBUGF 1, "Exiting\n"
|
||||
invoke HTTP_free, [identifier] ; free buffer
|
||||
fail:
|
||||
or eax, -1 ; close this program
|
||||
mcall
|
||||
;---------------------------------------------------------------------
|
||||
download_1:
|
||||
DEBUGF 1, "Starting download\n"
|
||||
|
||||
invoke HTTP_get, 0, 0, params, sz_add_header
|
||||
test eax, eax
|
||||
jz fail
|
||||
mov [identifier], eax
|
||||
|
||||
.loop:
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jnz .loop
|
||||
|
||||
mov eax, [identifier]
|
||||
mov ebx, [eax + http_msg.content_length]
|
||||
mov [final_size], ebx
|
||||
mov ebx, [eax + http_msg.content_ptr]
|
||||
mov [final_buffer], ebx
|
||||
|
||||
invoke HTTP_find_header, [identifier], sz_content_enc
|
||||
test eax, eax
|
||||
jz .no_deflate
|
||||
|
||||
; TODO: check if parameter equals "deflate"
|
||||
|
||||
DEBUGF 1, "deflating\n"
|
||||
|
||||
lea eax, [final_size]
|
||||
invoke deflate_unpack, [final_buffer], eax
|
||||
push eax
|
||||
mcall 68, 13, [final_buffer] ; Free the compressed data
|
||||
pop [final_buffer]
|
||||
|
||||
DEBUGF 1, "deflated size=%u bytes\n", [final_size]
|
||||
.no_deflate:
|
||||
|
||||
invoke HTTP_free, [identifier]
|
||||
mov [identifier], 0
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
save:
|
||||
cmp [final_buffer], 0
|
||||
je still
|
||||
|
||||
mcall 70, fileinfo
|
||||
|
||||
DEBUGF 1, "File saved\n"
|
||||
|
||||
test [silently], 0xff
|
||||
jnz exit
|
||||
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 0x80000000
|
||||
mcall 4, <10, frame_2.y+frame_2.height+7>, , download_complete
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
copy_file_name_path:
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @r
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12, 1 ; start window draw
|
||||
;-----------------------------------
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
;-----------------------------------
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 370>, <350, 170>, , 0, title
|
||||
;-----------------------------------
|
||||
; draw frames
|
||||
mov [frame_data.x],dword frame_1.x shl 16+frame_1.width
|
||||
mov [frame_data.y],dword frame_1.y shl 16+frame_1.height
|
||||
mov [frame_data.text_pointer],dword select_addr_text
|
||||
mov eax,[sc.work]
|
||||
mov [frame_data.font_backgr_color],eax
|
||||
mov eax,[sc.work_text]
|
||||
mov [frame_data.font_color],eax
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
mov [frame_data.x],dword frame_2.x shl 16+frame_2.width
|
||||
mov [frame_data.y],dword frame_2.y shl 16+frame_2.height
|
||||
mov [frame_data.text_pointer],dword select_path_text
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
; draw "url:" text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+10, frame_1.y+15>, , type_pls
|
||||
;-----------------------------------
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
stdcall [edit_box_draw], edit1
|
||||
;-----------------------------------
|
||||
; draw buttons
|
||||
mcall 8,<frame_1.x+frame_1.width-(68+15+50+15),68>,<frame_1.y+30,16>,22,[sc.work_button] ; reload
|
||||
mcall ,<frame_1.x+frame_1.width-(50+15),50>,<frame_1.y+30,16>, 24 ; stop
|
||||
|
||||
mcall , <frame_2.x+frame_2.width-(54+15),54>,<frame_2.y+30,16>,26 ; save
|
||||
;-----------------------------------
|
||||
; draw buttons text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+frame_1.width-(68+15+50+15)+10,frame_1.y+35>, , button_text.1
|
||||
mcall , <frame_1.x+frame_1.width-(50+15)+15,frame_1.y+35>, , button_text.2
|
||||
mcall , <frame_2.x+frame_2.width-(54+15)+10,frame_2.y+35>, , button_text.3
|
||||
|
||||
mcall 13,<frame_2.x+17,frame_2.width-15*2>,<frame_2.y+10,15>,0xffffff
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
|
||||
mcall 12, 2 ; end window redraw
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj', \
|
||||
archiver, 'archiver.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get, 'get' , \
|
||||
HTTP_receive, 'receive', \
|
||||
HTTP_find_header, 'find_header_field', \
|
||||
HTTP_free, 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
PathShow_prepare, 'PathShow_prepare', \
|
||||
PathShow_draw, 'PathShow_draw', \
|
||||
Frame_draw, 'frame_draw'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
|
||||
import archiver,\
|
||||
deflate_unpack, 'deflate_unpack'
|
||||
;---------------------------------------------------------------------
|
||||
fileinfo dd 2, 0, 0
|
||||
final_size dd 0
|
||||
final_buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
mouse_dd dd 0
|
||||
edit1 edit_box 295, 48, (frame_1.y+10), 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7
|
||||
editboxes_end:
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
include_debug_strings
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
type_pls db 'URL:', 0
|
||||
button_text:
|
||||
.1: db 'DOWNLOAD',0
|
||||
.2: db 'STOP',0
|
||||
.3: db 'SELECT', 0
|
||||
download_complete db 'FILE SAVED!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
silently db 0
|
||||
|
||||
sz_add_header db 'Accept-Encoding: deflate', 13, 10, 0 ; archiver.obj doesnt export unpack method for gzip yet :(
|
||||
sz_content_enc db 'content-encoding', 0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
select_addr_text db ' NETWORK ADDRESS: ',0
|
||||
select_path_text db ' PATH TO SAVE FILE: ',0
|
||||
;---------------------------------------------------------------------
|
||||
frame_data:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.x_size dw 0 ;+4
|
||||
.x_start dw 0 ;+6
|
||||
.y:
|
||||
.y_size dw 0 ;+8
|
||||
.y_start dw 0 ;+10
|
||||
.ext_fr_col dd 0x0 ;+12
|
||||
.int_fr_col dd 0xffffff ;+16
|
||||
.draw_text_flag dd 1 ;+20
|
||||
.text_pointer dd 0 ;+24
|
||||
.text_position dd 0 ;+28
|
||||
.font_number dd 0 ;+32
|
||||
.font_size_y dd 9 ;+36
|
||||
.font_color dd 0x0 ;+40
|
||||
.font_backgr_color dd 0xffffff ;+44
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw frame_2.y+14 ;+4
|
||||
.start_x dw frame_2.x+20 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw frame_2.width-35 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0 ;+20
|
||||
.background_color dd 0 ;+24
|
||||
.text_pointer dd fname_buf ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_path dd temp_dir_path ;+16
|
||||
.dir_default_path dd communication_area_default_path ;+20
|
||||
.start_path dd open_dialog_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd fname_buf ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 200 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 120 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path:
|
||||
db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter
|
||||
.1:
|
||||
db 'IMG',0
|
||||
db 'IMA',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
start_temp_file_name: db 'some.garbage',0
|
||||
|
||||
start_file_path: db '/sys/.download', 0
|
||||
;---------------------------------------------------------------------
|
||||
document_user db 'http://'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
;---------------------------------------------------------------------
|
||||
params rb URLMAXLEN
|
||||
;---------------------------------------------------------------------
|
||||
sc system_colors
|
||||
;---------------------------------------------------------------------
|
||||
identifier dd ?
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
temp_dir_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
fname_buf:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
rb 4096
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2015. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 1024
|
||||
BUFFERSIZE = 4096
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
format binary as ""
|
||||
;--------------------------------------
|
||||
frame_1:
|
||||
.x = 5
|
||||
.y = 10
|
||||
.width = 350
|
||||
.height = 55
|
||||
;--------------------------------------
|
||||
frame_2:
|
||||
.x = 5
|
||||
.y = 75
|
||||
.width = 350
|
||||
.height = 55
|
||||
;---------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END ; required memory
|
||||
dd stacktop ; esp
|
||||
dd params ; I_PARAM
|
||||
dd 0x0 ; I_Path
|
||||
;---------------------------------------------------------------------
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../../debug-fdo.inc'
|
||||
include '../../box_lib/box_lib.mac'
|
||||
include '../../http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz exit
|
||||
;---------------------------------------------------------------------
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
call copy_file_name_path
|
||||
|
||||
mov edi,fname_buf
|
||||
mov esi,start_file_path
|
||||
call copy_file_name_path
|
||||
|
||||
;OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
;---------------------------------------------------------------------
|
||||
; check parameters
|
||||
cmp byte[params], 0 ; no parameters ?
|
||||
je reset_events ; load the GUI
|
||||
|
||||
inc [silently]
|
||||
|
||||
download:
|
||||
call download_1
|
||||
|
||||
test [silently], 0xff
|
||||
jnz save
|
||||
|
||||
reset_events:
|
||||
DEBUGF 1, "resetting events\n"
|
||||
|
||||
; Report events
|
||||
; defaults + mouse
|
||||
mcall 40,EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER
|
||||
;---------------------------------------------------------------------
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
;; DEBUGF 1, "waiting for events\n"
|
||||
|
||||
mcall 10 ; wait here for event
|
||||
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
|
||||
cmp eax, EV_KEY
|
||||
je key
|
||||
|
||||
cmp eax, EV_BUTTON
|
||||
je button
|
||||
|
||||
cmp eax, EV_MOUSE
|
||||
je mouse
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall 2 ; read key
|
||||
|
||||
stdcall [edit_box_key], dword edit1
|
||||
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
|
||||
mcall 17 ; get id
|
||||
|
||||
cmp ah, 26
|
||||
jne @f
|
||||
; invoke OpenDialog
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
call draw_window
|
||||
jmp still
|
||||
@@:
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je exit
|
||||
|
||||
call download_1
|
||||
jmp save
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
exit:
|
||||
DEBUGF 1, "Exiting\n"
|
||||
invoke HTTP_free, [identifier] ; free buffer
|
||||
fail:
|
||||
or eax, -1 ; close this program
|
||||
mcall
|
||||
;---------------------------------------------------------------------
|
||||
download_1:
|
||||
DEBUGF 1, "Starting download\n"
|
||||
|
||||
invoke HTTP_get, 0, 0, params, sz_add_header
|
||||
test eax, eax
|
||||
jz fail
|
||||
mov [identifier], eax
|
||||
|
||||
.loop:
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jnz .loop
|
||||
|
||||
mov eax, [identifier]
|
||||
mov ebx, [eax + http_msg.content_length]
|
||||
mov [final_size], ebx
|
||||
mov ebx, [eax + http_msg.content_ptr]
|
||||
mov [final_buffer], ebx
|
||||
|
||||
invoke HTTP_find_header, [identifier], sz_content_enc
|
||||
test eax, eax
|
||||
jz .no_deflate
|
||||
|
||||
; TODO: check if parameter equals "deflate"
|
||||
|
||||
DEBUGF 1, "deflating\n"
|
||||
|
||||
lea eax, [final_size]
|
||||
invoke deflate_unpack, [final_buffer], eax
|
||||
push eax
|
||||
mcall 68, 13, [final_buffer] ; Free the compressed data
|
||||
pop [final_buffer]
|
||||
|
||||
DEBUGF 1, "deflated size=%u bytes\n", [final_size]
|
||||
.no_deflate:
|
||||
|
||||
invoke HTTP_free, [identifier]
|
||||
mov [identifier], 0
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
save:
|
||||
cmp [final_buffer], 0
|
||||
je still
|
||||
|
||||
mcall 70, fileinfo
|
||||
|
||||
DEBUGF 1, "File saved\n"
|
||||
|
||||
test [silently], 0xff
|
||||
jnz exit
|
||||
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 0x80000000
|
||||
mcall 4, <10, frame_2.y+frame_2.height+7>, , download_complete
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
copy_file_name_path:
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @r
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12, 1 ; start window draw
|
||||
;-----------------------------------
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
;-----------------------------------
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 370>, <350, 170>, , 0, title
|
||||
;-----------------------------------
|
||||
; draw frames
|
||||
mov [frame_data.x],dword frame_1.x shl 16+frame_1.width
|
||||
mov [frame_data.y],dword frame_1.y shl 16+frame_1.height
|
||||
mov [frame_data.text_pointer],dword select_addr_text
|
||||
mov eax,[sc.work]
|
||||
mov [frame_data.font_backgr_color],eax
|
||||
mov eax,[sc.work_text]
|
||||
mov [frame_data.font_color],eax
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
mov [frame_data.x],dword frame_2.x shl 16+frame_2.width
|
||||
mov [frame_data.y],dword frame_2.y shl 16+frame_2.height
|
||||
mov [frame_data.text_pointer],dword select_path_text
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
; draw "url:" text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+10, frame_1.y+15>, , type_pls
|
||||
;-----------------------------------
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
stdcall [edit_box_draw], edit1
|
||||
;-----------------------------------
|
||||
; draw buttons
|
||||
mcall 8,<frame_1.x+frame_1.width-(68+15+50+15),68>,<frame_1.y+30,16>,22,[sc.work_button] ; reload
|
||||
mcall ,<frame_1.x+frame_1.width-(50+15),50>,<frame_1.y+30,16>, 24 ; stop
|
||||
|
||||
mcall , <frame_2.x+frame_2.width-(54+15),54>,<frame_2.y+30,16>,26 ; save
|
||||
;-----------------------------------
|
||||
; draw buttons text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+frame_1.width-(68+15+50+15)+10,frame_1.y+35>, , button_text.1
|
||||
mcall , <frame_1.x+frame_1.width-(50+15)+15,frame_1.y+35>, , button_text.2
|
||||
mcall , <frame_2.x+frame_2.width-(54+15)+10,frame_2.y+35>, , button_text.3
|
||||
|
||||
mcall 13,<frame_2.x+17,frame_2.width-15*2>,<frame_2.y+10,15>,0xffffff
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
|
||||
mcall 12, 2 ; end window redraw
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj', \
|
||||
archiver, 'archiver.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get, 'get' , \
|
||||
HTTP_receive, 'receive', \
|
||||
HTTP_find_header, 'find_header_field', \
|
||||
HTTP_free, 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
PathShow_prepare, 'PathShow_prepare', \
|
||||
PathShow_draw, 'PathShow_draw', \
|
||||
Frame_draw, 'frame_draw'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
|
||||
import archiver,\
|
||||
deflate_unpack, 'deflate_unpack'
|
||||
;---------------------------------------------------------------------
|
||||
fileinfo dd 2, 0, 0
|
||||
final_size dd 0
|
||||
final_buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
mouse_dd dd 0
|
||||
edit1 edit_box 295, 48, (frame_1.y+10), 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7
|
||||
editboxes_end:
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
include_debug_strings
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
type_pls db 'URL:', 0
|
||||
button_text:
|
||||
.1: db 'DOWNLOAD',0
|
||||
.2: db 'STOP',0
|
||||
.3: db 'SELECT', 0
|
||||
download_complete db 'FILE SAVED!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
silently db 0
|
||||
|
||||
sz_add_header db 'Accept-Encoding: deflate', 13, 10, 0 ; archiver.obj doesnt export unpack method for gzip yet :(
|
||||
sz_content_enc db 'content-encoding', 0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
select_addr_text db ' NETWORK ADDRESS: ',0
|
||||
select_path_text db ' PATH TO SAVE FILE: ',0
|
||||
;---------------------------------------------------------------------
|
||||
frame_data:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.x_size dw 0 ;+4
|
||||
.x_start dw 0 ;+6
|
||||
.y:
|
||||
.y_size dw 0 ;+8
|
||||
.y_start dw 0 ;+10
|
||||
.ext_fr_col dd 0x0 ;+12
|
||||
.int_fr_col dd 0xffffff ;+16
|
||||
.draw_text_flag dd 1 ;+20
|
||||
.text_pointer dd 0 ;+24
|
||||
.text_position dd 0 ;+28
|
||||
.font_number dd 0 ;+32
|
||||
.font_size_y dd 9 ;+36
|
||||
.font_color dd 0x0 ;+40
|
||||
.font_backgr_color dd 0xffffff ;+44
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw frame_2.y+14 ;+4
|
||||
.start_x dw frame_2.x+20 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw frame_2.width-35 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0 ;+20
|
||||
.background_color dd 0 ;+24
|
||||
.text_pointer dd fname_buf ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_path dd temp_dir_path ;+16
|
||||
.dir_default_path dd communication_area_default_path ;+20
|
||||
.start_path dd open_dialog_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd fname_buf ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 200 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 120 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path:
|
||||
db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter
|
||||
.1:
|
||||
db 'IMG',0
|
||||
db 'IMA',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
start_temp_file_name: db 'some.garbage',0
|
||||
|
||||
start_file_path: db '/sys/.download', 0
|
||||
;---------------------------------------------------------------------
|
||||
document_user db 'http://'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
;---------------------------------------------------------------------
|
||||
params rb URLMAXLEN
|
||||
;---------------------------------------------------------------------
|
||||
sc system_colors
|
||||
;---------------------------------------------------------------------
|
||||
identifier dd ?
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
temp_dir_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
fname_buf:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
rb 4096
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
;---------------------------------------------------------------------
|
||||
@@ -1,434 +1,432 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2015. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 1024
|
||||
BUFFERSIZE = 4096
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
format binary as ""
|
||||
;--------------------------------------
|
||||
frame_1:
|
||||
.x = 5
|
||||
.y = 10
|
||||
.width = 350
|
||||
.height = 55
|
||||
;--------------------------------------
|
||||
frame_2:
|
||||
.x = 5
|
||||
.y = 75
|
||||
.width = 350
|
||||
.height = 55
|
||||
;---------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END ; required memory
|
||||
dd stacktop ; esp
|
||||
dd params ; I_PARAM
|
||||
dd 0x0 ; I_Path
|
||||
;---------------------------------------------------------------------
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../../debug-fdo.inc'
|
||||
include '../../box_lib/trunk/box_lib.mac'
|
||||
include '../../http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz exit
|
||||
;---------------------------------------------------------------------
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
call copy_file_name_path
|
||||
|
||||
mov edi,fname_buf
|
||||
mov esi,start_file_path
|
||||
call copy_file_name_path
|
||||
|
||||
;OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
;---------------------------------------------------------------------
|
||||
; check parameters
|
||||
cmp byte[params], 0 ; no parameters ?
|
||||
je reset_events ; load the GUI
|
||||
|
||||
inc [silently]
|
||||
|
||||
download:
|
||||
call download_1
|
||||
|
||||
test [silently], 0xff
|
||||
jnz save
|
||||
|
||||
reset_events:
|
||||
DEBUGF 1, "resetting events\n"
|
||||
|
||||
; Report events
|
||||
; defaults + mouse
|
||||
mcall 40,EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER
|
||||
;---------------------------------------------------------------------
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
;; DEBUGF 1, "waiting for events\n"
|
||||
|
||||
mcall 10 ; wait here for event
|
||||
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
|
||||
cmp eax, EV_KEY
|
||||
je key
|
||||
|
||||
cmp eax, EV_BUTTON
|
||||
je button
|
||||
|
||||
cmp eax, EV_MOUSE
|
||||
je mouse
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall 2 ; read key
|
||||
|
||||
stdcall [edit_box_key], dword edit1
|
||||
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
|
||||
mcall 17 ; get id
|
||||
|
||||
cmp ah, 26
|
||||
jne @f
|
||||
; invoke OpenDialog
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
call draw_window
|
||||
jmp still
|
||||
@@:
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je exit
|
||||
|
||||
call download_1
|
||||
jmp save
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
exit:
|
||||
DEBUGF 1, "Exiting\n"
|
||||
invoke HTTP_free, [identifier] ; free buffer
|
||||
fail:
|
||||
or eax, -1 ; close this program
|
||||
mcall
|
||||
;---------------------------------------------------------------------
|
||||
download_1:
|
||||
DEBUGF 1, "Starting download\n"
|
||||
|
||||
invoke HTTP_get, document_user, 0, params, 0
|
||||
test eax, eax
|
||||
jz fail
|
||||
mov [identifier], eax
|
||||
|
||||
.loop:
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jnz .loop
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
save:
|
||||
mov ebp, [identifier]
|
||||
mov eax, [ebp + http_msg.content_received]
|
||||
mov [final_size], eax
|
||||
mov ebx, [ebp + http_msg.content_ptr]
|
||||
mov [final_buffer], ebx
|
||||
mcall 70, fileinfo
|
||||
|
||||
DEBUGF 1, "File saved\n"
|
||||
|
||||
test [silently], 0xff
|
||||
jnz exit
|
||||
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 0x80000000
|
||||
mcall 4, <10, frame_2.y+frame_2.height+7>, , download_complete
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
copy_file_name_path:
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @r
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12, 1 ; start window draw
|
||||
;-----------------------------------
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
;-----------------------------------
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 370>, <350, 170>, , 0, title
|
||||
;-----------------------------------
|
||||
; draw frames
|
||||
mov [frame_data.x],dword frame_1.x shl 16+frame_1.width
|
||||
mov [frame_data.y],dword frame_1.y shl 16+frame_1.height
|
||||
mov [frame_data.text_pointer],dword select_addr_text
|
||||
mov eax,[sc.work]
|
||||
mov [frame_data.font_backgr_color],eax
|
||||
mov eax,[sc.work_text]
|
||||
mov [frame_data.font_color],eax
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
mov [frame_data.x],dword frame_2.x shl 16+frame_2.width
|
||||
mov [frame_data.y],dword frame_2.y shl 16+frame_2.height
|
||||
mov [frame_data.text_pointer],dword select_path_text
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
; draw "url:" text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+10, frame_1.y+15>, , type_pls
|
||||
;-----------------------------------
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
stdcall [edit_box_draw], edit1
|
||||
;-----------------------------------
|
||||
; draw buttons
|
||||
mcall 8,<frame_1.x+frame_1.width-(68+15+50+15),68>,<frame_1.y+30,16>,22,[sc.work_button] ; reload
|
||||
mcall ,<frame_1.x+frame_1.width-(50+15),50>,<frame_1.y+30,16>, 24 ; stop
|
||||
|
||||
mcall , <frame_2.x+frame_2.width-(54+15),54>,<frame_2.y+30,16>,26 ; save
|
||||
;-----------------------------------
|
||||
; draw buttons text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+frame_1.width-(68+15+50+15)+10,frame_1.y+35>, , button_text.1
|
||||
mcall , <frame_1.x+frame_1.width-(50+15)+15,frame_1.y+35>, , button_text.2
|
||||
mcall , <frame_2.x+frame_2.width-(54+15)+10,frame_2.y+35>, , button_text.3
|
||||
|
||||
mcall 13,<frame_2.x+17,frame_2.width-15*2>,<frame_2.y+10,15>,0xffffff
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
|
||||
mcall 12, 2 ; end window redraw
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get , 'get', \
|
||||
HTTP_receive , 'receive', \
|
||||
HTTP_free , 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
PathShow_prepare, 'PathShow_prepare', \
|
||||
PathShow_draw, 'PathShow_draw', \
|
||||
Frame_draw, 'frame_draw'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
;---------------------------------------------------------------------
|
||||
fileinfo dd 2, 0, 0
|
||||
final_size dd 0
|
||||
final_buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
mouse_dd dd 0
|
||||
edit1 edit_box 295, 48, (frame_1.y+10), 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7
|
||||
editboxes_end:
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
include_debug_strings
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
type_pls db 'URL:', 0
|
||||
button_text:
|
||||
.1: db 'DOWNLOAD',0
|
||||
.2: db 'STOP',0
|
||||
.3: db 'SELECT', 0
|
||||
download_complete db 'FILE SAVED!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
silently db 0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
select_addr_text db ' NETWORK ADDRESS: ',0
|
||||
select_path_text db ' PATH TO SAVE FILE: ',0
|
||||
;---------------------------------------------------------------------
|
||||
frame_data:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.x_size dw 0 ;+4
|
||||
.x_start dw 0 ;+6
|
||||
.y:
|
||||
.y_size dw 0 ;+8
|
||||
.y_start dw 0 ;+10
|
||||
.ext_fr_col dd 0x0 ;+12
|
||||
.int_fr_col dd 0xffffff ;+16
|
||||
.draw_text_flag dd 1 ;+20
|
||||
.text_pointer dd 0 ;+24
|
||||
.text_position dd 0 ;+28
|
||||
.font_number dd 0 ;+32
|
||||
.font_size_y dd 9 ;+36
|
||||
.font_color dd 0x0 ;+40
|
||||
.font_backgr_color dd 0xffffff ;+44
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw frame_2.y+14 ;+4
|
||||
.start_x dw frame_2.x+20 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw frame_2.width-35 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0 ;+20
|
||||
.background_color dd 0 ;+24
|
||||
.text_pointer dd fname_buf ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_path dd temp_dir_path ;+16
|
||||
.dir_default_path dd communication_area_default_path ;+20
|
||||
.start_path dd open_dialog_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd fname_buf ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 200 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 120 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path:
|
||||
db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter
|
||||
.1:
|
||||
db 'IMG',0
|
||||
db 'IMA',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
start_temp_file_name: db 'some.garbage',0
|
||||
|
||||
start_file_path: db '/sys/.download', 0
|
||||
;---------------------------------------------------------------------
|
||||
document_user db 'http://'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
;---------------------------------------------------------------------
|
||||
params rb URLMAXLEN
|
||||
;---------------------------------------------------------------------
|
||||
sc system_colors
|
||||
;---------------------------------------------------------------------
|
||||
identifier dd ?
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
temp_dir_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
fname_buf:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
rb 4096
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2009-2015. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 1024
|
||||
BUFFERSIZE = 4096
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
format binary as ""
|
||||
;--------------------------------------
|
||||
frame_1:
|
||||
.x = 5
|
||||
.y = 10
|
||||
.width = 350
|
||||
.height = 55
|
||||
;--------------------------------------
|
||||
frame_2:
|
||||
.x = 5
|
||||
.y = 75
|
||||
.width = 350
|
||||
.height = 55
|
||||
;---------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END ; required memory
|
||||
dd stacktop ; esp
|
||||
dd params ; I_PARAM
|
||||
dd 0x0 ; I_Path
|
||||
;---------------------------------------------------------------------
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../../debug-fdo.inc'
|
||||
include '../../box_lib/box_lib.mac'
|
||||
include '../../http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
;---------------------------------------------------------------------
|
||||
START:
|
||||
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz exit
|
||||
;---------------------------------------------------------------------
|
||||
mov edi,filename_area
|
||||
mov esi,start_temp_file_name
|
||||
call copy_file_name_path
|
||||
|
||||
mov edi,fname_buf
|
||||
mov esi,start_file_path
|
||||
call copy_file_name_path
|
||||
|
||||
;OpenDialog initialisation
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Init]
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
;---------------------------------------------------------------------
|
||||
; check parameters
|
||||
cmp byte[params], 0 ; no parameters ?
|
||||
je reset_events ; load the GUI
|
||||
|
||||
inc [silently]
|
||||
|
||||
download:
|
||||
call download_1
|
||||
|
||||
test [silently], 0xff
|
||||
jnz save
|
||||
|
||||
reset_events:
|
||||
DEBUGF 1, "resetting events\n"
|
||||
|
||||
; Report events
|
||||
; defaults + mouse
|
||||
mcall 40,EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER
|
||||
;---------------------------------------------------------------------
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
;; DEBUGF 1, "waiting for events\n"
|
||||
|
||||
mcall 10 ; wait here for event
|
||||
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
|
||||
cmp eax, EV_KEY
|
||||
je key
|
||||
|
||||
cmp eax, EV_BUTTON
|
||||
je button
|
||||
|
||||
cmp eax, EV_MOUSE
|
||||
je mouse
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
key:
|
||||
mcall 2 ; read key
|
||||
|
||||
stdcall [edit_box_key], dword edit1
|
||||
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
button:
|
||||
|
||||
mcall 17 ; get id
|
||||
|
||||
cmp ah, 26
|
||||
jne @f
|
||||
; invoke OpenDialog
|
||||
push dword OpenDialog_data
|
||||
call [OpenDialog_Start]
|
||||
cmp [OpenDialog_data.status],1
|
||||
jne still
|
||||
|
||||
; prepare for PathShow
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_prepare]
|
||||
call draw_window
|
||||
jmp still
|
||||
@@:
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je exit
|
||||
|
||||
call download_1
|
||||
jmp save
|
||||
;---------------------------------------------------------------------
|
||||
mouse:
|
||||
stdcall [edit_box_mouse], edit1
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
exit:
|
||||
DEBUGF 1, "Exiting\n"
|
||||
invoke HTTP_free, [identifier] ; free buffer
|
||||
fail:
|
||||
or eax, -1 ; close this program
|
||||
mcall
|
||||
;---------------------------------------------------------------------
|
||||
download_1:
|
||||
DEBUGF 1, "Starting download\n"
|
||||
|
||||
invoke HTTP_get, document_user, 0, params, 0
|
||||
test eax, eax
|
||||
jz fail
|
||||
mov [identifier], eax
|
||||
|
||||
.loop:
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jnz .loop
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
save:
|
||||
mov ebp, [identifier]
|
||||
mov eax, [ebp + http_msg.content_received]
|
||||
mov [final_size], eax
|
||||
mov ebx, [ebp + http_msg.content_ptr]
|
||||
mov [final_buffer], ebx
|
||||
mcall 70, fileinfo
|
||||
|
||||
DEBUGF 1, "File saved\n"
|
||||
|
||||
test [silently], 0xff
|
||||
jnz exit
|
||||
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 0x80000000
|
||||
mcall 4, <10, frame_2.y+frame_2.height+7>, , download_complete
|
||||
|
||||
jmp still
|
||||
;---------------------------------------------------------------------
|
||||
copy_file_name_path:
|
||||
xor eax,eax
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test eax,eax
|
||||
jnz @r
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
draw_window:
|
||||
|
||||
mcall 12, 1 ; start window draw
|
||||
;-----------------------------------
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
;-----------------------------------
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 370>, <350, 170>, , 0, title
|
||||
;-----------------------------------
|
||||
; draw frames
|
||||
mov [frame_data.x],dword frame_1.x shl 16+frame_1.width
|
||||
mov [frame_data.y],dword frame_1.y shl 16+frame_1.height
|
||||
mov [frame_data.text_pointer],dword select_addr_text
|
||||
mov eax,[sc.work]
|
||||
mov [frame_data.font_backgr_color],eax
|
||||
mov eax,[sc.work_text]
|
||||
mov [frame_data.font_color],eax
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
mov [frame_data.x],dword frame_2.x shl 16+frame_2.width
|
||||
mov [frame_data.y],dword frame_2.y shl 16+frame_2.height
|
||||
mov [frame_data.text_pointer],dword select_path_text
|
||||
|
||||
push dword frame_data
|
||||
call [Frame_draw]
|
||||
;-----------------------------------
|
||||
; draw "url:" text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+10, frame_1.y+15>, , type_pls
|
||||
;-----------------------------------
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
stdcall [edit_box_draw], edit1
|
||||
;-----------------------------------
|
||||
; draw buttons
|
||||
mcall 8,<frame_1.x+frame_1.width-(68+15+50+15),68>,<frame_1.y+30,16>,22,[sc.work_button] ; reload
|
||||
mcall ,<frame_1.x+frame_1.width-(50+15),50>,<frame_1.y+30,16>, 24 ; stop
|
||||
|
||||
mcall , <frame_2.x+frame_2.width-(54+15),54>,<frame_2.y+30,16>,26 ; save
|
||||
;-----------------------------------
|
||||
; draw buttons text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 80000000h
|
||||
mcall 4, <frame_1.x+frame_1.width-(68+15+50+15)+10,frame_1.y+35>, , button_text.1
|
||||
mcall , <frame_1.x+frame_1.width-(50+15)+15,frame_1.y+35>, , button_text.2
|
||||
mcall , <frame_2.x+frame_2.width-(54+15)+10,frame_2.y+35>, , button_text.3
|
||||
|
||||
mcall 13,<frame_2.x+17,frame_2.width-15*2>,<frame_2.y+10,15>,0xffffff
|
||||
push dword PathShow_data_1
|
||||
call [PathShow_draw]
|
||||
|
||||
mcall 12, 2 ; end window redraw
|
||||
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get , 'get', \
|
||||
HTTP_receive , 'receive', \
|
||||
HTTP_free , 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
PathShow_prepare, 'PathShow_prepare', \
|
||||
PathShow_draw, 'PathShow_draw', \
|
||||
Frame_draw, 'frame_draw'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
;---------------------------------------------------------------------
|
||||
fileinfo dd 2, 0, 0
|
||||
final_size dd 0
|
||||
final_buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
mouse_dd dd 0
|
||||
edit1 edit_box 295, 48, (frame_1.y+10), 0xffffff, 0xff, 0x80ff, 0, 0x8000, URLMAXLEN, document_user, mouse_dd, ed_focus+ed_always_focus, 7, 7
|
||||
editboxes_end:
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
include_debug_strings
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
type_pls db 'URL:', 0
|
||||
button_text:
|
||||
.1: db 'DOWNLOAD',0
|
||||
.2: db 'STOP',0
|
||||
.3: db 'SELECT', 0
|
||||
download_complete db 'FILE SAVED!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
silently db 0
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
select_addr_text db ' NETWORK ADDRESS: ',0
|
||||
select_path_text db ' PATH TO SAVE FILE: ',0
|
||||
;---------------------------------------------------------------------
|
||||
frame_data:
|
||||
.type dd 0 ;+0
|
||||
.x:
|
||||
.x_size dw 0 ;+4
|
||||
.x_start dw 0 ;+6
|
||||
.y:
|
||||
.y_size dw 0 ;+8
|
||||
.y_start dw 0 ;+10
|
||||
.ext_fr_col dd 0x0 ;+12
|
||||
.int_fr_col dd 0xffffff ;+16
|
||||
.draw_text_flag dd 1 ;+20
|
||||
.text_pointer dd 0 ;+24
|
||||
.text_position dd 0 ;+28
|
||||
.font_number dd 0 ;+32
|
||||
.font_size_y dd 9 ;+36
|
||||
.font_color dd 0x0 ;+40
|
||||
.font_backgr_color dd 0xffffff ;+44
|
||||
;---------------------------------------------------------------------
|
||||
PathShow_data_1:
|
||||
.type dd 0 ;+0
|
||||
.start_y dw frame_2.y+14 ;+4
|
||||
.start_x dw frame_2.x+20 ;+6
|
||||
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
|
||||
.area_size_x dw frame_2.width-35 ;+10
|
||||
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
|
||||
.background_flag dd 0 ;+16
|
||||
.font_color dd 0 ;+20
|
||||
.background_color dd 0 ;+24
|
||||
.text_pointer dd fname_buf ;+28
|
||||
.work_area_pointer dd text_work_area ;+32
|
||||
.temp_text_length dd 0 ;+36
|
||||
;---------------------------------------------------------------------
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo ;+4
|
||||
.com_area_name dd communication_area_name ;+8
|
||||
.com_area dd 0 ;+12
|
||||
.opendir_path dd temp_dir_path ;+16
|
||||
.dir_default_path dd communication_area_default_path ;+20
|
||||
.start_path dd open_dialog_path ;+24
|
||||
.draw_window dd draw_window ;+28
|
||||
.status dd 0 ;+32
|
||||
.openfile_pach dd fname_buf ;+36
|
||||
.filename_area dd filename_area ;+40
|
||||
.filter_area dd Filter
|
||||
.x:
|
||||
.x_size dw 420 ;+48 ; Window X size
|
||||
.x_start dw 200 ;+50 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ;+52 ; Window y size
|
||||
.y_start dw 120 ;+54 ; Window Y position
|
||||
|
||||
communication_area_name:
|
||||
db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path:
|
||||
db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path:
|
||||
db '/sys',0
|
||||
|
||||
Filter:
|
||||
dd Filter.end - Filter
|
||||
.1:
|
||||
db 'IMG',0
|
||||
db 'IMA',0
|
||||
.end:
|
||||
db 0
|
||||
|
||||
start_temp_file_name: db 'some.garbage',0
|
||||
|
||||
start_file_path: db '/sys/.download', 0
|
||||
;---------------------------------------------------------------------
|
||||
document_user db 'http://'
|
||||
;---------------------------------------------------------------------
|
||||
IM_END:
|
||||
;---------------------------------------------------------------------
|
||||
params rb URLMAXLEN
|
||||
;---------------------------------------------------------------------
|
||||
sc system_colors
|
||||
;---------------------------------------------------------------------
|
||||
identifier dd ?
|
||||
;---------------------------------------------------------------------
|
||||
filename_area:
|
||||
rb 256
|
||||
;---------------------------------------------------------------------
|
||||
temp_dir_path:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
procinfo:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
fname_buf:
|
||||
rb 4096
|
||||
;---------------------------------------------------------------------
|
||||
text_work_area:
|
||||
rb 1024
|
||||
;---------------------------------------------------------------------
|
||||
rb 4096
|
||||
stacktop:
|
||||
;---------------------------------------------------------------------
|
||||
I_END:
|
||||
;---------------------------------------------------------------------
|
||||
File diff suppressed because it is too large.
Load diff
@@ -24,7 +24,7 @@ include '../../proc32.inc'
|
||||
include '../../macros.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../develop/info3ds/info_fun_float.inc'
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
|
||||
|
||||
+3274
-3269
File diff suppressed because it is too large.
Load diff
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;unz - распаковщик, использующий archiver.obj. Поддерживает zip и 7z.
|
||||
|
||||
;unz [-o output path] [-f file for unpack] [-f ...] [-h] file.zip
|
||||
@@ -42,7 +48,7 @@ include 'lang.inc' ; Language support for locales: ru_RU (CP866), es_ES, en_US.
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include "../../string.inc"
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../dll.inc'
|
||||
;include '../../debug.inc'
|
||||
include 'debug.inc'
|
||||
@@ -917,5 +923,3 @@ stackDlg:
|
||||
stack_top:
|
||||
|
||||
end_mem:
|
||||
|
||||
|
||||
+1439
-1433
File diff suppressed because it is too large.
Load diff
@@ -13,7 +13,7 @@ use32
|
||||
include '../../proc32.inc'
|
||||
include '../../macros.inc'
|
||||
include '../../dll.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
;include '../../system/board/debug.inc'
|
||||
|
||||
;;===Define_chapter============================================================================================================
|
||||
|
||||
@@ -49,7 +49,7 @@ include '../../proc32.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include 'le_pole.inc'
|
||||
include 'le_signal.inc'
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;
|
||||
; Screenshooter for Kolibri
|
||||
;
|
||||
@@ -22,7 +28,7 @@ format binary as ""
|
||||
|
||||
title equ 'Screenshooter v1.21' ; Заголовок окна
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../config.inc' ;for nightbuild
|
||||
include '../../proc32.inc'
|
||||
include '../../macros.inc'
|
||||
|
||||
+504
-498
File diff suppressed because it is too large.
Load diff
@@ -1,454 +1,454 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2014-2017. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; hidnplayr@kolibrios.org ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 65535
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
|
||||
format binary as ""
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END+0x1000 ; required memory
|
||||
dd I_END+0x1000 ; esp
|
||||
dd url
|
||||
dd 0x0 ; I_Path
|
||||
|
||||
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../dll.inc'
|
||||
include '../../debug-fdo.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
|
||||
|
||||
START:
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz mainloop.exit
|
||||
|
||||
; wanted events
|
||||
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER
|
||||
|
||||
; prepare filename buffers
|
||||
mov edi, fname_buf
|
||||
mov esi, download_file_path
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test al, al
|
||||
jnz @r
|
||||
|
||||
; Initialise OpenDialog
|
||||
invoke OpenDialog_Init, OpenDialog_data
|
||||
|
||||
; If user provided parameters, start download right away!
|
||||
cmp byte[url], 0
|
||||
jne display_url_and_download
|
||||
|
||||
mov [OpenDialog_data.draw_window], draw_window
|
||||
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
mainloop:
|
||||
mcall 10 ; wait here for event
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
cmp eax, EV_KEY
|
||||
je .key
|
||||
cmp eax, EV_BUTTON
|
||||
je .button
|
||||
cmp eax, EV_MOUSE
|
||||
je .mouse
|
||||
jmp mainloop
|
||||
|
||||
.key:
|
||||
mcall 2 ; read key
|
||||
invoke edit_box_key, edit1
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
jmp mainloop
|
||||
|
||||
.button:
|
||||
mcall 17 ; get id
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je .exit
|
||||
|
||||
cmp [btn_text], sz_download
|
||||
je download
|
||||
|
||||
cmp [btn_text], sz_open
|
||||
je open_file
|
||||
|
||||
.exit:
|
||||
mcall -1 ; exit
|
||||
|
||||
.mouse:
|
||||
invoke edit_box_mouse, edit1
|
||||
jmp mainloop
|
||||
|
||||
|
||||
open_file:
|
||||
mcall 70, fileopen
|
||||
jmp mainloop
|
||||
|
||||
display_url_and_download:
|
||||
xor al, al
|
||||
mov ecx, 4096
|
||||
mov edi, url
|
||||
repne scasb
|
||||
sub edi, url+1
|
||||
mov [edit1.size], edi
|
||||
|
||||
download:
|
||||
; Extract the filename from URL
|
||||
mov edi, url
|
||||
xor al, al
|
||||
mov ecx, URLMAXLEN
|
||||
repne scasb
|
||||
mov esi, edi
|
||||
dec esi
|
||||
dec esi
|
||||
std
|
||||
.loop:
|
||||
lodsb
|
||||
cmp al, '/'
|
||||
je .done
|
||||
test al, al
|
||||
jnz .loop
|
||||
.done:
|
||||
cld
|
||||
mov ecx, edi
|
||||
sub ecx, esi
|
||||
inc esi
|
||||
inc esi
|
||||
mov edi, filename_area
|
||||
rep movsb
|
||||
|
||||
; invoke OpenDialog
|
||||
invoke OpenDialog_Start, OpenDialog_data
|
||||
mcall 40, EVM_REDRAW + EVM_BUTTON + EVM_STACK
|
||||
call draw_window
|
||||
|
||||
; Create the local file
|
||||
mov [fileinfo], 2 ; create/write to file
|
||||
xor eax, eax
|
||||
mov [fileinfo.offset], eax
|
||||
mov [fileinfo.offset+4], eax
|
||||
mov [fileinfo.size], eax
|
||||
mcall 70, fileinfo
|
||||
test eax, eax
|
||||
jnz create_error
|
||||
|
||||
; Start the download
|
||||
invoke HTTP_get, url, 0, FLAG_STREAM or FLAG_REUSE_BUFFER, 0
|
||||
test eax, eax
|
||||
jz get_error
|
||||
|
||||
mov [identifier], eax
|
||||
mov [offset], 0
|
||||
mov [btn_text], sz_cancel
|
||||
mov [status], sz_downloading
|
||||
or [edit1.flags], ed_figure_only
|
||||
and [edit1.flags], not ed_focus
|
||||
push [sc.work]
|
||||
pop [edit1.color]
|
||||
call draw_window
|
||||
|
||||
jmp download_loop
|
||||
|
||||
get_error:
|
||||
mov [btn_text], sz_exit
|
||||
mov [status], sz_err_http
|
||||
jmp redraw
|
||||
|
||||
create_error:
|
||||
mov [btn_text], sz_exit
|
||||
mov [status], sz_err_create
|
||||
jmp redraw
|
||||
|
||||
download_loop:
|
||||
mcall 10
|
||||
cmp eax, EV_REDRAW
|
||||
je .redraw
|
||||
cmp eax, EV_BUTTON
|
||||
je .button
|
||||
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jz got_data
|
||||
jmp download_loop
|
||||
|
||||
.redraw:
|
||||
call draw_window
|
||||
jmp download_loop
|
||||
|
||||
.button:
|
||||
jmp http_free
|
||||
|
||||
got_data:
|
||||
mov ebp, [identifier]
|
||||
test [ebp + http_msg.flags], 0xffff0000 ; error?
|
||||
jnz http_error
|
||||
|
||||
cmp [fileinfo], 3 ; Did we write before?
|
||||
je .write
|
||||
|
||||
test [ebp + http_msg.flags], FLAG_CONTENT_LENGTH
|
||||
jz .first_write
|
||||
|
||||
mov eax, [ebp + http_msg.content_length]
|
||||
mov [pb.max], eax
|
||||
|
||||
DEBUGF 1, "new file size=%u\n", eax
|
||||
mov [fileinfo], 4 ; set end of file
|
||||
mov [fileinfo.offset], eax ; new file size
|
||||
mcall 70, fileinfo
|
||||
test eax, eax
|
||||
jnz write_error
|
||||
|
||||
|
||||
.first_write:
|
||||
mov [fileinfo], 3 ; write to existing file
|
||||
.write:
|
||||
mov ecx, [ebp + http_msg.content_received]
|
||||
sub ecx, [offset]
|
||||
jz .no_data ; more then 0 data bytes?
|
||||
|
||||
mov [fileinfo.size], ecx
|
||||
mov eax, [ebp + http_msg.content_ptr]
|
||||
mov [fileinfo.buffer], eax
|
||||
mov ebx, [offset]
|
||||
mov [fileinfo.offset], ebx
|
||||
DEBUGF 1, "Writing to disk: size=%u offset=%u\n", ecx, ebx
|
||||
mcall 70, fileinfo
|
||||
test eax, eax ; check error code
|
||||
jnz write_error
|
||||
cmp ebx, ecx ; check if all bytes were written to disk
|
||||
jne write_error
|
||||
|
||||
mov eax, [ebp + http_msg.content_received]
|
||||
mov [offset], eax
|
||||
mov [pb.value], eax
|
||||
|
||||
invoke progressbar_draw, pb
|
||||
|
||||
.no_data:
|
||||
test [ebp + http_msg.flags], FLAG_GOT_ALL_DATA
|
||||
jz download_loop
|
||||
|
||||
; Download completed successfully
|
||||
mov [status], sz_complete
|
||||
mov [pb.progress_color], 0x0000c800 ; green
|
||||
mov [btn_text], sz_open
|
||||
jmp http_free
|
||||
|
||||
write_error:
|
||||
mov [status], sz_err_full
|
||||
mov [pb.progress_color], 0x00c80000 ; red
|
||||
mov [btn_text], sz_exit
|
||||
jmp http_free
|
||||
|
||||
http_error:
|
||||
mov [status], sz_err_http
|
||||
mov [pb.progress_color], 0x00c80000 ; red
|
||||
mov [btn_text], sz_exit
|
||||
; jmp http_free
|
||||
|
||||
http_free:
|
||||
mcall 40, EVM_REDRAW + EVM_BUTTON
|
||||
push [ebp + http_msg.content_received]
|
||||
pop [pb.value]
|
||||
|
||||
mov ecx, [ebp + http_msg.content_ptr]
|
||||
test ecx, ecx
|
||||
jz @f
|
||||
mcall 68, 13 ; free the buffer
|
||||
@@:
|
||||
invoke HTTP_free, [identifier] ; free headers and connection
|
||||
jmp redraw
|
||||
|
||||
draw_window:
|
||||
mcall 12, 1 ; start window draw
|
||||
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 420>, <350, 120>, , 0, title
|
||||
|
||||
; draw button
|
||||
mcall 8, <320,75>, <50,24>, 22, [sc.work_button]
|
||||
|
||||
; draw button text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 90000000h
|
||||
mcall 4, <325,56>, , [btn_text]
|
||||
|
||||
; draw status text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 90000000h
|
||||
mcall 4, <10,70>, , [status]
|
||||
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
invoke edit_box_draw, edit1
|
||||
|
||||
cmp [identifier], 0
|
||||
je @f
|
||||
; draw progressbar
|
||||
invoke progressbar_draw, pb
|
||||
@@:
|
||||
mcall 12, 2 ; end window draw
|
||||
|
||||
dont_draw:
|
||||
ret
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get, 'get', \
|
||||
HTTP_receive, 'receive', \
|
||||
HTTP_free, 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
progressbar_draw, 'progressbar_draw', \
|
||||
progressbar_prog, 'progressbar_progress'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
|
||||
|
||||
fileinfo dd 2
|
||||
.offset dd 0, 0
|
||||
.size dd 0
|
||||
.buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
|
||||
fileopen dd 7
|
||||
dd 0 ; flags
|
||||
dd fname_buf ; parameters
|
||||
dd 0 ; reserved
|
||||
dd 0 ; reserved
|
||||
db "/sys/@open", 0 ; path
|
||||
|
||||
edit1 edit_box 400, 5, 10, 0xffffff, 0x0000ff, 0x0080ff, 0x000000, 0x90000000, URLMAXLEN, url, mouse_dd, ed_focus+ed_always_focus, 0, 0
|
||||
editboxes_end:
|
||||
|
||||
identifier dd 0
|
||||
btn_text dd sz_download
|
||||
status dd sz_null
|
||||
sz_download db 'Download', 0
|
||||
sz_cancel db ' Cancel ', 0
|
||||
sz_open db ' Open ', 0
|
||||
sz_exit db ' Exit ', 0
|
||||
|
||||
sz_null db 0
|
||||
sz_downloading db 'Downloading..', 0
|
||||
sz_complete db 'Download completed', 0
|
||||
sz_err_create db 'Could not create the local file!', 0
|
||||
sz_err_full db 'Disk full!', 0
|
||||
sz_err_http db 'HTTP error!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo
|
||||
.com_area_name dd communication_area_name
|
||||
.com_area dd 0
|
||||
.opendir_path dd temp_dir_path
|
||||
.dir_default_path dd communication_area_default_path
|
||||
.start_path dd open_dialog_path
|
||||
.draw_window dd dont_draw
|
||||
.status dd 0
|
||||
.openfile_patch dd fname_buf
|
||||
.filename_area dd filename_area
|
||||
.filter_area dd filter
|
||||
.x:
|
||||
.x_size dw 420 ; Window X size
|
||||
.x_start dw 200 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ; Window y size
|
||||
.y_start dw 140 ; Window Y position
|
||||
|
||||
communication_area_name db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path db '/sys',0
|
||||
|
||||
filter:
|
||||
dd 0
|
||||
db 0
|
||||
|
||||
pb:
|
||||
.value dd 0
|
||||
.left dd 5
|
||||
.top dd 45
|
||||
.width dd 300
|
||||
.height dd 16
|
||||
.style dd 1
|
||||
.min dd 0
|
||||
.max dd 0
|
||||
.back_color dd 0xefefef
|
||||
.progress_color dd 0xc8c8c8
|
||||
.frame_color dd 0x94aece
|
||||
.frame_color2 dd 0xffffff
|
||||
|
||||
include_debug_strings
|
||||
|
||||
download_file_path db '/tmp0/1/', 0
|
||||
|
||||
IM_END:
|
||||
|
||||
url rb URLMAXLEN
|
||||
sc system_colors
|
||||
offset dd ?
|
||||
mouse_dd dd ?
|
||||
|
||||
filename_area rb 256
|
||||
temp_dir_path rb 4096
|
||||
procinfo rb 1024
|
||||
fname_buf rb 4096
|
||||
text_work_area rb 1024
|
||||
|
||||
I_END:
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2014-2017. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; downloader.asm - HTTP client for KolibriOS ;;
|
||||
;; ;;
|
||||
;; hidnplayr@kolibrios.org ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
URLMAXLEN = 65535
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 1
|
||||
|
||||
|
||||
format binary as ""
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; header
|
||||
dd 0x01 ; header version
|
||||
dd START ; entry point
|
||||
dd IM_END ; image size
|
||||
dd I_END+0x1000 ; required memory
|
||||
dd I_END+0x1000 ; esp
|
||||
dd url
|
||||
dd 0x0 ; I_Path
|
||||
|
||||
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../dll.inc'
|
||||
include '../../debug-fdo.inc'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../develop/libraries/http/http.inc'
|
||||
|
||||
virtual at 0
|
||||
http_msg http_msg
|
||||
end virtual
|
||||
|
||||
|
||||
START:
|
||||
mcall 68, 11 ; init heap so we can allocate memory dynamically
|
||||
|
||||
; load libraries
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jnz mainloop.exit
|
||||
|
||||
; wanted events
|
||||
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER
|
||||
|
||||
; prepare filename buffers
|
||||
mov edi, fname_buf
|
||||
mov esi, download_file_path
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test al, al
|
||||
jnz @r
|
||||
|
||||
; Initialise OpenDialog
|
||||
invoke OpenDialog_Init, OpenDialog_data
|
||||
|
||||
; If user provided parameters, start download right away!
|
||||
cmp byte[url], 0
|
||||
jne display_url_and_download
|
||||
|
||||
mov [OpenDialog_data.draw_window], draw_window
|
||||
|
||||
redraw:
|
||||
call draw_window
|
||||
|
||||
mainloop:
|
||||
mcall 10 ; wait here for event
|
||||
cmp eax, EV_REDRAW
|
||||
je redraw
|
||||
cmp eax, EV_KEY
|
||||
je .key
|
||||
cmp eax, EV_BUTTON
|
||||
je .button
|
||||
cmp eax, EV_MOUSE
|
||||
je .mouse
|
||||
jmp mainloop
|
||||
|
||||
.key:
|
||||
mcall 2 ; read key
|
||||
invoke edit_box_key, edit1
|
||||
cmp ax, 13 shl 8
|
||||
je download
|
||||
jmp mainloop
|
||||
|
||||
.button:
|
||||
mcall 17 ; get id
|
||||
cmp ah, 1 ; button id=1 ?
|
||||
je .exit
|
||||
|
||||
cmp [btn_text], sz_download
|
||||
je download
|
||||
|
||||
cmp [btn_text], sz_open
|
||||
je open_file
|
||||
|
||||
.exit:
|
||||
mcall -1 ; exit
|
||||
|
||||
.mouse:
|
||||
invoke edit_box_mouse, edit1
|
||||
jmp mainloop
|
||||
|
||||
|
||||
open_file:
|
||||
mcall 70, fileopen
|
||||
jmp mainloop
|
||||
|
||||
display_url_and_download:
|
||||
xor al, al
|
||||
mov ecx, 4096
|
||||
mov edi, url
|
||||
repne scasb
|
||||
sub edi, url+1
|
||||
mov [edit1.size], edi
|
||||
|
||||
download:
|
||||
; Extract the filename from URL
|
||||
mov edi, url
|
||||
xor al, al
|
||||
mov ecx, URLMAXLEN
|
||||
repne scasb
|
||||
mov esi, edi
|
||||
dec esi
|
||||
dec esi
|
||||
std
|
||||
.loop:
|
||||
lodsb
|
||||
cmp al, '/'
|
||||
je .done
|
||||
test al, al
|
||||
jnz .loop
|
||||
.done:
|
||||
cld
|
||||
mov ecx, edi
|
||||
sub ecx, esi
|
||||
inc esi
|
||||
inc esi
|
||||
mov edi, filename_area
|
||||
rep movsb
|
||||
|
||||
; invoke OpenDialog
|
||||
invoke OpenDialog_Start, OpenDialog_data
|
||||
mcall 40, EVM_REDRAW + EVM_BUTTON + EVM_STACK
|
||||
call draw_window
|
||||
|
||||
; Create the local file
|
||||
mov [fileinfo], 2 ; create/write to file
|
||||
xor eax, eax
|
||||
mov [fileinfo.offset], eax
|
||||
mov [fileinfo.offset+4], eax
|
||||
mov [fileinfo.size], eax
|
||||
mcall 70, fileinfo
|
||||
test eax, eax
|
||||
jnz create_error
|
||||
|
||||
; Start the download
|
||||
invoke HTTP_get, url, 0, FLAG_STREAM or FLAG_REUSE_BUFFER, 0
|
||||
test eax, eax
|
||||
jz get_error
|
||||
|
||||
mov [identifier], eax
|
||||
mov [offset], 0
|
||||
mov [btn_text], sz_cancel
|
||||
mov [status], sz_downloading
|
||||
or [edit1.flags], ed_figure_only
|
||||
and [edit1.flags], not ed_focus
|
||||
push [sc.work]
|
||||
pop [edit1.color]
|
||||
call draw_window
|
||||
|
||||
jmp download_loop
|
||||
|
||||
get_error:
|
||||
mov [btn_text], sz_exit
|
||||
mov [status], sz_err_http
|
||||
jmp redraw
|
||||
|
||||
create_error:
|
||||
mov [btn_text], sz_exit
|
||||
mov [status], sz_err_create
|
||||
jmp redraw
|
||||
|
||||
download_loop:
|
||||
mcall 10
|
||||
cmp eax, EV_REDRAW
|
||||
je .redraw
|
||||
cmp eax, EV_BUTTON
|
||||
je .button
|
||||
|
||||
invoke HTTP_receive, [identifier]
|
||||
test eax, eax
|
||||
jz got_data
|
||||
jmp download_loop
|
||||
|
||||
.redraw:
|
||||
call draw_window
|
||||
jmp download_loop
|
||||
|
||||
.button:
|
||||
jmp http_free
|
||||
|
||||
got_data:
|
||||
mov ebp, [identifier]
|
||||
test [ebp + http_msg.flags], 0xffff0000 ; error?
|
||||
jnz http_error
|
||||
|
||||
cmp [fileinfo], 3 ; Did we write before?
|
||||
je .write
|
||||
|
||||
test [ebp + http_msg.flags], FLAG_CONTENT_LENGTH
|
||||
jz .first_write
|
||||
|
||||
mov eax, [ebp + http_msg.content_length]
|
||||
mov [pb.max], eax
|
||||
|
||||
DEBUGF 1, "new file size=%u\n", eax
|
||||
mov [fileinfo], 4 ; set end of file
|
||||
mov [fileinfo.offset], eax ; new file size
|
||||
mcall 70, fileinfo
|
||||
test eax, eax
|
||||
jnz write_error
|
||||
|
||||
|
||||
.first_write:
|
||||
mov [fileinfo], 3 ; write to existing file
|
||||
.write:
|
||||
mov ecx, [ebp + http_msg.content_received]
|
||||
sub ecx, [offset]
|
||||
jz .no_data ; more then 0 data bytes?
|
||||
|
||||
mov [fileinfo.size], ecx
|
||||
mov eax, [ebp + http_msg.content_ptr]
|
||||
mov [fileinfo.buffer], eax
|
||||
mov ebx, [offset]
|
||||
mov [fileinfo.offset], ebx
|
||||
DEBUGF 1, "Writing to disk: size=%u offset=%u\n", ecx, ebx
|
||||
mcall 70, fileinfo
|
||||
test eax, eax ; check error code
|
||||
jnz write_error
|
||||
cmp ebx, ecx ; check if all bytes were written to disk
|
||||
jne write_error
|
||||
|
||||
mov eax, [ebp + http_msg.content_received]
|
||||
mov [offset], eax
|
||||
mov [pb.value], eax
|
||||
|
||||
invoke progressbar_draw, pb
|
||||
|
||||
.no_data:
|
||||
test [ebp + http_msg.flags], FLAG_GOT_ALL_DATA
|
||||
jz download_loop
|
||||
|
||||
; Download completed successfully
|
||||
mov [status], sz_complete
|
||||
mov [pb.progress_color], 0x0000c800 ; green
|
||||
mov [btn_text], sz_open
|
||||
jmp http_free
|
||||
|
||||
write_error:
|
||||
mov [status], sz_err_full
|
||||
mov [pb.progress_color], 0x00c80000 ; red
|
||||
mov [btn_text], sz_exit
|
||||
jmp http_free
|
||||
|
||||
http_error:
|
||||
mov [status], sz_err_http
|
||||
mov [pb.progress_color], 0x00c80000 ; red
|
||||
mov [btn_text], sz_exit
|
||||
; jmp http_free
|
||||
|
||||
http_free:
|
||||
mcall 40, EVM_REDRAW + EVM_BUTTON
|
||||
push [ebp + http_msg.content_received]
|
||||
pop [pb.value]
|
||||
|
||||
mov ecx, [ebp + http_msg.content_ptr]
|
||||
test ecx, ecx
|
||||
jz @f
|
||||
mcall 68, 13 ; free the buffer
|
||||
@@:
|
||||
invoke HTTP_free, [identifier] ; free headers and connection
|
||||
jmp redraw
|
||||
|
||||
draw_window:
|
||||
mcall 12, 1 ; start window draw
|
||||
|
||||
; get system colors
|
||||
mcall 48, 3, sc, 40
|
||||
|
||||
; draw window
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, <50, 420>, <350, 120>, , 0, title
|
||||
|
||||
; draw button
|
||||
mcall 8, <320,75>, <50,24>, 22, [sc.work_button]
|
||||
|
||||
; draw button text
|
||||
mov ecx, [sc.work_button_text]
|
||||
or ecx, 90000000h
|
||||
mcall 4, <325,56>, , [btn_text]
|
||||
|
||||
; draw status text
|
||||
mov ecx, [sc.work_text]
|
||||
or ecx, 90000000h
|
||||
mcall 4, <10,70>, , [status]
|
||||
|
||||
; draw editbox
|
||||
edit_boxes_set_sys_color edit1, editboxes_end, sc
|
||||
invoke edit_box_draw, edit1
|
||||
|
||||
cmp [identifier], 0
|
||||
je @f
|
||||
; draw progressbar
|
||||
invoke progressbar_draw, pb
|
||||
@@:
|
||||
mcall 12, 2 ; end window draw
|
||||
|
||||
dont_draw:
|
||||
ret
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; Data area
|
||||
;-----------------------------------------------------------------------------
|
||||
align 4
|
||||
@IMPORT:
|
||||
|
||||
library lib_http, 'http.obj', \
|
||||
box_lib, 'box_lib.obj', \
|
||||
proc_lib, 'proc_lib.obj'
|
||||
|
||||
import lib_http, \
|
||||
HTTP_get, 'get', \
|
||||
HTTP_receive, 'receive', \
|
||||
HTTP_free, 'free'
|
||||
|
||||
import box_lib, \
|
||||
edit_box_draw, 'edit_box_draw', \
|
||||
edit_box_key, 'edit_box_key', \
|
||||
edit_box_mouse, 'edit_box_mouse', \
|
||||
progressbar_draw, 'progressbar_draw', \
|
||||
progressbar_prog, 'progressbar_progress'
|
||||
|
||||
import proc_lib, \
|
||||
OpenDialog_Init, 'OpenDialog_init', \
|
||||
OpenDialog_Start, 'OpenDialog_start'
|
||||
|
||||
|
||||
fileinfo dd 2
|
||||
.offset dd 0, 0
|
||||
.size dd 0
|
||||
.buffer dd 0
|
||||
db 0
|
||||
dd fname_buf
|
||||
|
||||
fileopen dd 7
|
||||
dd 0 ; flags
|
||||
dd fname_buf ; parameters
|
||||
dd 0 ; reserved
|
||||
dd 0 ; reserved
|
||||
db "/sys/@open", 0 ; path
|
||||
|
||||
edit1 edit_box 400, 5, 10, 0xffffff, 0x0000ff, 0x0080ff, 0x000000, 0x90000000, URLMAXLEN, url, mouse_dd, ed_focus+ed_always_focus, 0, 0
|
||||
editboxes_end:
|
||||
|
||||
identifier dd 0
|
||||
btn_text dd sz_download
|
||||
status dd sz_null
|
||||
sz_download db 'Download', 0
|
||||
sz_cancel db ' Cancel ', 0
|
||||
sz_open db ' Open ', 0
|
||||
sz_exit db ' Exit ', 0
|
||||
|
||||
sz_null db 0
|
||||
sz_downloading db 'Downloading..', 0
|
||||
sz_complete db 'Download completed', 0
|
||||
sz_err_create db 'Could not create the local file!', 0
|
||||
sz_err_full db 'Disk full!', 0
|
||||
sz_err_http db 'HTTP error!', 0
|
||||
title db 'HTTP Downloader', 0
|
||||
|
||||
OpenDialog_data:
|
||||
.type dd 1 ; Save
|
||||
.procinfo dd procinfo
|
||||
.com_area_name dd communication_area_name
|
||||
.com_area dd 0
|
||||
.opendir_path dd temp_dir_path
|
||||
.dir_default_path dd communication_area_default_path
|
||||
.start_path dd open_dialog_path
|
||||
.draw_window dd dont_draw
|
||||
.status dd 0
|
||||
.openfile_patch dd fname_buf
|
||||
.filename_area dd filename_area
|
||||
.filter_area dd filter
|
||||
.x:
|
||||
.x_size dw 420 ; Window X size
|
||||
.x_start dw 200 ; Window X position
|
||||
.y:
|
||||
.y_size dw 320 ; Window y size
|
||||
.y_start dw 140 ; Window Y position
|
||||
|
||||
communication_area_name db 'FFFFFFFF_open_dialog',0
|
||||
open_dialog_path db '/sys/File Managers/opendial',0
|
||||
communication_area_default_path db '/sys',0
|
||||
|
||||
filter:
|
||||
dd 0
|
||||
db 0
|
||||
|
||||
pb:
|
||||
.value dd 0
|
||||
.left dd 5
|
||||
.top dd 45
|
||||
.width dd 300
|
||||
.height dd 16
|
||||
.style dd 1
|
||||
.min dd 0
|
||||
.max dd 0
|
||||
.back_color dd 0xefefef
|
||||
.progress_color dd 0xc8c8c8
|
||||
.frame_color dd 0x94aece
|
||||
.frame_color2 dd 0xffffff
|
||||
|
||||
include_debug_strings
|
||||
|
||||
download_file_path db '/tmp0/1/', 0
|
||||
|
||||
IM_END:
|
||||
|
||||
url rb URLMAXLEN
|
||||
sc system_colors
|
||||
offset dd ?
|
||||
mouse_dd dd ?
|
||||
|
||||
filename_area rb 256
|
||||
temp_dir_path rb 4096
|
||||
procinfo rb 1024
|
||||
fname_buf rb 4096
|
||||
text_work_area rb 1024
|
||||
|
||||
I_END:
|
||||
@@ -1,10 +1,13 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
include '../../load_img.inc'
|
||||
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../load_lib.mac'
|
||||
|
||||
@use_library
|
||||
|
||||
|
||||
icon_tl_sys dd 0
|
||||
icon_tl_nod dd 0
|
||||
icon_buttons dd 0
|
||||
@@ -82,7 +85,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
or dword[tree1.style], 8 ;tl_cursor_pos_limited - restrict cursor move to existing nodes
|
||||
or dword[tree2.style], 8 ;tl_cursor_pos_limited
|
||||
|
||||
|
||||
; read icons
|
||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, str_icon_18,, 0
|
||||
or eax, eax
|
||||
@@ -228,7 +231,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
mcall SF_DEFINE_BUTTON, <TLIST2_X+TLIST_SZ-BT_SZ_X,BT_SZ_X>, <80,20>, 6, BT_COL
|
||||
; string "mkd"
|
||||
mcall SF_DRAW_TEXT, <TLIST2_X+TLIST_SZ-BT_SZ_X+5,80+5>, 0xb0000000+STR_COL, str_mkd
|
||||
|
||||
|
||||
; draw "cancel" button
|
||||
;mcall SF_DEFINE_BUTTON, <555,55>, <308,25>, 10, BT_COL
|
||||
; string "Cancel"
|
||||
@@ -243,7 +246,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
;--------------------------
|
||||
stdcall [tl_draw], tree1
|
||||
stdcall [tl_draw], tree2
|
||||
|
||||
|
||||
mov dword[wScr.all_redraw], 1
|
||||
stdcall [scrollbar_ver_draw], wScr
|
||||
|
||||
@@ -360,7 +363,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
@@:
|
||||
cmp ah, 1
|
||||
je .exit
|
||||
|
||||
|
||||
jmp .still
|
||||
|
||||
.print:
|
||||
@@ -456,7 +459,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
mov ecx, [esp]
|
||||
add ecx, buf_buffer2
|
||||
sub ecx, edi
|
||||
|
||||
|
||||
repne scasb
|
||||
|
||||
; check if the (last) entry is incomplete
|
||||
@@ -466,7 +469,7 @@ gui: ;//////////////////////////////////////////////////////////////////////////
|
||||
rep scasb
|
||||
test ecx, ecx
|
||||
jz .store_last_entry
|
||||
|
||||
|
||||
dec edx
|
||||
jnz @b
|
||||
|
||||
@@ -776,7 +779,7 @@ populate_local_tree_list: ;/////////////////////////////////////////////////////
|
||||
je .outer ; more BDFEs to come
|
||||
|
||||
.done:
|
||||
ret
|
||||
ret
|
||||
|
||||
|
||||
MIN_M_WND_H equ 500 ;
|
||||
@@ -894,7 +897,7 @@ search: ;///////////////////////////////////////////////////////////////////////
|
||||
;;------------------------------------------------------------------------------------------------;;
|
||||
;< al = 0 (not found) / 1 (found) ;;
|
||||
;;================================================================================================;;
|
||||
|
||||
|
||||
push ebx ecx edx esi edi
|
||||
; if length of haystack < length of needle
|
||||
cmp ecx, edx
|
||||
@@ -1077,7 +1080,7 @@ edit_volume edit_box TLIST_SZ-60, TLIST1_X, 80, 0xffffff, 0x94AECE, 0, \
|
||||
; editbox for search
|
||||
edit_search edit_box TLIST_SZ-30, TLIST2_X, 22, 0xffffff, 0x94AECE, 0, \
|
||||
0xAABBCC, 0x10000000, 99, filter,mouse_dd, 0
|
||||
|
||||
|
||||
; A subsidiary structure for scrolling
|
||||
align 4
|
||||
wScr:
|
||||
@@ -1200,7 +1203,7 @@ tedit0:
|
||||
.mode_color db 1 ;+195
|
||||
.mode_invis db 0 ;+196
|
||||
.gp_opt db 0 ;+197
|
||||
dd 0 ;.fun_on_key_ctrl_all dd but_ctrl_all ;+198
|
||||
dd 0 ;.fun_on_key_ctrl_all dd but_ctrl_all ;+198
|
||||
dd 0,0,0 ;reserved
|
||||
.buffer_size dd 4096 ;+214
|
||||
.fun_find_err dd 0 ;+218
|
||||
|
||||
+642
-642
File diff suppressed because it is too large.
Load diff
+1029
-1029
File diff suppressed because it is too large.
Load diff
+669
-669
File diff suppressed because it is too large.
Load diff
+616
-618
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -22,7 +22,7 @@ include '../../KOSfuncs.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include 'lang.inc'
|
||||
include 'cnc_control.inc'
|
||||
include '../../develop/info3ds/info_fun_float.inc'
|
||||
|
||||
@@ -15,7 +15,7 @@ include '../../KOSfuncs.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include 'lang.inc'
|
||||
include 'cnc_editor.inc'
|
||||
include '../../develop/info3ds/info_fun_float.inc'
|
||||
|
||||
+1807
-1807
File diff suppressed because it is too large.
Load diff
@@ -29,7 +29,7 @@ include '../../config.inc' ; for nightbuild
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../macros.inc'
|
||||
include '../../gui_patterns.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../load_lib.mac'
|
||||
@use_library
|
||||
|
||||
|
||||
@@ -1,415 +1,419 @@
|
||||
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0 ; указатель на строку с параметрами.
|
||||
dd 0;pathprog ;путь и имя проги
|
||||
|
||||
include "../../../macros.inc"
|
||||
include "../../../proc32.inc"
|
||||
include "API.INC"
|
||||
include "../../../dll.inc"
|
||||
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
;include '../../../KOSfuncs.inc'
|
||||
;include '../../../load_lib.mac'
|
||||
|
||||
start:
|
||||
mcall 68,11 ;инициализируем кучу
|
||||
test eax,eax
|
||||
jz Win1.Exit
|
||||
stdcall dll.Load, @IMPORT
|
||||
|
||||
|
||||
; mov ecx,1024
|
||||
; mov edi,pathprog
|
||||
; xor al,al
|
||||
;
|
||||
; repne scasb
|
||||
;
|
||||
; dec edi
|
||||
; mov esi,WordFile
|
||||
; @@:
|
||||
; lodsb
|
||||
; stosb
|
||||
; test al,al
|
||||
; jne @b
|
||||
|
||||
;GetFileInfo fStruc,pathprog,fInfo ;проверка на наличие файла
|
||||
;test eax,eax ;заодно и получу размер файла
|
||||
;je WordFileOK
|
||||
|
||||
;stdcall [mb_create],msgNotFound,mbThread
|
||||
;jmp Win1.Redraw
|
||||
|
||||
;WordFileOK:
|
||||
; stdcall mem.Alloc,dword [fInfo+32]
|
||||
; mov ebx,dword [fInfo+32]
|
||||
; mov [filBuffer],eax
|
||||
; add dword[fInfo+32],eax ;здесь хранится указатель на конец буфера
|
||||
; ReadFile fStruc,pathprog,ebx,eax,0
|
||||
; test eax,eax
|
||||
; jz Win1.Redraw
|
||||
;
|
||||
; add al,30h
|
||||
; mov [NumErr],al
|
||||
; stdcall [mb_create],msgNotFound1,mbThread
|
||||
;
|
||||
|
||||
|
||||
align 4
|
||||
Win1.Redraw:
|
||||
RedrawWinBeg
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,(524*10000h+500)
|
||||
mov ecx,(548*10000h+200)
|
||||
mov edx,73FFFFFFh
|
||||
mov edi,Win1.Caption
|
||||
int 40h ;окно с прозрачным фонoм
|
||||
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,[ThreadInfo+42h]
|
||||
inc ecx
|
||||
mov edx,clWhite
|
||||
int 40h ;а теперь не прозрачным:)
|
||||
|
||||
call Perevod ; в перерисовке сразу переводим введённое слово
|
||||
call NextPerev
|
||||
stdcall [edit_box_draw],EditIN
|
||||
RedrawWinEnd
|
||||
|
||||
align 4
|
||||
Win1.Events:
|
||||
WaitMessage
|
||||
dec eax
|
||||
jz Win1.Redraw
|
||||
dec eax
|
||||
jz Win1.Key
|
||||
dec eax
|
||||
jz Win1.ButtonPress
|
||||
|
||||
;stdcall [edit_box_mouse],EditIN
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.ButtonPress:
|
||||
GetButtonPressed
|
||||
|
||||
cmp ah,idbExit
|
||||
je Win1.Exit
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.Key:
|
||||
GetKeyPressed
|
||||
stdcall [edit_box_key],EditIN
|
||||
jmp Win1.FonRedraw
|
||||
|
||||
|
||||
Win1.Exit:
|
||||
|
||||
ExitProcess
|
||||
|
||||
Win1.FonRedraw: ;перерисовка области вывода
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,20
|
||||
shl ecx,16
|
||||
add ecx,[ThreadInfo+42h]
|
||||
sub ecx,19
|
||||
mov edx,clWhite
|
||||
int 40h
|
||||
|
||||
call Perevod
|
||||
call NextPerev
|
||||
jmp Win1.Events
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
Perevod: ;сам перевод
|
||||
mov edi,dict;[filBuffer]
|
||||
|
||||
Perev:
|
||||
xor ebx,ebx
|
||||
@@: ;сравнием исх. слово со словом под esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je endWord
|
||||
cmp [ebx+edi],al
|
||||
jne WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
endWord:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne WordNotFound
|
||||
|
||||
add edi,ebx
|
||||
dec edi ;пропускаем пробелы после английского слова
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
xor ebx,ebx
|
||||
CopyWord: ;копируем перевод в строку для вывода
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
OutText 7,25,perevText
|
||||
ret
|
||||
|
||||
WordNotFound: ;если слово не подошло
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp @b
|
||||
|
||||
NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp Perev
|
||||
endPerev:
|
||||
ret
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
NextPerev:
|
||||
mov ecx,Lines
|
||||
mov edi,dict;[filBuffer]
|
||||
LinePerev: ;цикл рисования строки
|
||||
xor ebx,ebx
|
||||
@@: ;сравнием исх. слово со словом под esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_endWord
|
||||
cmp [ebx+edi],al
|
||||
jne N_WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
N_endWord:
|
||||
cmp ebx,0
|
||||
jne N_Ppoisk
|
||||
ret
|
||||
|
||||
N_Ppoisk: ;поиск начала строки
|
||||
add edi,ebx
|
||||
@@:
|
||||
dec edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
;########пропускаем уже переведённое слово########
|
||||
xor ebx,ebx
|
||||
N_NoDouble:
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_Double
|
||||
cmp [ebx+edi],al
|
||||
jne N_NoDblOk
|
||||
inc ebx
|
||||
jmp N_NoDouble
|
||||
|
||||
N_Double:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne N_NoDblOk
|
||||
|
||||
add edi,ebx
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
add edi,2
|
||||
jmp LinePerev
|
||||
|
||||
N_NoDblOk: ;############вывод результатов####################
|
||||
xor ebx,ebx ;копируем результат
|
||||
N_CopyWord:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,20h
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
add edi,ebx
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 7,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
|
||||
xor ebx,ebx
|
||||
N_CopyPerev:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyPerev
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 127,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
loop @f ;недотягивается до LinePerev
|
||||
ret
|
||||
@@:
|
||||
jmp LinePerev
|
||||
|
||||
N_WordNotFound:
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je N_NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp @b
|
||||
|
||||
N_NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp LinePerev
|
||||
N_endPerev:
|
||||
ret
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;------DATA---------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
idbExit = 1
|
||||
|
||||
Lines = 16 ;количеств строк
|
||||
|
||||
clTheme = 080B0FFh
|
||||
|
||||
Win1.Caption db 'Dictionary ENG -> RUS',0
|
||||
Win1X = 524
|
||||
Win1Y = 548
|
||||
Win1W = 500
|
||||
Win1H = 200
|
||||
|
||||
Memo.X = 5
|
||||
Memo.Y = 20
|
||||
Memo.W = 400
|
||||
Memo.H = 370
|
||||
|
||||
EditIN edit_box 350,5,5,0FFFFFFh,06F9480h,0,00h,0,40,\
|
||||
text,mouse_dd,ed_focus,0,0
|
||||
|
||||
|
||||
|
||||
; msgNotFound:
|
||||
; dw 0
|
||||
; db 'Ошибка',0
|
||||
; db 'Файл dictionary.wrd не найден',0
|
||||
; db 'Ясно',0
|
||||
; db 0
|
||||
;
|
||||
; msgNotFound1:
|
||||
; dw 0
|
||||
; db '!!!',0
|
||||
; db 'Ошибка чтения '
|
||||
; NumErr: db 0
|
||||
; db 0
|
||||
; db 'Ясно',0
|
||||
; db 0
|
||||
;
|
||||
; WordFile db '.wrd',0
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
@IMPORT:
|
||||
library box_lib,'box_lib.obj',msgbox,'msgbox.obj'
|
||||
import box_lib,\
|
||||
edit_box_draw,'edit_box_draw',\
|
||||
edit_box_key,'edit_box_key';,\
|
||||
;edit_box_mouse,'edit_box_mouse'
|
||||
import msgbox,\
|
||||
mb_create,'mb_create'
|
||||
|
||||
dict:
|
||||
include 'dictionary.wrd'
|
||||
|
||||
SizeDict = $;-dict
|
||||
|
||||
|
||||
i_end:
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
;WordFP rb 1024
|
||||
; m1 dd 0
|
||||
;filBuffer rd 1
|
||||
|
||||
|
||||
ThreadInfo: rb 1024
|
||||
;pathprog
|
||||
mouse_dd rd 1
|
||||
text rb 40
|
||||
perevText rb 300
|
||||
;fStruc rb 30
|
||||
;fInfo rb 40
|
||||
mbThread rb 1024
|
||||
|
||||
|
||||
rb 4096
|
||||
mem:
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd mem ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd mem ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0 ; указатель на строку с параметрами.
|
||||
dd 0;pathprog ;путь и имя проги
|
||||
|
||||
include "../../../macros.inc"
|
||||
include "../../../proc32.inc"
|
||||
include "API.INC"
|
||||
include "../../../dll.inc"
|
||||
include '../../../develop/libraries/box_lib/box_lib.mac'
|
||||
;include '../../../KOSfuncs.inc'
|
||||
;include '../../../load_lib.mac'
|
||||
|
||||
start:
|
||||
mcall 68,11 ;инициализируем кучу
|
||||
test eax,eax
|
||||
jz Win1.Exit
|
||||
stdcall dll.Load, @IMPORT
|
||||
|
||||
|
||||
; mov ecx,1024
|
||||
; mov edi,pathprog
|
||||
; xor al,al
|
||||
;
|
||||
; repne scasb
|
||||
;
|
||||
; dec edi
|
||||
; mov esi,WordFile
|
||||
; @@:
|
||||
; lodsb
|
||||
; stosb
|
||||
; test al,al
|
||||
; jne @b
|
||||
|
||||
;GetFileInfo fStruc,pathprog,fInfo ;проверка на наличие файла
|
||||
;test eax,eax ;заодно и получу размер файла
|
||||
;je WordFileOK
|
||||
|
||||
;stdcall [mb_create],msgNotFound,mbThread
|
||||
;jmp Win1.Redraw
|
||||
|
||||
;WordFileOK:
|
||||
; stdcall mem.Alloc,dword [fInfo+32]
|
||||
; mov ebx,dword [fInfo+32]
|
||||
; mov [filBuffer],eax
|
||||
; add dword[fInfo+32],eax ;здесь хранится указатель на конец буфера
|
||||
; ReadFile fStruc,pathprog,ebx,eax,0
|
||||
; test eax,eax
|
||||
; jz Win1.Redraw
|
||||
;
|
||||
; add al,30h
|
||||
; mov [NumErr],al
|
||||
; stdcall [mb_create],msgNotFound1,mbThread
|
||||
;
|
||||
|
||||
|
||||
align 4
|
||||
Win1.Redraw:
|
||||
RedrawWinBeg
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,(524*10000h+500)
|
||||
mov ecx,(548*10000h+200)
|
||||
mov edx,73FFFFFFh
|
||||
mov edi,Win1.Caption
|
||||
int 40h ;окно с прозрачным фонoм
|
||||
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,[ThreadInfo+42h]
|
||||
inc ecx
|
||||
mov edx,clWhite
|
||||
int 40h ;а теперь не прозрачным:)
|
||||
|
||||
call Perevod ; в перерисовке сразу переводим введённое слово
|
||||
call NextPerev
|
||||
stdcall [edit_box_draw],EditIN
|
||||
RedrawWinEnd
|
||||
|
||||
align 4
|
||||
Win1.Events:
|
||||
WaitMessage
|
||||
dec eax
|
||||
jz Win1.Redraw
|
||||
dec eax
|
||||
jz Win1.Key
|
||||
dec eax
|
||||
jz Win1.ButtonPress
|
||||
|
||||
;stdcall [edit_box_mouse],EditIN
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.ButtonPress:
|
||||
GetButtonPressed
|
||||
|
||||
cmp ah,idbExit
|
||||
je Win1.Exit
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.Key:
|
||||
GetKeyPressed
|
||||
stdcall [edit_box_key],EditIN
|
||||
jmp Win1.FonRedraw
|
||||
|
||||
|
||||
Win1.Exit:
|
||||
|
||||
ExitProcess
|
||||
|
||||
Win1.FonRedraw: ;перерисовка области вывода
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,20
|
||||
shl ecx,16
|
||||
add ecx,[ThreadInfo+42h]
|
||||
sub ecx,19
|
||||
mov edx,clWhite
|
||||
int 40h
|
||||
|
||||
call Perevod
|
||||
call NextPerev
|
||||
jmp Win1.Events
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
Perevod: ;сам перевод
|
||||
mov edi,dict;[filBuffer]
|
||||
|
||||
Perev:
|
||||
xor ebx,ebx
|
||||
@@: ;сравнием исх. слово со словом под esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je endWord
|
||||
cmp [ebx+edi],al
|
||||
jne WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
endWord:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne WordNotFound
|
||||
|
||||
add edi,ebx
|
||||
dec edi ;пропускаем пробелы после английского слова
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
xor ebx,ebx
|
||||
CopyWord: ;копируем перевод в строку для вывода
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
OutText 7,25,perevText
|
||||
ret
|
||||
|
||||
WordNotFound: ;если слово не подошло
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp @b
|
||||
|
||||
NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp Perev
|
||||
endPerev:
|
||||
ret
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
NextPerev:
|
||||
mov ecx,Lines
|
||||
mov edi,dict;[filBuffer]
|
||||
LinePerev: ;цикл рисования строки
|
||||
xor ebx,ebx
|
||||
@@: ;сравнием исх. слово со словом под esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_endWord
|
||||
cmp [ebx+edi],al
|
||||
jne N_WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
N_endWord:
|
||||
cmp ebx,0
|
||||
jne N_Ppoisk
|
||||
ret
|
||||
|
||||
N_Ppoisk: ;поиск начала строки
|
||||
add edi,ebx
|
||||
@@:
|
||||
dec edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
;########пропускаем уже переведённое слово########
|
||||
xor ebx,ebx
|
||||
N_NoDouble:
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_Double
|
||||
cmp [ebx+edi],al
|
||||
jne N_NoDblOk
|
||||
inc ebx
|
||||
jmp N_NoDouble
|
||||
|
||||
N_Double:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne N_NoDblOk
|
||||
|
||||
add edi,ebx
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
add edi,2
|
||||
jmp LinePerev
|
||||
|
||||
N_NoDblOk: ;############вывод результатов####################
|
||||
xor ebx,ebx ;копируем результат
|
||||
N_CopyWord:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,20h
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
add edi,ebx
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 7,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
|
||||
xor ebx,ebx
|
||||
N_CopyPerev:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyPerev
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 127,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
loop @f ;недотягивается до LinePerev
|
||||
ret
|
||||
@@:
|
||||
jmp LinePerev
|
||||
|
||||
N_WordNotFound:
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je N_NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp @b
|
||||
|
||||
N_NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp LinePerev
|
||||
N_endPerev:
|
||||
ret
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;------DATA---------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
idbExit = 1
|
||||
|
||||
Lines = 16 ;количеств строк
|
||||
|
||||
clTheme = 080B0FFh
|
||||
|
||||
Win1.Caption db 'Dictionary ENG -> RUS',0
|
||||
Win1X = 524
|
||||
Win1Y = 548
|
||||
Win1W = 500
|
||||
Win1H = 200
|
||||
|
||||
Memo.X = 5
|
||||
Memo.Y = 20
|
||||
Memo.W = 400
|
||||
Memo.H = 370
|
||||
|
||||
EditIN edit_box 350,5,5,0FFFFFFh,06F9480h,0,00h,0,40,\
|
||||
text,mouse_dd,ed_focus,0,0
|
||||
|
||||
|
||||
|
||||
; msgNotFound:
|
||||
; dw 0
|
||||
; db 'Ошибка',0
|
||||
; db 'Файл dictionary.wrd не найден',0
|
||||
; db 'Ясно',0
|
||||
; db 0
|
||||
;
|
||||
; msgNotFound1:
|
||||
; dw 0
|
||||
; db '!!!',0
|
||||
; db 'Ошибка чтения '
|
||||
; NumErr: db 0
|
||||
; db 0
|
||||
; db 'Ясно',0
|
||||
; db 0
|
||||
;
|
||||
; WordFile db '.wrd',0
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
@IMPORT:
|
||||
library box_lib,'box_lib.obj',msgbox,'msgbox.obj'
|
||||
import box_lib,\
|
||||
edit_box_draw,'edit_box_draw',\
|
||||
edit_box_key,'edit_box_key';,\
|
||||
;edit_box_mouse,'edit_box_mouse'
|
||||
import msgbox,\
|
||||
mb_create,'mb_create'
|
||||
|
||||
dict:
|
||||
include 'dictionary.wrd'
|
||||
|
||||
SizeDict = $;-dict
|
||||
|
||||
|
||||
i_end:
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
;WordFP rb 1024
|
||||
; m1 dd 0
|
||||
;filBuffer rd 1
|
||||
|
||||
|
||||
ThreadInfo: rb 1024
|
||||
;pathprog
|
||||
mouse_dd rd 1
|
||||
text rb 40
|
||||
perevText rb 300
|
||||
;fStruc rb 30
|
||||
;fInfo rb 40
|
||||
mbThread rb 1024
|
||||
|
||||
|
||||
rb 4096
|
||||
mem:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,6 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; RTF READER FOR KOLIBRI >= 0.7.7.0
|
||||
; Written in pure assembler by Ivushkin Andrey aka Willow
|
||||
; Menu_bar and scroll_bar from box_lib provided by dunkaist
|
||||
@@ -62,7 +65,7 @@ AR_OFFSET equ 10
|
||||
|
||||
include '../../config.inc' ;for nightbuild
|
||||
include '../../macros.inc' ; Macros facilitate the life of assemblers!
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_lib.mac'
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ include '../../macros.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../system/skincfg/kglobals.inc'
|
||||
include '../../system/skincfg/unpacker.inc'
|
||||
include 'lang.inc'
|
||||
|
||||
@@ -17,7 +17,7 @@ include '../../proc32.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_img.inc'
|
||||
include '../../load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../system/skincfg/kglobals.inc'
|
||||
include '../../system/skincfg/unpacker.inc'
|
||||
include 'te_data.inc'
|
||||
|
||||
@@ -28,7 +28,7 @@ include 'string.inc'
|
||||
include '../../macros.inc'
|
||||
include 'ASPAPI.INC'
|
||||
;include 'editbox_ex.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
;include 'load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../dll.inc'
|
||||
|
||||
@@ -1 +1,709 @@
|
||||
; Run with OpenDialog ;
org 0
use32
STACK_SIZE equ 256
REDRAW_EVENT equ 1
KEY_EVENT equ 2
BUTTON_EVENT equ 3
MOUSE_EVENT equ 6
BUTTON_RUN equ 10
BUTTON_BROWSE equ 20
MENUET01 db 'MENUET01'
version dd 1
program.start dd start_
program.end dd data_
program.memory dd end_ + STACK_SIZE
program.stack dd end_ + STACK_SIZE
program.params dd 0
program.path dd 0
include 'lang.inc'
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
; ======================================================================= ;
start_:
mov byte [file_info], 7
; set.event
mov eax, 40
mov ebx, 39
int 64
push sz_box_lib
call load.library
mov [box_lib], eax
push dword[box_lib]
push sz_edit_box
call getprocaddress
mov [edit_box_draw], eax
push dword[box_lib]
push sz_edit_box_key
call getprocaddress
mov [edit_box_key], eax
push dword[box_lib]
push sz_edit_box_mouse
call getprocaddress
mov [edit_box_mouse], eax
push dword[box_lib]
push sz_edit_box_set_text
call getprocaddress
mov [edit_box_set_text], eax
push sz_proc_lib
call load.library
mov [proc_lib], eax
push dword[proc_lib]
push sz_OpenDialog_init
call getprocaddress
mov [opendialog_init], eax
push dword[proc_lib]
push sz_OpenDialog_start
call getprocaddress
mov [opendialog_start], eax
; memory.allocate:
mov eax, 68
mov ebx, 12
mov ecx, 4096 + 4096 + 4096
int 64
mov [od.procinfo], eax
add eax, 1024
mov [od.filename_area], eax
add eax, 4096 - 1024
mov [od.opendir_path], eax
add eax, 4096
mov [od.openfile_path], eax
push od
call [opendialog_init]
; get.screen.size
mov eax, 61
mov ebx, 1
int 64
mov [screen], eax
movzx eax, word[screen.width]
shr eax, 3
lea eax, [eax*2 + eax]
add eax, 90
mov [window.width], eax
; skin.height
mov eax, 48
mov ebx, 4
int 64
add eax, 100
mov [window.height], eax
movzx eax, word[screen.width]
sub eax, [window.width]
shr eax, 1
mov [window.left], eax
movzx eax, word[screen.height]
sub eax, [window.height]
sub eax, 100
mov [window.top], eax
mov eax, [window.width]
sub eax, 80
mov [edit1.width], eax
mov eax, [od.openfile_path]
mov [edit1.text], eax
call on_redraw
; ----------------------- ;
.loop:
; wait.event
mov eax, 10
int 64
cmp eax, REDRAW_EVENT
jne .check_key
call on_redraw
jmp .loop
; ----------------------- ;
.check_key:
cmp eax, KEY_EVENT
jne .check_button
mov eax, 2
int 64
cmp ah, 13
jne .no_key_enter
call on_button_run
jmp .loop
; ----------------------- ;
.no_key_enter:
cmp ah, 185
jne .no_key_insert
call on_button_browse
jmp .loop
.no_key_insert:
push edit1
call [edit_box_key]
jmp .loop
; ----------------------- ;
.check_button:
cmp eax, BUTTON_EVENT
jne .check_mouse
; get.button.number
mov eax, 17
int 64
cmp ah, 1
jne .check_button_run
; program.terminate
or eax, -1
int 64
; ----------------------- ;
.check_button_run:
cmp ah, BUTTON_RUN
jne .check_button_browse
call on_button_run
jmp .loop
; ----------------------- ;
.check_button_browse:
cmp ah, BUTTON_BROWSE
jne .loop
call on_button_browse
jmp .loop
; ----------------------- ;
.check_mouse:
cmp eax, MOUSE_EVENT
jne .loop
push edit1
call [edit_box_mouse]
jmp .loop
; ======================================================================= ;
on_button_run:
push dword[edit1.text]
call extractrunpathandparams
;file.run:
mov eax, 70
mov ebx, file_info
int 64
mov dl, byte[lastendpath]
mov ecx, [ptrlastendpath]
mov [ecx], dl
test eax, eax
jnge .error
mov [runresult], dword sz_Program_run_successfully
jmp .exit
.error:
; ----------------------- ;
.5:
cmp al, -5
jne .31
mov [runresult], dword sz_File_not_found
jmp .exit
; ----------------------- ;
.31:
cmp al, -31
jne .32
mov [runresult], dword sz_File_is_not_executable
jmp .exit
; ----------------------- ;
.32:
cmp al, -32
jne .10
mov [runresult], dword sz_Too_many_processes
jmp .exit
; ----------------------- ;
.10:
cmp al, -10
jne .30
mov [runresult], dword sz_Access_denied
jmp .exit
; ----------------------- ;
.30:
cmp al, -30
jne .unknown
mov [runresult], dword sz_Out_of_memory
jmp .exit
; ----------------------- ;
.unknown:
mov [runresult], dword sz_Unknown_error
; ----------------------- ;
.exit:
call on_redraw
ret
; ======================================================================= ;
on_button_browse:
push od
call [opendialog_start]
mov eax, [od.status]
test eax, eax
je .exit
;======== if space exist in filepath, then quote filepath
mov eax, [od.openfile_path]
; ----------------------- ;
.check_space:
cmp [eax], byte 0
je .no_space
cmp [eax], byte 32 ;space
je .space
inc eax
jmp .check_space
.space:
; ----------------------- ;
.find_end_zero:
inc eax
cmp [eax], byte 0
jne .find_end_zero
mov [eax + 2], byte 0
mov [eax + 1], byte 34 ; quote
; ----------------------- ;
.shift_path:
dec eax
mov dl, byte [eax ]
mov [eax + 1], dl
cmp eax, [od.openfile_path]
jneLine truncated
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; Run with OpenDialog ;
|
||||
|
||||
org 0
|
||||
use32
|
||||
|
||||
STACK_SIZE equ 256
|
||||
REDRAW_EVENT equ 1
|
||||
KEY_EVENT equ 2
|
||||
BUTTON_EVENT equ 3
|
||||
MOUSE_EVENT equ 6
|
||||
|
||||
BUTTON_RUN equ 10
|
||||
BUTTON_BROWSE equ 20
|
||||
|
||||
MENUET01 db 'MENUET01'
|
||||
version dd 1
|
||||
program.start dd start_
|
||||
program.end dd data_
|
||||
program.memory dd end_ + STACK_SIZE
|
||||
program.stack dd end_ + STACK_SIZE
|
||||
program.params dd 0
|
||||
program.path dd 0
|
||||
|
||||
include 'lang.inc'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
|
||||
; ======================================================================= ;
|
||||
start_:
|
||||
mov byte [file_info], 7
|
||||
; set.event
|
||||
mov eax, 40
|
||||
mov ebx, 39
|
||||
int 64
|
||||
|
||||
push sz_box_lib
|
||||
call load.library
|
||||
mov [box_lib], eax
|
||||
|
||||
push dword[box_lib]
|
||||
push sz_edit_box
|
||||
call getprocaddress
|
||||
mov [edit_box_draw], eax
|
||||
|
||||
push dword[box_lib]
|
||||
push sz_edit_box_key
|
||||
call getprocaddress
|
||||
mov [edit_box_key], eax
|
||||
|
||||
push dword[box_lib]
|
||||
push sz_edit_box_mouse
|
||||
call getprocaddress
|
||||
mov [edit_box_mouse], eax
|
||||
|
||||
push dword[box_lib]
|
||||
push sz_edit_box_set_text
|
||||
call getprocaddress
|
||||
mov [edit_box_set_text], eax
|
||||
|
||||
push sz_proc_lib
|
||||
call load.library
|
||||
mov [proc_lib], eax
|
||||
|
||||
push dword[proc_lib]
|
||||
push sz_OpenDialog_init
|
||||
call getprocaddress
|
||||
mov [opendialog_init], eax
|
||||
|
||||
push dword[proc_lib]
|
||||
push sz_OpenDialog_start
|
||||
call getprocaddress
|
||||
mov [opendialog_start], eax
|
||||
|
||||
|
||||
; memory.allocate:
|
||||
mov eax, 68
|
||||
mov ebx, 12
|
||||
mov ecx, 4096 + 4096 + 4096
|
||||
int 64
|
||||
|
||||
mov [od.procinfo], eax
|
||||
|
||||
add eax, 1024
|
||||
mov [od.filename_area], eax
|
||||
|
||||
add eax, 4096 - 1024
|
||||
mov [od.opendir_path], eax
|
||||
|
||||
add eax, 4096
|
||||
mov [od.openfile_path], eax
|
||||
|
||||
push od
|
||||
call [opendialog_init]
|
||||
|
||||
|
||||
; get.screen.size
|
||||
mov eax, 61
|
||||
mov ebx, 1
|
||||
int 64
|
||||
|
||||
mov [screen], eax
|
||||
movzx eax, word[screen.width]
|
||||
shr eax, 3
|
||||
lea eax, [eax*2 + eax]
|
||||
add eax, 90
|
||||
mov [window.width], eax
|
||||
|
||||
; skin.height
|
||||
mov eax, 48
|
||||
mov ebx, 4
|
||||
int 64
|
||||
|
||||
add eax, 100
|
||||
mov [window.height], eax
|
||||
|
||||
movzx eax, word[screen.width]
|
||||
sub eax, [window.width]
|
||||
shr eax, 1
|
||||
mov [window.left], eax
|
||||
|
||||
movzx eax, word[screen.height]
|
||||
sub eax, [window.height]
|
||||
sub eax, 100
|
||||
mov [window.top], eax
|
||||
|
||||
mov eax, [window.width]
|
||||
sub eax, 80
|
||||
mov [edit1.width], eax
|
||||
|
||||
mov eax, [od.openfile_path]
|
||||
mov [edit1.text], eax
|
||||
|
||||
|
||||
call on_redraw
|
||||
; ----------------------- ;
|
||||
.loop:
|
||||
; wait.event
|
||||
mov eax, 10
|
||||
int 64
|
||||
cmp eax, REDRAW_EVENT
|
||||
jne .check_key
|
||||
call on_redraw
|
||||
jmp .loop
|
||||
; ----------------------- ;
|
||||
.check_key:
|
||||
cmp eax, KEY_EVENT
|
||||
jne .check_button
|
||||
mov eax, 2
|
||||
int 64
|
||||
cmp ah, 13
|
||||
jne .no_key_enter
|
||||
call on_button_run
|
||||
jmp .loop
|
||||
; ----------------------- ;
|
||||
.no_key_enter:
|
||||
cmp ah, 185
|
||||
jne .no_key_insert
|
||||
call on_button_browse
|
||||
jmp .loop
|
||||
.no_key_insert:
|
||||
push edit1
|
||||
call [edit_box_key]
|
||||
jmp .loop
|
||||
; ----------------------- ;
|
||||
.check_button:
|
||||
cmp eax, BUTTON_EVENT
|
||||
jne .check_mouse
|
||||
; get.button.number
|
||||
mov eax, 17
|
||||
int 64
|
||||
cmp ah, 1
|
||||
jne .check_button_run
|
||||
; program.terminate
|
||||
or eax, -1
|
||||
int 64
|
||||
; ----------------------- ;
|
||||
.check_button_run:
|
||||
cmp ah, BUTTON_RUN
|
||||
jne .check_button_browse
|
||||
call on_button_run
|
||||
jmp .loop
|
||||
; ----------------------- ;
|
||||
.check_button_browse:
|
||||
cmp ah, BUTTON_BROWSE
|
||||
jne .loop
|
||||
call on_button_browse
|
||||
jmp .loop
|
||||
; ----------------------- ;
|
||||
.check_mouse:
|
||||
cmp eax, MOUSE_EVENT
|
||||
jne .loop
|
||||
push edit1
|
||||
call [edit_box_mouse]
|
||||
jmp .loop
|
||||
|
||||
|
||||
; ======================================================================= ;
|
||||
on_button_run:
|
||||
push dword[edit1.text]
|
||||
call extractrunpathandparams
|
||||
|
||||
;file.run:
|
||||
mov eax, 70
|
||||
mov ebx, file_info
|
||||
int 64
|
||||
|
||||
mov dl, byte[lastendpath]
|
||||
mov ecx, [ptrlastendpath]
|
||||
mov [ecx], dl
|
||||
|
||||
test eax, eax
|
||||
jnge .error
|
||||
mov [runresult], dword sz_Program_run_successfully
|
||||
jmp .exit
|
||||
|
||||
.error:
|
||||
; ----------------------- ;
|
||||
.5:
|
||||
cmp al, -5
|
||||
jne .31
|
||||
mov [runresult], dword sz_File_not_found
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.31:
|
||||
cmp al, -31
|
||||
jne .32
|
||||
mov [runresult], dword sz_File_is_not_executable
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.32:
|
||||
cmp al, -32
|
||||
jne .10
|
||||
mov [runresult], dword sz_Too_many_processes
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.10:
|
||||
cmp al, -10
|
||||
jne .30
|
||||
mov [runresult], dword sz_Access_denied
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.30:
|
||||
cmp al, -30
|
||||
jne .unknown
|
||||
mov [runresult], dword sz_Out_of_memory
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.unknown:
|
||||
mov [runresult], dword sz_Unknown_error
|
||||
; ----------------------- ;
|
||||
.exit:
|
||||
call on_redraw
|
||||
ret
|
||||
|
||||
; ======================================================================= ;
|
||||
on_button_browse:
|
||||
push od
|
||||
call [opendialog_start]
|
||||
|
||||
mov eax, [od.status]
|
||||
test eax, eax
|
||||
je .exit
|
||||
|
||||
;======== if space exist in filepath, then quote filepath
|
||||
mov eax, [od.openfile_path]
|
||||
; ----------------------- ;
|
||||
.check_space:
|
||||
cmp [eax], byte 0
|
||||
je .no_space
|
||||
cmp [eax], byte 32 ;space
|
||||
je .space
|
||||
inc eax
|
||||
jmp .check_space
|
||||
.space:
|
||||
; ----------------------- ;
|
||||
.find_end_zero:
|
||||
inc eax
|
||||
cmp [eax], byte 0
|
||||
jne .find_end_zero
|
||||
mov [eax + 2], byte 0
|
||||
mov [eax + 1], byte 34 ; quote
|
||||
; ----------------------- ;
|
||||
.shift_path:
|
||||
dec eax
|
||||
|
||||
mov dl, byte [eax ]
|
||||
mov [eax + 1], dl
|
||||
|
||||
cmp eax, [od.openfile_path]
|
||||
jne .shift_path
|
||||
mov [eax ], byte 34 ; quote
|
||||
|
||||
.no_space:
|
||||
;=================================
|
||||
|
||||
push dword[od.openfile_path]
|
||||
push edit1
|
||||
call [edit_box_set_text]
|
||||
; ----------------------- ;
|
||||
.exit:
|
||||
ret
|
||||
|
||||
|
||||
; ======================================================================= ;
|
||||
on_redraw:
|
||||
; redraw.start
|
||||
mov eax, 12
|
||||
mov ebx, 1
|
||||
int 64
|
||||
; get.standart.colors
|
||||
mov eax, 48
|
||||
mov ebx, 3
|
||||
mov ecx, sc
|
||||
mov edx, 40
|
||||
int 64
|
||||
|
||||
mov eax, [sc.work_graph]
|
||||
mov [edit1.shift_color], eax
|
||||
|
||||
mov eax, [sc.work_graph]
|
||||
mov [edit1.focus_border_color], eax
|
||||
|
||||
mov eax, [sc.frames]
|
||||
mov [edit1.blur_border_color], eax
|
||||
|
||||
mov eax, [sc.work_text]
|
||||
bts eax, 28
|
||||
mov [edit1.text_color], eax
|
||||
|
||||
; draw.window
|
||||
xor eax, eax
|
||||
mov ebx, [window.left]
|
||||
shl ebx, 16
|
||||
add ebx, [window.width]
|
||||
mov ecx, [window.top]
|
||||
shl ecx, 16
|
||||
add ecx, [window.height]
|
||||
mov edx, [sc.work]
|
||||
or edx, 34000000h
|
||||
mov edi, title
|
||||
int 64
|
||||
|
||||
push 5
|
||||
push 5
|
||||
push sz_Type_name_of_program
|
||||
push dword [sc.work_text]
|
||||
call draw.text
|
||||
; ====================| browse button |====================
|
||||
push 20
|
||||
mov eax, [window.width]
|
||||
sub eax, 70
|
||||
push eax
|
||||
push 26
|
||||
push 52
|
||||
push 21
|
||||
call draw.button
|
||||
|
||||
mov eax, [window.width]
|
||||
sub eax, 56
|
||||
push eax
|
||||
push 29
|
||||
push sz_browse
|
||||
push dword [sc.work_button_text]
|
||||
call draw.text
|
||||
; ====================| run button |====================
|
||||
push 10
|
||||
push 5
|
||||
push 52
|
||||
mov eax, [window.width]
|
||||
sub eax, 22
|
||||
push eax
|
||||
push 21
|
||||
call draw.button
|
||||
|
||||
mov eax, [window.width]
|
||||
shr eax, 1
|
||||
sub eax, 40
|
||||
push eax
|
||||
push 55
|
||||
push sz_run
|
||||
push dword [sc.work_button_text]
|
||||
call draw.text
|
||||
; =====================================================
|
||||
push 5
|
||||
push 80
|
||||
push dword[runresult]
|
||||
push dword [sc.work_text]
|
||||
call draw.text
|
||||
|
||||
push edit1
|
||||
call [edit_box_draw]
|
||||
|
||||
; redraw.finish
|
||||
mov eax, 12
|
||||
mov ebx, 2
|
||||
int 64
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; ======================================================================= ;
|
||||
extractrunpathandparams:
|
||||
xor ecx, ecx
|
||||
|
||||
mov eax, [esp + 4]
|
||||
mov [runpath], eax
|
||||
|
||||
movzx eax, byte [eax]
|
||||
cmp eax, 34
|
||||
jne .start_without_quote
|
||||
|
||||
inc ecx
|
||||
; ----------------------- ;
|
||||
.loop1:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
cmp eax, 34
|
||||
jne .not_quote
|
||||
|
||||
mov eax, [runpath]
|
||||
mov [eax + ecx], byte 0
|
||||
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [ptrlastendpath], eax
|
||||
mov [lastendpath], byte 34
|
||||
inc ecx
|
||||
; ----------------------- ;
|
||||
.skip_space1:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
cmp al, 32
|
||||
jne .skipped1
|
||||
inc ecx
|
||||
jmp .skip_space1
|
||||
; ----------------------- ;
|
||||
.skipped1:
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [runparams], eax
|
||||
inc dword [runpath]
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.not_quote:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
|
||||
test eax, eax
|
||||
jne .not_zero1
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [runparams], eax
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [ptrlastendpath], eax
|
||||
mov [lastendpath], byte 0
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.not_zero1:
|
||||
inc ecx
|
||||
jmp .loop1
|
||||
; ----------------------- ;
|
||||
.start_without_quote:
|
||||
; ----------------------- ;
|
||||
.loop2:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
cmp eax, 32
|
||||
jne .not_space
|
||||
|
||||
mov eax, [runpath]
|
||||
mov [eax + ecx], byte 0
|
||||
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [ptrlastendpath], eax
|
||||
mov [lastendpath], byte 32
|
||||
inc ecx
|
||||
; ----------------------- ;
|
||||
.skip_space2:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
cmp al, 32
|
||||
jne .skipped2
|
||||
inc ecx
|
||||
jmp .skip_space2
|
||||
; ----------------------- ;
|
||||
.skipped2:
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [runparams], eax
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.not_space:
|
||||
mov eax, [runpath]
|
||||
movzx eax, byte [eax + ecx]
|
||||
|
||||
test eax, eax
|
||||
jne .not_zero2
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [runparams], eax
|
||||
mov eax, [runpath]
|
||||
add eax, ecx
|
||||
mov [ptrlastendpath], eax
|
||||
mov [lastendpath], byte 0
|
||||
jmp .exit
|
||||
; ----------------------- ;
|
||||
.not_zero2:
|
||||
inc ecx
|
||||
jmp .loop2
|
||||
; ----------------------- ;
|
||||
.exit:
|
||||
ret 4
|
||||
|
||||
; ======================================================================= ;
|
||||
draw.button:
|
||||
mov eax, 8
|
||||
mov ebx, [esp + 16]
|
||||
shl ebx, 16
|
||||
add ebx, [esp + 8]
|
||||
mov ecx, [esp + 12]
|
||||
shl ecx, 16
|
||||
add ecx, [esp + 4]
|
||||
mov edx, [esp + 20]
|
||||
mov esi, [sc.work_button]
|
||||
int 64
|
||||
ret 20
|
||||
; ======================================================================= ;
|
||||
draw.text:
|
||||
mov eax, 4
|
||||
mov ebx, [esp + 16]
|
||||
shl ebx, 16
|
||||
add ebx, [esp + 12]
|
||||
mov ecx, [esp + 4]
|
||||
or ecx, 90000000h
|
||||
mov edx, [esp + 8]
|
||||
int 64
|
||||
ret 16
|
||||
; ======================================================================= ;
|
||||
load.library:
|
||||
mov eax, 68
|
||||
mov ebx, 19
|
||||
mov ecx, [esp + 4]
|
||||
int 64
|
||||
ret 4
|
||||
; ======================================================================= ;
|
||||
getprocaddress:
|
||||
mov edx, [esp + 8] ; hlib
|
||||
xor eax, eax
|
||||
test edx, edx ; If hlib = 0 then goto .end
|
||||
jz .end
|
||||
; ----------------------- ;
|
||||
.next:
|
||||
cmp [edx], dword 0 ; If end of export table then goto .end
|
||||
jz .end
|
||||
|
||||
xor eax, eax
|
||||
mov esi, [edx]
|
||||
mov edi, [esp + 4] ; name
|
||||
; ----------------------- ;
|
||||
.next_:
|
||||
lodsb
|
||||
scasb
|
||||
jne .fail
|
||||
or al, al
|
||||
jnz .next_
|
||||
jmp .ok
|
||||
; ----------------------- ;
|
||||
.fail:
|
||||
add edx, 8
|
||||
jmp .next
|
||||
; ----------------------- ;
|
||||
.ok: ; return address
|
||||
mov eax, [edx + 4]
|
||||
; ----------------------- ;
|
||||
.end:
|
||||
ret 8
|
||||
|
||||
data_:
|
||||
|
||||
sz_box_lib db "/sys/lib/box_lib.obj",0
|
||||
sz_edit_box db "edit_box",0
|
||||
sz_edit_box_key db "edit_box_key",0
|
||||
sz_edit_box_mouse db "edit_box_mouse",0
|
||||
sz_edit_box_set_text db "edit_box_set_text",0
|
||||
|
||||
sz_proc_lib db "/sys/lib/proc_lib.obj",0
|
||||
sz_OpenDialog_init db "OpenDialog_init",0
|
||||
sz_OpenDialog_start db "OpenDialog_start",0
|
||||
sz_FFFFFFFF_open_dialog db "FFFFFFFF_open_dialog",0
|
||||
sz_SYS db "/sys",0
|
||||
sz_opendial_path db "/sys/File managers/opendial",0
|
||||
|
||||
if lang eq it_IT
|
||||
sz_Program_run_successfully db "Programma eseguito correttamente",0
|
||||
sz_File_not_found db "File non trovato",0
|
||||
sz_File_is_not_executable db "File non eseguibile",0
|
||||
sz_Too_many_processes db "Troppi processi",0
|
||||
sz_Access_denied db "Accesso negato",0
|
||||
sz_Out_of_memory db "Out of memory",0
|
||||
sz_Unknown_error db "Errore sconosciuto",0
|
||||
sz_Type_name_of_program db "Digita il nome del programma per eseguirlo",0
|
||||
sz_run db " Esegui",0
|
||||
sz_browse db "Browse",0
|
||||
title db "Esegui",0
|
||||
else if lang eq ru_RU
|
||||
sz_Program_run_successfully db "Программа запущена успешно",0
|
||||
sz_File_not_found db "Файл не найден",0
|
||||
sz_File_is_not_executable db "Файл не является исполняемым",0
|
||||
sz_Too_many_processes db "Слишком много процессов",0
|
||||
sz_Access_denied db "Доступ запрещен",0
|
||||
sz_Out_of_memory db "Недостаточно памяти",0
|
||||
sz_Unknown_error db "Неизвестная ошибка",0
|
||||
sz_Type_name_of_program db "Введите название программы",0
|
||||
sz_run db "Запустить",0
|
||||
sz_browse db "...",0
|
||||
title db "Запуск программы",0
|
||||
else
|
||||
sz_Program_run_successfully db "Program run successfully",0
|
||||
sz_File_not_found db "File not found",0
|
||||
sz_File_is_not_executable db "File is not executable",0
|
||||
sz_Too_many_processes db "Too many processes",0
|
||||
sz_Access_denied db "Access denied",0
|
||||
sz_Out_of_memory db "Out of memory",0
|
||||
sz_Unknown_error db "Unknown error",0
|
||||
sz_Type_name_of_program db "Type name of program to run",0
|
||||
sz_run db " Run",0
|
||||
sz_browse db "...",0
|
||||
title db "Run",0
|
||||
end if
|
||||
|
||||
align 4
|
||||
od:
|
||||
.mode dd 0
|
||||
.procinfo dd 0
|
||||
.com_area_name dd sz_FFFFFFFF_open_dialog
|
||||
.com_area dd 0
|
||||
.opendir_path dd 0
|
||||
.dir_default_path dd sz_SYS
|
||||
.start_path dd sz_opendial_path
|
||||
.draw_window dd on_redraw
|
||||
.status dd 0
|
||||
.openfile_path dd 0
|
||||
.filename_area dd 0
|
||||
.filter_area dd filefilter
|
||||
.x_size dw 414
|
||||
.x_start dw 0
|
||||
.y_size dw 414
|
||||
.y_start dw 0
|
||||
|
||||
runresult dd sz_empty
|
||||
|
||||
edit1 edit_box 0, 5, 26, 0ffffffh, 0, 0, 0, 0, 4096, 0, 0, 4002h
|
||||
|
||||
box_lib dd ?
|
||||
proc_lib dd ?
|
||||
filefilter dd ?
|
||||
ptrlastendpath dd ?
|
||||
edit_box_draw dd ?
|
||||
edit_box_key dd ?
|
||||
edit_box_mouse dd ?
|
||||
edit_box_set_text dd ?
|
||||
opendialog_init dd ?
|
||||
opendialog_start dd ?
|
||||
|
||||
sc:
|
||||
.frames dd ?
|
||||
.grab dd ?
|
||||
.grab_button dd ?
|
||||
.grab_button_text dd ?
|
||||
.grab_text dd ?
|
||||
.work dd ?
|
||||
.work_button dd ?
|
||||
.work_button_text dd ?
|
||||
.work_text dd ?
|
||||
.work_graph dd ?
|
||||
|
||||
window:
|
||||
.left dd ?
|
||||
.top dd ?
|
||||
.width dd ?
|
||||
.height dd ?
|
||||
|
||||
screen:
|
||||
.height dw ?
|
||||
.width dw ?
|
||||
|
||||
file_info:
|
||||
dd ?
|
||||
dd ?
|
||||
runparams:
|
||||
dd ?
|
||||
dd ?
|
||||
dd ?
|
||||
db ?
|
||||
runpath:
|
||||
dd ?
|
||||
|
||||
lastendpath db ?
|
||||
sz_empty db ?
|
||||
|
||||
align 4
|
||||
end_:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -21,7 +21,7 @@
|
||||
;-------------------------------------------------------------------------------
|
||||
include "lang.inc" ; Language support for locales (UTF-8): de_DE, et_EE, ru_RU, it_IT, en_US.
|
||||
include "../../macros.inc"
|
||||
include "../../develop/libraries/box_lib/trunk/box_lib.mac"
|
||||
include "../../develop/libraries/box_lib/box_lib.mac"
|
||||
include "../../KOSfuncs.inc"
|
||||
include "../../load_lib.mac"
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -46,7 +51,7 @@ include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../dll.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;for uses checkBox and editBox
|
||||
include '../../develop/libraries/box_lib/box_lib.mac' ;for uses checkBox and editBox
|
||||
include '../../load_lib.mac'
|
||||
@use_library
|
||||
|
||||
|
||||
@@ -41,12 +41,12 @@ SECONDARY_CHANNEL equ 0x177
|
||||
; Fnc 01: 10-1,14-1,18-1,1c-1,BMA-0x18e1,0x18d1
|
||||
; Регистр по смещению 0х10 для функции 02 содержит 0x1c01 (порты 0х1с00-0х1с07)
|
||||
|
||||
include 'lang.inc' ; language support
|
||||
include 'lang.inc' ; Language support for locales: it_IT, en_US.
|
||||
|
||||
; Режимы Legacy, Native и пр. меняются через BIOS.
|
||||
include '../../config.inc' ;for nightbuild
|
||||
include '../../macros.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../KOSfuncs.inc'
|
||||
include '../../load_lib.mac'
|
||||
@use_library
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
ICON_STRIP equ '/sys/icons32.png'
|
||||
ICON_INI equ '/sys/settings/icon.ini'
|
||||
ICON_SIZE equ 68 ;размер области для иконки с надписью
|
||||
@@ -38,7 +44,7 @@ BegData equ fiStdIco.point
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
include '../../dll.inc'
|
||||
include '../../debug.inc'
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page Windows 1251 - Cyrillic
|
||||
|
||||
|
||||
; Keyboard indicators v0.2
|
||||
; by Albom and IgorA
|
||||
|
||||
@@ -15,7 +21,7 @@ use32
|
||||
include '../../macros.inc'
|
||||
include '../../proc32.inc'
|
||||
include '../../develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/box_lib.mac'
|
||||
;include 'mem.inc'
|
||||
;include 'dll.inc'
|
||||
include 'lang.inc' ; Language support for locales: it_IT, en_US.
|
||||
|
||||
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user