mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-14 16:40:05 +00:00
83 lines
2.5 KiB
TypeScript
83 lines
2.5 KiB
TypeScript
import { Injectable, Optional, Inject } from '@angular/core'
|
|
import { BaseTabComponent, TabContextMenuItemProvider, TabHeaderComponent, NotificationsService, MenuItemOptions } from 'tabby-core'
|
|
import { BaseTerminalTabComponent } from './api/baseTerminalTab.component'
|
|
import { TerminalContextMenuItemProvider } from './api/contextMenuProvider'
|
|
|
|
/** @hidden */
|
|
@Injectable()
|
|
export class CopyPasteContextMenu extends TabContextMenuItemProvider {
|
|
weight = -10
|
|
|
|
constructor (
|
|
private notifications: NotificationsService,
|
|
) {
|
|
super()
|
|
}
|
|
|
|
async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<MenuItemOptions[]> {
|
|
if (tabHeader) {
|
|
return []
|
|
}
|
|
if (tab instanceof BaseTerminalTabComponent) {
|
|
return [
|
|
{
|
|
label: 'Copy',
|
|
click: (): void => {
|
|
setTimeout(() => {
|
|
tab.frontend?.copySelection()
|
|
this.notifications.notice('Copied')
|
|
})
|
|
},
|
|
},
|
|
{
|
|
label: 'Paste',
|
|
click: () => tab.paste(),
|
|
},
|
|
]
|
|
}
|
|
return []
|
|
}
|
|
}
|
|
|
|
/** @hidden */
|
|
@Injectable()
|
|
export class MiscContextMenu extends TabContextMenuItemProvider {
|
|
weight = 1
|
|
|
|
async getItems (tab: BaseTabComponent): Promise<MenuItemOptions[]> {
|
|
if (tab instanceof BaseTerminalTabComponent && tab.session?.supportsWorkingDirectory()) {
|
|
return [{
|
|
label: 'Copy current path',
|
|
click: () => tab.copyCurrentPath(),
|
|
}]
|
|
}
|
|
return []
|
|
}
|
|
}
|
|
|
|
/** @hidden */
|
|
@Injectable()
|
|
export class LegacyContextMenu extends TabContextMenuItemProvider {
|
|
weight = 1
|
|
|
|
constructor (
|
|
@Optional() @Inject(TerminalContextMenuItemProvider) protected contextMenuProviders: TerminalContextMenuItemProvider[]|null,
|
|
) {
|
|
super()
|
|
}
|
|
|
|
async getItems (tab: BaseTabComponent, _tabHeader?: TabHeaderComponent): Promise<MenuItemOptions[]> {
|
|
if (!this.contextMenuProviders) {
|
|
return []
|
|
}
|
|
if (tab instanceof BaseTerminalTabComponent) {
|
|
let items: MenuItemOptions[] = []
|
|
for (const p of this.contextMenuProviders) {
|
|
items = items.concat(await p.getItems(tab))
|
|
}
|
|
return items
|
|
}
|
|
return []
|
|
}
|
|
}
|