graviton-plugin-sdk
Version:
Gravtion plugin Dev Kit
237 lines (230 loc) • 6.83 kB
JavaScript
/*
########################################
MIT License
Copyright (c) 2019 Marc Espin Sanz
License > https://github.com/Graviton-Code-Editor/Graviton-App/blob/master/LICENSE.md
#########################################
*/
module.exports = {
Menus: {
loadDefaults: () => {
/**
*
* @desc This contains the default menus for Graviton, such as File, Editor, Help...
*
*/
const File = new dropMenu({
id: 'file',
translation: true
})
const Tools = new dropMenu({
id: 'tools',
translation: true
})
const Edit = new dropMenu({
id: 'edit',
translation: true
})
const Editor = new dropMenu({
id: 'editor',
translation: true
})
const WindowDM = new dropMenu({
id: 'window',
translation: true
})
const Help = new dropMenu({
id: 'help',
translation: true
})
File.setList({
button: 'File',
list: {
'Open Folder': () => openFolder(),
'Open File': () => openFile(),
'Save As': () => saveFileAs(),
Save: {
click: () => saveFile(),
hint: 'Ctrl+S'
},
'*line': '',
'New Project': () => NewProject.open(),
space1: '*line',
Exit: {
click: () => remote.app.exit(0),
icon: 'exit'
}
}
})
Edit.setList({
button: 'Edit',
list: {
Undo: {
click: () => {
if (editor != undefined) editor.execCommand('undo')
},
hint: 'Ctrl+Z'
},
Redo: {
click: () => {
if (editor != undefined) editor.execCommand('redo')
},
hint: 'Ctrl+Y'
},
'1a': '*line',
Search: {
click: () => graviton.editorSearch(),
hint: 'Ctrl+F'
},
Replace: {
click: () => graviton.editorReplace(),
hint: 'Ctrl+Shit+R'
},
JumpToLine: {
click: () => graviton.editorJumpToLine(),
hint: 'Alt+G'
}
}
})
Tools.setList({
button: 'Tools',
list: {
Market: () => {
Market.open(err => Market.navigate('all', err))
},
ShowWelcome: () => Welcome.open(),
'Zen Mode': {
click: () => graviton.toggleZenMode(),
hint: 'Ctrl+E'
},
'2a': '*line',
Settings: {
click: () => {
Settings.open()
Settings.navigate('customization')
},
icon: 'settings'
}
}
})
Editor.setList({
button: 'Editor',
list: {
DefaultView: () => screens.default(),
SplitScreen: {
click: () => screens.add(),
icon: 'split_screen',
hint: 'Ctrl+N'
},
RemoveScreen: {
click: () => graviton.removeScreen(),
icon: 'remove_screen',
hint: 'Ctrl+L'
},
a2: '*line',
openTerminal: {
click: () => {
if (terminal != null) {
commanders.show(terminal.id)
return
}
commanders.terminal()
},
icon: 'new_terminal',
hint: 'Ctrl+T'
},
hideTerminal: {
click: () => commanders.hide(terminal.id),
hint: 'Ctrl+H'
},
closeTerminal: {
click: () => commanders.closeTerminal(),
icon: 'close_terminal',
hint: 'Ctrl+U'
}
}
})
WindowDM.setList({
button: 'Window',
list: {
'Developer Tools': () => graviton.openDevTools(),
'1a': '*line',
HideMenus: {
click: () => {
graviton.toggleMenus()
new Notification({
title: getTranslation('Tip'),
content: getTranslation('ToggleMenuTipMessage')
})
},
hint: 'Ctrl+Tab'
},
'2a': '*line',
IncreaseZoom: {
click: () => graviton.setZoom(parseInt(current_config.appZoom) + 3),
icon: 'plus'
},
DicreaseZoom: {
click: () =>
graviton.setZoom(parseInt(current_config.appZoom) + -3),
icon: 'minus'
},
DefaultZoom: {
click: () => graviton.setZoom(25),
icon: 'default_zoom'
},
Fullscreen: {
click: () => graviton.toggleFullScreen(),
hint: 'F11'
}
}
})
Help.setList({
button: 'Help',
list: {
'Issues': () =>
shell.openExternal(
'https://github.com/Graviton-Code-Editor/Graviton-App/issues'
),
'Source Code': () =>
shell.openExternal(
'https://github.com/Graviton-Code-Editor/Graviton-App'
),
'a1': '*line',
'Telegram Channel': () =>
shell.openExternal('https://t.me/gravitoneditor'),
'Discord': () =>
shell.openExternal('https://discord.gg/gg6CTYA'),
'Twitter': () =>
shell.openExternal('https://twitter.com/gravitoneditor'),
'Donate': () => shell.openExternal('https://www.paypal.me/mkenzo8'),
'FAQs': () => shell.openExternal('https://www.graviton.ml/faqs'),
'Website': () => shell.openExternal('https://www.graviton.ml'),
'a2': '*line',
'Changelog': () => graviton.dialogChangelog(),
'About': {
click: () => graviton.dialogAbout(),
icon: 'info'
}
}
})
},
trigger: id => {
const dropdowns = document.getElementsByClassName('dropdown-content')
for (i = 0; i < dropdowns.length; i++) {
if (dropdowns[i].id != id) {
dropdowns[i].classList.replace('show', 'hide')
continue // Close the other menus
}
if (dropdowns[i].classList.contains('show')) {
dropdowns[i].classList.replace('show', 'hide') // Hide the clicked menu
anyDropON = null
} else {
dropdowns[i].classList.replace('hide', 'show') // Show the clicked menu
anyDropON = id
}
}
}
}
}