#c# #clipboard #monodevelop #gtk#
#c# #буфер обмена #monodevelop #gtk#
Вопрос:
Как создать пункты меню в Gtk #, которые правильно обрабатываются всеми возможными виджетами? Я добавил действия копирования / вставки / etc в меню Gtk #, но как это передается любому виджету, имеющему фокус? Вам нужно что-то подключить для каждого возможного виджета?
Например, я хотел бы иметь возможность копировать из Gtk.Метки и Gtk.Текстовые области и вставить в Gtk.Entries и Gtk.Текстовые области. Аналогично, опция меню вставки не должна быть чувствительной, скажем, при использовании Gtk только для чтения.Текстовая область.
В связи с этим я хотел бы иметь возможность копировать / вставлять между приложениями, и это должно работать на Linux, Mac и Windows.
Любые указания приветствуются! Хотелось бы увидеть простой пример на C #, который правильно обрабатывает это. Кстати, я работаю в MonoDevelop.
Ответ №1:
В любом случае у меня есть простой пример на C. Посмотрите функции action_cut()
, action_copy()
, и action_paste()
в этом файле: https://github.com/ptomato/gnome-inform7/blob/master/src/actions.c
Если вы хотите, чтобы ваши действия были чувствительными или нечувствительными в зависимости от того, какой виджет находится в фокусе, вам нужно будет подключиться к некоторому сигналу, который сообщает вам, когда фокус меняется, а затем соответствующим образом настроить чувствительность этих действий. Это было бы с моей головы notify::focus-child
.
Комментарии:
1. Спасибо! Похоже, ваш метод является правильным, хотя нужно явно знать типы объектов в вашем окне, проверять типы и знать, что делать для каждого действия для каждого типа. Было бы лучше, если бы GTK создал стандартный интерфейс для виджета для обработки всех стандартных операций gui (вырезать, копировать, выбрать все и т. Д.).