Как изменить состояние PopupSwitchMenuItem в расширении gnome

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

переключатель происходит из такого кода:

let toggle = new PopupSwitchMenuItem(desc, active);

и я могу сохранить ссылку на переключатель, чтобы она была известна коду, обрабатывающему ярлык. Но я не знаю, как изменить состояние. Я надеялся, что toggle.set_state(true) может работать, но каким бы ни было переключение объекта, оно не поддерживает set_state()


person Tim Richardson    schedule 19.05.2020    source источник


Ответы (1)


Хорошо, я нашел правильную библиотеку javascript. https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/popupMenu.js и оттуда это работает:

 toggle._switch.state = true;

РЕДАКТИРОВАТЬ: Лучшее решение от Gnome dev Florian Müllner

ie toggle.setToggleState(bool)

Это setToggleState(), см. https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/popupMenu.js#L419

https://discourse.gnome.org/t/newbie-shell-extension-coder-how-to-i-set-the-state-of-a-switch-created-with-popupswitchmenuitem/3370?u=tim_richardson

person Tim Richardson    schedule 19.05.2020