Как удалить пункт меню из Gedit из плагина - PullRequest
1 голос
/ 01 ноября 2011

Я разработал плагин для замены некоторых функций в Gedit.Эта функциональность представлена ​​через один элемент меню.

Как я могу удалить текущий элемент меню, чтобы добавить идентичный новый, кроме того, что этот новый пункт меню будет привязан к моему обратному вызову?

1 Ответ

1 голос
/ 01 ноября 2011

Я не пробовал это на существующих приложениях, но в целом это сводится к следующим шагам.

  1. Получите UIManager: GObject.property(type=Gedit.Window).get_ui_manager().
  2. Получить текущее определение пользовательского интерфейса, используя UIManager.get_ui. Используйте это, чтобы определить, какой элемент удалить.
  3. Получить элемент, используя Builder.get_object, используя имя, найденное в определении пользовательского интерфейса.
  4. Я не уверен в меню, но теперь для найденного элемента вы можете просто позвонить destroy. В качестве альтернативы вы можете получить элемент главного меню и удалить нужного вам ребенка с помощью метода get_children (то есть for i in menu.get_children(): menu.remove(i), где i - это ребенок, от которого вы хотите избавиться: вы вероятно, нужно проверить его, чтобы узнать, какой из них удалить.
  5. Наконец, явно обновите пользовательский интерфейс с помощью UIManager.ensure_update.

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

...