aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-tree-model.h
Commit message (Collapse)AuthorAgeFilesLines
* Updated version number.Christopher James Lahey2000-11-141-0/+4
| | | | | | | | | | | | | 2000-11-13 Christopher James Lahey <clahey@helixcode.com> * configure.in: Updated version number. * gal/e-table/e-tree-model.c, gal/e-table/e-tree-model.h: Added freeze and thaw functions. * gal/menus/gal-define-views-dialog.c: Fixed some warnings. svn path=/trunk/; revision=6563
* make ETreeModel opaque, and switch from using g_new0 and g_free forChris Toshok2000-10-251-9/+5
| | | | | | | | | | | | | | | 2000-10-24 Chris Toshok <toshok@helixcode.com> * e-tree-model.c: make ETreeModel opaque, and switch from using g_new0 and g_free for ETreePath's to using g_mem_chunk routines. (e_tree_model_node_remove): free the path's save_id. * (e_tree_model_set_expanded_default): add method to add default expanded status for parent nodes. (etree_set_expanded_recurse): make this more efficient. e-tree-model.h: make ETreeModel opaque. add prototype for e_tree_model_set_expanded_default. svn path=/trunk/; revision=6156
* get rid of ENode type, as everything in it is now in ETreePath, and addChris Toshok2000-10-161-14/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-15 Chris Toshok <toshok@helixcode.com> * e-tree-model.c: get rid of ENode type, as everything in it is now in ETreePath, and add parent/sibling/child pointers to ETreePath. everywhere where GNode/ENode were used, we just use ETreePath now. (e_tree_path_depth): new function. (e_tree_path_insert): new function. (e_tree_path_unlink): new function. (e_tree_model_node_traverse): new function. (etree_get_first_child): new virtual function impl. (etree_get_last_child): same. (e_tree_model_class_init): fill in function pointers for get_first_child/get_last_child. (e_tree_model_node_get_first_child): new function. (e_tree_model_node_get_last_child): new function. (e_tree_model_node_depth): g_node_depth -> e_tree_path_depth. (e_tree_model_node_insert): modify to use ETreePath and new e_tree_path functions. Prepends and appends are now both constant time. (child_remove): modify for e_tree_model_node_traverse. (e_tree_model_node_remove): same, and use e_tree_path functions. (e_tree_model_node_insert_before): add a loop here to figure out the position, since it's the only place we care about the child position. (e_tree_model_node_sort): rework to accomodate new e_tree_path functions, and put the e_tree_model_node_set_expanded calls in a separate loop after all the children have been added. * e-tree-model.h: add prototypes and virtual functions for more tree traversal operations (get_first_child, get_last_child), as well as a new function to traverse depth first the descendents of a node (e_tree_model_node_traverse), much like g_node_traverse (G_IN_ORDER). Also, ETreePath is an opaque type now, and is not a GNode. svn path=/trunk/; revision=5932
* Changed to take into account the sort group, if the table has one.xNot Zed2000-10-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-04 Not Zed <NotZed@HelixCode.com> * e-table-sorted-variable.c (etsv_add): Changed to take into account the sort group, if the table has one.x (etsv_insert_idle): Clear the insert count if we hit an idle loop. (etsv_sort_idle): Reset the insert count if we perform a sort. (etsv_add): If we are adding a lot (>ETSV_INSERT_MAX) items, without hitting an idle loop, assume we're better off performing a sort instead. Use another idle handler to reset the count. 2000-10-03 Not Zed <NotZed@HelixCode.com> * e-table-sorted-variable.c (etsv_sort_by_group): Sort based on the sort_group stuff. * e-tree-model.c (e_tree_init): Setup the group sort info string. (etree_destroy): And free it. (build_sort_group): Build a string for this node. 2000-09-29 Not Zed <NotZed@HelixCode.com> * e-cell-tree.c (e_cell_tree_get_node): Changed to take the source model, not the tree model. The source model may be a subset, and it needs to remap the rows for us. (ect_draw): (ect_event): (ect_max_width): (ect_print): Changed callers. * e-table-sorted-variable.c (etsv_sort_subset): (etsv_sort_build_subset): (etsv_sort_free_subset): Functions to perfom grouping of sorts for sorts that have row_sort_group returning useful info. (etsv_sort): Use the complex sort routines if we need to. * e-table-model.c (e_table_model_row_sort_group): Return a sort-id for a given row. (e_table_model_has_sort_group): Return if the sort-id provides any useful information. svn path=/trunk/; revision=5705
* change/add prototypes and a typedef for ETreePathCompareFunc.Chris Toshok2000-10-031-5/+9
| | | | | | | | | | | | | | | | | | | | | | 2000-10-02 Chris Toshok <toshok@helixcode.com> * e-tree-model.h: change/add prototypes and a typedef for ETreePathCompareFunc. * e-tree-model.c (e_tree_model_node_set_compare_function): new function, used to set the comparison function for sorted nodes. Eventually sorting entail just calling this function, with the tree maintaining the sort. (e_tree_model_node_sort): use a helper function (e_tree_model_node_compare) to allow the e-tree user's comparison function to take mode reasonable paramaters. also, fix it so the previous expanded state is kept with the node. i can't believe i wrote it the way it originally was. also, don't take the comparison function here. it's set in e_tree_model_node_set_compare_function. svn path=/trunk/; revision=5674
* add save_state stuff to ETreeModel, and prototypes for the public methods.Chris Toshok2000-09-261-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-25 Chris Toshok <toshok@helixcode.com> * gal/e-table/e-tree-model.h: add save_state stuff to ETreeModel, and prototypes for the public methods. * gal/e-table/e-tree-model.c: add save_id to the ENode. (expanded_remove_func): new function, iterator to delete the save id's. (etree_destroy): iterate over expanded_state. (etree_set_expanded): if the node has a save id, make sure to update both the collapsed and expanded counts. (e_tree_model_node_insert_id): convenience function that inserts a node and sets its id. (e_tree_model_node_sort): remove extra spew. (save_expanded_state_func): new function, iterator for saving expanded state. (e_tree_model_save_expanded_state): new function. (get_string_value): helper function for loading. (e_tree_model_load_expanded_state): new function. (e_tree_model_node_set_save_id): sets the save id for a node, adding it to the hashtable if it's not already there. if the id was there previously, set the expanded flag of the node accordingly. svn path=/trunk/; revision=5573
* Moved files, fixed header files and paths - FedericoFederico Mena Quintero2000-09-201-2/+2
| | | | svn path=/trunk/; revision=5513
* add signals/prototypes for e_tree_model_node_collapsed andChris Toshok2000-09-011-3/+7
| | | | | | | | | | | | | | | | | 2000-09-01 Chris Toshok <toshok@helixcode.com> * e-tree-model.h: add signals/prototypes for e_tree_model_node_collapsed and e_tree_model_node_expanded. * e-tree-model.c (etree_set_expanded): emit node_expanded/node_collapsed signals, with node_expanded happening before the expansion so it can much with the children, and collapsed being emitted after. (e_tree_model_row_of_node): remove stupid check, and g_warning. (e_tree_model_node_collapsed): new function. (e_tree_model_node_expanded): new function. svn path=/trunk/; revision=5162
* we can remove nodes with children now.Chris Toshok2000-08-221-0/+3
| | | | | | | | | | | | | | | | | | | | | | 2000-08-21 Chris Toshok <toshok@helixcode.com> * e-tree-example-1.c (remove_node): we can remove nodes with children now. * e-tree-model.h: add prototype for e_tree_model_node_sort. * e-tree-model.c (etree_set_expanded): if the node is invisible, just set its expanded flag and return. (e_tree_model_root_node_set_visible): call set_expanded before we remove it from the row array or else the aforementioned change will result in nothing happening. (e_tree_model_node_insert): use a position of -1 as "append". (e_tree_model_node_insert): if the model was marked with root_visible == FALSE, make sure to set it's expanded flag to TRUE when the root node is inserted. (e_tree_model_node_sort): new function. svn path=/trunk/; revision=4912
* add icon_at virtual function - it was stupid to make the insert call takeChris Toshok2000-06-231-4/+4
| | | | | | | | | | | | | | | | | | | | 2000-06-23 Chris Toshok <toshok@helixcode.com> * e-tree-model.h, e-tree-model.c: add icon_at virtual function - it was stupid to make the insert call take 2 pixbufs. the model should give this information. * e-cell-tree.c: get rid of the opened/closed pixbuf stuff. call e_tree_model_icon_of_node. * e-tree-example-1.c: add my_icon_at. * e-tree-simple.c (simple_icon_at): new function (e_tree_simple_new): add icon_at parameter. * e-tree-simple.h: add SimpleIconAtFn. svn path=/trunk/; revision=3707
* use the expanded/unexpanded pixbufs as node pixbufs for the first level ofChris Toshok2000-06-231-2/+5
| | | | | | | | | | | | | | | | | | | | 2000-06-23 Chris Toshok <toshok@helixcode.com> * e-tree-example-1.c (create_tree): use the expanded/unexpanded pixbufs as node pixbufs for the first level of children, to test the drawing. * e-tree-model.c (e_tree_model_node_get_closed_pixbuf): new function. (e_tree_model_node_get_opened_pixbuf): same. (e_tree_model_node_insert): add opened/closed pixbuf argument. (e_tree_model_node_insert_before): same. * e-tree-model.h: add prototypes for opened/closed pixbuf accessors, and add them to the e_tree_model_node_insert_* calls. * e-cell-tree.c (ect_draw): add opened/closed pixbuf drawing per node. svn path=/trunk/; revision=3706
* change things so we focus the cell and select the row, and also dispatchChris Toshok2000-06-111-27/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-06-10 Chris Toshok <toshok@helixcode.com> * e-table-item.c (eti_event): change things so we focus the cell and select the row, and also dispatch the event to that row/cell. This fixes the problem with the tree where you had to click twice to activate the tree controls. * Makefile.am (libetable_a_SOURCES): remove e-tree-gnode.* and add e-tree-simple.* (icons): add tree-expanded.xpm and tree-unexpanded.xpm * e-cell-tree.c (ect_enter_edit): defer to subcell's view. (ect_leave_edit): defer to subcell's view. (visible_depth_of_node): visual depth, taking into account that the root node of the model might not be displayed. (offset_of_node): return the offset used to shift the subcell over. (ect_draw): don't draw vertical lines if we're the leftmode node (a visual root node). also, don't shift x2 by the subcell offset, so we get ellipses like we're supposed to. (ect_event): remove GDK_BUTTON_RELEASE from the list of events that we care about. * e-tree-example-1.c: lots of changes, a more dynamic UI so we can test tree model api stuff. * e-tree-gnode.c, e-tree-gnode.c: removed files, since their guts have been rolled into e-tree-model.c * e-tree-model.c, e-tree-model.h: substantially changed. too much to really describe here. this should really be considered the first revision of these files :) * e-tree-simple.c, e-tree-simple.h: analogous to e-table-simple, a subclass that allows the use of function pointers. svn path=/trunk/; revision=3519
* New files. A tree model using a GNode structure to store it's info.Chris Toshok2000-06-091-0/+72
2000-06-08 Chris Toshok <toshok@helixcode.com> * e-tree-gnode.c, e-tree-gnode.h: New files. A tree model using a GNode structure to store it's info. * e-tree-model.c, e-tree-model.h: New files. A proxy model sitting between a table model and the real tree model (of which ETreeGNode is an example). * e-cell-tree.c, e-cell-tree.h: New files. A cell renderer capable of wrapping up a subcell and drawing the tree controls for expanding/collapsing trees. * tree-expanded.xpm, tree-unexpanded.xpm: New files. the standard + and - icons. * e-tree-example-1.c: New file, giving a (pretty poor :) example of using ETreeGNode. * Makefile.am: at the tree stuff to the build, and build tree-example-1. * .cvsignore: ignore tree-example-1. svn path=/trunk/; revision=3483