Launching a Gtk.Dialog from a gnome shell extension (not prefs.js)?



Hi all,

I'm writing an extension that is a port of another program which comes
with a Gtk  .ui file defining a preferences dialog.

Since the dialog is all already nicely defined for me in the .ui file,
I'd like to use it for:

* prefs.js (GNOME 3.4 version)
* I click a menu item and the dialog gets launched (from extension.js
in GNOME 3.2).

Now I have succeeded in the first case (launching from prefs.js) but
am having trouble with the second, because if I just do
`dialog.show_all()` from `extension.js` on my loaded dialog, nothing
happens.

This is what I'm doing to load all the widgets in the UI

    // load the UI - this is fine
    let builder = new Gtk.Builder()
    builder.add_from_file(GLib.build_filenamev([extensionPath,
'preferences.ui']));

Now for prefs.js since this doesn't want a dialog but a widget to
embed, I can query for the vbox that is the first child of the dialog
in the UI file - it's called 'dialog-vbox1':

    let widg = builder.get_object('dialog-vbox1');
    widg.unparent();
    widg.show_all();

If I return `widg` from `buildPrefsWidget` in `prefs.js`, that shows
up in gnome-shell-extension-prefs nicely.

Now on to the second problem - in my extension there is a PopupMenu
and clicking on one the items should launch the widget.

    item.connect('activate', function () {
        let dialog = builder.get_object('pager_properties_dialog'); //
the top-level widget in the UI file
         // TODO: ... connect up various events here ...
        dialog.show_all();
    });

However, this doesn't work - nothing at all happens.

Question - what do I do to get this dialog showing when launched from
extension.js?

I could re-implement the dialog into the PopupMenu but it seems like I
could save a lot of work by just using the same UI file for
everything.

cheers!


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]