-
-
Notifications
You must be signed in to change notification settings - Fork 90
Expand file tree
/
Copy pathPanelCode.js
More file actions
83 lines (70 loc) · 2.15 KB
/
PanelCode.js
File metadata and controls
83 lines (70 loc) · 2.15 KB
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
import Gio from "gi://Gio";
import GObject from "gi://GObject";
import { makeDropdownFlat, settings as global_settings } from "./util.js";
import { setupRustProject } from "./langs/rust/rust.js";
import { setupTypeScriptProject } from "./langs/typescript/typescript.js";
import { setupJavascriptProject } from "./langs/javascript/javascript.js";
import { setupValaProject } from "./langs/vala/vala.js";
export default function PanelCode({
builder,
previewer,
session: { settings, file },
langs,
}) {
const panel_code = builder.get_object("panel_code");
const button_code = builder.get_object("button_code");
const stack_code = builder.get_object("stack_code");
const dropdown_code_lang = builder.get_object("dropdown_code_lang");
makeDropdownFlat(dropdown_code_lang);
settings.bind(
"show-code",
button_code,
"active",
Gio.SettingsBindFlags.DEFAULT,
);
button_code.bind_property(
"active",
panel_code,
"visible",
GObject.BindingFlags.SYNC_CREATE,
);
settings.bind(
"code-language",
dropdown_code_lang,
"selected",
Gio.SettingsBindFlags.DEFAULT,
);
dropdown_code_lang.connect("notify::selected-item", switchLanguage);
settings.connect("changed::code-language", () => {
global_settings.set_int(
"recent-code-language",
settings.get_int("code-language"),
);
});
const panel = {
panel: panel_code,
};
function switchLanguage() {
panel.language = dropdown_code_lang.selected_item?.string;
stack_code.visible_child_name = panel.language;
previewer.useInternal().catch(console.error);
if (panel.language.toLowerCase() === "javascript") {
setupJavascriptProject(file, langs.javascript.document).catch(
console.error,
);
}
if (panel.language.toLowerCase() === "vala") {
setupValaProject(file).catch(console.error);
}
if (panel.language.toLowerCase() === "rust") {
setupRustProject(file).catch(console.error);
}
if (panel.language.toLowerCase() === "typescript") {
setupTypeScriptProject(file, langs.typescript.document).catch(
console.error,
);
}
}
switchLanguage();
return panel;
}