models.compare: Derive from ObservableModel
[git-cola.git] / cola / models / compare.py
blob5b26b19c23a6067a793117e0d7fcd3ccaa1388aa
1 import os
3 import cola
4 from cola import core
5 from cola import gitcmd
6 from cola import gitcmds
7 from cola.models import observable
11 class CompareModel(observable.ObservableModel):
12 """Provides custom model data for CompareController."""
13 def __init__(self):
14 observable.ObservableModel.__init__(self)
15 self.git = gitcmd.instance()
16 self.descriptions_start = []
17 self.descriptions_end = []
18 self.revisions_start = []
19 self.revisions_end = []
20 self.revision_start = ''
21 self.revision_end = ''
22 self.compare_files = []
23 self.num_results = 100
24 self.show_versions=False
26 def update_revision_lists(self, filename=None, show_versions=False):
27 num_results = self.num_results
28 if filename:
29 rev_list = self.git.log('--', filename,
30 max_count=num_results,
31 pretty='oneline')
32 else:
33 rev_list = self.git.log(max_count=num_results,
34 pretty='oneline', all=True)
36 commit_list = gitcmds.parse_rev_list(rev_list)
37 commit_list.reverse()
38 commits = map(lambda x: x[0], commit_list)
39 descriptions = map(lambda x: core.decode(x[1]), commit_list)
40 if show_versions:
41 fancy_descr_list = map(lambda x: self.describe(*x), commit_list)
42 self.set_descriptions_start(fancy_descr_list)
43 self.set_descriptions_end(fancy_descr_list)
44 else:
45 self.set_descriptions_start(descriptions)
46 self.set_descriptions_end(descriptions)
48 self.set_revisions_start(commits)
49 self.set_revisions_end(commits)
51 return commits
54 class BranchCompareModel(observable.ObservableModel):
55 """Provides custom model data for BranchCompareController."""
56 def __init__(self):
57 observable.ObservableModel.__init__(self)
58 self.git = gitcmd.instance()
59 self.remote_branches = gitcmds.branch_list(remote=True)
60 self.local_branches = gitcmds.branch_list(remote=False)
61 self.left_combo = ['Local', 'Remote']
62 self.right_combo = ['Local', 'Remote']
63 self.left_combo_index = 0
64 self.right_combo_index = 1
65 self.left_list = []
66 self.right_list = []
67 self.left_list_index = -1
68 self.right_list_index = -1
69 self.left_list_selected = False
70 self.right_list_selected = False
71 self.diff_files = []