From a95b8d188cfcc8f563ad73b4f0b676d068775d36 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Wed, 23 Dec 2020 18:07:50 +0100 Subject: [PATCH] feat: option to change editor theme --- .github/workflows/codeql-analysis.yml | 5 - README.md | 4 +- src/renderer/components/ModalSettings.vue | 173 ++++++++++++++++++- src/renderer/components/QueryEditor.vue | 30 +++- src/renderer/components/Workspace.vue | 1 + src/renderer/i18n/en-US.js | 8 +- src/renderer/images/dark.png | Bin 0 -> 39075 bytes src/renderer/store/modules/settings.store.js | 14 +- 8 files changed, 211 insertions(+), 24 deletions(-) create mode 100644 src/renderer/images/dark.png diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 11e7a9fd..8f3b34af 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -31,11 +31,6 @@ jobs: # a pull request then we can checkout the head. fetch-depth: 2 - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 diff --git a/README.md b/README.md index a3e30ee9..cade9c91 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ An application created with minimalism and semplicity in mind, with features in - Database management (add/edit/delete). - Full tables management, including indexes and foreign keys. - Run queries on multiple tabs. -- Query suggestions. +- Query suggestions and auto complete. - Native dark theme. - Multi language. - Secure password storage. @@ -49,8 +49,6 @@ This is a roadmap with major features will come in near future. - SSL and SSH tunnel support. - Support for other databases. - UI/UX improvements. -- Improvements of query editor area. -- Improvements of query suggestions. - Query history. - More context menu shortcuts. - More keyboard shortcuts. diff --git a/src/renderer/components/ModalSettings.vue b/src/renderer/components/ModalSettings.vue index 7bf6778e..1ac2e129 100644 --- a/src/renderer/components/ModalSettings.vue +++ b/src/renderer/components/ModalSettings.vue @@ -96,8 +96,65 @@
-
-

In future releases

