forked from davidrthorn/cross_reference
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sidebar-code.gs
131 lines (96 loc) · 4 KB
/
sidebar-code.gs
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//
// ***
// Executes commands issued in sidebar
// ***
//
// Update the Docs property stores
function updateProps(settings) {
var document_properties = PropertiesService.getDocumentProperties();
for (var i in document_properties.getProperties()) {
if (i.substr(0, 6) === "cross_") document_properties.deleteProperty(i);
}
for (var i in settings) {
var setting = settings[i],
code = setting[0].substr(0, 3),
property_key = 'cross_' + code;
var property_value = '';
for (var j = 0; j < (setting.length - 1); j++) {property_value += setting[j] + '_'}
property_value += setting[setting.length - 1];
document_properties.setProperty(property_key, property_value);
}
updateDoc();
return '#save-apply';
}
// Get the settings for this document
function getSettings() {
var document_properties = PropertiesService.getDocumentProperties().getProperties(),
user_properties = PropertiesService.getUserProperties().getProperties(),
settings = {}
settings['fig'] = 'figur_Figure_figure _null_null_null_figure _null_null_null_null_null';
settings['tab'] = 'table_Table_table _null_null_null_table _null_null_null_null_null';
settings['equ'] = 'equat_Equation_equation _null_null_null_equation _null_null_null_null_null';
settings['fno'] = 'fnote_Footnote__null_null_null_fn. _null_null_null_null_null';
for (var i in user_properties) {
if (i.substr(0, 5) === 'cross') settings[i.substr(6, i.length)] = user_properties[i];
}
for (var i in document_properties) {
if (i.substr(0, 5) === 'cross') settings[i.substr(6, i.length)] = document_properties[i];
}
return settings
}
// Store defaults in user props store
function storeDefault(temp_settings) {
var user_properties = PropertiesService.getUserProperties();
for (var i in temp_settings) {
var settings = temp_settings[i];
storePairing(user_properties, settings);
Utilities.sleep(200)
}
return '#save-defaults'
}
// Store custom category in user props store
function storeCustom(custom_settings) {
var user_properties = PropertiesService.getUserProperties();
storePairing(user_properties, custom_settings);
}
// Store given settings in user props store
function storePairing(user_props, settings) {
var code = settings[0].substr(0, 3);
var property_key = 'cross_' + code;
var property_value = '';
for (var j = 0; j < (settings.length - 1); j++) {
property_value += settings[j] + '_'
}
property_value += settings[settings.length - 1];
user_props.setProperty(property_key, property_value);
}
// Return default settings for equation, figure, table
function restoreDefault() {
var user_properties = PropertiesService.getUserProperties().getProperties(),
settings = {};
settings['fig'] = 'figur_Figure_figure _null_null_null_figure _null_null_null_null_null';
settings['tab'] = 'table_Table_table _null_null_null_table _null_null_null_null_null';
settings['equ'] = 'equat_Equation_equation _null_null_null_equation _null_null_null_null_null';
for (var i in user_properties) {
if (i.substr(0,5) === 'cross') settings[i.substr(6, i.length)] = user_properties[i];
}
return settings
}
// Remove a custom category from user prop stores
function removePair(code) {
PropertiesService.getUserProperties().deleteProperty("cross_" + code);
PropertiesService.getDocumentProperties().deleteProperty("cross_" + code);
}
// Return the color of highlighted text
function cloneColor(lab_or_ref) {
var selection = DocumentApp.getActiveDocument().getSelection();
if (!selection) {
DocumentApp.getUi().alert("Clone colour", "Please select some text with the colour you want to clone.", DocumentApp.getUi().ButtonSet.OK);
return
}
var element = selection.getRangeElements()[0];
if (!element.getElement().editAsText) return;
var text = element.getElement().editAsText(),
offset = (element.isPartial()) ? element.getStartOffset(): 0;
return [lab_or_ref, text.getAttributes(offset).FOREGROUND_COLOR.substr(1,7)];
}