/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 viz/treeview.py

  • Committer: Daniel Schierbeck
  • Date: 2007-11-12 18:11:57 UTC
  • mfrom: (395.1.2 viz-cleanup)
  • Revision ID: daniel.schierbeck@gmail.com-20071112181157-swrfgs8n6n6j4lg4
Merged cleanup of the TreeView.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
                     'The currently selected revision',
33
33
                     gobject.PARAM_READWRITE),
34
34
 
 
35
        'revision-number': (gobject.TYPE_STRING,
 
36
                            'Revision number',
 
37
                            'The number of the selected revision',
 
38
                            '',
 
39
                            gobject.PARAM_READABLE),
 
40
 
 
41
        'children': (gobject.TYPE_PYOBJECT,
 
42
                     'Child revisions',
 
43
                     'Children of the currently selected revision',
 
44
                     gobject.PARAM_READABLE),
 
45
 
 
46
        'parents': (gobject.TYPE_PYOBJECT,
 
47
                    'Parent revisions',
 
48
                    'Parents to the currently selected revision',
 
49
                    gobject.PARAM_READABLE),
 
50
 
35
51
        'revno-column-visible': (gobject.TYPE_BOOLEAN,
36
52
                                 'Revision number',
37
53
                                 'Show revision number column',
72
88
 
73
89
        self.construct_treeview()
74
90
 
 
91
        self.iter   = None
75
92
        self.branch = branch
76
93
 
77
94
        gobject.idle_add(self.populate, start, maxnum, 
78
95
                         broken_line_length)
79
96
 
80
 
        self.revision = None
81
 
        self.children = None
82
 
        self.parents  = None
83
 
 
84
97
        self.connect("destroy", lambda x: self.branch.unlock())
85
98
 
86
99
    def do_get_property(self, property):
91
104
        elif property.name == 'branch':
92
105
            return self.branch
93
106
        elif property.name == 'revision':
94
 
            return self.revision
 
107
            return self.model.get_value(self.iter, treemodel.REVISION)
 
108
        elif property.name == 'revision-number':
 
109
            return self.model.get_value(self.iter, treemodel.REVNO)
 
110
        elif property.name == 'children':
 
111
            return self.model.get_value(self.iter, treemodel.CHILDREN)
 
112
        elif property.name == 'parents':
 
113
            return self.model.get_value(self.iter, treemodel.PARENTS)
95
114
        else:
96
115
            raise AttributeError, 'unknown property %s' % property.name
97
116
 
109
128
 
110
129
    def get_revision(self):
111
130
        """Return revision id of currently selected revision, or None."""
112
 
        return self.revision
 
131
        return self.get_property('revision')
 
132
 
 
133
    def set_revision(self, revision):
 
134
        self.set_property('revision', revision)
113
135
 
114
136
    def set_revision_id(self, revid):
115
137
        """Change the currently selected revision.
124
146
 
125
147
        :return: list of revision ids.
126
148
        """
127
 
        return self.children
 
149
        return self.get_property('children')
128
150
 
129
151
    def get_parents(self):
130
152
        """Return the parents of the currently selected revision.
131
153
 
132
154
        :return: list of revision ids.
133
155
        """
134
 
        return self.parents
 
156
        return self.get_property('parents')
135
157
        
136
158
    def back(self):
137
159
        """Signal handler for the Back button."""
138
 
        (path, col) = self.treeview.get_cursor()
139
 
        revision = self.model[path][treemodel.REVISION]
140
 
        parents = self.model[path][treemodel.PARENTS]
 
160
        parents = self.get_parents()
141
161
        if not len(parents):
142
162
            return
143
163
 
144
164
        for parent_id in parents:
145
165
            parent_index = self.index[parent_id]
146
166
            parent = self.model[parent_index][treemodel.REVISION]
147
 
            if same_branch(revision, parent):
148
 
                self.treeview.set_cursor(parent_index)
 
167
            if same_branch(self.get_revision(), parent):
 
168
                self.set_revision(parent)
149
169
                break
150
170
        else:
151
 
            self.treeview.set_cursor(self.index[parents[0]])
152
 
        self.treeview.grab_focus()
 
171
            self.set_revision_id(parents[0])
153
172
 
154
173
    def forward(self):
155
174
        """Signal handler for the Forward button."""
156
 
        (path, col) = self.treeview.get_cursor()
157
 
        revision = self.model[path][treemodel.REVISION]
158
 
        children = self.model[path][treemodel.CHILDREN]
 
175
        children = self.get_children()
159
176
        if not len(children):
160
177
            return
161
178
 
162
179
        for child_id in children:
163
180
            child_index = self.index[child_id]
164
181
            child = self.model[child_index][treemodel.REVISION]
165
 
            if same_branch(child, revision):
166
 
                self.treeview.set_cursor(child_index)
 
182
            if same_branch(child, self.get_revision()):
 
183
                self.set_revision(child)
167
184
                break
168
185
        else:
169
 
            self.treeview.set_cursor(self.index[children[0]])
170
 
        self.treeview.grab_focus()
 
186
            self.set_revision_id(children[0])
171
187
 
172
188
    def populate(self, start, maxnum, broken_line_length=None):
173
189
        """Fill the treeview with contents.
201
217
        from bzrlib.plugins.gtk.diff import DiffWindow
202
218
        window = DiffWindow(parent=self)
203
219
 
 
220
        parents = self.get_parents()
 
221
 
204
222
        if revid is None:
205
 
            revid = self.revision.revision_id
 
223
            revid = self.get_revision().revision_id
206
224
 
207
 
            if parentid is None and len(self.parents) > 0:
208
 
                parentid = self.parents[0]
 
225
            if parentid is None and len(parents) > 0:
 
226
                parentid = parents[0]
209
227
 
210
228
        if parentid is None:
211
229
            parentid = NULL_REVISION
301
319
        """callback for when the treeview changes."""
302
320
        (path, focus) = treeview.get_cursor()
303
321
        if path is not None:
304
 
            iter = self.model.get_iter(path)
305
 
            self.revision = self.model.get_value(iter, treemodel.REVISION)
306
 
            self.parents = self.model.get_value(iter, treemodel.PARENTS)
307
 
            self.children = self.model.get_value(iter, treemodel.CHILDREN)
308
 
 
 
322
            self.iter = self.model.get_iter(path)
309
323
            self.emit('revision-selected')
310
324
 
311
325
    def _on_revision_selected(self, widget, event):