diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fc0fffd4..60ea552e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,6 +139,7 @@ if(WIN32) ${QET_SRC_FILES} ${QM_FILES} ${QET_DIR}/qelectrotech.qrc + ${QET_DIR}/ico/icon-themes.qrc ) else() add_executable( @@ -147,6 +148,7 @@ else() ${QET_SRC_FILES} ${QM_FILES} ${QET_DIR}/qelectrotech.qrc + ${QET_DIR}/ico/icon-themes.qrc ) endif() diff --git a/ico/icon-themes.qrc b/ico/icon-themes.qrc new file mode 100644 index 000000000..1a3635da5 --- /dev/null +++ b/ico/icon-themes.qrc @@ -0,0 +1,285 @@ + + + + + themes/qet/index.theme + 16x16/application-exit.png + 16x16/arrow-left-double.png + 16x16/arrow-left.png + 16x16/arrow-right-double.png + 16x16/arrow-right.png + 16x16/circle.png + 16x16/conductor-edit.png + 16x16/conductor-reset.png + 16x16/conductor.png + 16x16/configure-toolbars.png + 16x16/configure.png + 16x16/diagram.png + 16x16/dialog-cancel.png + 16x16/dialog-ok.png + 16x16/document-close.png + 16x16/document-export.png + 16x16/document-import.png + 16x16/document-new.png + 16x16/document-open-recent.png + 16x16/document-open.png + 16x16/document-print-frame.png + 16x16/document-print.png + 16x16/document-save-all.png + 16x16/document-save-as.png + 16x16/document-save.png + 16x16/east.png + 16x16/edit-clear-locationbar-ltr.png + 16x16/edit-clear-locationbar-rtl.png + 16x16/edit-clear.png + 16x16/edit-copy.png + 16x16/edit-cut.png + 16x16/edit-delete.png + 16x16/edit-download.png + 16x16/edit-paste.png + 16x16/edit-redo.png + 16x16/edit-rename.png + 16x16/edit-select-all.png + 16x16/edit-select-invert.png + 16x16/edit-select-none.png + 16x16/edit-table-cell-merge.png + 16x16/edit-table-cell-split.png + 16x16/edit-table-delete-column.png + 16x16/edit-table-delete-row.png + 16x16/edit-table-insert-column-left.png + 16x16/edit-table-insert-column-right.png + 16x16/edit-table-insert-row-above.png + 16x16/edit-table-insert-row-under.png + 16x16/edit-undo.png + 16x16/element-delete.png + 16x16/element-edit.png + 16x16/element-master.png + 16x16/element-new.png + 16x16/element-slave.png + 16x16/element.png + 16x16/endline-circle.png + 16x16/endline-diamond.png + 16x16/endline-none.png + 16x16/endline-simple.png + 16x16/endline-triangle.png + 16x16/export-csv.png + 16x16/flip.png + 16x16/folder-delete.png + 16x16/folder-edit.png + 16x16/folder-new.png + 16x16/folder-only-this.png + 16x16/folder-open.png + 16x16/folder-properties.png + 16x16/folder-show-all.png + 16x16/folder.png + 16x16/folio-delete.png + 16x16/folio-new.png + 16x16/folio-properties.png + 16x16/folio-ref-coming.png + 16x16/go-bottom.png + 16x16/go-company.png + 16x16/go-down-double.png + 16x16/go-down.png + 16x16/go-home.png + 16x16/go-top.png + 16x16/go-up-double.png + 16x16/go-up.png + 16x16/grid.png + 16x16/ground.png + 16x16/help-contents.png + 16x16/help-donate.png + 16x16/item-cancel.png + 16x16/item-copy.png + 16x16/item-move.png + 16x16/kdenlive-show-video.png + 16x16/label.png + 16x16/list-add.png + 16x16/list-remove.png + 16x16/masquer.png + 16x16/mirror.png + 16x16/move.png + 16x16/neutral.png + 16x16/north.png + 16x16/object-group.png + 16x16/object-rotate-right.png + 16x16/orientations.png + 16x16/phase.png + 16x16/preferences-desktop-user.png + 16x16/project-close.png + 16x16/project-delete.png + 16x16/project-new.png + 16x16/project-properties.png + 16x16/project.png + 16x16/qet.png + 16x16/qt.png + 16x16/run-dxf.png + 16x16/select.png + 16x16/south.png + 16x16/table-of-content.png + 16x16/terminal.png + 16x16/terminalstrip.png + 16x16/text-xml.png + 16x16/transform-rotate.png + 16x16/user-busy.png + 16x16/user-online.png + 16x16/view-fullscreen.png + 16x16/view-refresh.png + 16x16/view-restore.png + 16x16/west.png + 16x16/window-new.png + 16x16/zoom-draw.png + 16x16/zoom-fit-best.png + 16x16/zoom-in.png + 16x16/zoom-original.png + 16x16/zoom-out.png + 22x22/Actions-player-time-icon.png + 22x22/all_pages.png + 22x22/application-exit.png + 22x22/applications-development-translation.png + 22x22/arc.png + 22x22/arrow-left-double.png + 22x22/arrow-left.png + 22x22/arrow-right-double.png + 22x22/arrow-right.png + 22x22/autoconnect.png + 22x22/bring_forward.png + 22x22/conductor2.png + 22x22/conductor2.png + 22x22/configure-toolbars.png + 22x22/configure.png + 22x22/diagram.png + 22x22/diagram_add.png + 22x22/diagram_add.png + 22x22/diagram_bg.png + 22x22/diagram_del.png + 22x22/diagram_del.png + 22x22/dialog-cancel.png + 22x22/dialog-information.png + 22x22/dialog-information.png + 22x22/dialog-ok.png + 22x22/document-close.png + 22x22/document-export.png + 22x22/document-import.png + 22x22/document-new.png + 22x22/document-open-recent.png + 22x22/document-open.png + 22x22/document-print-frame.png + 22x22/document-print.png + 22x22/document-save-all.png + 22x22/document-save-as.png + 22x22/document-save.png + 22x22/edit-clear-locationbar-ltr.png + 22x22/edit-clear-locationbar-rtl.png + 22x22/edit-clear.png + 22x22/edit-copy.png + 22x22/edit-cut.png + 22x22/edit-delete.png + 22x22/edit-paste.png + 22x22/edit-redo.png + 22x22/edit-rename.png + 22x22/edit-select-all.png + 22x22/edit-table-cell-merge.png + 22x22/edit-table-cell-split.png + 22x22/edit-table-delete-column.png + 22x22/edit-table-delete-row.png + 22x22/edit-table-insert-column-left.png + 22x22/edit-table-insert-column-right.png + 22x22/edit-table-insert-row-above.png + 22x22/edit-table-insert-row-under.png + 22x22/edit-undo.png + 22x22/element-delete.png + 22x22/element-edit.png + 22x22/element-new.png + 22x22/ellipse.png + 22x22/export-csv.png + 22x22/folder-delete.png + 22x22/folder-edit.png + 22x22/folder-new.png + 22x22/folder-open.png + 22x22/format-text-subscript.png + 22x22/format-text-superscript.png + 22x22/go-company.png + 22x22/go-down.png + 22x22/go-home.png + 22x22/go-up.png + 22x22/grid.png + 22x22/guides.png + 22x22/hotspot.png + 22x22/insert-image.png + 22x22/label.png + 22x22/landscape.png + 22x22/line.png + 22x22/list-add.png + 22x22/list-remove.png + 22x22/lower.png + 22x22/move.png + 22x22/names.png + 22x22/object-locked.png + 22x22/object-rotate-right.png + 22x22/object-unlocked.png + 22x22/pdf-import.png + 22x22/polygon.png + 22x22/portrait.png + 22x22/preferences-desktop-user.png + 22x22/project-close.png + 22x22/project-delete.png + 22x22/project-new.png + 22x22/project.png + 22x22/raise.png + 22x22/rectangle.png + 22x22/restaurer.png + 22x22/select.png + 22x22/send_backward.png + 22x22/single_page.png + 22x22/start.png + 22x22/terminal.png + 22x22/terminalstrip.png + 22x22/text-xml.png + 22x22/text.png + 22x22/textfield.png + 22x22/titleblock-bottom.png + 22x22/titleblock-right.png + 22x22/transform-scale.png + 22x22/two_pages.png + 22x22/view-fit-window.png + 22x22/view-fullscreen.png + 22x22/view-refresh.png + 22x22/view-restore.png + 22x22/view_fit_width.png + 22x22/window-new.png + 22x22/zoom-draw.png + 22x22/zoom-fit-best.png + 22x22/zoom-in.png + 22x22/zoom-original.png + 22x22/zoom-out.png + 32x32/application-pdf.png + 32x32/format-text-bold.png + 32x32/format-text-color.png + 32x32/format-text-italic.png + 32x32/format-text-underline.png + 32x32/image-x-eps.png + 32x32/insert-link.png + 32x32/printer.png + 32x32/qt.png + 32x32/simplifyrichtext.png + 32x32/text-xml.png + 48x48/document-print-frame.png + 48x48/user-away-extended.png + 48x48/user-away.png + 48x48/view-pim-journal.png + 128x128/diagram.png + 128x128/document-export.png + 128x128/plasmagik.png + 128x128/printer.png + 128x128/project.png + 128x128/settings.png + breeze-icons/scalable/apps/hidef/edit-opacity.svg + breeze-icons/scalable/apps/hidef/image-flip-horizontal-symbolic.svg + breeze-icons/scalable/apps/hidef/image-flip-vertical-symbolic.svg + breeze-icons/scalable/apps/hidef/draw-bezier-curves.svg + breeze-icons/scalable/apps/hidef/transform-crop.svg + generated/ellipse-to-bezier.svg + generated/rect-to-bezier.svg + generated/rect-to-polyline.svg + + diff --git a/ico/themes/qet/index.theme b/ico/themes/qet/index.theme new file mode 100644 index 000000000..74c1b904b --- /dev/null +++ b/ico/themes/qet/index.theme @@ -0,0 +1,30 @@ +[Icon Theme] +Name=qet +Comment=QElectroTech icons +Directories=16x16,22x22,32x32,48x48,128x128,scalable + +[16x16] +Size=16 +Type=Fixed + +[22x22] +Size=22 +Type=Fixed + +[32x32] +Size=32 +Type=Fixed + +[48x48] +Size=48 +Type=Fixed + +[128x128] +Size=128 +Type=Fixed + +[scalable] +Size=22 +Type=Scalable +MinSize=8 +MaxSize=256 diff --git a/misc/make_icon_themes.py b/misc/make_icon_themes.py new file mode 100644 index 000000000..864798b1a --- /dev/null +++ b/misc/make_icon_themes.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +# Copyright 2006-2026 The QElectroTech Team +# This file is part of QElectroTech. +# +# QElectroTech is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# QElectroTech is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with QElectroTech. If not, see . +"""Build QET's icon theme "qet" from the PNG and SVG sources in ico/. + +Run from the repository root: + + python3 misc/make_icon_themes.py + +It writes: + + ico/themes/qet/index.theme the theme description + ico/icon-themes.qrc resource file listing the theme + +The theme does not copy any file. The .qrc aliases the existing +ico//.png files into the theme layout Qt's icon loader +expects (themes/qet//.png), so QIcon::fromTheme("name") +finds them. Idempotent: running it twice changes nothing. +""" + +import os +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +ICO = ROOT / "ico" +THEMES = ICO / "themes" +QRC = ICO / "icon-themes.qrc" + +# Fixed-size folders that hold toolbar, menu and dialog icons. The 24x16 +# flags, the 22x22/color swatches and the application icons are not theme +# icons and stay on their resource paths. +SIZES = ["16x16", "22x22", "32x32", "48x48", "128x128"] + +# Table entries in sources/qeticons.cpp that pair a 16 pixel file with a +# 22 pixel file of another name. The theme needs one name per icon, so +# the 22 pixel file is exposed under the 16 pixel name as well. +ALIASES = { + "22x22/conductor2.png": "conductor-reset", + "22x22/diagram_add.png": "folio-new", + "22x22/diagram_del.png": "folio-delete", + "22x22/dialog-information.png": "folio-properties", +} + +# SVG icons referenced from sources/qeticons.cpp. +SVGS = [ + "breeze-icons/scalable/apps/hidef/edit-opacity.svg", + "breeze-icons/scalable/apps/hidef/image-flip-horizontal-symbolic.svg", + "breeze-icons/scalable/apps/hidef/image-flip-vertical-symbolic.svg", + "breeze-icons/scalable/apps/hidef/draw-bezier-curves.svg", + "breeze-icons/scalable/apps/hidef/transform-crop.svg", + "generated/ellipse-to-bezier.svg", + "generated/rect-to-bezier.svg", + "generated/rect-to-polyline.svg", +] + + +def write_if_changed(path, data): + """Write text only when the content differs, so git stays quiet.""" + if path.exists() and path.read_text(encoding="utf-8") == data: + return False + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(data, encoding="utf-8") + return True + + +def index_theme(name, comment, dirs, inherits=None): + lines = ["[Icon Theme]", f"Name={name}", f"Comment={comment}"] + if inherits: + lines.append(f"Inherits={inherits}") + lines.append("Directories=" + ",".join(dirs)) + lines.append("") + for d in dirs: + lines.append(f"[{d}]") + if d == "scalable": + lines += ["Size=22", "Type=Scalable", "MinSize=8", "MaxSize=256"] + else: + lines += [f"Size={d.split('x')[0]}", "Type=Fixed"] + lines.append("") + return "\n".join(lines) + + +def main(): + entries = [] # (alias, source) pairs, paths relative to ico/ + changed = 0 + + for size in SIZES: + for png in sorted((ICO / size).glob("*.png")): + rel = f"{size}/{png.name}" + names = [png.stem] + if rel in ALIASES: + names.append(ALIASES[rel]) + for name in names: + entries.append((f"themes/qet/{size}/{name}.png", rel)) + + for rel in SVGS: + name = re.sub(r"-symbolic(?=\.svg$)", "", Path(rel).name) + entries.append((f"themes/qet/scalable/{name}", rel)) + + dirs = SIZES + ["scalable"] + changed += write_if_changed(THEMES / "qet" / "index.theme", + index_theme("qet", "QElectroTech icons", dirs)) + + qrc = ["", "", + '', ' ', + " themes/qet/index.theme"] + for alias, source in entries: + qrc.append(f' {source}') + qrc += [" ", "", ""] + changed += write_if_changed(QRC, "\n".join(qrc)) + + print(f"{len(entries)} theme entries; {changed} files written") + + +if __name__ == "__main__": + os.chdir(ROOT) + main() diff --git a/sources/ElementsCollection/fileelementcollectionitem.cpp b/sources/ElementsCollection/fileelementcollectionitem.cpp index 15a6cdb83..2183507ab 100644 --- a/sources/ElementsCollection/fileelementcollectionitem.cpp +++ b/sources/ElementsCollection/fileelementcollectionitem.cpp @@ -456,13 +456,13 @@ void FileElementCollectionItem::setUpIcon() if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1); if (m_path == QETApp::commonElementsDirN()) - setIcon(QIcon(":/ico/16x16/qet.png")); + setIcon(QIcon::fromTheme("qet")); else if (m_path == QETApp::companyElementsDirN()) - setIcon(QIcon(":/ico/16x16/go-company.png")); + setIcon(QIcon::fromTheme("go-company")); else if (m_path == macrosPath) - setIcon(QIcon(":/ico/16x16/go-home.png")); + setIcon(QIcon::fromTheme("go-home")); else - setIcon(QIcon(":/ico/16x16/go-home.png")); + setIcon(QIcon::fromTheme("go-home")); } else { diff --git a/sources/NameList/ui/namelistwidget.ui b/sources/NameList/ui/namelistwidget.ui index f021a77a3..a38dd046d 100644 --- a/sources/NameList/ui/namelistwidget.ui +++ b/sources/NameList/ui/namelistwidget.ui @@ -36,7 +36,7 @@ Ajouter une ligne - + :/ico/16x16/list-add.png:/ico/16x16/list-add.png @@ -48,7 +48,7 @@ Copier dans le presse papier - + :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png diff --git a/sources/SearchAndReplace/ui/replaceconductordialog.ui b/sources/SearchAndReplace/ui/replaceconductordialog.ui index 4be6a94d3..f5cefc78c 100644 --- a/sources/SearchAndReplace/ui/replaceconductordialog.ui +++ b/sources/SearchAndReplace/ui/replaceconductordialog.ui @@ -370,7 +370,7 @@ phase - + :/ico/16x16/phase.png:/ico/16x16/phase.png @@ -397,7 +397,7 @@ neutre - + :/ico/16x16/neutral.png:/ico/16x16/neutral.png @@ -433,7 +433,7 @@ terre - + :/ico/16x16/ground.png:/ico/16x16/ground.png diff --git a/sources/SearchAndReplace/ui/replacefoliowidget.ui b/sources/SearchAndReplace/ui/replacefoliowidget.ui index b5ee7e0df..b438180b9 100644 --- a/sources/SearchAndReplace/ui/replacefoliowidget.ui +++ b/sources/SearchAndReplace/ui/replacefoliowidget.ui @@ -180,7 +180,7 @@ - + :/ico/22x22/start.png:/ico/22x22/start.png diff --git a/sources/SearchAndReplace/ui/searchandreplacewidget.ui b/sources/SearchAndReplace/ui/searchandreplacewidget.ui index fcc280960..597e1f439 100644 --- a/sources/SearchAndReplace/ui/searchandreplacewidget.ui +++ b/sources/SearchAndReplace/ui/searchandreplacewidget.ui @@ -106,7 +106,7 @@ - + :/ico/16x16/go-bottom.png:/ico/16x16/go-bottom.png @@ -123,7 +123,7 @@ - + :/ico/16x16/go-top.png:/ico/16x16/go-top.png @@ -140,7 +140,7 @@ - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png @@ -157,7 +157,7 @@ - + :/ico/16x16/configure-toolbars.png:/ico/16x16/configure-toolbars.png diff --git a/sources/TerminalStrip/ui/freeterminaleditor.ui b/sources/TerminalStrip/ui/freeterminaleditor.ui index f464b3e1d..4f318c60e 100644 --- a/sources/TerminalStrip/ui/freeterminaleditor.ui +++ b/sources/TerminalStrip/ui/freeterminaleditor.ui @@ -84,7 +84,7 @@ - + :/ico/22x22/dialog-ok.png:/ico/22x22/dialog-ok.png diff --git a/sources/TerminalStrip/ui/terminalstripeditor.ui b/sources/TerminalStrip/ui/terminalstripeditor.ui index 29f6854e3..ef65cdf9c 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.ui +++ b/sources/TerminalStrip/ui/terminalstripeditor.ui @@ -63,7 +63,7 @@ - + :/ico/16x16/dialog-ok.png:/ico/16x16/dialog-ok.png diff --git a/sources/TerminalStrip/ui/terminalstripeditorwindow.ui b/sources/TerminalStrip/ui/terminalstripeditorwindow.ui index f390f33cf..53b413b3b 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.ui +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.ui @@ -54,7 +54,7 @@ - + :/ico/16x16/list-add.png:/ico/16x16/list-add.png @@ -66,7 +66,7 @@ - + :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png @@ -78,7 +78,7 @@ - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png diff --git a/sources/autoNum/ui/autonumberingdockwidget.ui b/sources/autoNum/ui/autonumberingdockwidget.ui index 4fcd61901..b0bcc6e61 100644 --- a/sources/autoNum/ui/autonumberingdockwidget.ui +++ b/sources/autoNum/ui/autonumberingdockwidget.ui @@ -73,7 +73,7 @@ - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png @@ -161,7 +161,7 @@ - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png @@ -238,7 +238,7 @@ - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png @@ -319,7 +319,7 @@ Configurer - + :/ico/16x16/configure.png:/ico/16x16/configure.png diff --git a/sources/autoNum/ui/selectautonumw.ui b/sources/autoNum/ui/selectautonumw.ui index 3c4d953af..8da8d2e70 100644 --- a/sources/autoNum/ui/selectautonumw.ui +++ b/sources/autoNum/ui/selectautonumw.ui @@ -63,7 +63,7 @@ - + :/ico/16x16/edit-delete.png:/ico/16x16/edit-delete.png @@ -136,7 +136,7 @@ - + :/ico/22x22/list-remove.png:/ico/22x22/list-remove.png @@ -153,7 +153,7 @@ - + :/ico/22x22/list-add.png:/ico/22x22/list-add.png @@ -170,7 +170,7 @@ - + :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png @@ -184,7 +184,7 @@ - + :/ico/16x16/arrow-right.png:/ico/16x16/arrow-right.png diff --git a/sources/dataBase/ui/elementquerywidget.ui b/sources/dataBase/ui/elementquerywidget.ui index 8de65df47..8300b2387 100644 --- a/sources/dataBase/ui/elementquerywidget.ui +++ b/sources/dataBase/ui/elementquerywidget.ui @@ -88,7 +88,7 @@ - + :/ico/16x16/go-up.png:/ico/16x16/go-up.png @@ -105,7 +105,7 @@ - + :/ico/16x16/list-add.png:/ico/16x16/list-add.png @@ -119,7 +119,7 @@ - + :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png @@ -133,7 +133,7 @@ - + :/ico/16x16/go-down.png:/ico/16x16/go-down.png @@ -353,7 +353,7 @@ - + :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png @@ -380,7 +380,7 @@ - + :/ico/16x16/document-save.png:/ico/16x16/document-save.png diff --git a/sources/dataBase/ui/summaryquerywidget.ui b/sources/dataBase/ui/summaryquerywidget.ui index d6eb50e10..de98cd343 100644 --- a/sources/dataBase/ui/summaryquerywidget.ui +++ b/sources/dataBase/ui/summaryquerywidget.ui @@ -76,7 +76,7 @@ - + :/ico/16x16/go-up.png:/ico/16x16/go-up.png @@ -87,7 +87,7 @@ - + :/ico/16x16/list-add.png:/ico/16x16/list-add.png @@ -98,7 +98,7 @@ - + :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png @@ -109,7 +109,7 @@ - + :/ico/16x16/go-down.png:/ico/16x16/go-down.png diff --git a/sources/editor/ui/polygoneditor.ui b/sources/editor/ui/polygoneditor.ui index 98612f832..c34d26888 100644 --- a/sources/editor/ui/polygoneditor.ui +++ b/sources/editor/ui/polygoneditor.ui @@ -48,7 +48,7 @@ - + :/ico/16x16/list-add.png:/ico/16x16/list-add.png @@ -57,7 +57,7 @@ - + :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png diff --git a/sources/editor/ui/qetelementeditor.ui b/sources/editor/ui/qetelementeditor.ui index 65a55aa8b..0ec31adc3 100644 --- a/sources/editor/ui/qetelementeditor.ui +++ b/sources/editor/ui/qetelementeditor.ui @@ -14,7 +14,7 @@ QElectroTech - Éditeur d'élément - + :/ico/16x16/qet.png:/ico/16x16/qet.png @@ -55,7 +55,7 @@ Coller depuis... - + :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png @@ -202,7 +202,7 @@ - + :/ico/16x16/edit-select-all.png:/ico/16x16/edit-select-all.png @@ -211,7 +211,7 @@ - + :/ico/22x22/document-new.png:/ico/22x22/document-new.png @@ -220,7 +220,7 @@ - + :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png @@ -229,7 +229,7 @@ - + :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png @@ -238,7 +238,7 @@ - + :/ico/22x22/document-save.png:/ico/22x22/document-save.png @@ -247,7 +247,7 @@ - + :/ico/22x22/document-save-as.png:/ico/22x22/document-save-as.png @@ -256,7 +256,7 @@ - + :/ico/22x22/document-save.png:/ico/22x22/document-save.png @@ -265,7 +265,7 @@ - + :/ico/22x22/document-export.png:/ico/22x22/document-export.png @@ -274,7 +274,7 @@ - + :/ico/22x22/view-refresh.png:/ico/22x22/view-refresh.png @@ -283,7 +283,7 @@ - + :/ico/16x16/application-exit.png:/ico/16x16/application-exit.png @@ -295,7 +295,7 @@ - + :/ico/16x16/edit-select-none.png:/ico/16x16/edit-select-none.png @@ -304,7 +304,7 @@ - + :/ico/16x16/edit-cut.png:/ico/16x16/edit-cut.png @@ -313,7 +313,7 @@ - + :/ico/16x16/edit-copy.png:/ico/16x16/edit-copy.png @@ -322,7 +322,7 @@ - + :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png @@ -331,7 +331,7 @@ - + :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png @@ -340,7 +340,7 @@ - + :/ico/16x16/text-xml.png:/ico/16x16/text-xml.png @@ -349,7 +349,7 @@ - + :/ico/16x16/element.png:/ico/16x16/element.png @@ -358,7 +358,7 @@ - + :/ico/16x16/edit-select-invert.png:/ico/16x16/edit-select-invert.png @@ -367,7 +367,7 @@ - + :/ico/22x22/edit-delete.png:/ico/22x22/edit-delete.png @@ -376,7 +376,7 @@ - + :/ico/22x22/names.png:/ico/22x22/names.png @@ -385,7 +385,7 @@ - + :/ico/16x16/preferences-desktop-user.png:/ico/16x16/preferences-desktop-user.png @@ -394,7 +394,7 @@ - + :/ico/22x22/element-edit.png:/ico/22x22/element-edit.png @@ -403,7 +403,7 @@ - + :/ico/22x22/zoom-in.png:/ico/22x22/zoom-in.png @@ -412,7 +412,7 @@ - + :/ico/22x22/zoom-out.png:/ico/22x22/zoom-out.png @@ -421,7 +421,7 @@ - + :/ico/22x22/zoom-fit-best.png:/ico/22x22/zoom-fit-best.png @@ -430,7 +430,7 @@ - + :/ico/22x22/zoom-original.png:/ico/22x22/zoom-original.png @@ -439,7 +439,7 @@ - + :/ico/16x16/qet.png:/ico/16x16/qet.png @@ -451,7 +451,7 @@ - + :/ico/16x16/help-contents.png:/ico/16x16/help-contents.png @@ -463,7 +463,7 @@ - + :/ico/16x16/kdenlive-show-video.png:/ico/16x16/kdenlive-show-video.png @@ -475,7 +475,7 @@ - + :/ico/16x16/help-donate.png:/ico/16x16/help-donate.png @@ -487,7 +487,7 @@ - + :/ico/16x16/qt.png:/ico/16x16/qt.png @@ -499,7 +499,7 @@ - + :/ico/16x16/orientations.png:/ico/16x16/orientations.png @@ -508,7 +508,7 @@ - + :/ico/16x16/orientations.png:/ico/16x16/orientations.png @@ -517,7 +517,7 @@ - + :/ico/16x16/mirror.png:/ico/16x16/mirror.png @@ -526,7 +526,7 @@ - + :/ico/16x16/flip.png:/ico/16x16/flip.png @@ -535,7 +535,7 @@ - + :/ico/16x16/run-dxf.png:/ico/16x16/run-dxf.png @@ -544,7 +544,7 @@ - + :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png diff --git a/sources/print/projectprintwindow.ui b/sources/print/projectprintwindow.ui index a1db8e411..c13399fb0 100644 --- a/sources/print/projectprintwindow.ui +++ b/sources/print/projectprintwindow.ui @@ -134,7 +134,7 @@ - + :/ico/16x16/dialog-ok.png:/ico/16x16/dialog-ok.png @@ -305,7 +305,7 @@ - + :/ico/22x22/view_fit_width.png:/ico/22x22/view_fit_width.png @@ -314,7 +314,7 @@ - + :/ico/22x22/view-fit-window.png:/ico/22x22/view-fit-window.png @@ -323,7 +323,7 @@ - + :/ico/16x16/zoom-out.png:/ico/16x16/zoom-out.png @@ -332,7 +332,7 @@ - + :/ico/16x16/zoom-in.png:/ico/16x16/zoom-in.png @@ -341,7 +341,7 @@ - + :/ico/22x22/landscape.png:/ico/22x22/landscape.png @@ -350,7 +350,7 @@ - + :/ico/22x22/portrait.png:/ico/22x22/portrait.png @@ -359,7 +359,7 @@ - + :/ico/16x16/arrow-left-double.png:/ico/16x16/arrow-left-double.png @@ -368,7 +368,7 @@ - + :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png @@ -377,7 +377,7 @@ - + :/ico/16x16/arrow-right.png:/ico/16x16/arrow-right.png @@ -386,7 +386,7 @@ - + :/ico/22x22/arrow-right-double.png:/ico/22x22/arrow-right-double.png @@ -395,7 +395,7 @@ - + :/ico/22x22/single_page.png:/ico/22x22/single_page.png @@ -404,7 +404,7 @@ - + :/ico/22x22/two_pages.png:/ico/22x22/two_pages.png @@ -413,7 +413,7 @@ - + :/ico/22x22/all_pages.png:/ico/22x22/all_pages.png @@ -422,7 +422,7 @@ - + :/ico/48x48/document-print-frame.png:/ico/48x48/document-print-frame.png diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 4f334c676..76c1203fc 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -120,6 +120,7 @@ QETApp::QETApp() : } initConfiguration(); initLanguage(); + initIconTheme(); QET::Icons::initIcons(); initFonts(); initStyle(); @@ -2330,6 +2331,22 @@ void QETApp::initFonts() } } +/** + @brief QETApp::initIconTheme + Register QET's icon theme "qet" (see misc/make_icon_themes.py and + ico/icon-themes.qrc) and make it the current theme, so + QIcon::fromTheme("name") resolves to QET's own icons on every + platform. Must run before QET::Icons::initIcons(), which looks icons + up by name. +*/ +void QETApp::initIconTheme() +{ + QStringList paths = QIcon::themeSearchPaths(); + paths.prepend(QStringLiteral(":/ico/themes")); + QIcon::setThemeSearchPaths(paths); + QIcon::setThemeName(QStringLiteral("qet")); +} + /** @brief QETApp::initStyle Setup the gui style diff --git a/sources/qetapp.h b/sources/qetapp.h index 7d0e5e7ee..8242abf71 100644 --- a/sources/qetapp.h +++ b/sources/qetapp.h @@ -286,6 +286,7 @@ class QETApp : public QObject void setSplashScreenStep(const QString & = QString()); void initLanguage(); void initFonts(); + void initIconTheme(); void initStyle(); void initConfiguration(); void initSystemTray(); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 247d889ad..d1a4be91b 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -430,7 +430,7 @@ void QETDiagramEditor::setUpActions() }); // Draw or not the custom guides - m_draw_guides = new QAction ( QIcon(":/ico/22x22/guides.png"), tr("Afficher les guides"), this); + m_draw_guides = new QAction ( QIcon::fromTheme("guides"), tr("Afficher les guides"), this); m_draw_guides->setStatusTip(tr("Affiche ou masque les guides")); m_draw_guides->setCheckable(true); m_draw_guides->setChecked(settings.value("diagrameditor/guides_display_startup", false).toBool()); diff --git a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui index 439512405..28edea330 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui +++ b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui @@ -62,7 +62,7 @@ - + :/ico/16x16/arrow-right.png:/ico/16x16/arrow-right.png @@ -104,7 +104,7 @@ - + :/ico/22x22/zoom-fit-best.png:/ico/22x22/zoom-fit-best.png @@ -179,7 +179,7 @@ - + :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png @@ -203,7 +203,7 @@ - + :/ico/22x22/all_pages.png:/ico/22x22/all_pages.png diff --git a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui index 3ce470886..649e756c7 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui +++ b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui @@ -20,7 +20,7 @@ Requête - + :/ico/16x16/edit-rename.png:/ico/16x16/edit-rename.png @@ -31,7 +31,7 @@ Recharger - + :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png diff --git a/sources/qeticons.cpp b/sources/qeticons.cpp index 309ef423c..39030275c 100644 --- a/sources/qeticons.cpp +++ b/sources/qeticons.cpp @@ -392,471 +392,401 @@ void QET::Icons::initIcons() bool rtl = QApplication::isRightToLeft(); QTransform reverse = QTransform().scale(-1, 1); - Add .addFile(":/ico/16x16/list-add.png"); - Add .addFile(":/ico/22x22/list-add.png"); - AddFolio .addFile(":/ico/16x16/folio-new.png"); - Allowed .addFile(":/ico/16x16/user-online.png"); - ApplicationExit .addFile(":/ico/16x16/application-exit.png"); - ApplicationExit .addFile(":/ico/22x22/application-exit.png"); - ArrowLeft .addFile(":/ico/16x16/arrow-left.png"); - ArrowLeft .addFile(":/ico/22x22/arrow-left.png"); - ArrowLeftDouble .addFile(":/ico/16x16/arrow-left-double.png"); - ArrowLeftDouble .addFile(":/ico/22x22/arrow-left-double.png"); - ArrowRight .addFile(":/ico/16x16/arrow-right.png"); - ArrowRight .addFile(":/ico/22x22/arrow-right.png"); - ArrowRightDouble .addFile(":/ico/16x16/arrow-right-double.png"); - ArrowRightDouble .addFile(":/ico/22x22/arrow-right-double.png"); - Autoconnect .addFile(":/ico/22x22/autoconnect.png"); - BringForward .addFile(":/ico/22x22/bring_forward.png"); - Cancel .addFile(":/ico/16x16/item-cancel.png"); - Company .addFile(":/ico/16x16/go-company.png"); - Company .addFile(":/ico/22x22/go-company.png"); - Conductor .addFile(":/ico/16x16/conductor.png"); - ConductorEdit .addFile(":/ico/16x16/conductor-edit.png"); - ConductorSettings .addFile(":/ico/16x16/conductor-reset.png"); - ConductorSettings .addFile(":/ico/22x22/conductor2.png"); - Configure .addFile(":/ico/16x16/configure.png"); - Configure .addFile(":/ico/22x22/configure.png"); - ConfigureToolbars .addFile(":/ico/16x16/configure-toolbars.png"); - ConfigureToolbars .addFile(":/ico/22x22/configure-toolbars.png"); - IC_CopyFile .addFile(":/ico/16x16/item-copy.png"); - DiagramAdd .addFile(":/ico/16x16/folio-new.png"); - DiagramAdd .addFile(":/ico/22x22/diagram_add.png"); - Diagram .addFile(":/ico/16x16/diagram.png"); - Diagram .addFile(":/ico/diagram.png"); - DiagramBg .addFile(":/ico/22x22/diagram_bg.png"); - DiagramDelete .addFile(":/ico/16x16/folio-delete.png"); - DiagramDelete .addFile(":/ico/22x22/diagram_del.png"); - DialogCancel .addFile(":/ico/16x16/dialog-cancel.png"); - DialogCancel .addFile(":/ico/22x22/dialog-cancel.png"); - DialogInformation .addFile(":/ico/16x16/folio-properties.png"); - DialogInformation .addFile(":/ico/22x22/dialog-information.png"); - DialogOk .addFile(":/ico/16x16/dialog-ok.png"); - DialogOk .addFile(":/ico/22x22/dialog-ok.png"); - DocumentClose .addFile(":/ico/16x16/document-close.png"); - DocumentClose .addFile(":/ico/22x22/document-close.png"); - DocumentExport .addFile(":/ico/16x16/document-export.png"); - DocumentExport .addFile(":/ico/22x22/document-export.png"); - DocumentSpreadsheet .addFile(":/ico/16x16/export-csv.png"); - DocumentExport .addFile(":/ico/128x128/document-export.png"); - DocumentImport .addFile(":/ico/16x16/document-import.png"); - DocumentImport .addFile(":/ico/22x22/document-import.png"); - DocumentNew .addFile(":/ico/16x16/document-new.png"); - DocumentNew .addFile(":/ico/22x22/document-new.png"); - DocumentOpen .addFile(":/ico/16x16/document-open.png"); - DocumentOpen .addFile(":/ico/22x22/document-open.png"); - DocumentOpenRecent .addFile(":/ico/16x16/document-open-recent.png"); - DocumentOpenRecent .addFile(":/ico/22x22/document-open-recent.png"); - DocumentPrint .addFile(":/ico/16x16/document-print.png"); - DocumentPrint .addFile(":/ico/22x22/document-print.png"); - DocumentPrintFrame .addFile(":/ico/16x16/document-print-frame.png"); - DocumentPrintFrame .addFile(":/ico/48x48/document-print-frame.png"); - DocumentSave .addFile(":/ico/16x16/document-save.png"); - DocumentSave .addFile(":/ico/22x22/document-save.png"); - DocumentSaveAll .addFile(":/ico/16x16/document-save-all.png"); - DocumentSaveAll .addFile(":/ico/22x22/document-save-all.png"); - DocumentSaveAs .addFile(":/ico/16x16/document-save-as.png"); - DocumentSaveAs .addFile(":/ico/22x22/document-save-as.png"); - East .addFile(":/ico/16x16/east.png"); - EditClear .addFile(":/ico/16x16/edit-clear.png"); - EditClear .addFile(":/ico/22x22/edit-clear.png"); - EditText .addFile(":/ico/22x22/names.png"); - adding_image .addFile(":/ico/22x22/insert-image.png"); - adding_pdf .addFile(":/ico/22x22/pdf-import.png"); + Add = QIcon::fromTheme("list-add"); + AddFolio = QIcon::fromTheme("folio-new"); + Allowed = QIcon::fromTheme("user-online"); + ApplicationExit = QIcon::fromTheme("application-exit"); + ArrowLeft = QIcon::fromTheme("arrow-left"); + ArrowLeftDouble = QIcon::fromTheme("arrow-left-double"); + ArrowRight = QIcon::fromTheme("arrow-right"); + ArrowRightDouble = QIcon::fromTheme("arrow-right-double"); + Autoconnect = QIcon::fromTheme("autoconnect"); + BringForward = QIcon::fromTheme("bring_forward"); + Cancel = QIcon::fromTheme("item-cancel"); + Company = QIcon::fromTheme("go-company"); + Conductor = QIcon::fromTheme("conductor"); + ConductorEdit = QIcon::fromTheme("conductor-edit"); + ConductorSettings = QIcon::fromTheme("conductor-reset"); + Configure = QIcon::fromTheme("configure"); + ConfigureToolbars = QIcon::fromTheme("configure-toolbars"); + IC_CopyFile = QIcon::fromTheme("item-copy"); + DiagramAdd = QIcon::fromTheme("folio-new"); + Diagram.addFile(":/ico/16x16/diagram.png"); + Diagram.addFile(":/ico/diagram.png"); + DiagramBg = QIcon::fromTheme("diagram_bg"); + DiagramDelete = QIcon::fromTheme("folio-delete"); + DialogCancel = QIcon::fromTheme("dialog-cancel"); + DialogInformation = QIcon::fromTheme("folio-properties"); + DialogOk = QIcon::fromTheme("dialog-ok"); + DocumentClose = QIcon::fromTheme("document-close"); + DocumentExport = QIcon::fromTheme("document-export"); + DocumentSpreadsheet = QIcon::fromTheme("export-csv"); + DocumentExport = QIcon::fromTheme("document-export"); + DocumentImport = QIcon::fromTheme("document-import"); + DocumentNew = QIcon::fromTheme("document-new"); + DocumentOpen = QIcon::fromTheme("document-open"); + DocumentOpenRecent = QIcon::fromTheme("document-open-recent"); + DocumentPrint = QIcon::fromTheme("document-print"); + DocumentPrintFrame = QIcon::fromTheme("document-print-frame"); + DocumentSave = QIcon::fromTheme("document-save"); + DocumentSaveAll = QIcon::fromTheme("document-save-all"); + DocumentSaveAs = QIcon::fromTheme("document-save-as"); + East = QIcon::fromTheme("east"); + EditClear = QIcon::fromTheme("edit-clear"); + EditText = QIcon::fromTheme("names"); + adding_image = QIcon::fromTheme("insert-image"); + adding_pdf = QIcon::fromTheme("pdf-import"); if (rtl) { - EditClearLocationBar.addPixmap(QPixmap(":/ico/16x16/edit-clear-locationbar-ltr.png").transformed(reverse)); - EditClearLocationBar.addPixmap(QPixmap(":/ico/22x22/edit-clear-locationbar-ltr.png").transformed(reverse)); + EditClearLocationBar.addPixmap(QIcon::fromTheme("edit-clear-locationbar-ltr").pixmap(16).transformed(reverse)); + EditClearLocationBar.addPixmap(QIcon::fromTheme("edit-clear-locationbar-ltr").pixmap(22).transformed(reverse)); } else { - EditClearLocationBar.addFile(":/ico/16x16/edit-clear-locationbar-ltr.png"); - EditClearLocationBar.addFile(":/ico/22x22/edit-clear-locationbar-ltr.png"); + EditClearLocationBar= QIcon::fromTheme("edit-clear-locationbar-ltr"); } - EditCopy .addFile(":/ico/16x16/edit-copy.png"); - EditCopy .addFile(":/ico/22x22/edit-copy.png"); - EditCut .addFile(":/ico/16x16/edit-cut.png"); - EditCut .addFile(":/ico/22x22/edit-cut.png"); - EditDelete .addFile(":/ico/16x16/edit-delete.png"); - EditDelete .addFile(":/ico/22x22/edit-delete.png"); - EditOpacity .addFile(":/ico/breeze-icons/scalable/apps/hidef/edit-opacity.svg"); - EditPaste .addFile(":/ico/22x22/edit-paste.png"); - EditPaste .addFile(":/ico/16x16/edit-paste.png"); + EditCopy = QIcon::fromTheme("edit-copy"); + EditCut = QIcon::fromTheme("edit-cut"); + EditDelete = QIcon::fromTheme("edit-delete"); + EditOpacity = QIcon::fromTheme("edit-opacity"); + EditPaste = QIcon::fromTheme("edit-paste"); if (rtl) { - EditRedo.addPixmap(QPixmap(":/ico/16x16/edit-redo.png").transformed(reverse)); - EditRedo.addPixmap(QPixmap(":/ico/22x22/edit-redo.png").transformed(reverse)); + EditRedo.addPixmap(QIcon::fromTheme("edit-redo").pixmap(16).transformed(reverse)); + EditRedo.addPixmap(QIcon::fromTheme("edit-redo").pixmap(22).transformed(reverse)); } else { - EditRedo .addFile(":/ico/16x16/edit-redo.png"); - EditRedo .addFile(":/ico/22x22/edit-redo.png"); + EditRedo = QIcon::fromTheme("edit-redo"); } - EditRename .addFile(":/ico/16x16/edit-rename.png"); - EditRename .addFile(":/ico/22x22/edit-rename.png"); - EditSelectAll .addFile(":/ico/16x16/edit-select-all.png"); - EditSelectAll .addFile(":/ico/22x22/edit-select-all.png"); - EditSelectInvert .addFile(":/ico/16x16/edit-select-invert.png"); - EditSelectNone .addFile(":/ico/16x16/edit-select-none.png"); - EditTableCellMerge .addFile(":/ico/16x16/edit-table-cell-merge.png"); - EditTableCellMerge .addFile(":/ico/22x22/edit-table-cell-merge.png"); - EditTableCellSplit .addFile(":/ico/16x16/edit-table-cell-split.png"); - EditTableCellSplit .addFile(":/ico/22x22/edit-table-cell-split.png"); - EditTableDeleteColumn .addFile(":/ico/16x16/edit-table-delete-column.png"); - EditTableDeleteColumn .addFile(":/ico/22x22/edit-table-delete-column.png"); - EditTableDeleteRow .addFile(":/ico/16x16/edit-table-delete-row.png"); - EditTableDeleteRow .addFile(":/ico/22x22/edit-table-delete-row.png"); - EditTableInsertColumnLeft .addFile(":/ico/16x16/edit-table-insert-column-left.png"); - EditTableInsertColumnLeft .addFile(":/ico/22x22/edit-table-insert-column-left.png"); - EditTableInsertColumnRight.addFile(":/ico/16x16/edit-table-insert-column-right.png"); - EditTableInsertColumnRight.addFile(":/ico/22x22/edit-table-insert-column-right.png"); - EditTableInsertRowAbove .addFile(":/ico/16x16/edit-table-insert-row-above.png"); - EditTableInsertRowAbove .addFile(":/ico/22x22/edit-table-insert-row-above.png"); - EditTableInsertRowUnder .addFile(":/ico/16x16/edit-table-insert-row-under.png"); - EditTableInsertRowUnder .addFile(":/ico/22x22/edit-table-insert-row-under.png"); + EditRename = QIcon::fromTheme("edit-rename"); + EditSelectAll = QIcon::fromTheme("edit-select-all"); + EditSelectInvert = QIcon::fromTheme("edit-select-invert"); + EditSelectNone = QIcon::fromTheme("edit-select-none"); + EditTableCellMerge = QIcon::fromTheme("edit-table-cell-merge"); + EditTableCellSplit = QIcon::fromTheme("edit-table-cell-split"); + EditTableDeleteColumn= QIcon::fromTheme("edit-table-delete-column"); + EditTableDeleteRow = QIcon::fromTheme("edit-table-delete-row"); + EditTableInsertColumnLeft= QIcon::fromTheme("edit-table-insert-column-left"); + EditTableInsertColumnRight= QIcon::fromTheme("edit-table-insert-column-right"); + EditTableInsertRowAbove= QIcon::fromTheme("edit-table-insert-row-above"); + EditTableInsertRowUnder= QIcon::fromTheme("edit-table-insert-row-under"); if (rtl) { - EditUndo.addPixmap(QPixmap(":/ico/16x16/edit-undo.png").transformed(reverse)); - EditUndo.addPixmap(QPixmap(":/ico/22x22/edit-undo.png").transformed(reverse)); + EditUndo.addPixmap(QIcon::fromTheme("edit-undo").pixmap(16).transformed(reverse)); + EditUndo.addPixmap(QIcon::fromTheme("edit-undo").pixmap(22).transformed(reverse)); } else { - EditUndo .addFile(":/ico/16x16/edit-undo.png"); - EditUndo .addFile(":/ico/22x22/edit-undo.png"); + EditUndo = QIcon::fromTheme("edit-undo"); } - Element .addFile(":/ico/breeze-icons/16x16/mimetypes/application-x-qet-element.png"); - Element .addFile(":/ico/breeze-icons/22x22/mimetypes/application-x-qet-element.png"); - Element .addFile(":/ico/breeze-icons/32x32/mimetypes/application-x-qet-element.png"); - ElementDelete .addFile(":/ico/16x16/element-delete.png"); - ElementDelete .addFile(":/ico/22x22/element-delete.png"); - ElementEdit .addFile(":/ico/16x16/element-edit.png"); - ElementEdit .addFile(":/ico/22x22/element-edit.png"); - ElementNew .addFile(":/ico/16x16/element-new.png"); - ElementNew .addFile(":/ico/22x22/element-new.png"); - ElementSmall .addFile(":/ico/16x16/element.png"); - EllipseToBezier .addFile(":/ico/generated/ellipse-to-bezier.svg"); - EndLineCircle .addFile(":/ico/16x16/endline-circle.png"); - EndLineDiamond .addFile(":/ico/16x16/endline-diamond.png"); - EndLineNone .addFile(":/ico/16x16/endline-none.png"); - EndLineSimple .addFile(":/ico/16x16/endline-simple.png"); - EndLineTriangle .addFile(":/ico/16x16/endline-triangle.png"); - EPS .addFile(":/ico/32x32/image-x-eps.png"); - Flip .addFile(":/ico/16x16/flip.png"); - Folder .addFile(":/ico/16x16/folder.png"); - FolderDelete .addFile(":/ico/16x16/folder-delete.png"); - FolderDelete .addFile(":/ico/22x22/folder-delete.png"); - FolderEdit .addFile(":/ico/16x16/folder-edit.png"); - FolderEdit .addFile(":/ico/22x22/folder-edit.png"); - FolderNew .addFile(":/ico/16x16/folder-new.png"); - FolderNew .addFile(":/ico/22x22/folder-new.png"); - FolderOnlyThis .addFile(":/ico/16x16/folder-only-this.png"); - FolderOpen .addFile(":/ico/16x16/folder-open.png"); - FolderOpen .addFile(":/ico/22x22/folder-open.png"); - FolderProperties .addFile(":/ico/16x16/folder-properties.png"); - FolderShowAll .addFile(":/ico/16x16/folder-show-all.png"); - Forbidden .addFile(":/ico/16x16/user-busy.png"); - FullScreenEnter .addFile(":/ico/16x16/view-fullscreen.png"); - FullScreenEnter .addFile(":/ico/22x22/view-fullscreen.png"); - FullScreenExit .addFile(":/ico/16x16/view-restore.png"); - FullScreenExit .addFile(":/ico/22x22/view-restore.png"); - GoBottom .addFile(":/ico/16x16/go-bottom.png"); - GoDown .addFile(":/ico/16x16/go-down.png"); - GoDown .addFile(":/ico/22x22/go-down.png"); - GoDownDouble .addFile(":/ico/16x16/go-down-double.png"); - GoTop .addFile(":/ico/16x16/go-top.png"); - GoUp .addFile(":/ico/16x16/go-up.png"); - GoUp .addFile(":/ico/22x22/go-up.png"); - GoUpDouble .addFile(":/ico/16x16/go-up-double.png"); - Ground .addFile(":/ico/16x16/ground.png"); - Grid .addFile(":/ico/16x16/grid.png"); - Grid .addFile(":/ico/22x22/grid.png"); - Hide .addFile(":/ico/16x16/masquer.png"); - Home .addFile(":/ico/16x16/go-home.png"); - Home .addFile(":/ico/22x22/go-home.png"); - HotSpot .addFile(":/ico/22x22/hotspot.png"); - ImageFlipHorizontal .addFile(":/ico/breeze-icons/scalable/apps/hidef/image-flip-horizontal-symbolic.svg"); - ImageFlipVertical .addFile(":/ico/breeze-icons/scalable/apps/hidef/image-flip-vertical-symbolic.svg"); - InsertImage .addFile(":/ico/22x22/insert-image.png"); - Lower .addFile(":/ico/22x22/lower.png"); - IC_MoveFile .addFile(":/ico/16x16/item-move.png"); - Mirror .addFile(":/ico/16x16/mirror.png"); - Names .addFile(":/ico/22x22/names.png"); - Neutral .addFile(":/ico/16x16/neutral.png"); - NewDiagram .addFile(":/ico/128x128/diagram.png"); - North .addFile(":/ico/16x16/north.png"); - ObjectLocked .addFile(":/ico/22x22/object-locked.png"); - ObjectRotateRight .addFile(":/ico/16x16/object-rotate-right.png"); - ObjectRotateRight .addFile(":/ico/22x22/object-rotate-right.png"); - ObjectUnlocked .addFile(":/ico/22x22/object-unlocked.png"); - Orientations .addFile(":/ico/16x16/orientations.png"); - PartArc .addFile(":/ico/22x22/arc.png"); - PartBezier .addFile(":/ico/breeze-icons/scalable/apps/hidef/draw-bezier-curves.svg"); - PartCircle .addFile(":/ico/16x16/circle.png"); - PartEllipse .addFile(":/ico/22x22/ellipse.png"); - PartLine .addFile(":/ico/22x22/line.png"); - PartPolygon .addFile(":/ico/22x22/polygon.png"); - PartRectangle .addFile(":/ico/22x22/rectangle.png"); - PartSelect .addFile(":/ico/16x16/select.png"); - PartSelect .addFile(":/ico/22x22/select.png"); - PartText .addFile(":/ico/22x22/text.png"); - PartTextField .addFile(":/ico/22x22/textfield.png"); - PDF .addFile(":/ico/32x32/application-pdf.png"); - Phase .addFile(":/ico/16x16/phase.png"); - PrintAllPages .addFile(":/ico/22x22/all_pages.png"); - Printer .addFile(":/ico/32x32/printer.png"); - Printer .addFile(":/ico/128x128/printer.png"); - PrintLandscape .addFile(":/ico/22x22/landscape.png"); - PrintPortrait .addFile(":/ico/22x22/portrait.png"); - PrintTwoPages .addFile(":/ico/22x22/two_pages.png"); - Projects .addFile(":/ico/128x128/project.png"); - ProjectClose .addFile(":/ico/16x16/project-close.png"); - ProjectClose .addFile(":/ico/22x22/project-close.png"); - ProjectNew .addFile(":/ico/16x16/project-new.png"); - ProjectNew .addFile(":/ico/22x22/project-new.png"); - ProjectFile .addFile(":/ico/breeze-icons/16x16/mimetypes/application-x-qet-project.png"); - ProjectFile .addFile(":/ico/breeze-icons/22x22/mimetypes/application-x-qet-project.png"); - ProjectFile .addFile(":/ico/breeze-icons/32x32/mimetypes/application-x-qet-project.png"); - ProjectProperties .addFile(":/ico/16x16/project-properties.png"); - QETDonate .addFile(":/ico/16x16/help-donate.png"); - QETDownload .addFile(":/ico/16x16/edit-download.png"); - QETIcon .addFile(":/ico/256x256/qelectrotech.png"); - ProjectFileGP .addFile(":/ico/16x16/project.png"); - QETLogo .addFile(":/ico/16x16/qet.png"); - QETManual .addFile(":/ico/16x16/help-contents.png"); - QETLogo .addFile(":/ico/256x256/qet.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/128x128/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/16x16/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/22x22/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/256x256/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/32x32/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/48x48/apps/qelectrotech.png"); - QETOxygenLogo .addFile(":/ico/breeze-icons/64x64/apps/qelectrotech.png"); - QETVideo .addFile(":/ico/16x16/kdenlive-show-video.png"); - QtLogo .addFile(":/ico/16x16/qt.png"); - Raise .addFile(":/ico/22x22/raise.png"); - RectToBezier .addFile(":/ico/generated/rect-to-bezier.svg"); - RectToPolyline .addFile(":/ico/generated/rect-to-polyline.svg"); - Remove .addFile(":/ico/16x16/list-remove.png"); - Remove .addFile(":/ico/22x22/list-remove.png"); - resize_image .addFile(":/ico/22x22/transform-scale.png"); - Restore .addFile(":/ico/22x22/restaurer.png"); - RunDxf .addFile(":/ico/16x16/run-dxf.png"); - SendBackward .addFile(":/ico/22x22/send_backward.png"); - Settings .addFile(":/ico/128x128/settings.png"); - SinglePage .addFile(":/ico/22x22/single_page.png"); - South .addFile(":/ico/16x16/south.png"); - Start .addFile(":/ico/22x22/start.png"); - TableOfContent .addFile(":/ico/16x16/table-of-content.png"); - Terminal .addFile(":/ico/22x22/terminal.png"); - TerminalStrip .addFile(":/ico/16x16/terminalstrip.png"); - TerminalStrip .addFile(":/ico/22x22/terminalstrip.png"); - TitleBlock .addFile(":/ico/16x16/label.png"); - TitleBlock .addFile(":/ico/22x22/label.png"); - TitleBlockBottom .addFile(":/ico/22x22/titleblock-bottom.png"); - TitleBlockRight .addFile(":/ico/22x22/titleblock-right.png"); - TransformCrop .addFile(":/ico/breeze-icons/scalable/apps/hidef/transform-crop.svg"); - TransformRotate .addFile(":/ico/16x16/transform-rotate.png"); - UserInformations .addFile(":/ico/16x16/preferences-desktop-user.png"); - UserInformations .addFile(":/ico/22x22/preferences-desktop-user.png"); - ViewFitWidth .addFile(":/ico/22x22/view_fit_width.png"); - ViewFitWindow .addFile(":/ico/22x22/view-fit-window.png"); - ViewMove .addFile(":/ico/16x16/move.png"); - ViewMove .addFile(":/ico/22x22/move.png"); + Element.addFile(":/ico/breeze-icons/16x16/mimetypes/application-x-qet-element.png"); + Element.addFile(":/ico/breeze-icons/22x22/mimetypes/application-x-qet-element.png"); + Element.addFile(":/ico/breeze-icons/32x32/mimetypes/application-x-qet-element.png"); + ElementDelete = QIcon::fromTheme("element-delete"); + ElementEdit = QIcon::fromTheme("element-edit"); + ElementNew = QIcon::fromTheme("element-new"); + ElementSmall = QIcon::fromTheme("element"); + EllipseToBezier = QIcon::fromTheme("ellipse-to-bezier"); + EndLineCircle = QIcon::fromTheme("endline-circle"); + EndLineDiamond = QIcon::fromTheme("endline-diamond"); + EndLineNone = QIcon::fromTheme("endline-none"); + EndLineSimple = QIcon::fromTheme("endline-simple"); + EndLineTriangle = QIcon::fromTheme("endline-triangle"); + EPS = QIcon::fromTheme("image-x-eps"); + Flip = QIcon::fromTheme("flip"); + Folder = QIcon::fromTheme("folder"); + FolderDelete = QIcon::fromTheme("folder-delete"); + FolderEdit = QIcon::fromTheme("folder-edit"); + FolderNew = QIcon::fromTheme("folder-new"); + FolderOnlyThis = QIcon::fromTheme("folder-only-this"); + FolderOpen = QIcon::fromTheme("folder-open"); + FolderProperties = QIcon::fromTheme("folder-properties"); + FolderShowAll = QIcon::fromTheme("folder-show-all"); + Forbidden = QIcon::fromTheme("user-busy"); + FullScreenEnter = QIcon::fromTheme("view-fullscreen"); + FullScreenExit = QIcon::fromTheme("view-restore"); + GoBottom = QIcon::fromTheme("go-bottom"); + GoDown = QIcon::fromTheme("go-down"); + GoDownDouble = QIcon::fromTheme("go-down-double"); + GoTop = QIcon::fromTheme("go-top"); + GoUp = QIcon::fromTheme("go-up"); + GoUpDouble = QIcon::fromTheme("go-up-double"); + Ground = QIcon::fromTheme("ground"); + Grid = QIcon::fromTheme("grid"); + Hide = QIcon::fromTheme("masquer"); + Home = QIcon::fromTheme("go-home"); + HotSpot = QIcon::fromTheme("hotspot"); + ImageFlipHorizontal = QIcon::fromTheme("image-flip-horizontal"); + ImageFlipVertical = QIcon::fromTheme("image-flip-vertical"); + InsertImage = QIcon::fromTheme("insert-image"); + Lower = QIcon::fromTheme("lower"); + IC_MoveFile = QIcon::fromTheme("item-move"); + Mirror = QIcon::fromTheme("mirror"); + Names = QIcon::fromTheme("names"); + Neutral = QIcon::fromTheme("neutral"); + NewDiagram = QIcon::fromTheme("diagram"); + North = QIcon::fromTheme("north"); + ObjectLocked = QIcon::fromTheme("object-locked"); + ObjectRotateRight = QIcon::fromTheme("object-rotate-right"); + ObjectUnlocked = QIcon::fromTheme("object-unlocked"); + Orientations = QIcon::fromTheme("orientations"); + PartArc = QIcon::fromTheme("arc"); + PartBezier = QIcon::fromTheme("draw-bezier-curves"); + PartCircle = QIcon::fromTheme("circle"); + PartEllipse = QIcon::fromTheme("ellipse"); + PartLine = QIcon::fromTheme("line"); + PartPolygon = QIcon::fromTheme("polygon"); + PartRectangle = QIcon::fromTheme("rectangle"); + PartSelect = QIcon::fromTheme("select"); + PartText = QIcon::fromTheme("text"); + PartTextField = QIcon::fromTheme("textfield"); + PDF = QIcon::fromTheme("application-pdf"); + Phase = QIcon::fromTheme("phase"); + PrintAllPages = QIcon::fromTheme("all_pages"); + Printer = QIcon::fromTheme("printer"); + PrintLandscape = QIcon::fromTheme("landscape"); + PrintPortrait = QIcon::fromTheme("portrait"); + PrintTwoPages = QIcon::fromTheme("two_pages"); + Projects = QIcon::fromTheme("project"); + ProjectClose = QIcon::fromTheme("project-close"); + ProjectNew = QIcon::fromTheme("project-new"); + ProjectFile.addFile(":/ico/breeze-icons/16x16/mimetypes/application-x-qet-project.png"); + ProjectFile.addFile(":/ico/breeze-icons/22x22/mimetypes/application-x-qet-project.png"); + ProjectFile.addFile(":/ico/breeze-icons/32x32/mimetypes/application-x-qet-project.png"); + ProjectProperties = QIcon::fromTheme("project-properties"); + QETDonate = QIcon::fromTheme("help-donate"); + QETDownload = QIcon::fromTheme("edit-download"); + QETIcon.addFile(":/ico/256x256/qelectrotech.png"); + // The elements panel shows the project root with this icon in a 50 px + // slot meant for element previews. The theme name "project" also + // carries the 128 px file used by the configuration dialog, and on a + // 2x display Qt's theme loader would pick it and fill the slot. Load + // the two small files directly so the item stays at 16/22 px. + ProjectFileGP.addFile(":/ico/themes/qet/16x16/project.png"); + ProjectFileGP.addFile(":/ico/themes/qet/22x22/project.png"); + QETLogo = QIcon::fromTheme("qet"); + QETManual = QIcon::fromTheme("help-contents"); + QETLogo.addFile(":/ico/256x256/qet.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/128x128/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/16x16/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/22x22/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/256x256/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/32x32/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/48x48/apps/qelectrotech.png"); + QETOxygenLogo.addFile(":/ico/breeze-icons/64x64/apps/qelectrotech.png"); + QETVideo = QIcon::fromTheme("kdenlive-show-video"); + QtLogo = QIcon::fromTheme("qt"); + Raise = QIcon::fromTheme("raise"); + RectToBezier = QIcon::fromTheme("rect-to-bezier"); + RectToPolyline = QIcon::fromTheme("rect-to-polyline"); + Remove = QIcon::fromTheme("list-remove"); + resize_image = QIcon::fromTheme("transform-scale"); + Restore = QIcon::fromTheme("restaurer"); + RunDxf = QIcon::fromTheme("run-dxf"); + SendBackward = QIcon::fromTheme("send_backward"); + Settings = QIcon::fromTheme("settings"); + SinglePage = QIcon::fromTheme("single_page"); + South = QIcon::fromTheme("south"); + Start = QIcon::fromTheme("start"); + TableOfContent = QIcon::fromTheme("table-of-content"); + Terminal = QIcon::fromTheme("terminal"); + TerminalStrip = QIcon::fromTheme("terminalstrip"); + TitleBlock = QIcon::fromTheme("label"); + TitleBlockBottom = QIcon::fromTheme("titleblock-bottom"); + TitleBlockRight = QIcon::fromTheme("titleblock-right"); + TransformCrop = QIcon::fromTheme("transform-crop"); + TransformRotate = QIcon::fromTheme("transform-rotate"); + UserInformations = QIcon::fromTheme("preferences-desktop-user"); + ViewFitWidth = QIcon::fromTheme("view_fit_width"); + ViewFitWindow = QIcon::fromTheme("view-fit-window"); + ViewMove = QIcon::fromTheme("move"); if (rtl) { - ViewRefresh.addPixmap(QPixmap(":/ico/16x16/view-refresh.png").transformed(reverse)); - ViewRefresh.addPixmap(QPixmap(":/ico/22x22/view-refresh.png").transformed(reverse)); + ViewRefresh.addPixmap(QIcon::fromTheme("view-refresh").pixmap(16).transformed(reverse)); + ViewRefresh.addPixmap(QIcon::fromTheme("view-refresh").pixmap(22).transformed(reverse)); } else { - ViewRefresh .addFile(":/ico/16x16/view-refresh.png"); - ViewRefresh .addFile(":/ico/22x22/view-refresh.png"); + ViewRefresh = QIcon::fromTheme("view-refresh"); } - West .addFile(":/ico/16x16/west.png"); - WindowNew .addFile(":/ico/16x16/window-new.png"); - WindowNew .addFile(":/ico/22x22/window-new.png"); - XmlTextFile .addFile(":/ico/16x16/text-xml.png"); - XmlTextFile .addFile(":/ico/22x22/text-xml.png"); - XmlTextFile .addFile(":/ico/32x32/text-xml.png"); - ZoomDraw .addFile(":/ico/16x16/zoom-draw.png"); - ZoomDraw .addFile(":/ico/22x22/zoom-draw.png"); - ZoomFitBest .addFile(":/ico/16x16/zoom-fit-best.png"); - ZoomFitBest .addFile(":/ico/22x22/zoom-fit-best.png"); - ZoomIn .addFile(":/ico/16x16/zoom-in.png"); - ZoomIn .addFile(":/ico/22x22/zoom-in.png"); - ZoomOriginal .addFile(":/ico/16x16/zoom-original.png"); - ZoomOriginal .addFile(":/ico/22x22/zoom-original.png"); - ZoomOut .addFile(":/ico/16x16/zoom-out.png"); - ZoomOut .addFile(":/ico/22x22/zoom-out.png"); - sa .addFile(":/ico/24x16/sa.png"); - br .addFile(":/ico/24x16/br.png"); - catalonia .addFile(":/ico/24x16/catalonia.png"); - cs .addFile(":/ico/24x16/cs.png"); - da .addFile(":/ico/24x16/dk.png"); - de .addFile(":/ico/24x16/de.png"); - gr .addFile(":/ico/24x16/gr.png"); - en .addFile(":/ico/24x16/en.png"); - es .addFile(":/ico/24x16/es.png"); - fr .addFile(":/ico/24x16/fr.png"); - hr .addFile(":/ico/24x16/hr.png"); - hu .addFile(":/ico/24x16/hu.png"); - it .addFile(":/ico/24x16/it.png"); - jp .addFile(":/ico/24x16/jp.png"); - ko .addFile(":/ico/24x16/kr.png"); - pl .addFile(":/ico/24x16/pl.png"); - pt .addFile(":/ico/24x16/pt.png"); - ro .addFile(":/ico/24x16/ro.png"); - ru .addFile(":/ico/24x16/ru.png"); - sl .addFile(":/ico/24x16/sl.png"); - nl .addFile(":/ico/24x16/nl.png"); - no .addFile(":/ico/24x16/no.png"); - nl_BE .addFile(":/ico/24x16/nl_BE.png"); - tr .addFile(":/ico/24x16/tr.png"); - uk .addFile(":/ico/24x16/ua.png"); - mn .addFile(":/ico/24x16/mn.png"); - zh .addFile(":/ico/24x16/zh.png"); - se .addFile(":/ico/24x16/se.png"); - translation .addFile(":/ico/22x22/applications-development-translation.png"); - listDrawings .addFile(":/ico/48x48/view-pim-journal.png"); - AutoNum .addFile(":/ico/128x128/plasmagik.png"); - sub .addFile(":/ico/22x22/format-text-subscript.png"); - super .addFile(":/ico/22x22/format-text-superscript.png"); - textGroup .addFile(":/ico/16x16/object-group.png"); - ElementMaster .addFile(":/ico/16x16/element-master.png"); - ElementSlave .addFile(":/ico/16x16/element-slave.png"); - FolioXrefComing .addFile(":/ico/16x16/folio-ref-coming.png"); - ElementTerminal .addFile(":/ico/16x16/terminal.png"); - ColorBrown .addFile(":/ico/22x22/color/color-brown.png"); - ColorGray .addFile(":/ico/22x22/color/color-gray.png"); - ColorOrange .addFile(":/ico/22x22/color/color-orange.png"); - ColorPurple .addFile(":/ico/22x22/color/color-purple.png"); - ColorHTMLPinkPink .addFile(":/ico/22x22/color/color-01-pink-01-pink.png"); - ColorHTMLPinkLightPink .addFile(":/ico/22x22/color/color-01-pink-02-lightpink.png"); - ColorHTMLPinkHotPink .addFile(":/ico/22x22/color/color-01-pink-03-hotpink.png"); - ColorHTMLPinkDeepPink .addFile(":/ico/22x22/color/color-01-pink-04-deeppink.png"); - ColorHTMLPinkPaleVioletRed .addFile(":/ico/22x22/color/color-01-pink-05-palevioletred.png"); - ColorHTMLPinkMediumVioletRed .addFile(":/ico/22x22/color/color-01-pink-06-mediumvioletred.png"); - ColorHTMLRedLightSalmon .addFile(":/ico/22x22/color/color-02-red-01-lightsalmon.png"); - ColorHTMLRedSalmon .addFile(":/ico/22x22/color/color-02-red-02-salmon.png"); - ColorHTMLRedDarkSalmon .addFile(":/ico/22x22/color/color-02-red-03-darksalmon.png"); - ColorHTMLRedLightCoral .addFile(":/ico/22x22/color/color-02-red-04-lightcoral.png"); - ColorHTMLRedIndianRed .addFile(":/ico/22x22/color/color-02-red-05-indianred.png"); - ColorHTMLRedCrimson .addFile(":/ico/22x22/color/color-02-red-06-crimson.png"); - ColorHTMLRedFirebrick .addFile(":/ico/22x22/color/color-02-red-07-firebrick.png"); - ColorHTMLRedDarkRed .addFile(":/ico/22x22/color/color-02-red-08-darkred.png"); - ColorHTMLRedRed .addFile(":/ico/22x22/color/color-02-red-09-red.png"); - ColorHTMLOrangeOrangeRed .addFile(":/ico/22x22/color/color-03-orange-01-orangered.png"); - ColorHTMLOrangeTomato .addFile(":/ico/22x22/color/color-03-orange-02-tomato.png"); - ColorHTMLOrangeCoral .addFile(":/ico/22x22/color/color-03-orange-03-coral.png"); - ColorHTMLOrangeDarkOrange .addFile(":/ico/22x22/color/color-03-orange-04-darkorange.png"); - ColorHTMLOrangeOrange .addFile(":/ico/22x22/color/color-03-orange-05-orange.png"); - ColorHTMLYellowYellow .addFile(":/ico/22x22/color/color-04-yellow-01-yellow.png"); - ColorHTMLYellowLightYellow .addFile(":/ico/22x22/color/color-04-yellow-02-lightyellow.png"); - ColorHTMLYellowLemonChiffon .addFile(":/ico/22x22/color/color-04-yellow-03-lemonchiffon.png"); + West = QIcon::fromTheme("west"); + WindowNew = QIcon::fromTheme("window-new"); + XmlTextFile = QIcon::fromTheme("text-xml"); + ZoomDraw = QIcon::fromTheme("zoom-draw"); + ZoomFitBest = QIcon::fromTheme("zoom-fit-best"); + ZoomIn = QIcon::fromTheme("zoom-in"); + ZoomOriginal = QIcon::fromTheme("zoom-original"); + ZoomOut = QIcon::fromTheme("zoom-out"); + sa.addFile(":/ico/24x16/sa.png"); + br.addFile(":/ico/24x16/br.png"); + catalonia.addFile(":/ico/24x16/catalonia.png"); + cs.addFile(":/ico/24x16/cs.png"); + da.addFile(":/ico/24x16/dk.png"); + de.addFile(":/ico/24x16/de.png"); + gr.addFile(":/ico/24x16/gr.png"); + en.addFile(":/ico/24x16/en.png"); + es.addFile(":/ico/24x16/es.png"); + fr.addFile(":/ico/24x16/fr.png"); + hr.addFile(":/ico/24x16/hr.png"); + hu.addFile(":/ico/24x16/hu.png"); + it.addFile(":/ico/24x16/it.png"); + jp.addFile(":/ico/24x16/jp.png"); + ko.addFile(":/ico/24x16/kr.png"); + pl.addFile(":/ico/24x16/pl.png"); + pt.addFile(":/ico/24x16/pt.png"); + ro.addFile(":/ico/24x16/ro.png"); + ru.addFile(":/ico/24x16/ru.png"); + sl.addFile(":/ico/24x16/sl.png"); + nl.addFile(":/ico/24x16/nl.png"); + no.addFile(":/ico/24x16/no.png"); + nl_BE.addFile(":/ico/24x16/nl_BE.png"); + tr.addFile(":/ico/24x16/tr.png"); + uk.addFile(":/ico/24x16/ua.png"); + mn.addFile(":/ico/24x16/mn.png"); + zh.addFile(":/ico/24x16/zh.png"); + se.addFile(":/ico/24x16/se.png"); + translation = QIcon::fromTheme("applications-development-translation"); + listDrawings = QIcon::fromTheme("view-pim-journal"); + AutoNum = QIcon::fromTheme("plasmagik"); + sub = QIcon::fromTheme("format-text-subscript"); + super = QIcon::fromTheme("format-text-superscript"); + textGroup = QIcon::fromTheme("object-group"); + ElementMaster = QIcon::fromTheme("element-master"); + ElementSlave = QIcon::fromTheme("element-slave"); + FolioXrefComing = QIcon::fromTheme("folio-ref-coming"); + ElementTerminal = QIcon::fromTheme("terminal"); + ColorBrown.addFile(":/ico/22x22/color/color-brown.png"); + ColorGray.addFile(":/ico/22x22/color/color-gray.png"); + ColorOrange.addFile(":/ico/22x22/color/color-orange.png"); + ColorPurple.addFile(":/ico/22x22/color/color-purple.png"); + ColorHTMLPinkPink.addFile(":/ico/22x22/color/color-01-pink-01-pink.png"); + ColorHTMLPinkLightPink.addFile(":/ico/22x22/color/color-01-pink-02-lightpink.png"); + ColorHTMLPinkHotPink.addFile(":/ico/22x22/color/color-01-pink-03-hotpink.png"); + ColorHTMLPinkDeepPink.addFile(":/ico/22x22/color/color-01-pink-04-deeppink.png"); + ColorHTMLPinkPaleVioletRed.addFile(":/ico/22x22/color/color-01-pink-05-palevioletred.png"); + ColorHTMLPinkMediumVioletRed.addFile(":/ico/22x22/color/color-01-pink-06-mediumvioletred.png"); + ColorHTMLRedLightSalmon.addFile(":/ico/22x22/color/color-02-red-01-lightsalmon.png"); + ColorHTMLRedSalmon.addFile(":/ico/22x22/color/color-02-red-02-salmon.png"); + ColorHTMLRedDarkSalmon.addFile(":/ico/22x22/color/color-02-red-03-darksalmon.png"); + ColorHTMLRedLightCoral.addFile(":/ico/22x22/color/color-02-red-04-lightcoral.png"); + ColorHTMLRedIndianRed.addFile(":/ico/22x22/color/color-02-red-05-indianred.png"); + ColorHTMLRedCrimson.addFile(":/ico/22x22/color/color-02-red-06-crimson.png"); + ColorHTMLRedFirebrick.addFile(":/ico/22x22/color/color-02-red-07-firebrick.png"); + ColorHTMLRedDarkRed.addFile(":/ico/22x22/color/color-02-red-08-darkred.png"); + ColorHTMLRedRed.addFile(":/ico/22x22/color/color-02-red-09-red.png"); + ColorHTMLOrangeOrangeRed.addFile(":/ico/22x22/color/color-03-orange-01-orangered.png"); + ColorHTMLOrangeTomato.addFile(":/ico/22x22/color/color-03-orange-02-tomato.png"); + ColorHTMLOrangeCoral.addFile(":/ico/22x22/color/color-03-orange-03-coral.png"); + ColorHTMLOrangeDarkOrange.addFile(":/ico/22x22/color/color-03-orange-04-darkorange.png"); + ColorHTMLOrangeOrange.addFile(":/ico/22x22/color/color-03-orange-05-orange.png"); + ColorHTMLYellowYellow.addFile(":/ico/22x22/color/color-04-yellow-01-yellow.png"); + ColorHTMLYellowLightYellow.addFile(":/ico/22x22/color/color-04-yellow-02-lightyellow.png"); + ColorHTMLYellowLemonChiffon.addFile(":/ico/22x22/color/color-04-yellow-03-lemonchiffon.png"); ColorHTMLYellowLightGoldenrodYellow.addFile(":/ico/22x22/color/color-04-yellow-04-lightgoldenrodyellow.png"); - ColorHTMLYellowPapayaWhip .addFile(":/ico/22x22/color/color-04-yellow-05-papayawhip.png"); - ColorHTMLYellowMoccasin .addFile(":/ico/22x22/color/color-04-yellow-06-moccasin.png"); - ColorHTMLYellowPeachPuff .addFile(":/ico/22x22/color/color-04-yellow-07-peachpuff.png"); - ColorHTMLYellowPaleGoldenrod .addFile(":/ico/22x22/color/color-04-yellow-08-palegoldenrod.png"); - ColorHTMLYellowKhaki .addFile(":/ico/22x22/color/color-04-yellow-09-khaki.png"); - ColorHTMLYellowDarkKhaki .addFile(":/ico/22x22/color/color-04-yellow-10-darkkhaki.png"); - ColorHTMLYellowGold .addFile(":/ico/22x22/color/color-04-yellow-11-gold.png"); - ColorHTMLBrownCornsilk .addFile(":/ico/22x22/color/color-05-brown-01-cornsilk.png"); - ColorHTMLBrownBlanchedAlmond .addFile(":/ico/22x22/color/color-05-brown-02-blanchedalmond.png"); - ColorHTMLBrownBisque .addFile(":/ico/22x22/color/color-05-brown-03-bisque.png"); - ColorHTMLBrownNavajoWhite .addFile(":/ico/22x22/color/color-05-brown-04-navajowhite.png"); - ColorHTMLBrownWheat .addFile(":/ico/22x22/color/color-05-brown-05-wheat.png"); - ColorHTMLBrownBurlywood .addFile(":/ico/22x22/color/color-05-brown-06-burlywood.png"); - ColorHTMLBrownTan .addFile(":/ico/22x22/color/color-05-brown-07-tan.png"); - ColorHTMLBrownRosyBrown .addFile(":/ico/22x22/color/color-05-brown-08-rosybrown.png"); - ColorHTMLBrownSandyBrown .addFile(":/ico/22x22/color/color-05-brown-09-sandybrown.png"); - ColorHTMLBrownGoldenrod .addFile(":/ico/22x22/color/color-05-brown-10-goldenrod.png"); - ColorHTMLBrownDarkGoldenrod .addFile(":/ico/22x22/color/color-05-brown-11-darkgoldenrod.png"); - ColorHTMLBrownPeru .addFile(":/ico/22x22/color/color-05-brown-12-peru.png"); - ColorHTMLBrownChocolate .addFile(":/ico/22x22/color/color-05-brown-13-chocolate.png"); - ColorHTMLBrownSaddleBrown .addFile(":/ico/22x22/color/color-05-brown-14-saddlebrown.png"); - ColorHTMLBrownSienna .addFile(":/ico/22x22/color/color-05-brown-15-sienna.png"); - ColorHTMLBrownBrown .addFile(":/ico/22x22/color/color-05-brown-16-brown.png"); - ColorHTMLBrownMaroon .addFile(":/ico/22x22/color/color-05-brown-17-maroon.png"); - ColorHTMLGreenDarkOliveGreen .addFile(":/ico/22x22/color/color-06-green-01-darkolivegreen.png"); - ColorHTMLGreenOlive .addFile(":/ico/22x22/color/color-06-green-02-olive.png"); - ColorHTMLGreenOliveDrab .addFile(":/ico/22x22/color/color-06-green-03-olivedrab.png"); - ColorHTMLGreenYellowGreen .addFile(":/ico/22x22/color/color-06-green-04-yellowgreen.png"); - ColorHTMLGreenLimeGreen .addFile(":/ico/22x22/color/color-06-green-05-limegreen.png"); - ColorHTMLGreenLime .addFile(":/ico/22x22/color/color-06-green-06-lime.png"); - ColorHTMLGreenLawnGreen .addFile(":/ico/22x22/color/color-06-green-07-lawngreen.png"); - ColorHTMLGreenChartreuse .addFile(":/ico/22x22/color/color-06-green-08-chartreuse.png"); - ColorHTMLGreenGreenYellow .addFile(":/ico/22x22/color/color-06-green-09-greenyellow.png"); - ColorHTMLGreenSpringGreen .addFile(":/ico/22x22/color/color-06-green-10-springgreen.png"); - ColorHTMLGreenMediumSpringGreen .addFile(":/ico/22x22/color/color-06-green-11-mediumspringgreen.png"); - ColorHTMLGreenLightGreen .addFile(":/ico/22x22/color/color-06-green-12-lightgreen.png"); - ColorHTMLGreenPaleGreen .addFile(":/ico/22x22/color/color-06-green-13-palegreen.png"); - ColorHTMLGreenDarkSeaGreen .addFile(":/ico/22x22/color/color-06-green-14-darkseagreen.png"); - ColorHTMLGreenMediumAquamarine .addFile(":/ico/22x22/color/color-06-green-15-mediumaquamarine.png"); - ColorHTMLGreenMediumSeaGreen .addFile(":/ico/22x22/color/color-06-green-16-mediumseagreen.png"); - ColorHTMLGreenSeaGreen .addFile(":/ico/22x22/color/color-06-green-17-seagreen.png"); - ColorHTMLGreenForestGreen .addFile(":/ico/22x22/color/color-06-green-18-forestgreen.png"); - ColorHTMLGreenGreen .addFile(":/ico/22x22/color/color-06-green-19-green.png"); - ColorHTMLGreenDarkGreen .addFile(":/ico/22x22/color/color-06-green-20-darkgreen.png"); - ColorHTMLCyanAqua .addFile(":/ico/22x22/color/color-07-cyan-01-aqua.png"); - ColorHTMLCyanCyan .addFile(":/ico/22x22/color/color-07-cyan-02-cyan.png"); - ColorHTMLCyanLightCyan .addFile(":/ico/22x22/color/color-07-cyan-03-lightcyan.png"); - ColorHTMLCyanPaleTurquoise .addFile(":/ico/22x22/color/color-07-cyan-04-paleturquoise.png"); - ColorHTMLCyanAquamarine .addFile(":/ico/22x22/color/color-07-cyan-05-aquamarine.png"); - ColorHTMLCyanTurquoise .addFile(":/ico/22x22/color/color-07-cyan-06-turquoise.png"); - ColorHTMLCyanMediumTurquoise .addFile(":/ico/22x22/color/color-07-cyan-07-mediumturquoise.png"); - ColorHTMLCyanDarkTurquoise .addFile(":/ico/22x22/color/color-07-cyan-08-darkturquoise.png"); - ColorHTMLCyanLightSeaGreen .addFile(":/ico/22x22/color/color-07-cyan-09-lightseagreen.png"); - ColorHTMLCyanCadetBlue .addFile(":/ico/22x22/color/color-07-cyan-10-cadetblue.png"); - ColorHTMLCyanDarkCyan .addFile(":/ico/22x22/color/color-07-cyan-11-darkcyan.png"); - ColorHTMLCyanTeal .addFile(":/ico/22x22/color/color-07-cyan-12-teal.png"); - ColorHTMLBlueLightSteelBlue .addFile(":/ico/22x22/color/color-08-blue-01-lightsteelblue.png"); - ColorHTMLBluePowderBlue .addFile(":/ico/22x22/color/color-08-blue-02-powderblue.png"); - ColorHTMLBlueLightBlue .addFile(":/ico/22x22/color/color-08-blue-03-lightblue.png"); - ColorHTMLBlueSkyBlue .addFile(":/ico/22x22/color/color-08-blue-04-skyblue.png"); - ColorHTMLBlueLightSkyBlue .addFile(":/ico/22x22/color/color-08-blue-05-lightskyblue.png"); - ColorHTMLBlueDeepSkyBlue .addFile(":/ico/22x22/color/color-08-blue-06-deepskyblue.png"); - ColorHTMLBlueDodgerBlue .addFile(":/ico/22x22/color/color-08-blue-07-dodgerblue.png"); - ColorHTMLBlueCornflowerBlue .addFile(":/ico/22x22/color/color-08-blue-08-cornflowerblue.png"); - ColorHTMLBlueSteelBlue .addFile(":/ico/22x22/color/color-08-blue-09-steelblue.png"); - ColorHTMLBlueRoyalBlue .addFile(":/ico/22x22/color/color-08-blue-10-royalblue.png"); - ColorHTMLBlueBlue .addFile(":/ico/22x22/color/color-08-blue-11-blue.png"); - ColorHTMLBlueMediumBlue .addFile(":/ico/22x22/color/color-08-blue-12-mediumblue.png"); - ColorHTMLBlueDarkBlue .addFile(":/ico/22x22/color/color-08-blue-13-darkblue.png"); - ColorHTMLBlueNavy .addFile(":/ico/22x22/color/color-08-blue-14-navy.png"); - ColorHTMLBlueMidnightBlue .addFile(":/ico/22x22/color/color-08-blue-15-midnightblue.png"); - ColorHTMLPurpleLavender .addFile(":/ico/22x22/color/color-09-purple-01-lavender.png"); - ColorHTMLPurpleThistle .addFile(":/ico/22x22/color/color-09-purple-02-thistle.png"); - ColorHTMLPurplePlum .addFile(":/ico/22x22/color/color-09-purple-03-plum.png"); - ColorHTMLPurpleViolet .addFile(":/ico/22x22/color/color-09-purple-04-violet.png"); - ColorHTMLPurpleOrchid .addFile(":/ico/22x22/color/color-09-purple-05-orchid.png"); - ColorHTMLPurpleFuchsia .addFile(":/ico/22x22/color/color-09-purple-06-fuchsia.png"); - ColorHTMLPurpleMagenta .addFile(":/ico/22x22/color/color-09-purple-07-magenta.png"); - ColorHTMLPurpleMediumOrchid .addFile(":/ico/22x22/color/color-09-purple-08-mediumorchid.png"); - ColorHTMLPurpleMediumPurple .addFile(":/ico/22x22/color/color-09-purple-09-mediumpurple.png"); - ColorHTMLPurpleBlueViolet .addFile(":/ico/22x22/color/color-09-purple-10-blueviolet.png"); - ColorHTMLPurpleDarkViolet .addFile(":/ico/22x22/color/color-09-purple-11-darkviolet.png"); - ColorHTMLPurpleDarkOrchid .addFile(":/ico/22x22/color/color-09-purple-12-darkorchid.png"); - ColorHTMLPurpleDarkMagenta .addFile(":/ico/22x22/color/color-09-purple-13-darkmagenta.png"); - ColorHTMLPurplePurple .addFile(":/ico/22x22/color/color-09-purple-14-purple.png"); - ColorHTMLPurpleIndigo .addFile(":/ico/22x22/color/color-09-purple-15-indigo.png"); - ColorHTMLPurpleDarkSlateBlue .addFile(":/ico/22x22/color/color-09-purple-16-darkslateblue.png"); - ColorHTMLPurpleSlateBlue .addFile(":/ico/22x22/color/color-09-purple-17-slateblue.png"); - ColorHTMLPurpleMediumSlateBlue .addFile(":/ico/22x22/color/color-09-purple-18-mediumslateblue.png"); - ColorHTMLWhiteWhite .addFile(":/ico/22x22/color/color-10-white-01-white.png"); - ColorHTMLWhiteSnow .addFile(":/ico/22x22/color/color-10-white-02-snow.png"); - ColorHTMLWhiteHoneydew .addFile(":/ico/22x22/color/color-10-white-03-honeydew.png"); - ColorHTMLWhiteMintCream .addFile(":/ico/22x22/color/color-10-white-04-mintcream.png"); - ColorHTMLWhiteAzure .addFile(":/ico/22x22/color/color-10-white-05-azure.png"); - ColorHTMLWhiteAliceBlue .addFile(":/ico/22x22/color/color-10-white-06-aliceblue.png"); - ColorHTMLWhiteGhostWhite .addFile(":/ico/22x22/color/color-10-white-07-ghostwhite.png"); - ColorHTMLWhiteWhiteSmoke .addFile(":/ico/22x22/color/color-10-white-08-whitesmoke.png"); - ColorHTMLWhiteSeashell .addFile(":/ico/22x22/color/color-10-white-09-seashell.png"); - ColorHTMLWhiteBeige .addFile(":/ico/22x22/color/color-10-white-10-beige.png"); - ColorHTMLWhiteOldLace .addFile(":/ico/22x22/color/color-10-white-11-oldlace.png"); - ColorHTMLWhiteFloralWhite .addFile(":/ico/22x22/color/color-10-white-12-floralwhite.png"); - ColorHTMLWhiteIvory .addFile(":/ico/22x22/color/color-10-white-13-ivory.png"); - ColorHTMLWhiteAntiqueWhite .addFile(":/ico/22x22/color/color-10-white-14-antiquewhite.png"); - ColorHTMLWhiteLinen .addFile(":/ico/22x22/color/color-10-white-15-linen.png"); - ColorHTMLWhiteLavenderBlush .addFile(":/ico/22x22/color/color-10-white-16-lavenderblush.png"); - ColorHTMLWhiteMistyRose .addFile(":/ico/22x22/color/color-10-white-17-mistyrose.png"); - ColorHTMLGrayGainsboro .addFile(":/ico/22x22/color/color-11-gray-01-gainsboro.png"); - ColorHTMLGrayLightGray .addFile(":/ico/22x22/color/color-11-gray-02-lightgray.png"); - ColorHTMLGraySilver .addFile(":/ico/22x22/color/color-11-gray-03-silver.png"); - ColorHTMLGrayDarkGray .addFile(":/ico/22x22/color/color-11-gray-04-darkgray.png"); - ColorHTMLGrayGray .addFile(":/ico/22x22/color/color-11-gray-05-gray.png"); - ColorHTMLGrayDimGray .addFile(":/ico/22x22/color/color-11-gray-06-dimgray.png"); - ColorHTMLGrayLightSlateGray .addFile(":/ico/22x22/color/color-11-gray-07-lightslategray.png"); - ColorHTMLGraySlateGray .addFile(":/ico/22x22/color/color-11-gray-08-slategray.png"); - ColorHTMLGrayDarkSlateGray .addFile(":/ico/22x22/color/color-11-gray-09-darkslategray.png"); - ColorHTMLGrayBlack .addFile(":/ico/22x22/color/color-11-gray-10-black.png"); + ColorHTMLYellowPapayaWhip.addFile(":/ico/22x22/color/color-04-yellow-05-papayawhip.png"); + ColorHTMLYellowMoccasin.addFile(":/ico/22x22/color/color-04-yellow-06-moccasin.png"); + ColorHTMLYellowPeachPuff.addFile(":/ico/22x22/color/color-04-yellow-07-peachpuff.png"); + ColorHTMLYellowPaleGoldenrod.addFile(":/ico/22x22/color/color-04-yellow-08-palegoldenrod.png"); + ColorHTMLYellowKhaki.addFile(":/ico/22x22/color/color-04-yellow-09-khaki.png"); + ColorHTMLYellowDarkKhaki.addFile(":/ico/22x22/color/color-04-yellow-10-darkkhaki.png"); + ColorHTMLYellowGold.addFile(":/ico/22x22/color/color-04-yellow-11-gold.png"); + ColorHTMLBrownCornsilk.addFile(":/ico/22x22/color/color-05-brown-01-cornsilk.png"); + ColorHTMLBrownBlanchedAlmond.addFile(":/ico/22x22/color/color-05-brown-02-blanchedalmond.png"); + ColorHTMLBrownBisque.addFile(":/ico/22x22/color/color-05-brown-03-bisque.png"); + ColorHTMLBrownNavajoWhite.addFile(":/ico/22x22/color/color-05-brown-04-navajowhite.png"); + ColorHTMLBrownWheat.addFile(":/ico/22x22/color/color-05-brown-05-wheat.png"); + ColorHTMLBrownBurlywood.addFile(":/ico/22x22/color/color-05-brown-06-burlywood.png"); + ColorHTMLBrownTan.addFile(":/ico/22x22/color/color-05-brown-07-tan.png"); + ColorHTMLBrownRosyBrown.addFile(":/ico/22x22/color/color-05-brown-08-rosybrown.png"); + ColorHTMLBrownSandyBrown.addFile(":/ico/22x22/color/color-05-brown-09-sandybrown.png"); + ColorHTMLBrownGoldenrod.addFile(":/ico/22x22/color/color-05-brown-10-goldenrod.png"); + ColorHTMLBrownDarkGoldenrod.addFile(":/ico/22x22/color/color-05-brown-11-darkgoldenrod.png"); + ColorHTMLBrownPeru.addFile(":/ico/22x22/color/color-05-brown-12-peru.png"); + ColorHTMLBrownChocolate.addFile(":/ico/22x22/color/color-05-brown-13-chocolate.png"); + ColorHTMLBrownSaddleBrown.addFile(":/ico/22x22/color/color-05-brown-14-saddlebrown.png"); + ColorHTMLBrownSienna.addFile(":/ico/22x22/color/color-05-brown-15-sienna.png"); + ColorHTMLBrownBrown.addFile(":/ico/22x22/color/color-05-brown-16-brown.png"); + ColorHTMLBrownMaroon.addFile(":/ico/22x22/color/color-05-brown-17-maroon.png"); + ColorHTMLGreenDarkOliveGreen.addFile(":/ico/22x22/color/color-06-green-01-darkolivegreen.png"); + ColorHTMLGreenOlive.addFile(":/ico/22x22/color/color-06-green-02-olive.png"); + ColorHTMLGreenOliveDrab.addFile(":/ico/22x22/color/color-06-green-03-olivedrab.png"); + ColorHTMLGreenYellowGreen.addFile(":/ico/22x22/color/color-06-green-04-yellowgreen.png"); + ColorHTMLGreenLimeGreen.addFile(":/ico/22x22/color/color-06-green-05-limegreen.png"); + ColorHTMLGreenLime.addFile(":/ico/22x22/color/color-06-green-06-lime.png"); + ColorHTMLGreenLawnGreen.addFile(":/ico/22x22/color/color-06-green-07-lawngreen.png"); + ColorHTMLGreenChartreuse.addFile(":/ico/22x22/color/color-06-green-08-chartreuse.png"); + ColorHTMLGreenGreenYellow.addFile(":/ico/22x22/color/color-06-green-09-greenyellow.png"); + ColorHTMLGreenSpringGreen.addFile(":/ico/22x22/color/color-06-green-10-springgreen.png"); + ColorHTMLGreenMediumSpringGreen.addFile(":/ico/22x22/color/color-06-green-11-mediumspringgreen.png"); + ColorHTMLGreenLightGreen.addFile(":/ico/22x22/color/color-06-green-12-lightgreen.png"); + ColorHTMLGreenPaleGreen.addFile(":/ico/22x22/color/color-06-green-13-palegreen.png"); + ColorHTMLGreenDarkSeaGreen.addFile(":/ico/22x22/color/color-06-green-14-darkseagreen.png"); + ColorHTMLGreenMediumAquamarine.addFile(":/ico/22x22/color/color-06-green-15-mediumaquamarine.png"); + ColorHTMLGreenMediumSeaGreen.addFile(":/ico/22x22/color/color-06-green-16-mediumseagreen.png"); + ColorHTMLGreenSeaGreen.addFile(":/ico/22x22/color/color-06-green-17-seagreen.png"); + ColorHTMLGreenForestGreen.addFile(":/ico/22x22/color/color-06-green-18-forestgreen.png"); + ColorHTMLGreenGreen.addFile(":/ico/22x22/color/color-06-green-19-green.png"); + ColorHTMLGreenDarkGreen.addFile(":/ico/22x22/color/color-06-green-20-darkgreen.png"); + ColorHTMLCyanAqua.addFile(":/ico/22x22/color/color-07-cyan-01-aqua.png"); + ColorHTMLCyanCyan.addFile(":/ico/22x22/color/color-07-cyan-02-cyan.png"); + ColorHTMLCyanLightCyan.addFile(":/ico/22x22/color/color-07-cyan-03-lightcyan.png"); + ColorHTMLCyanPaleTurquoise.addFile(":/ico/22x22/color/color-07-cyan-04-paleturquoise.png"); + ColorHTMLCyanAquamarine.addFile(":/ico/22x22/color/color-07-cyan-05-aquamarine.png"); + ColorHTMLCyanTurquoise.addFile(":/ico/22x22/color/color-07-cyan-06-turquoise.png"); + ColorHTMLCyanMediumTurquoise.addFile(":/ico/22x22/color/color-07-cyan-07-mediumturquoise.png"); + ColorHTMLCyanDarkTurquoise.addFile(":/ico/22x22/color/color-07-cyan-08-darkturquoise.png"); + ColorHTMLCyanLightSeaGreen.addFile(":/ico/22x22/color/color-07-cyan-09-lightseagreen.png"); + ColorHTMLCyanCadetBlue.addFile(":/ico/22x22/color/color-07-cyan-10-cadetblue.png"); + ColorHTMLCyanDarkCyan.addFile(":/ico/22x22/color/color-07-cyan-11-darkcyan.png"); + ColorHTMLCyanTeal.addFile(":/ico/22x22/color/color-07-cyan-12-teal.png"); + ColorHTMLBlueLightSteelBlue.addFile(":/ico/22x22/color/color-08-blue-01-lightsteelblue.png"); + ColorHTMLBluePowderBlue.addFile(":/ico/22x22/color/color-08-blue-02-powderblue.png"); + ColorHTMLBlueLightBlue.addFile(":/ico/22x22/color/color-08-blue-03-lightblue.png"); + ColorHTMLBlueSkyBlue.addFile(":/ico/22x22/color/color-08-blue-04-skyblue.png"); + ColorHTMLBlueLightSkyBlue.addFile(":/ico/22x22/color/color-08-blue-05-lightskyblue.png"); + ColorHTMLBlueDeepSkyBlue.addFile(":/ico/22x22/color/color-08-blue-06-deepskyblue.png"); + ColorHTMLBlueDodgerBlue.addFile(":/ico/22x22/color/color-08-blue-07-dodgerblue.png"); + ColorHTMLBlueCornflowerBlue.addFile(":/ico/22x22/color/color-08-blue-08-cornflowerblue.png"); + ColorHTMLBlueSteelBlue.addFile(":/ico/22x22/color/color-08-blue-09-steelblue.png"); + ColorHTMLBlueRoyalBlue.addFile(":/ico/22x22/color/color-08-blue-10-royalblue.png"); + ColorHTMLBlueBlue.addFile(":/ico/22x22/color/color-08-blue-11-blue.png"); + ColorHTMLBlueMediumBlue.addFile(":/ico/22x22/color/color-08-blue-12-mediumblue.png"); + ColorHTMLBlueDarkBlue.addFile(":/ico/22x22/color/color-08-blue-13-darkblue.png"); + ColorHTMLBlueNavy.addFile(":/ico/22x22/color/color-08-blue-14-navy.png"); + ColorHTMLBlueMidnightBlue.addFile(":/ico/22x22/color/color-08-blue-15-midnightblue.png"); + ColorHTMLPurpleLavender.addFile(":/ico/22x22/color/color-09-purple-01-lavender.png"); + ColorHTMLPurpleThistle.addFile(":/ico/22x22/color/color-09-purple-02-thistle.png"); + ColorHTMLPurplePlum.addFile(":/ico/22x22/color/color-09-purple-03-plum.png"); + ColorHTMLPurpleViolet.addFile(":/ico/22x22/color/color-09-purple-04-violet.png"); + ColorHTMLPurpleOrchid.addFile(":/ico/22x22/color/color-09-purple-05-orchid.png"); + ColorHTMLPurpleFuchsia.addFile(":/ico/22x22/color/color-09-purple-06-fuchsia.png"); + ColorHTMLPurpleMagenta.addFile(":/ico/22x22/color/color-09-purple-07-magenta.png"); + ColorHTMLPurpleMediumOrchid.addFile(":/ico/22x22/color/color-09-purple-08-mediumorchid.png"); + ColorHTMLPurpleMediumPurple.addFile(":/ico/22x22/color/color-09-purple-09-mediumpurple.png"); + ColorHTMLPurpleBlueViolet.addFile(":/ico/22x22/color/color-09-purple-10-blueviolet.png"); + ColorHTMLPurpleDarkViolet.addFile(":/ico/22x22/color/color-09-purple-11-darkviolet.png"); + ColorHTMLPurpleDarkOrchid.addFile(":/ico/22x22/color/color-09-purple-12-darkorchid.png"); + ColorHTMLPurpleDarkMagenta.addFile(":/ico/22x22/color/color-09-purple-13-darkmagenta.png"); + ColorHTMLPurplePurple.addFile(":/ico/22x22/color/color-09-purple-14-purple.png"); + ColorHTMLPurpleIndigo.addFile(":/ico/22x22/color/color-09-purple-15-indigo.png"); + ColorHTMLPurpleDarkSlateBlue.addFile(":/ico/22x22/color/color-09-purple-16-darkslateblue.png"); + ColorHTMLPurpleSlateBlue.addFile(":/ico/22x22/color/color-09-purple-17-slateblue.png"); + ColorHTMLPurpleMediumSlateBlue.addFile(":/ico/22x22/color/color-09-purple-18-mediumslateblue.png"); + ColorHTMLWhiteWhite.addFile(":/ico/22x22/color/color-10-white-01-white.png"); + ColorHTMLWhiteSnow.addFile(":/ico/22x22/color/color-10-white-02-snow.png"); + ColorHTMLWhiteHoneydew.addFile(":/ico/22x22/color/color-10-white-03-honeydew.png"); + ColorHTMLWhiteMintCream.addFile(":/ico/22x22/color/color-10-white-04-mintcream.png"); + ColorHTMLWhiteAzure.addFile(":/ico/22x22/color/color-10-white-05-azure.png"); + ColorHTMLWhiteAliceBlue.addFile(":/ico/22x22/color/color-10-white-06-aliceblue.png"); + ColorHTMLWhiteGhostWhite.addFile(":/ico/22x22/color/color-10-white-07-ghostwhite.png"); + ColorHTMLWhiteWhiteSmoke.addFile(":/ico/22x22/color/color-10-white-08-whitesmoke.png"); + ColorHTMLWhiteSeashell.addFile(":/ico/22x22/color/color-10-white-09-seashell.png"); + ColorHTMLWhiteBeige.addFile(":/ico/22x22/color/color-10-white-10-beige.png"); + ColorHTMLWhiteOldLace.addFile(":/ico/22x22/color/color-10-white-11-oldlace.png"); + ColorHTMLWhiteFloralWhite.addFile(":/ico/22x22/color/color-10-white-12-floralwhite.png"); + ColorHTMLWhiteIvory.addFile(":/ico/22x22/color/color-10-white-13-ivory.png"); + ColorHTMLWhiteAntiqueWhite.addFile(":/ico/22x22/color/color-10-white-14-antiquewhite.png"); + ColorHTMLWhiteLinen.addFile(":/ico/22x22/color/color-10-white-15-linen.png"); + ColorHTMLWhiteLavenderBlush.addFile(":/ico/22x22/color/color-10-white-16-lavenderblush.png"); + ColorHTMLWhiteMistyRose.addFile(":/ico/22x22/color/color-10-white-17-mistyrose.png"); + ColorHTMLGrayGainsboro.addFile(":/ico/22x22/color/color-11-gray-01-gainsboro.png"); + ColorHTMLGrayLightGray.addFile(":/ico/22x22/color/color-11-gray-02-lightgray.png"); + ColorHTMLGraySilver.addFile(":/ico/22x22/color/color-11-gray-03-silver.png"); + ColorHTMLGrayDarkGray.addFile(":/ico/22x22/color/color-11-gray-04-darkgray.png"); + ColorHTMLGrayGray.addFile(":/ico/22x22/color/color-11-gray-05-gray.png"); + ColorHTMLGrayDimGray.addFile(":/ico/22x22/color/color-11-gray-06-dimgray.png"); + ColorHTMLGrayLightSlateGray.addFile(":/ico/22x22/color/color-11-gray-07-lightslategray.png"); + ColorHTMLGraySlateGray.addFile(":/ico/22x22/color/color-11-gray-08-slategray.png"); + ColorHTMLGrayDarkSlateGray.addFile(":/ico/22x22/color/color-11-gray-09-darkslategray.png"); + ColorHTMLGrayBlack.addFile(":/ico/22x22/color/color-11-gray-10-black.png"); } diff --git a/sources/richtext/richtexteditor.cpp b/sources/richtext/richtexteditor.cpp index 489d3391a..9c8b9b0a6 100644 --- a/sources/richtext/richtexteditor.cpp +++ b/sources/richtext/richtexteditor.cpp @@ -514,19 +514,19 @@ RichTextEditorToolBar::RichTextEditorToolBar(RichTextEditor *editor, // Bold, italic and underline buttons m_bold_action = createCheckableAction( - QIcon(":/ico/32x32/format-text-bold.png"), + QIcon::fromTheme("format-text-bold"), tr("Texte en gras"), editor, &RichTextEditor::setFontBold, this); ShortcutManager::instance().registerAction(m_bold_action, "richtext.bold", tr("Éditeur de texte"), Qt::CTRL | Qt::Key_B); addAction(m_bold_action); m_italic_action = createCheckableAction( - QIcon(":/ico/32x32/format-text-italic.png"), + QIcon::fromTheme("format-text-italic"), tr("Texte en italique"), editor, &RichTextEditor::setFontItalic, this); ShortcutManager::instance().registerAction(m_italic_action, "richtext.italic", tr("Éditeur de texte"), Qt::CTRL | Qt::Key_I); addAction(m_italic_action); m_underline_action = createCheckableAction( - QIcon(":/ico/32x32/format-text-underline.png"), + QIcon::fromTheme("format-text-underline"), tr("Texte souligé"), editor, &RichTextEditor::setFontUnderline, this); ShortcutManager::instance().registerAction(m_underline_action, "richtext.underline", tr("Éditeur de texte"), Qt::CTRL | Qt::Key_U); addAction(m_underline_action); @@ -567,13 +567,13 @@ RichTextEditorToolBar::RichTextEditorToolBar(RichTextEditor *editor, // Superscript and subscript buttons m_valign_sup_action = createCheckableAction( - QIcon(":/ico/22x22/format-text-superscript.png"), + QIcon::fromTheme("format-text-superscript"), tr("Superscript"), this, &RichTextEditorToolBar::setVAlignSuper, this); addAction(m_valign_sup_action); m_valign_sub_action = createCheckableAction( - QIcon(":/ico/22x22/format-text-subscript.png"), + QIcon::fromTheme("format-text-subscript"), tr("Subscript"), this, &RichTextEditorToolBar::setVAlignSub, this); addAction(m_valign_sub_action); @@ -601,7 +601,7 @@ RichTextEditorToolBar::RichTextEditorToolBar(RichTextEditor *editor, // Simplify rich text m_simplify_richtext_action = createCheckableAction( - QIcon(":/ico/32x32/simplifyrichtext.png"), + QIcon::fromTheme("simplifyrichtext"), tr("Simplify Rich Text"), editor, &RichTextEditor::setSimplifyRichText, this); m_simplify_richtext_action->setChecked(editor->simplifyRichText()); connect(m_editor, &RichTextEditor::simplifyRichTextChanged, m_simplify_richtext_action, &QAction::setChecked); diff --git a/sources/ui/conductorpropertieswidget.ui b/sources/ui/conductorpropertieswidget.ui index 48ea44ac8..8a31d43a3 100644 --- a/sources/ui/conductorpropertieswidget.ui +++ b/sources/ui/conductorpropertieswidget.ui @@ -233,7 +233,7 @@ - + :/ico/16x16/configure.png:/ico/16x16/configure.png @@ -363,7 +363,7 @@ neutre - + :/ico/16x16/neutral.png:/ico/16x16/neutral.png @@ -377,7 +377,7 @@ terre - + :/ico/16x16/ground.png:/ico/16x16/ground.png @@ -391,7 +391,7 @@ phase - + :/ico/16x16/phase.png:/ico/16x16/phase.png diff --git a/sources/ui/configsaveloaderwidget.ui b/sources/ui/configsaveloaderwidget.ui index f0b69605b..aaa8aa130 100644 --- a/sources/ui/configsaveloaderwidget.ui +++ b/sources/ui/configsaveloaderwidget.ui @@ -29,7 +29,7 @@ - + :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png @@ -40,7 +40,7 @@ - + :/ico/16x16/document-save.png:/ico/16x16/document-save.png diff --git a/sources/ui/dynamicelementtextitemeditor.ui b/sources/ui/dynamicelementtextitemeditor.ui index 66a326d4f..273637c2e 100644 --- a/sources/ui/dynamicelementtextitemeditor.ui +++ b/sources/ui/dynamicelementtextitemeditor.ui @@ -25,7 +25,7 @@ ... - + :/ico/16x16/document-save.png:/ico/16x16/document-save.png @@ -39,7 +39,7 @@ ... - + :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png @@ -66,7 +66,7 @@ ... - + :/ico/22x22/textfield.png:/ico/22x22/textfield.png @@ -80,7 +80,7 @@ ... - + :/ico/16x16/object-group.png:/ico/16x16/object-group.png @@ -94,7 +94,7 @@ ... - + :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png diff --git a/sources/ui/masterpropertieswidget.ui b/sources/ui/masterpropertieswidget.ui index 71eb57dd8..910ac27c0 100644 --- a/sources/ui/masterpropertieswidget.ui +++ b/sources/ui/masterpropertieswidget.ui @@ -136,7 +136,7 @@ - + :/ico/16x16/go-up.png:/ico/16x16/go-up.png @@ -150,7 +150,7 @@ - + :/ico/16x16/go-down.png:/ico/16x16/go-down.png diff --git a/sources/ui/thirdpartybinaryinstalldialog.ui b/sources/ui/thirdpartybinaryinstalldialog.ui index 899666d2c..cbd94b056 100644 --- a/sources/ui/thirdpartybinaryinstalldialog.ui +++ b/sources/ui/thirdpartybinaryinstalldialog.ui @@ -33,7 +33,7 @@ Télechargement - + :/ico/16x16/edit-download.png:/ico/16x16/edit-download.png @@ -44,7 +44,7 @@ Dossier installation - + :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png diff --git a/sources/ui/titleblockpropertieswidget.ui b/sources/ui/titleblockpropertieswidget.ui index 2389eabcf..0be2a3623 100644 --- a/sources/ui/titleblockpropertieswidget.ui +++ b/sources/ui/titleblockpropertieswidget.ui @@ -94,7 +94,7 @@ - + :/ico/22x22/titleblock-bottom.png:/ico/22x22/titleblock-bottom.png @@ -103,7 +103,7 @@ - + :/ico/22x22/titleblock-right.png:/ico/22x22/titleblock-right.png @@ -121,7 +121,7 @@ - + :/ico/22x22/edit-rename.png:/ico/22x22/edit-rename.png @@ -210,7 +210,7 @@ - + :/ico/16x16/configure.png:/ico/16x16/configure.png @@ -305,7 +305,7 @@ - + :/ico/22x22/start.png:/ico/22x22/start.png diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 855a9acd2..638d3961a 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -82,12 +82,28 @@ target_link_libraries(tst_contactusage PRIVATE Qt::Test) add_executable( tst_qetpalette tst_qetpalette.cpp + inkcontrast.h ${QET_DIR}/sources/qetpalette.cpp ${QET_DIR}/sources/qetpalette.h) add_test(NAME tst_qetpalette COMMAND tst_qetpalette) target_include_directories(tst_qetpalette PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_qetpalette PRIVATE Qt::Test Qt::Widgets) +# qeticons.cpp is compiled in so the test can check the table entries +# themselves (icon sizes in the element panel), not only the theme files. +add_executable( + tst_qeticons + tst_qeticons.cpp + inkcontrast.h + ${QET_DIR}/sources/qeticons.cpp + ${QET_DIR}/sources/qeticons.h + ${QET_DIR}/sources/qetpalette.cpp + ${QET_DIR}/sources/qetpalette.h + ${QET_DIR}/ico/icon-themes.qrc) +add_test(NAME tst_qeticons COMMAND tst_qeticons) +target_include_directories(tst_qeticons PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_qeticons PRIVATE Qt::Test Qt::Widgets Qt::Svg) + add_executable( tst_smart_device tst_smart_device.cpp diff --git a/tests/qttest/inkcontrast.h b/tests/qttest/inkcontrast.h new file mode 100644 index 000000000..282a4db2e --- /dev/null +++ b/tests/qttest/inkcontrast.h @@ -0,0 +1,77 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#ifndef QET_TEST_INKCONTRAST_H +#define QET_TEST_INKCONTRAST_H + +#include +#include +#include +#include +#include +#include + +#include "qetpalette.h" + +/** + Shared helpers for the rendering tests: paint a widget on the offscreen + platform and measure the ink against the background. +*/ +namespace QET { + namespace Test { + /** + Grab a widget for measuring. With QET_TEST_DUMP_DIR set, the + image is also written there as -.png so a failure + can be looked at. + */ + inline QImage grab(QWidget *widget, const char *name) + { + const QImage image = widget->grab().toImage(); + const QByteArray dir = qgetenv("QET_TEST_DUMP_DIR"); + if (!dir.isEmpty()) + image.save(QString("%1/%2-%3.png").arg(QString::fromLocal8Bit(dir), + QTest::currentDataTag(), name)); + return image; + } + + /** + Contrast between the background of a rendered widget (its most + frequent color) and the ink drawn on it (the pixel whose + luminance differs most from the background), inside rect. + */ + inline double inkContrast(const QImage &image, const QRect &rect) + { + QHash histogram; + for (int y = rect.top(); y <= rect.bottom(); ++y) + for (int x = rect.left(); x <= rect.right(); ++x) + ++histogram[image.pixel(x, y)]; + + QRgb background = 0; + int best = -1; + for (auto it = histogram.cbegin(); it != histogram.cend(); ++it) + if (it.value() > best) { best = it.value(); background = it.key(); } + + double contrast = 1.0; + for (auto it = histogram.cbegin(); it != histogram.cend(); ++it) + contrast = qMax(contrast, QET::Palette::contrastRatio(QColor(background), + QColor(it.key()))); + return contrast; + } + } +} + +#endif diff --git a/tests/qttest/tst_qeticons.cpp b/tests/qttest/tst_qeticons.cpp new file mode 100644 index 000000000..af5966d0d --- /dev/null +++ b/tests/qttest/tst_qeticons.cpp @@ -0,0 +1,166 @@ +/* + Copyright 2006-2026 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "inkcontrast.h" +#include "qeticons.h" +#include "qetpalette.h" + +/** + Checks on QET's icon theme "qet", generated by misc/make_icon_themes.py + into ico/icon-themes.qrc, and on the icon table that uses it. + + Every icon name must resolve. A toolbar button painted with Fusion must + show its icon at 3:1 (WCAG 1.4.11), with the disabled state reading + weaker than the enabled one. And the icons the elements panel draws in + its 50 px slots must stay small (GitHub #870). +*/ +class tst_qeticons : public QObject +{ + Q_OBJECT + + private slots: + void initTestCase(); + void everyIconResolves(); + void toolbarIconIsReadable_data(); + void toolbarIconIsReadable(); + void panelProjectIconStaysSmall(); +}; + +namespace { + const double kIconRatio = 3.0; + + QStringList iconNames(const QString &theme) + { + QStringList names; + for (const QString &size : {"16x16", "22x22", "32x32", "48x48", "128x128", "scalable"}) + { + QDir dir(QString(":/ico/themes/%1/%2").arg(theme, size)); + for (const QString &file : dir.entryList(QDir::Files)) + names << file.section('.', 0, -2); + } + names.removeDuplicates(); + names.sort(); + return names; + } +} + +void tst_qeticons::initTestCase() +{ + QStringList paths = QIcon::themeSearchPaths(); + paths.prepend(QStringLiteral(":/ico/themes")); + QIcon::setThemeSearchPaths(paths); + QIcon::setThemeName(QStringLiteral("qet")); + QVERIFY2(!iconNames("qet").isEmpty(), "theme has no icons: is ico/icon-themes.qrc compiled in?"); +} + +void tst_qeticons::everyIconResolves() +{ + QVERIFY(QIcon::hasThemeIcon("list-add")); + for (const QString &name : iconNames("qet")) + QVERIFY2(!QIcon::fromTheme(name).isNull(), qPrintable(QString("%1 missing").arg(name))); + // Names the icon table relies on that come from the alias list in + // misc/make_icon_themes.py, not from a file of that name at 22 pixels. + for (const QString &name : {"folio-new", "folio-delete", "folio-properties", "conductor-reset"}) + QVERIFY2(!QIcon::fromTheme(name).pixmap(22).isNull(), qPrintable(name)); +} + +void tst_qeticons::toolbarIconIsReadable_data() +{ + QTest::addColumn("palette"); + QTest::newRow("light") << QET::Palette::fusionLight(); +} + +/** + A line-art icon on a Fusion tool button, as in the diagram editor + toolbar. Enabled must reach 3:1; disabled must be weaker than enabled. +*/ +void tst_qeticons::toolbarIconIsReadable() +{ + QFETCH(QPalette, palette); + QApplication::setStyle(QStyleFactory::create("Fusion")); + QApplication::setPalette(palette); + + QMainWindow window; + QToolBar *toolbar = window.addToolBar("view"); + auto make = [&](const char *name, bool enabled) { + auto *button = new QToolButton; + button->setIcon(QIcon::fromTheme("zoom-fit-best")); + button->setAutoRaise(true); + button->setEnabled(enabled); + button->setObjectName(name); + toolbar->addWidget(button); + return button; + }; + QToolButton *enabled = make("enabled", true); + QToolButton *disabled = make("disabled", false); + window.resize(300, 100); + window.show(); + QVERIFY(QTest::qWaitForWindowExposed(&window)); + + const double enabled_contrast = QET::Test::inkContrast(QET::Test::grab(enabled, "enabled"), enabled->rect()); + const double disabled_contrast = QET::Test::inkContrast(QET::Test::grab(disabled, "disabled"), disabled->rect()); + QVERIFY2(enabled_contrast >= kIconRatio, + qPrintable(QString("enabled icon: %1").arg(enabled_contrast))); + QVERIFY2(disabled_contrast < enabled_contrast, + qPrintable(QString("disabled %1 reads better than enabled %2") + .arg(disabled_contrast).arg(enabled_contrast))); +} + +/** + The elements panel sets a 50 px icon size so element previews are + large. Its project root item uses ProjectFileGP, whose theme name also + has a 128 px file for the configuration dialog. On a 2x display the + theme loader would pick that file for a 50 px request and fill the + slot, so the entry must not resolve through the theme name. +*/ +void tst_qeticons::panelProjectIconStaysSmall() +{ +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QSKIP("QIcon::pixmap(size, devicePixelRatio) needs Qt 6"); +#else + QET::Icons::initIcons(); + + const QPixmap panel = QET::Icons::ProjectFileGP.pixmap(QSize(50, 50), 2.0); + QVERIFY(!panel.isNull()); + const int logical = qRound(panel.width() / panel.devicePixelRatio()); + QVERIFY2(logical <= 22, qPrintable(QString("project root icon is %1 px in a 50 px slot").arg(logical))); + + // The configuration dialog's page list still gets the large file. + QCOMPARE(QET::Icons::Projects.pixmap(QSize(128, 128), 1.0).width(), 128); +#endif +} + +int main(int argc, char **argv) +{ + if (qEnvironmentVariableIsEmpty("QT_QPA_PLATFORM")) + qputenv("QT_QPA_PLATFORM", "offscreen"); + QApplication app(argc, argv); + tst_qeticons test; + QTEST_SET_MAIN_SOURCE_PATH + return QTest::qExec(&test, argc, argv); +} + +#include "tst_qeticons.moc" diff --git a/tests/qttest/tst_qetpalette.cpp b/tests/qttest/tst_qetpalette.cpp index 7cc589bdd..ccbe07f15 100644 --- a/tests/qttest/tst_qetpalette.cpp +++ b/tests/qttest/tst_qetpalette.cpp @@ -28,9 +28,12 @@ #include #include +#include "inkcontrast.h" #include "qetpalette.h" using QET::Palette::contrastRatio; +using QET::Test::grab; +using QET::Test::inkContrast; /** Contrast checks for the palettes QET installs under the Fusion style. @@ -94,44 +97,6 @@ namespace { {"Link/Window", QPalette::Link, QPalette::Window}, }; - /** - Grab a widget for measuring. With QET_TEST_DUMP_DIR set, the image - is also written there as -.png so a failure can be - looked at. - */ - QImage grab(QWidget *widget, const char *name) - { - const QImage image = widget->grab().toImage(); - const QByteArray dir = qgetenv("QET_TEST_DUMP_DIR"); - if (!dir.isEmpty()) - image.save(QString("%1/%2-%3.png").arg(QString::fromLocal8Bit(dir), - QTest::currentDataTag(), name)); - return image; - } - - /** - Contrast between the background of a rendered widget (its most - frequent color) and the ink drawn on it (the pixel whose luminance - differs most from the background), inside rect. - */ - double inkContrast(const QImage &image, const QRect &rect) - { - QHash histogram; - for (int y = rect.top(); y <= rect.bottom(); ++y) - for (int x = rect.left(); x <= rect.right(); ++x) - ++histogram[image.pixel(x, y)]; - - QRgb background = 0; - int best = -1; - for (auto it = histogram.cbegin(); it != histogram.cend(); ++it) - if (it.value() > best) { best = it.value(); background = it.key(); } - - double contrast = 1.0; - for (auto it = histogram.cbegin(); it != histogram.cend(); ++it) - contrast = qMax(contrast, contrastRatio(QColor(background), - QColor(it.key()))); - return contrast; - } } void tst_qetpalette::addPaletteRows()