Commit d392fb7f authored by Colin Eles's avatar Colin Eles
Browse files

fixed some bugs in undo/redo

git-svn-id: https://groke.mcmaster.ca/svn/grad/colin/trunk/TableTool@6214 57e6efec-57d4-0310-aeb1-a6c144bb1a8b
parent f096f3f5
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -6,17 +6,33 @@ recalled_data = object.undo_man.redo;
 else
     switch recalled_data.action
         case 1
             try
             set(recalled_data.cell,'String',recalled_data.text);
             catch exception
             end
         case 2
             recalled_data.grid.pb_new_call(recalled_data.grid.new_cell_pb,1);
         case 3
             recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1);
         case 4
             recalled_data.cell.pb_call(recalled_data.cell.grid_pb,1);
         case 5
             recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1);
             
             %recalled_data.cell.pb_call(recalled_data.cell.grid_pb,1);
             recalled_data.cell.subgrid = recalled_data.grid;
             recalled_data.cell.subgrid = recalled_data.grid;
            recalled_data.cell.pb_flag = 0;
             if(~isempty(recalled_data.cell.parent_grid.rGrid))
                recalled_data.cell.parent_grid.rGrid.delete_g2s(recalled_data.cell);
            end
            if(~isempty(recalled_data.grid.rGrid))
                recalled_data.grid.rGrid.refresh;
            end
            object.reset_wh();
            %gui.draw_grid2(gui.Grid2);
            object.draw_allgrids(1);
             
             
         case 5
             recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1);
     end
 end
 object.update_undoredo;
+4 −0
Original line number Diff line number Diff line
@@ -8,7 +8,10 @@ object.undo_man
 else
     switch recalled_data.action
         case 1 % changed cell contents
             try
             set(recalled_data.cell,'String',recalled_data.text);
             catch exception
             end
         case 2 % created new cell in grid
             recalled_data.grid.pb_delete_call(recalled_data.grid.delete_cell_pb,1);
         case 3 % deleted cell in grid (not the last)
@@ -21,6 +24,7 @@ object.undo_man
             object.reset_wh();
            %gui.draw_grid2(gui.Grid2);
            object.draw_allgrids(1);
            object.undo_man.search_replace(1,recalled_data.subgrid,recalled_data.cell.cond);
            set(recalled_data.grid.delete_cell_pb,'Enable','on');
        
         case 4 % new grid
+3 −3
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ if size(object.cells,2) == 1
            undo_data.action = 5;
            undo_data.grid = object;
            undo_data.cell = object.parent_cell;
            undo_data.text = [];
            undo_data.text = deleted_cell.cond;
            undo_data.subgrid = deleted_cell;

            gui.undo_man.new_state(undo_data);
@@ -40,8 +40,8 @@ else
        undo_data.action = 3;
        undo_data.grid = object;
        undo_data.cell = deleted_cell;
        undo_data.text = [];
        undo_data.subgrid = [];
        undo_data.text = deleted_cell.cond_text;
        undo_data.subgrid = deleted_cell.cond;
        
        gui.undo_man.new_state(undo_data);
        
+17 −0
Original line number Diff line number Diff line
function [ ] = search_replace( object, action, prev, new )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
switch action
    case 1
        for i=1:size(object.queue,2)
            if (object.queue(i).action == 1)
                if(object.queue(i).cell == prev)
                    object.queue(i).cell = new;
                end
                
            end
        end
end

end