From b7c523b0c71647fa7270b0c651628c533d88cee0 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sun, 16 Apr 2017 17:13:03 +0200 Subject: [PATCH] . --- app/main.js | 2 + app/package.json | 2 +- terminus-core/src/components/appRoot.pug | 4 +- terminus-core/src/components/startPage.pug | 7 ++++ terminus-core/src/components/startPage.scss | 13 +++++++ terminus-core/src/components/startPage.ts | 20 ++++++++++ terminus-core/src/defaultConfigStructure.yaml | 3 -- terminus-core/src/index.ts | 2 + terminus-core/src/services/config.ts | 6 ++- terminus-core/src/services/hostApp.ts | 8 ++-- terminus-core/src/theme.scss | 38 +++++++++++-------- .../src/components/settingsTab.pug | 7 ++++ .../src/components/settingsTab.ts | 3 +- 13 files changed, 88 insertions(+), 27 deletions(-) create mode 100644 terminus-core/src/components/startPage.pug create mode 100644 terminus-core/src/components/startPage.scss create mode 100644 terminus-core/src/components/startPage.ts delete mode 100644 terminus-core/src/defaultConfigStructure.yaml diff --git a/app/main.js b/app/main.js index 8f364907..1dd653a5 100644 --- a/app/main.js +++ b/app/main.js @@ -1,4 +1,6 @@ const electron = require('electron') +require('electron-debug')({enabled: true, showDevTools: (process.argv.indexOf('--debug') != -1) ? 'undocked' : false}) + let app = electron.app diff --git a/app/package.json b/app/package.json index 4eaf3358..e0e4e800 100644 --- a/app/package.json +++ b/app/package.json @@ -17,7 +17,7 @@ "@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.22", "devtron": "1.4.0", "electron-config": "0.2.1", - "electron-debug": "1.0.1", + "electron-debug": "^1.0.1", "electron-is-dev": "0.1.2", "fs-promise": "^2.0.2", "js-yaml": "3.8.2", diff --git a/terminus-core/src/components/appRoot.pug b/terminus-core/src/components/appRoot.pug index c42cc4cd..7dccd977 100644 --- a/terminus-core/src/components/appRoot.pug +++ b/terminus-core/src/components/appRoot.pug @@ -3,7 +3,7 @@ title-bar(*ngIf='!config.store.appearance.useNativeFrame && config.store.appeara .content( [class.tabs-on-top]='config.store.appearance.tabsOnTop' ) - .tab-bar + .tab-bar(*ngIf='app.tabs.length > 0') button.btn.btn-secondary( *ngFor='let button of getLeftToolbarButtons()', [title]='button.title', @@ -32,6 +32,8 @@ title-bar(*ngIf='!config.store.appearance.useNativeFrame && config.store.appeara ) i.fa([class]='"fa fa-" + button.icon') + start-page(*ngIf='app.tabs.length == 0') + tab-body( *ngFor='let tab of app.tabs; trackBy: tab?.id', [active]='tab == app.activeTab', diff --git a/terminus-core/src/components/startPage.pug b/terminus-core/src/components/startPage.pug new file mode 100644 index 00000000..1529ceb9 --- /dev/null +++ b/terminus-core/src/components/startPage.pug @@ -0,0 +1,7 @@ +div + button.btn.btn-outline-info.btn-lg.btn-block( + *ngFor='let button of getButtons()', + (click)='button.click()', + ) + i.fa([class]='"fa fa-" + button.icon') + span {{button.title}} diff --git a/terminus-core/src/components/startPage.scss b/terminus-core/src/components/startPage.scss new file mode 100644 index 00000000..bbecf169 --- /dev/null +++ b/terminus-core/src/components/startPage.scss @@ -0,0 +1,13 @@ +:host { + display: flex; + flex: auto; +} + +:host div { + flex: none; + margin: auto; + width: 400px; + max-width: 100vw; + display: flex; + flex-direction: column; +} diff --git a/terminus-core/src/components/startPage.ts b/terminus-core/src/components/startPage.ts new file mode 100644 index 00000000..2fb2de87 --- /dev/null +++ b/terminus-core/src/components/startPage.ts @@ -0,0 +1,20 @@ +import { Component, Inject } from '@angular/core' +import { IToolbarButton, ToolbarButtonProvider } from '../api' + +@Component({ + selector: 'start-page', + template: require('./startPage.pug'), + styles: [require('./startPage.scss')], +}) +export class StartPageComponent { + constructor( + @Inject(ToolbarButtonProvider) private toolbarButtonProviders: ToolbarButtonProvider[], + ) { } + + getButtons (): IToolbarButton[] { + return this.toolbarButtonProviders + .map(provider => provider.provide()) + .reduce((a, b) => a.concat(b)) + .sort((a: IToolbarButton, b: IToolbarButton) => (a.weight || 0) - (b.weight || 0)) + } +} diff --git a/terminus-core/src/defaultConfigStructure.yaml b/terminus-core/src/defaultConfigStructure.yaml deleted file mode 100644 index 5de9f701..00000000 --- a/terminus-core/src/defaultConfigStructure.yaml +++ /dev/null @@ -1,3 +0,0 @@ -appearance: { } -hotkeys: { } -terminal: { } diff --git a/terminus-core/src/index.ts b/terminus-core/src/index.ts index c7cd2e51..17a70326 100644 --- a/terminus-core/src/index.ts +++ b/terminus-core/src/index.ts @@ -20,6 +20,7 @@ import { ThemesService } from './services/themes' import { AppRootComponent } from './components/appRoot' import { TabBodyComponent } from './components/tabBody' +import { StartPageComponent } from './components/startPage' import { TabHeaderComponent } from './components/tabHeader' import { TitleBarComponent } from './components/titleBar' @@ -57,6 +58,7 @@ const PROVIDERS = [ ], declarations: [ AppRootComponent, + StartPageComponent, TabBodyComponent, TabHeaderComponent, TitleBarComponent, diff --git a/terminus-core/src/services/config.ts b/terminus-core/src/services/config.ts index 2cd4071c..b0fdd750 100644 --- a/terminus-core/src/services/config.ts +++ b/terminus-core/src/services/config.ts @@ -9,7 +9,11 @@ import { ConfigProvider } from '../api/configProvider' export class ConfigProxy { constructor (real: any, defaults: any) { for (let key in defaults) { - if (defaults[key] instanceof Object && Object.keys(defaults[key]).length > 0) { + if ( + defaults[key] instanceof Object && + !(defaults[key] instanceof Array) && + Object.keys(defaults[key]).length > 0 + ) { if (!real[key]) { real[key] = {} } diff --git a/terminus-core/src/services/hostApp.ts b/terminus-core/src/services/hostApp.ts index fc237c2b..7448f760 100644 --- a/terminus-core/src/services/hostApp.ts +++ b/terminus-core/src/services/hostApp.ts @@ -51,15 +51,15 @@ export class HostAppService { private logger: Logger; - getWindow() { + getWindow () { return this.electron.app.window } - getShell() { + getShell () { return this.electron.shell } - getAppPath() { + getAppPath () { return this.electron.app.getAppPath() } @@ -68,7 +68,7 @@ export class HostAppService { } openDevTools() { - this.electron.app.webContents.openDevTools() + this.getWindow().webContents.openDevTools() } setCloseable(flag: boolean) { diff --git a/terminus-core/src/theme.scss b/terminus-core/src/theme.scss index c568aa31..c688d46e 100644 --- a/terminus-core/src/theme.scss +++ b/terminus-core/src/theme.scss @@ -62,22 +62,6 @@ $popover-bg: $body-bg2; @import '~bootstrap/scss/bootstrap.scss'; -.nav-tabs { - background: $btn-secondary-bg; - .nav-link { - transition: 0.25s all; - border-bottom-color: $nav-tabs-border-color; - } -} - -ngb-tabset .tab-content { - padding-top: 20px; -} - -[ngbradiogroup] > label.active { - background: $blue; -} - title-bar { background: $body-bg2; @@ -294,3 +278,25 @@ hotkey-input-modal { .form-group label { margin-bottom: 2px; } + +.nav-tabs { + background: $btn-secondary-bg; + .nav-link { + transition: 0.25s all; + border-bottom-color: $nav-tabs-border-color; + } +} + +ngb-tabset .tab-content { + padding-top: 20px; +} + +[ngbradiogroup] > label.active { + background: $blue; +} + +.btn { + i + * { + margin-left: 5px; + } +} diff --git a/terminus-settings/src/components/settingsTab.pug b/terminus-settings/src/components/settingsTab.pug index 061b39aa..03f205c0 100644 --- a/terminus-settings/src/components/settingsTab.pug +++ b/terminus-settings/src/components/settingsTab.pug @@ -132,6 +132,13 @@ ngb-tabset.vertical(type='tabs') step='0.01' ) + .form-group + label Debugging + div + button.btn.btn-secondary((click)='hostApp.openDevTools()') + i.fa.fa-bug + span Open DevTools + ngb-tab template(ngbTabTitle) | Hotkeys diff --git a/terminus-settings/src/components/settingsTab.ts b/terminus-settings/src/components/settingsTab.ts index ee6df258..c64991b0 100644 --- a/terminus-settings/src/components/settingsTab.ts +++ b/terminus-settings/src/components/settingsTab.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core' -import { ElectronService, DockingService, ConfigService, IHotkeyDescription, HotkeyProvider, BaseTabComponent, Theme } from 'terminus-core' +import { ElectronService, DockingService, ConfigService, IHotkeyDescription, HotkeyProvider, BaseTabComponent, Theme, HostAppService } from 'terminus-core' import { SettingsTabProvider } from '../api' @@ -20,6 +20,7 @@ export class SettingsTabComponent extends BaseTabComponent { public config: ConfigService, private electron: ElectronService, public docking: DockingService, + public hostApp: HostAppService, @Inject(HotkeyProvider) hotkeyProviders: HotkeyProvider[], @Inject(SettingsTabProvider) public settingsProviders: SettingsTabProvider[], @Inject(Theme) public themes: Theme[],