mirror of
https://github.com/lospec/pixel-editor.git
synced 2023-08-10 21:12:51 +03:00
155 lines
5.1 KiB
JavaScript
155 lines
5.1 KiB
JavaScript
var mainMenuItems = document.getElementById('main-menu').children;
|
|
|
|
//for each button in main menu (starting at 1 to avoid logo)
|
|
for (var i = 1; i < mainMenuItems.length; i++) {
|
|
|
|
//get the button that's in the list item
|
|
var menuItem = mainMenuItems[i];
|
|
var menuButton = menuItem.children[0];
|
|
|
|
//when you click a main menu items button
|
|
on('click', menuButton, function (e, button) {
|
|
select(button.parentElement);
|
|
});
|
|
|
|
var subMenu = menuItem.children[1];
|
|
var subMenuItems = subMenu.children;
|
|
|
|
//when you click an item within a menu button
|
|
for (var j = 0; j < subMenuItems.length; j++) {
|
|
|
|
var subMenuItem = subMenuItems[j];
|
|
var subMenuButton = subMenuItem.children[0];
|
|
|
|
subMenuButton.addEventListener('click', function (e) {
|
|
|
|
switch(this.textContent) {
|
|
|
|
//File Menu
|
|
case 'New':
|
|
showDialogue('new-pixel');
|
|
break;
|
|
case 'Save project':
|
|
openSaveProjectWindow();
|
|
break;
|
|
case 'Open':
|
|
//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();
|
|
|
|
break;
|
|
|
|
case 'Export':
|
|
openPixelExportWindow();
|
|
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;
|
|
// SELECTION MENU
|
|
case 'Paste':
|
|
pasteSelection();
|
|
break;
|
|
case 'Copy':
|
|
copySelection();
|
|
tool.pencil.switchTo();
|
|
break;
|
|
case 'Cut':
|
|
cutSelectionTool();
|
|
tool.pencil.switchTo();
|
|
break;
|
|
case 'Cancel':
|
|
tool.pencil.switchTo();
|
|
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();
|
|
});
|
|
}
|
|
}
|
|
|
|
function closeMenu () {
|
|
//remove .selected class from all menu buttons
|
|
for (var i = 0; i < mainMenuItems.length; i++) {
|
|
deselect(mainMenuItems[i]);
|
|
}
|
|
}
|
|
|
|
function getProjectData() {
|
|
// use a dictionary
|
|
let dictionary = {};
|
|
// sorting layers by increasing z-index
|
|
let layersCopy = layers.slice();
|
|
layersCopy.sort((a, b) => (a.canvas.style.zIndex > b.canvas.style.zIndex) ? 1 : -1);
|
|
// save canvas size
|
|
dictionary['canvasWidth'] = currentLayer.canvasSize[0];
|
|
dictionary['canvasHeight'] = currentLayer.canvasSize[1];
|
|
// save editor mode
|
|
dictionary['editorMode'] = pixelEditorMode;
|
|
// save palette
|
|
for (let i=0; i<currentPalette.length; i++) {
|
|
dictionary["color" + i] = currentPalette[i];
|
|
}
|
|
|
|
// save number of layers
|
|
dictionary["nLayers"] = layersCopy.length;
|
|
|
|
// save layers
|
|
for (let i=0; i<layersCopy.length; i++) {
|
|
// Only saving the layers the user has access to (no vfx, tmp or checkerboard layers)
|
|
if (layersCopy[i].menuEntry != null) {
|
|
dictionary["layer" + i] = layersCopy[i];
|
|
dictionary["layer" + i + "ImageData"] = layersCopy[i].canvas.toDataURL();
|
|
}
|
|
}
|
|
|
|
return JSON.stringify(dictionary);
|
|
} |