Я делаю тривиальный текстовый редактор (как упражнение) в GTK с использованием Glade, GtkBuilder и C. У меня есть меню редактирования с Cut, Copy и Paste, а также GtkTextView для текст. GtkTextView автоматически связывает последовательности вырезания/копирования/вставки для себя (и даже предоставляет пункты меню, если вы щелкните правой кнопкой мыши). Я хочу подключить пункты меню «Вырезать», «Копировать» и «Вставить» в свою панель меню в текстовое представление, чтобы они действовали так, как ожидалось.Как подключить GtkTextView к GtkMenuItem
Обратите внимание, что это двухстороннее соединение. (1) Когда один из элементов Cut, Copy или Paste GtkMenuItem активирован, он сообщает GtkTextView что-то сделать. (2) Когда выбор сделан или очищен в GtkTextView, Cut и Copy включены или отключены соответственно (см. Gedit в качестве примера). Кроме того, (3), включена ли вставка, зависит от состояния буфера обмена.
Как подключить пункты меню «Вырезать», «Копировать» и «Вставить» в текстовое представление? Есть ли способ сделать это в Glade, или моя программа на C нуждается в дополнительном коде для этого? Есть ли оптимизированный способ сделать это, или мне нужно реализовать все три поведения, указанные в приведенном выше параграфе вручную?
Спасибо, это сработало (сначала я не знал, что вы можете подключиться к свойству через «notify :: property-name»). Однако, я думаю, я нашел лучший способ обработки буфера обмена: подключиться к сигналу «изменение владельца» в буфере обмена. Этот сигнал, кажется, испускается каждый раз, когда буфер обмена обновляется. В моей системе это работало во всех крайних случаях, о которых я мог думать. –