00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00025 #ifndef __MLVIEW_TREE_EDITOR_H__
00026 #define __MLVIEW_TREE_EDITOR_H__
00027
00028 #include <gnome.h>
00029 #include <libxml/tree.h>
00030 #include "mlview-node-type-picker.h"
00031 #include "mlview-settings-builder.h"
00032 #include "mlview-app-context.h"
00033 #include "mlview-xml-document.h"
00034
00035 #ifdef __cplusplus
00036 extern "C"{
00037 #endif
00038
00039
00040 #define MLVIEW_TYPE_TREE_EDITOR (mlview_tree_editor_get_type())
00041 #define MLVIEW_TREE_EDITOR(object) (GTK_CHECK_CAST((object),MLVIEW_TYPE_TREE_EDITOR,MlViewTreeEditor))
00042 #define MLVIEW_TREE_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass),MLVIEW_TYPE_TREE_EDITOR,MlViewTreeEditorClass))
00043 #define MLVIEW_IS_TREE_EDITOR(object) (GTK_CHECK_TYPE((object),MLVIEW_TYPE_TREE_EDITOR))
00044 #define MLVIEW_IS_TREE_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_TYPE((klass),MLVIEW_TYPE_TREE_EDITOR))
00045
00046
00047 typedef struct _MlViewTreeEditor MlViewTreeEditor ;
00048 typedef struct _MlViewTreeEditorClass MlViewTreeEditorClass ;
00049 typedef struct _MlViewTreeEditorPrivate MlViewTreeEditorPrivate ;
00050
00051
00052
00053
00054
00055
00056 struct _MlViewTreeEditor
00057 {
00058 GtkVBox vbox ;
00059 MlViewTreeEditorPrivate *private ;
00060 };
00061
00062
00063
00064
00065
00071 enum WhereInTheNodeBitmap {
00072 NODE_NAME = 1,
00073 NODE_ATTRIBUTE_NAME = 1 << 1,
00074 NODE_ATTRIBUTE_VALUE = 1 << 2,
00075 NODE_CONTENT = 1 << 3 ,
00076 NODE_ALL_PARTS = NODE_NAME | NODE_ATTRIBUTE_NAME | NODE_ATTRIBUTE_VALUE | NODE_CONTENT
00077 };
00078
00079
00080
00081
00082
00083 guint mlview_tree_editor_get_type (void) ;
00084
00085 GtkWidget *
00086 mlview_tree_editor_new (MlViewAppContext * a_app_context) ;
00087
00088 void
00089 mlview_tree_editor_destroy (GtkObject *a_object);
00090
00091 guint
00092 mlview_tree_editor_edit_xml_doc (MlViewTreeEditor *a_editor,
00093 MlViewXMLDocument *a_xmldoc,
00094 gchar * a_doc_name);
00095
00096 void
00097 mlview_tree_editor_update_visual_node (MlViewTreeEditor *a_tree_editor,
00098 GtkCTreeNode * a_visual_node) ;
00099
00100 void
00101 mlview_tree_editor_update_visual_xml_node (MlViewTreeEditor *a_tree_editor,
00102 xmlNode * a_node) ;
00103
00104 gint
00105 mlview_tree_editor_add_child_node (MlViewTreeEditor *a_tree_editor,
00106 GtkCTreeNode *a_parent_node,
00107 xmlNodePtr a_xml_node) ;
00108
00109 xmlNode *
00110 mlview_tree_editor_insert_sibling_node (MlViewTreeEditor *a_tree_editor,
00111 GtkCTreeNode *a_sibling_node,
00112 xmlNodePtr a_xml_node,
00113 gboolean previous) ;
00114
00115 void
00116 mlview_tree_editor_cut_node(MlViewTreeEditor *a_tree_editor,
00117 GtkCTreeNode *a_visual_node) ;
00118
00119 void
00120 mlview_tree_editor_create_new_xml_doc (MlViewTreeEditor *a_tree_editor,
00121 MlViewXMLDocument * a_xml_doc) ;
00122
00123 GtkCTreeNode *
00124 mlview_tree_editor_set_root_element (MlViewTreeEditor *a_tree_editor,
00125 xmlNodePtr) ;
00126
00127 GtkCTree *
00128 mlview_tree_editor_get_visual_tree (MlViewTreeEditor * a_tree_editor) ;
00129
00130 GtkCTreeNode *
00131 mlview_tree_editor_get_current_selected_node (MlViewTreeEditor * a_tree_editor) ;
00132
00133 void
00134 mlview_tree_editor_paste_node_as_child (MlViewTreeEditor *a_tree_editor,
00135 GtkCTreeNode * a_visual_parent_node) ;
00136
00137 void
00138 mlview_tree_editor_paste_node_as_sibling (MlViewTreeEditor *a_tree_editor,
00139 GtkCTreeNode * a_visual_sibling_node,
00140 gboolean a_previous) ;
00141
00142 xmlDocPtr
00143 mlview_tree_editor_get_xml_document (MlViewTreeEditor *a_tree_editor) ;
00144
00145 void
00146 mlview_tree_editor_set_node_type_picker (MlViewTreeEditor* a_tree_editor,
00147 MlViewNodeTypePicker * a_node_type_picker) ;
00148
00149 MlViewNodeTypePicker *
00150 mlview_tree_editor_get_node_type_picker (MlViewTreeEditor *a_tree_editor) ;
00151
00152 void
00153 mlview_tree_editor_add_child_node_interactive (MlViewTreeEditor *a_tree_editor) ;
00154
00155 void
00156 mlview_tree_editor_insert_sibling_node_interactive (MlViewTreeEditor *a_tree_editor) ;
00157
00158 void
00159 mlview_tree_editor_insert_next_sibling_node_interactive (MlViewTreeEditor *a_tree_editor) ;
00160
00161 void
00162 mlview_tree_editor_insert_prev_sibling_node_interactive (MlViewTreeEditor *a_tree_editor) ;
00163
00164 void
00165 mlview_tree_editor_copy_node (MlViewTreeEditor *a_tree_editor,
00166 GtkCTreeNode * a_visual_node,
00167 gboolean a_recursive) ;
00168
00169 GtkCTreeNode *
00170 mlview_tree_editor_find_xml_node_that_contains_str (MlViewTreeEditor * a_tree_editor, const gchar * a_str,
00171 const enum WhereInTheNodeBitmap a_where_in_node_bitmap,
00172 const gboolean a_start_after) ;
00173
00174 GtkCTreeNode *
00175 mlview_tree_editor_find_xml_node_that_contains_str_interactive (MlViewTreeEditor *a_tree_editor) ;
00176
00177 void
00178 mlview_tree_editor_set_xml_document_path (MlViewTreeEditor * a_tree_editor, gchar * a_file_path) ;
00179
00180 void
00181 mlview_tree_editor_set_application_context (MlViewTreeEditor * a_tree_editor,
00182 MlViewAppContext *a_app_context) ;
00183 MlViewAppContext *
00184 mlview_tree_editor_get_application_context (MlViewTreeEditor *a_tree_editor) ;
00185
00186 void
00187 mlview_tree_editor_expand_tree_to_depth (MlViewTreeEditor * a_editor,
00188 gint a_depth) ;
00189 void
00190 mlview_tree_editor_update_contextual_menu (MlViewTreeEditor * a_tree_editor,
00191 GtkMenu ** a_menu_ptr) ;
00192
00193 void
00194 mlview_tree_editor_update_child_node_added (MlViewTreeEditor * a_tree_editor,
00195 xmlNode *a_parent_node, xmlNode *a_added_node) ;
00196
00197 void
00198 mlview_tree_editor_update_node_cut (MlViewTreeEditor *a_tree_editor, xmlNode *a_parent_node,
00199 xmlNode *a_cut_node) ;
00200
00201 void
00202 mlview_tree_editor_update_node_pasted (MlViewTreeEditor *a_tree_editor,
00203 xmlNode *a_parent_node,
00204 xmlNode *a_pasted_node) ;
00205
00206 void
00207 mlview_tree_editor_update_sibling_node_inserted (MlViewTreeEditor * a_tree_editor,
00208 xmlNode * a_sibling_node,
00209 xmlNode * a_inserted_node,
00210 gboolean a_previous) ;
00211
00212
00213
00214
00215 struct _MlViewTreeEditorClass{
00216 GtkVBoxClass parent_class ;
00217
00218
00219
00220
00221
00222 void (*tree_changed) (MlViewTreeEditor *a_editor, gpointer a_data) ;
00223
00224
00225 void (*mark_set_to_node) (MlViewTreeEditor *a_editor,
00226 GtkCTree * a_visual_tree,
00227 GtkCTreeNode *a_visual_node,
00228 gpointer a_user_data) ;
00229
00230 void (*mark_removed_from_node) (MlViewTreeEditor *a_editor,
00231 GtkCTree * a_visual_tree,
00232 GtkCTreeNode *a_node,
00233 gpointer a_user_data) ;
00234
00235 void (*node_cut) (MlViewTreeEditor *a_editor,
00236 GtkCTreeNode *a_visual_node,
00237 gpointer a_user_data) ;
00238
00239 void (*node_pasted) (MlViewTreeEditor *a_editor,
00240 GtkCTreeNode *a_visual_node,
00241 gpointer a_user_data) ;
00242
00243 void (*node_added) (MlViewTreeEditor *a_editor,
00244 GtkCTreeNode *a_visual_node,
00245 gpointer a_user_data) ;
00246
00247 void (*node_selected) (MlViewTreeEditor *a_editor,
00248 GtkCTreeNode *a_visual_node,
00249 gpointer a_user_data) ;
00250
00251 void (*node_unselected) (MlViewTreeEditor *a_editor,
00252 GtkCTreeNode *a_visual_node,
00253 gpointer a_user_data) ;
00254 };
00255
00256
00257 #ifdef __cplusplus
00258 }
00259 #endif
00260
00261 #endif