[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

GtkDialog with GdkWindow as parent

Christian Madsen

2/12/2007 9:13:00 PM

I am trying to create a Gtk::MessageDialog with a win32 window as its
parent (the reason comes in the end). Now, it is possible to make a
Gdk::Window wrapper using

require 'gtk2'

win = Gdk::Window.foreign_new ARGV[0].to_i

But I cannot create a Gtk::MessageDialog with the Gdk::Window as
parent

Gtk::MessageDialog.new(win,
Gtk::MessageDialog::MODAL,
Gtk::MessageDialog::INFO,
Gtk::MessageDialog::BUTTONS_OK,
"foreign_test")

gives me the warning

GLib-GObject-WARNING **:invalid cast from `GdkWindow' to `GtkWindow'

which is fair enough and the failed assertion

Gtk-CRITICAL **:gtk_message_dialog_new: assertion `parent == NULL ||
GTK_IS_WINDOW (parent)' failed

So: is there a way that I can create a Gtk::MessageDialog or other Gtk
window with a Gdk window as parent?

For the curious minds: what I am trying to do is to make a ruby
screensaver wrapper for win32. It consists of a .c executable that
functions as a windows screensaver and invokes a ruby script that
shall be the actual screensaver. When the windows "display properties"
app wants to call the configuration dialog, it calls the executable
with its own window handle as argument. This of cause works for
windows apps, but shouldn't it be possible to make this work with Gtk?

2 Answers

Masao Mutoh

2/13/2007 12:59:00 PM

0

Hi,

On Tue, 13 Feb 2007 06:15:09 +0900
"Christian Madsen" <doktormadsen@gmail.com> wrote:

> I am trying to create a Gtk::MessageDialog with a win32 window as its
> parent (the reason comes in the end). Now, it is possible to make a
> Gdk::Window wrapper using
> require 'gtk2'
>
> win = Gdk::Window.foreign_new ARGV[0].to_i
>
> But I cannot create a Gtk::MessageDialog with the Gdk::Window as
> parent
>
> Gtk::MessageDialog.new(win,
> Gtk::MessageDialog::MODAL,
> Gtk::MessageDialog::INFO,
> Gtk::MessageDialog::BUTTONS_OK,
> "foreign_test")
>
> gives me the warning
>
> GLib-GObject-WARNING **:invalid cast from `GdkWindow' to `GtkWindow'
>
> which is fair enough and the failed assertion

The error message means "Use Gtk::Window instead of Gdk::Window".
You need to use Gtk::Window as the parent.

Christian Madsen

2/13/2007 7:01:00 PM

0

On 13 Feb., 13:59, Masao Mutoh <m...@highway.ne.jp> wrote:
> Hi,
>
> On Tue, 13 Feb 2007 06:15:09 +0900
>
>
>
> "Christian Madsen" <doktormad...@gmail.com> wrote:
> > I am trying to create a Gtk::MessageDialog with a win32 window as its
> > parent (the reason comes in the end). Now, it is possible to make a
> > Gdk::Window wrapper using
> > require 'gtk2'
>
> > win = Gdk::Window.foreign_new ARGV[0].to_i
>
> > But I cannot create a Gtk::MessageDialog with the Gdk::Window as
> > parent
>
> > Gtk::MessageDialog.new(win,
> > Gtk::MessageDialog::MODAL,
> > Gtk::MessageDialog::INFO,
> > Gtk::MessageDialog::BUTTONS_OK,
> > "foreign_test")
>
> > gives me the warning
>
> > GLib-GObject-WARNING **:invalid cast from `GdkWindow' to `GtkWindow'
>
> > which is fair enough and the failed assertion
>
> The error message means "Use Gtk::Window instead of Gdk::Window".
> You need to use Gtk::Window as the parent.

Thanks, Masao.

But is it then possible to create a Gtk::Window which is modal to the
foreign Gdk::Window? Then I could use the Gtk::Window as a dialog...