{"id":27648177,"url":"https://github.com/avaxerrr/qss-toolkit","last_synced_at":"2026-04-13T21:31:37.051Z","repository":{"id":289519308,"uuid":"971489444","full_name":"Avaxerrr/QSS-Toolkit","owner":"Avaxerrr","description":"QSS Toolkit is a comprehensive plugin that transforms PyCharm and other IntelliJ-based IDEs into fully-featured Qt Style Sheet editors. It fills a critical gap in the PyCharm ecosystem by providing specialized tools for QSS development that were previously only available in external editors.","archived":false,"fork":false,"pushed_at":"2025-04-23T18:58:51.000Z","size":166,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-24T02:40:40.434Z","etag":null,"topics":["extension","ide","jetbrains","pycharm","pycharm-plugin","pyqt","pyside6","qss","qss-files","qt"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Avaxerrr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-23T15:44:27.000Z","updated_at":"2025-04-23T18:43:02.000Z","dependencies_parsed_at":"2025-04-23T18:34:27.080Z","dependency_job_id":"3e8af148-1f96-43d9-957f-15e0bf75c1ea","html_url":"https://github.com/Avaxerrr/QSS-Toolkit","commit_stats":null,"previous_names":["avaxerrr/qss-toolkit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Avaxerrr/QSS-Toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avaxerrr%2FQSS-Toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avaxerrr%2FQSS-Toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avaxerrr%2FQSS-Toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avaxerrr%2FQSS-Toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Avaxerrr","download_url":"https://codeload.github.com/Avaxerrr/QSS-Toolkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Avaxerrr%2FQSS-Toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018121,"owners_count":26086280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["extension","ide","jetbrains","pycharm","pycharm-plugin","pyqt","pyside6","qss","qss-files","qt"],"created_at":"2025-04-24T02:33:57.183Z","updated_at":"2026-04-13T21:31:37.038Z","avatar_url":"https://github.com/Avaxerrr.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QSS Toolkit\n\n\u003cdiv align=\"center\"\u003e\n\n**Professional Qt Style Sheet (QSS) editing for all JetBrains IDEs**\n\n[![Version](https://img.shields.io/badge/version-2.0.1-blue.svg)](https://github.com/avaxerrr/qss-toolkit/releases)\n[![JetBrains Plugin](https://img.shields.io/badge/JetBrains-Plugin-orange.svg)](https://plugins.jetbrains.com/)\n[![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE.md)\n\n*Works in CLion, PyCharm, IntelliJ IDEA, WebStorm, Rider, and all other IntelliJ Platform IDEs*\n\n\u003c/div\u003e\n\n---\n\n## Why QSS Toolkit?\n\nStop switching between your IDE and external editors when styling Qt applications. QSS Toolkit brings **professional Qt Style Sheet support** directly into your JetBrains IDE with intelligent completion, real-time validation, and visual color tools.\n\n\u003cimg width=\"2559\" height=\"1439\" alt=\"Screenshot 2025-12-26 211437\" src=\"https://github.com/user-attachments/assets/7f580ce9-3a24-46cc-b368-74d240507285\"/\u003e\n\n---\n\n## What's New in Version 2.0\n\n### Robust Error Detection\n- **Real-time validation** catches typos like `pading` or invalid values like `width: red` before you run your app\n- **Smart parser recovery** isolates syntax errors (missing braces) so the rest of your file stays error-free\n- **Type safety** validates measurements (px, pt), colors, and URLs to prevent silent failures\n- **Widget-aware validation** warns if you use `::handle` on a `QPushButton` (invalid) vs. `QScrollBar` (valid)\n\n### Visual Color Enhancements\n- **Background color highlighting** - See actual colors displayed as backgrounds (#FF0000 shows solid red)\n- **Contrast-aware text** - Text color automatically adjusts (black/white) using WCAG luminance standards for readability\n- **Alpha transparency support** - Preserves original transparency from `rgba()` and `#RRGGBBAA` formats\n- **Multiple color formats** - Full support for hex, RGB, and RGBA with format preservation when editing\n\n### Template \u0026 Dynamic Values\n- **First-class template support** for Jinja2/QString templates (e.g., `{{BUTTON_COLOR}}`)\n- Parser correctly handles variable tags without throwing syntax errors\n- Perfect for Python/C++ template engines\n\n### Enhanced Syntax Highlighting\n- **Semantic coloring** - Widgets (Teal), Properties (Blue), Keywords (Orange), Templates are visually distinct\n- **Theme compatibility** - Fixed invisible colors in dark themes using reliable color key mapping\n- **URL \u0026 gradient support** - Proper highlighting for `url(...)` paths and Qt gradient functions\n- **Improved tokenization** - Numbers with units and CSS keywords are now visually distinct\n\n---\n\n## Key Features\n\n### Complete Qt 6.10 Coverage\n- All **96 QSS properties** with Qt 5/6 backward compatibility\n- **50 styleable widgets** (QPushButton, QScrollBar, QComboBox, etc.)\n- **82 sub-controls** (`::handle`, `::indicator`, `::drop-down`, etc.)\n- **44 pseudo-states** (`:hover`, `:pressed`, `:checked`, `:disabled`, etc.)\n- **Intelligent chained syntax** support (`QScrollBar::handle:vertical:hover`)\n\n### Smart Context-Aware Completion\n- Widget-specific suggestions (scrollbars show `:horizontal`/`:vertical`, checkboxes show `:checked`/`:unchecked`)\n- Auto-popup triggers after `::` and `:` for effortless workflow\n- Property value suggestions (CSS units, colors, alignments, border styles)\n- Auto-inserts colons and spaces for faster typing\n\n### Advanced Color Tools\n- **Visual color picker** - Click gutter icons to edit colors with HSV/HSL/RGB panels\n- **Gutter previews** - Color swatches with borders for transparent colors\n- **Format preservation** - Maintains your chosen format (hex/RGB/RGBA) when editing\n- **Gradient recognition** - Support for `qlineargradient()`, `qradialgradient()`, `qconicalgradient()`\n- **Color palette manager** - Create reusable color schemes in dedicated tool window\n\n### Smart Editing Features\n- **Auto-close brackets \u0026 quotes** - Automatic insertion of closing characters\n- **Smart indentation** - Enter key creates properly formatted blocks\n- **Comment toggle** - Ctrl+/ (Cmd+/) support\n- **Bracket matching** - Visual highlighting of matching pairs\n- **Code folding** - Collapse complex rule blocks for better focus\n- **Structure navigation** - Hierarchical view of selectors and properties\n\n### Universal IDE Support\nWorks in **ALL** JetBrains IDEs with **NO** language-specific dependencies:\n\n| IDE | Use Case |\n|-----|----------|\n| **CLion** | C++ Qt development (no Python dependency!) |\n| **PyCharm** | Python Qt (PySide6, PyQt6, PySide2, PyQt5) |\n| **IntelliJ IDEA** | Java Qt (QtJambi) |\n| **WebStorm** | Qt for WebAssembly projects |\n| **Rider** | .NET Qt development |\n| **All Others** | Any IntelliJ Platform IDE (2024.1+) |\n\n---\n\n## Installation\n\n### From JetBrains Marketplace (Recommended)\n1. Open your JetBrains IDE (PyCharm, CLion, IntelliJ, etc.)\n2. Go to **Settings/Preferences → Plugins**\n3. Select the **Marketplace** tab\n4. Search for **\"QSS Toolkit\"**\n5. Click **Install**\n6. Restart your IDE when prompted\n\n### Manual Installation\n1. Download the latest `.zip` file from the [Releases page](https://github.com/avaxerrr/qss-toolkit/releases)\n2. Open your IDE → **Settings/Preferences → Plugins**\n3. Click the gear icon → **Install Plugin from Disk...**\n4. Select the downloaded `.zip` file\n5. Restart your IDE\n\n---\n\n## Usage Guide\n\n### Getting Started\n- Create or open any file with a `.qss` extension\n- **Zero configuration required** - All features work immediately!\n- Press **Ctrl+Space** for intelligent completion suggestions\n\n### Color Picker\n1. Look for color swatches in the gutter next to color values (e.g., `#FF5500`, `rgb(255, 85, 0)`)\n2. Click on a swatch to open the color picker dialog\n3. Select your desired color using visual picker or by entering values\n4. Click **OK** to automatically update the value in your code\n5. Format is preserved (hex stays hex, rgba stays rgba)\n\n### Color Palette Management\n1. Open **View → Tool Windows → QSS Colors**\n2. Click **\"Add Palette\"** to create a new color collection\n3. Click **\"Add Color\"** to choose colors from the picker\n4. **Right-click** on colors for copy options:\n   - Copy Hex Value\n   - Copy QSS Format (auto-converts to rgba if transparent)\n   - Copy as `color: ...;`\n   - Copy as `background-color: ...;`\n5. Double-click to quickly copy hex value to clipboard\n\n### Structure Navigation\n- Open **View → Tool Windows → Structure** (or **Alt+7**)\n- Browse hierarchical view of selectors and properties\n- Click any item to jump directly to that code\n\n### Smart Completion Examples\n```\nQScrollBar::      ← Auto-suggests: handle, add-line, sub-line, etc.\nQPushButton:      ← Auto-suggests: hover, pressed, disabled, etc.\nbackground-color: ← Auto-suggests: color names, rgb(), rgba(), hex\npadding: 10       ← Auto-suggests: px, pt, em, ex\n```\n\n### Real-Time Validation\nThe plugin catches errors as you type:\n- `pading: 10px;` → \"Unknown property 'pading'. Did you mean 'padding'?\"\n- `width: red;` → \"Invalid value type. Expected measurement with unit (px, pt)\"\n- `QPushButton::handle` → \"'::handle' is not valid for QPushButton. Valid for: QScrollBar, QSlider\"\n\n### Code Folding\n- Click \"-\" icons in gutter to collapse rule blocks\n- **Ctrl+Shift+NumPad-** to collapse all blocks\n- **Ctrl+NumPad+** to expand collapsed block\n\n---\n\n## Supported QSS Features\n\n### Properties (96 total)\nAll standard QSS properties including:\n- **Layout**: `margin`, `padding`, `spacing`, `width`, `height`\n- **Colors**: `color`, `background-color`, `border-color`, `selection-color`\n- **Borders**: `border`, `border-radius`, `border-style`, `border-width`\n- **Fonts**: `font-family`, `font-size`, `font-weight`, `letter-spacing`, `word-spacing`\n- **Advanced**: `opacity`, `outline`, `subcontrol-position`, `qproperty-*`\n\n### Widgets (50 total)\nIncluding: `QPushButton`, `QLabel`, `QLineEdit`, `QComboBox`, `QScrollBar`, `QCheckBox`, `QRadioButton`, `QSpinBox`, `QSlider`, `QProgressBar`, `QTabWidget`, `QTreeView`, `QTableView`, `QMenu`, `QMenuBar`, `QToolBar`, `QDockWidget`, and many more.\n\n### Sub-Controls (82 total)\n`::handle`, `::groove`, `::indicator`, `::drop-down`, `::down-arrow`, `::up-button`, `::item`, `::branch`, `::separator`, `::title`, `::close-button`, and more.\n\n### Pseudo-States (44 total)\n`:hover`, `:pressed`, `:checked`, `:unchecked`, `:disabled`, `:enabled`, `:focus`, `:selected`, `:on`, `:off`, `:open`, `:closed`, `:horizontal`, `:vertical`, and more.\n\n---\n\n## Contributing\n\nContributions are welcome! Please feel free to submit issues or pull requests.\n\n### Found a Bug?\nPlease open an issue with:\n- Your IDE version (e.g., PyCharm 2024.3, CLion 2025.1)\n- Plugin version\n- Steps to reproduce\n- Sample QSS code (if applicable)\n\n---\n\n## License\n\nThis project is licensed under the **Apache License 2.0** - see the [LICENSE](LICENSE.md) file for details.\n\n---\n\n## Contact\n\n- **GitHub**: [https://github.com/avaxerrr](https://github.com/avaxerrr)\n- **Email**: [zonemaxq@gmail.com](mailto:zonemaxq@gmail.com)\n- **Issues**: [GitHub Issues](https://github.com/avaxerrr/qss-toolkit/issues)\n\n---\n\n## Acknowledgments\n\n- Built with the [IntelliJ Platform SDK](https://plugins.jetbrains.com/docs/intellij/)\n- Inspired by the Qt community's need for better IDE tooling\n- Color contrast algorithm based on [WCAG 2.0 standards](https://www.w3.org/TR/WCAG20/)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**If you find QSS Toolkit helpful, please consider starring the repository!**\n\n*QSS Toolkit is not affiliated with JetBrains or Qt.*  \n*PyCharm, CLion, IntelliJ IDEA are trademarks of JetBrains s.r.o.*  \n*Qt is a trademark of The Qt Company Ltd.*\n\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favaxerrr%2Fqss-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favaxerrr%2Fqss-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favaxerrr%2Fqss-toolkit/lists"}