Fix Issue 19: Undo/Redo in context panel and react as buttons
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@201 eee81c28-f429-11dd-99c0-75d572ba1dddmaster
parent
5c67d896ac
commit
ecb0f0e74e
|
@ -38,8 +38,8 @@
|
||||||
<!-- History buttons -->
|
<!-- History buttons -->
|
||||||
<div>
|
<div>
|
||||||
<img class="tool_sep" src="images/sep.png" alt="|"/>
|
<img class="tool_sep" src="images/sep.png" alt="|"/>
|
||||||
<img class="tool_button" id="tool_undo" src="images/undo.png" title="Undo [Z]" alt="Undo" />
|
<img class="tool_button tool_button_disabled" id="tool_undo" src="images/undo.png" title="Undo [Z]" alt="Undo" />
|
||||||
<img class="tool_button" id="tool_redo" src="images/redo.png" title="Redo [Shift+Z/Y]" alt="Redo"/>
|
<img class="tool_button tool_button_disabled" id="tool_redo" src="images/redo.png" title="Redo [Shift+Z/Y]" alt="Redo"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Buttons when something is selected -->
|
<!-- Buttons when something is selected -->
|
||||||
|
|
|
@ -37,15 +37,14 @@ function svg_edit_setup() {
|
||||||
|
|
||||||
// called when any element has changed
|
// called when any element has changed
|
||||||
var elementChanged = function(window,elem) {
|
var elementChanged = function(window,elem) {
|
||||||
// if the element that changed was the selected element, we
|
// we update the contextual panel with potentially new
|
||||||
// should update the contextual panel with potentially new
|
|
||||||
// positional/sizing information (we DON'T want to update the
|
// positional/sizing information (we DON'T want to update the
|
||||||
// toolbar here as that creates an infinite loop)
|
// toolbar here as that creates an infinite loop)
|
||||||
if (elem == selectedElement) {
|
// also this updates the history buttons
|
||||||
// we tell it to skip focusing the text control if the
|
|
||||||
// text element was previously in focus
|
// we tell it to skip focusing the text control if the
|
||||||
updateContextPanel(false);
|
// text element was previously in focus
|
||||||
}
|
updateContextPanel(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// updates the toolbar (colors, opacity, etc) based on the selected element
|
// updates the toolbar (colors, opacity, etc) based on the selected element
|
||||||
|
@ -131,6 +130,20 @@ function svg_edit_setup() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update history buttons
|
||||||
|
if (svgCanvas.getUndoStackSize() > 0) {
|
||||||
|
$('#tool_undo').removeClass( 'tool_button_disabled');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#tool_undo').addClass( 'tool_button_disabled');
|
||||||
|
}
|
||||||
|
if (svgCanvas.getRedoStackSize() > 0) {
|
||||||
|
$('#tool_redo').removeClass( 'tool_button_disabled');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#tool_redo').addClass( 'tool_button_disabled');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#text').focus( function(){ textBeingEntered = true; } );
|
$('#text').focus( function(){ textBeingEntered = true; } );
|
||||||
|
@ -364,6 +377,12 @@ function svg_edit_setup() {
|
||||||
$('#tool_delete').mousedown(function(){$('#tool_delete').addClass('tool_button_current');});
|
$('#tool_delete').mousedown(function(){$('#tool_delete').addClass('tool_button_current');});
|
||||||
$('#tool_delete').mouseup(function(){$('#tool_delete').removeClass('tool_button_current');});
|
$('#tool_delete').mouseup(function(){$('#tool_delete').removeClass('tool_button_current');});
|
||||||
$('#tool_delete').mouseout(function(){$('#tool_delete').removeClass('tool_button_current');});
|
$('#tool_delete').mouseout(function(){$('#tool_delete').removeClass('tool_button_current');});
|
||||||
|
$('#tool_undo').mousedown(function(){ if (!$('#tool_undo').hasClass('tool_button_disabled')) $('#tool_undo').addClass('tool_button_current');});
|
||||||
|
$('#tool_undo').mouseup(function(){$('#tool_undo').removeClass('tool_button_current');});
|
||||||
|
$('#tool_undo').mouseout(function(){$('#tool_undo').removeClass('tool_button_current');});
|
||||||
|
$('#tool_redo').mousedown(function(){ if (!$('#tool_redo').hasClass('tool_button_disabled')) $('#tool_redo').addClass('tool_button_current');});
|
||||||
|
$('#tool_redo').mouseup(function(){$('#tool_redo').removeClass('tool_button_current');});
|
||||||
|
$('#tool_redo').mouseout(function(){$('#tool_redo').removeClass('tool_button_current');});
|
||||||
$('#tool_move_top').mousedown(function(){$('#tool_move_top').addClass('tool_button_current');});
|
$('#tool_move_top').mousedown(function(){$('#tool_move_top').addClass('tool_button_current');});
|
||||||
$('#tool_move_top').mouseup(function(){$('#tool_move_top').removeClass('tool_button_current');});
|
$('#tool_move_top').mouseup(function(){$('#tool_move_top').removeClass('tool_button_current');});
|
||||||
$('#tool_move_top').mouseout(function(){$('#tool_move_top').removeClass('tool_button_current');});
|
$('#tool_move_top').mouseout(function(){$('#tool_move_top').removeClass('tool_button_current');});
|
||||||
|
|
|
@ -1119,13 +1119,15 @@ function SvgCanvas(c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getUndoStackSize = function() { return undoStack.length; }
|
this.getUndoStackSize = function() { return undoStackPointer; }
|
||||||
this.getRedoStackSize = function() { return undoStack.length - undoStackPointer; }
|
this.getRedoStackSize = function() { return undoStack.length - undoStackPointer; }
|
||||||
|
|
||||||
this.undo = function() {
|
this.undo = function() {
|
||||||
if (undoStackPointer > 0) {
|
if (undoStackPointer > 0) {
|
||||||
this.selectNone();
|
this.selectNone();
|
||||||
undoStack[--undoStackPointer].unapply();
|
var cmd = undoStack[--undoStackPointer];
|
||||||
|
cmd.unapply();
|
||||||
|
call("changed", cmd.elem);
|
||||||
}
|
}
|
||||||
// console.log("after undo, stackPointer=" + undoStackPointer);
|
// console.log("after undo, stackPointer=" + undoStackPointer);
|
||||||
// console.log(undoStack);
|
// console.log(undoStack);
|
||||||
|
@ -1133,7 +1135,9 @@ function SvgCanvas(c)
|
||||||
this.redo = function() {
|
this.redo = function() {
|
||||||
if (undoStackPointer < undoStack.length && undoStack.length > 0) {
|
if (undoStackPointer < undoStack.length && undoStack.length > 0) {
|
||||||
this.selectNone();
|
this.selectNone();
|
||||||
undoStack[undoStackPointer++].apply();
|
var cmd = undoStack[undoStackPointer++];
|
||||||
|
cmd.apply();
|
||||||
|
call("changed", cmd.elem);
|
||||||
}
|
}
|
||||||
// console.log("after redo, stackPointer=" + undoStackPointer);
|
// console.log("after redo, stackPointer=" + undoStackPointer);
|
||||||
// console.log(undoStack);
|
// console.log(undoStack);
|
||||||
|
|
Loading…
Reference in New Issue