diff --git a/packages/web/src/commands/registerCommand.ts b/packages/web/src/commands/registerCommand.ts index 632092371..c125f484e 100644 --- a/packages/web/src/commands/registerCommand.ts +++ b/packages/web/src/commands/registerCommand.ts @@ -27,6 +27,7 @@ export interface GlobalCommand { menuName?: string; toolbarOrder?: number; disableHandleKeyText?: string; + isRelatedToTab?: boolean, } export default function registerCommand(command: GlobalCommand) { diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index f8502dc3e..e145139db 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -251,6 +251,7 @@ export function registerFileCommands({ // keyText: 'Ctrl+S', icon: 'icon save', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentEditor() != null, onClick: () => saveTabFile(getCurrentEditor(), false, folder, format, fileExtension), }); @@ -271,6 +272,7 @@ export function registerFileCommands({ name: 'Execute', icon: 'icon run', toolbar: true, + isRelatedToTab: true, keyText: 'F5 | Ctrl+Enter', testEnabled: () => getCurrentEditor() != null && !getCurrentEditor()?.isBusy(), onClick: () => getCurrentEditor().execute(), @@ -281,6 +283,7 @@ export function registerFileCommands({ name: 'Kill', icon: 'icon close', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentEditor()?.canKill && getCurrentEditor().canKill(), onClick: () => getCurrentEditor().kill(), }); diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 879b9ab0c..63e2d9022 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -7,6 +7,7 @@ name: 'Refresh', keyText: 'F5', toolbar: true, + isRelatedToTab: true, icon: 'icon reload', testEnabled: () => getCurrentDataGrid()?.getDisplay()?.supportsReload, onClick: () => getCurrentDataGrid().refresh(), @@ -63,6 +64,7 @@ group: 'undo', icon: 'icon undo', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentDataGrid()?.getGrider()?.canUndo, onClick: () => getCurrentDataGrid().undo(), }); @@ -74,6 +76,7 @@ group: 'redo', icon: 'icon redo', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentDataGrid()?.getGrider()?.canRedo, onClick: () => getCurrentDataGrid().redo(), }); diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index 6ea7882e0..79de2c0ef 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -18,6 +18,7 @@ name: 'Refresh', keyText: 'F5', toolbar: true, + isRelatedToTab: true, icon: 'icon reload', testEnabled: () => getCurrentDataForm() != null, onClick: () => getCurrentDataForm().refresh(), @@ -58,6 +59,7 @@ group: 'undo', icon: 'icon undo', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentDataForm()?.getFormer()?.canUndo, onClick: () => getCurrentDataForm().getFormer().undo(), }); @@ -69,6 +71,7 @@ group: 'redo', icon: 'icon redo', toolbar: true, + isRelatedToTab: true, testEnabled: () => getCurrentDataForm()?.getFormer()?.canRedo, onClick: () => getCurrentDataForm().getFormer().redo(), }); @@ -104,6 +107,7 @@ name: 'First', keyText: 'Ctrl+Home', toolbar: true, + isRelatedToTab: true, icon: 'icon arrow-begin', testEnabled: () => getCurrentDataForm() != null, onClick: () => getCurrentDataForm().navigate('begin'), @@ -115,6 +119,7 @@ name: 'Previous', keyText: 'Ctrl+ArrowUp', toolbar: true, + isRelatedToTab: true, icon: 'icon arrow-left', testEnabled: () => getCurrentDataForm() != null, onClick: () => getCurrentDataForm().navigate('previous'), @@ -126,6 +131,7 @@ name: 'Next', keyText: 'Ctrl+ArrowDown', toolbar: true, + isRelatedToTab: true, icon: 'icon arrow-right', testEnabled: () => getCurrentDataForm() != null, onClick: () => getCurrentDataForm().navigate('next'), @@ -137,6 +143,7 @@ name: 'Last', keyText: 'Ctrl+End', toolbar: true, + isRelatedToTab: true, icon: 'icon arrow-end', testEnabled: () => getCurrentDataForm() != null, onClick: () => getCurrentDataForm().navigate('end'), diff --git a/packages/web/src/tabs/CollectionDataTab.svelte b/packages/web/src/tabs/CollectionDataTab.svelte index 401fc2e10..e49af5e63 100644 --- a/packages/web/src/tabs/CollectionDataTab.svelte +++ b/packages/web/src/tabs/CollectionDataTab.svelte @@ -11,6 +11,7 @@ name: 'Save', // keyText: 'Ctrl+S', toolbar: true, + isRelatedToTab: true, icon: 'icon save', testEnabled: () => getCurrentEditor()?.canSave(), onClick: () => getCurrentEditor().save(), diff --git a/packages/web/src/tabs/FreeTableTab.svelte b/packages/web/src/tabs/FreeTableTab.svelte index a2d55b68b..bf3e11f67 100644 --- a/packages/web/src/tabs/FreeTableTab.svelte +++ b/packages/web/src/tabs/FreeTableTab.svelte @@ -8,6 +8,7 @@ name: 'Save', // keyText: 'Ctrl+S', toolbar: true, + isRelatedToTab: true, icon: 'icon save', testEnabled: () => getCurrentEditor() != null, onClick: () => getCurrentEditor().save(), diff --git a/packages/web/src/tabs/MarkdownEditorTab.svelte b/packages/web/src/tabs/MarkdownEditorTab.svelte index 7c9276c35..fbf85083d 100644 --- a/packages/web/src/tabs/MarkdownEditorTab.svelte +++ b/packages/web/src/tabs/MarkdownEditorTab.svelte @@ -19,6 +19,7 @@ name: 'Preview', icon: 'icon run', toolbar: true, + isRelatedToTab: true, keyText: 'F5 | Ctrl+Enter', testEnabled: () => getCurrentEditor() != null, onClick: () => getCurrentEditor().preview(), diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte index 918c174e1..8b964b961 100644 --- a/packages/web/src/tabs/TableDataTab.svelte +++ b/packages/web/src/tabs/TableDataTab.svelte @@ -8,6 +8,7 @@ name: 'Save', // keyText: 'Ctrl+S', toolbar: true, + isRelatedToTab: true, icon: 'icon save', testEnabled: () => getCurrentEditor()?.canSave(), onClick: () => getCurrentEditor().save(), diff --git a/packages/web/src/widgets/Toolbar.svelte b/packages/web/src/widgets/Toolbar.svelte index 1b5c95d6d..b2396ec50 100644 --- a/packages/web/src/widgets/Toolbar.svelte +++ b/packages/web/src/widgets/Toolbar.svelte @@ -10,7 +10,8 @@ import _ from 'lodash'; import { openFavorite } from '../appobj/FavoriteFileAppObject.svelte'; import runCommand from '../commands/runCommand'; - import { commands, commandsCustomized } from '../stores'; + import FontIcon from '../icons/FontIcon.svelte'; + import { activeTab, commands, commandsCustomized } from '../stores'; import getElectron from '../utility/getElectron'; import { useFavorites } from '../utility/metadataLoaders'; import ToolbarButton from './ToolbarButton.svelte'; @@ -25,26 +26,48 @@ ); -
- {#if !electron} - runCommand('about.show')} /> - {/if} - {#each ($favorites || []).filter(x => x.showInToolbar) as item} - openFavorite(item)} icon={item.icon || 'icon favorite'}> - {item.title} - - {/each} +
+
+ {#if !electron} + runCommand('about.show')} /> + {/if} + {#each ($favorites || []).filter(x => x.showInToolbar) as item} + openFavorite(item)} icon={item.icon || 'icon favorite'}> + {item.title} + + {/each} - {#each list as command} - - {command.toolbarName || command.name} - - {/each} + {#each list.filter(x => !x.isRelatedToTab) as command} + + {command.toolbarName || command.name} + + {/each} +
+
+ {#if $activeTab && list.filter(x => x.isRelatedToTab).length > 0} +
+
+ + {$activeTab.title}: +
+
+ {/if} + {#each list.filter(x => x.isRelatedToTab) as command} + + {command.toolbarName || command.name} + + {/each} +