1/* 2* Copyright (c) 2018 (https://github.com/phase1geo/Minder) 3* 4* This program is free software; you can redistribute it and/or 5* modify it under the terms of the GNU General Public 6* License as published by the Free Software Foundation; either 7* version 2 of the License, or (at your option) any later version. 8* 9* This program is distributed in the hope that it will be useful, 10* but WITHOUT ANY WARRANTY; without even the implied warranty of 11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12* General Public License for more details. 13* 14* You should have received a copy of the GNU General Public 15* License along with this program; if not, write to the 16* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17* Boston, MA 02110-1301 USA 18* 19* Authored by: Trevor Williams <phase1geo@gmail.com> 20*/ 21 22using Gtk; 23 24public class UndoConnectedNode : UndoItem { 25 26 private Node _node; 27 private Connection _conn; 28 private int _index; 29 30 public UndoConnectedNode( Node node, int index, Connection conn ) { 31 base( _( "connected node" ) ); 32 _node = node; 33 _conn = conn; 34 _index = index; 35 } 36 37 public override void undo( DrawArea da ) { 38 da.remove_root( _index ); 39 da.get_connections().remove_connection( _conn, false ); 40 if( da.get_current_node() == _node ) { 41 da.set_current_node( null ); 42 } 43 da.queue_draw(); 44 da.auto_save(); 45 } 46 47 public override void redo( DrawArea da ) { 48 da.get_nodes().insert_val( _index, _node ); 49 da.get_connections().add_connection( _conn ); 50 da.set_current_node( _node ); 51 da.queue_draw(); 52 da.auto_save(); 53 } 54 55} 56