summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/frontEnd/ProjectExplorer.py170
1 files changed, 118 insertions, 52 deletions
diff --git a/src/frontEnd/ProjectExplorer.py b/src/frontEnd/ProjectExplorer.py
index c733c9b1..f0227164 100644
--- a/src/frontEnd/ProjectExplorer.py
+++ b/src/frontEnd/ProjectExplorer.py
@@ -15,7 +15,6 @@ class ProjectExplorer(QtGui.QWidget):
- for renaming project.
- for refreshing project.
- for removing project.
- - for saving data.
"""
def __init__(self):
@@ -189,42 +188,57 @@ class ProjectExplorer(QtGui.QWidget):
clicking on project and selecting remove option.
"""
self.indexItem = self.treewidget.currentIndex()
- self.filePath = str(
+ filePath = str(
self.indexItem.sibling(self.indexItem.row(), 1).data()
)
self.int = self.indexItem.row()
self.treewidget.takeTopLevelItem(self.int)
- if self.obj_appconfig.current_project["ProjectName"] == self.filePath:
+ if self.obj_appconfig.current_project["ProjectName"] == filePath:
self.obj_appconfig.current_project["ProjectName"] = None
- del self.obj_appconfig.project_explorer[str(self.filePath)]
+ del self.obj_appconfig.project_explorer[filePath]
json.dump(self.obj_appconfig.project_explorer,
open(self.obj_appconfig.dictPath["path"], 'w'))
- def refreshProject(self):
+ def refreshProject(self, filePath=None):
"""
This function refresh the project in explorer area by right \
clicking on project and selecting refresh option.
"""
- self.indexItem = self.treewidget.currentIndex()
- self.filePath = str(
- self.indexItem.sibling(self.indexItem.row(), 1).data()
- )
- filelistnew = os.listdir(os.path.join(self.filePath))
- parentnode = self.treewidget.currentItem()
- count = parentnode.childCount()
- for i in range(count):
- for items in self.treewidget.selectedItems():
- items.removeChild(items.child(0))
- for files in filelistnew:
- QtGui.QTreeWidgetItem(
- parentnode, [files, os.path.join(self.filePath, files)]
+
+ if not filePath or filePath is None:
+ self.indexItem = self.treewidget.currentIndex()
+ filePath = str(
+ self.indexItem.sibling(self.indexItem.row(), 1).data()
)
- self.obj_appconfig.project_explorer[self.filePath] = filelistnew
- json.dump(self.obj_appconfig.project_explorer,
- open(self.obj_appconfig.dictPath["path"], 'w'))
+ if os.path.exists(filePath):
+ filelistnew = os.listdir(os.path.join(filePath))
+ parentnode = self.treewidget.currentItem()
+ count = parentnode.childCount()
+ for i in range(count):
+ for items in self.treewidget.selectedItems():
+ items.removeChild(items.child(0))
+ for files in filelistnew:
+ QtGui.QTreeWidgetItem(
+ parentnode, [files, os.path.join(filePath, files)]
+ )
+
+ self.obj_appconfig.project_explorer[filePath] = filelistnew
+ json.dump(self.obj_appconfig.project_explorer,
+ open(self.obj_appconfig.dictPath["path"], 'w'))
+ return True
+
+ else:
+ print("Selected project not found")
+ print("==================")
+ msg = QtGui.QErrorMessage(self)
+ msg.setModal(True)
+ msg.setWindowTitle("Error Message")
+ msg.showMessage('Selected project does not exist.')
+ msg.exec_()
+ return False
def renameProject(self):
"""
@@ -240,30 +254,18 @@ class ProjectExplorer(QtGui.QWidget):
"""
self.indexItem = self.treewidget.currentIndex()
self.baseFileName = str(self.indexItem.data())
+ filePath = str(
+ self.indexItem.sibling(self.indexItem.row(), 1).data()
+ )
+
newBaseFileName, ok = QtGui.QInputDialog.getText(
self, 'Rename Project', 'Project Name:',
QtGui.QLineEdit.Normal, self.baseFileName
)
+
if ok and newBaseFileName:
- print(newBaseFileName)
- print("=================")
newBaseFileName = str(newBaseFileName)
- i = -1
- for parents, children in list(
- self.obj_appconfig.project_explorer.items()):
- if os.path.exists(parents):
- i += 1
- if i == self.indexItem.row():
- projectPath, projectFiles = parents, children
- break
-
- updatedProjectFiles = []
-
- self.workspace = self.obj_appconfig.default_workspace['workspace']
- newBaseFileName = str(newBaseFileName).rstrip().lstrip()
- projDir = os.path.join(self.workspace, str(newBaseFileName))
-
if not newBaseFileName.strip():
print("Project name cannot be empty")
print("==================")
@@ -282,30 +284,94 @@ class ProjectExplorer(QtGui.QWidget):
msg.showMessage('The project name has to be different')
msg.exec_()
- else:
+ elif self.refreshProject(filePath):
+
+ projectPath = None
+ projectFiles = None
+
+ for parents, children in list(
+ self.obj_appconfig.project_explorer.items()):
+ if filePath == parents:
+ if os.path.exists(parents):
+ projectPath, projectFiles = parents, children
+ break
+
+ self.workspace = \
+ self.obj_appconfig.default_workspace['workspace']
+ newBaseFileName = str(newBaseFileName).rstrip().lstrip()
+ projDir = os.path.join(self.workspace, str(newBaseFileName))
+
reply = self.obj_validation.validateNewproj(str(projDir))
- if reply == "VALID":
+ if not (projectPath and projectFiles):
+ print("Selected project not found")
+ print("Project Path :", projectPath)
+ print("Project Files :", projectFiles)
+ print("==================")
+ msg = QtGui.QErrorMessage(self)
+ msg.setModal(True)
+ msg.setWindowTitle("Error Message")
+ msg.showMessage('Selected project does not exist.')
+ msg.exec_()
+
+ elif reply == "VALID":
# rename project folder
+ updatedProjectFiles = []
+
updatedProjectPath = newBaseFileName.join(
projectPath.rsplit(self.baseFileName, 1))
print("Renaming " + projectPath + " to " +
updatedProjectPath)
- os.rename(projectPath, updatedProjectPath)
+
+ # rename project folder
+ try:
+ os.rename(projectPath, updatedProjectPath)
+ except BaseException as e:
+ msg = QtGui.QErrorMessage(self)
+ msg.setModal(True)
+ msg.setWindowTitle("Error Message")
+ msg.showMessage(str(e))
+ msg.exec_()
+ return
# rename files matching project name
- for projectFile in projectFiles:
- if self.baseFileName in projectFile:
- oldFilePath = os.path.join(updatedProjectPath,
- projectFile)
- projectFile = projectFile.replace(
- self.baseFileName, newBaseFileName, 1)
+ try:
+ for projectFile in projectFiles:
+ if self.baseFileName in projectFile:
+ oldFilePath = os.path.join(updatedProjectPath,
+ projectFile)
+ projectFile = projectFile.replace(
+ self.baseFileName, newBaseFileName, 1)
+ newFilePath = os.path.join(
+ updatedProjectPath, projectFile)
+ print("Renaming " + oldFilePath + " to " +
+ newFilePath)
+ os.rename(oldFilePath, newFilePath)
+ updatedProjectFiles.append(projectFile)
+
+ except BaseException as e:
+ print("==================")
+ print("Error! Revert renaming project")
+
+ # Revert updatedProjectFiles
+ for projectFile in updatedProjectFiles:
newFilePath = os.path.join(
- updatedProjectPath, projectFile)
- print("Renaming " + oldFilePath + " to" +
- newFilePath)
- os.rename(oldFilePath, newFilePath)
- updatedProjectFiles.append(projectFile)
+ updatedProjectPath, projectFile)
+ projectFile = projectFile.replace(
+ newBaseFileName, self.baseFileName, 1)
+ oldFilePath = os.path.join(
+ updatedProjectPath, projectFile)
+ os.rename(newFilePath, oldFilePath)
+
+ # Revert project folder name
+ os.rename(updatedProjectPath, projectPath)
+ print("==================")
+ msg = QtGui.QErrorMessage(self)
+ msg.setModal(True)
+ msg.setWindowTitle("Error Message")
+ msg.showMessage(str(e))
+ msg.exec_()
+ return
# update project_explorer dictionary
del self.obj_appconfig.project_explorer[projectPath]