~ubuntu-branches/ubuntu/breezy/evolution-data-server/breezy

« back to all changes in this revision

Viewing changes to libedataserverui/e-tree-model-generator.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2005-10-10 11:30:56 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20051010113056-rb4vj4kbs8yxft85
Tags: 1.4.1-0ubuntu3
* debian/patches/camel-imap-store.c.patch:
  - Ubuntu 17465: apply patch from
  http://bugzilla.gnome.org/attachment.cgi?id=53234&action=view
  (additional NULL pointer check)

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 * Copyright (C) 2005 Novell, Inc.
6
6
 *
7
7
 * This program is free software; you can redistribute it and/or
8
 
 * modify it under the terms of version 2 of the GNU General Public
 
8
 * modify it under the terms of version 2 of the GNU Lesser General Public
9
9
 * License as published by the Free Software Foundation.
10
10
 *
11
11
 * This program is distributed in the hope that it will be useful,
12
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 * GNU General Public License for more details.
 
14
 * GNU Lesser General Public License for more details.
15
15
 *
16
 
 * You should have received a copy of the GNU General Public License
 
16
 * You should have received a copy of the GNU Lesser General Public License
17
17
 * along with this program; if not, write to the Free Software
18
18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
19
19
 *
456
456
 
457
457
        for (depth = 0; depth < gtk_tree_path_get_depth (path); depth++) {
458
458
                gint  index;
459
 
                gint  generated_index;
460
459
 
461
460
                if (!group) {
462
461
                        g_warning ("ETreeModelGenerator got unknown child element!");
671
670
        GtkTreePath *generated_path;
672
671
        Node        *node;
673
672
        gint         n_generated;
674
 
        gint         i;
675
673
 
676
674
        if (tree_model_generator->generate_func)
677
675
                n_generated =
724
722
 * ETreeModelGenerator API *
725
723
 * ----------------------- */
726
724
 
 
725
/**
 
726
 * e_tree_model_generator_new:
 
727
 * @child_model: a #GtkTreeModel
 
728
 *
 
729
 * Creates a new #ETreeModelGenerator wrapping @child_model.
 
730
 *
 
731
 * Return value: A new #ETreeModelGenerator.
 
732
 **/
727
733
ETreeModelGenerator *
728
734
e_tree_model_generator_new (GtkTreeModel *child_model)
729
735
{
733
739
                                                     "child-model", child_model, NULL));
734
740
}
735
741
 
 
742
/**
 
743
 * e_tree_model_generator_get_model:
 
744
 * @tree_model_generator: an #ETreeModelGenerator
 
745
 *
 
746
 * Gets the child model being wrapped by @tree_model_generator.
 
747
 *
 
748
 * Return value: A #GtkTreeModel being wrapped.
 
749
 **/
736
750
GtkTreeModel *
737
751
e_tree_model_generator_get_model (ETreeModelGenerator *tree_model_generator)
738
752
{
741
755
        return tree_model_generator->child_model;
742
756
}
743
757
 
 
758
/**
 
759
 * e_tree_model_generator_set_generate_func:
 
760
 * @tree_model_generator: an #ETreeModelGenerator
 
761
 * @func: an #ETreeModelGeneratorGenerateFunc, or %NULL
 
762
 * @data: user data to pass to @func
 
763
 * @destroy:
 
764
 *
 
765
 * Sets the callback function used to filter or generate additional rows
 
766
 * based on the child model's data. This function is called for each child
 
767
 * row, and returns a value indicating the number of rows that will be
 
768
 * used to represent the child row - 0 or more.
 
769
 *
 
770
 * If @func is %NULL, a filtering/generating function will not be applied.
 
771
 **/
