1 # Copyright (c) 2008 David Aguilar
2 """This handles saving complex settings such as bookmarks, etc.
8 from cola
import serializer
9 from cola
.models
import observable
11 # Here we store settings
12 _rcfile
= os
.path
.join(user
.home
, '.cola')
15 class SettingsModel(observable
.ObservableModel
):
17 """Load existing settings if they exist"""
18 observable
.ObservableModel
.__init
__(self
)
22 def add_bookmark(self
, bookmark
):
23 """Adds a bookmark to the saved settings"""
24 if bookmark
not in self
.bookmarks
:
25 self
.bookmarks
.append(bookmark
)
27 def remove_bookmark(self
, bookmark
):
28 """Removes a bookmark from the saved settings"""
29 if bookmark
in self
.bookmarks
:
30 self
.bookmarks
.remove(bookmark
)
33 class SettingsManager(object):
34 """Manages a SettingsModel singleton
40 """Returns the SettingsModel singleton"""
41 if not SettingsManager
._settings
:
42 if os
.path
.exists(_rcfile
):
43 SettingsManager
._settings
= serializer
.load(_rcfile
)
45 SettingsManager
._settings
= SettingsModel()
46 return SettingsManager
._settings
49 def save_gui_state(gui
):
50 """Saves settings for a cola view"""
52 state
= gui
.export_state()
53 model
= SettingsManager
.settings()
54 model
.gui_state
[name
] = state
55 SettingsManager
.save()
59 """Returns the state for a gui"""
60 return SettingsManager
.settings().gui_state
.get(gui
.name(), {})
64 model
= SettingsManager
.settings()
65 serializer
.save(model
, _rcfile
)