MCPcopy Create free account
hub / github.com/chieapp/chie / #createExtensionSetting

Method #createExtensionSetting

src/view/settings-window.ts:124–165  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

122 }
123
124 #createExtensionSetting() {
125 this.extensionsTable = new EditableTable<Extension>([
126 {title: 'Name', key: 'displayName'},
127 {title: 'Path', key: 'dirPath'},
128 ]);
129 this.extensionsTable.view.setStyle({
130 gap: basicStyle.padding,
131 padding: basicStyle.padding,
132 });
133
134 this.extensionsTable.editButton.setVisible(false);
135 this.extensionsTable.onRemoveRow.connect((index, extension) => {
136 try {
137 extensionManager.unregisterExternalExtension(extension.name);
138 } catch (error) {
139 alert(`Failed to remove extension: ${error.message}`, {window: this.window});
140 }
141 });
142
143 const addButton = this.extensionsTable.buttonsArea.addButton('Add');
144 addButton.onClick = () => {
145 const dialog = gui.FileOpenDialog.create();
146 dialog.setTitle('Load extension');
147 dialog.setButtonLabel('Load');
148 dialog.setOptions(gui.FileDialog.optionPickFolders);
149 if (dialog.runForWindow(this.window)) {
150 try {
151 extensionManager.registerExternalExtension(dialog.getResults()[0]);
152 } catch (error) {
153 alert(`Failed to load extension: ${error.message}`, {window: this.window});
154 }
155 }
156 };
157
158 // Fill table with existing extensions.
159 const update = () => this.extensionsTable.setData(extensionManager.getExtensions());
160 this.connections.add(extensionManager.onAddExtension.connect(update));
161 this.connections.add(extensionManager.onRemoveExtension.connect(update));
162 update();
163
164 return this.extensionsTable.view;
165 }
166}

Callers 1

constructorMethod · 0.95

Calls 6

alertFunction · 0.85
updateFunction · 0.85
addButtonMethod · 0.45
setTitleMethod · 0.45

Tested by

no test coverage detected