talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

undo.h (2128B)


      1 /*
      2  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
      3  * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License
     16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
     17  * 
     18  */
     19 
     20 /* code ported from gedit */
     21 
     22 #ifndef __UNDO_H__
     23 #define __UNDO_H__
     24 
     25 #include <glib.h>
     26 #include <gtk/gtk.h>
     27 
     28 typedef enum 
     29 {
     30 	UNDO_ACTION_INSERT,
     31 	UNDO_ACTION_DELETE,
     32 	UNDO_ACTION_REPLACE_INSERT,
     33 	UNDO_ACTION_REPLACE_DELETE
     34 } UndoAction;
     35 
     36 typedef enum
     37 {
     38 	UNDO_STATE_TRUE,
     39 	UNDO_STATE_FALSE,
     40 	UNDO_STATE_UNCHANGED,
     41 	UNDO_STATE_REFRESH
     42 } UndoState;
     43 
     44 typedef struct _UndoMain UndoMain;
     45 typedef struct _UndoWrap UndoWrap;
     46 
     47 typedef void (*UndoChangeStateFunc)	(UndoMain	*undostruct,
     48 					 gint		 undo_state,
     49 					 gint		 redo_state,
     50 					 gpointer	 data);
     51 
     52 struct _UndoMain
     53 {
     54 	GtkTextView *textview;
     55 
     56 	GList *undo;
     57 	GList *redo;
     58 
     59 	UndoChangeStateFunc change_state_func;
     60 	gpointer change_state_data;
     61 
     62 	gboolean undo_state : 1;
     63 	gboolean redo_state : 1;
     64 
     65 	gint paste;
     66 
     67 	UndoWrap *wrap_info;
     68 };
     69 
     70 UndoMain *undo_init		(GtkWidget		*text);
     71 void undo_destroy		(UndoMain		*undostruct);
     72 
     73 void undo_set_change_state_func	(UndoMain		*undostruct,
     74 				 UndoChangeStateFunc	 func,
     75 				 gpointer		 data);
     76 
     77 void undo_undo			(UndoMain		*undostruct);
     78 void undo_redo			(UndoMain		*undostruct);
     79 void undo_block			(UndoMain 		*undostruct);
     80 void undo_unblock		(UndoMain 		*undostruct);
     81 void undo_wrapping		(UndoMain		*undostruct,
     82 				 gboolean 		 wrap);
     83 void undo_paste_clipboard	(GtkTextView 		*textview,
     84 				 UndoMain 		*undostruct);
     85 #endif /* __UNDO_H__ */