diff --git a/programs/other/ha/HACONFIG.ASM b/programs/other/ha/HACONFIG.ASM index 79b18602e7..649b15d1bf 100644 --- a/programs/other/ha/HACONFIG.ASM +++ b/programs/other/ha/HACONFIG.ASM @@ -2,7 +2,7 @@ ; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Compile with FASM -; Version 0.3.5: Oct 5, 2018 +; Version 0.3.6: Oct 9, 2018 ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage ; All rights reserved. @@ -45,11 +45,13 @@ include '../../macros.inc' include '../../proc32.inc' include '../../dll.inc' include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;компоненты checkBox и editBox -;![ -include '../../develop/libraries/box_lib/load_lib.mac' ;макрос для загрузки библиотек +include '../../develop/libraries/box_lib/load_lib.mac' ;макрос для загрузки библиотек @use_library -;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load -;!] + +KMENUITEM_NORMAL equ 0 +KMENUITEM_SUBMENU equ 1 +KMENUITEM_SEPARATOR equ 2 + Otstup = 30 START: @@ -67,7 +69,7 @@ START: or eax, eax jnz exit - invoke init_checkbox, ch1 + ;invoke init_checkbox, ch1 mov eax,40 ;установить маску для ожидаемых событий mov ebx,0x27 ;система будет реагировать только на сообщение о перерисовке, нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) @@ -77,6 +79,20 @@ START: ;mcall 48,3,sc,sizeof.system_colors ;получить системные цвета stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога + ;mode menu + stdcall [kmenu_init], sc ;kmenu initialisation + stdcall [ksubmenu_new] + mov [modeMenu], eax + stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110 + stdcall [ksubmenu_add], [modeMenu], eax + stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111 + stdcall [ksubmenu_add], [modeMenu], eax + stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112 + stdcall [ksubmenu_add], [modeMenu], eax + stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113 + stdcall [ksubmenu_add], [modeMenu], eax + stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu] + call loadConfig ;загружаем конфигурацию из файла, если нет - то выставляем параметры по умолчанию call draw_window ;отрисовать окно приложения @@ -101,7 +117,8 @@ event_wait: invoke edit_box_mouse, editLD invoke edit_box_mouse, editRU invoke edit_box_mouse, editRD - invoke check_box_mouse, ch1 ;проверка чек бокса + ;invoke check_box_mouse, ch1 ;проверка чек бокса + ;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;проверка мыши для комбобокса jmp event_wait @@ -158,6 +175,43 @@ noclose: mov byte[editID], 7 call but_open_dlg jmp event_wait +@@: + cmp ah, 8 + jne @f + push eax ebx ecx + mcall 9, pi, -1 ;get window coord + + mov eax, dword[pi+34] + add eax, buttonModeX ;+ 5 + mov word[coordModeMenu.x], ax + + mov eax, dword[pi+38] + add eax, buttonModeY + 17 ;20 ;42 + mov word[coordModeMenu.y], ax + + stdcall [ksubmenu_draw], [modeMenu], coordModeMenu + pop ecx ebx eax + jmp event_wait +@@: + cmp ah, 110 + jne @f + mov byte[mode], 48 ;'0' + jmp event_wait +@@: + cmp ah, 111 + jne @f + mov byte[mode], 49 ;'1' + jmp event_wait +@@: + cmp ah, 112 + jne @f + mov byte[mode], 50 ;'2' + jmp event_wait +@@: + cmp ah, 113 + jne @f + mov byte[mode], 51 ;'3' + jmp event_wait @@: butend: jmp event_wait ;this is for ignored events, useful at development @@ -255,11 +309,17 @@ applyButton: ;jne @f ;@@: ; - mov byte[eax], 48;'0' ;110; 'n' ;по умолчанию флаг снят - cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;выставлен checkBox или нет? - jne applyButton.no - mov byte[eax], 49;'1' ;121 ;иначе кладём 'y' -.no: + + push ebx ;сохраняем выбранный режим + mov bl, byte[mode] + mov byte[eax], bl + pop ebx + +;; mov byte[eax], 48;'0' ;110; 'n' ;по умолчанию флаг снят +;; cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;выставлен checkBox или нет? +;; jne applyButton.no +;; mov byte[eax], 49;'1' ;121 ;иначе кладём 'y' +;;.no: inc eax call addPerenos @@ -414,17 +474,37 @@ loadConfig: add edx, eax ;кладём в edx - адрес конца конфиг.данных .chStart: - cmp byte[eax], 49;'1' ;121 ;'y' ;выставляем checkBox - параметр активности приложения - jne @f ;loadConfig.no -.yes: - mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle - jmp loadConfig.chEnd + + push ebx + mov bl, byte[eax] + cmp bl, 48 ; если значение выходит за допустимые пределы, то проверяем на 'n' (для совместимости) + jb loadConfig.checkN + cmp bl, 51 + ja loadConfig.checkN + + mov byte[mode], bl ;иначе устанавливаем этот режим как есть + jmp loadConfig.modeEnd ;и идём дальше +.checkN: + cmp bl, 'n' ;если n - то режим "отключено" + jne @f + mov byte[mode], 48 ;'0' + jmp loadConfig.modeEnd @@: - cmp byte[eax], 50;'2' ;второй режим активирован - je loadConfig.yes -.no: - mov word[ch1.flags], 100b ;ch_flag_middle -.chEnd: + mov byte[mode], 49 ;'1' иначе по умолчанию включён классический режим работы +.modeEnd: + pop ebx + +;; cmp byte[eax], 49;'1' ;121 ;'y' ;выставляем checkBox - параметр активности приложения +;; jne @f ;loadConfig.no +;;.yes: +;; mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle +;; jmp loadConfig.chEnd +;;@@: +;; cmp byte[eax], 50;'2' ;второй режим активирован +;; je loadConfig.yes +;;.no: +;; mov word[ch1.flags], 100b ;ch_flag_middle +;;.chEnd: ;jmp loadConfig.end ;команда для удобства отладки и поиска ошибок ;копируем содержимое строк в буфер @@ -644,7 +724,7 @@ draw_window: invoke edit_box_draw, editRU invoke edit_box_draw, editRD - invoke check_box_draw, ch1 ;рисование чекбоксов + ;invoke check_box_draw, ch1 ;рисование чекбоксов ;рисуем кнопку mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;координата X, ширина кнопки @@ -705,6 +785,28 @@ draw_window: mcall 4 + ;delete mode button, if it exist + mov edx, 0x80000008 + mcall 8 + ;draw button Mode + buttonModeX = 30 ;433 + buttonModeY = 160 ;50 + buttonModeWidth = 221 + buttonModeHeight = 20 + buttonModeTextXoffset = 5 + mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width + mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height + mov edx, 0x00000008 ;button id + mov esi, 0x00AABBCC ;color button + mcall 8 + ;draw text for button Mode + mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+6) ;(x, y) + mov ecx, 0xFFFFFF + call setTextModeMenu + mov esi, valueModeMenuSize + mcall 4 + + call draw_super_text LineLength = 62 @@ -728,6 +830,29 @@ draw_window: ret +setTextModeMenu: + cmp byte[mode], 48 + jne @f + mov edx, valueModeMenu0 + ret +@@: + cmp byte[mode], 49 + jne @f + mov edx, valueModeMenu1 + ret +@@: + cmp byte[mode], 50 + jne @f + mov edx, valueModeMenu2 + ret +@@: + cmp byte[mode], 51 + jne @f + mov edx, valueModeMenu3 + ret +@@: + mov edx, valueModeMenu1 + ret align 16 @@ -749,7 +874,7 @@ import box_lib,\ ;DATA данные check_box использует системные цвета ;координаты (x,y) = (30, 160) размер чекбокса 12, цвет текста 0x224466 -ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle +;ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle commonButtonText db '...', 0 ;текст для кнопок вызова OpenDial commonButtonTextSize = 3 @@ -774,6 +899,13 @@ superText: .rd db 'Љ®¬ ­¤  Їа ў®Ј® ­Ё¦­ҐЈ® гЈ« : ', 0 superTextSize = 30 +valueModeMenuSize = 32 +ModeMenu db 'ђҐ¦Ё¬ а Ў®вл:',0 +valueModeMenu0 db '®вЄ«о祭® ',0 +valueModeMenu1 db 'Є« ббЁзҐбЄЁ© ०Ё¬ ',0 +valueModeMenu2 db '०Ё¬ Ј®ап祩 Є« ўЁиЁ ',0 +valueModeMenu3 db '०Ё¬ ¦Ґбв  Ї® Є« ўЁиҐ  ЄвЁў жЁЁ',0 + else ;иначе английский текст text db "This is a Hot Angles Configurator. " @@ -794,6 +926,13 @@ superText: .rd db 'Right down angle command:', 0 superTextSize = 25 +valueModeMenuSize = 32 +ModeMenu db 'Mode:',0 +valueModeMenu0 db 'disabled ',0 +valueModeMenu1 db 'classic mode ',0 +valueModeMenu2 db 'hot key mode ',0 +valueModeMenu3 db 'activation key gesture mode ',0 + end if @@ -821,6 +960,12 @@ draw_super_text: mov esi, superTextSize mcall 4 + mov ebx, Otstup * 65536 + (buttonModeY-11) + or ecx, 0x80000000 + mov edx, ModeMenu + mov esi, 3 + mcall 4 + pop esi edi edx ecx ebx eax ret @@ -925,21 +1070,21 @@ OpenDialog_data: .type dd 0 ;0 - открыть, 1 - сохранить, 2 - выбрать директорию .procinfo dd procinfo .com_area_name dd communication_area_name ;+8 -.com_area dd 0 ;+12 +.com_area dd 0 ;+12 .opendir_path dd plugin_path ;+16 .dir_default_path dd default_dir ;+20 -.start_path dd file_name ;+24 путь к диалогу открытия файлов +.start_path dd file_name ;+24 путь к диалогу открытия файлов .draw_window dd draw_window ;+28 -.status dd 0 ;+32 +.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 +.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 +.y_start dw 10 ;+54 ; Window Y position default_dir db '/rd/1',0 ;директория по умолчанию communication_area_name: db 'FFFFFFFF_open_dialog',0 @@ -949,12 +1094,17 @@ communication_area_default_path: db '/rd/1/File managers/',0 Filter: dd Filter.end - Filter.1 .1: -;db 'ASM',0 ;db 'KEX',0 -;db 'TXT',0 .end: db 0 - + +mode db 49 ;'1' +modeMenu dd 0 +coordModeMenu: + .x dw 100 + .y dw 200 + + align 4 proclib_import: ;описание экспортируемых функций OpenDialog_Init dd aOpenDialog_Init @@ -967,28 +1117,20 @@ head_f_i: head_f_l db 'Системная ошибка',0 err_message_found_lib0 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0 err_message_import0 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0 + err_message_found_lib1 db 'Не найдена библиотека ',39,'kmenu.obj',39,0 ;'ЌҐ ­ ©¤Ґ­  ЎЁЎ«Ё®вҐЄ  ' + err_message_import1 db 'Ошибка при импорте библиотеки ',39,'kmenu',39,0 ;'ЋиЁЎЄ  ЇаЁ Ё¬Ї®а⥠ЎЁЎ«Ё®вҐЄЁ ' system_dir0 db '/sys/lib/' lib0_name db 'proc_lib.obj',0 - +lib1_name db 'kmenu.obj',0 + ;library structures l_libs_start: - lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i + lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i + lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i load_lib_end: - -;txt_open db 'Открыть',0 - -sys_path: rb 4096 -file_name: rb 4096 -plugin_path: rb 4096 -openfile_path: rb 4096 -filename_area: rb 256 -rb 1024 -procinfo process_information ;!] - - edMaxSize = 510 ;теперь с новым компонентом можно и 511 указать edMax = 0 ;max, size, pos @@ -998,9 +1140,45 @@ editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBC editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax +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 + mouse_dd dd ? sc system_colors +button_press rd 0 ;for kmenu + +sys_path: rb 4096 +file_name: rb 4096 +plugin_path: rb 4096 +openfile_path: rb 4096 +filename_area: rb 256 +rb 1024 +procinfo process_information +pi rb 1024 + + dataBuffer: .1: rb 512 .2: rb 512 diff --git a/programs/other/ha/HOTANGLES.ASM b/programs/other/ha/HOTANGLES.ASM index ef08c8f219..49d42eb238 100644 --- a/programs/other/ha/HOTANGLES.ASM +++ b/programs/other/ha/HOTANGLES.ASM @@ -2,7 +2,7 @@ ; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Compile with FASM -; Version 0.3.5: Oct 5, 2018 +; Version 0.3.6: Oct 9, 2018 ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage ; All rights reserved. @@ -52,6 +52,13 @@ START_DEBUG: cmp byte[mode], 0 ;функция отключена - выход jne @f mcall -1 +@@: + ;режим жеста по горячей клавише? + cmp byte[mode], 3 ;подписываемся на интересные нам события в зависимости от режима работы + jne @f + mov ebx, 00000100000000000000000000100010b ;если да, то подписываемся на клавиши + mcall 40 + jmp init03 @@: ;режим активации горячей клавишей? cmp byte[mode], 2 ;подписываемся на интересные нам события в зависимости от режима работы @@ -110,8 +117,24 @@ hotkey: cmp ah, byte[keyActivate] ;если нажата наша горячая клавиша jne @f + +;for mode 3 [ + cmp byte[keyState], 1 + je hotkey.e + + push eax ebx + mcall 37, 0 ;запоминаем текущие(начальные) координаты мыши + ;mov dword[o.x], eax + mov word[o.y], ax + shr eax, 16 + mov word[o.x], ax + pop ebx eax + mov byte[keyState], 1 mov byte[state], UNLOCKd +.e: +;] + ;mov byte[state], UNLOCKd jmp hotkey.end @@: push edx @@ -127,7 +150,7 @@ hotkey: @@: pop edx .end: - jmp mode02 + jmp dword[backAdr] init01: @@ -449,10 +472,165 @@ copyKill: ret -keyActivate db 41 ;16 ;'Q' ;клавиша активации -keyState db 0 ;0-клавиша не активна, 1 - клавиша активна +;MODE 3 +init03: + mov dword[radius2], 100; 10*10 + mov dword[backAdr], mode03 + call setHotKey +mode03: + mcall 10 + cmp eax, 2 ;обработка нажатия клавиши + je hotkey -backAdr rd 1 ;dd 0 ; адрес для возврата из проверки мыши + ;cmp byte[keyState], 0 + ;je mode03 + cmp eax, 6 ;обработка перемещений и нажатия мыши + je mouse03 + + jmp mode03 + +mouse03: + cmp byte[keyState], 0 ;если клавиша не зажата, то обновим начальные координаты + je mouse03.updateCoord + + cmp byte[state], LOCKd ;если угол заблокирован, то обновим начальные координаты + je mouse03.updateCoord + + call checkPointInCircle ;иначе если преодолели радиус активации, то вызываем действие нужного угла + jmp @f +.updateCoord: + push eax ebx + mcall 37, 0 ;запоминаем текущие(начальные) координаты мыши + ;mov dword[o.x], eax + mov word[o.y], ax + shr eax, 16 + mov word[o.x], ax + pop ebx eax +@@: + jmp dword[backAdr] + + +radius2 dd 0 ;квадрат радиуса для mode 3 +o: ;координаты начальной и текущей точки + .x: dw 0 + .y: dw 0 + .cx: dw 0 + .cy: dw 0 + +;проверка выхода за пределы круга +; sqrt( (x2-x1)^2 + (y2-y1)^2 ) <= radius +; (x2-x1)^2 + (y2-y1)^2 <= radius^2 +checkPointInCircle: + push eax ebx ecx edx + mcall 37, 0 ;получаем текущие координаты мыши + ;mov dword[o.cx], eax + mov word[o.cy], ax + shr eax, 16 + mov word[o.cx], ax + + xor eax, eax + xor edx, edx + mov ax, word[o.x] + mov dx, word[o.cx] + cmp dx, ax + jae @f + sub ax, dx + mov dx, ax + jmp .xend +@@: + sub dx, ax +.xend: + mov eax, edx + mul dx + + mov ebx, eax + + xor eax, eax + xor edx, edx + mov ax, word[o.y] + mov dx, word[o.cy] + cmp dx, ax + jae @f + sub ax, dx + mov dx, ax + jmp .yend +@@: + sub dx, ax +.yend: + mov eax, edx + mul dx + + add ebx, eax + + cmp ebx, dword[radius2] + jbe @f + call activateCorner ;иначе активируем нужный угол + @@: + pop edx ecx ebx eax + ret + +;выяснить в сторону какого угла ушли и активировать его +activateCorner: + push eax ecx + xor eax, eax + + mov ax, word[o.cx] + cmp ax, word[o.x] + je activateCorner.end ;если координата равна, то выходим (такого быть не должно) + ja activateCorner.right + + ;иначе левая сторона + mov ax, word[o.cy] + cmp ax, word[o.y] + je activateCorner.end ;если координата равна, то выходим (такого быть не должно) + jb activateCorner.leftup + + ;иначе левый нижний угол + mov ecx, 1 + call run_command + mov byte[keyState], 0 + mov byte[state], LOCKd + jmp activateCorner.end + +.leftup: + ;левый верхний угол + mov ecx, 0 + call run_command + mov byte[keyState], 0 + mov byte[state], LOCKd + jmp activateCorner.end + +.right: ;правая сторона экрана + mov ax, word[o.cy] + cmp ax, word[o.y] + je activateCorner.end ;если координата равна, то выходим (такого быть не должно) + jb activateCorner.rightup + + ;иначе правый нижний угол + mov ecx, 3 + call run_command + mov byte[keyState], 0 + mov byte[state], LOCKd + jmp activateCorner.end + +.rightup: + ;правый верхний угол + mov ecx, 2 + call run_command + mov byte[keyState], 0 + mov byte[state], LOCKd + jmp activateCorner.end + +.end: + pop ecx eax + ret + + + +keyActivate db 41 ;16 ;'Q' ;клавиша активации +keyState db 0 ;0-клавиша не активна, 1 - клавиша активна + +backAdr rd 1 ;адрес для возврата из проверки мыши ;slotMax dd 0 ;selfPID dd 0 @@ -463,8 +641,8 @@ buf rb 1024 ;структурка данных для хранения параметров экрана screen: - .width rw 1 ;dw 0 - .height rw 1 ;dw 0 + .width rw 1 + .height rw 1 state: rb 1 ;состояние: 0=unlock, 1=lock mode: rb 1 ;режим работы приложения: 0=не работает, 1=классический, 2=по горячей клавише diff --git a/programs/other/ha/ReadMe.txt b/programs/other/ha/ReadMe.txt index 6fe326129c..4250e048a2 100644 --- a/programs/other/ha/ReadMe.txt +++ b/programs/other/ha/ReadMe.txt @@ -1,6 +1,6 @@ Hot Angles -Version 0.3.5: Oct 5, 2018 +Version 0.3.6: Oct 9, 2018 RU Комплект утилит (аналог Hot Corners в других ОС) для расширения возможностей рабочего стола пользователя. Название выбрано путём голосования. В комплект входят две утилиты: @@ -10,7 +10,9 @@ HACONFIG - 1) состояние активности опции (один символ): 1 или y - опция активна, активирован классический режим работы уголков, 2 - опция активна, активирован режим работы по горячей клавише, - n или любой другой символ - опция отключена; + 3 - опция активна, активирован режим жеста при зажатой активационной клавише, + n или 0 - опция отключена, + любой другой символ - поведение по умолчанию (зависит от версии); 2) команда (полное имя приложения) для верхнего левого угла экрана; 3) команда (полное имя приложения) для левого нижнего угла экрана; 4) команда (полное имя приложения) для правого верхнего угла экрана; @@ -33,11 +35,15 @@ MIN - -------------------------------------------------- Текущая версия конфигуратора и утилиты работают стабильно только в классическом режиме. В классическом режиме угол активируется путём наведения курсора. Всё происходит автоматически. Вы наводите мышь в заданный угол рабочего стола, и запускается приложение, связанное с этим углом. -Этот режим активируется символом '1' или символом 'y' в начале конфигурационного файла. +Этот режим активируется символом '1' в начале конфигурационного файла. Начиная с версии 0.3.5 утилита @HOTANGLES поддерживает второй режим работы - активацию углов по горячей клавише. Эта функциональность тестируется, поэтому настроить её через конфигуратор нельзя. Активируется режим символом '2' в начале конфигурационного файла. Изменить клавишу активации нельзя, по умолчанию это символ тильда '~' или '`'. В этом режиме для активации угла требуется зажать клавишу тильда и, одновременно с этим, навести курсор в нужный угол рабочего стола. +Начиная с версии 0.3.6 поддерживается третий режим работы - активация жестом при зажатой активационной клавише. Этот режим находится в тестировании. Клавиша активации - тильда '~'. Изменить клавишу нельзя. В этом режиме для активации угла необходимо зажать клавишу тильда и сместить курсор на расстояние 10 пикселей в сторону нужного угла. Спорные направления (вертикально вверх или вниз и горизонтально влево или вправо) игнорируются. Режим предполагает использование из центра экрана, из угла эрана можно вызвать только противоположный ему по диагонали угол. Этот режим в файле конфигурации отмечается символом '3'. + +'n' и '0' в начале конфигурационного файла отключают утилиту. Начиная с версии 0.3.6 в конфигураторе HACONFIG есть возможность выбрать любой из этих 4 режимов работы Hot Angles. + Прочие рекомендации: -------------------------------------------------- @@ -65,8 +71,8 @@ http://websvn.kolibrios.org/dl.php?repname=Kolibri+OS&path=%2Fprograms%2Fother%2 [+] знак минус не влияет на попытку запуска в конкретном углу; [+] пустое поле в конфигураторе и пустая строка в конфигурационном файле неверно обрабатываются; [-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles; -[-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция; -[-] режим жеста/направления: зажимаем активирующую клавишу, после этого приложение анализирует мышь, в зависимости от направления движения мыши (от начальных координат в момент активации опции) выбирается активируемый угол - происходит реакция; +[+] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция; +[+] режим жеста/направления: зажимаем активирующую клавишу, после этого приложение анализирует мышь, в зависимости от направления движения мыши (от начальных координат в момент активации опции) выбирается активируемый угол - происходит реакция; [+] добавить диалог выбора пути OpenDialog в конфигураторе; [+] переход на EditBox из библиотеки box_lib; [+] размазывание текста или его наслоение при вводе в поле EditBox'а; diff --git a/roadmap.txt b/roadmap.txt index 276bca0fa9..5e0b9451dd 100644 --- a/roadmap.txt +++ b/roadmap.txt @@ -25,11 +25,11 @@ Notations: [-] semblance of cron; [-] jabber xmpp-client; [-] drive format utility (only for fully supported FS); -[-] development and discussion of architecture Kolibri Machine Controller(KMC), semblance of LinuxCNC, based on MachineKit; +[+] development and discussion of architecture Kolibri Machine Controller(KMC), semblance of LinuxCNC, based on MachineKit; [+] Apps: CNC Editor, Hot Angles, SysMon; [-] modify&improve apps: IconEdit, uPDF; -[-] new app "Notes"; -[-] port / adapt one of the existing text editors with code highlighting; +[+] new app "Notes"; +[+] port / adapt one of the existing text editors with code highlighting; [-] QR-code in boot log and QR-code utility; [-] fixing a branch/tags in SVN. @@ -59,11 +59,11 @@ Notations: [-] приложение аналог cron; [-] jabber xmpp-клиент; [-] утилита форматирования дисков (только для полностью поддерживаемых ФС); -[-] проработка архитектуры Kolibri Machine Controller(KMC), аналога LinuxCNC, на основе MachineKit; +[+] проработка архитектуры Kolibri Machine Controller(KMC), аналога LinuxCNC, на основе MachineKit; [+] приложения: CNC Editor, Hot Angles, SysMon; [-] доработать/улучшить приложения: IconEdit, uPDF; -[-] разработать новое приложение "Notes"; -[-] портировать один из существующих текстовых редакторов с подсветкой кода; +[+] разработать новое приложение "Notes"; +[+] портировать один из существующих текстовых редакторов с подсветкой кода; [-] QR-код в логе загрузки и утилита работы с QR-кодами; [-] фиксация ветви/тега в SVN (скорее tags, т.к. до этого ветви использовались для сборок под конкретные архитектуры, а теги как раз для фиксации версий).