Commit Graph

13 Commits

Author SHA1 Message Date
f300ac0095 Updated version number.
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
2000-11-13 19:27:24 +00:00
606c6276a8 make ETreeModel opaque, and switch from using g_new0 and g_free for
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
2000-10-25 00:09:18 +00:00
ec30090929 get rid of ENode type, as everything in it is now in ETreePath, and add
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
2000-10-15 23:17:56 +00:00
58eba683f8 Changed to take into account the sort group, if the table has one.x
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
2000-10-04 15:51:35 +00:00
4dd58b9823 change/add prototypes and a typedef for ETreePathCompareFunc.
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
2000-10-02 22:10:13 +00:00
1084ed7340 add save_state stuff to ETreeModel, and prototypes for the public methods.
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
2000-09-25 19:02:44 +00:00
a3de274f7c Moved files, fixed header files and paths - Federico
svn path=/trunk/; revision=5513
2000-09-19 22:57:58 +00:00
0a380243b1 add signals/prototypes for e_tree_model_node_collapsed and
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
2000-09-01 08:57:43 +00:00
95ba651873 we can remove nodes with children now.
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
2000-08-22 00:42:14 +00:00
422046cc58 add icon_at virtual function - it was stupid to make the insert call take
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
2000-06-23 07:47:37 +00:00
29a313c41e use the expanded/unexpanded pixbufs as node pixbufs for the first level of
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
2000-06-23 07:19:11 +00:00
aac3f2c8b6 change things so we focus the cell and select the row, and also dispatch
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
2000-06-11 04:20:56 +00:00
e581631a9c New files. A tree model using a GNode structure to store it's info.
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
2000-06-08 23:16:22 +00:00