1,19 → 1,19 |
ICON_STRIP equ '/rd/1/iconstrp.png' |
ICON_INI equ '/rd/1/settings/icon.ini' |
ICON_SIZE equ 68 ;размер области для иконки с надписью |
IMG_SIZE equ 32 ;размер иконок |
TEXT_BOTTOM_Y equ 15 ;отступ по Y текста от низа иконки |
IMAGE_TOP_Y equ 10 ;>=1 Координата Y иконки в области для данной иконки |
ALIGN_SIZE equ 68 ;размер сетки выравнивания |
NAME_LENGTH equ 11 ;длина имени иконки |
MIN_NO_MOVING equ 8 ;через столько пикселей сдвига мыши начинается таскание иконки |
ICON_SIZE equ 68 ;à §¬¥à ®¡« á⨠¤«ï ¨ª®ª¨ á ¤¯¨áìî |
IMG_SIZE equ 32 ;à §¬¥à ¨ª®®ª |
TEXT_BOTTOM_Y equ 15 ;®âáâ㯠¯® Y ⥪á⠮⠨§ ¨ª®ª¨ |
IMAGE_TOP_Y equ 10 ;>=1 ®®à¤¨ â Y ¨ª®ª¨ ¢ ®¡« á⨠¤«ï ¤ ®© ¨ª®ª¨ |
ALIGN_SIZE equ 68 ;à §¬¥à á¥âª¨ ¢ëà ¢¨¢ ¨ï |
NAME_LENGTH equ 11 ;¤«¨ ¨¬¥¨ ¨ª®ª¨ |
MIN_NO_MOVING equ 8 ;ç¥à¥§ á⮫쪮 ¯¨ªá¥«¥© ᤢ¨£ ¬ëè¨ ç¨ ¥âáï â ᪠¨¥ ¨ª®ª¨ |
|
;--------для диалога создания/редактирования |
;--------¤«ï ¤¨ «®£ ᮧ¤ ¨ï/। ªâ¨à®¢ ¨ï |
ICONSX equ 20 |
ICONSY equ 80 |
ICONS_DRAW_COUNTW equ 10 ;количество иконок в ширину |
ICONS_DRAW_COUNTH equ 2 ;количество иконок в высоту |
SPCW equ 3 ;пробел между иконками по горизонтали |
ICONS_DRAW_COUNTW equ 10 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ è¨à¨ã |
ICONS_DRAW_COUNTH equ 2 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ ¢ëá®âã |
SPCW equ 3 ;¯à®¡¥« ¬¥¦¤ã ¨ª®ª ¬¨ ¯® £®à¨§®â «¨ |
SPCH equ 3 |
END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
92,10 → 92,10 |
and eax,0x7 |
mov [cur_band_compensation],eax |
|
;########## загружаем данные иконок в память ########################## |
;########## § £à㦠¥¬ ¤ ë¥ ¨ª®®ª ¢ ¯ ¬ïâì ########################## |
|
mcall 70,fiIni ;выделяем память, достаточной для хранения ini файла. |
test eax,eax ;Её точно хватит для хранения данных об иконках |
mcall 70,fiIni ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç®© ¤«ï åà ¥¨ï ini ä ©« . |
test eax,eax ;
ñ â®ç® å¢ â¨â ¤«ï åà ¥¨ï ¤ ëå ®¡ ¨ª®ª å |
jnz ErrorIni |
|
cmp dword[bufIni+32],0 |
130,9 → 130,9 |
mov dword[SizeData],0 |
@@: |
;###################################################################### |
call FillIconsOffs ;заполняет MaxNumIcon,IconsOffs |
call FillIconsOffs ;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
|
mcall 40,0100000b ;нужны только события мыши, перерисовка иконок будет в другом потоке |
mcall 40,0100000b ;ã¦ë ⮫쪮 ᮡëâ¨ï ¬ëè¨, ¯¥à¥à¨á®¢ª ¨ª®®ª ¡ã¤¥â ¢ ¤à㣮¬ ¯®â®ª¥ |
|
mov eax,[icon_count] |
mov bl,ICONS_DRAW_COUNTH |
144,7 → 144,7 |
and eax,0FFh |
mov [sbIcons.max_area],eax |
|
mcall 51,1,BGRedrawThread,stack_bredraw ;запускаем поток перерисовки иконок |
mcall 51,1,BGRedrawThread,stack_bredraw ;§ ¯ã᪠¥¬ ¯®â®ª ¯¥à¥à¨á®¢ª¨ ¨ª®®ª |
stdcall [OpenDialog_Init],OpenDialog_data |
|
;dph [MaxNumIcon] |
184,11 → 184,11 |
jmp messages |
|
ErrLoadLibs: |
;dps 'Не удалось загрузить необходимые библиотеки' |
;dps '¥ 㤠«®áì § £à㧨âì ¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨' |
;debug_newline |
jmp close |
ErrorStrp: |
;dps 'Ошибка открытия iconstrp.png' |
;dps '訡ª ®âªàëâ¨ï iconstrp.png' |
;debug_newline |
close: |
mcall -1 |
252,7 → 252,7 |
mov [MouseY],ecx |
|
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
cmp eax,[esp] ;[esp] = номер иконки |
cmp eax,[esp] ;[esp] = ®¬¥à ¨ª®ª¨ |
jne @f |
|
mov edi,[IconsOffs+eax*4] |
383,7 → 383,7 |
cmp bx,[wsY] |
jae @f |
mov bx,[wsY] |
@@: ;eax,ebx - реальная координата. Все координаты в проге относительно левого верхнего угла рабочей области |
@@: ;eax,ebx - ॠ«ì ï ª®®à¤¨ â . ᥠª®®à¤¨ âë ¢ ¯à®£¥ ®â®á¨â¥«ì® «¥¢®£® ¢¥à奣® 㣫 à ¡®ç¥© ®¡« á⨠|
|
xor edx,edx |
mov dx,[wsXe] |
400,7 → 400,7 |
mov ebx,edx |
@@: |
|
xor edx,edx ;преобразовываем в относительные |
xor edx,edx ;¯à¥®¡à §®¢ë¢ ¥¬ ¢ ®â®á¨â¥«ìë¥ |
mov dx,[wsW] |
shr edx,1 |
add dx,[wsX] |
434,7 → 434,7 |
mov [bNotSave],1 |
mov [IconNoDraw],-1 |
|
mov [MovingActiv],0 ;только теперь отключаем окно с мышью |
mov [MovingActiv],0 ;⮫쪮 ⥯¥àì ®âª«îç ¥¬ ®ª® á ¬ëèìî |
|
jmp messages |
|
457,7 → 457,7 |
|
|
;############################################################################### |
;ret eax = 1/0 = удача/ошибка |
;ret eax = 1/0 = 㤠ç /®è¨¡ª |
proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n |
local IconData:DWORD |
push ebx edi esi |
478,7 → 478,7 |
mov esi,[IconsOffs+eax*4] |
mov [IconData],esi |
|
;рисуем текст |
;à¨á㥬 ⥪áâ |
mov edi,esi |
xor al,al |
or ecx,-1 |
491,7 → 491,7 |
lea eax,[eax*2+eax] |
mov ebx,ICON_SIZE |
sub ebx,eax |
shr ebx,1 ;ebx = x текста |
shr ebx,1 ;ebx = x ⥪áâ |
shl ebx,16 |
mov bx,ICON_SIZE |
sub bx,TEXT_BOTTOM_Y |
514,7 → 514,7 |
add ebx,0*10000h-2 |
mov ecx,88FFFFFFh |
mcall ;4 |
;рисуем картинку |
;à¨á㥬 ª à⨪ã |
|
mov edi,esi |
xor al,al |
529,7 → 529,7 |
jne GetIconInd |
|
PathToIcon: |
mov al,30h ;заглушка!!!!!!!!!!!!! |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
|
jmp CopyToMem |
574,7 → 574,7 |
jnz @b |
|
;----------------- |
;если надо, то рисуем обводку |
;¥á«¨ ¤®, â® à¨á㥬 ®¡¢®¤ªã |
cmp [Activ],0 |
je .NoSelect |
|
712,7 → 712,7 |
ret |
endp |
|
;заполняет MaxNumIcon,IconsOffs |
;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
proc FillIconsOffs |
push ebx edi |
mov edi,[BegData] |
769,7 → 769,7 |
.lid1: |
|
|
mov ebx,[sec_name] ;копируем ID |
mov ebx,[sec_name] ;ª®¯¨à㥬 ID |
mov ax,[ebx] |
mov edi,[nLoadIcon] |
mov word[edi*4+IconsID],ax |
932,7 → 932,7 |
|
|
align 4 |
fiRunProg: ;для запуска программ |
fiRunProg: ;¤«ï § ¯ã᪠¯à®£à ¬¬ |
dd 7 |
dd 0 |
dd 0 |
941,7 → 941,7 |
db 0 |
dd pthNotify |
|
fiIni dd 5 ;для ini файла |
fiIni dd 5 ;¤«ï ini ä ©« |
dd 0 |
dd 0 |
dd 0 |
953,8 → 953,8 |
IconsFile db ICON_STRIP,0 |
|
align 4 |
MaxNumIcon dd 0 ;количество иконок |
IconNoDraw dd -1 ;-1 либо номер иконки, которую не надо рисовать( когда её таскают ) |
MaxNumIcon dd 0 ;ª®«¨ç¥á⢮ ¨ª®®ª |
IconNoDraw dd -1 ;-1 «¨¡® ®¬¥à ¨ª®ª¨, ª®â®àãî ¥ ¤® à¨á®¢ âì( ª®£¤ ¥ñ â ᪠îâ ) |
|
bFixIcons dd 1 |
bNotSave dd 0 |
1034,13 → 1034,13 |
PredItem dd -1 |
|
if lang eq ru |
RMenuRedrawFon db 'Перерисовать',0 |
RMenuAlign db 'Выровнять по сетке',0 |
RMenuOffMoving db 'Закрепить иконки',0 |
RMenuOnMoving db 'Открепить иконки',0 |
RMenuAdd db 'Добавить',0 |
RMenuDel db 'Удалить',0 |
RMenuProp db 'Свойства',0 |
RMenuRedrawFon db '¥à¥à¨á®¢ âì',0 |
RMenuAlign db 'ë஢ïâì ¯® á¥âª¥',0 |
RMenuOffMoving db ' ªà¥¯¨âì ¨ª®ª¨',0 |
RMenuOnMoving db 'âªà¥¯¨âì ¨ª®ª¨',0 |
RMenuAdd db '®¡ ¢¨âì',0 |
RMenuDel db '¤ «¨âì',0 |
RMenuProp db '¢®©á⢠',0 |
else |
RMenuRedrawFon db 'Redraw',0 |
RMenuAlign db 'Snap to Grid',0 |
1052,15 → 1052,15 |
end if |
|
if lang eq ru |
ErrRunProg db '"Ошибка запуска программы" -E"',0 |
WarningSave db '"Не забудьте сохранить изменения, запустить RDSave" -I',0 |
ErrNotFoundIni db '"Не найден icon.ini" -E',0 |
ErrName db '"Имя "rbmenu" зарезервировано" -E',0 |
ErrRunProg db '"Icon\n訡ª § ¯ã᪠¯à®£à ¬¬ë" -tE"',0 |
WarningSave db '"Icon\n¥ § ¡ã¤ì⥠á®åà ¨âì ¨§¬¥¥¨ï, § ¯ãáâ¨âì RDSave" -tI',0 |
ErrNotFoundIni db '"Icon\n¥ ©¤¥ icon.ini" -tE',0 |
ErrName db '"Icon\n¬ï "rbmenu" § १¥à¢¨à®¢ ®" -tE',0 |
else |
ErrRunProg db '"Error runing program" -E',0 |
WarningSave db '"Do not forget to save the changes, run the RDSave" -I',0 |
ErrNotFoundIni db '"Icon.ini not found" -E',0 |
ErrName db '"The name "rbmenu" reserved" -E',0 |
ErrRunProg db '"Icon\nError runing program" -tE',0 |
WarningSave db '"Icon\nDo not forget to save the changes, run the RDSave" -tI',0 |
ErrNotFoundIni db '"Icon\nicon.ini not found" -tE',0 |
ErrName db '"Icon\nThe name "rbmenu" reserved" -tE',0 |
end if |
|
;------------------------------------------------------------------------------- |
1067,17 → 1067,17 |
;------- AddDlg.inc --------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
if lang eq ru |
DTitleAdd db 'Добавить иконку',0 |
DTitleProp db 'Изменить иконку',0 |
DTitleAdd db '®¡ ¢¨âì ¨ª®ªã',0 |
DTitleProp db '§¬¥¨âì ¨ª®ªã',0 |
|
DCaptName db 'Имя',0 |
DCaptPath db 'Путь',0 |
DCaptParams db 'Параметры',0 |
DCaptIcon db 'Иконка',0 |
DCaptName db '•',0 |
DCaptPath db 'ãâì',0 |
DCaptParams db ' à ¬¥âàë',0 |
DCaptIcon db 'ª®ª ',0 |
;DCaptChange db '.',0 |
DCaptCreate db 'Создать',0 |
DCaptProperties db 'Изменить',0 |
DCaptCancel db 'Отменить',0 |
DCaptCreate db '®§¤ âì',0 |
DCaptProperties db '§¬¥¨âì',0 |
DCaptCancel db '⬥¨âì',0 |
|
else |
DTitleAdd db 'Add icon',0 |
1092,7 → 1092,7 |
DCaptCancel db 'Cancel',0 |
end if |
|
;/не менять положение |
;/¥ ¬¥ïâì ¯®«®¦¥¨¥ |
edtName edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\ |
DAreaName,mouse_dd,0,0,0 |
edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,255,\ |
1168,7 → 1168,7 |
;open_dialog db 0 |
;------------------------------------------------------------------------------- |
|
;/не разделять |
;/¥ à §¤¥«ïâì |
align 4 |
IconAreaH dd ICON_SIZE,ICON_SIZE |
I_END: |
1206,10 → 1206,10 |
|
align 4 |
bufStdIco rb 40 |
IconsOffs rd 100 ;таблица с указателями на конкретные иконки(для ускорения) |
IconsOffs rd 100 ;â ¡«¨æ á 㪠§ ⥫ﬨ ª®ªà¥âë¥ ¨ª®ª¨(¤«ï ã᪮२ï) |
PIcoDB rd 1 |
nLoadIcon rd 1 ;номер читаемой из ini иконки |
IconsID rd 100 ;ID иконок - 2 байтa + байт 0 + выравнивающий байт - строка с 2мя шеснадцетиричными цифрами |
nLoadIcon rd 1 ;®¬¥à ç¨â ¥¬®© ¨§ ini ¨ª®ª¨ |
IconsID rd 100 ;ID ¨ª®®ª - 2 ¡ ©âa + ¡ ©â 0 + ¢ëà ¢¨¢ î騩 ¡ ©â - áâப á 2¬ï è¥á ¤æ¥â¨à¨ç묨 æ¨äà ¬¨ |
|
nameSection rb 4 |
|
1224,7 → 1224,7 |
|
bufIni rb 40 |
NumMenuButt rd 1 |
RBMenuCP rd MAX_USER_BUTTONS*2 ;указатели на подпись и путь с прогой (Caption(dd), Path(dd)) и запасной (dd) для завершающего нуля |
RBMenuCP rd MAX_USER_BUTTONS*2 ;㪠§ ⥫¨ ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ ᮩ (dd) ¤«ï § ¢¥àè î饣® ã«ï |
RMenuW rw 1 |
RMenuH rw 1 |
|
1247,7 → 1247,7 |
|
;------------------------------------------------------------------------------- |
rb 512 |
stack_mov: ;одновременно таскать и держать открытым менюшку невозможно |
stack_mov: ;®¤®¢à¥¬¥® â ᪠âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥îèªã ¥¢®§¬®¦® |
stack_rmenu: |
rb 512 |
stack_dlg: |