| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
make persister json format | 1 年前 | |
session file composer | 3 个月前 | |
fix: store the window's own filter in Session Files, not the global list A Session File used to save a copy of the whole global filter list (Settings.FilterList) as its FilterParamsList, while load only ever restored [0]. Sessions were therefore not self-contained: what an .lxp "remembered" as its filter was whatever the global list happened to hold at save time, and the window's actual filter was restored only if it happened to be that list's first entry. The copy was shallow too, so the pre-save IsFilterTail write aliased into the shared global entry. The snapshot now carries the window's own _filterParams. The on-disk shape is unchanged - FilterParamsList stays a list, holding exactly one entry - and load still reads [0], so existing Session Files (JSON and legacy XML alike) keep loading exactly as before; their trailing entries, which nothing ever restored, are dropped on the next save. Adds Window Filter / Saved Filter List to the glossary, since the change turns on exactly that distinction. Closes #666 | 2 个月前 | |
removed old interface namesapce | 7 个月前 | |
update interfaces and a few more smaller fixes | 7 个月前 | |
fix: degrade malformed legacy XML Session Files instead of throwing A legacy XML .lxp whose <file> element has no <options> child threw NullReferenceException out of PersisterXML.ReadOptions. Persister.Load calls the XML reader from inside its JSON catch block, so the NRE replaced the original exception and propagated up the synchronous file-open path, where nothing handles it. ReadOptions now skips the options section when it is absent, leaving those settings at their PersistenceData defaults. The tab, columnizer and highlightGroup elements are siblings of <options>, not children, so they moved out of the guarded region and are still read — an early return would have cost the user their columnizer for a file that merely lacks options. The body that does need the node moved to ReadOptionsNode. ReadPersistenceDataFromNode now honours its own documented contract and returns defaults for a node that is not an element, which is what a comment among the filterTab children produces. PersisterXML.Load is documented to return null on unparseable input, but only caught malformed markup. This is a read-only fallback for a format LogExpert no longer writes, and its readers assume a well-formed document, so the catch now also covers the exceptions malformed *content* raises: FormatException, OverflowException, ArgumentException and NullReferenceException. Each is pinned by a test case. Closes #680 | 2 个月前 | |
Rename Project -> Session across code, resources, and locales Aligns code and resource names with the canonical terminology: .lxj = Session (persisted workspace) and .lxp = Session File (per-file state). The code and resource keys still used the legacy "Project" wording. Renamed: - Types: ProjectFileHandler/IProjectFileHandler -> SessionHandler/ ISessionHandler, ProjectData -> SessionData, ProjectPersister -> SessionPersister, ProjectLoadOutcome/Result/ValidationResult/ DlgResult -> Session*, ProjectFileResolver/Validator -> SessionFile*, ProjectLoadDlg -> SessionLoadDlg - Methods: LoadProject/SaveProject -> LoadSession/SaveSession, LoadProjectData -> LoadSessionData, ResolveProjectFiles -> ResolveSessionFiles, ValidateProject -> ValidateSession, OnLoadProjectToolStripMenuItemClick -> OnLoadSessionTool... - Properties/fields: ProjectFilePath -> SessionFilePath, _projectFileHandler -> _sessionHandler, _projectFileCallback -> _loadSessionCallback - Resource keys: LoadProject_UI_* -> LoadSession_UI_*, LogTabWindow_UI_Project_Session_Default_Filter -> LogTabWindow_UI_Session_Default_Filter, loadProjectToolStripMenuItem -> loadSessionToolStripMenuItem - Resource values updated in en/de/zh-CN: "Project Load Failed" / "Error loading project file" replaced; merged with existing SessionLoadFailed key (was a near-duplicate) Backward compatibility: - Existing .lxj files on disk continue to load: SessionData has [JsonProperty("ProjectFilePath")] pinning the JSON key, and the field is also re-set from the file path on load so even files without this key resolve correctly. - Behavior unchanged - no runtime semantics affected. | 4 个月前 | |
fix: store the window's own filter in Session Files, not the global list A Session File used to save a copy of the whole global filter list (Settings.FilterList) as its FilterParamsList, while load only ever restored [0]. Sessions were therefore not self-contained: what an .lxp "remembered" as its filter was whatever the global list happened to hold at save time, and the window's actual filter was restored only if it happened to be that list's first entry. The copy was shallow too, so the pre-save IsFilterTail write aliased into the shared global entry. The snapshot now carries the window's own _filterParams. The on-disk shape is unchanged - FilterParamsList stays a list, holding exactly one entry - and load still reads [0], so existing Session Files (JSON and legacy XML alike) keep loading exactly as before; their trailing entries, which nothing ever restored, are dropped on the next save. Adds Window Filter / Saved Filter List to the glossary, since the change turns on exactly that distinction. Closes #666 | 2 个月前 | |
fix: recover Session file list from the tab layout XML (#694) v1.42.0 saved Sessions (.lxj) with an empty FileNames list: the save path enumerated DockPanelSuite's DisplayingContents with LINQ/foreach, whose enumerator walks an empty backing list (only Count and the indexer expose the displayed tabs). Loading such a Session failed with 'None of the files in this session could be found'. The enumeration itself is already fixed on Development (5c3d5c90), so newly saved Sessions are correct again. This makes the Sessions written by v1.42.0 loadable: the DockPanel layout XML in them still names every log window (PersistString="LogWindow#<path>"), so when a loaded Session has no file list, recover the paths from the layout before resolving and validating. | 1 个月前 | |
bugfixes and updates to unit tests | 4 个月前 | |
Rename Project -> Session across code, resources, and locales Aligns code and resource names with the canonical terminology: .lxj = Session (persisted workspace) and .lxp = Session File (per-file state). The code and resource keys still used the legacy "Project" wording. Renamed: - Types: ProjectFileHandler/IProjectFileHandler -> SessionHandler/ ISessionHandler, ProjectData -> SessionData, ProjectPersister -> SessionPersister, ProjectLoadOutcome/Result/ValidationResult/ DlgResult -> Session*, ProjectFileResolver/Validator -> SessionFile*, ProjectLoadDlg -> SessionLoadDlg - Methods: LoadProject/SaveProject -> LoadSession/SaveSession, LoadProjectData -> LoadSessionData, ResolveProjectFiles -> ResolveSessionFiles, ValidateProject -> ValidateSession, OnLoadProjectToolStripMenuItemClick -> OnLoadSessionTool... - Properties/fields: ProjectFilePath -> SessionFilePath, _projectFileHandler -> _sessionHandler, _projectFileCallback -> _loadSessionCallback - Resource keys: LoadProject_UI_* -> LoadSession_UI_*, LogTabWindow_UI_Project_Session_Default_Filter -> LogTabWindow_UI_Session_Default_Filter, loadProjectToolStripMenuItem -> loadSessionToolStripMenuItem - Resource values updated in en/de/zh-CN: "Project Load Failed" / "Error loading project file" replaced; merged with existing SessionLoadFailed key (was a near-duplicate) Backward compatibility: - Existing .lxj files on disk continue to load: SessionData has [JsonProperty("ProjectFilePath")] pinning the JSON key, and the field is also re-set from the file path on load so even files without this key resolve correctly. - Behavior unchanged - no runtime semantics affected. | 4 个月前 | |
fix: recover Session file list from the tab layout XML (#694) v1.42.0 saved Sessions (.lxj) with an empty FileNames list: the save path enumerated DockPanelSuite's DisplayingContents with LINQ/foreach, whose enumerator walks an empty backing list (only Count and the indexer expose the displayed tabs). Loading such a Session failed with 'None of the files in this session could be found'. The enumeration itself is already fixed on Development (5c3d5c90), so newly saved Sessions are correct again. This makes the Sessions written by v1.42.0 loadable: the DockPanel layout XML in them still names every log window (PersistString="LogWindow#<path>"), so when a loaded Session has no file list, recover the paths from the layout before resolving and validating. | 1 个月前 | |
Rename Project -> Session across code, resources, and locales Aligns code and resource names with the canonical terminology: .lxj = Session (persisted workspace) and .lxp = Session File (per-file state). The code and resource keys still used the legacy "Project" wording. Renamed: - Types: ProjectFileHandler/IProjectFileHandler -> SessionHandler/ ISessionHandler, ProjectData -> SessionData, ProjectPersister -> SessionPersister, ProjectLoadOutcome/Result/ValidationResult/ DlgResult -> Session*, ProjectFileResolver/Validator -> SessionFile*, ProjectLoadDlg -> SessionLoadDlg - Methods: LoadProject/SaveProject -> LoadSession/SaveSession, LoadProjectData -> LoadSessionData, ResolveProjectFiles -> ResolveSessionFiles, ValidateProject -> ValidateSession, OnLoadProjectToolStripMenuItemClick -> OnLoadSessionTool... - Properties/fields: ProjectFilePath -> SessionFilePath, _projectFileHandler -> _sessionHandler, _projectFileCallback -> _loadSessionCallback - Resource keys: LoadProject_UI_* -> LoadSession_UI_*, LogTabWindow_UI_Project_Session_Default_Filter -> LogTabWindow_UI_Session_Default_Filter, loadProjectToolStripMenuItem -> loadSessionToolStripMenuItem - Resource values updated in en/de/zh-CN: "Project Load Failed" / "Error loading project file" replaced; merged with existing SessionLoadFailed key (was a near-duplicate) Backward compatibility: - Existing .lxj files on disk continue to load: SessionData has [JsonProperty("ProjectFilePath")] pinning the JSON key, and the field is also re-set from the file path on load so even files without this key resolve correctly. - Behavior unchanged - no runtime semantics affected. | 4 个月前 | |
fix: store the window's own filter in Session Files, not the global list A Session File used to save a copy of the whole global filter list (Settings.FilterList) as its FilterParamsList, while load only ever restored [0]. Sessions were therefore not self-contained: what an .lxp "remembered" as its filter was whatever the global list happened to hold at save time, and the window's actual filter was restored only if it happened to be that list's first entry. The copy was shallow too, so the pre-save IsFilterTail write aliased into the shared global entry. The snapshot now carries the window's own _filterParams. The on-disk shape is unchanged - FilterParamsList stays a list, holding exactly one entry - and load still reads [0], so existing Session Files (JSON and legacy XML alike) keep loading exactly as before; their trailing entries, which nothing ever restored, are dropped on the next save. Adds Window Filter / Saved Filter List to the glossary, since the change turns on exactly that distinction. Closes #666 | 2 个月前 | |
Rename Project -> Session across code, resources, and locales Aligns code and resource names with the canonical terminology: .lxj = Session (persisted workspace) and .lxp = Session File (per-file state). The code and resource keys still used the legacy "Project" wording. Renamed: - Types: ProjectFileHandler/IProjectFileHandler -> SessionHandler/ ISessionHandler, ProjectData -> SessionData, ProjectPersister -> SessionPersister, ProjectLoadOutcome/Result/ValidationResult/ DlgResult -> Session*, ProjectFileResolver/Validator -> SessionFile*, ProjectLoadDlg -> SessionLoadDlg - Methods: LoadProject/SaveProject -> LoadSession/SaveSession, LoadProjectData -> LoadSessionData, ResolveProjectFiles -> ResolveSessionFiles, ValidateProject -> ValidateSession, OnLoadProjectToolStripMenuItemClick -> OnLoadSessionTool... - Properties/fields: ProjectFilePath -> SessionFilePath, _projectFileHandler -> _sessionHandler, _projectFileCallback -> _loadSessionCallback - Resource keys: LoadProject_UI_* -> LoadSession_UI_*, LogTabWindow_UI_Project_Session_Default_Filter -> LogTabWindow_UI_Session_Default_Filter, loadProjectToolStripMenuItem -> loadSessionToolStripMenuItem - Resource values updated in en/de/zh-CN: "Project Load Failed" / "Error loading project file" replaced; merged with existing SessionLoadFailed key (was a near-duplicate) Backward compatibility: - Existing .lxj files on disk continue to load: SessionData has [JsonProperty("ProjectFilePath")] pinning the JSON key, and the field is also re-set from the file path on load so even files without this key resolve correctly. - Behavior unchanged - no runtime semantics affected. | 4 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 4 个月前 |