This repository has been archived by the owner on Nov 27, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
appletManager.js
97 lines (92 loc) · 3.52 KB
/
appletManager.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function unpatchAppletManager(){
AppletManager.getAppletDefinition = old.appletmanager.getAppletDefinition;
AppletManager.saveAppletsPositions = old.appletmanager.saveAppletsPositions;
AppletManager.onEnabledAppletsChanged();
}
function patchAppletManager(){
let am = AppletManager;
/*************************************************************************************************** overwrite AppletManager.getAppletDefinition */
old.appletmanager.getAppletDefinition = am.getAppletDefinition;
am.getAppletDefinition = function(definition) {
global.log(definition);
let elements = definition.split(":");
if (elements.length > 4) {
let panelid = elements[0];
if (elements[0] == "panel1"){
panelid = 0;
}
else if (elements[0] == "panel2"){
panelid = 1;
}
if (!Main.panelManager.panels[panelid]){
panelid = 0;
}
let panel = Main.panelManager.panels[panelid].panel;
let orientation = panel.bottomPosition ? St.Side.BOTTOM : St.Side.TOP;
let order;
try { order = parseInt(elements[2]); } catch(e) { order = 0; }
let location = panel._leftBox;
let center = elements[1] == "center";
if (center)
location = panel._centerBox;
else if (elements[1] == "right")
location = panel._rightBox;
return {
panel: panel,
orientation: orientation,
location: location,
center: center,
order: order,
uuid: elements[3],
applet_id: elements[4]
};
}
global.logError("Bad applet definition: " + definition);
return null;
}
/*************************************************************************************************** overwrite AppletManager.saveAppletsPositions */
old.appletmanager.saveAppletsPositions = am.saveAppletsPositions;
am.saveAppletsPositions = function() {
global.log("saveAppletsPositions");
let panels = Main.panelManager.getPanels();
let zones_strings = ["left", "center", "right"];
let allApplets = new Array();
for (var i in panels){
let panel = panels[i];
global.log(panel);
if (!panel) continue;
for (var j in zones_strings){
let zone_string = zones_strings[j];
let zone = panel["_"+zone_string+"Box"];
let children = zone.get_children();
for (var k in children) if (children[k]._applet) allApplets.push(children[k]._applet);
}
}
let applets = new Array();
for (var i in panels){
let panel = panels[i];
if (!panel) continue;
let panel_string;
panel_string = i;
for (var j in zones_strings){
let zone_string = zones_strings[j];
let zone = panel["_"+zone_string+"Box"];
for (var k in allApplets){
let applet = allApplets[k];
let appletZone;
if (applet._newPanelLocation != null) appletZone = applet._newPanelLocation;
else appletZone = applet._panelLocation;
let appletOrder;
if (applet._newOrder != null) appletOrder = applet._newOrder;
else appletOrder = applet._order;
if (appletZone == zone) applets.push(panel_string+":"+zone_string+":"+appletOrder+":"+applet._uuid+":"+applet.instance_id);
}
}
}
for (var i in allApplets){
allApplets[i]._newPanelLocation = null;
allApplets[i]._newOrder = null;
}
global.settings.set_strv('enabled-applets', applets);
}
}