23 |
23 |
24 class UserProjectFile(QObject): |
24 class UserProjectFile(QObject): |
25 """ |
25 """ |
26 Class representing the user project JSON file. |
26 Class representing the user project JSON file. |
27 """ |
27 """ |
|
28 |
28 def __init__(self, project: Project, parent: QObject = None): |
29 def __init__(self, project: Project, parent: QObject = None): |
29 """ |
30 """ |
30 Constructor |
31 Constructor |
31 |
32 |
32 @param project reference to the project object |
33 @param project reference to the project object |
33 @type Project |
34 @type Project |
34 @param parent reference to the parent object (defaults to None) |
35 @param parent reference to the parent object (defaults to None) |
35 @type QObject (optional) |
36 @type QObject (optional) |
36 """ |
37 """ |
37 super().__init__(parent) |
38 super().__init__(parent) |
38 self.__project = project |
39 self.__project = project |
39 |
40 |
40 def writeFile(self, filename: str) -> bool: |
41 def writeFile(self, filename: str) -> bool: |
41 """ |
42 """ |
42 Public method to write the user project data to a user project |
43 Public method to write the user project data to a user project |
43 JSON file. |
44 JSON file. |
44 |
45 |
45 @param filename name of the user project file |
46 @param filename name of the user project file |
46 @type str |
47 @type str |
47 @return flag indicating a successful write |
48 @return flag indicating a successful write |
48 @rtype bool |
49 @rtype bool |
49 """ |
50 """ |
50 userProjectDict = {} |
51 userProjectDict = {} |
51 userProjectDict["header"] = { |
52 userProjectDict["header"] = { |
52 "comment": "eric user project file for project {0}".format( |
53 "comment": "eric user project file for project {0}".format( |
53 self.__project.getProjectName()), |
54 self.__project.getProjectName() |
|
55 ), |
54 } |
56 } |
55 |
57 |
56 if Preferences.getProject("TimestampFile"): |
58 if Preferences.getProject("TimestampFile"): |
57 userProjectDict["header"]["saved"] = ( |
59 userProjectDict["header"]["saved"] = time.strftime("%Y-%m-%d, %H:%M:%S") |
58 time.strftime('%Y-%m-%d, %H:%M:%S') |
60 |
59 ) |
|
60 |
|
61 userProjectDict["user_data"] = self.__project.pudata |
61 userProjectDict["user_data"] = self.__project.pudata |
62 |
62 |
63 try: |
63 try: |
64 jsonString = json.dumps(userProjectDict, indent=2) |
64 jsonString = json.dumps(userProjectDict, indent=2) |
65 with open(filename, "w") as f: |
65 with open(filename, "w") as f: |
66 f.write(jsonString) |
66 f.write(jsonString) |
67 except (TypeError, OSError) as err: |
67 except (TypeError, OSError) as err: |
71 self.tr("Save User Project Properties"), |
71 self.tr("Save User Project Properties"), |
72 self.tr( |
72 self.tr( |
73 "<p>The user specific project properties file" |
73 "<p>The user specific project properties file" |
74 " <b>{0}</b> could not be written.</p>" |
74 " <b>{0}</b> could not be written.</p>" |
75 "<p>Reason: {1}</p>" |
75 "<p>Reason: {1}</p>" |
76 ).format(filename, str(err)) |
76 ).format(filename, str(err)), |
77 ) |
77 ) |
78 return False |
78 return False |
79 |
79 |
80 return True |
80 return True |
81 |
81 |
82 def readFile(self, filename: str) -> bool: |
82 def readFile(self, filename: str) -> bool: |
83 """ |
83 """ |
84 Public method to read the user project data from a user project |
84 Public method to read the user project data from a user project |
85 JSON file. |
85 JSON file. |
86 |
86 |
87 @param filename name of the project file |
87 @param filename name of the project file |
88 @type str |
88 @type str |
89 @return flag indicating a successful read |
89 @return flag indicating a successful read |
90 @rtype bool |
90 @rtype bool |
91 """ |
91 """ |
98 None, |
98 None, |
99 self.tr("Read User Project Properties"), |
99 self.tr("Read User Project Properties"), |
100 self.tr( |
100 self.tr( |
101 "<p>The user specific project properties file <b>{0}</b>" |
101 "<p>The user specific project properties file <b>{0}</b>" |
102 " could not be read.</p><p>Reason: {1}</p>" |
102 " could not be read.</p><p>Reason: {1}</p>" |
103 ).format(filename, str(err)) |
103 ).format(filename, str(err)), |
104 ) |
104 ) |
105 return False |
105 return False |
106 |
106 |
107 self.__project.pudata = userProjectDict["user_data"] |
107 self.__project.pudata = userProjectDict["user_data"] |
108 |
108 |
109 return True |
109 return True |