Files
kolibrios/programs/other/t_edit/t_data.inc
T
IgorA 1483ec8462 Libraries (box_lib, buf2d, libimg, tinygl): optimize function import (#231)
Libraries (box_lib, buf2d, libimg, tinygl): optimize function import

Programs updated:
- gears, test3, test_glu1, test_glu2,
- test_array1, textures0, textures1, textures2,
- ctrldemo, editbox_ex, crypt_files, img_transform,
- scrshoot, t_edit, cnc_control, cnc_editor

Reviewed-on: KolibriOS/kolibrios#231
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Ivan B <dunkaist@noreply.localhost>
Co-authored-by: IgorA <aie85playm@gmail.com>
Co-committed-by: IgorA <aie85playm@gmail.com>
2025-07-14 08:20:32 +02:00

494 lines
14 KiB
FASM
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
fn_col_option dd def_col_file
fn_syntax_dir db 'info/',0
def_col_file db 'default.syn',0
exit_code dd 0 ;переменная используемая для выхода из программы
panel_but rb 21 ;настройки отображения кнопок на панели
;значения задаваемые по умолчанию, без ini файла
ini_def_window_t equ 20
ini_def_window_l equ 200
ini_def_window_w equ 570
ini_def_window_h equ 470
ini_def_symbol_w equ 7
ini_def_symbol_h equ 10
ini_def_font_s equ 0
ini_def_scroll_type equ 0
;описание параматров для ini файла
ini_name db 't_edit.ini',0
ini_sec_window db 'Window',0
key_window_t db 't',0
key_window_l db 'l',0
key_window_w db 'w',0
key_window_h db 'h',0
key_symbol_w db 'symbol_w',0
key_symbol_h db 'symbol_h',0
key_font_s db 'font_s',0
key_scroll_type db 'scroll_type',0
key_but_new db 'but_new',0
key_but_open db 'but_open',0
key_but_save db 'but_save',0
key_but_save_as db 'but_save_as',0
key_but_select db 'but_select',0
key_but_cut db 'but_cut',0
key_but_copy db 'but_copy',0
key_but_paste db 'but_paste',0
key_but_find db 'but_find',0
key_but_replace db 'but_replace',0
key_but_key_words db 'but_key_words',0
key_but_upper db 'but_upper',0
key_but_lower db 'but_lower',0
key_but_reverse db 'but_reverse',0
key_but_undo db 'but_undo',0
key_but_redo db 'but_redo',0
key_but_invisible db 'but_invisible',0
key_but_syntax_list db 'but_syntax_list',0
key_but_syntax_mode db 'but_syntax_mode',0
key_but_convert_1251_866 db 'but_convert_1251_866',0
key_but_convert_866_1251 db 'but_convert_866_1251',0
ini_sec_options db 'Options',0
key_synt_file:
db 'syntax_'
.numb: db '0',0
key_synt_ext:
db 'ext_'
.numb: db '0',0
ini_def_synt_f db 0
align 4
max_synt_auto_open equ 10
synt_auto_open:
rb 64*max_synt_auto_open
db 0
system_dir_0 db '/sys/lib/'
lib_name_0 db 'box_lib.obj',0
system_dir_1 db '/sys/lib/'
lib_name_1 db 'msgbox.obj',0
system_dir_2 db '/sys/lib/'
lib_name_2 db 'proc_lib.obj',0
system_dir_3 db '/sys/lib/'
lib_name_3 db 'libimg.obj',0
system_dir_4 db '/sys/lib/'
lib_name_4 db 'libini.obj',0
system_dir_5 db '/sys/lib/'
lib_name_5 db 'kmenu.obj',0
;---------------------------------------------------------------------
include '../../develop/libraries/box_lib/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
align 4
import_msgbox_lib:
mb_create dd amb_create
mb_reinit dd amb_reinit
mb_setfunctions dd amb_setfunctions
dd 0,0
amb_create db 'mb_create',0
amb_reinit db 'mb_reinit',0
amb_setfunctions db 'mb_setfunctions',0
include '../../develop/libraries/libs-dev/libimg/import.inc'
align 4
import_libini:
dd alib_init2
ini_get_str dd aini_get_str
ini_get_int dd aini_get_int
ini_get_color dd aini_get_color
dd 0,0
alib_init2 db 'lib_init',0
aini_get_str db 'ini_get_str',0
aini_get_int db 'ini_get_int',0
aini_get_color db 'ini_get_color',0
align 4
import_libkmenu:
kmenu_init dd akmenu_init
kmainmenu_draw dd akmainmenu_draw
kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent
ksubmenu_new dd aksubmenu_new
ksubmenu_delete dd aksubmenu_delete
ksubmenu_draw dd aksubmenu_draw
ksubmenu_add dd aksubmenu_add
kmenuitem_new dd akmenuitem_new
kmenuitem_delete dd akmenuitem_delete
kmenuitem_draw dd akmenuitem_draw
dd 0,0
akmenu_init db 'kmenu_init',0
akmainmenu_draw db 'kmainmenu_draw',0
akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0
aksubmenu_new db 'ksubmenu_new',0
aksubmenu_delete db 'ksubmenu_delete',0
aksubmenu_draw db 'ksubmenu_draw',0
aksubmenu_add db 'ksubmenu_add',0
akmenuitem_new db 'kmenuitem_new',0
akmenuitem_delete db 'kmenuitem_delete',0
akmenuitem_draw db 'kmenuitem_draw',0
;---------------------------------------------------------------------
align 4
wScr scrollbar 16,50, 300,50, 15, 100,30,0, 0,0,0, 1
align 4
hScr scrollbar 150,0, 16,50, 15, 100,30,0, 0,0,0, 1
;дочерний скроллинг для элемента ListBox
align 4
ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1
;---------------------------------------------------------------------
align 4
OpenDialog_data:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_path dd plugin_path ;+16
.dir_default_path dd 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 'ASM',0
db 'CPP',0
db 'INC',0
db 'MAC',0
db 'INI',0
db 'TXT',0
db 'H',0
db 'C',0
db 'HTM',0
db 'HTML',0
db 'PY',0
db 'SH',0
db 'BAT',0
db 'LUA',0
db 'INF',0
db 'LOG',0
db 'DBG',0
db 'DAT',0
.end:
db 0
txt_Info db '" -tI',0
TED_PANEL_NULL equ 0 ;нет открытой панели
TED_PANEL_FIND equ 1 ;панель поиска
TED_PANEL_REPLACE equ 2 ;панель замены
TED_PANEL_SYNTAX equ 3 ;панель выбора файлов подсветки
TED_PANEL_GOTO equ 4 ;панель перехода
TED_PANEL_WIDTH equ 150 ;ширина панели
count_of_dir_list_files equ 15 ;максимальное число файлов синтаксиса показываемых в окне элемента tree1
;------------------------------------------------------------------------------
struct TexSelect
x0 dd ?
y0 dd ?
x1 dd ?
y1 dd ?
ends
;------------------------------------------------------------------------------
align 4
tedit0: ;структура текстового редактора
.wnd BOX 0,50,440,150 ;+ 0
.rec BOX 30,25,ini_def_symbol_w,ini_def_symbol_h ;+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 maxChars ;+86 максимальное число символов в одном документе
.count_colors_text dd 1 ;+90 колличество цветов текста
.count_key_words dd 0 ;+94 колличество ключевых слов
.color_cursor dd 0x808080 ;+98 цвет курсора
.color_wnd_capt dd 0x80 ;+102 цвет полей вокруг окна
.color_wnd_work dd 0x0 ;+106 цвет фона окна
.color_wnd_bord dd 0xd0d0d0 ;+110 цвет текста на полях
.color_select dd 0x208080 ;+114 цвет выделения
.color_cur_text dd 0xff0000 ;+118 цвет символа под курсором
.color_wnd_text dd 0xffff00 ;+122 цвет текста в окне
.syntax_file dd 0 ;+126 указатель на начало файла синтаксиса
.syntax_file_size dd maxSyntaxFileSize ;+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 wScr ;+174 вертикальный скроллинг
.scr_h dd hScr ;+178 горизонтальный скроллинг
.arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов
.buffer dd buf ;+186 указатель на буфер копирования/вставки
.buffer_find dd buf_find ;+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 ted_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 ted_on_find_err ;+218 указатель на функцию вызываемую если поиск закончился неудачно
.fun_init_synt_err dd 0 ;+222
.fun_draw_panel_buttons dd draw_but_toolbar ;+226 указатель на функцию рисования панели с кнопками
.fun_draw_panels dd draw_panels ;+230 указатель на функцию рисования панели поиска/замены
dd 0 ;+234 зарезервировано
.fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
.increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке
.ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста
.font_size dd 0 ;+250 множитель для размера шрифта
;------------------------------------------------------------------------------
conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код
el_focus dd tedit0
mouse_dd dd 0
tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\
ws_dir_lbox,0
;dir_list memory
tree_file_struct:
dd 1,0,0,count_of_dir_list_files
dd dir_mem
db 0
.f: dd file_name
align 4
opt_gr1 dd opt1
opt_grlist1 dd opt1,opt2,opt3,0 ;end option group
opt1 option_box opt_gr1, 5, 90,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_next,txt_f_opt_next.end-txt_f_opt_next
opt2 option_box opt_gr1, 5,108,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_perv,txt_f_opt_perv.end-txt_f_opt_perv
opt3 option_box opt_gr1, 5,126,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_beg,txt_f_opt_beg.end-txt_f_opt_beg
check_boxes:
ch1 check_box2 (5 shl 16+12),(144 shl 16 +12),5,0xffffff,0,0x80ff,ch_text.1,ch_flag_en+ch_flag_middle
check_boxes_end:
if lang eq ru_RU
msgbox_1:
db '"Замена',13,10,'Сделано замен: '
.z: rb 10
msgbox_2:
db 3,0
db 'Внимание',0
db 'Сохранить изменения в файле?',0
db 'Сохранить',0
db 'Не сохранять',0
db 'Отмена',0
db 0
msgbox_3:
db 1,0
db 'Внимание',0
db 'Ошибка при открытии файла с цветовыми настройками!',13,\
'Потому выделение слов цветом не возможно.',13,\
' (код ошибки ='
.err: db '?'
db ')',0
db 'Закрыть',0
db 0
msgbox_4:
db 1,0
db 'Внимание',0
db 'Ошибка при открытии файла!',13,\
'Возможно имя файла введено не правильно.',13,\
' (код ошибки ='
.err: db '?'
db ')',0
db 'Закрыть',0
db 0
msgbox_6:
db 1,0
db 'Внимание',0
db 'Ошибка при сохранении файла!',13,\
'Возможно имя файла введено не правильно.',13,\
' (код ошибки ='
.err: db '?'
db ')',0
db 'Закрыть',0
db 0
msgbox_7:
db '"Текст не найден',13,10
db 'Попробуйте или изменить запрос и повторить поиск." -tI',0
msgbox_9:
db 3,0
db 'Внимание',0
db 'Не открылся ',39,'диалог открытия файла',39,'.',13
.fdp:
rb 100
db 0
db 'Закрыть',0
db 0
txtFindCapt db 'Поиск:',0
txtFindNext db 'Найти далее',0
txtRerlaceCapt db 'Чем заменить:',0
txtRerlace db 'Заменить',0
txtRerlaceAll db 'Заменить все',0
txtFormatCapt db 'Формат',0
txtFormatApply db 'Применить',0
txtReplace db 'Заменить',0
txtReplaceAll db 'Заменить все',0
txtGotoCapt db 'Переход на строку:',0
txtGoto db 'Перейти',0
txt_f_opt_next: db 'Вниз'
.end: db 0
txt_f_opt_perv: db 'Вверх'
.end: db 0
txt_f_opt_beg: db 'С начала'
.end: db 0
ch_text:
.1 db 'Учитывать регистр',0
else ; Default to en_US
msgbox_1:
db '"Replace',13,10,'Made replacements: '
.z: rb 10
msgbox_2:
db 3,0
db 'Warning',0
db 'Save changes to the file?',0
db 'Save',0
db 'Discard',0
db 'Cancel',0
db 0
msgbox_3:
db 1,0
db 'Warning',0
db 'Error opening the file with the color settings!',13,\
'Because color selection of words is not possible.',13,\
' (error code ='
.err: db '?'
db ')',0
db 'Close',0
db 0
msgbox_4:
db 1,0
db 'Warning',0
db 'Error opening file!',13,\
'Maybe the file name is not entered correctly.',13,\
' (error code ='
.err: db '?'
db ')',0
db 'Close',0
db 0
msgbox_6:
db 1,0
db 'Warning',0
db 'Error saving file!',13,\
'Maybe the file name is not entered correctly.',13,\
' (error code ='
.err: db '?'
db ')',0
db 'Close',0
db 0
msgbox_7:
db '"Text not found.',13,10
db 'Try change the query and search again." -tI',0
msgbox_9:
db 3,0
db 'Warning',0
db 'Error run ',39,'open file dialog',39,'.',13
.fdp:
rb 100
db 0
db 'Close',0
db 0
txtFindCapt db 'Search:',0
txtFindNext db 'Find next',0
txtRerlaceCapt db 'Replace with:',0
txtRerlace db 'Replace',0
txtRerlaceAll db 'Replace all',0
txtFormatCapt db 'Format',0
txtFormatApply db 'Apply',0
txtReplace db 'Replace',0
txtReplaceAll db 'Replace all',0
txtGotoCapt db 'Go to line:',0
txtGoto db 'Go to',0
txt_f_opt_next: db 'Down'
.end: db 0
txt_f_opt_perv: db 'Up'
.end: db 0
txt_f_opt_beg: db 'At first'
.end: db 0
ch_text:
.1 db 'Case sensitive',0
end if
;функции для кнопок в сообщениях
msgbox_2N_funct:
dd On_SaveAndNewFile
dd On_NewFile
dd 0
msgbox_2O_funct:
dd On_SaveAndOpenFile
dd ted_but_open_file.no_msg
dd 0
msgbox_2E_funct:
dd On_SaveAndExit
dd On_Exit
dd 0
KM_SHIFT equ 0x00010000
KM_CTRL equ 0x00020000
KM_ALT equ 0x00040000
KM_NUMLOCK equ 0x00080000
; KEY CODES
KEY_F1 equ 0x0000003B
KEY_F2 equ 0x0000003C
KEY_F3 equ 0x0000003D