mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
Moved resize+app settings to AbstractSettingController
This commit is contained in:
@ -3,14 +3,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.textfield {
|
.textfield {
|
||||||
|
box-sizing:border-box;
|
||||||
|
|
||||||
background : black;
|
background : black;
|
||||||
border : 1px solid #888;
|
border : 1px solid #888;
|
||||||
border-radius : 2px;
|
border-radius : 2px;
|
||||||
padding : 3px 10px;
|
padding : 3px 10px;
|
||||||
color : white;
|
color : white;
|
||||||
|
|
||||||
box-sizing:border-box;
|
|
||||||
-moz-box-sizing:border-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.textfield[disabled=disabled] {
|
.textfield[disabled=disabled] {
|
||||||
@ -22,8 +21,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
height: 24px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
height: 24px;
|
||||||
|
|
||||||
background-color: #3f3f3f;
|
background-color: #3f3f3f;
|
||||||
border: 1px solid #333;
|
border: 1px solid #333;
|
||||||
@ -34,7 +33,7 @@
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: 0px -1px 0 black;
|
text-shadow: 0 -1px 0 black;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -56,7 +55,7 @@
|
|||||||
border-bottom-color: rgb(151, 133, 0);
|
border-bottom-color: rgb(151, 133, 0);
|
||||||
|
|
||||||
color: black;
|
color: black;
|
||||||
text-shadow: 0px 1px 0 #fff;
|
text-shadow: 0 1px 0 #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-primary:hover {
|
.button-primary:hover {
|
||||||
@ -69,7 +68,7 @@
|
|||||||
cursor:default;
|
cursor:default;
|
||||||
background-color: #aaa;
|
background-color: #aaa;
|
||||||
color: #777;
|
color: #777;
|
||||||
text-shadow: 0px 1px 0 #bbb;
|
text-shadow: 0 1px 0 #bbb;
|
||||||
border-color: #666;
|
border-color: #666;
|
||||||
border-top-color: #999;
|
border-top-color: #999;
|
||||||
border-bottom-color: #555;
|
border-bottom-color: #555;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
.tiled-preview-checkbox {
|
.tiled-preview-checkbox {
|
||||||
vertical-align: -2px;
|
vertical-align: -2px;
|
||||||
|
margin-left: 0;
|
||||||
}
|
}
|
26
src/js/controller/settings/AbstractSettingController.js
Normal file
26
src/js/controller/settings/AbstractSettingController.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
(function () {
|
||||||
|
var ns = $.namespace('pskl.controller.settings');
|
||||||
|
ns.AbstractSettingController = function () {};
|
||||||
|
|
||||||
|
ns.AbstractSettingController.prototype.addEventListener = function (el, type, callback) {
|
||||||
|
pskl.utils.Event.addEventListener(el, type, callback, this);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ns.AbstractSettingController.prototype.destroy = function () {
|
||||||
|
pskl.utils.Event.removeAllEventListeners(this);
|
||||||
|
this.nullifyDomReferences_();
|
||||||
|
};
|
||||||
|
|
||||||
|
ns.AbstractSettingController.prototype.nullifyDomReferences_ = function () {
|
||||||
|
for (var key in this) {
|
||||||
|
if (this.hasOwnProperty(key)) {
|
||||||
|
var isHTMLElement = this[key] && this[key].nodeName;
|
||||||
|
if (isHTMLElement) {
|
||||||
|
this[key] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
ns.ApplicationSettingsController = function () {};
|
ns.ApplicationSettingsController = function () {};
|
||||||
|
|
||||||
|
pskl.utils.inherit(ns.ApplicationSettingsController, pskl.controller.settings.AbstractSettingController);
|
||||||
|
|
||||||
ns.ApplicationSettingsController.prototype.init = function() {
|
ns.ApplicationSettingsController.prototype.init = function() {
|
||||||
this.backgroundContainer = document.querySelector('.background-picker-wrapper');
|
this.backgroundContainer = document.querySelector('.background-picker-wrapper');
|
||||||
pskl.utils.Event.addEventListener(this.backgroundContainer, 'click', this.onBackgroundClick_, this);
|
this.addEventListener(this.backgroundContainer, 'click', this.onBackgroundClick_);
|
||||||
|
|
||||||
// Highlight selected background :
|
// Highlight selected background :
|
||||||
var background = pskl.UserSettings.get(pskl.UserSettings.CANVAS_BACKGROUND);
|
var background = pskl.UserSettings.get(pskl.UserSettings.CANVAS_BACKGROUND);
|
||||||
@ -22,7 +24,7 @@
|
|||||||
selectedOption.setAttribute('selected', 'selected');
|
selectedOption.setAttribute('selected', 'selected');
|
||||||
}
|
}
|
||||||
|
|
||||||
pskl.utils.Event.addEventListener(gridSelect, 'change', this.onGridWidthChange_, this);
|
this.addEventListener(gridSelect, 'change', this.onGridWidthChange_);
|
||||||
|
|
||||||
// Tiled preview
|
// Tiled preview
|
||||||
var tiledPreview = pskl.UserSettings.get(pskl.UserSettings.TILED_PREVIEW);
|
var tiledPreview = pskl.UserSettings.get(pskl.UserSettings.TILED_PREVIEW);
|
||||||
@ -30,17 +32,12 @@
|
|||||||
if (tiledPreview) {
|
if (tiledPreview) {
|
||||||
tiledPreviewCheckbox.setAttribute('checked', true);
|
tiledPreviewCheckbox.setAttribute('checked', true);
|
||||||
}
|
}
|
||||||
pskl.utils.Event.addEventListener(tiledPreviewCheckbox, 'change', this.onTiledPreviewChange_, this);
|
this.addEventListener(tiledPreviewCheckbox, 'change', this.onTiledPreviewChange_);
|
||||||
|
|
||||||
// Max FPS
|
// Max FPS
|
||||||
var maxFpsInput = document.querySelector('.max-fps-input');
|
var maxFpsInput = document.querySelector('.max-fps-input');
|
||||||
maxFpsInput.value = pskl.UserSettings.get(pskl.UserSettings.MAX_FPS);
|
maxFpsInput.value = pskl.UserSettings.get(pskl.UserSettings.MAX_FPS);
|
||||||
pskl.utils.Event.addEventListener(maxFpsInput, 'change', this.onMaxFpsChange_, this);
|
this.addEventListener(maxFpsInput, 'change', this.onMaxFpsChange_);
|
||||||
};
|
|
||||||
|
|
||||||
ns.ApplicationSettingsController.prototype.destroy = function () {
|
|
||||||
pskl.utils.Event.removeAllEventListeners(this);
|
|
||||||
this.backgroundContainer = null;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ns.ApplicationSettingsController.prototype.onGridWidthChange_ = function (evt) {
|
ns.ApplicationSettingsController.prototype.onGridWidthChange_ = function (evt) {
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
ns.AnchorWidget = function (container) {
|
ns.AnchorWidget = function (container) {
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.container.addEventListener('click', this.onResizeOriginClick_.bind(this));
|
this.disabled = false;
|
||||||
|
pskl.utils.Event.addEventListener(this.container, 'click', this.onResizeOriginClick_, this);
|
||||||
};
|
};
|
||||||
|
|
||||||
ns.AnchorWidget.ORIGIN = {
|
ns.AnchorWidget.ORIGIN = {
|
||||||
@ -20,9 +21,14 @@
|
|||||||
BOTTOMRIGHT : 'BOTTOMRIGHT'
|
BOTTOMRIGHT : 'BOTTOMRIGHT'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ns.AnchorWidget.prototype.destroy = function (evt) {
|
||||||
|
pskl.utils.Event.removeAllEventListeners(this);
|
||||||
|
this.container = null;
|
||||||
|
};
|
||||||
|
|
||||||
ns.AnchorWidget.prototype.onResizeOriginClick_ = function (evt) {
|
ns.AnchorWidget.prototype.onResizeOriginClick_ = function (evt) {
|
||||||
var origin = evt.target.dataset.origin;
|
var origin = evt.target.dataset.origin;
|
||||||
if (origin && ns.AnchorWidget.ORIGIN[origin]) {
|
if (origin && ns.AnchorWidget.ORIGIN[origin] && !this.disabled) {
|
||||||
this.setOrigin(origin);
|
this.setOrigin(origin);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
this.anchorWidget = new ns.AnchorWidget(anchorWidgetContainer);
|
this.anchorWidget = new ns.AnchorWidget(anchorWidgetContainer);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pskl.utils.inherit(ns.ResizeController, pskl.controller.settings.AbstractSettingController);
|
||||||
|
|
||||||
ns.ResizeController.prototype.init = function () {
|
ns.ResizeController.prototype.init = function () {
|
||||||
this.widthInput = this.container.querySelector('[name="resize-width"]');
|
this.widthInput = this.container.querySelector('[name="resize-width"]');
|
||||||
this.heightInput = this.container.querySelector('[name="resize-height"]');
|
this.heightInput = this.container.querySelector('[name="resize-height"]');
|
||||||
@ -17,25 +19,27 @@
|
|||||||
this.widthInput.value = this.piskelController.getWidth();
|
this.widthInput.value = this.piskelController.getWidth();
|
||||||
this.heightInput.value = this.piskelController.getHeight();
|
this.heightInput.value = this.piskelController.getHeight();
|
||||||
|
|
||||||
this.widthInput.addEventListener('keyup', this.onSizeInputKeyUp_.bind(this));
|
this.addEventListener(this.widthInput, 'keyup', this.onSizeInputKeyUp_);
|
||||||
this.heightInput.addEventListener('keyup', this.onSizeInputKeyUp_.bind(this));
|
this.addEventListener(this.heightInput, 'keyup', this.onSizeInputKeyUp_);
|
||||||
|
|
||||||
this.cancelButton = this.container.querySelector('.resize-cancel-button');
|
|
||||||
this.cancelButton.addEventListener('click', this.onCancelButtonClicked_.bind(this));
|
|
||||||
|
|
||||||
this.resizeForm = this.container.querySelector('form');
|
this.resizeForm = this.container.querySelector('form');
|
||||||
this.resizeForm.addEventListener('submit', this.onResizeFormSubmit_.bind(this));
|
this.addEventListener(this.resizeForm, 'submit', this.onResizeFormSubmit_);
|
||||||
|
|
||||||
this.resizeContentCheckbox = this.container.querySelector('.resize-content-checkbox');
|
this.resizeContentCheckbox = this.container.querySelector('.resize-content-checkbox');
|
||||||
this.resizeContentCheckbox.addEventListener('change', this.onResizeContentChange_.bind(this));
|
this.addEventListener(this.resizeContentCheckbox, 'change', this.onResizeContentChange_);
|
||||||
|
|
||||||
this.maintainRatioCheckbox = this.container.querySelector('.resize-ratio-checkbox');
|
this.maintainRatioCheckbox = this.container.querySelector('.resize-ratio-checkbox');
|
||||||
this.maintainRatioCheckbox.addEventListener('change', this.onMaintainRatioChange_.bind(this));
|
this.addEventListener(this.maintainRatioCheckbox, 'change', this.onMaintainRatioChange_);
|
||||||
|
|
||||||
this.anchorWidget.setOrigin(ns.AnchorWidget.ORIGIN.TOPLEFT);
|
this.anchorWidget.setOrigin(ns.AnchorWidget.ORIGIN.TOPLEFT);
|
||||||
this.lastInput = this.widthInput;
|
this.lastInput = this.widthInput;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ns.ResizeController.prototype.destroy = function () {
|
||||||
|
this.anchorWidget.destroy();
|
||||||
|
this.superclass.destroy.call(this);
|
||||||
|
};
|
||||||
|
|
||||||
ns.ResizeController.prototype.onResizeFormSubmit_ = function (evt) {
|
ns.ResizeController.prototype.onResizeFormSubmit_ = function (evt) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
|
|
||||||
@ -53,10 +57,6 @@
|
|||||||
return pskl.model.Layer.fromFrames(layer.getName(), resizedFrames);
|
return pskl.model.Layer.fromFrames(layer.getName(), resizedFrames);
|
||||||
};
|
};
|
||||||
|
|
||||||
ns.ResizeController.prototype.onCancelButtonClicked_ = function () {
|
|
||||||
$.publish(Events.CLOSE_SETTINGS_DRAWER);
|
|
||||||
};
|
|
||||||
|
|
||||||
ns.ResizeController.prototype.onResizeContentChange_ = function (evt) {
|
ns.ResizeController.prototype.onResizeContentChange_ = function (evt) {
|
||||||
var target = evt.target;
|
var target = evt.target;
|
||||||
if (target.checked) {
|
if (target.checked) {
|
||||||
@ -103,7 +103,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***********************/
|
/***********************/
|
||||||
/* RESIZE CANVAS LOGIC */
|
/* RESIZE LOGIC */
|
||||||
/***********************/
|
/***********************/
|
||||||
|
|
||||||
ns.ResizeController.prototype.resizeFrame_ = function (frame) {
|
ns.ResizeController.prototype.resizeFrame_ = function (frame) {
|
||||||
|
@ -20,9 +20,10 @@
|
|||||||
if (scope && scope.__pskl_listeners) {
|
if (scope && scope.__pskl_listeners) {
|
||||||
var listeners = scope.__pskl_listeners;
|
var listeners = scope.__pskl_listeners;
|
||||||
for (var i = 0 ; i < listeners.length ; i++) {
|
for (var i = 0 ; i < listeners.length ; i++) {
|
||||||
if (listeners[i].callback === callback) {
|
var listener = listeners[i];
|
||||||
|
if (listener.callback === callback && listener.el === el && listener.type === type) {
|
||||||
el.removeEventListener(type, listeners[i].handler);
|
el.removeEventListener(type, listeners[i].handler);
|
||||||
listeners.slice(i, 1);
|
listeners.splice(i, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,7 @@
|
|||||||
"js/controller/CanvasBackgroundController.js",
|
"js/controller/CanvasBackgroundController.js",
|
||||||
|
|
||||||
// Settings sub-controllers
|
// Settings sub-controllers
|
||||||
|
"js/controller/settings/AbstractSettingController.js",
|
||||||
"js/controller/settings/ApplicationSettingsController.js",
|
"js/controller/settings/ApplicationSettingsController.js",
|
||||||
"js/controller/settings/exportimage/ImageExportController.js",
|
"js/controller/settings/exportimage/ImageExportController.js",
|
||||||
"js/controller/settings/exportimage/GifExportController.js",
|
"js/controller/settings/exportimage/GifExportController.js",
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
"css/font-icon.css",
|
"css/font-icon.css",
|
||||||
"css/forms.css",
|
"css/forms.css",
|
||||||
"css/settings.css",
|
"css/settings.css",
|
||||||
|
"css/settings-application.css",
|
||||||
"css/settings-export.css",
|
"css/settings-export.css",
|
||||||
"css/settings-import.css",
|
"css/settings-import.css",
|
||||||
"css/settings-resize.css",
|
"css/settings-resize.css",
|
||||||
|
@ -39,13 +39,13 @@
|
|||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" value="1" class="tiled-preview-checkbox" name="tiled-preview-checkbox"/>
|
<input type="checkbox" value="1" class="tiled-preview-checkbox" name="tiled-preview-checkbox"/>
|
||||||
Display tiled preview
|
Repeated preview
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<label for="tiled-preview">Max FPS :</label>
|
<label for="tiled-preview">Maximum FPS </label>
|
||||||
<input type="text" class="textfield max-fps-input" name="max-fps"/>
|
<input type="text" class="textfield textfield-small max-fps-input" name="max-fps"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
Import From Picture
|
Import From Picture
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<div style="margin-top:5px;margin-bottom:5px;">Supports : <span class="import-highlight">PNG, JPG, BMP, Animated GIF ...</span></div>
|
<div style="margin-top:5px;margin-bottom:5px;">Supports <span class="import-highlight">PNG, JPG, BMP, Animated GIF</span></div>
|
||||||
<div class="import-section">
|
<div class="import-section">
|
||||||
<button type="button" class="button button-primary file-input-button">Browse images</button>
|
<button type="button" class="button button-primary file-input-button">Browse images</button>
|
||||||
<input style="display:none"
|
<input style="display:none"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<div class="settings-section">
|
<div class="settings-section">
|
||||||
<!-- RESIZE DRAWING AREA -->
|
<!-- RESIZE DRAWING AREA -->
|
||||||
<div class="settings-title">
|
<div class="settings-title">
|
||||||
Canvas size
|
Resize
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-item resize-canvas">
|
<div class="settings-item resize-canvas">
|
||||||
<form action="" method="POST" name="resize-canvas-form">
|
<form action="" method="POST" name="resize-canvas-form">
|
||||||
@ -42,7 +42,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="submit" class="button button-primary resize-button" value="Resize" />
|
<input type="submit" class="button button-primary resize-button" value="Resize" />
|
||||||
<input type="button" class="button resize-cancel-button" value="Cancel" />
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
Reference in New Issue
Block a user