icon and theme experiments
1
TODO
|
@ -4,3 +4,4 @@
|
|||
- polish becca entities API
|
||||
- separate private and public APIs in becca entities
|
||||
- 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) {
|
||||
const themes = [
|
||||
{ val: 'green', title: 'Green' },
|
||||
{ val: 'white', title: 'White' },
|
||||
{ val: 'dark', title: 'Dark' },
|
||||
{ val: 'black', title: 'Black' }
|
||||
{ val: 'dark', title: 'Dark' }
|
||||
].concat(await server.get('options/user-themes'));
|
||||
|
||||
this.$themeSelect.empty();
|
||||
|
|
|
@ -7,9 +7,23 @@ const TPL = `
|
|||
.global-menu .dropdown-menu {
|
||||
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>
|
||||
|
||||
<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">
|
||||
<a class="dropdown-item options-button" data-trigger-command="showOptions">
|
||||
|
@ -77,6 +91,8 @@ export default class GlobalMenuWidget extends BasicWidget {
|
|||
doRender() {
|
||||
this.$widget = $(TPL);
|
||||
|
||||
this.$widget.find(".global-menu-button").tooltip();
|
||||
|
||||
this.$widget.find(".show-about-dialog-button").on('click',
|
||||
() => import("../../dialogs/about.js").then(d => d.showDialog()));
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ const TPL = `
|
|||
font-size: 1.5em;
|
||||
padding: 2px;
|
||||
max-height: 34px;
|
||||
color: var(--button-text-color);
|
||||
color: var(--launcher-pane-text-color);
|
||||
background-color: var(--button-background-color);
|
||||
border-radius: var(--button-border-radius);
|
||||
border: 1px solid transparent;
|
||||
|
|
|
@ -67,7 +67,7 @@ button.close:hover {
|
|||
padding: 5px;
|
||||
cursor: pointer;
|
||||
font-size: 1.5em;
|
||||
color: var(--main-text-color);
|
||||
color: var(--button-text-color);
|
||||
background: var(--button-background-color);
|
||||
}
|
||||
|
||||
|
@ -250,6 +250,11 @@ button.btn, button.btn-sm {
|
|||
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) {
|
||||
background-color: var(--button-disabled-background-color) !important;
|
||||
opacity: 0.4;
|
||||
|
@ -873,7 +878,7 @@ ul.fancytree-container li {
|
|||
padding: 15px 15px;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
color: var(--button-text-color);
|
||||
color: var(--launcher-pane-text-color);
|
||||
}
|
||||
|
||||
#launcher-pane .icon-action:hover {
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
--muted-text-color: #666;
|
||||
|
||||
--input-text-color: black;
|
||||
--input-background-color: white;
|
||||
--input-background-color: transparent;
|
||||
|
||||
--hover-item-text-color: black;
|
||||
--hover-item-background-color: #ddd;
|
||||
|
@ -62,6 +62,70 @@
|
|||
--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 {
|
||||
--main-font-family: MontserratLight;
|
||||
--main-font-size: normal;
|
||||
|
@ -254,6 +318,15 @@ input, select, textarea {
|
|||
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 {
|
||||
color: var(--main-text-color);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
const sql = require('../../services/sql');
|
||||
const becca = require("../../becca/becca");
|
||||
|
||||
function getSchema() {
|
||||
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 {BrowserWindow} = require('electron'); // should not be statically imported
|
||||
|
||||
const nativeImage = require('electron').nativeImage
|
||||
|
||||
const image = nativeImage.createFromPath(getIcon())
|
||||
console.log(image)
|
||||
|
||||
mainWindow = new BrowserWindow({
|
||||
x: mainWindowState.x,
|
||||
y: mainWindowState.y,
|
||||
|
@ -64,7 +70,7 @@ async function createMainWindow() {
|
|||
spellcheck: spellcheckEnabled
|
||||
},
|
||||
frame: optionService.getOptionBool('nativeTitleBarVisible'),
|
||||
icon: getIcon()
|
||||
icon: image
|
||||
});
|
||||
|
||||
mainWindowState.manage(mainWindow);
|
||||
|
@ -102,7 +108,8 @@ async function createMainWindow() {
|
|||
}
|
||||
|
||||
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() {
|
||||
|
|