首页 > 解决方案 > 如何将始终可见的“查看操作”按钮添加到视图?

问题描述

我正在编写一个 vs 代码扩展来在侧边栏中的内置视图中创建始终可见的按钮,但我无法将其中一些放置在视图容器的顶部。还有一些视图我只能在视图未折叠时才显示它们,而有些视图根本不会出现!

自定义视图容器中的自定义视图按预期工作,但我在内置容器中花了很多时间进行某些活动。

以下是每个示例(请参见下面的代码片段)...

扩展容器

活动栏上的“扩展”在“启用”和“推荐”视图上正确显示了我的 HelloWorld 按钮。
如何在“清除扩展输入”按钮旁边的容器顶部添加按钮?

调试容器 1

在“调试”容器中,我可以添加到调试/工具栏,但工具栏仅在调试时出现。
如何添加到侧边栏顶部的“运行”行?
为什么“变量”(和其他)视图中不显示 HelloWorld 按钮 - 即使它们已打开以便显示内置图标?

调试容器 2

Debug 容器中的自定义视图似乎只在打开时显示它的按钮。
如何让它始终可见?

资源管理器容器

同样,资源管理器容器中的“未打开文件夹”和自定义视图似乎只在打开和悬停时显示按钮。一旦你打开一个文件夹,HelloWorld 按钮就根本不会出现。“打开的编辑器”从不显示 HelloWorld。

参考

我主要是用这些作为参考...

测试代码和设置

我添加了这些设置来尝试强制显示操作,但是当树视图折叠时它似乎没有帮助:

"workbench.view.alwaysShowHeaderActions": true 
"scm.alwaysShowActions": true

我一直在使用由yo code(接受所有默认值)生成的基本 HelloWorld 进行测试,并将“贡献”部分替换为:

    "contributes": {
    "commands": [
        {
            "command": "hello1.helloWorld",
            "title": "Hello World 1",
            "icon": "resources/HelloWorld.svg"
        },
        {
            "command": "hello1.helloWorld2",
            "title": "Hello World 2",
            "icon": "resources/HelloWorld2.svg"
        }
    ],
    "views": {
        "debug": [
            {
                "id": "HelloWorldD",
                "name": "HelloWorldD"
            }
        ],
        "explorer": [
            {
                "id": "HelloWorldE",
                "name": "HelloWorldE"
            }
        ]
    },
    "menus": {
        "view/title": [
            {
                "command": "hello1.helloWorld",
                "group": "navigation"
            },
            {
                "command": "hello1.helloWorld2"                 
            }
        ]
    }       
}

如果需要,这是一个用于测试的公共域 svg。

我尝试了其他各种贡献点,但如果我能弄清楚它是如何工作的,那么“菜单 - 视图/标题”似乎是正确的。

背景:

当我不主动编码时,我试图避免使用键盘,所以我希望在不同的地方都有按钮来完成手头的任务。我有各种软件和硬件来协助完成常见的 PC 活动,但我依靠应用程序中的按钮来执行特定于该应用程序的活动。

我探索过的替代方案:

代码中没有“主”工具栏。

状态栏离动作太远 - 编辑器/标题工具栏也是如此。
两者似乎都不是可重定位的,而且无论如何它们都已经从各种内部和工具相关的按钮中溢出。

似乎没有办法创建浮动工具栏。
内置调试栏看起来很有希望,但我不知道如何让它始终出现,而且它在浮动时奇怪地限制在应用程序的前两“行”(它必须阻止其他 UI 元素)。

我认为 Code 是一个 java/浏览器应用程序,会有一些方法可以通过代码向上导航 UI/树并插入元素 - 但这是锁定的。

我玩弄了一个 webview 来按住一些按钮,但它看起来很慢,看起来很笨拙并且占用了大量的屏幕空间。如果侧边栏在我需要按钮时无法显示按钮,我会进一步研究。

Monkey 修补 exe 以运行任意 JS 是最后的手段,因为它非常 hacky,并且很难在我们的环境中获得授权(这不是 90 年代!)。我什至不确定 js 是否可以向工作台添加额外的按钮?

我可以尝试其他任何想法吗?

标签: visual-studio-codevscode-extensions

解决方案


一直在寻找自己添加此功能。不幸的是,api似乎还不支持它:https ://github.com/microsoft/vscode-extension-samples/issues/285 。


推荐阅读