Skip to content

Commit

Permalink
Recent Files now uses YAML
Browse files Browse the repository at this point in the history
  • Loading branch information
AstroChuck committed Dec 27, 2024
1 parent ed8c441 commit fd3d994
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 16 deletions.
4 changes: 3 additions & 1 deletion uilib/fileIO.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class fileTypes(Enum):
PREFERENCES = 1
PROPELLANTS = 2
MOTOR = 3
RECENTFILES = 4

def futureVersion(verA, verB): # Returns true if a is newer than b
major = verA[0] > verB[0]
Expand Down Expand Up @@ -162,7 +163,8 @@ def migrateMotor_0_2_0_to_0_3_0(data):
'to': (0, 6, 0),
fileTypes.PREFERENCES: passthrough,
fileTypes.PROPELLANTS: passthrough,
fileTypes.MOTOR: migrateMotor_0_5_0_to_0_6_0
fileTypes.MOTOR: migrateMotor_0_5_0_to_0_6_0,
fileTypes.RECENTFILES: passthrough
},
(0, 4, 0): {
'to': (0, 5, 0),
Expand Down
37 changes: 22 additions & 15 deletions uilib/fileManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def __init__(self, app):

self.newFile()

self.recentFiles = os.path.join(getConfigPath(), 'recentfiles.txt')
self.recentFiles = os.path.join(getConfigPath(), 'recentfiles.yaml')

# Check if current motor is unsaved and start over from default motor. Called when the menu item is triggered.
def newFile(self):
Expand Down Expand Up @@ -72,6 +72,7 @@ def saveAs(self):
if fileName is not None:
self.fileName = fileName
self.save()
self.addRecentFile(fileName)

# Checks for unsaved changes, asks for a filename, and loads the file
def load(self, path=None):
Expand Down Expand Up @@ -222,6 +223,12 @@ def checkPropellant(self, motor):
return motor

def createRecentlyOpenedMenu(self, recentlyOpenedMenu):
try:
self.recentFilesList = loadFile(self.recentFiles, fileTypes.RECENTFILES)
except FileNotFoundError:
logger.warn('Unable to load recent files, creating new file at {}'.format(self.recentFiles))
self.recentFilesList = []
saveFile(self.recentFiles, {"recentfileslist":self.recentFilesList}, fileTypes.RECENTFILES)
self.recentlyOpenedMenu = recentlyOpenedMenu
self.updateRecentlyOpenedMenu()

Expand All @@ -230,10 +237,10 @@ def updateRecentlyOpenedMenu(self):
self.recentlyOpenedMenu.clear()
self.recentlyOpenedFiles = []

with open(self.recentFiles, "r+") as recentFilesList:
lines = recentFilesList.readlines()
for line in lines:
recentFile = RecentFile(line[:-1], self)
self.recentFilesList = loadFile(self.recentFiles, fileTypes.RECENTFILES)["recentfileslist"]
if len(self.recentFilesList) >= 1:
for file in self.recentFilesList:
recentFile = RecentFile(file, self)
self.recentlyOpenedFiles.append(recentFile)

if len(self.recentlyOpenedFiles) == 0:
Expand All @@ -247,17 +254,17 @@ def updateRecentlyOpenedMenu(self):
self.recentlyOpenedMenu.addAction(action)

def addRecentFile(self, filepath):
recentFilepaths = []
self.updateRecentlyOpenedMenu()
self.recentFilesList = []
too_long = False
for recentFile in self.recentlyOpenedFiles:
recentFilepaths.append(recentFile.filepath)
self.recentFilesList.append(recentFile.filepath)

if len(recentFilepaths) > 5:
recentFilepaths = recentFilepaths[1:]
if len(self.recentFilesList) > 5:
self.recentFilesList = self.recentFilesList[1:]

if filepath in recentFilepaths:
recentFilepaths.remove(filepath)
recentFilepaths.append(filepath)
with open(self.recentFiles, "w") as recentFilesList:
for i in recentFilepaths:
recentFilesList.write(i+"\n")
if filepath in self.recentFilesList:
self.recentFilesList.remove(filepath)
self.recentFilesList.append(filepath)

saveFile(self.recentFiles, {"recentfileslist":self.recentFilesList}, fileTypes.RECENTFILES)

0 comments on commit fd3d994

Please sign in to comment.