Я пытаюсь сделать кнопку в своем собственном плагине VSC, который должен застегнуть корневой каталог, который я открыл в коде Visual Studio. Когда я нажимаю на кнопку, она, кажется, не стреляет. Попытка console.log или vscode.window.showinformationmessage тоже ничего не показывает, поэтому я довольно уверен, что функция не верна. Я искал разные решения, но никто не работает. Я также пытался получить информацию из документов VSC, но безрезультатно. ): < /p>
"contributes": {
"commands": [
{
"command": "zipView.zipRootFolder",
"title": "Zip Root Folder"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "zipView",
"title": "Zip",
"icon": "./src/icon/download_button.png"
}
]
},
"views": {
"zipView": [
{
"id": "zipButtonView",
"name": "Zip Button",
"contextualTitle": "Zip Root Folder",
"type": "webview"
}
]
}
}
my zipbutton.ts :
import * as vscode from 'vscode';
import * as fs from 'fs';
import * as path from 'path';
import archiver from 'archiver';
export function registerZipButton(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.window.registerWebviewViewProvider(
ZipButtonViewProvider.viewType,
new ZipButtonViewProvider(context.extensionUri)
)
);
context.subscriptions.push(
vscode.commands.registerCommand('zipView.zipRootFolder', zipRootFolder)
);
}
class ZipButtonViewProvider implements vscode.WebviewViewProvider {
public static readonly viewType = 'zipView.zipButtonView';
constructor(private readonly extensionUri: vscode.Uri) {}
public resolveWebviewView(
webviewView: vscode.WebviewView,
context: vscode.WebviewViewResolveContext,
_token: vscode.CancellationToken
) {
webviewView.webview.options = {
enableScripts: true,
};
webviewView.webview.html = `
Zip Button
button {
background-color: #007acc;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
}
button:hover {
background-color: #005f9e;
}
Zip Root Folder
const vscode = acquireVsCodeApi();
document.getElementById('zipButton').addEventListener('click', () => {
vscode.postMessage({ command: 'zip' });
});
`;
webviewView.webview.onDidReceiveMessage((message) => {
if (message.command === 'zip') {
vscode.commands.executeCommand('zipView.zipRootFolder'); // Roep het commando aan
}
});
}
}
// Logic for zip
async function zipRootFolder() {
vscode.window.showInformationMessage(`Wassup`);
console.log("wassup");
const workspaceFolders = vscode.workspace.workspaceFolders;
if (!workspaceFolders) {
vscode.window.showErrorMessage('Er is geen workspace geopend.');
return;
}
const rootPath = workspaceFolders[0].uri.fsPath;
const zipPath = path.join(rootPath, 'root-folder.zip');
try {
const output = fs.createWriteStream(zipPath);
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', () => {
vscode.window.showInformationMessage(`Map is succesvol gezipt naar: ${zipPath}`);
});
archive.on('error', (err) => {
throw err;
});
archive.pipe(output);
archive.directory(rootPath, false);
await archive.finalize();
} catch (error) {
let errorMessage = 'Fout bij zippen...';
if (error instanceof Error) {
errorMessage = error.message;
}
vscode.window.showErrorMessage(`Fout bij het zippen: ${errorMessage}`);
}
}
my extension.ts :
import * as vscode from 'vscode';
import { listExtensions } from './utils/extensionsUtils';
import { monitorDebugSessions } from './utils/debugUtils';
import { onchangeText } from './utils/keydownUtils';
import { registerZipButton } from './components/zipButton';
export function activate(context: vscode.ExtensionContext): void {
console.log('Your extension is now up and running!');
registerZipButton(context);
}
export function deactivate(): void {
console.log('Your extension is now deactivated!');
//HERE SHOULD COME THE SELF SIGNED STUFF
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... lick-on-it
Кнопка плагина VSC не загружается, когда я нажимаю на нее ⇐ Javascript
Форум по Javascript
-
Anonymous
1738064931
Anonymous
Я пытаюсь сделать кнопку в своем собственном плагине VSC, который должен застегнуть корневой каталог, который я открыл в коде Visual Studio. Когда я нажимаю на кнопку, она, кажется, не стреляет. Попытка console.log или vscode.window.showinformationmessage тоже ничего не показывает, поэтому я довольно уверен, что функция не верна. Я искал разные решения, но никто не работает. Я также пытался получить информацию из документов VSC, но безрезультатно. ): < /p>
"contributes": {
"commands": [
{
"command": "zipView.zipRootFolder",
"title": "Zip Root Folder"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "zipView",
"title": "Zip",
"icon": "./src/icon/download_button.png"
}
]
},
"views": {
"zipView": [
{
"id": "zipButtonView",
"name": "Zip Button",
"contextualTitle": "Zip Root Folder",
"type": "webview"
}
]
}
}
my zipbutton.ts :
import * as vscode from 'vscode';
import * as fs from 'fs';
import * as path from 'path';
import archiver from 'archiver';
export function registerZipButton(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.window.registerWebviewViewProvider(
ZipButtonViewProvider.viewType,
new ZipButtonViewProvider(context.extensionUri)
)
);
context.subscriptions.push(
vscode.commands.registerCommand('zipView.zipRootFolder', zipRootFolder)
);
}
class ZipButtonViewProvider implements vscode.WebviewViewProvider {
public static readonly viewType = 'zipView.zipButtonView';
constructor(private readonly extensionUri: vscode.Uri) {}
public resolveWebviewView(
webviewView: vscode.WebviewView,
context: vscode.WebviewViewResolveContext,
_token: vscode.CancellationToken
) {
webviewView.webview.options = {
enableScripts: true,
};
webviewView.webview.html = `
Zip Button
button {
background-color: #007acc;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
}
button:hover {
background-color: #005f9e;
}
Zip Root Folder
const vscode = acquireVsCodeApi();
document.getElementById('zipButton').addEventListener('click', () => {
vscode.postMessage({ command: 'zip' });
});
`;
webviewView.webview.onDidReceiveMessage((message) => {
if (message.command === 'zip') {
vscode.commands.executeCommand('zipView.zipRootFolder'); // Roep het commando aan
}
});
}
}
// Logic for zip
async function zipRootFolder() {
vscode.window.showInformationMessage(`Wassup`);
console.log("wassup");
const workspaceFolders = vscode.workspace.workspaceFolders;
if (!workspaceFolders) {
vscode.window.showErrorMessage('Er is geen workspace geopend.');
return;
}
const rootPath = workspaceFolders[0].uri.fsPath;
const zipPath = path.join(rootPath, 'root-folder.zip');
try {
const output = fs.createWriteStream(zipPath);
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', () => {
vscode.window.showInformationMessage(`Map is succesvol gezipt naar: ${zipPath}`);
});
archive.on('error', (err) => {
throw err;
});
archive.pipe(output);
archive.directory(rootPath, false);
await archive.finalize();
} catch (error) {
let errorMessage = 'Fout bij zippen...';
if (error instanceof Error) {
errorMessage = error.message;
}
vscode.window.showErrorMessage(`Fout bij het zippen: ${errorMessage}`);
}
}
my extension.ts :
import * as vscode from 'vscode';
import { listExtensions } from './utils/extensionsUtils';
import { monitorDebugSessions } from './utils/debugUtils';
import { onchangeText } from './utils/keydownUtils';
import { registerZipButton } from './components/zipButton';
export function activate(context: vscode.ExtensionContext): void {
console.log('Your extension is now up and running!');
registerZipButton(context);
}
export function deactivate(): void {
console.log('Your extension is now deactivated!');
//HERE SHOULD COME THE SELF SIGNED STUFF
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79393688/vsc-plugin-button-does-not-download-when-i-click-on-it[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия