pixel-editor/js/_fileMenu.js

137 lines
4.6 KiB
JavaScript
Raw Normal View History

2020-04-04 10:41:56 +03:00
var mainMenuItems = document.getElementById('main-menu').children;
2019-03-27 02:20:54 +03:00
//for each button in main menu (starting at 1 to avoid logo)
for (var i = 1; i < mainMenuItems.length; i++) {
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//get the button that's in the list item
var menuItem = mainMenuItems[i];
var menuButton = menuItem.children[0];
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
console.log(mainMenuItems);
2020-03-08 01:46:25 +03:00
2019-03-27 02:20:54 +03:00
//when you click a main menu items button
on('click', menuButton, function (e, button) {
2020-04-04 10:41:56 +03:00
console.log('parent ', button.parentElement);
select(button.parentElement);
2019-03-27 02:20:54 +03:00
});
2020-03-08 01:46:25 +03:00
2019-03-27 02:20:54 +03:00
var subMenu = menuItem.children[1];
var subMenuItems = subMenu.children;
2020-03-08 01:46:25 +03:00
2019-03-27 02:20:54 +03:00
//when you click an item within a menu button
for (var j = 0; j < subMenuItems.length; j++) {
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
var subMenuItem = subMenuItems[j];
var subMenuButton = subMenuItem.children[0];
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
subMenuButton.addEventListener('click', function (e) {
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
switch(this.textContent) {
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//File Menu
case 'New':
showDialogue('new-pixel');
break;
case 'Open':
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//if a document exists
if (documentCreated) {
//check if the user wants to overwrite
if (confirm('Opening a pixel will discard your current one. Are you sure you want to do that?'))
//open file selection dialog
document.getElementById('open-image-browse-holder').click();
}
else
//open file selection dialog
document.getElementById('open-image-browse-holder').click();
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
break;
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
case 'Save as...':
if (documentCreated) {
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//create name
var selectedPalette = getText('palette-button');
if (selectedPalette != 'Choose a palette...'){
var paletteAbbreviation = palettes[selectedPalette].abbreviation;
var fileName = 'pixel-'+paletteAbbreviation+'-'+canvasSize[0]+'x'+canvasSize[1]+'.png';
} else {
var fileName = 'pixel-'+canvasSize[0]+'x'+canvasSize[1]+'.png';
selectedPalette = 'none';
}
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//set download link
var linkHolder = document.getElementById('save-image-link-holder');
linkHolder.href = canvas.toDataURL();
linkHolder.download = fileName;
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
linkHolder.click();
2020-03-08 01:46:25 +03:00
2020-04-04 10:41:56 +03:00
//track google event
2019-03-27 02:20:54 +03:00
ga('send', 'event', 'Pixel Editor Save', selectedPalette, canvasSize[0]+'/'+canvasSize[1]); /*global ga*/
2020-04-04 10:41:56 +03:00
}
break;
case 'Exit':
console.log('exit');
//if a document exists, make sure they want to delete it
if (documentCreated) {
//ask user if they want to leave
if (confirm('Exiting will discard your current pixel. Are you sure you want to do that?'))
//skip onbeforeunload prompt
window.onbeforeunload = null;
else
e.preventDefault();
}
break;
//Edit Menu
case 'Undo':
undo();
break;
case 'Redo':
redo();
break;
//Palette Menu
case 'Add color':
addColor('#eeeeee');
break;
//Help Menu
case 'Settings':
//fill form with current settings values
setValue('setting-numberOfHistoryStates', settings.numberOfHistoryStates);
showDialogue('settings');
break;
//Help Menu
case 'Help':
showDialogue('help');
break;
case 'About':
showDialogue('about');
break;
case 'Changelog':
showDialogue('changelog');
break;
}
closeMenu();
});
}
2019-03-27 02:20:54 +03:00
}
function closeMenu () {
2020-04-04 10:41:56 +03:00
//remove .selected class from all menu buttons
for (var i = 0; i < mainMenuItems.length; i++) {
deselect(mainMenuItems[i]);
}
}