forked from esm7/obsidian-rtl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettingsTab.ts
97 lines (84 loc) · 3.07 KB
/
settingsTab.ts
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
import { App, PluginSettingTab, Setting } from 'obsidian';
import { Direction } from 'globals';
import RtlPlugin from 'main';
export type Settings = {
fileDirections: { [path: string]: Direction };
defaultDirection: Direction;
rememberPerFile: boolean;
setNoteTitleDirection: boolean;
setYamlDirection: boolean;
statusBar: boolean;
};
export const DEFAULT_SETTINGS: Settings = {
fileDirections: {},
defaultDirection: 'ltr',
rememberPerFile: true,
setNoteTitleDirection: true,
setYamlDirection: false,
statusBar: true
};
export class RtlSettingsTab extends PluginSettingTab {
settings: Settings;
plugin: RtlPlugin;
constructor(app: App, plugin: RtlPlugin) {
super(app, plugin);
this.plugin = plugin;
this.settings = plugin.settings;
}
display(): void {
let {containerEl} = this;
containerEl.empty();
containerEl.createEl('h2', {text: 'RTL Settings'});
this.plugin.syncDefaultDirection();
new Setting(containerEl)
.setName('Remember text direction per file')
.setDesc('Store and remember the text direction used for each file individually.')
.addToggle(toggle => toggle.setValue(this.settings.rememberPerFile)
.onChange((value) => {
this.settings.rememberPerFile = value;
this.plugin.saveSettings();
this.plugin.adjustDirectionToActiveView();
}));
new Setting(containerEl)
.setName('Default text direction')
.setDesc('What should be the default text direction in Obsidian?')
.addDropdown(dropdown => dropdown
.addOption('ltr', 'LTR')
.addOption('rtl', 'RTL')
.addOption('auto', 'Auto')
.setValue(this.settings.defaultDirection)
.onChange((value) => {
this.settings.defaultDirection = value as Direction;
(this.app.vault as any).setConfig('rightToLeft', value == 'rtl');
this.plugin.saveSettings();
this.plugin.adjustDirectionToActiveView();
}));
new Setting(containerEl)
.setName('Set note title direction')
.setDesc('In RTL notes, also set the direction of the note title.')
.addToggle(toggle => toggle.setValue(this.settings.setNoteTitleDirection)
.onChange((value) => {
this.settings.setNoteTitleDirection = value;
this.plugin.saveSettings();
this.plugin.adjustDirectionToActiveView();
}));
new Setting(containerEl)
.setName('Set YAML direction in Preview')
.setDesc('For RTL notes, preview YAML blocks as RTL. (When turning off, restart of Obsidian is required.)')
.addToggle(toggle => toggle.setValue(this.settings.setYamlDirection ?? false)
.onChange((value) => {
this.settings.setYamlDirection = value;
this.plugin.saveSettings();
this.plugin.adjustDirectionToActiveView();
}));
new Setting(containerEl)
.setName('Show status bar item')
.setDesc('Show a clickable status bar item showing the current direction.')
.addToggle(toggle => toggle.setValue(this.settings.statusBar ?? true)
.onChange((value) => {
this.settings.statusBar = value;
this.plugin.saveSettings();
this.plugin.adjustDirectionToActiveView();
}));
}
}