Page 2 of 3

Posted: 31.01.2021 18:27
by uvviewsoft
спасибо, интересно!

Posted: 01.02.2021 11:56
by Shovel
https://github.com/halfbrained/cuda_cns_complete
Вроде все правильно.
(Сначал сделал через обычное меню. Потом проверил и оказалось, что 'Editor.complete()' работает в консоли :D, пришлось переделывать)

Posted: 01.02.2021 13:16
by uvviewsoft
спасибо! давайте порешаем вопросы. в GH issues. и бету обновляю- 5 минут

Posted: 02.02.2021 11:37
by Shovel
Я в восторге от этого плагина, хотел еще один сделать для консоли, и тоже нужен 'on_key_down()' консоли... возможно добавить как-то второй callback?
DLG_PROP_GET не возвращает существующий 'on_key_down' callback, так что я не могу сам перевызвать...

EDIT: я хотел испольнять комманды начинающиеся с '>' - в терминале (через 'os.popen('ls -l').read()'), мелоч, так что не страшно если невозможно

Posted: 02.02.2021 11:50
by uvviewsoft
>и тоже нужен 'on_key_down()' консоли... возможно добавить как-то второй callback?

как это? у контрола editor dlg_proc дает задать колбек

Special events for control "editor"/"editor_edit"/"editor_combo":
"on_change": Called after text is changed.
"on_caret": Called after caret position and/or selection is changed.
"on_scroll": Called after editor is scrolled.
"on_key_down": Called when user presses a key. Param "data" is tuple (int_key_code, str_key_state). Method can return False to disable default processing.
"on_key_up": Called when user depresses a key. Param "data" is tuple (int_key_code, str_key_state). Method can return False to disable default processing.

>испольнять комманды начинающиеся с '>' - в терминале

ой, вряд ли такое будет удобно юзерам, лучше доработать plugin Terminal.

Posted: 02.02.2021 12:43
by Shovel
Имел в виду имень несолько 'callables' на 'on_key_down' формы.

Может я что-то неправильно делаю, но у меня не работает 'on_key_down' инпута консоли, ничего не происходит. Вот что я пробывал:

Code: Select all

>>> hcons = app_proc(PROC_GET_CONSOLE_FORM, '')
>>> dlg_proc(hcons, DLG_PROP_SET, prop={'keypreview': True})  # True или False не имеет значения
>>> dlg_proc(hcons, DLG_CTL_PROP_SET, name='input', prop={'on_key_down': lambda *args,**vargs: print('key')})
# и тут тишина, и после следующей строки
>>> dlg_proc(hcons, DLG_CTL_PROP_SET, name='input', prop={'on_key_down': 'module=cuda_console_complete;func=_test2;'})

Posted: 02.02.2021 13:12
by uvviewsoft
ОК,обновил бету(там же).

1.0.362 (app 1.123.2)
* add: dlg_proc: DLG_PROP_GET returns also events: about 10 keys 'on_xxxxx'
* add: dlg_proc: DLG_CTL_PROP_GET returns also events: about 20 keys 'on_xxxxx'

оно отдает странные строки в 'on_xxxx'. тестим.

Posted: 02.02.2021 13:31
by uvviewsoft
уточню

1.0.362 (app 1.123.2)
* add: dlg_proc: DLG_PROP_GET returns also events, if they are set: 'on_close', 'on_close_query', 'on_key_down', 'on_key_up', 'on_resize', 'on_mouse_enter', 'on_mouse_exit', 'on_show', 'on_hide'
* add: dlg_proc: DLG_CTL_PROP_GET returns also events, if they are set: 'on_change', 'on_click', 'on_click_dbl', 'on_focus_enter', 'on_focus_exit', 'on_menu', 'on_select', 'on_fold', 'on_unfold', 'on_listbox_draw_item', 'on_mouse_enter', 'on_mouse_exit', 'on_mouse_down', 'on_mouse_up', 'on_editor_caret', 'on_editor_scroll', 'on_editor_key_down', 'on_editor_key_up', 'on_editor_click_gutter', 'on_editor_click_gap', 'on_editor_click_link', 'on_editor_paste'

Posted: 02.02.2021 14:20
by Shovel
Да, у меня тоже странная строка
module=cudatext;func=_dlg_proc_callback_proxy;info="140588559415088:<bound method Command.on_cns_key of <cuda_console_complete.cns_complete.Command object at 0x7fdd523a9c50>>";
<class 'str'>

Я так понимаю, что если нужда подписываться на чужие ивенты станет распространенной, чистый способ организоывать - написать отдельный плагин, через который нужно будет подписываться. Вроде не сложный плагин был бы.
Пока заброшу свою последнюю идею.

(мне очень смешно, сколько мороки было с 5КБ плагином, когда файл менеджер уже 70КБ у меня :D )

Posted: 02.02.2021 14:37
by uvviewsoft
хорошо, тогда скоро выложу обновление Куд и плагин ConsoleComplete я уже выложил..