icon and theme experiments
1
TODO
|
@ -4,3 +4,4 @@
|
||||||
- polish becca entities API
|
- polish becca entities API
|
||||||
- separate private and public APIs in becca entities
|
- separate private and public APIs in becca entities
|
||||||
- handle FIXMEs
|
- handle FIXMEs
|
||||||
|
- fix Steel Blue example
|
||||||
|
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 18 KiB |
BIN
images/app-icons/png/new.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
images/icon-bw.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
images/icon-color.png
Normal file
After Width: | Height: | Size: 10 KiB |
|
@ -157,9 +157,9 @@ export default class ApperanceOptions {
|
||||||
|
|
||||||
async optionsLoaded(options) {
|
async optionsLoaded(options) {
|
||||||
const themes = [
|
const themes = [
|
||||||
|
{ val: 'green', title: 'Green' },
|
||||||
{ val: 'white', title: 'White' },
|
{ val: 'white', title: 'White' },
|
||||||
{ val: 'dark', title: 'Dark' },
|
{ val: 'dark', title: 'Dark' }
|
||||||
{ val: 'black', title: 'Black' }
|
|
||||||
].concat(await server.get('options/user-themes'));
|
].concat(await server.get('options/user-themes'));
|
||||||
|
|
||||||
this.$themeSelect.empty();
|
this.$themeSelect.empty();
|
||||||
|
|
|
@ -7,9 +7,23 @@ const TPL = `
|
||||||
.global-menu .dropdown-menu {
|
.global-menu .dropdown-menu {
|
||||||
width: 20em;
|
width: 20em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.global-menu-button {
|
||||||
|
background-image: url("images/icon-bw.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 50% 45%;
|
||||||
|
width: 53px;
|
||||||
|
height: 53px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.global-menu-button:hover {
|
||||||
|
background-image: url("images/icon-color.png");
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="icon-action bx bx-menu" title="Menu"></button>
|
<button type="button" data-toggle="dropdown" data-placement="right"
|
||||||
|
aria-haspopup="true" aria-expanded="false"
|
||||||
|
class="icon-action global-menu-button" title="Menu"></button>
|
||||||
|
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a class="dropdown-item options-button" data-trigger-command="showOptions">
|
<a class="dropdown-item options-button" data-trigger-command="showOptions">
|
||||||
|
@ -77,6 +91,8 @@ export default class GlobalMenuWidget extends BasicWidget {
|
||||||
doRender() {
|
doRender() {
|
||||||
this.$widget = $(TPL);
|
this.$widget = $(TPL);
|
||||||
|
|
||||||
|
this.$widget.find(".global-menu-button").tooltip();
|
||||||
|
|
||||||
this.$widget.find(".show-about-dialog-button").on('click',
|
this.$widget.find(".show-about-dialog-button").on('click',
|
||||||
() => import("../../dialogs/about.js").then(d => d.showDialog()));
|
() => import("../../dialogs/about.js").then(d => d.showDialog()));
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ const TPL = `
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
max-height: 34px;
|
max-height: 34px;
|
||||||
color: var(--button-text-color);
|
color: var(--launcher-pane-text-color);
|
||||||
background-color: var(--button-background-color);
|
background-color: var(--button-background-color);
|
||||||
border-radius: var(--button-border-radius);
|
border-radius: var(--button-border-radius);
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
|
|
|
@ -67,7 +67,7 @@ button.close:hover {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
color: var(--main-text-color);
|
color: var(--button-text-color);
|
||||||
background: var(--button-background-color);
|
background: var(--button-background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,6 +250,11 @@ button.btn, button.btn-sm {
|
||||||
color: var(--button-text-color);
|
color: var(--button-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#left-pane .btn:not(.btn-primary) {
|
||||||
|
background-color: var(--button-background-color);
|
||||||
|
color: var(--left-pane-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
.btn.active:not(.btn-primary) {
|
.btn.active:not(.btn-primary) {
|
||||||
background-color: var(--button-disabled-background-color) !important;
|
background-color: var(--button-disabled-background-color) !important;
|
||||||
opacity: 0.4;
|
opacity: 0.4;
|
||||||
|
@ -873,7 +878,7 @@ ul.fancytree-container li {
|
||||||
padding: 15px 15px;
|
padding: 15px 15px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: none;
|
border: none;
|
||||||
color: var(--button-text-color);
|
color: var(--launcher-pane-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#launcher-pane .icon-action:hover {
|
#launcher-pane .icon-action:hover {
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
--muted-text-color: #666;
|
--muted-text-color: #666;
|
||||||
|
|
||||||
--input-text-color: black;
|
--input-text-color: black;
|
||||||
--input-background-color: white;
|
--input-background-color: transparent;
|
||||||
|
|
||||||
--hover-item-text-color: black;
|
--hover-item-text-color: black;
|
||||||
--hover-item-background-color: #ddd;
|
--hover-item-background-color: #ddd;
|
||||||
|
@ -62,6 +62,70 @@
|
||||||
--link-color: blue;
|
--link-color: blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.theme-green {
|
||||||
|
--main-font-family: MontserratLight;
|
||||||
|
--main-font-size: normal;
|
||||||
|
|
||||||
|
--tree-font-family: MontserratLight;
|
||||||
|
--tree-font-size: normal;
|
||||||
|
|
||||||
|
--detail-font-family: MontserratLight;
|
||||||
|
--detail-font-size: normal;
|
||||||
|
|
||||||
|
--font-family-monospace: JetBrainsLight;
|
||||||
|
--detail-text-font-family: MontserratLight;
|
||||||
|
|
||||||
|
--main-background-color: white;
|
||||||
|
--main-text-color: black;
|
||||||
|
--main-border-color: #3F9D38;
|
||||||
|
|
||||||
|
--accented-background-color: #51C048;
|
||||||
|
--more-accented-background-color: #3F9D38;
|
||||||
|
|
||||||
|
--button-background-color: transparent;
|
||||||
|
--button-disabled-background-color: #ddd;
|
||||||
|
--button-border-color: #3F9D38;
|
||||||
|
--button-text-color: #3F9D38;
|
||||||
|
--button-border-radius: 5px;
|
||||||
|
|
||||||
|
--primary-button-background-color: #6c757d;
|
||||||
|
--primary-button-text-color: white;
|
||||||
|
--primary-button-border-color: #6c757d;
|
||||||
|
|
||||||
|
--muted-text-color: #666;
|
||||||
|
|
||||||
|
--input-text-color: black;
|
||||||
|
--input-background-color: transparent;
|
||||||
|
|
||||||
|
--hover-item-text-color: black;
|
||||||
|
--hover-item-background-color: #ddd;
|
||||||
|
|
||||||
|
--active-item-text-color: black;
|
||||||
|
--active-item-background-color: #ddd;
|
||||||
|
|
||||||
|
--menu-text-color: black;
|
||||||
|
--menu-background-color: white;
|
||||||
|
|
||||||
|
--modal-background-color: white;
|
||||||
|
--modal-backdrop-color: black;
|
||||||
|
|
||||||
|
--left-pane-background-color: #98DB92;
|
||||||
|
--left-pane-text-color: #333;
|
||||||
|
|
||||||
|
--launcher-pane-background-color: #98DB92;
|
||||||
|
--launcher-pane-text-color: #333;
|
||||||
|
|
||||||
|
--active-tab-background-color: #51C048;
|
||||||
|
--active-tab-text-color: black;
|
||||||
|
|
||||||
|
--inactive-tab-background-color: #98DB92;
|
||||||
|
--inactive-tab-text-color: #666;
|
||||||
|
|
||||||
|
--scrollbar-border-color: #3F9D38;
|
||||||
|
--tooltip-background-color: #f8f8f8;
|
||||||
|
--link-color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-dark {
|
body.theme-dark {
|
||||||
--main-font-family: MontserratLight;
|
--main-font-family: MontserratLight;
|
||||||
--main-font-size: normal;
|
--main-font-size: normal;
|
||||||
|
@ -254,6 +318,15 @@ input, select, textarea {
|
||||||
background: var(--input-background-color) !important;
|
background: var(--input-background-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#left-pane input, select, textarea {
|
||||||
|
color: var(--left-pane-text-color) !important;
|
||||||
|
background: var(--left-pane-background-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
input::placeholder {
|
||||||
|
color: var(--muted-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
table td, table th {
|
table td, table th {
|
||||||
color: var(--main-text-color);
|
color: var(--main-text-color);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const sql = require('../../services/sql');
|
const sql = require('../../services/sql');
|
||||||
|
const becca = require("../../becca/becca");
|
||||||
|
|
||||||
function getSchema() {
|
function getSchema() {
|
||||||
const tableNames = sql.getColumn(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name`);
|
const tableNames = sql.getColumn(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name`);
|
||||||
|
|
|
@ -51,6 +51,12 @@ async function createMainWindow() {
|
||||||
const spellcheckEnabled = optionService.getOptionBool('spellCheckEnabled');
|
const spellcheckEnabled = optionService.getOptionBool('spellCheckEnabled');
|
||||||
|
|
||||||
const {BrowserWindow} = require('electron'); // should not be statically imported
|
const {BrowserWindow} = require('electron'); // should not be statically imported
|
||||||
|
|
||||||
|
const nativeImage = require('electron').nativeImage
|
||||||
|
|
||||||
|
const image = nativeImage.createFromPath(getIcon())
|
||||||
|
console.log(image)
|
||||||
|
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
x: mainWindowState.x,
|
x: mainWindowState.x,
|
||||||
y: mainWindowState.y,
|
y: mainWindowState.y,
|
||||||
|
@ -64,7 +70,7 @@ async function createMainWindow() {
|
||||||
spellcheck: spellcheckEnabled
|
spellcheck: spellcheckEnabled
|
||||||
},
|
},
|
||||||
frame: optionService.getOptionBool('nativeTitleBarVisible'),
|
frame: optionService.getOptionBool('nativeTitleBarVisible'),
|
||||||
icon: getIcon()
|
icon: image
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindowState.manage(mainWindow);
|
mainWindowState.manage(mainWindow);
|
||||||
|
@ -102,7 +108,8 @@ async function createMainWindow() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getIcon() {
|
function getIcon() {
|
||||||
return path.join(__dirname, '../../images/app-icons/png/256x256' + (env.isDev() ? '-dev' : '') + '.png');
|
// return path.join(__dirname, '../../images/app-icons/png/256x256' + (env.isDev() ? '-dev' : '') + '.png');
|
||||||
|
return path.join(__dirname, '../../images/app-icons/png/new.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createSetupWindow() {
|
async function createSetupWindow() {
|
||||||
|
|