ViewVC Help
View Directory | Revision Log | View Changeset | Root Listing
root/ns_dev/Python/NinoCode
r994
File (rev) Last Change
 ../
Tool_Box/ 959 (3 months ago) by nino.borges: A library that I continue to refine to gather a schema from Relativity XML data.
RandomCodeRequests/ 742 (4 years ago) by nino.borges: added some missing code request txt files
Active_prgs/ 994 (13 days ago) by nino.borges: Commit 1 Initial commit: Initial commit - MusicDriveSync MusicDriveSync is a wxPython desktop application for managing music on car thumb drives. The user maintains a large FLAC library on a NAS, organized as Artist/Album/Tracks. Rather than physically inserting drives to update them, each thumb drive has a corresponding folder on the NAS. The app lets the user browse the NAS library, see which tracks are already on a given drive (highlighted green), copy missing tracks to the drive folder, and remove tracks from it. Syncing to the physical drive is done separately via rsync. This initial commit includes a working application with the following: - config.py: reads and validates musicdrivesync.ini - MusicDriveSync_Lib.py: NAS library scanning with cache, drive folder scanning with progress callback, comparison index, copy and remove stubs - panels/LibraryPanel.py: wx.TreeCtrl-based library tree with green highlighting for tracks present on the active drive, Show Missing Only filter, and Copy Selected button - panels/DrivePanel.py: wx.TreeCtrl-based drive folder tree with Remove Selected button and confirmation dialog - main.py: top-level frame wiring drive selector, both panels, status bar progress during library and drive scans, path accessibility checks on startup --- Commit 2 Changelog and CLAUDE.md: Add changelog system, fix CLAUDE.md conflicts, and apply session bug fixes Introduces a changelog/ folder to track bugs, architectural decisions, and lessons learned across the life of the project. - changelog/CHANGELOG_INDEX.md: master index table for all entries - changelog/00001_arch.md: DataViewTreeCtrl to wx.TreeCtrl migration - changelog/00002_bug.md: missing drive scan progress feedback fix - changelog/00003_arch.md: library panel color logic reversal - CLAUDE.md: corrected two conflicts with the current codebase: color coding description updated (green = on drive, normal = needs copying); DataViewCtrl note replaced with TreeCtrl decision with pointer to changelog; UI layout diagram corrected; changelog folder added to project structure - panels/DrivePanel.py: converted from DataViewTreeCtrl to wx.TreeCtrl - MusicDriveSync_Lib.py: added progress_callback to ScanDriveFolder() - main.py: wired drive scan progress to status bar; added path accessibility checks at startup --- Commit 3 Fix Remove Selected: Fix Remove Selected, add safety guard, and document NAS read-only rule - Fixed "No tracks selected" on Remove and Copy buttons. Both panels were using TreeItemId.GetID() as a dict key which is unreliable across the wx layer. Replaced with wx.TreeCtrl's native SetItemData/GetItemData. The separate _item_data dict was removed from both panels entirely. See changelog/00004_bug.md. - Fixed 5-minute UI freeze after removing tracks. OnRemoveTracks was calling ScanDriveFolder() on the UI thread after every remove. Replaced with an in-memory filter of _drive_tracks using the list of removed relative paths. - Silent remove failures now surface as a warning dialog. - Added path prefix guard to RemoveTracksFromDrive(). Any file whose path does not begin with drive_path is unconditionally skipped. - Added Absolute Rules section to CLAUDE.md: the NAS music library is strictly read-only. The app may never delete or modify files there. - changelog/00004_bug.md: documents the SetItemData fix and lessons learned. --- Commit 4 Copy and Tools menu: Implement CopyTracksToDrive, add Tools menu with Empty Folder Report CopyTracksToDrive (MusicDriveSync_Lib.py): - Copies files preserving full folder structure relative to music_library_path (e.g. Compilations/Album/track.flac mirrors exactly on the drive folder) - Uses shutil.copy2 to preserve file timestamps and metadata - Skips files that already exist at the destination - Accepts a progress_callback(done, total) for status bar updates OnCopyTracks / _on_copy_complete (main.py): - Copy now runs in a background thread, no UI freeze for large selections - Status bar updates as each file is copied (e.g. "Copying to Taco... 3/12") - After completion, newly copied files are added to _drive_tracks in memory by reading their tags directly, no full rescan needed - Both panels disabled during copy and re-enabled on completion Tools menu (main.py): - Added Tools menu to the right of File in the menu bar - Empty Folder Report: scans the active drive folder and lists all subdirectories that contain no FLAC files (may still contain jpg/png etc.) - Results shown relative to drive root for readability - EmptyFolderReportDialog class added to main.py FindFoldersWithoutFlac (MusicDriveSync_Lib.py): - Two-pass walk: marks all dirs containing FLACs and their ancestors, then collects highest-level dirs with no FLACs using topdown pruning
TenthCounter.exe 652 (6 years ago) by nino.borges: compiled version of program that counts in tenths
3 directories and 1 file shown