Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4936 → Rev 4937

/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 '"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
ErrRunProg db '"Ошибка запуска программы" -E"',0
WarningSave db '"Не забудьте сохранить изменения, запустить RDSave" -I',0
ErrNotFoundIni db '"Не найден icon.ini" -E',0
ErrName db '"Имя "rbmenu" зарезервировано" -E',0
else
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
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
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: