summaryrefslogtreecommitdiff
path: root/grc/gui/Preferences.py
diff options
context:
space:
mode:
authorSeth Hitefield <sdh11@vt.edu>2015-12-07 18:17:10 -0500
committerSeth Hitefield <sdh11@vt.edu>2015-12-07 18:17:10 -0500
commitbb814b4d4b7a828eba96484c619b36d6f6793a8f (patch)
tree66984d51fdeb831461539e0abe98e358702e2c5e /grc/gui/Preferences.py
parentef1493630eeab5d46f53bf3e015411f1f7b25866 (diff)
grc: Fixed issue where the recent file list includes files that do not exist.
Diffstat (limited to 'grc/gui/Preferences.py')
-rw-r--r--grc/gui/Preferences.py60
1 files changed, 37 insertions, 23 deletions
diff --git a/grc/gui/Preferences.py b/grc/gui/Preferences.py
index 54dab38282..3ebee24345 100644
--- a/grc/gui/Preferences.py
+++ b/grc/gui/Preferences.py
@@ -17,6 +17,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
+import os
import sys
import ConfigParser
@@ -94,36 +95,49 @@ def file_open(filename=None):
return entry('file_open', filename, default='')
-def files_lists(key, files=None):
- if files is not None:
- _config_parser.remove_section(key) # clear section
- _config_parser.add_section(key)
- for i, filename in enumerate(files):
- _config_parser.set(key, '%s_%d' % (key, i), filename)
+def set_file_list(key, files):
+ _config_parser.remove_section(key) # clear section
+ _config_parser.add_section(key)
+ for i, filename in enumerate(files):
+ _config_parser.set(key, '%s_%d' % (key, i), filename)
+
+
+def get_file_list(key):
+ try:
+ files = [value for name, value in _config_parser.items(key)
+ if name.startswith('%s_' % key)]
+ except ConfigParser.Error:
+ files = []
+ return files
+
+
+def get_open_files():
+ return get_file_list('files_open')
+
+
+def set_open_files(files):
+ return set_file_list('files_open', files)
+
+
+def get_recent_files():
+ """ Gets recent files, removes any that do not exist and re-saves it """
+ files = filter(os.path.exists, get_file_list('files_recent'))
+ set_recent_files(files)
+ return files
- else:
- try:
- files = [value for name, value in _config_parser.items(key)
- if name.startswith('%s_' % key)]
- except ConfigParser.Error:
- files = []
- return files
-def files_open(files=None):
- return files_lists('files_open', files)
+def set_recent_files(files):
+ return set_file_list('files_recent', files)
-def files_recent(files=None):
- return files_lists('files_recent', files)
-def files_recent_add(file_name):
- import os
+def add_recent_file(file_name):
# double check file_name
if os.path.exists(file_name):
- recent_files = files_recent()
+ recent_files = get_recent_files()
if file_name in recent_files:
- recent_files.remove(file_name) # attempt removal
- recent_files.insert(0, file_name) # insert at start
- files_recent(recent_files[:10]) # keep up to 10 files
+ recent_files.remove(file_name) # Attempt removal
+ recent_files.insert(0, file_name) # Insert at start
+ set_recent_files(recent_files[:10]) # Keep up to 10 files
def reports_window_position(pos=None):