summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2018-03-01 13:28:39 +0100
committerMatěj Cepl <mcepl@cepl.eu>2018-03-01 13:28:39 +0100
commitbc3dd0fab7f4580134e2f3bc4c41720f532bfbaa (patch)
treea1dcfb2eadc54f503d1ae86195660785d92e69d2
parenta20e4979ac7f96588af2b1fef265d23714c380ca (diff)
downloadISS_Above-bc3dd0fab7f4580134e2f3bc4c41720f532bfbaa.tar.gz
Causing a way less disasters. But not working still.
-rw-r--r--extension.js31
1 files changed, 17 insertions, 14 deletions
diff --git a/extension.js b/extension.js
index e3284e7..491e935 100644
--- a/extension.js
+++ b/extension.js
@@ -3,6 +3,7 @@
const Gio = imports.gi.Gio;
const Mainloop = imports.mainloop;
const GObject = imports.gi.GObject;
+const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
@@ -57,7 +58,7 @@ const LocationInterface = '<node> \
const LocationProxy = Gio.DBusProxy.makeProxyWrapper(LocationInterface);
// global variables
-let text, button, label, client;
+let client;
const ISS_Above = new GObject.Class({
Name: 'ISS_Above',
@@ -80,6 +81,8 @@ const ISS_Above = new GObject.Class({
this.current_location = null;
this.iss_coords = null;
+ this.button = null;
+ this.label = null;
this.task_queue = 2; // number of async process to complete
this.timeout_source = null;
@@ -110,11 +113,13 @@ const ISS_Above = new GObject.Class({
},
run: function() {
+ let self = this;
this.getISScoords(function () {
print('run: processing new coords');
- this.task_queue = 1;
- this.processResult();
+ self.task_queue = 1;
+ self.processResult();
});
+ return GLib.SOURCE_CONTINUE;
},
onLocationUpdated: function (proxy, sender, [oldPath, newPath]) {
@@ -135,7 +140,7 @@ const ISS_Above = new GObject.Class({
this.emit('processed_data');
},
- /**
+ /**
* Calculate distance in km of two geographical points
*
* @param lat1 Number latitude of the first point
@@ -193,12 +198,12 @@ const ISS_Above = new GObject.Class({
// https://developer.gnome.org/clutter/stable/ClutterActor.html
if (dist < SOUGHT_DISTANCE) {
// Make the label text completely opaque
- label.set_opacity(255);
+ this.label.set_opacity(255);
print('Make label opaque');
}
else {
// Make the label text completely transparent
- label.set_opacity(0);
+ this.label.set_opacity(0);
print('Make label transparent');
}
}
@@ -212,14 +217,14 @@ function init() {
function enable() {
print('ENABLING ISS Above');
- button = new St.Bin({ style_class: 'panel-button',
+ let button = new St.Bin({ style_class: 'panel-button',
reactive: true,
can_focus: true,
x_fill: true,
y_fill: false,
track_hover: true });
// http://blog.fpmurphy.com/2011/04/replace-gnome-shell-activities-text-string-with-icon.html
- label = new St.Label({ text: 'ISS' });
+ let label = new St.Label({ text: 'ISS' });
print('button is ' + button);
button.set_child(label);
@@ -229,17 +234,15 @@ function enable() {
client = new ISS_Above();
client.getISScoords();
+ client.button = button;
+ client.label = label;
client.timeout_source = Mainloop.timeout_add_seconds(
- CHECK_INTERVAL, client.run);
-
- Mainloop.run();
+ CHECK_INTERVAL, Lang.bind(client, client.run));
}
function disable() {
print('DISABLING ISS Above');
- Main.panel._rightBox.remove_child(button);
+ Main.panel._rightBox.remove_child(client.button);
Mainloop.source_remove(client.timeout_source);
-
- Mainloop.quit();
}