744
772
void
745
773
e_tree_model_generator_set_generate_func (ETreeModelGenerator *tree_model_generator,
746
774
                                          ETreeModelGeneratorGenerateFunc func,
752
780
        tree_model_generator->generate_func_data = data;
753
781
}
754
782
 
 
783
/**
 
784
 * e_tree_model_generator_set_modify_func:
 
785
 * @tree_model_generator: an #ETreeModelGenerator
 
786
 * @func: an @ETreeModelGeneratorModifyFunc, or %NULL
 
787
 * @data: user data to pass to @func
 
788
 * @destroy:
 
789
 *
 
790
 * Sets the callback function used to override values for the child row's
 
791
 * columns and specify values for generated rows' columns.
 
792
 *
 
793
 * If @func is %NULL, the child model's values will always be used.
 
794
 **/
755
795
void
756
796
e_tree_model_generator_set_modify_func (ETreeModelGenerator *tree_model_generator,
757
797
                                        ETreeModelGeneratorModifyFunc func,
763
803
        tree_model_generator->modify_func_data = data;
764
804
}
765
805
 
 
806
/**
 
807
 * e_tree_model_generator_convert_child_path_to_path:
 
808
 * @tree_model_generator: an #ETreeModelGenerator
 
809
 * @child_path: a #GtkTreePath
 
810
 *
 
811
 * Convert a path to a child row to a path to a @tree_model_generator row.
 
812
 *
 
813
 * Return value: A new GtkTreePath, owned by the caller.
 
814
 **/
766
815
GtkTreePath *
767
816
e_tree_model_generator_convert_child_path_to_path (ETreeModelGenerator *tree_model_generator,
768
817
                                                   GtkTreePath *child_path)
799
848
        return path;
800
849
}
801
850
 
 
851
/**
 
852
 * e_tree_model_generator_convert_child_iter_to_iter:
 
853
 * @tree_model_generator: an #ETreeModelGenerator
 
854
 * @generator_iter: a #GtkTreeIter to set
 
855
 * @child_iter: a #GtkTreeIter to convert
 
856
 *
 
857
 * Convert @child_iter to a corresponding #GtkTreeIter for @tree_model_generator,
 
858
 * storing the result in @generator_iter.
 
859
 **/
802
860
void
803
861
e_tree_model_generator_convert_child_iter_to_iter (ETreeModelGenerator *tree_model_generator,
804
862
                                                   GtkTreeIter *generator_iter,
837
895
        gtk_tree_path_free (path);
838
896
}
839
897
 
 
898
/**
 
899
 * e_tree_model_generator_convert_path_to_child_path:
 
900
 * @tree_model_generator: an #ETreeModelGenerator
 
901
 * @generator_path: a #GtkTreePath to a @tree_model_generator row
 
902
 *
 
903
 * Converts @generator_path to a corresponding #GtkTreePath in the child model.
 
904
 *
 
905
 * Return value: A new #GtkTreePath, owned by the caller.
 
906
 **/
840
907
GtkTreePath *
841
908
e_tree_model_generator_convert_path_to_child_path (ETreeModelGenerator *tree_model_generator,
842
909
                                                   GtkTreePath *generator_path)
873
940
        return path;
874
941
}
875
942
 
 
943
/**
 
944
 * e_tree_model_generator_convert_iter_to_child_iter:
 
945
 * @tree_model_generator: an #ETreeModelGenerator
 
946
 * @child_iter: a #GtkTreeIter to set
 
947
 * @permutation_n: a permutation index to set
 
948
 * @generator_iter: a #GtkTreeIter indicating the row to convert
 
949
 * 
 
950
 * Converts a @tree_model_generator row into a child row and permutation index.
 
951
 * The permutation index is the index of the generated row based on this
 
952
 * child row, with the first generated row based on this child row being 0.
 
953
 **/
876
954
void
877
955
e_tree_model_generator_convert_iter_to_child_iter (ETreeModelGenerator *tree_model_generator,
878
956
                                                   GtkTreeIter *child_iter,
899
977
 
900
978
        while (group) {
901
979
                Node *node = &g_array_index (group, Node, index);
902
 
                gint  generated_index;
903
980
 
904
981
                group = node->parent_group;
905
982
                index = node->parent_index;