+
+
+
+ {{ $t('message.applicationTheme') }} +
+
+ +
+ +
+ {{ $t('word.dark') }} +
+
+
+
+
+ +
+ {{ $t('word.light') }} (Coming) +
+
+
+
+ +
+
+ {{ $t('message.editorTheme') }} +
+
+ +
+
+ +
+
@@ -127,18 +184,70 @@ import { mapActions, mapGetters } from 'vuex'; import localesNames from '@/i18n/supported-locales'; import ModalSettingsUpdate from '@/components/ModalSettingsUpdate'; +import QueryEditor from '@/components/QueryEditor'; const { shell } = require('electron'); export default { name: 'ModalSettings', components: { - ModalSettingsUpdate + ModalSettingsUpdate, + QueryEditor }, data () { return { localLocale: null, localTimeout: null, - selectedTab: 'general' + localEditorTheme: null, + selectedTab: 'general', + editorThemes: [ + { + group: this.$t('word.light'), + themes: [ + { code: 'chrome', name: 'Chrome' }, + { code: 'clouds', name: 'Clouds' }, + { code: 'crimson_editor', name: 'Crimson Editor' }, + { code: 'dawn', name: 'Dawn' }, + { code: 'dreamweaver', name: 'Dreamweaver' }, + { code: 'eclupse', name: 'Eclipse' }, + { code: 'github', name: 'GitHub' }, + { code: 'iplastic', name: 'IPlastic' }, + { code: 'solarized_light', name: 'Solarized Light' }, + { code: 'textmate', name: 'TextMate' }, + { code: 'tomorrow', name: 'Tomorrow' }, + { code: 'xcode', name: 'Xcode' }, + { code: 'kuroir', name: 'Kuroir' }, + { code: 'katzenmilch', name: 'KatzenMilch' }, + { code: 'sqlserver', name: 'SQL Server' } + ] + }, + { + group: this.$t('word.dark'), + themes: [ + { code: 'ambiance', name: 'Ambiance' }, + { code: 'chaos', name: 'Chaos' }, + { code: 'clouds_midnight', name: 'Clouds Midnight' }, + { code: 'dracula', name: 'Dracula' }, + { code: 'cobalt', name: 'Cobalt' }, + { code: 'gruvbox', name: 'Gruvbox' }, + { code: 'gob', name: 'Green on Black' }, + { code: 'idle_fingers', name: 'Idle Fingers' }, + { code: 'kr_theme', name: 'krTheme' }, + { code: 'merbivore', name: 'Merbivore' }, + { code: 'mono_industrial', name: 'Mono Industrial' }, + { code: 'monokai', name: 'Monokai' }, + { code: 'nord_dark', name: 'Nord Dark' }, + { code: 'pastel_on_dark', name: 'Pastel on Dark' }, + { code: 'solarized_dark', name: 'Solarized Dark' }, + { code: 'terminal', name: 'Terminal' }, + { code: 'tomorrow_night', name: 'Tomorrow Night' }, + { code: 'tomorrow_night_blue', name: 'Tomorrow Night Blue' }, + { code: 'tomorrow_night_bright', name: 'Tomorrow Night Bright' }, + { code: 'tomorrow_night_eighties', name: 'Tomorrow Night 80s' }, + { code: 'twilight', name: 'Twilight' }, + { code: 'vibrant_ink', name: 'Vibrant Ink' } + ] + } + ] }; }, computed: { @@ -148,7 +257,11 @@ export default { selectedSettingTab: 'application/selectedSettingTab', selectedLocale: 'settings/getLocale', notificationsTimeout: 'settings/getNotificationsTimeout', - updateStatus: 'application/getUpdateStatus' + applicationTheme: 'settings/getApplicationTheme', + editorTheme: 'settings/getEditorTheme', + updateStatus: 'application/getUpdateStatus', + selectedWorkspace: 'workspaces/getSelected', + getWorkspace: 'workspaces/getWorkspace' }), locales () { const locales = []; @@ -159,11 +272,32 @@ export default { }, hasUpdates () { return ['available', 'downloading', 'downloaded'].includes(this.updateStatus); + }, + workspace () { + return this.getWorkspace(this.selectedWorkspace); + }, + exampleQuery () { + return `-- This is an example +SELECT + employee.id, + employee.first_name, + employee.last_name, + SUM(DATEDIFF("SECOND", call.start, call.end)) AS call_duration +FROM call +INNER JOIN employee ON call.employee_id = employee.id +GROUP BY + employee.id, + employee.first_name, + employee.last_name +ORDER BY + employee.id ASC; +`; } }, created () { this.localLocale = this.selectedLocale; this.localTimeout = this.notificationsTimeout; + this.localEditorTheme = this.editorTheme; this.selectedTab = this.selectedSettingTab; window.addEventListener('keydown', this.onKey); }, @@ -174,6 +308,7 @@ export default { ...mapActions({ closeModal: 'application/hideSettingModal', changeLocale: 'settings/changeLocale', + changeEditorTheme: 'settings/changeEditorTheme', updateNotificationsTimeout: 'settings/updateNotificationsTimeout' }), selectTab (tab) { @@ -205,6 +340,34 @@ export default { .panel-body { height: calc(70vh - 70px); overflow: auto; + + .theme-block { + position: relative; + text-align: center; + + &.selected { + img { + box-shadow: 0 0 0 3px $primary-color; + } + } + + &.disabled { + cursor: not-allowed; + opacity: 0.5; + } + + .theme-name { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + top: 0; + height: 100%; + width: 100%; + text-shadow: 0 0 8px #000; + } + } } .badge::after { diff --git a/src/renderer/components/QueryEditor.vue b/src/renderer/components/QueryEditor.vue index 0557219a..9db5f6dc 100644 --- a/src/renderer/components/QueryEditor.vue +++ b/src/renderer/components/QueryEditor.vue @@ -1,6 +1,10 @@ @@ -8,15 +12,18 @@ import * as ace from 'ace-builds'; import 'ace-builds/webpack-resolver'; import '../libs/ext-language_tools'; +import { mapGetters } from 'vuex'; import Tables from '@/ipc-api/Tables'; export default { name: 'QueryEditor', props: { value: String, - schema: String, + workspace: Object, + schema: { type: String, default: '' }, autoFocus: { type: Boolean, default: false }, - workspace: Object + readOnly: { type: Boolean, default: false }, + height: { type: Number, default: 200 } }, data () { return { @@ -26,6 +33,9 @@ export default { }; }, computed: { + ...mapGetters({ + editorTheme: 'settings/getEditorTheme' + }), tables () { return this.workspace.structure.filter(schema => schema.name === this.schema) .reduce((acc, curr) => { @@ -36,7 +46,7 @@ export default { name: table.name, comment: table.comment, type: table.type, - fields: ['TODO'] + fields: [] }; }); }, @@ -76,13 +86,20 @@ export default { }; } }, + watch: { + editorTheme () { + if (this.editor) + this.editor.setTheme(`ace/theme/${this.editorTheme}`); + } + }, mounted () { this.editor = ace.edit(this.$refs.editor, { mode: `ace/mode/${this.mode}`, - theme: 'ace/theme/twilight', + theme: `ace/theme/${this.editorTheme}`, value: this.value, fontSize: '14px', - printMargin: false + printMargin: false, + readOnly: this.readOnly }); this.editor.setOptions({ @@ -157,7 +174,6 @@ export default { border-bottom: 1px solid #444; .editor { - height: 200px; width: 100%; } } diff --git a/src/renderer/components/Workspace.vue b/src/renderer/components/Workspace.vue index f77dbc76..4bea670d 100644 --- a/src/renderer/components/Workspace.vue +++ b/src/renderer/components/Workspace.vue @@ -193,6 +193,7 @@ export default { align-items: flex-start; flex-wrap: nowrap; overflow: auto; + margin-bottom: 0; &::-webkit-scrollbar { width: 2px; diff --git a/src/renderer/i18n/en-US.js b/src/renderer/i18n/en-US.js index 19ff198f..c09450b6 100644 --- a/src/renderer/i18n/en-US.js +++ b/src/renderer/i18n/en-US.js @@ -62,7 +62,9 @@ module.exports = { table: 'Table', discard: 'Discard', stay: 'Stay', - author: 'Author' + author: 'Author', + light: 'Light', + dark: 'Dark' }, message: { appWelcome: 'Welcome to Antares SQL Client!', @@ -124,7 +126,9 @@ module.exports = { referenceField: 'Ref. field', foreignFields: 'Foreign fields', invalidDefault: 'Invalid default', - onDelete: 'On delete' + onDelete: 'On delete', + applicationTheme: 'Application Theme', + editorTheme: 'Editor Theme' }, // Date and Time short: { diff --git a/src/renderer/images/dark.png b/src/renderer/images/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..136134cf0fb877e652f9ecba988a31aad51dd922 GIT binary patch literal 39075 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 z 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 state.locale, getExplorebarSize: state => state.explorebar_size, - getNotificationsTimeout: state => state.notifications_timeout + getNotificationsTimeout: state => state.notifications_timeout, + getApplicationTheme: state => state.application_theme, + getEditorTheme: state => state.editor_theme }, mutations: { SET_LOCALE (state, locale) { @@ -29,6 +33,9 @@ export default { SET_EXPLOREBAR_SIZE (state, size) { state.explorebar_size = size; persistentStore.set('explorebar_size', state.explorebar_size); + }, + SET_EDITOR_THEME (state, theme) { + state.editor_theme = theme; } }, actions: { @@ -40,6 +47,9 @@ export default { }, changeExplorebarSize ({ commit }, size) { commit('SET_EXPLOREBAR_SIZE', size); + }, + changeEditorTheme ({ commit }, theme) { + commit('SET_EDITOR_THEME', theme); } } };