feat: Advanced PyQt5 GUI Integration with Dynamic Sorting#2966
Open
elilef wants to merge 15 commits into
Open
Conversation
This project was set up and tested locally by Berre for the SWE Spring 2026 project.
…I tracking This commit updates the inner iteration loop in sherlock.py to trigger an optional callback function upon completing each site check. This allows the PyQt5 GUI to update its progress bar synchronously without breaking the traditional CLI execution mode.
…fix parameter scope This ensures compatibility with the core sherlock engine by properly inheriting the notification base class and adding optional parameters to prevent runtime TypeErrors.
This commit resolves a visual bug where the progress bar would not fully complete if certain target sites were skipped by the core engine's regex checks. The search_finished method now explicitly sets the progress bar to its maximum value upon receiving the completion signal.
Implemented to_dict() and get_ui_color_code() methods to safely export query results as structured dictionaries with status-based hex color codes for the PyQt5 interface. This reduces frontend parsing logic and satisfies the existing file contribution requirement.
Updated QueryNotifyGUI to utilize the to_dict() method for extracting hex color codes. Modified the PyQt5 result_signal and add_result_to_table functions to parse these color codes and dynamically paint the table rows (Green for Found, Red for Not Found).
Introduced 3 summary cards (Scanned, Found, Not Found) to track live search progress. Implemented real-time counter updates inside add_result_to_table and integrated state-resetting logic within start_search to clear counters on sequential queries.
Resolved a UI glitch where the QWidget container's default background and the underlying QTableWidgetItem text were the viibly protruding behind the custom rounded QLabel badges.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
---Description
This Pull Request introduces a fully functional PyQt5 desktop interface for Sherlock, resolving the previous terminal dependency for visual monitoring. It connects the core search engine (
sherlock.py) asynchronously to the GUI usingQThreadandpyqtSignalvia a custom notifier innotify.py.---Changes Made
gui_app.pycontaining the main PyQt5 UI dashboard.QueryNotifyGUIinnotify.pyto stream real-time results.add_result_to_table) that automatically pins successful hits (Found) to the top and sorts all results alphabetically (A-Z).row_idxruntime exception during rendering.---Testing
Tested locally on macOS. The interface runs smoothly, populates rows dynamically without blocking the main thread, and maintains correct item positioning.