Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4944 → Rev 4945

/programs/system/icon_new/@icon.asm
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: