/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to graph.py

  • Committer: David Allouche
  • Date: 2005-12-03 02:48:52 UTC
  • Revision ID: david.allouche@canonical.com-20051203024852-b8619c1292d1e416
separate sorting and colouring

Show diffs side-by-side

added added

removed removed

Lines of Context:
149
149
                if pending_count == 0:
150
150
                    ancestor_ids_of[parent_id] = None
151
151
 
152
 
    def sort_revisions_and_set_colours(self, sorted_revids):
 
152
    def sort_revisions(self, sorted_revids):
153
153
        revisions = self.revisions
154
154
        parent_ids_of = self.parent_ids_of
155
155
        children_of_id = self.children_of_id
173
173
                    expected_id = pending_ids.pop(0)
174
174
                    skipped_revids.append(revid)
175
175
                    sorted_revids[:0] = skipped_revids
176
 
                    skipped_revids = []
 
176
                    del skipped_revids[:]
177
177
                    break
178
178
            else:
179
179
                # all children are here, push!
180
180
                distances[revid] = len(distances)
181
 
                self.choose_colour(revision, distances)
182
181
                # all parents will need to be pushed as soon as possible
183
182
                for parent in parent_ids_of[revision]:
184
183
                    if parent not in pending_ids:
192
191
                    pos = skipped_revids.index(expected_id)
193
192
                    sorted_revids[:0] = skipped_revids[pos:]
194
193
                    del skipped_revids[pos:]
 
194
        self.distances = distances
195
195
        return sorted(distances, key=distances.get)
196
196
 
197
 
    def choose_colour(self, revision, distances):
198
 
        revid = revision.revision_id
 
197
    def choose_colour(self, revid):
 
198
        revision = self.revisions[revid]
199
199
        children_of_id = self.children_of_id
200
200
        parent_ids_of = self.parent_ids_of
201
201
        colours = self.colours
210
210
            else:
211
211
                self.choose_colour_one_child(revision, child)
212
212
        else:
213
 
            self.choose_colour_many_children(revision, the_children, distances)
 
213
            self.choose_colour_many_children(revision, the_children)
214
214
 
215
215
    def choose_colour_one_child(self, revision, child):
216
216
        revid = revision.revision_id
233
233
        else:
234
234
            self.colours[revid] = self.last_colour = self.last_colour + 1
235
235
 
236
 
    def choose_colour_many_children(self, revision, the_children, distances):
 
236
    def choose_colour_many_children(self, revision, the_children):
 
237
        distances = self.distances
237
238
        revid = revision.revision_id
238
239
        direct_parent_of = self.direct_parent_of
239
240
        # multiple children, get the colour of the last displayed child
273
274
    distance = DistanceMethod(branch, start)
274
275
    distance.fill_caches()
275
276
    sorted_revids = distance.first_ancestry_traversal()
 
277
    print 'removing redundant parents'
276
278
    distance.remove_redundant_parents(sorted_revids)
277
279
    children = distance.make_children_map()
278
 
    sorted_revids = distance.sort_revisions_and_set_colours(sorted_revids)
 
280
    print 'sorting'
 
281
    sorted_revids = distance.sort_revisions(sorted_revids)
 
282
    print 'colouring'
 
283
    for revid in sorted_revids:
 
284
        distance.choose_colour(revid)
 
285
    print 'done'
279
286
 
280
287
    revisions = distance.revisions
281
288
    colours = distance.colours