LINUX.ORG.RU

GTK: встроить окно в окно


0

0

Возможно ли осуществить такое: gtk-окно, кнопочки там и всё такое, а в некотрую область окна встроено ещё одно окно (т.е. окно другой программы)?
Конкретно,нужно следующее: нажимаю кнопку "ОК", моя программа выполняет некоторые рассчёты, и в своём же окне выводит график, построенный gnuplot'ом по переданным ему данным.
Как это осуществить?

anonymous

А оно нужно? Зачем именно картинку встраивать. Вместо этого можно график (set terminal ..) назад передавать и уже в gtk их рисовать на GtkDrawingArea.

anonymous
()

да ето возможно если ето поддерживается гнуплотом. Ты должен указать для гнуплота в качестве родительского гдк/Х11-окно соответствующее твоему вижету.

Также смотреть в сторону XEmbed.

поройся в архиве ете тема здесь обсуждалась не меньше двух раз

cvv ★★★★★
()

как верно заметил cw, для того, чтобы это было возможно, надо, чтобы приложением (gnuplot) поддерживалось расширение X-протокола XEMBED. Спецификацию я, кажется, видел у Кейта Паккарда на сайте, если он ее не убрал куда-нибудь. В виндах такая же ситуация. Если приложение написано с целью быть куда-то встроенным (как acrobat reader, например). Не все приложения это позволяют делать (встрой попробуй, скажем, notepad).

Zubok ★★★★★
()

Ну и в догонку. Если gnuplot не поддерживает XEMBED, то ты можешь (за что тебе скажем спасибо) написать эту поддержку для него и отослать автору. Поддержку лучше включать при компиляции --with-xembed, например. Было бы очень полезно это сделать, так как это помогло бы огромному числу всяких математических программ и симуляторов/моделяторов.

Zubok ★★★★★
()

Вот спецификация XEMBED.: http://standards.freedesktop.org/xembed-spec/latest/

Без этого, я думаю, единственным вариантом будет общаться с gnuplot через текстовый пайп.

Совет отрисовывать на gnuplot а потом передавать в Gtk Drawing Area не очень хорош, потому что не позволит изменять размеры графика и использовать навигацию по графику, какая есть в gnuplot.

Zubok ★★★★★
()
Ответ на: комментарий от Valeriy_Onuchin

Думаю, что ты прав. Да, действительно можно сделать XReparenWindow, как это делают WM, но часть функциональности будет недоступна. Это как раз отмечатеся здесь:

http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html#rationale

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Но для встраивания графика может быть вполне достаточно и стандартного механизма XReparentWindow. Единственное, что сейчас мне не совсем понятно (ибо не занимался вплотную проблемой), как получится с навигацией (приблизить, уменьшить, переместиться по графику). Просто я не знаю, если ли какие-нибудь механизмы для этого в gnuplot через сокеты. Насколько я понял, key shortcuts при XReparentWindow не работают (поэтому XEmbed и придумали).

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.