# =========================================================================
# FILE: openProject.py
#
# USAGE: ---
#
# DESCRIPTION: It is called whenever new project is being called.
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Fahim Khan, fahim.elex@gmail.com
# MODIFIED: Rahul Paknikar, rahulp@iitb.ac.in
# ORGANIZATION: eSim Team at FOSSEE, IIT Bombay
# CREATED: Wednesday 12 February 2015
# REVISION: Sunday 26 July 2020
# =========================================================================
from PyQt5 import QtWidgets
from .Validation import Validation
from configuration.Appconfig import Appconfig
import os
import json
class OpenProjectInfo(QtWidgets.QWidget):
"""
This class is called when User click on Open Project Button
"""
def __init__(self):
super(OpenProjectInfo, self).__init__()
self.obj_validation = Validation()
def body(self):
"""
Open a project directory using Qt GUI and validate
if .proj file present in it using `Validation` class
@params
@return
:dirs => The directories inside the project folder
:filelist => The files inside the project folder
"""
self.obj_Appconfig = Appconfig()
self.openDir = self.obj_Appconfig.default_workspace["workspace"]
self.projDir = QtWidgets.QFileDialog.getExistingDirectory(
self, "open", self.openDir)
if self.obj_validation.validateOpenproj(self.projDir):
self.obj_Appconfig.current_project['ProjectName'] = str(
self.projDir)
if os.path.isdir(self.projDir):
print("True")
for dirs, subdirs, filelist in os.walk(
self.obj_Appconfig.current_project["ProjectName"]):
# directory = dirs
# files = filelist
# above 'directory' and 'files' variable never used
pass
self.obj_Appconfig.project_explorer[dirs] = filelist
json.dump(
self.obj_Appconfig.project_explorer, open(
self.obj_Appconfig.dictPath["path"], 'w'))
self.obj_Appconfig.print_info('Open Project called')
self.obj_Appconfig.print_info('Current Project is ' + self.projDir)
return dirs, filelist
else:
self.obj_Appconfig.print_error(
"The project doesn't contain .proj file. Please select the " +
"proper directory else you won't be able to perform any " +
"operation"
)
reply = QtWidgets.QMessageBox.critical(
None, "Error Message",
"Error: The project doesn't contain .proj file.
"
"Please select the proper project directory else you won't"
" be able to perform any operation",
QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel
)
if reply == QtWidgets.QMessageBox.Ok:
self.body()
self.obj_Appconfig.print_info('Open Project called')
self.obj_Appconfig.print_info(
'Current Project is ' + self.projDir)
elif reply == QtWidgets.QMessageBox.Cancel:
self.obj_Appconfig.print_info('No Project opened')