53 |
return self._dict.get(option, None) |
return self._dict.get(option, None) |
54 |
|
|
55 |
def _initialize_dict(self): |
def _initialize_dict(self): |
56 |
pickle_file = open(self._config_file, "r") |
if os.path.exists(self._config_file): |
57 |
self._dict = cPickle.load(pickle_file) |
pickle_file = open(self._config_file, "r") |
58 |
pickle_file.close() |
self._dict = cPickle.load(pickle_file) |
59 |
|
pickle_file.close() |
60 |
|
else: |
61 |
|
self._dict = {} |
62 |
|
|
63 |
class ConfigGConfPersistence: |
class ConfigGConfPersistence: |
64 |
SAVERS = {OPTION_LAST_POLL: 'int', |
SAVERS = {OPTION_LAST_POLL: 'int', |
261 |
# The main man |
# The main man |
262 |
class Config(object, straw.SignalEmitter): |
class Config(object, straw.SignalEmitter): |
263 |
_straw_dir = os.path.join(os.getenv("HOME"), ".straw") |
_straw_dir = os.path.join(os.getenv("HOME"), ".straw") |
264 |
|
_straw_config_file = os.path.join(_straw_dir, "config") |
265 |
|
|
266 |
def __init__(self, persistence): |
def __init__(self, persistence): |
267 |
self.persistence = persistence |
self.persistence = persistence |
275 |
self._proxy_config = p() |
self._proxy_config = p() |
276 |
if self._proxy_config.config_working: |
if self._proxy_config.config_working: |
277 |
break |
break |
|
self.first_time = ensure_directory(self._straw_dir) |
|
|
self._last_poll = self.persistence.load_option(OPTION_LAST_POLL) |
|
278 |
|
|
279 |
if self._last_poll is None or self._last_poll == 0: |
ensure_directory(self._straw_dir) |
280 |
self._load_defaults() |
self._load_defaults() |
281 |
|
|
282 |
|
last_poll = self.persistence.load_option(OPTION_LAST_POLL) |
283 |
|
has_last_poll = not (last_poll is None or last_poll == 0) |
284 |
|
has_config = os.path.exists(self.straw_config_file) |
285 |
|
|
286 |
|
self.first_time = not (has_config or has_last_poll) |
287 |
|
|
288 |
|
if self.first_time: |
289 |
return |
return |
290 |
|
|
291 |
self._items_stored = self.persistence.load_option(OPTION_ITEMS_STORED) |
if has_config: |
292 |
self._item_order = self.persistence.load_option(OPTION_ITEM_ORDER) |
self._feed_id_seq = self.persistence.load_option(OPTION_FEED_ID_SEQ) |
293 |
self._main_window_size = ( |
|
294 |
self.persistence.load_option(OPTION_WINDOW_SIZE_W), |
if has_last_poll: |
295 |
self.persistence.load_option(OPTION_WINDOW_SIZE_H)) |
self._items_stored = self.persistence.load_option(OPTION_ITEMS_STORED) |
296 |
self._main_pane_position = self.persistence.load_option( |
self._item_order = self.persistence.load_option(OPTION_ITEM_ORDER) |
297 |
OPTION_MAIN_PANE_POS) |
self._main_window_size = ( |
298 |
self._sub_pane_position = self.persistence.load_option( |
self.persistence.load_option(OPTION_WINDOW_SIZE_W), |
299 |
OPTION_SUB_PANE_POS) |
self.persistence.load_option(OPTION_WINDOW_SIZE_H)) |
300 |
self._offline = self.persistence.load_option(OPTION_OFFLINE) |
self._main_pane_position = self.persistence.load_option( |
301 |
self._poll_freq = self.persistence.load_option(OPTION_POLL_FREQUENCY) |
OPTION_MAIN_PANE_POS) |
302 |
self._feed_id_seq = self.persistence.load_option(OPTION_FEED_ID_SEQ) |
self._sub_pane_position = self.persistence.load_option( |
303 |
|
OPTION_SUB_PANE_POS) |
304 |
|
self._offline = self.persistence.load_option(OPTION_OFFLINE) |
305 |
|
self._poll_freq = self.persistence.load_option(OPTION_POLL_FREQUENCY) |
306 |
|
|
307 |
def _load_defaults(self): |
def _load_defaults(self): |
308 |
self._poll_freq = 3600 |
self._poll_freq = 3600 |
313 |
self._sub_pane_position = 180 |
self._sub_pane_position = 180 |
314 |
self._offline = True |
self._offline = True |
315 |
self._last_poll = 0 |
self._last_poll = 0 |
316 |
self._feed_id_seq = 0 |
self._feed_id_seq = 0 |
317 |
|
|
318 |
def get_straw_dir(self): |
def get_straw_dir(self): |
319 |
return self._straw_dir |
return self._straw_dir |
320 |
|
|
321 |
straw_dir = property(get_straw_dir, None, None, "") |
straw_dir = property(get_straw_dir, None, None, "") |
322 |
|
|
323 |
|
def get_straw_config_file(self): |
324 |
|
return self._straw_config_file |
325 |
|
|
326 |
|
straw_config_file = property(get_straw_config_file, None, None, "") |
327 |
|
|
328 |
def get_proxy_config(self): |
def get_proxy_config(self): |
329 |
return self._proxy_config |
return self._proxy_config |
444 |
def set_sub_pane_position(self, position): |
def set_sub_pane_position(self, position): |
445 |
if self._sub_pane_position != position: |
if self._sub_pane_position != position: |
446 |
self._sub_pane_position = position |
self._sub_pane_position = position |
447 |
self.peristence.save_option(OPTION_SUB_PANE_POS, position) |
self.persistence.save_option(OPTION_SUB_PANE_POS, position) |
448 |
self.emit_signal(straw.SubPanePositionChangedSignal(self)) |
self.emit_signal(straw.SubPanePositionChangedSignal(self)) |
449 |
|
|
450 |
def get_sub_pane_position(self): |
def get_sub_pane_position(self): |
455 |
config_instance = None |
config_instance = None |
456 |
|
|
457 |
def convert_if_necessary(config): |
def convert_if_necessary(config): |
458 |
f = open(os.path.join(config.straw_dir, "config"), "rw") |
if not os.path.exists(config.straw_config_file): |
459 |
|
return |
460 |
|
|
461 |
|
f = open(config.straw_config_file, "rw") |
462 |
cf = cPickle.load(f) |
cf = cPickle.load(f) |
463 |
if cf.has_key('poll_frequency'): |
if cf.has_key('poll_frequency'): |
464 |
config.poll_frequency = cf.get('poll_frequency') |
config.poll_frequency = cf.get('poll_frequency') |
489 |
return ConfigGConfPersistence(client) |
return ConfigGConfPersistence(client) |
490 |
|
|
491 |
def create_pickle_persistence(): |
def create_pickle_persistence(): |
492 |
return ConfigPicklePersistence(os.path.join(Config._straw_dir, "config")) |
return ConfigPicklePersistence(Config._straw_config_file) |
493 |
|
|
494 |
def create_instance(): |
def create_instance(): |
|
gp = create_gconf_persistence() |
|
|
pp = create_pickle_persistence() |
|
495 |
cp = ConfigPersistence( |
cp = ConfigPersistence( |
496 |
(create_gconf_persistence(), |
(create_gconf_persistence(), |
497 |
(OPTION_LAST_POLL, OPTION_ITEMS_STORED, OPTION_ITEM_ORDER, |
(OPTION_LAST_POLL, OPTION_ITEMS_STORED, OPTION_ITEM_ORDER, |