Skip to content

Migration to PyQt6#20

Merged
fortharris merged 37 commits into
masterfrom
pyside
Jun 6, 2026
Merged

Migration to PyQt6#20
fortharris merged 37 commits into
masterfrom
pyside

Conversation

@fortharris

Copy link
Copy Markdown
Owner

Migration to PyQt6

fortharris and others added 30 commits June 4, 2026 14:42
Replaced PyQt4 imports with Extensions.qt_bindings for consistency. Updated screen geometry retrieval in Pcode, WritePad, and About classes. Changed margin settings to contentsMargins for better layout management. Updated dialog execution methods to use exec() instead of exec_() for compatibility with newer Qt versions.
Replaced PyQt4 imports with Extensions.qt_bindings for consistency across the codebase. Updated margin settings to use contentsMargins for improved layout management. Changed dialog execution methods to use exec() instead of exec_() for compatibility with newer Qt versions. This enhances the overall maintainability and performance of the UI components.
Migrate the codebase from PyQt4 to PyQt6 via the qt_bindings compatibility
layer (enum flattening, signal/slot, QScintilla scoped enums, dialog/return
value shims) and fix Python 3.11 issues in vendored libs (cx_Freeze opcodes,
autopep8/pep8 getargspec, re.LOCALE).

Add scripts/exercise_editor.py, a headless (offscreen) smoke test that
exercises project create/load, editor, run/output, completion, find/replace,
find-in-files, settings, library, project view, rope rename, snippets, and
export. Wire it into GitHub Actions (.github/workflows/smoke.yml).

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Tokenize StyleSheet into Light/Dark palettes and add a Theme
(Light/Dark/System) setting with live switching plus a matching QPalette so
native surfaces follow the theme. Drop blurry PNG sub-control arrows/close
icons so Qt draws crisp, HiDPI-friendly native ones.

Add a Ctrl+Shift+P command palette (fuzzy filter, keyboard nav) exposing
project/navigation/theme/about commands. Polish the top bar with an app
logo + title and button tooltips. Start screen now uses a cross-platform
fixed font, an empty-state for recent projects, and theme-aware colors.

Fix the project-tree selection row-jump (drop font resize) and replace the
red menu hover with the accent color. Extend the headless smoke test with
command-palette and theme guards.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…nfig

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…lier

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…dling

- Added a method to retrieve the active project window in Pcode.
- Enhanced command building to include project-specific actions based on the active window.
- Refactored settings access in various extensions to utilize a new boolean utility function for improved readability and consistency.
- Updated GitPanel integration in the EditorWindow for better version control support.
- Introduced debug capabilities in the RunWidget for enhanced debugging experience.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate editor session to JSON via SessionData, finish bool setting reads across
editors, rename venv package to Pvenv, expand command palette and git panel,
add debugpy wait-for-client, fix snippet drag-drop, and add regression tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
Persist splitter geometry to Data/windata.json, add bootstrap_bool helper,
migrate CommandPalette and Notification to direct PyQt6 imports, and
install pytest-timeout in CI workflows.

Co-authored-by: Cursor <cursoragent@cursor.com>
Smoke tests pass (28 steps). Migrated StackSwitcher, BookmarkWidget,
BusyWidget, ViewSwitcher, ZoomWidget, GotoLineWidget, and Messages to
direct PyQt6 imports; auto-fixed 15 unused imports; restored QtXml in
qt_bindings for legacy XML migration paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
New projects write project.json and projectdata.json; session restore is extracted; git panel, command palette, and assistant checks are improved with regression tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
…tes.

Direct PyQt6 on Pcode, EditorWindow, FindInFiles, FileExplorer, and NewProjectDialog; JSON-only window layout; session/tab_io helpers; git and debug UX; F841 linting; CI freeze job on workflow_dispatch.

Co-authored-by: Cursor <cursoragent@cursor.com>
Rope profiles persist as profile.json with XML mirror; EditorTabWidget delegates file open to tab_io; WritePad, About, EditorSplitter, VerticalSplitter, and BuildStatusWidget use direct PyQt6.

Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize cx_Freeze profile I/O in BuildProfile, extract EditorTabBar, and migrate Outline, Tasks, MiniMap, and Diff to direct PyQt6 imports.

Co-authored-by: Cursor <cursoragent@cursor.com>
fortharris and others added 7 commits June 5, 2026 16:34
Migrate editor tab bar, snapshots, tab_io, build UI, project manager dialogs, profiler, and progress widget off qt_bindings.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate error/pep8 assistant, run console, and rope refactor UI off qt_bindings.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate editor core and settings/color-scheme modules off qt_bindings with QtPrintSupport and QDomDocument fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Finishes the project-manager and library stack migration so qt_bindings is only needed for font_metrics_width and the smoke harness.

Co-authored-by: Cursor <cursoragent@cursor.com>
Extract font_metrics and file_dialog_utils, fix enum/import issues exposed without the shim, and add test_no_shim_import guard.

Co-authored-by: Cursor <cursoragent@cursor.com>
Delete the compat shim, archive peel scripts, fix remaining PyQt6 enum issues exposed without it, and save project persistence as JSON only.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fortharris fortharris merged commit a71539e into master Jun 6, 2026
4 of 8 checks passed
@fortharris fortharris deleted the pyside branch June 6, 2026 06:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant