mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 19:43:58 +00:00
toolbar shows tab related commands aligned to right
This commit is contained in:
@@ -27,6 +27,7 @@ export interface GlobalCommand {
|
|||||||
menuName?: string;
|
menuName?: string;
|
||||||
toolbarOrder?: number;
|
toolbarOrder?: number;
|
||||||
disableHandleKeyText?: string;
|
disableHandleKeyText?: string;
|
||||||
|
isRelatedToTab?: boolean,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function registerCommand(command: GlobalCommand) {
|
export default function registerCommand(command: GlobalCommand) {
|
||||||
|
|||||||
@@ -251,6 +251,7 @@ export function registerFileCommands({
|
|||||||
// keyText: 'Ctrl+S',
|
// keyText: 'Ctrl+S',
|
||||||
icon: 'icon save',
|
icon: 'icon save',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentEditor() != null,
|
testEnabled: () => getCurrentEditor() != null,
|
||||||
onClick: () => saveTabFile(getCurrentEditor(), false, folder, format, fileExtension),
|
onClick: () => saveTabFile(getCurrentEditor(), false, folder, format, fileExtension),
|
||||||
});
|
});
|
||||||
@@ -271,6 +272,7 @@ export function registerFileCommands({
|
|||||||
name: 'Execute',
|
name: 'Execute',
|
||||||
icon: 'icon run',
|
icon: 'icon run',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
keyText: 'F5 | Ctrl+Enter',
|
keyText: 'F5 | Ctrl+Enter',
|
||||||
testEnabled: () => getCurrentEditor() != null && !getCurrentEditor()?.isBusy(),
|
testEnabled: () => getCurrentEditor() != null && !getCurrentEditor()?.isBusy(),
|
||||||
onClick: () => getCurrentEditor().execute(),
|
onClick: () => getCurrentEditor().execute(),
|
||||||
@@ -281,6 +283,7 @@ export function registerFileCommands({
|
|||||||
name: 'Kill',
|
name: 'Kill',
|
||||||
icon: 'icon close',
|
icon: 'icon close',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentEditor()?.canKill && getCurrentEditor().canKill(),
|
testEnabled: () => getCurrentEditor()?.canKill && getCurrentEditor().canKill(),
|
||||||
onClick: () => getCurrentEditor().kill(),
|
onClick: () => getCurrentEditor().kill(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
name: 'Refresh',
|
name: 'Refresh',
|
||||||
keyText: 'F5',
|
keyText: 'F5',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon reload',
|
icon: 'icon reload',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getDisplay()?.supportsReload,
|
testEnabled: () => getCurrentDataGrid()?.getDisplay()?.supportsReload,
|
||||||
onClick: () => getCurrentDataGrid().refresh(),
|
onClick: () => getCurrentDataGrid().refresh(),
|
||||||
@@ -63,6 +64,7 @@
|
|||||||
group: 'undo',
|
group: 'undo',
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.canUndo,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.canUndo,
|
||||||
onClick: () => getCurrentDataGrid().undo(),
|
onClick: () => getCurrentDataGrid().undo(),
|
||||||
});
|
});
|
||||||
@@ -74,6 +76,7 @@
|
|||||||
group: 'redo',
|
group: 'redo',
|
||||||
icon: 'icon redo',
|
icon: 'icon redo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.canRedo,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.canRedo,
|
||||||
onClick: () => getCurrentDataGrid().redo(),
|
onClick: () => getCurrentDataGrid().redo(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
name: 'Refresh',
|
name: 'Refresh',
|
||||||
keyText: 'F5',
|
keyText: 'F5',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon reload',
|
icon: 'icon reload',
|
||||||
testEnabled: () => getCurrentDataForm() != null,
|
testEnabled: () => getCurrentDataForm() != null,
|
||||||
onClick: () => getCurrentDataForm().refresh(),
|
onClick: () => getCurrentDataForm().refresh(),
|
||||||
@@ -58,6 +59,7 @@
|
|||||||
group: 'undo',
|
group: 'undo',
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentDataForm()?.getFormer()?.canUndo,
|
testEnabled: () => getCurrentDataForm()?.getFormer()?.canUndo,
|
||||||
onClick: () => getCurrentDataForm().getFormer().undo(),
|
onClick: () => getCurrentDataForm().getFormer().undo(),
|
||||||
});
|
});
|
||||||
@@ -69,6 +71,7 @@
|
|||||||
group: 'redo',
|
group: 'redo',
|
||||||
icon: 'icon redo',
|
icon: 'icon redo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
testEnabled: () => getCurrentDataForm()?.getFormer()?.canRedo,
|
testEnabled: () => getCurrentDataForm()?.getFormer()?.canRedo,
|
||||||
onClick: () => getCurrentDataForm().getFormer().redo(),
|
onClick: () => getCurrentDataForm().getFormer().redo(),
|
||||||
});
|
});
|
||||||
@@ -104,6 +107,7 @@
|
|||||||
name: 'First',
|
name: 'First',
|
||||||
keyText: 'Ctrl+Home',
|
keyText: 'Ctrl+Home',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon arrow-begin',
|
icon: 'icon arrow-begin',
|
||||||
testEnabled: () => getCurrentDataForm() != null,
|
testEnabled: () => getCurrentDataForm() != null,
|
||||||
onClick: () => getCurrentDataForm().navigate('begin'),
|
onClick: () => getCurrentDataForm().navigate('begin'),
|
||||||
@@ -115,6 +119,7 @@
|
|||||||
name: 'Previous',
|
name: 'Previous',
|
||||||
keyText: 'Ctrl+ArrowUp',
|
keyText: 'Ctrl+ArrowUp',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon arrow-left',
|
icon: 'icon arrow-left',
|
||||||
testEnabled: () => getCurrentDataForm() != null,
|
testEnabled: () => getCurrentDataForm() != null,
|
||||||
onClick: () => getCurrentDataForm().navigate('previous'),
|
onClick: () => getCurrentDataForm().navigate('previous'),
|
||||||
@@ -126,6 +131,7 @@
|
|||||||
name: 'Next',
|
name: 'Next',
|
||||||
keyText: 'Ctrl+ArrowDown',
|
keyText: 'Ctrl+ArrowDown',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon arrow-right',
|
icon: 'icon arrow-right',
|
||||||
testEnabled: () => getCurrentDataForm() != null,
|
testEnabled: () => getCurrentDataForm() != null,
|
||||||
onClick: () => getCurrentDataForm().navigate('next'),
|
onClick: () => getCurrentDataForm().navigate('next'),
|
||||||
@@ -137,6 +143,7 @@
|
|||||||
name: 'Last',
|
name: 'Last',
|
||||||
keyText: 'Ctrl+End',
|
keyText: 'Ctrl+End',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon arrow-end',
|
icon: 'icon arrow-end',
|
||||||
testEnabled: () => getCurrentDataForm() != null,
|
testEnabled: () => getCurrentDataForm() != null,
|
||||||
onClick: () => getCurrentDataForm().navigate('end'),
|
onClick: () => getCurrentDataForm().navigate('end'),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
name: 'Save',
|
name: 'Save',
|
||||||
// keyText: 'Ctrl+S',
|
// keyText: 'Ctrl+S',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon save',
|
icon: 'icon save',
|
||||||
testEnabled: () => getCurrentEditor()?.canSave(),
|
testEnabled: () => getCurrentEditor()?.canSave(),
|
||||||
onClick: () => getCurrentEditor().save(),
|
onClick: () => getCurrentEditor().save(),
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
name: 'Save',
|
name: 'Save',
|
||||||
// keyText: 'Ctrl+S',
|
// keyText: 'Ctrl+S',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon save',
|
icon: 'icon save',
|
||||||
testEnabled: () => getCurrentEditor() != null,
|
testEnabled: () => getCurrentEditor() != null,
|
||||||
onClick: () => getCurrentEditor().save(),
|
onClick: () => getCurrentEditor().save(),
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
name: 'Preview',
|
name: 'Preview',
|
||||||
icon: 'icon run',
|
icon: 'icon run',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
keyText: 'F5 | Ctrl+Enter',
|
keyText: 'F5 | Ctrl+Enter',
|
||||||
testEnabled: () => getCurrentEditor() != null,
|
testEnabled: () => getCurrentEditor() != null,
|
||||||
onClick: () => getCurrentEditor().preview(),
|
onClick: () => getCurrentEditor().preview(),
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
name: 'Save',
|
name: 'Save',
|
||||||
// keyText: 'Ctrl+S',
|
// keyText: 'Ctrl+S',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
|
isRelatedToTab: true,
|
||||||
icon: 'icon save',
|
icon: 'icon save',
|
||||||
testEnabled: () => getCurrentEditor()?.canSave(),
|
testEnabled: () => getCurrentEditor()?.canSave(),
|
||||||
onClick: () => getCurrentEditor().save(),
|
onClick: () => getCurrentEditor().save(),
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { openFavorite } from '../appobj/FavoriteFileAppObject.svelte';
|
import { openFavorite } from '../appobj/FavoriteFileAppObject.svelte';
|
||||||
import runCommand from '../commands/runCommand';
|
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 getElectron from '../utility/getElectron';
|
||||||
import { useFavorites } from '../utility/metadataLoaders';
|
import { useFavorites } from '../utility/metadataLoaders';
|
||||||
import ToolbarButton from './ToolbarButton.svelte';
|
import ToolbarButton from './ToolbarButton.svelte';
|
||||||
@@ -25,7 +26,8 @@
|
|||||||
);
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container">
|
<div class="root">
|
||||||
|
<div class="container">
|
||||||
{#if !electron}
|
{#if !electron}
|
||||||
<ToolbarButton externalImage="logo192.png" on:click={() => runCommand('about.show')} />
|
<ToolbarButton externalImage="logo192.png" on:click={() => runCommand('about.show')} />
|
||||||
{/if}
|
{/if}
|
||||||
@@ -35,7 +37,7 @@
|
|||||||
</ToolbarButton>
|
</ToolbarButton>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
{#each list as command}
|
{#each list.filter(x => !x.isRelatedToTab) as command}
|
||||||
<ToolbarButton
|
<ToolbarButton
|
||||||
icon={command.icon}
|
icon={command.icon}
|
||||||
on:click={command.onClick}
|
on:click={command.onClick}
|
||||||
@@ -45,6 +47,27 @@
|
|||||||
{command.toolbarName || command.name}
|
{command.toolbarName || command.name}
|
||||||
</ToolbarButton>
|
</ToolbarButton>
|
||||||
{/each}
|
{/each}
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
{#if $activeTab && list.filter(x => x.isRelatedToTab).length > 0}
|
||||||
|
<div class="activeTab">
|
||||||
|
<div class="activeTabInner">
|
||||||
|
<FontIcon icon={$activeTab.icon} />
|
||||||
|
{$activeTab.title}:
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{#each list.filter(x => x.isRelatedToTab) as command}
|
||||||
|
<ToolbarButton
|
||||||
|
icon={command.icon}
|
||||||
|
on:click={command.onClick}
|
||||||
|
disabled={!command.enabled}
|
||||||
|
title={getCommandTitle(command)}
|
||||||
|
>
|
||||||
|
{command.toolbarName || command.name}
|
||||||
|
</ToolbarButton>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -54,4 +77,21 @@
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
height: var(--dim-toolbar-height);
|
height: var(--dim-toolbar-height);
|
||||||
}
|
}
|
||||||
|
.root {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activeTab {
|
||||||
|
background-color: var(--theme-bg-2);
|
||||||
|
white-space: nowrap;
|
||||||
|
display: flex;
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activeTabInner {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user