|
rpm-build |
d023e0 |
const Gio = imports.gi.Gio;
|
|
rpm-build |
d023e0 |
const GLib = imports.gi.GLib;
|
|
rpm-build |
d023e0 |
var NautilusFileOperationsProxy;
|
|
rpm-build |
d023e0 |
var FreeDesktopFileManagerProxy;
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
const NautilusFileOperationsInterface = `<node>
|
|
rpm-build |
d023e0 |
<interface name='org.gnome.Nautilus.FileOperations'>
|
|
rpm-build |
d023e0 |
<method name='CopyURIs'>
|
|
rpm-build |
d023e0 |
<arg name='URIs' type='as' direction='in'/>
|
|
rpm-build |
d023e0 |
<arg name='Destination' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='MoveURIs'>
|
|
rpm-build |
d023e0 |
<arg name='URIs' type='as' direction='in'/>
|
|
rpm-build |
d023e0 |
<arg name='Destination' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='EmptyTrash'>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='TrashFiles'>
|
|
rpm-build |
d023e0 |
<arg name='URIs' type='as' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='CreateFolder'>
|
|
rpm-build |
d023e0 |
<arg name='URI' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='RenameFile'>
|
|
rpm-build |
d023e0 |
<arg name='URI' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
<arg name='NewName' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='Undo'>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='Redo'>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<property name='UndoStatus' type='i' access='read'/>
|
|
rpm-build |
d023e0 |
</interface>
|
|
rpm-build |
d023e0 |
</node>`;
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
const NautilusFileOperationsProxyInterface = Gio.DBusProxy.makeProxyWrapper(NautilusFileOperationsInterface);
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
const FreeDesktopFileManagerInterface = `<node>
|
|
rpm-build |
d023e0 |
<interface name='org.freedesktop.FileManager1'>
|
|
rpm-build |
d023e0 |
<method name='ShowItems'>
|
|
rpm-build |
d023e0 |
<arg name='URIs' type='as' direction='in'/>
|
|
rpm-build |
d023e0 |
<arg name='StartupId' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
<method name='ShowItemProperties'>
|
|
rpm-build |
d023e0 |
<arg name='URIs' type='as' direction='in'/>
|
|
rpm-build |
d023e0 |
<arg name='StartupId' type='s' direction='in'/>
|
|
rpm-build |
d023e0 |
</method>
|
|
rpm-build |
d023e0 |
</interface>
|
|
rpm-build |
d023e0 |
</node>`;
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
const FreeDesktopFileManagerProxyInterface = Gio.DBusProxy.makeProxyWrapper(FreeDesktopFileManagerInterface);
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
function init() {
|
|
rpm-build |
d023e0 |
NautilusFileOperationsProxy = new NautilusFileOperationsProxyInterface(
|
|
rpm-build |
d023e0 |
Gio.DBus.session,
|
|
rpm-build |
d023e0 |
'org.gnome.Nautilus',
|
|
rpm-build |
d023e0 |
'/org/gnome/Nautilus',
|
|
rpm-build |
d023e0 |
(proxy, error) => {
|
|
rpm-build |
d023e0 |
if (error) {
|
|
rpm-build |
d023e0 |
log('Error connecting to Nautilus');
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
);
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
FreeDesktopFileManagerProxy = new FreeDesktopFileManagerProxyInterface(
|
|
rpm-build |
d023e0 |
Gio.DBus.session,
|
|
rpm-build |
d023e0 |
'org.freedesktop.FileManager1',
|
|
rpm-build |
d023e0 |
'/org/freedesktop/FileManager1',
|
|
rpm-build |
d023e0 |
(proxy, error) => {
|
|
rpm-build |
d023e0 |
if (error) {
|
|
rpm-build |
d023e0 |
log('Error connecting to Nautilus');
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
);
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
|
|
rpm-build |
d023e0 |
function openFileWithOtherApplication(filePath) {
|
|
rpm-build |
d023e0 |
let fdList = new Gio.UnixFDList();
|
|
rpm-build |
d023e0 |
let channel = GLib.IOChannel.new_file(filePath, "r");
|
|
rpm-build |
d023e0 |
fdList.append(channel.unix_get_fd());
|
|
rpm-build |
d023e0 |
channel.set_close_on_unref(true);
|
|
rpm-build |
d023e0 |
let builder = GLib.VariantBuilder.new(GLib.VariantType.new("a{sv}"));
|
|
rpm-build |
d023e0 |
let options = builder.end();
|
|
rpm-build |
d023e0 |
let parameters = GLib.Variant.new_tuple([GLib.Variant.new_string("0"),
|
|
rpm-build |
d023e0 |
GLib.Variant.new_handle(0),
|
|
rpm-build |
d023e0 |
options]);
|
|
rpm-build |
d023e0 |
Gio.bus_get(Gio.BusType.SESSION, null,
|
|
rpm-build |
d023e0 |
(source, result) => {
|
|
rpm-build |
d023e0 |
let dbus_connection = Gio.bus_get_finish(result);
|
|
rpm-build |
d023e0 |
dbus_connection.call_with_unix_fd_list("org.freedesktop.portal.Desktop",
|
|
rpm-build |
d023e0 |
"/org/freedesktop/portal/desktop",
|
|
rpm-build |
d023e0 |
"org.freedesktop.portal.OpenURI",
|
|
rpm-build |
d023e0 |
"OpenFile",
|
|
rpm-build |
d023e0 |
parameters,
|
|
rpm-build |
d023e0 |
GLib.VariantType.new("o"),
|
|
rpm-build |
d023e0 |
Gio.DBusCallFlags.NONE,
|
|
rpm-build |
d023e0 |
-1,
|
|
rpm-build |
d023e0 |
fdList,
|
|
rpm-build |
d023e0 |
null,
|
|
rpm-build |
d023e0 |
null);
|
|
rpm-build |
d023e0 |
}
|
|
rpm-build |
d023e0 |
);
|
|
rpm-build |
d023e0 |
}
|