2000-11-25 Christopher James Lahey <clahey@helixcode.com>
* e-table-col.c: Removed e_table_col_get_arrow and
e_table_col_set_arrow.
svn path=/trunk/; revision=6669
2000-11-06 Christopher James Lahey <clahey@helixcode.com>
* e-table-header-item.c: Changed this to match the new EPopupMenu
structre.
svn path=/trunk/; revision=6467
2000-11-03 Christopher James Lahey <clahey@helixcode.com>
* e-table-selection-model.c: Turned on proper handling of insert
and delete.
svn path=/trunk/; revision=6375
2000-11-03 Not Zed <NotZed@HelixCode.com>
* e-tree-model.c (e_tree_model_node_insert): Since we insert at
the parent->child position, we need to account for expanded nodes
above this node to properly calculate the absolute row position of
the node.
(e_tree_model_node_insert): If we're inserting at the end of this
node, then we just use the position directly.
(e_tree_model_node_remove): Completely rewritten. Now we delete
all nodes at once, which should be >> faster, unfortunately still
have to signal each removal, which is >> SLOW :( Its still about
2-3x faster than it was (for 25K nodes).
(child_free): Free all data/subnodes of a given path, no
unlinking.
(e_tree_model_node_remove): If we are removing a lot of nodes
[>1000 or >1/4 total nodes], then use model_changed, rather then
removing each node. Yay. Now its about 500x faster than it was,
for 25K nodes.
(etree_pre_change): Signal handler, so we can find out when we are
in a pre-change state.
(etree_changed): Likewise to find when we have finished.
(e_tree_model_construct): Link to the model*changed signals so we
know when we are in pre/changed state.
(e_tree_model_node_insert): Only perform a row_inserted if not in
pre_change state. Another significant speed improvement (200-500%)
on big trees.
(e_tree_model_node_remove): Do not emit row_deleted (or
model_changed), if we are in the pre_change state.
(add_visible_descendents_to_array): Likewise for row_inserted.
(e_tree_model_node_sort): And here too, for consistency.
svn path=/trunk/; revision=6363
2000-11-02 Christopher James Lahey <clahey@helixcode.com>
* e-table-config.glade, e-table-config.glade.h: Updated these
unused glade files to better match the versions in the code.
* e-table.c, e-table.h: Added e_table_selected_count and
"selection_change" signal.
* e-tree-model.c: Fixed an out of order
svn path=/trunk/; revision=6354
2000-10-27 Not Zed <NotZed@HelixCode.com>
* e-tree-model.c (e_tree_model_node_insert): If we are inserting
into the root level, we dont have to search the whole array for a
parent node we'll never find.
svn path=/trunk/; revision=6218
2000-10-25 Chris Toshok <toshok@helixcode.com>
* e-tree-model.c (e_tree_model_node_remove): remove the save_id
here, so we don't save state for nodes that no longer exist.
(etree_destroy): remove the foreach, since all the save_id's
should have been removed by now (don't destroy a tree without
destroying the root node.) also, make sure to call
g_hash_table_destroy.
svn path=/trunk/; revision=6202
2000-10-25 Christopher James Lahey <clahey@helixcode.com>
* e-table-item.c: Made the column on the right click and click
signals be the model column instead of the view column.
svn path=/trunk/; revision=6172
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-23 Christopher James Lahey <clahey@helixcode.com>
* e-table-item.c: Destroy the tooltip timeout on object
destruction.
svn path=/trunk/; revision=6137
2000-10-22 Christopher James Lahey <clahey@helixcode.com>
* e-table-item.c: Made it so that it doesn't recalculate all the
rows if a row is changed, inserted or deleted.
* e-table-subset.c: Added debugging code (turned off).
svn path=/trunk/; revision=6102
2000-10-21 Christopher James Lahey <clahey@helixcode.com>
* e-table-sorted-variable.c: Made it so that rows inserted with
their children nodes already in the tree get placed before their
children nodes instead of after.
svn path=/trunk/; revision=6101
2000-10-20 Christopher James Lahey <clahey@helixcode.com>
* e-table.c, e-table.h: Added e_table_set_state_object which loads
the state from the given ETableState object.
svn path=/trunk/; revision=6099
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table-state.c: Switched to saving the version as a double
instead of a string.
svn path=/trunk/; revision=6019
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table-field-chooser-item.c, e-table-field-chooser-item.h:
Fixed ETableFieldChooser row heights a bit.
* e-table-header-item.c: Formatting clean up.
* e-table-state.c: Added saving of the version of the ETableState.
This way, if we change the format of an ETableState, we can detect
old version numbers.
svn path=/trunk/; revision=6016
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-cell-text.c: Make text a different color if !(flags &
E_CELL_FOCUSED).
* e-cell.h: Added E_CELL_FOCUSED to flags.
* e-table-item.c: Changed the background color of selected cells
if the widget is focused. Send E_CELL_FOCUSED to flags if the
widget is focused.
* e-table.c: Repaint the window if focus changes.
svn path=/trunk/; revision=6010
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table-subset.c, e-table-subset.h: Sped up signal propogation.
svn path=/trunk/; revision=6006
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table.c: Fixed the color of the background rectangle. Made
the rectangle start at the bottom of the table so that the row
lines are still there.
svn path=/trunk/; revision=5993
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table.c: Make background color of ETable match the background
color of item rows.
svn path=/trunk/; revision=5989
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* e-table-field-chooser-dialog.h: Removed an unnecessary glade
include file.
* e-table-field-chooser.c: Make sure that glade is initialized.
* e-table.c, e-table.h: Added a white background to the ETable.
svn path=/trunk/; revision=5988
2000-10-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Moved the glade file directories.
* e-table-header-item.c: Removed an unused variable.
svn path=/trunk/; revision=5982
2000-10-15 Chris Toshok <toshok@helixcode.com>
* e-tree-model.c (e_tree_model_node_traverse): get the next child
before traversing/calling func.
svn path=/trunk/; revision=5937
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 Christopher James Lahey <clahey@helixcode.com>
* e-table.c: Made it so that ETable won't use a state with 0
columns.
svn path=/trunk/; revision=5931
2000-10-13 Christopher James Lahey <clahey@helixcode.com>
* e-table-example-1.c, e-table-example-2.c, e-table-size-test.c,
test-table.c: Fixed these to use the new ascending attribute as a
boolean instead of an int.
* e-table-sort-info.c: Changed the ascending attribute to a
boolean ("true"/"false") instead of an int (1/0).
svn path=/trunk/; revision=5903
2000-10-13 Christopher James Lahey <clahey@helixcode.com>
* gal/Makefile.am: Added e-table-config-field.lo.
* tests/test-tree-2.c: Changed this to use cursor-mode in the xml
instead of the no longer existing gtk argument.
From gal/e-table/ChangeLog:
2000-10-13 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added e-table-config-field.c and
e-table-config-field.h.
* e-table-column-specification.c: Cleaned this up a bit. Made it
leak less memory.
* e-table-config-field.c, e-table-config-field.h: New files.
This is the configuration widgets for sorting or grouping.
* e-table-config.c, e-table-config.h: Nuked these and replaced
them with a widget that handles all the ETable configuration.
* e-table-config.glade, e-table-config.glade.h: Updated this a bit
to match what's actually being used better. This isn't used in
actual code.
* e-table-header-item.c, e-table-header-item.h: Added a pointer to
the table in the header item structure so that we can launch the
configuration from the header item right click menu. Made the
header item launch the ETable configuration dialog.
* e-table.c, e-table.h: Keep the spec given to us around. Added a
get_state_object function which returns an ETableState *. Set the
"table" argument on the header item.
svn path=/trunk/; revision=5901
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* e-table-specification.c: Fixed the parity on the cursor-mode
check.
svn path=/trunk/; revision=5847
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* tests/test-tree-1.c, tests/test-tree-2.c, tests/test-tree-3.c:
Changed these to use the default cells.
From gal/e-table/ChangeLog:
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* e-cell-text.c, e-cell-text.h, e-cell-tree.c, e-cell-tree.h: Got
rid of the model parameter to e_cell_text_new and e_cell_tree_new
as they aren't used.
* e-table-extras.c: Added default "integer" compare and default
"tree-string", "string", and "checkbox" cells.
* e-table.c: Made this use the draw-grid, cursor-mode, and
_click-to-add-message fields from the xml.
svn path=/trunk/; revision=5841
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* spec.xml: Example spec file. Not used. Just an example of what
you can do.
svn path=/trunk/; revision=5839
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* tests/test-tree-1.c, tests/test-tree-2.c, tests/test-tree-3.c:
Changed these to match the new ETable system.
* gal/Makefile.am: Added e-table-column-specification.lo,
e-table-extras.lo, e-table-specification.lo, and e-table-state.lo.
From gal/e-table/ChangeLog:
2000-10-11 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added e-table-column-specification.c,
e-table-column-specification.h, e-table-extras.c,
e-table-extras.h, e-table-specification.c,
e-table-specification.h, e-table-state.c, and e-table-state.h.
Removed some duplicated .h files.
* e-cell-tree.c: Ref, sink, and unref the subcell instead of destroying
it when done.
* e-table-column-specification.c, e-table-column-specification.h:
New class which describes a column without having a table get
instantiated.
* e-table-config.c: Changed get_specification to get_state to get
this to compile.
* e-table-defines.h, e-table-item.h: Moved the definition of
ETableCursorMode from e-table-item.h to e-table-defines.h.
* e-table-extras.c, e-table-extras.h: New class which acts as a
set of 3 hash tables. All from char * and to alternately, ECells,
GCompareFuncs, and GdkPxibufs.
* e-table-scrolled.c, e-table-scrolled.h: Changed this to match
the new ETable function declarations.
* e-table-sort-info.c, e-table-sort-info.h: Added functions for
saving to and loading from xml.
* e-table-specification.c, e-table-specification.h: New class
which describes a table without having to instantiate it.
* e-table-state.c, e-table-state.h: New class which describes the
state of a table without having to instantiate the table.
* e-table.c, e-table.h: Changed this to accept both a state and a
specification instead of just a specification. You then save only
the state. The specification stays exactly the same. Also, you
no longer need to pass in an ETableHeader. Most of the
information contained in the ETableHeader are in the
specification. However you may need to translate some of the
strings in the specification to objects. If you need anything
other than the builtin choices, you need to create an ETableExtras
and pass it in.
* e-tree-model.c: Removed an unused variable.
svn path=/trunk/; revision=5837
2000-10-06 Not Zed <NotZed@HelixCode.com>
* e-table-item.c (eti_header_structure_changed): Removed the
assertion that there must be at least 1 column. No way to remove
all columns otherwise (which the header allows).
* e-table.c (et_xml_config_header): Reconfigure header based on
xml nodes for header.
(et_real_set_specification): Just configure the header only, dont
try to recreate everything.
2000-10-05 Not Zed <NotZed@HelixCode.com>
* e-table-scrolled.c (e_table_scrolled_set_specification): Set the
spec on a scrolled etable.
(e_table_scrolled_load_specification): Likewise for load.
* e-table.c (et_real_set_specification): Allow you to set the
specification after the widget was created.
(et_real_construct): Changed to use et_real_set_specification to
set the spec.
(e_table_load_specification): New frunction, load the
speficication from a specific file.
(e_table_set_specification): NEw function to set the specification
from a string.
svn path=/trunk/; revision=5795
2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
* e-table-selection-model.c (e_table_selection_model_select_all):
Select all elements of the etable.
(e_table_selection_model_invert_selection): Invert the current
selection.
* e-table.c (e_table_select_all): New convenience function to
select all elements in an e-table.
(e_table_invert_selection): New convenience function to invert the
current selection in an e-table.
svn path=/trunk/; revision=5719
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
Tue Oct 3 18:28:09 2000 Christopher James Lahey <clahey@helixcode.com>
* e-table-config.glade, e-table-config.glade.h: Put in 3 more
dialog boxes in these files.
svn path=/trunk/; revision=5696
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 Chris Toshok <toshok@helixcode.com>
* e-tree-model.c (e_tree_model_node_sort): don't screw things up
if we sort a collapsed node.
svn path=/trunk/; revision=5673