CudaText 'tabs' API вопросы

Shovel
Posts: 141
Joined: 31.12.2019 10:16

CudaText 'tabs' API вопросы

Post by Shovel »

1) Возможно ли узнать на которой вкладке был совершен правый клик в 'on_menu()' на 'tabs'?
2) Есть ли какая-то поддержка drag-and-drop в кастомных диалогах или может способ изменить курсор, если самому придется делать? (для перетаскивания вкладок 'tabs' и строк 'listbox_ex')
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

drag-drop: нет поддержки. пока нет этого в планах.

tabs: в on_menu надо прочитать св-ва контрола, они дадут индекс таба.
Prop "val"

check: "0", "1" or "?" (grayed state)
radio, checkbutton: "0", "1"
edit, edit_pwd, spinedit, combo, filter_*: text
memo: "\t"-separated lines, in which "\t" chars must be replaced to chr(3)
combo_ro, listbox, radiogroup, listview: current index
checkgroup: ","-separated checked states ("0", "1")
checklistbox, checklistview: index + ";" + checked_states
tabs, pages: index of active tab
trackbar, progressbar: int position
если правый клик не ставит активность таба, не знаю как. видимо надо чтоб Куд ставил таб активным?
Shovel
Posts: 141
Joined: 31.12.2019 10:16

Post by Shovel »

Может дать доступ к ширине вкладок, чтобы самому можно было посчитать?
Если это не реалистичный вариант, то буду рад активированию правым кликом
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

для разных ОС надо иметь доступ к Rect вкладок, т к они еще скроллятся. могу дать АПИ для получения этих rects. дайте Github issue, чтобы не забыть, плиз?

> активированию правым кликом
похоже нельзя так сделать.
Shovel
Posts: 141
Joined: 31.12.2019 10:16

Post by Shovel »

uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

подумал что лучше сделать не 'tabs' а 'toolbar' контрол. тулбар- темизируется. прокручивается если места мало. можно еще самому кнопки класть- контролы 'button_ex' темизирутся ('button' нет).

Control "button_ex": to change advanced props, you must get handle via DLG_CTL_HANDLE, and pass it to button_proc().
Control "toolbar" don't have "items"/"value": to work with it, you must get handle via DLG_CTL_HANDLE, and pass it to toolbar_proc().
Shovel
Posts: 141
Joined: 31.12.2019 10:16

Post by Shovel »

Попробовал 'toolbar', не получается меню сделать на кнопках

Code: Select all

    # create menu
    h_menu = menu_proc(0, MENU_CREATE)
    menu_proc(h_menu, MENU_ADD, command=2700, caption='About1')
    
    # create button
    toolbar_proc(h_tbar, TOOLBAR_ADD_ITEM)
    count = toolbar_proc(h_tbar, TOOLBAR_GET_COUNT)
    btn_id = toolbar_proc(h_tbar, TOOLBAR_GET_BUTTON_HANDLE, index=count-1)
    button_proc(btn_id, BTN_SET_KIND, BTNKIND_TEXT_ONLY)
    button_proc(btn_id, BTN_SET_TEXT, 'Btn')
    button_proc(btn_id, BTN_SET_DATA1, lambda: print(f'clicked tolbnar btn'))
    button_proc(btn_id, BTN_SET_MENU, h_menu)
    
    ### Problem
    print('before')  ### printed
    try:
      #bmenu = button_proc(btn_id, BTN_GET_MENU )
      pass
    except Exception as ex:
      print('ex...') ### not printed
      print(f'  :{ex}')

    print('after') ### not printed
На правом клике на кнопке только 'on_menu' из 'toolbar' вызывается.
Еще, если раскомментировать строку в try блоке с 'BTN_GET_MENU', исполнение кода останавливается там, без каких-либо ошибок в консоли, и я не вижу ни одного последующего принта.
Не знаю баг ли это или я что-то сделал, потому что я не нашел ни одного примера использования BTN_GET_MENU и BTN_SET_MENU :)

Я подумал, что действительно лучше перейти на темизированные виджеты, попробовал 'editor_edit' вместо обычного 'edit'... не моноширные шрифты не поддерживаются? прикладываю как у меня это выглядит.
С 'edit' у меня получается выбор между отсутствием темизации в 'edit' и отсутствием поддежки моноширных шрифтов в 'editor_edit'?
Attachments
nonmono.gif
nonmono.gif (11.6 KiB) Viewed 1425 times
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

>отсутствием поддежки моноширных шрифтов в 'editor_edit'?
ну вот опять. :)
моноширные только и работают.
https://github.com/Alexey-T/CudaText/issues/2813
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

> button_proc(btn_id, BTN_SET_DATA1, lambda: print(f'clicked tolbnar btn'))
button_proc(btn_id, BTN_SET_MENU, h_menu)

я уже не помню как и что там вызывать. но. я делал плагин cuda_testing_dlg_proc.
он- в Гитхабе куды в папке py.
и он показывает что делать.
вызов
plugins / testing dialog API / modal.
в диалоге нажать на кнопку 'menu here'. она создает свое меню и показывает его.
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

и потом ты передаешь callback как "простую lambda", а это не ОК, там специальный вид callback.
только строка!
BTN_SET_DATA1: Sets data1. Param "value" must be callback: #Callback_param.
Post Reply