-
Notifications
You must be signed in to change notification settings - Fork 0
/
InvertSelection.js
62 lines (53 loc) · 1.81 KB
/
InvertSelection.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
var SCRIPT_TITLE = "Invert Selection";
function getClientInfo() {
return {
"name": SV.T(SCRIPT_TITLE),
"category": "Johann JEG Scripts - Utilities",
"author": "Johann JEG - https://github.com/JohannJEG/",
"versionNumber": 1,
"minEditorVersion": 65540
};
}
function getTranslations(langCode) {
if (langCode == "es-la") {
return [
["Invert Selection", "Invertir Selección"]
];
} else if (langCode == "ja-jp") { //I used DeepL translator
return [
["Invert Selection", "逆選択"]
];
} else if (langCode == "zh-cn") { //I used DeepL translator
return [
["Invert Selection", "反向选择"]
];
}
}
function valueInArray(val, arr) {
return arr.indexOf(val) === -1;
}
function main() {
var mainEditorView = SV.getMainEditor();
var selection = mainEditorView.getSelection();
var currentGroup = mainEditorView.getCurrentGroup().getTarget();
var selectedNotes = selection.getSelectedNotes();
if (selectedNotes.length > 0) {
//Invert the current selection
var selectedNotesIndexes = [];
selectedNotes.forEach(function (selectedNote) {
selectedNotesIndexes.push(selectedNote.getIndexInParent());
});
selection.clearAll();
for (var i = 0; i < currentGroup.getNumNotes(); i++) {
if (valueInArray(currentGroup.getNote(i).getIndexInParent(), selectedNotesIndexes)) {
selection.selectNote(currentGroup.getNote(i));
}
}
} else {
//If there are no notes selected, select all notes in the group
for (var i = 0; i < currentGroup.getNumNotes(); i++) {
selection.selectNote(currentGroup.getNote(i));
}
}
SV.finish();
}