From 352b6cbe047fc3a7decca58168fe848088809545 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 15:45:16 +0100 Subject: [PATCH 1/6] Button for svg export --- packages/web/src/tabs/DiagramTab.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/web/src/tabs/DiagramTab.svelte b/packages/web/src/tabs/DiagramTab.svelte index 73657781a..162cbe6da 100644 --- a/packages/web/src/tabs/DiagramTab.svelte +++ b/packages/web/src/tabs/DiagramTab.svelte @@ -32,7 +32,8 @@ import DiagramSettings from '../designer/DiagramSettings.svelte'; import { derived } from 'svelte/store'; import { isProApp } from '../utility/proTools'; - import { __t } from '../translations'; + import { __t, _t } from '../translations'; + import ToolStripDropDownButton from '../buttons/ToolStripDropDownButton.svelte'; export let tabid; export let conid; @@ -124,6 +125,13 @@ function handleReportCounts(counts) { tableCounts = counts; } + + function getDiagramExportMenu() { + return [ + { command: 'diagram.export' }, + { command: 'diagram.exportSvg' }, + ]; + } @@ -161,6 +169,7 @@ + From 2b055c028ca48252b88f77479e303065a541d96e Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:00:05 +0100 Subject: [PATCH 2/6] Update theme command to open settings tab with selected item --- packages/web/src/commands/stdCommands.ts | 9 ++++++++- packages/web/src/tabs/SettingsTab.svelte | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 4e69d4fbe..b69e93116 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -74,7 +74,14 @@ registerCommand({ category: __t('command.theme', { defaultMessage: 'Theme' }), name: __t('command.theme.change', { defaultMessage: 'Change' }), toolbarName: __t('command.theme.changeToolbar', { defaultMessage: 'Change theme' }), - onClick: () => showModal(SettingsModal, { selectedTab: 'theme' }), + onClick: () => openNewTab({ + title: 'Settings', + icon: 'icon settings', + tabComponent: 'SettingsTab', + props: { + selectedItem: 'theme', + }, + }), // getSubCommands: () => get(extensions).themes.map(themeCommand), }); diff --git a/packages/web/src/tabs/SettingsTab.svelte b/packages/web/src/tabs/SettingsTab.svelte index e4e89c8f9..ab7f652b1 100644 --- a/packages/web/src/tabs/SettingsTab.svelte +++ b/packages/web/src/tabs/SettingsTab.svelte @@ -20,6 +20,8 @@ import SQLEditorSettings from "../settings/SQLEditorSettings.svelte"; import AiSettingsTab from "../settings/AiSettingsTab.svelte"; + export let selectedItem = 'general'; + const menuItems = [ { label: _t('settings.general', { defaultMessage: 'General' }), @@ -106,8 +108,6 @@ testid: 'settings-other', }, ]; - - let selectedItem = 'general'; From 5e193c1725281bb8d782c672a3d99848f7edee28 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:10:30 +0100 Subject: [PATCH 3/6] Removed Other settings component --- .../web/src/settings/GeneralSettings.svelte | 26 ++++++++ .../web/src/settings/OtherSettings.svelte | 64 ------------------- packages/web/src/tabs/SettingsTab.svelte | 8 --- 3 files changed, 26 insertions(+), 72 deletions(-) delete mode 100644 packages/web/src/settings/OtherSettings.svelte diff --git a/packages/web/src/settings/GeneralSettings.svelte b/packages/web/src/settings/GeneralSettings.svelte index acff0fedb..365a7587d 100644 --- a/packages/web/src/settings/GeneralSettings.svelte +++ b/packages/web/src/settings/GeneralSettings.svelte @@ -49,6 +49,32 @@ label={_t('settings.tabGroup.showServerName', { })} defaultValue={false} /> + + +
{_t('settings.localization', { defaultMessage: 'Localization' })}
- import FormCheckboxField from "../forms/FormCheckboxField.svelte"; - import FormSelectField from "../forms/FormSelectField.svelte"; - import FormTextField from "../forms/FormTextField.svelte"; - import { _t } from "../translations"; - import { isProApp } from "../utility/proTools"; - - - - -
-
{_t('settings.other', { defaultMessage: 'Other' })}
- - - - - -{#if isProApp()} - -{/if} -
- - - \ No newline at end of file diff --git a/packages/web/src/tabs/SettingsTab.svelte b/packages/web/src/tabs/SettingsTab.svelte index ab7f652b1..290530b96 100644 --- a/packages/web/src/tabs/SettingsTab.svelte +++ b/packages/web/src/tabs/SettingsTab.svelte @@ -11,7 +11,6 @@ import DefaultActionsSettings from "../settings/DefaultActionsSettings.svelte"; import BehaviourSettings from "../settings/BehaviourSettings.svelte"; import ExternalToolsSettings from "../settings/ExternalToolsSettings.svelte"; - import OtherSettings from "../settings/OtherSettings.svelte"; import LicenseSettings from "../settings/LicenseSettings.svelte"; import { isProApp } from "../utility/proTools"; import { _t } from "../translations"; @@ -100,13 +99,6 @@ props: {}, testid: 'settings-ai', }, - { - label: _t('settings.other', { defaultMessage: 'Other' }), - identifier: 'other', - component: OtherSettings, - props: {}, - testid: 'settings-other', - }, ]; From 4ab694de0cac117218409e0045c764ae9c1be078 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:14:23 +0100 Subject: [PATCH 4/6] Added top border for first menu item --- packages/web/src/elements/SettingsMenuControl.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web/src/elements/SettingsMenuControl.svelte b/packages/web/src/elements/SettingsMenuControl.svelte index 7669682be..7e85e66b2 100644 --- a/packages/web/src/elements/SettingsMenuControl.svelte +++ b/packages/web/src/elements/SettingsMenuControl.svelte @@ -118,6 +118,10 @@ transition: background-color 0.2s ease; } + .menu-item:first-child { + border-top: 1px solid var(--theme-border); + } + .menu-item:hover { background-color: var(--theme-bg-hover); } From 85a2a4b873bf7c65b45f19ba6fafbcd8dcc26c47 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:22:35 +0100 Subject: [PATCH 5/6] Revert "Button for svg export" This reverts commit 352b6cbe047fc3a7decca58168fe848088809545. --- packages/web/src/tabs/DiagramTab.svelte | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/web/src/tabs/DiagramTab.svelte b/packages/web/src/tabs/DiagramTab.svelte index ae76294f8..734fa81a2 100644 --- a/packages/web/src/tabs/DiagramTab.svelte +++ b/packages/web/src/tabs/DiagramTab.svelte @@ -33,8 +33,7 @@ import DiagramSettings from '../designer/DiagramSettings.svelte'; import { derived } from 'svelte/store'; import { isProApp } from '../utility/proTools'; - import { __t, _t } from '../translations'; - import ToolStripDropDownButton from '../buttons/ToolStripDropDownButton.svelte'; + import { __t } from '../translations'; export let tabid; export let conid; @@ -126,13 +125,6 @@ function handleReportCounts(counts) { tableCounts = counts; } - - function getDiagramExportMenu() { - return [ - { command: 'diagram.export' }, - { command: 'diagram.exportSvg' }, - ]; - } @@ -170,7 +162,6 @@ - From 106344b33e43602746a476395a50e5c3bf4b8185 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 1 Dec 2025 16:26:20 +0100 Subject: [PATCH 6/6] Deleted Settings Modal --- packages/web/src/commands/stdCommands.ts | 1 - .../web/src/settings/SettingsModal.svelte | 850 ------------------ 2 files changed, 851 deletions(-) delete mode 100644 packages/web/src/settings/SettingsModal.svelte diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index b69e93116..938d56bff 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -16,7 +16,6 @@ import { import registerCommand from './registerCommand'; import { get } from 'svelte/store'; import AboutModal from '../modals/AboutModal.svelte'; -import SettingsModal from '../settings/SettingsModal.svelte'; import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte'; import { showModal } from '../modals/modalTools'; import newQuery, { newDiagram, newPerspective, newQueryDesign } from '../query/newQuery'; diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte deleted file mode 100644 index cc4706c37..000000000 --- a/packages/web/src/settings/SettingsModal.svelte +++ /dev/null @@ -1,850 +0,0 @@ - - - - -
{_t('settings.title', { defaultMessage: 'Settings' })}
- - - - - {#if electron} -
{_t('settings.appearance', { defaultMessage: 'Appearance' })}
- { - restartWarning = true; - }} - /> - {#if restartWarning} -
- - {_t('settings.nativeMenuRestartWarning', { - defaultMessage: 'Native menu settings will be applied after app restart', - })} -
- {/if} - {/if} - - -
{_t('settings.localization', { defaultMessage: 'Localization' })}
- - - { - setSelectedLanguage(e.detail); - showModal(ConfirmModal, { - message: _t('settings.localization.reloadWarning', { - defaultMessage: 'Application will be reloaded to apply new language settings', - }), - onConfirm: () => { - setTimeout(() => { - internalRedirectTo(electron ? '/index.html' : '/'); - }, 100); - }, - }); - }} - /> - - -
{_t('settings.dataGrid.title', { defaultMessage: 'Data grid' })}
- - {#if isProApp()} - - {/if} - - - - - - - - - - - - - - -
{_t('settings.sqlEditor', { defaultMessage: 'SQL editor' })}
- -
-
- -
-
- - ({ label: mode.label, value: mode.value }))} - value={$currentEditorKeybindigMode} - on:change={e => ($currentEditorKeybindigMode = e.detail)} - /> - -
-
- - ($currentEditorWrapEnabled = e.target.checked)} - /> - -
-
- - - - - - - - - - - -
- -
{_t('settings.connection', { defaultMessage: 'Connection' })}
- - { - $lockedDatabaseMode = !$lockedDatabaseMode; - }, - }} - > - ($lockedDatabaseMode = e.target.checked)} /> - - - - - - -
{_t('settings.session', { defaultMessage: 'Query sessions' })}
- - -
- - -
{_t('settings.appearance', { defaultMessage: 'Application theme' })}
- - { - if ($currentTheme) { - $currentTheme = null; - } else { - $currentTheme = getSystemTheme(); - } - }, - }} - > - { - if (e.target['checked']) { - $currentTheme = null; - } else { - $currentTheme = getSystemTheme(); - } - }} - /> - - -
- {#each $extensions.themes as theme} - - {/each} -
- -
- {_t('settings.appearance.moreThemes', { defaultMessage: 'More themes are available as' })} - plugins -
- {_t('settings.appearance.afterInstalling', { - defaultMessage: - 'After installing theme plugin (try search "theme" in available extensions) new themes will be available here.', - })} -
- -
{_t('settings.appearance.editorTheme', { defaultMessage: 'Editor theme' })}
- -
-
- - ({ label: theme, value: theme }))} - value={$currentEditorTheme} - on:change={e => ($currentEditorTheme = e.detail)} - /> - -
- -
- - x.value == $currentEditorFontSize) ? $currentEditorFontSize : 'custom'} - on:change={e => ($currentEditorFontSize = e.detail)} - /> - -
- -
- - ($currentEditorFontSize = e.target['value'])} - disabled={!!FONT_SIZES.find(x => x.value == $currentEditorFontSize) && - $currentEditorFontSize != 'custom'} - /> - -
- -
- -
-
- -
- -
-
- -
{_t('settings.defaultActions', { defaultMessage: 'Default actions' })}
- - - - - - - - - - - - - -
- -
{_t('settings.behaviour', { defaultMessage: 'Behaviour' })}
- - - - - -
- - {_t('settings.behaviour.singleClickPreview', { - defaultMessage: - 'When you single-click or select a file in the "Tables, Views, Functions" view, it is shown in a preview mode and reuses an existing tab (preview tab). This is useful if you are quickly browsing tables and don\'t want every visited table to have its own tab. When you start editing the table or use double-click to open the table from the "Tables" view, a new tab is dedicated to that table.', - })} -
- - - -
{_t('settings.confirmations', { defaultMessage: 'Confirmations' })}
- - - -
- -
{_t('settings.other', { defaultMessage: 'Other' })}
- - - - - - {#if isProApp()} - - {/if} -
- - -
{_t('settings.other.license', { defaultMessage: 'License' })}
- { - licenseKeyCheckResult = await apiCall('config/check-license', { licenseKey: value }); - }} - /> - {#if licenseKeyCheckResult} -
- {#if licenseKeyCheckResult.status == 'ok'} -
- - {_t('settings.other.licenseKey.valid', { defaultMessage: 'License key is valid' })} -
- {#if licenseKeyCheckResult.validTo} -
- {_t('settings.other.licenseKey.validTo', { defaultMessage: 'License valid to:' })} - {licenseKeyCheckResult.validTo} -
- {/if} - {#if licenseKeyCheckResult.expiration} -
- {_t('settings.other.licenseKey.expiration', { defaultMessage: 'License key expiration:' })} - {safeFormatDate(licenseKeyCheckResult.expiration)} -
- {/if} - {:else if licenseKeyCheckResult.status == 'error'} -
- - {licenseKeyCheckResult.errorMessage ?? - _t('settings.other.licenseKey.invalid', { defaultMessage: 'License key is invalid' })} - {#if licenseKeyCheckResult.expiration} -
- {_t('settings.other.licenseKey.expiration', { defaultMessage: 'License key expiration:' })} - {safeFormatDate(licenseKeyCheckResult.expiration)} -
- {/if} -
- {#if licenseKeyCheckResult.isExpired} -
- { - licenseKeyCheckResult = await apiCall('config/get-new-license', { oldLicenseKey: licenseKey }); - if (licenseKeyCheckResult.licenseKey) { - apiCall('config/update-settings', { 'other.licenseKey': licenseKeyCheckResult.licenseKey }); - } - }} - /> -
- {/if} - {/if} -
- {/if} -
- - -
{_t('settings.externalTools', { defaultMessage: 'External tools' })}
- - - - - -
- - - - -
-
- -
- - -
-
-
- -