1 # Copyright (c) 2008 David Aguilar
2 """This handles saving complex settings such as bookmarks, etc.
14 class Settings(object):
15 _file
= '~/.config/git-cola/settings'
18 """Load existing settings if they exist"""
23 def _get_bookmarks(self
):
25 bookmarks
= self
.values
['bookmarks']
27 bookmarks
= self
.values
['bookmarks'] = []
30 def _get_gui_state(self
):
32 gui_state
= self
.values
['gui_state']
34 gui_state
= self
.values
['gui_state'] = {}
37 bookmarks
= property(_get_bookmarks
)
38 gui_state
= property(_get_gui_state
)
40 def add_bookmark(self
, bookmark
):
41 """Adds a bookmark to the saved settings"""
42 if bookmark
not in self
.bookmarks
:
43 self
.bookmarks
.append(bookmark
)
45 def remove_bookmark(self
, bookmark
):
46 """Removes a bookmark from the saved settings"""
47 if bookmark
in self
.bookmarks
:
48 self
.bookmarks
.remove(bookmark
)
51 return os
.path
.expanduser(Settings
._file
)
56 parent
= os
.path
.dirname(path
)
57 if not os
.path
.isdir(parent
):
61 json
.dump(self
.values
, fp
, indent
=4)
64 sys
.stderr
.write('git-cola: error writing "%s"\n' % path
)
68 if not os
.path
.exists(path
):
69 self
.load_dot_cola(path
)
73 self
.values
= json
.load(fp
)
77 def load_dot_cola(self
, path
):
78 path
= os
.path
.join(os
.path
.expanduser('~'), '.cola')
79 if not os
.path
.exists(path
):
83 values
= json
.load(fp
)
87 for key
in ('bookmarks', 'gui_state'):
89 self
.values
[key
] = values
[key
]
93 def save_gui_state(self
, gui
):
94 """Saves settings for a cola view"""
96 state
= gui
.export_state()
97 self
.gui_state
[name
] = state
100 def get_gui_state(self
, gui
):
101 """Returns the state for a gui"""
103 state
= self
.gui_state
[gui
.name()]
105 state
= self
.gui_state
[gui
.name()] = {}