Add a SelectArea() DBus method

This will be useful for e.g. selecting an area for a screenshot.

https://bugzilla.gnome.org/show_bug.cgi?id=687954
This commit is contained in:
Cosimo Cecchi
2012-11-08 20:19:19 -05:00
parent 8be3c5ed21
commit dd19459e18
5 changed files with 167 additions and 1 deletions

View File

@ -11,6 +11,7 @@ const ExtensionDownloader = imports.ui.extensionDownloader;
const ExtensionUtils = imports.misc.extensionUtils;
const Flashspot = imports.ui.flashspot;
const Main = imports.ui.main;
const SelectArea = imports.ui.selectArea;
const GnomeShellIface = <interface name="org.gnome.Shell">
<method name="Eval">
@ -40,6 +41,12 @@ const GnomeShellIface = <interface name="org.gnome.Shell">
<arg type="s" direction="in" name="filename"/>
<arg type="b" direction="out" name="success"/>
</method>
<method name="SelectArea">
<arg type="i" direction="out" name="x"/>
<arg type="i" direction="out" name="y"/>
<arg type="i" direction="out" name="width"/>
<arg type="i" direction="out" name="height"/>
</method>
<method name="FlashArea">
<arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="y"/>
@ -182,6 +189,23 @@ const GnomeShell = new Lang.Class({
flash, invocation));
},
SelectAreaAsync: function (params, invocation) {
let selectArea = new SelectArea.SelectArea();
selectArea.show();
selectArea.connect('finished', Lang.bind(this,
function(selectArea, areaRectangle) {
if (areaRectangle) {
let retval = GLib.Variant.new('(iiii)',
[areaRectangle.x, areaRectangle.y,
areaRectangle.width, areaRectangle.height]);
invocation.return_value(retval);
} else {
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
"Operation was cancelled");
}
}));
},
FlashArea: function(x, y, width, height) {
let flashspot = new Flashspot.Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire();