mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-23 04:49:59 +00:00
.
This commit is contained in:
parent
9c12669e8f
commit
b7c523b0c7
@ -1,4 +1,6 @@
|
|||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
|
require('electron-debug')({enabled: true, showDevTools: (process.argv.indexOf('--debug') != -1) ? 'undocked' : false})
|
||||||
|
|
||||||
|
|
||||||
let app = electron.app
|
let app = electron.app
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
"@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.22",
|
"@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.22",
|
||||||
"devtron": "1.4.0",
|
"devtron": "1.4.0",
|
||||||
"electron-config": "0.2.1",
|
"electron-config": "0.2.1",
|
||||||
"electron-debug": "1.0.1",
|
"electron-debug": "^1.0.1",
|
||||||
"electron-is-dev": "0.1.2",
|
"electron-is-dev": "0.1.2",
|
||||||
"fs-promise": "^2.0.2",
|
"fs-promise": "^2.0.2",
|
||||||
"js-yaml": "3.8.2",
|
"js-yaml": "3.8.2",
|
||||||
|
@ -3,7 +3,7 @@ title-bar(*ngIf='!config.store.appearance.useNativeFrame && config.store.appeara
|
|||||||
.content(
|
.content(
|
||||||
[class.tabs-on-top]='config.store.appearance.tabsOnTop'
|
[class.tabs-on-top]='config.store.appearance.tabsOnTop'
|
||||||
)
|
)
|
||||||
.tab-bar
|
.tab-bar(*ngIf='app.tabs.length > 0')
|
||||||
button.btn.btn-secondary(
|
button.btn.btn-secondary(
|
||||||
*ngFor='let button of getLeftToolbarButtons()',
|
*ngFor='let button of getLeftToolbarButtons()',
|
||||||
[title]='button.title',
|
[title]='button.title',
|
||||||
@ -32,6 +32,8 @@ title-bar(*ngIf='!config.store.appearance.useNativeFrame && config.store.appeara
|
|||||||
)
|
)
|
||||||
i.fa([class]='"fa fa-" + button.icon')
|
i.fa([class]='"fa fa-" + button.icon')
|
||||||
|
|
||||||
|
start-page(*ngIf='app.tabs.length == 0')
|
||||||
|
|
||||||
tab-body(
|
tab-body(
|
||||||
*ngFor='let tab of app.tabs; trackBy: tab?.id',
|
*ngFor='let tab of app.tabs; trackBy: tab?.id',
|
||||||
[active]='tab == app.activeTab',
|
[active]='tab == app.activeTab',
|
||||||
|
7
terminus-core/src/components/startPage.pug
Normal file
7
terminus-core/src/components/startPage.pug
Normal file
@ -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}}
|
13
terminus-core/src/components/startPage.scss
Normal file
13
terminus-core/src/components/startPage.scss
Normal file
@ -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;
|
||||||
|
}
|
20
terminus-core/src/components/startPage.ts
Normal file
20
terminus-core/src/components/startPage.ts
Normal file
@ -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))
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +0,0 @@
|
|||||||
appearance: { }
|
|
||||||
hotkeys: { }
|
|
||||||
terminal: { }
|
|
@ -20,6 +20,7 @@ import { ThemesService } from './services/themes'
|
|||||||
|
|
||||||
import { AppRootComponent } from './components/appRoot'
|
import { AppRootComponent } from './components/appRoot'
|
||||||
import { TabBodyComponent } from './components/tabBody'
|
import { TabBodyComponent } from './components/tabBody'
|
||||||
|
import { StartPageComponent } from './components/startPage'
|
||||||
import { TabHeaderComponent } from './components/tabHeader'
|
import { TabHeaderComponent } from './components/tabHeader'
|
||||||
import { TitleBarComponent } from './components/titleBar'
|
import { TitleBarComponent } from './components/titleBar'
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ const PROVIDERS = [
|
|||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppRootComponent,
|
AppRootComponent,
|
||||||
|
StartPageComponent,
|
||||||
TabBodyComponent,
|
TabBodyComponent,
|
||||||
TabHeaderComponent,
|
TabHeaderComponent,
|
||||||
TitleBarComponent,
|
TitleBarComponent,
|
||||||
|
@ -9,7 +9,11 @@ import { ConfigProvider } from '../api/configProvider'
|
|||||||
export class ConfigProxy {
|
export class ConfigProxy {
|
||||||
constructor (real: any, defaults: any) {
|
constructor (real: any, defaults: any) {
|
||||||
for (let key in defaults) {
|
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]) {
|
if (!real[key]) {
|
||||||
real[key] = {}
|
real[key] = {}
|
||||||
}
|
}
|
||||||
|
@ -51,15 +51,15 @@ export class HostAppService {
|
|||||||
|
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
|
|
||||||
getWindow() {
|
getWindow () {
|
||||||
return this.electron.app.window
|
return this.electron.app.window
|
||||||
}
|
}
|
||||||
|
|
||||||
getShell() {
|
getShell () {
|
||||||
return this.electron.shell
|
return this.electron.shell
|
||||||
}
|
}
|
||||||
|
|
||||||
getAppPath() {
|
getAppPath () {
|
||||||
return this.electron.app.getAppPath()
|
return this.electron.app.getAppPath()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ export class HostAppService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
openDevTools() {
|
openDevTools() {
|
||||||
this.electron.app.webContents.openDevTools()
|
this.getWindow().webContents.openDevTools()
|
||||||
}
|
}
|
||||||
|
|
||||||
setCloseable(flag: boolean) {
|
setCloseable(flag: boolean) {
|
||||||
|
@ -62,22 +62,6 @@ $popover-bg: $body-bg2;
|
|||||||
|
|
||||||
@import '~bootstrap/scss/bootstrap.scss';
|
@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 {
|
title-bar {
|
||||||
background: $body-bg2;
|
background: $body-bg2;
|
||||||
|
|
||||||
@ -294,3 +278,25 @@ hotkey-input-modal {
|
|||||||
.form-group label {
|
.form-group label {
|
||||||
margin-bottom: 2px;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -132,6 +132,13 @@ ngb-tabset.vertical(type='tabs')
|
|||||||
step='0.01'
|
step='0.01'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
.form-group
|
||||||
|
label Debugging
|
||||||
|
div
|
||||||
|
button.btn.btn-secondary((click)='hostApp.openDevTools()')
|
||||||
|
i.fa.fa-bug
|
||||||
|
span Open DevTools
|
||||||
|
|
||||||
ngb-tab
|
ngb-tab
|
||||||
template(ngbTabTitle)
|
template(ngbTabTitle)
|
||||||
| Hotkeys
|
| Hotkeys
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Component, Inject } from '@angular/core'
|
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'
|
import { SettingsTabProvider } from '../api'
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ export class SettingsTabComponent extends BaseTabComponent {
|
|||||||
public config: ConfigService,
|
public config: ConfigService,
|
||||||
private electron: ElectronService,
|
private electron: ElectronService,
|
||||||
public docking: DockingService,
|
public docking: DockingService,
|
||||||
|
public hostApp: HostAppService,
|
||||||
@Inject(HotkeyProvider) hotkeyProviders: HotkeyProvider[],
|
@Inject(HotkeyProvider) hotkeyProviders: HotkeyProvider[],
|
||||||
@Inject(SettingsTabProvider) public settingsProviders: SettingsTabProvider[],
|
@Inject(SettingsTabProvider) public settingsProviders: SettingsTabProvider[],
|
||||||
@Inject(Theme) public themes: Theme[],
|
@Inject(Theme) public themes: Theme[],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user