получить gtkWidget окна

Модератор: Модераторы разделов

dem
Сообщения: 14

получить gtkWidget окна

Сообщение dem »

добрый день, я пишу плагин для приложения, мордочка у которого написана на GTK. мне из плагина необходимо общаться с пользователем, не подскажете как получить GtkWEidget указывающий на основное окно программы, что бы встроить в него кнопку? есть какие-нибудь функции, что бы узнать gtkWidget любого виджета?
ps приложение - wireshark
Спасибо сказали:
dem
Сообщения: 14

Re: получить gtkWidget окна

Сообщение dem »

ну неужто никто не знает? :(
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: получить gtkWidget окна

Сообщение sergio »

dem писал(а):
21.09.2007 16:33
ну неужто никто не знает? :(

Хоть на какой-нибудь виджет приложения есть ссылка?
Сунул нос в референс - нашел такое:

gtk_widget_get_parent_window ()
GdkWindow* gtk_widget_get_parent_window (GtkWidget *widget);
Определяет родительское окно для widget's.
widget : GtkWidget.
Возвращает : Родительское окно widget.


Вот вижу еще:

gtk_widget_get_root_window ()
GdkWindow* gtk_widget_get_root_window (GtkWidget *widget);
Определяет основное окно в котором распределён данный виджет. Эта функция может быть вызвана только после добавления виджета к верхней иерархии виджетов GtkWindow.
Основное окно полезно для таких целей как создание всплывающего GdkWindow связанного с окном. В основном, вы должны создавать только ресурсы определяющие отображение виджета при реализации и должны освобождать эти ресурсы когда реализация виджета аннулирована (unrealized).
widget : GtkWidget
Возвращает : GdkWindow основное окно верхнего уровня для виджета.
Начиная с версии 2.2

Это весьма похоже на то что хотели. Правда не понял, что же тогда было первое... ;)

Надеюсь, уже последнее:

gtk_widget_get_toplevel ()
GtkWidget* gtk_widget_get_toplevel (GtkWidget *widget);
Эта функция возвращает самый верхний виджет в контейнерной иерархии widget. Если widget не имеет родительского виджета, он будет возвращён как виджет верхнего уровня. На возвращаемый виджет не добавляется ссылок; он не должен освобождаться.
Помните о различных поведениях gtk_widget_get_ancestor(); gtk_widget_get_ancestor (widget, GTK_TYPE_WINDOW) вернёт NULL если widget был в окне верхнего уровня, и если окно было внутри GtkWindow-наследника виджета который был в свою очередь внутри GtkWindow верхнего уровня. В то время как второй случай может показаться мало вероятным, он происходит когда GtkPlug встроен в GtkSocket внутри некоторого приложения.
Для надёжного определения GtkWindow верхнего уровня, используйте gtk_widget_get_toplevel() и контролируйте установлен ли флаг TOPLEVEL в результате.

Код: Выделить всё

 GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
 if (GTK_WIDGET_TOPLEVEL (toplevel))
   {
     [ Perform action on toplevel. ]
   }

widget : GtkWidget
Возвращает :Самый верхний предок виджета widget, или сам widget, если у него нет предков.

Есть смысл взять оригинальный текст и попытаться понять кто есть ху. От этих переводов на русский обыкновенно только путаница в терминологии добавляецо... :pooh_on_ball:
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
dem
Сообщения: 14

Re: получить gtkWidget окна

Сообщение dem »

Хоть на какой-нибудь виджет приложения есть ссылка?

вот в этом то и вся проблемма, что ни на какой виджет нету указателя, как говорят на ЛОРе, если автор не позаботился о том, что б оставить указатель на вижет окна, то получть его нельзя. но как-то это странно, неужто по имени окна нельзя получить указатель на него :(
спасбо за ответ, буду копать SDK приложения, возможно там найду решение :)
Спасибо сказали: