From 86da56b866debff7ee0c659c1c4021a33520f4c1 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 19:13:01 +1300 Subject: [PATCH 01/18] Fix bugtracker #112: no snap in the symbol editor below 100 % zoom Below 100 % ElementView::drawBackground() hid the grid and also set the snap step to 1 unit, so anything dragged while zoomed out landed off the grid with nothing on screen to show it. A large symbol opens fitted to the window below 100 %, which is why the report also says "when the selection is big". Keep hiding the grid below 100 % (its dots would merge into a grey wash), but snap every 10 units, as at 100 %. The zoom-to-grid rule moves into a header-only ElementViewGrid so it can be tested without an editor window, like textgrid.h. Checked in the editor: a one-rectangle symbol zoomed out to about 0.6x, its edge dragged by (15, 10) px and saved: master moves it by (28, 18), this branch by (30, 20). tst_elementviewgrid fails with the old step 1 and passes now; ctest 45/45. Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/editor/elementview.cpp | 28 ++++--------- sources/editor/elementviewgrid.h | 60 ++++++++++++++++++++++++++++ tests/qttest/CMakeLists.txt | 7 ++++ tests/qttest/tst_elementviewgrid.cpp | 45 +++++++++++++++++++++ 4 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 sources/editor/elementviewgrid.h create mode 100644 tests/qttest/tst_elementviewgrid.cpp diff --git a/sources/editor/elementview.cpp b/sources/editor/elementview.cpp index 6eed40457..641581820 100644 --- a/sources/editor/elementview.cpp +++ b/sources/editor/elementview.cpp @@ -17,6 +17,8 @@ */ #include "elementview.h" +#include "elementviewgrid.h" + #include "../qetapp.h" #include "UndoCommand/pastepartscommand.h" #include "ui/qetelementeditor.h" @@ -535,27 +537,11 @@ void ElementView::drawBackground(QPainter *p, const QRectF &r) { // choisit la granularite de la grille en fonction du zoom en cours // selects the grid granularity according to the current zoom level - int drawn_x_grid = 1;//scene_ -> xGrid(); - int drawn_y_grid = 1;//scene_ -> yGrid(); - bool draw_grid = true; - bool draw_cross = false; - - if (zoom_factor < 1.0) { //< no grid - draw_grid = false; - } else if (zoom_factor < 4.0) { //< grid 10*10 - drawn_x_grid *= 10; - drawn_y_grid *= 10; - }else if (zoom_factor < 8.0) { //< grid 5*5 - drawn_x_grid *= 5; - drawn_y_grid *= 5; - draw_cross = true; - } else if (zoom_factor < 10.0) { //< grid 2*2 - drawn_x_grid *= 2; - drawn_y_grid *= 2; - draw_cross = true; - } else { //< grid 1*1 - draw_cross = true; - } + const ElementViewGrid grid = ElementViewGrid::forZoom(zoom_factor); + const int drawn_x_grid = grid.step; + const int drawn_y_grid = grid.step; + const bool draw_grid = grid.draw_grid; + const bool draw_cross = grid.draw_cross; m_scene->setGrid(drawn_x_grid, drawn_y_grid); diff --git a/sources/editor/elementviewgrid.h b/sources/editor/elementviewgrid.h new file mode 100644 index 000000000..7a6b2a7e9 --- /dev/null +++ b/sources/editor/elementviewgrid.h @@ -0,0 +1,60 @@ +/* + 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 ELEMENTVIEWGRID_H +#define ELEMENTVIEWGRID_H + +#include + +/** + The symbol editor's grid at a given zoom: the step parts snap to, and + how the grid is drawn. The step gets finer as the view zooms in, so a + small detail can be placed precisely. + + Below 100 % the grid is not drawn (its dots would merge into a grey + wash), but parts still snap every 10 units, as at 100 %. Snapping to 1 + unit there left everything dragged while zoomed out off the grid, with + nothing on screen to show it (bugtracker #112). +*/ +struct ElementViewGrid +{ + int step = 10; + bool draw_grid = true; + bool draw_cross = false; + + static ElementViewGrid forZoom(qreal zoom_factor) + { + ElementViewGrid grid; + if (zoom_factor < 1.0) { + grid.draw_grid = false; + } else if (zoom_factor < 4.0) { + grid.step = 10; + } else if (zoom_factor < 8.0) { + grid.step = 5; + grid.draw_cross = true; + } else if (zoom_factor < 10.0) { + grid.step = 2; + grid.draw_cross = true; + } else { + grid.step = 1; + grid.draw_cross = true; + } + return grid; + } +}; + +#endif // ELEMENTVIEWGRID_H diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 3b1085990..9fc364762 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -104,6 +104,13 @@ add_test(NAME tst_textgrid COMMAND tst_textgrid) target_include_directories(tst_textgrid PRIVATE ${QET_DIR}/sources) target_link_libraries(tst_textgrid PRIVATE Qt::Test) +# elementviewgrid.h is header-only: the symbol editor's snap step at each +# zoom (bugtracker #112), tested without an editor window. +add_executable(tst_elementviewgrid tst_elementviewgrid.cpp) +add_test(NAME tst_elementviewgrid COMMAND tst_elementviewgrid) +target_include_directories(tst_elementviewgrid PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_elementviewgrid PRIVATE Qt::Test) + # alignment.h is header-only too (it builds on textgrid.h): the geometry # behind the align commands, tested without a scene. add_executable(tst_alignment tst_alignment.cpp) diff --git a/tests/qttest/tst_elementviewgrid.cpp b/tests/qttest/tst_elementviewgrid.cpp new file mode 100644 index 000000000..5082666f6 --- /dev/null +++ b/tests/qttest/tst_elementviewgrid.cpp @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +#include "editor/elementviewgrid.h" + +// The symbol editor's snap step at each zoom (bugtracker #112): below +// 100 % the grid is hidden but parts must still snap every 10 units. +class tst_elementviewgrid : public QObject +{ + Q_OBJECT + +private slots: + void stepAtZoom_data() + { + QTest::addColumn("zoom"); + QTest::addColumn("step"); + QTest::addColumn("drawGrid"); + QTest::addColumn("drawCross"); + + QTest::newRow("10 % (fit to a big symbol)") << 0.10 << 10 << false << false; + QTest::newRow("62.5 %, the #112 case") << 0.625 << 10 << false << false; + QTest::newRow("100 %") << 1.0 << 10 << true << false; + QTest::newRow("200 %") << 2.0 << 10 << true << false; + QTest::newRow("400 %") << 4.0 << 5 << true << true; + QTest::newRow("800 %") << 8.0 << 2 << true << true; + QTest::newRow("1000 %") << 10.0 << 1 << true << true; + } + + void stepAtZoom() + { + QFETCH(qreal, zoom); + QFETCH(int, step); + QFETCH(bool, drawGrid); + QFETCH(bool, drawCross); + + const ElementViewGrid grid = ElementViewGrid::forZoom(zoom); + QCOMPARE(grid.step, step); + QCOMPARE(grid.draw_grid, drawGrid); + QCOMPARE(grid.draw_cross, drawCross); + } +}; + +QTEST_APPLESS_MAIN(tst_elementviewgrid) + +#include "tst_elementviewgrid.moc" From 003eda2cb8d304eb86cd55ff686417c7d2c7987c Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 21:04:53 +1300 Subject: [PATCH 02/18] Fix Project properties saving the Page Num placeholder as a numbering name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Projet > Propriétés du projet > Nouveau folio, the Page Num box shows a "Créer un Folio Numérotation Auto" entry when the project has no folio auto-numbering. Pressing OK, even without touching anything, returned that entry's text as the numbering's name: it was saved in the project as auto_page_num (in the interface's language), and since it differed from the stored empty value the project was marked modified. When the project has numberings, an empty stored value cannot be shown at all, so the first numbering came back instead. Return the stored value unless the user picks an entry (activated() is only emitted for a user's choice), and never return the placeholder. Checked in the GUI on grafcet, schema_indus and Projet_vierge: after OK with no edit and Ctrl+S, master saves auto_page_num="Créer un Folio Numérotation Auto"; this branch keeps auto_page_num="". An edited field on the same page (default author) is still saved. Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/ui/titleblockpropertieswidget.cpp | 13 ++++++++++++- sources/ui/titleblockpropertieswidget.h | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/sources/ui/titleblockpropertieswidget.cpp b/sources/ui/titleblockpropertieswidget.cpp index 929b557c2..f0d99a61a 100644 --- a/sources/ui/titleblockpropertieswidget.cpp +++ b/sources/ui/titleblockpropertieswidget.cpp @@ -123,6 +123,8 @@ void TitleBlockPropertiesWidget::setProperties( ui -> m_folio_le -> setText (properties.folio); ui -> m_display_at_cb -> setCurrentIndex(properties.display_at == Qt::BottomEdge ? 0 : 1); ui->auto_page_cb->setCurrentText(properties.auto_page_num); + m_auto_page_num = properties.auto_page_num; + m_auto_page_num_picked = false; //About date ui -> m_date_now_pb -> setDisabled(true); @@ -216,7 +218,13 @@ TitleBlockProperties TitleBlockPropertiesWidget::properties() const prop.context = m_dcw -> context(); - prop.auto_page_num = ui->auto_page_cb->currentText(); + //The combo box cannot show "no folio numbering": it shows its + //placeholder entry, or the project's first numbering. Return what + //was set unless the user picked something else. + if (!m_auto_page_num_picked) + prop.auto_page_num = m_auto_page_num; + else if (ui->auto_page_cb->currentText() != tr("Créer un Folio Numérotation Auto")) + prop.auto_page_num = ui->auto_page_cb->currentText(); return prop; } @@ -376,6 +384,9 @@ void TitleBlockPropertiesWidget::initDialog( foreach (QString str, keys_2) { ui -> auto_page_cb -> addItem(str); } if (ui->auto_page_cb->currentText()==nullptr) ui->auto_page_cb->addItem(tr("Créer un Folio Numérotation Auto")); + //activated() is only emitted for a choice the user makes + connect(ui->auto_page_cb, qOverload(&QComboBox::activated), + this, [this]() { m_auto_page_num_picked = true; }); } else{ ui->auto_page_cb->hide(); diff --git a/sources/ui/titleblockpropertieswidget.h b/sources/ui/titleblockpropertieswidget.h index 0622da8a5..6736bfcdf 100644 --- a/sources/ui/titleblockpropertieswidget.h +++ b/sources/ui/titleblockpropertieswidget.h @@ -105,6 +105,10 @@ class TitleBlockPropertiesWidget : public QWidget QList m_tbt_collection_list; QList m_map_index_to_collection_type; QList keys_2; + /// auto_page_num as given to setProperties(), returned + /// unchanged unless the user picks another folio numbering + QString m_auto_page_num; + bool m_auto_page_num_picked = false; }; #endif // TITLEBLOCKPROPERTIESWIDGET_H From 82fc56c5e675d112d89c4aafdd250219715cad1a Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 21:04:54 +1300 Subject: [PATCH 03/18] Fix Project properties > OK marking the project modified with no edit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pressing OK in Projet > Propriétés du projet without changing anything marked the project modified and rewrote its defaults for new folios. Besides the Page Num placeholder (fixed separately), four causes: - Title block custom fields: since #271 the dialog offers the template's variables for filling in; those left empty came back as part of the context. Drop the ones not in the stored context. - DiagramContext::remove() left the key's show flag behind, so a context with a key removed never equalled one without it. - Guides: applyConf() marked the project modified whether or not the guides changed. Compare them like every other setting. - Wire dash size and cross-reference offsets: the spin boxes cannot show the stored default (dash size 1 under a minimum of 2; offset 0 under a minimum of 40 shown as "Default"), so the clamped value came back. Keep the stored value unless the box shows something else, as #1204 did for the wire panel. Checked in the GUI (with the Page Num fix as well) on grafcet, schema_indus and Projet_vierge: OK with no edit then Ctrl+S saves the same file as Ctrl+S alone; master writes dash-size 1 -> 2, a cross-reference offset 0 -> 40, and on Projet_vierge 22 empty custom fields. New test for DiagramContext::remove() fails without the fix. Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/diagramcontext.cpp | 1 + sources/ui/conductorpropertieswidget.cpp | 6 ++++++ sources/ui/configpage/configpages.cpp | 6 ++++-- sources/ui/titleblockpropertieswidget.cpp | 9 +++++++++ sources/ui/titleblockpropertieswidget.h | 2 ++ sources/ui/xrefpropertieswidget.cpp | 11 +++++++++-- tests/qttest/tst_diagramcontext.cpp | 18 ++++++++++++++++++ 7 files changed, 49 insertions(+), 4 deletions(-) diff --git a/sources/diagramcontext.cpp b/sources/diagramcontext.cpp index 94b8696a2..b6228e36e 100644 --- a/sources/diagramcontext.cpp +++ b/sources/diagramcontext.cpp @@ -42,6 +42,7 @@ void DiagramContext::add(DiagramContext other) */ void DiagramContext::remove(const QString &key) { m_content.remove(key); + m_content_show.remove(key); } /** diff --git a/sources/ui/conductorpropertieswidget.cpp b/sources/ui/conductorpropertieswidget.cpp index d8e3e57a6..d203880a1 100644 --- a/sources/ui/conductorpropertieswidget.cpp +++ b/sources/ui/conductorpropertieswidget.cpp @@ -126,6 +126,12 @@ ConductorProperties ConductorPropertiesWidget::properties() const properties_.m_bicolor = ui->m_color_2_gb->isChecked(); properties_.m_color_2 = ui->m_color_2_kpb->color(); properties_.m_dash_size = ui->m_dash_size_sb->value(); + //The box starts at 2, so the default size 1 shows as 2: keep the + //stored size unless the box shows something else. + if (properties_.m_dash_size == qBound(ui->m_dash_size_sb->minimum(), + m_properties.m_dash_size, + ui->m_dash_size_sb->maximum())) + properties_.m_dash_size = m_properties.m_dash_size; properties_.style = ui -> m_line_style_cb->itemData(ui->m_line_style_cb->currentIndex()).value().style(); properties_.m_formula = ui->m_formula_le->text(); properties_.text = ui -> m_text_le -> text(); diff --git a/sources/ui/configpage/configpages.cpp b/sources/ui/configpage/configpages.cpp index 7c2db969d..b9ac8562c 100644 --- a/sources/ui/configpage/configpages.cpp +++ b/sources/ui/configpage/configpages.cpp @@ -233,8 +233,10 @@ void NewDiagramPage::applyConf() pg.color = g.color; proj_guides.append(pg); } - m_project->setDefaultGuides(proj_guides); - modified_project = true; + if (m_project->defaultGuides() != proj_guides) { + m_project->setDefaultGuides(proj_guides); + modified_project = true; + } if (modified_project) { m_project -> setModified(modified_project); diff --git a/sources/ui/titleblockpropertieswidget.cpp b/sources/ui/titleblockpropertieswidget.cpp index 929b557c2..ac1d92bb2 100644 --- a/sources/ui/titleblockpropertieswidget.cpp +++ b/sources/ui/titleblockpropertieswidget.cpp @@ -166,6 +166,7 @@ void TitleBlockPropertiesWidget::setProperties( // Show the saved custom values, plus any of the template's custom variables // that aren't defined yet, so the user only fills in the missing ones (#271). DiagramContext context = properties.context; + m_context_keys = context.keys(); addTemplateVariables(context, index); m_dcw -> setContext(context); } @@ -215,6 +216,14 @@ TitleBlockProperties TitleBlockPropertiesWidget::properties() const } prop.context = m_dcw -> context(); + //The template's custom variables are only offered for filling in + //(#271): one left empty is not part of the properties. + const QList keys = prop.context.keys(); + for (const QString &key : keys) { + if (!m_context_keys.contains(key) + && prop.context.value(key).toString().isEmpty()) + prop.context.remove(key); + } prop.auto_page_num = ui->auto_page_cb->currentText(); diff --git a/sources/ui/titleblockpropertieswidget.h b/sources/ui/titleblockpropertieswidget.h index 0622da8a5..58ec00be7 100644 --- a/sources/ui/titleblockpropertieswidget.h +++ b/sources/ui/titleblockpropertieswidget.h @@ -100,6 +100,8 @@ class TitleBlockPropertiesWidget : public QWidget private: Ui::TitleBlockPropertiesWidget *ui; DiagramContextWidget *m_dcw; + /// keys of the context given to setProperties() + QStringList m_context_keys; QAction *m_tbt_edit, *m_tbt_duplicate; QMenu *m_tbt_menu; QList m_tbt_collection_list; diff --git a/sources/ui/xrefpropertieswidget.cpp b/sources/ui/xrefpropertieswidget.cpp index c113eda45..d08c8d5c7 100644 --- a/sources/ui/xrefpropertieswidget.cpp +++ b/sources/ui/xrefpropertieswidget.cpp @@ -151,8 +151,15 @@ void XRefPropertiesWidget::saveProperties(int index) { xrp.setPrefix("switch", ui->m_switch_prefix_le->text()); xrp.setMasterLabel(ui->m_master_le->text()); xrp.setSlaveLabel(ui->m_slave_le->text()); - xrp.setOffset(ui->m_offset_sb->value()); - xrp.setSlaveOffset(ui->m_slave_offset_sb->value()); + //The boxes cannot show a value below their minimum (the offset's + //minimum is its "Default" entry, standing for the stored 0): keep + //the stored value unless the box shows something else. + if (ui->m_offset_sb->value() != qBound(ui->m_offset_sb->minimum(), xrp.offset(), + ui->m_offset_sb->maximum())) + xrp.setOffset(ui->m_offset_sb->value()); + if (ui->m_slave_offset_sb->value() != qBound(ui->m_slave_offset_sb->minimum(), xrp.slaveOffset(), + ui->m_slave_offset_sb->maximum())) + xrp.setSlaveOffset(ui->m_slave_offset_sb->value()); m_properties.insert(type, xrp); } diff --git a/tests/qttest/tst_diagramcontext.cpp b/tests/qttest/tst_diagramcontext.cpp index f0e004b0d..640dee9e7 100644 --- a/tests/qttest/tst_diagramcontext.cpp +++ b/tests/qttest/tst_diagramcontext.cpp @@ -65,6 +65,24 @@ private slots: QCOMPARE(fromDom(xml(value)), expected); QCOMPARE(fromPugi(xml(value)), expected); } + + // remove() forgets the key entirely: a context with a key added + // then removed equals one that never had it. remove() used to keep + // the key's show flag, so the two never compared equal, and + // Project properties > OK saw a change where there was none. + void removeForgetsTheKey() + { + DiagramContext edited; + edited.addValue(QStringLiteral("author"), QStringLiteral("N.V.")); + edited.addValue(QStringLiteral("01-numprojet"), QString()); + edited.remove(QStringLiteral("01-numprojet")); + + DiagramContext stored; + stored.addValue(QStringLiteral("author"), QStringLiteral("N.V.")); + + QCOMPARE(edited.keys(), stored.keys()); + QVERIFY(edited == stored); + } }; QTEST_APPLESS_MAIN(tst_diagramcontext) From a16bac8f84a3902f36980c4510641a5f66bed537 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 21:09:24 +1300 Subject: [PATCH 04/18] Snap a moved multi-part selection to the editor grid too (bugtracker #112) A selection of several parts is moved by ElementPrimitiveDecorator, which snapped to a fixed 1-unit step at every zoom. That is the "selection is big" half of #112: below 100 % one part landed on the 10 grid but a multi-part selection did not, and at 100-400 % it ignored the grid too. It now snaps to the editor's current grid, as a single part does; Ctrl still gives the fine 1-unit step. Resizing and arrow-key moves are unchanged. Also from review: add rows just below each zoom threshold to tst_elementviewgrid (each catches a moved threshold the old rows missed), and use one grid_step in drawBackground() instead of identical x/y copies. Co-Authored-By: Claude Opus 5.5 --- sources/editor/elementprimitivedecorator.cpp | 8 +++++++- sources/editor/elementview.cpp | 13 ++++++------- tests/qttest/tst_elementviewgrid.cpp | 8 ++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/sources/editor/elementprimitivedecorator.cpp b/sources/editor/elementprimitivedecorator.cpp index 3b678a7d4..8c01c3693 100644 --- a/sources/editor/elementprimitivedecorator.cpp +++ b/sources/editor/elementprimitivedecorator.cpp @@ -206,7 +206,13 @@ void ElementPrimitiveDecorator::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { // When moving the selection, consider the position of the first selected item QPointF current_position = scene_pos - mouse_offset_; - QPointF rounded_current_position = snapConstPointToGrid(current_position); + // Snap to the editor's grid, as a single part does (bugtracker + // #112); Ctrl keeps the fine 1-unit step. + ElementScene *element_scene = qobject_cast(scene()); + QPointF rounded_current_position = + (element_scene && !(event->modifiers() & Qt::ControlModifier)) + ? element_scene->snapToGrid(current_position) + : snapConstPointToGrid(current_position); movement = rounded_current_position - decorated_items_.at(0) -> toItem() -> scenePos(); QRectF bounding_rect = modified_bounding_rect_; diff --git a/sources/editor/elementview.cpp b/sources/editor/elementview.cpp index 641581820..588ac2399 100644 --- a/sources/editor/elementview.cpp +++ b/sources/editor/elementview.cpp @@ -538,12 +538,11 @@ void ElementView::drawBackground(QPainter *p, const QRectF &r) { // choisit la granularite de la grille en fonction du zoom en cours // selects the grid granularity according to the current zoom level const ElementViewGrid grid = ElementViewGrid::forZoom(zoom_factor); - const int drawn_x_grid = grid.step; - const int drawn_y_grid = grid.step; + const int grid_step = grid.step; const bool draw_grid = grid.draw_grid; const bool draw_cross = grid.draw_cross; - m_scene->setGrid(drawn_x_grid, drawn_y_grid); + m_scene->setGrid(grid_step, grid_step); if (draw_grid) { // draw the dots of the grid @@ -573,12 +572,12 @@ void ElementView::drawBackground(QPainter *p, const QRectF &r) { qreal limit_y = r.y() + r.height(); int g_x = (int)ceil(r.x()); - while (g_x % drawn_x_grid) ++ g_x; + while (g_x % grid_step) ++ g_x; int g_y = (int)ceil(r.y()); - while (g_y % drawn_y_grid) ++ g_y; + while (g_y % grid_step) ++ g_y; - for (int gx = g_x ; gx < limit_x ; gx += drawn_x_grid) { - for (int gy = g_y ; gy < limit_y ; gy += drawn_y_grid) { + for (int gx = g_x ; gx < limit_x ; gx += grid_step) { + for (int gy = g_y ; gy < limit_y ; gy += grid_step) { if (draw_cross) { if (!(gx % 10) && !(gy % 10)) { p -> drawLine(QLineF(gx - (pen.width()/4.0), gy, gx + (pen.width()/4.0), gy)); diff --git a/tests/qttest/tst_elementviewgrid.cpp b/tests/qttest/tst_elementviewgrid.cpp index 5082666f6..bf3c48e3b 100644 --- a/tests/qttest/tst_elementviewgrid.cpp +++ b/tests/qttest/tst_elementviewgrid.cpp @@ -24,6 +24,14 @@ private slots: QTest::newRow("400 %") << 4.0 << 5 << true << true; QTest::newRow("800 %") << 8.0 << 2 << true << true; QTest::newRow("1000 %") << 10.0 << 1 << true << true; + + // Just below each threshold: the comparisons are strict (<), so a + // change to <= would move these rows into the next band. + QTest::newRow("99.9 %") << 0.999 << 10 << false << false; + QTest::newRow("399.9 %") << 3.999 << 10 << true << false; + QTest::newRow("401 %") << 4.01 << 5 << true << true; + QTest::newRow("799.9 %") << 7.999 << 5 << true << true; + QTest::newRow("999.9 %") << 9.999 << 2 << true << true; } void stepAtZoom() From b4c0e2a52aa742b9286f84c03b6596324d40fc08 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 21:31:59 +1300 Subject: [PATCH 05/18] Fix dragging parts selected in the symbol editor's Parts list Selecting several parts by clicking them in the Parts list, then dragging one on the drawing, moved only the part under the cursor; the others stayed where they were. No selection handles were shown either. updateSelectionFromPartsList() blocks the scene's signals while it copies the list selection to the drawing, so selectionChanged never reached ElementScene::managePrimitivesGroups(), which sets up the decorator that moves a multi-part selection. Call it once the signals are unblocked. Co-Authored-By: Claude Opus 5.5 --- sources/editor/ui/qetelementeditor.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sources/editor/ui/qetelementeditor.cpp b/sources/editor/ui/qetelementeditor.cpp index dfb81b1ec..7469a2a26 100644 --- a/sources/editor/ui/qetelementeditor.cpp +++ b/sources/editor/ui/qetelementeditor.cpp @@ -765,6 +765,9 @@ void QETElementEditor::updateSelectionFromPartsList() } m_parts_list -> blockSignals(false); m_elmt_scene -> blockSignals(false); + //selectionChanged was blocked above, so the selection decorator must be + //updated by hand, otherwise dragging moves only the part under the cursor + m_elmt_scene -> managePrimitivesGroups(); updateInformations(); updateAction(); } From ec262d1af9f2e80e947eefa62c92a32388d0d9d7 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 21:49:42 +1300 Subject: [PATCH 06/18] Fix placing a symbol a second time in a project with an extra category XmlElementCollection::importCategory() returned the project collection's first category, taken to be "import". A project can hold other top-level categories before it: examples/lmdg.qet has "k_elem" first. Imported symbols were then filed under k_elem/, while every lookup of an imported symbol is under import/ (QETProject::importElement(), XmlElementCollection::addElement()). The first placement worked; the second could not find the copy, tried to import it again and failed. In the editor the drop silently placed nothing; a script's qet.addElement() returned "". Look the category up by name, falling back to the first one as before when a project has none called "import". Test: tst_importcategory places the same symbol twice in a copy of lmdg.qet through --run. It fails without the fix (the second placement returns "") and passes with it. ctest 45/45. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../xmlelementcollection.cpp | 10 ++ tests/qttest/CMakeLists.txt | 13 +++ tests/qttest/tst_importcategory.cpp | 95 +++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 tests/qttest/tst_importcategory.cpp diff --git a/sources/ElementsCollection/xmlelementcollection.cpp b/sources/ElementsCollection/xmlelementcollection.cpp index 940988da6..d3bb9713a 100644 --- a/sources/ElementsCollection/xmlelementcollection.cpp +++ b/sources/ElementsCollection/xmlelementcollection.cpp @@ -157,6 +157,16 @@ QDomElement XmlElementCollection::root() const */ QDomElement XmlElementCollection::importCategory() const { + //Found by name: a project may hold other top-level categories, + //and before the "import" one (lmdg.qet has "k_elem" first). Every + //lookup of an imported element is under "import/", so filing it + //anywhere else made the next placement of the same symbol fail. + for (QDomElement category = root().firstChildElement("category") ; + !category.isNull() ; + category = category.nextSiblingElement("category")) { + if (category.attribute("name") == QLatin1String("import")) + return category; + } return root().firstChildElement("category"); } diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 3b1085990..f75cf27b6 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -467,6 +467,19 @@ if(QET_HAS_SCRIPTING) "QET_TEST_BINARY_PATH=\"$\"" "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") + # The same symbol placed twice in a project whose collection does not + # start with its "import" category (examples/lmdg.qet). + add_executable( + tst_importcategory + tst_importcategory.cpp) + add_test(NAME tst_importcategory COMMAND tst_importcategory) + add_dependencies(tst_importcategory qelectrotech) + target_link_libraries(tst_importcategory PRIVATE Qt::Test) + target_compile_definitions(tst_importcategory PRIVATE + "QET_TEST_BINARY_PATH=\"$\"" + "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"" + "QET_ELEMENTS_DIR=\"${QET_DIR}/elements\"") + # qet.currentFolio() through --run: the first folio, or -1 with none; and # --run keeps one undo step per call (only an editor run is grouped). add_executable( diff --git a/tests/qttest/tst_importcategory.cpp b/tests/qttest/tst_importcategory.cpp new file mode 100644 index 000000000..6ea53d641 --- /dev/null +++ b/tests/qttest/tst_importcategory.cpp @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +#include +#include +#include +#include +#include +#include +#include + +// Placing the same symbol twice in lmdg.qet: its embedded collection has a +// "k_elem" category before "import". Imported symbols were filed under the +// first category while every lookup is under "import/", so the second +// placement could not find the first copy, tried to import it again, and +// failed -- in a script (qet.addElement() returned "") and in the editor, +// where the drop silently placed nothing. +class tst_importcategory : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + + // Run @p script on @p project in a sandbox of its own and return the + // JSON object it logged. + QJsonObject run(const QString &script, const QString &project) + { + const QString path = m_dir.filePath(QStringLiteral("probe.js")); + const QString home = m_dir.filePath(QStringLiteral("home")); + QDir().mkpath(home + QStringLiteral("/config/QElectroTech")); + //The shipped collection, so common:// paths resolve; forward + //slashes, as Qt reads a backslash here as an escape. + QFile conf(home + QStringLiteral("/config/QElectroTech/QElectroTech.conf")); + if (!conf.open(QIODevice::WriteOnly)) return {}; + conf.write("[elements-collections]\ncommon-collection-path=" + QET_ELEMENTS_DIR "\n"); + conf.close(); + QFile f(path); + if (!f.open(QIODevice::WriteOnly)) return {}; + f.write(script.toUtf8()); + f.close(); + + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + env.insert(QStringLiteral("QET_ENABLE_SCRIPTING"), QStringLiteral("1")); + env.insert(QStringLiteral("HOME"), home); + env.insert(QStringLiteral("XDG_CONFIG_HOME"), home + QStringLiteral("/config")); + env.insert(QStringLiteral("XDG_DATA_HOME"), home + QStringLiteral("/data")); + env.insert(QStringLiteral("TMPDIR"), m_dir.path()); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), + {QStringLiteral("--run"), path, project}); + if (!proc.waitForFinished(120000)) return {}; + const QString out = QString::fromUtf8(proc.readAllStandardOutput() + + proc.readAllStandardError()); + const QString mark = QStringLiteral("PROBE "); + for (const QString &line : out.split(QLatin1Char('\n'))) { + const int i = line.indexOf(mark); + if (i >= 0) + return QJsonDocument::fromJson(line.mid(i + mark.size()).toUtf8()).object(); + } + return {}; + } + +private slots: + void initTestCase() + { + QVERIFY(m_dir.isValid()); + QVERIFY(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH))); + } + + void sameSymbolTwiceInLmdg() + { + const QString project = m_dir.filePath(QStringLiteral("lmdg.qet")); + QVERIFY(QFile::copy(QStringLiteral(QET_EXAMPLES_DIR "/lmdg.qet"), project)); + + const QJsonObject r = run(QStringLiteral( + "var p = 'common://10_electric/10_allpole/310_relays_contactors_contacts/" + "01_coils/bobine_ka_a_remanence.elmt';\n" + "var a = qet.addElement(0, p, 100, 100);\n" + "var b = qet.addElement(0, p, 300, 100);\n" + "qet.log('PROBE ' + JSON.stringify({first: a, second: b}));\n"), + project); + QVERIFY2(!r.isEmpty(), "the script logged nothing"); + QVERIFY2(!r.value(QStringLiteral("first")).toString().isEmpty(), + "the first placement failed"); + QVERIFY2(!r.value(QStringLiteral("second")).toString().isEmpty(), + "the second placement of the same symbol failed"); + } +}; + +QTEST_GUILESS_MAIN(tst_importcategory) + +#include "tst_importcategory.moc" From eb2367e400a55e38c00cd590a295207d90a57fba Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:19:39 +1300 Subject: [PATCH 07/18] Put a potential's one text on the same conductor in every run With "one text per potential" on, the number is drawn on the potential's longest conductor. When two conductors tie for longest, longestConductorInPotential() kept whichever it met first, iterating a QSet in pointer order -- which changes from run to run. The same file, exported twice, could put the number on either conductor: same numbers, different PDF. A tie is now broken by where the conductors' ends are on the folio, then by uuid. Not by uuid first: a file with no conductor uuids gets fresh ones on every load, and a project generated again by a script gets new ones each time, while the drawing is the same. tst_potentialtextcarrier exports a fixture with such a tie eight times; before the fix it failed in each of three tries. Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/qetgraphicsitem/conductor.cpp | 50 ++- tests/qttest/CMakeLists.txt | 13 + .../fixtures/one_text_per_potential_tie.qet | 320 ++++++++++++++++++ tests/qttest/tst_potentialtextcarrier.cpp | 81 +++++ 4 files changed, 462 insertions(+), 2 deletions(-) create mode 100644 tests/qttest/fixtures/one_text_per_potential_tie.qet create mode 100644 tests/qttest/tst_potentialtextcarrier.cpp diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 4d658129f..0d2faa2f2 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -2311,12 +2311,58 @@ QPointF Conductor::movePointIntoPolygon(const QPointF &point, const QPainterPath @param all_diagram : true -> search in the whole project, false -> search only in the diagram of conductor @return the longest conductor in the same potential of conductor */ +namespace { + /// The two ends of @p conductor on the folio, smaller first, compared + /// by x then y. + QPair conductorEnds(const Conductor *conductor) + { + auto less = [](const QPointF &a, const QPointF &b) { + return a.x() < b.x() || (a.x() == b.x() && a.y() < b.y()); + }; + QPointF a = conductor->terminal1 ? conductor->terminal1->dockConductor() : QPointF(); + QPointF b = conductor->terminal2 ? conductor->terminal2->dockConductor() : QPointF(); + if (less(b, a)) + std::swap(a, b); + return qMakePair(a, b); + } + + /// True if @p a comes before @p b in an order that is the same in every + /// run: by where the conductor's ends are on the folio, then by uuid. + /// Not by uuid first: a project generated again by a script gets new + /// uuids each time, and a file with no conductor uuids gets new ones on + /// every load, while the drawing is the same. + bool stableConductorLess(const Conductor *a, const Conductor *b) + { + const auto ea = conductorEnds(a), eb = conductorEnds(b); + const qreal ka[4] = {ea.first.x(), ea.first.y(), ea.second.x(), ea.second.y()}; + const qreal kb[4] = {eb.first.x(), eb.first.y(), eb.second.x(), eb.second.y()}; + for (int i = 0; i < 4; ++i) + if (ka[i] != kb[i]) + return ka[i] < kb[i]; + return a->uuid() < b->uuid(); + } +} + Conductor * longestConductorInPotential(Conductor *conductor, bool all_diagram) { Conductor *longest_conductor = conductor; - //Search the longest conductor + qreal longest_length = conductor->length(); + //Search the longest conductor. + //Conductors of equal length are common (a symmetrical layout), and the + //set is iterated in pointer order, which changes from run to run: so a + //tie is broken by an order that does not, or the potential's text lands + //on a different conductor each time the same file is opened or exported. foreach (Conductor *c, conductor -> relatedPotentialConductors(all_diagram)) - if (c -> length() > longest_conductor -> length()) + { + const qreal length = c->length(); + if (qAbs(length - longest_length) < 1e-6) { + if (stableConductorLess(c, longest_conductor)) + longest_conductor = c; + } + else if (length > longest_length) { longest_conductor = c; + longest_length = length; + } + } return longest_conductor; } diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 3b1085990..e8a75a1d3 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -388,6 +388,19 @@ target_compile_definitions(tst_wiringlistexport PRIVATE "QET_TEST_BINARY_PATH=\"$\"" "QET_EXAMPLES_DIR=\"${QET_DIR}/examples\"") +# One text per potential: the number goes on the same conductor in every +# run when two conductors tie for longest. Exports +# fixtures/one_text_per_potential_tie.qet through the real binary, several +# times, since the order it used to depend on changes only between runs. +add_executable( + tst_potentialtextcarrier + tst_potentialtextcarrier.cpp) +add_test(NAME tst_potentialtextcarrier COMMAND tst_potentialtextcarrier) +add_dependencies(tst_potentialtextcarrier qelectrotech) +target_link_libraries(tst_potentialtextcarrier PRIVATE Qt::Test) +target_compile_definitions(tst_potentialtextcarrier PRIVATE + "QET_TEST_BINARY_PATH=\"$\"") + # Hops where wires cross (issue #436): the geometry in wirehops.cpp, and # through the real binary, that --resave keeps the project setting and # adds nothing to a project without it. diff --git a/tests/qttest/fixtures/one_text_per_potential_tie.qet b/tests/qttest/fixtures/one_text_per_potential_tie.qet new file mode 100644 index 000000000..31f27e377 --- /dev/null +++ b/tests/qttest/fixtures/one_text_per_potential_tie.qet @@ -0,0 +1,320 @@ + + + 10/2/26 + 02-10-2026 + 2026-10-02 + one_text_per_potential_tie + one_text_per_potential_tie.qet + 22:07 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label + + + + + + + + + + + + + + label + + + + + + + + + + + + + + label + + + + + + + + + + + + + + label + + + + + + + + + + + + + + + + + + + + + Elements importats + Zavedené prvky + Importerede elementer + Importierte Elemente + Εισηγμένα στοιχεία + Imported elements + Elementos importados + Éléments importés + Uvezeni elementi + Elementi importati + インバートされた要素 + 전기 심볼 요소 + 전기 심볼 요소 + Elementen geïmporteerd + Elementen geïmporteerd + Elementy importowane + Elementos importados + Elementos importados + Elemente importate + Импортированные элементы + Uvoženi elementi + Importerade element + İthal öğeler + Імпортовані елементи + 导入元件 + + + + كهربائي + Elèctric + Elektrotechnika + Elektrisk + Elektrik + Ηλεκτρικά + Electric + Eléctrica + Sähkö + Electrique + Električno + Elektromos + Elettrica + 電気 + 전기 + Цахилгаан + Elektrisk + Elektrotechniek + Elektrisch + Elektrotechnika + Elétrico + Elétrica + Electric + Электротехника + Elektrické + Elektrika + Електрика + El + Elektrik + Електрика + 10_电气 + 电气工程 + + + + متعدد الأقطاب + Multifilar + Vícežilový + Flere ledere + Allpolig + Πολυγραμμικό + All-pole + Multifilar + Yleisnapa + Multifilaire + Univerzalni + Többvonalas szimbólumok + Multifilare + 複線 + 다-극 + Бүх туйл + Alle poler + Veel polig + All-pole + Schematy wieloliniowe + Multipolar + Multifilar + Bipolar + Многополюсные + Všepólové + Vsi poli + Свe-полни + Allpolig + Çok kutuplu + Багатополюсні + 10_全极 + + + + إلكترونيات وأشباه موصلات + Electrònica i semiconductors + Elektronika a polovodiče + Elektronik og halvledere + Elektronik und Halbleiter + Ηλεκτρονικά και ημιαγωγοί + Electronics and semiconductors + Electrónica y semiconductores + Elektroniikka ja puolijohteet + Electronique et semi-conducteurs + Elektronika i poluvodiči + Elektronika és félvezetők + Elettronica e semiconduttori + 電子と半導体 + 전자 공학 및 반도체 + Электроник ба хагас дамжуулагч + Elektronikk og halvledere + Electronica en halfgeleiders + Elektronica en halfgeleiders + Elektronika i półprzewodniki + Eletrónica e semicondutores + Eletrônica e semi-condutoues + Electronică și semiconductoare + Электроника и полупроводники + Elektronika a polovodiče + Elektronika in polprevodniki + Електроника и полупроводници + Elektronik och halvledare + Elektronik ve yarı iletkenler + Електроніка та напівпровідники + 电子与半导体 + + + + مُقاومة + Resistències + Odpory + Modstande + Widerstände + Αντιστάσεις + Resistors + Resistencias + Vastukset + Résistances + Otpornici + Ellenállások + Resistori + 抵抗器 + 저항 + Эсэргүүцэл + Motstander + Weerstand + Weerstanden + Rezystory + Resistência + Resistores + Rezistoare + Резисторы + Rezistory + Upori + Отпорници + Motstånd + Dirençler + Резистори + 电阻器 + + + + + + مُقاومة + Resistència + Odpor + Modstand + Widerstand + Αντίσταση + Resistor + Resistencia + Vastus + Résistance + Otpornik + Ellenállás + Resistore + 抵抗器 + 저항 + Резистор + Motstand + Weerstand + Weerstand + Rezystor + Resistência + Resistor + Rezistor + Резистор + Rezistor + Upor + Отпорник + Resistor + Direnç + Резистор + 电阻 + + EN 60617: 04-01-01 + + + + + + label + + + + + + + + + + + + + diff --git a/tests/qttest/tst_potentialtextcarrier.cpp b/tests/qttest/tst_potentialtextcarrier.cpp new file mode 100644 index 000000000..559ef0ce0 --- /dev/null +++ b/tests/qttest/tst_potentialtextcarrier.cpp @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +#include +#include +#include +#include +#include +#include + +// With "one text per potential" on, the potential's number is drawn on its +// longest conductor. fixtures/one_text_per_potential_tie.qet has two +// conductors of the same, greatest length in one potential: which of them +// carried the number used to follow pointer order, so the same file +// exported twice could put it on either. Runs the real binary, in separate +// processes, since that order only changes from one run to the next. +class tst_potentialtextcarrier : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + + // Export the fixture to SVG and return where the number is drawn: the + // transform of the group holding it. Empty if it is not drawn exactly + // once. + QString carrier(int run) + { + const QString home = m_dir.filePath(QStringLiteral("home%1").arg(run)); + const QString out = m_dir.filePath(QStringLiteral("svg%1").arg(run)); + QDir().mkpath(home); + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + env.insert(QStringLiteral("HOME"), home); + env.insert(QStringLiteral("XDG_CONFIG_HOME"), home + QStringLiteral("/config")); + env.insert(QStringLiteral("XDG_DATA_HOME"), home + QStringLiteral("/data")); + env.insert(QStringLiteral("TMPDIR"), home); + QProcess proc; + proc.setProcessEnvironment(env); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), + {QStringLiteral("--export-svg"), + QFINDTESTDATA("fixtures/one_text_per_potential_tie.qet"), out}); + if (!proc.waitForFinished(60000) || proc.exitCode() != 0) + return {}; + + const QStringList svgs = QDir(out).entryList({QStringLiteral("*.svg")}); + if (svgs.size() != 1) + return {}; + QFile f(QDir(out).filePath(svgs.first())); + if (!f.open(QIODevice::ReadOnly)) + return {}; + const QString svg = QString::fromUtf8(f.readAll()); + + static const QRegularExpression re( + QStringLiteral("transform=\"([^\"]*)\"[^<]*>\\s*]*>42")); + QStringList found; + auto it = re.globalMatch(svg); + while (it.hasNext()) + found << it.next().captured(1); + return found.size() == 1 ? found.first() : QString(); + } + +private slots: + void initTestCase() + { + QVERIFY(m_dir.isValid()); + QVERIFY(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH))); + } + + // Before the fix about half the runs differed from the first, so + // eight agreeing runs leave a 1 in 128 chance of a false pass. + void sameCarrierEveryRun() + { + const QString first = carrier(0); + QVERIFY2(!first.isEmpty(), "the number is not drawn exactly once"); + for (int run = 1; run < 8; ++run) + QCOMPARE(carrier(run), first); + } +}; + +QTEST_GUILESS_MAIN(tst_potentialtextcarrier) +#include "tst_potentialtextcarrier.moc" From af184ed986350c3ddd476eead7495a3384bb6e04 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:22:18 +1300 Subject: [PATCH 08/18] Read symbol files through QFile so paths past 260 characters work on Windows ElementsLocation::pugiXml() and the qet_directory name lookup opened files with pugixml's load_file(), which on Windows fails once the full path reaches MAX_PATH. QFile handles long paths, so exist() and the import succeeded while uuid(), the name, the informations and the thumbnail of the same symbol came back empty. Read the bytes with QFile and hand them to load_buffer(). Reported on #1178 as a false collision from qet.addElement. Co-Authored-By: Claude Opus 5.5 --- sources/ElementsCollection/elementslocation.cpp | 12 ++++++++++-- .../ElementsCollection/fileelementcollectionitem.cpp | 8 +++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/sources/ElementsCollection/elementslocation.cpp b/sources/ElementsCollection/elementslocation.cpp index 7c34f923a..0e8a94c7a 100644 --- a/sources/ElementsCollection/elementslocation.cpp +++ b/sources/ElementsCollection/elementslocation.cpp @@ -709,12 +709,20 @@ pugi::xml_document ElementsLocation::pugiXml() const #endif if (!m_project) { + //Read through QFile, not pugi's load_file(): on Windows load_file() + //fails once the full path reaches MAX_PATH (260 characters), while + //QFile handles long paths. + QFile file(m_file_system_path); + if (!file.open(QIODevice::ReadOnly)) { + return docu; + } + const QByteArray data = file.readAll(); #ifndef Q_OS_LINUX - if (docu.load_file(m_file_system_path.toStdWString().c_str())) { + if (docu.load_buffer(data.constData(), data.size())) { docu.save(m_string_stream); } #else - docu.load_file(m_file_system_path.toStdWString().c_str()); + docu.load_buffer(data.constData(), data.size()); #endif } else diff --git a/sources/ElementsCollection/fileelementcollectionitem.cpp b/sources/ElementsCollection/fileelementcollectionitem.cpp index 7b9d3ea98..805c3fc27 100644 --- a/sources/ElementsCollection/fileelementcollectionitem.cpp +++ b/sources/ElementsCollection/fileelementcollectionitem.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -178,7 +179,12 @@ QString FileElementCollectionItem::localName() bool readable = false; QString str(fileSystemPath() % "/qet_directory"); pugi::xml_document docu; - if (docu.load_file(str.toStdWString().c_str())) + // QFile rather than pugi's load_file(), which fails on + // Windows once the full path reaches 260 characters. + QFile file(str); + const QByteArray data = file.open(QIODevice::ReadOnly) + ? file.readAll() : QByteArray(); + if (!data.isEmpty() && docu.load_buffer(data.constData(), data.size())) { if (QString(docu.document_element().name()) == "qet-directory") From e94c6d82c9e087a99a9e190a6041c6cc749243bb Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:22:18 +1300 Subject: [PATCH 09/18] qet.addElement: report an unreadable symbol instead of a collision A symbol file that exists but cannot be read has a null uuid, which the check against the copy already embedded reported as "would collide with a different element". Say that the file could not be read, with its full path and length, since a long path is the usual cause on Windows. tst_unreadableelement makes the file unreadable through its permissions and fails on master with the old message. Co-Authored-By: Claude Opus 5.5 --- sources/scripting/qetscriptapi.cpp | 12 +++ tests/qttest/CMakeLists.txt | 12 +++ tests/qttest/tst_unreadableelement.cpp | 115 +++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 tests/qttest/tst_unreadableelement.cpp diff --git a/sources/scripting/qetscriptapi.cpp b/sources/scripting/qetscriptapi.cpp index 54b0d9054..34a6d8ee4 100644 --- a/sources/scripting/qetscriptapi.cpp +++ b/sources/scripting/qetscriptapi.cpp @@ -86,6 +86,7 @@ #include #include #include +#include #include #include #include @@ -677,6 +678,17 @@ QString QetScriptApi::addElement(int folioIndex, const QString &locationPath, do const QString import_path = location.isFileSystem() ? QStringLiteral("import/") + location.collectionPath(false) : location.collectionPath(false); + // An element file that exists but cannot be read gives a null + // uuid(), which the collision check below would misreport as "a + // different element" -- say what actually went wrong instead. + if (location.isFileSystem() + && location.pugiXml().document_element().empty()) { + const QString file = QDir::toNativeSeparators( + QFileInfo(location.fileSystemPath()).absoluteFilePath()); + log(QStringLiteral("qet.addElement: could not read element '%1' (file '%2', " + "%3 characters)").arg(locationPath, file).arg(file.size())); + return QString(); + } const ElementsLocation existing(import_path, m_project); if (existing.exist() && existing.uuid() != location.uuid()) { log(QStringLiteral("qet.addElement: '%1' would collide with a different element " diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 3b1085990..89fbe8c97 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -429,6 +429,18 @@ if(QET_HAS_SCRIPTING) "QET_TEST_BINARY_PATH=\"$\"" "QET_ELEMENTS_DIR=\"${QET_DIR}/elements\"") + # qet.addElement() on a symbol that exists but cannot be read says so, + # rather than reporting a collision with the copy already embedded. + add_executable( + tst_unreadableelement + tst_unreadableelement.cpp) + add_test(NAME tst_unreadableelement COMMAND tst_unreadableelement) + add_dependencies(tst_unreadableelement qelectrotech) + target_link_libraries(tst_unreadableelement PRIVATE Qt::Test) + target_compile_definitions(tst_unreadableelement PRIVATE + "QET_TEST_BINARY_PATH=\"$\"" + "QET_ELEMENTS_DIR=\"${QET_DIR}/elements\"") + # The project database filled from the file as it is read holds exactly # what it holds filled from the built folios (QET_DATABASE_FROM_FOLIOS=1), # on every example saved once; an older file falls back, saying why. diff --git a/tests/qttest/tst_unreadableelement.cpp b/tests/qttest/tst_unreadableelement.cpp new file mode 100644 index 000000000..906b8da58 --- /dev/null +++ b/tests/qttest/tst_unreadableelement.cpp @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +#include +#include +#include +#include +#include + +// qet.addElement() compares the uuid of the symbol it is given with the copy +// already embedded under the same name. A symbol file that exists but cannot +// be read has no uuid, and was reported as "would collide with a different +// element" (#1178 follow-up: on Windows, any symbol whose full path reaches +// 260 characters). Made unreadable here with the file's permissions, which +// gives the same null uuid on Linux. +class tst_unreadableelement : public QObject +{ + Q_OBJECT + + QTemporaryDir m_dir; + QString m_collection; + QString m_symbol; + + // Runs a script placing common://custom/my_siren.elmt into project and + // saving it to output; returns everything the run printed. + QString placeTheSymbol(const QString &project, const QString &output) + { + const QString root = m_dir.path(); + const QString home = root + QStringLiteral("/home"); + const QString settings = root + QStringLiteral("/settings"); + QDir().mkpath(settings + QStringLiteral("/QElectroTech")); + QDir().mkpath(root + QStringLiteral("/tmp")); + QFile ini(settings + QStringLiteral("/QElectroTech/QElectroTech.ini")); + if (!ini.open(QIODevice::WriteOnly | QIODevice::Text)) + return QString(); + ini.write("[elements-collections]\ncommon-collection-path="); + ini.write(m_collection.toUtf8()); + ini.write("\n"); + ini.close(); + + const QString script = root + QStringLiteral("/add.js"); + QFile js(script); + if (!js.open(QIODevice::WriteOnly)) + return QString(); + js.write("var u = qet.addElement(0, 'common://custom/my_siren.elmt', 100, 100);\n" + "qet.log('RESULT ' + (u ? 'placed' : 'refused'));\n" + "if (u) qet.save('"); + js.write(output.toUtf8()); + js.write("');\n"); + js.close(); + + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("offscreen")); + env.insert(QStringLiteral("QET_ENABLE_SCRIPTING"), QStringLiteral("1")); + env.insert(QStringLiteral("HOME"), home); + env.insert(QStringLiteral("XDG_CONFIG_HOME"), home + QStringLiteral("/.config")); + env.insert(QStringLiteral("XDG_DATA_HOME"), home + QStringLiteral("/.local/share")); + env.insert(QStringLiteral("TMPDIR"), root + QStringLiteral("/tmp")); + env.insert(QStringLiteral("QET_SETTINGS_DIR"), settings); + + QProcess proc; + proc.setProcessEnvironment(env); + proc.setProcessChannelMode(QProcess::MergedChannels); + proc.start(QStringLiteral(QET_TEST_BINARY_PATH), {QStringLiteral("--run"), script, project}); + if (!proc.waitForFinished(60000)) + return QString(); + return QString::fromUtf8(proc.readAll()); + } + +private slots: + void initTestCase() + { + QVERIFY(m_dir.isValid()); + QVERIFY(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH))); + m_collection = m_dir.filePath(QStringLiteral("collection")); + m_symbol = m_collection + QStringLiteral("/custom/my_siren.elmt"); + QVERIFY(QDir().mkpath(m_collection + QStringLiteral("/custom"))); + QVERIFY(QFile::copy(QStringLiteral(QET_ELEMENTS_DIR "/10_electric/10_allpole/380_signaling_operating/12_acoustic_signaling/sirene.elmt"), + m_symbol)); + QVERIFY(QFile::copy(QFINDTESTDATA("fixtures/qet_bug_repro_resaved.qet"), + m_dir.filePath(QStringLiteral("p.qet")))); + } + + void anUnreadableSymbolIsNotACollision() + { + // Placed once while readable: the project now embeds it. + const QString embedded = m_dir.filePath(QStringLiteral("embedded.qet")); + QVERIFY(placeTheSymbol(m_dir.filePath(QStringLiteral("p.qet")), embedded) + .contains(QStringLiteral("RESULT placed"))); + QVERIFY(QFile::exists(embedded)); + + QVERIFY(QFile::setPermissions(m_symbol, QFileDevice::Permissions())); + QFile probe(m_symbol); + if (probe.open(QIODevice::ReadOnly)) + QSKIP("permissions do not stop this user reading the file (root?)"); + + const QString out = placeTheSymbol(embedded, m_dir.filePath(QStringLiteral("again.qet"))); + QFile::setPermissions(m_symbol, QFileDevice::ReadOwner | QFileDevice::WriteOwner); + QVERIFY2(out.contains(QStringLiteral("RESULT refused")), qPrintable(out)); + QVERIFY2(out.contains(QStringLiteral("could not read element")), qPrintable(out)); + QVERIFY2(!out.contains(QStringLiteral("would collide")), qPrintable(out)); + } + + // Readable again, the same symbol is placed a second time as before. + void theSameSymbolIsPlacedAgain() + { + const QString out = placeTheSymbol(m_dir.filePath(QStringLiteral("embedded.qet")), + m_dir.filePath(QStringLiteral("twice.qet"))); + QVERIFY2(out.contains(QStringLiteral("RESULT placed")), qPrintable(out)); + } +}; + +QTEST_APPLESS_MAIN(tst_unreadableelement) + +#include "tst_unreadableelement.moc" From 4c89f37fd86f522312221228bdbaafe10a249baf Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:25:46 +1300 Subject: [PATCH 10/18] Windows: embed a manifest that declares longPathAware With LongPathsEnabled set in the registry, Windows lets a program open paths of 260 characters or more only if its manifest says longPathAware. QElectroTech.exe so far carried the toolchain's default manifest. This one repeats what the default declares (supported Windows versions, asInvoker) and adds longPathAware. MSVC takes the .manifest as a source; MinGW gets it through a small resource file. Follow-up to #1178 (symbols in deep folders). Co-Authored-By: Claude Opus 5.5 --- CMakeLists.txt | 12 +++++++ build-aux/windows/qelectrotech-manifest.rc.in | 4 +++ build-aux/windows/qelectrotech.exe.manifest | 35 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 build-aux/windows/qelectrotech-manifest.rc.in create mode 100644 build-aux/windows/qelectrotech.exe.manifest diff --git a/CMakeLists.txt b/CMakeLists.txt index 120f53a40..4e736c6a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -159,6 +159,18 @@ if(WIN32) ${QET_DIR}/qelectrotech.qrc ${QET_DIR}/ico/icon-themes.qrc ) + # Our own manifest (it declares longPathAware). MSVC merges a .manifest + # listed as a source; MinGW needs it embedded through a resource file, + # and ld then keeps it ahead of the toolchain's default manifest. + set(QET_MANIFEST_FILE ${QET_DIR}/build-aux/windows/qelectrotech.exe.manifest) + if(MSVC) + target_sources(${PROJECT_NAME} PRIVATE ${QET_MANIFEST_FILE}) + else() + configure_file(${QET_DIR}/build-aux/windows/qelectrotech-manifest.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc @ONLY) + target_sources(${PROJECT_NAME} PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc) + endif() else() add_executable( ${PROJECT_NAME} diff --git a/build-aux/windows/qelectrotech-manifest.rc.in b/build-aux/windows/qelectrotech-manifest.rc.in new file mode 100644 index 000000000..54304e875 --- /dev/null +++ b/build-aux/windows/qelectrotech-manifest.rc.in @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Embeds qelectrotech.exe.manifest as the program's manifest +// (resource id 1 = CREATEPROCESS_MANIFEST_RESOURCE_ID, type 24 = RT_MANIFEST). +1 24 "@QET_MANIFEST_FILE@" diff --git a/build-aux/windows/qelectrotech.exe.manifest b/build-aux/windows/qelectrotech.exe.manifest new file mode 100644 index 000000000..1aa9ef544 --- /dev/null +++ b/build-aux/windows/qelectrotech.exe.manifest @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + From 5e28e015e077e70653f771184b2d881b0d78f01e Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:28:11 +1300 Subject: [PATCH 11/18] Scripting API and MCP: route a conductor around the symbols in its way A new conductor gets the default two or three straight segments, which run through whatever symbol or wire lies between its terminals; scripts then fix it segment by segment with moveConductorSegment(). ConductorRouter finds an orthogonal path on the folio grid that leaves and enters each terminal in its own direction, keeps clear of every element's rectangle, stays inside the border, and charges for bends and for running along or crossing other wires. qet.routeConductor() and qet.routeConductorBetween() apply it through Conductor::setPathPoints(), which pushes the same ChangeConductorCommand a handle drag does, so the path is saved, survives a reload, and one undo restores the default. Where no route exists the wire keeps its path and the call says so. qet-mcp: add_conductor takes "route": "avoid", and a route_conductor op reroutes an existing conductor (by terminal or by uuid). The router methods are required only by an edit that routes. Co-Authored-By: Claude Opus 5.5 (1M context) --- cmake/qet_compilation_vars.cmake | 2 + misc/qet-mcp/README.md | 19 ++ misc/qet-mcp/qet_mcp.py | 46 +++- misc/qet-mcp/test_qet_mcp.py | 90 ++++++++ sources/conductorrouter.cpp | 304 ++++++++++++++++++++++++++ sources/conductorrouter.h | 77 +++++++ sources/qetgraphicsitem/conductor.cpp | 40 ++++ sources/qetgraphicsitem/conductor.h | 1 + sources/scripting/qetscriptapi.cpp | 114 ++++++++++ sources/scripting/qetscriptapi.h | 6 + tests/qttest/CMakeLists.txt | 10 + tests/qttest/tst_conductorrouter.cpp | 212 ++++++++++++++++++ 12 files changed, 919 insertions(+), 2 deletions(-) create mode 100644 sources/conductorrouter.cpp create mode 100644 sources/conductorrouter.h create mode 100644 tests/qttest/tst_conductorrouter.cpp diff --git a/cmake/qet_compilation_vars.cmake b/cmake/qet_compilation_vars.cmake index 66a810712..efe2f1992 100644 --- a/cmake/qet_compilation_vars.cmake +++ b/cmake/qet_compilation_vars.cmake @@ -179,6 +179,8 @@ set(QET_SRC_FILES ${QET_DIR}/sources/wiringlistexport.cpp ${QET_DIR}/sources/wirehops.h ${QET_DIR}/sources/wirehops.cpp + ${QET_DIR}/sources/conductorrouter.h + ${QET_DIR}/sources/conductorrouter.cpp ${QET_DIR}/sources/ui/wiringlistdialog.h ${QET_DIR}/sources/ui/wiringlistdialog.cpp ${QET_DIR}/sources/conductornumexport.h diff --git a/misc/qet-mcp/README.md b/misc/qet-mcp/README.md index cd53ec880..16928640c 100644 --- a/misc/qet-mcp/README.md +++ b/misc/qet-mcp/README.md @@ -532,6 +532,25 @@ Python, plus the hang guard on `addConductor` and the database refresh in the file until it is saved once: since #1107 QElectroTech works one out from the wire's two ends on load and writes it on the next save, so it appears after a first `qet_edit`. +- **Wires can be routed around symbols.** By default a new conductor gets + QElectroTech's own two or three straight segments, which run through + whatever symbol or wire lies between the two terminals. Give + `add_conductor` `"route": "avoid"` to redraw it around the symbols + instead, or use `route_conductor` (addressed like `move_conductor_segment`, + by `element` + `terminal` or by `"conductor": "{uuid}"`) to redraw one + already drawn. The route leaves and enters each terminal in its own + direction, runs on the folio grid, stays inside the folio's border, and is + the cheapest found by a search that charges for length, for each bend + and, less heavily, for running along or crossing another wire. Obstacles + are each symbol's own rectangle plus half a grid step; texts, images, + shapes and tables are not obstacles. The path is saved as a hand-edited + one, so it survives a reload and one undo puts the default back. Where + no route exists, the wire keeps its path: `route_conductor` returns + `"no-route"` and both ops say so in `note` -- it is not a failure, and + the run goes on. Like a hand-edited path, it is stretched rather than + rerouted when a symbol is moved afterwards; route again after moving + things. Needs `qet.routeConductor()` / `qet.routeConductorBetween()` in + the build, and only an edit that routes requires them. - **A terminal can be named by its uuid**: `terminal`, `from_terminal` and `to_terminal` take the terminal's uuid (as `qet_element_info` lists it) in place of its index, on the op's own element (for `add_conductor`, on diff --git a/misc/qet-mcp/qet_mcp.py b/misc/qet-mcp/qet_mcp.py index 257b1c294..ca9b597ba 100755 --- a/misc/qet-mcp/qet_mcp.py +++ b/misc/qet-mcp/qet_mcp.py @@ -1361,6 +1361,10 @@ OPS = { "move_conductor_segment": ("moveConductorSegment", [("folio", "folio"), ("element", "elmt"), ("terminal", "term"), ("segment", "num"), ("dx", "num"), ("dy", "num")]), + # Redraws one conductor around the symbols in its way; the result is + # "routed", or "no-route" when there is none, the path then unchanged. + "route_conductor": ("routeConductor", [("folio", "folio"), ("element", "elmt"), + ("terminal", "term")]), "link_elements": ("linkElements", [("folio", "folio"), ("element", "elmt"), ("to_folio", "folio"), ("to", "elmt")]), "link_plc_io": ("linkElements", [("folio", "folio"), ("element", "elmt"), @@ -1495,7 +1499,16 @@ FOLIO_MAKING_OPS = ("add_folio", "insert_folio") # The ops that address one conductor by element + terminal, and so also # take "conductor": "{uuid}" (qet_conductors reports each one's uuid). -CONDUCTOR_UUID_OPS = ("set_conductor", "move_conductor_segment", "delete_conductor") +CONDUCTOR_UUID_OPS = ("set_conductor", "move_conductor_segment", "delete_conductor", + "route_conductor") + +# add_conductor's "route": "default" is the application's own two or three +# segments; "avoid" then redraws the new conductor around the symbols. +ROUTE_MODES = ["default", "avoid"] + +# Routing arrived after the other drawing verbs, so it is required only by +# an edit that routes: every other edit still runs on a build without it. +_ROUTE_METHODS = {"routeConductor", "routeConductorBetween"} # Accepted by set_conductor. The names are the project file's own, so what # a script sets is what qet_conductors reports back. @@ -1514,7 +1527,7 @@ CONDUCTOR_DEFAULT_PROPERTIES = ["onetextperfolio"] + CONDUCTOR_PROPERTIES # verbs. Probed in the script rather than assumed, because the failure mode # otherwise is a TypeError on line N of a generated file the caller never # sees, reported as "the edit failed". -_REQUIRED_METHODS = sorted({m for m, _ in OPS.values() if m} | +_REQUIRED_METHODS = sorted(({m for m, _ in OPS.values() if m} - _ROUTE_METHODS) | {"save", "folioCount", "conductorCount", "elementCount"}) _MARKER = "QETEDIT " @@ -1745,6 +1758,14 @@ def _build_script(operations: list, output: str) -> str: raise ValueError(f"operation {i}: unknown conductor property " f"{op.get('property')!r}; expected one of " f"{', '.join(CONDUCTOR_PROPERTIES)}") + route = op.get("route", "default") if name == "add_conductor" else "default" + if route not in ROUTE_MODES: + raise ValueError(f"operation {i}: unknown route {route!r}; " + f"expected one of {', '.join(ROUTE_MODES)}") + if name == "route_conductor": + uuid_methods.add("routeConductor") + if route == "avoid": + uuid_methods.add("routeConductorBetween") if name == "set_folio" and op.get("property") not in FOLIO_PROPERTIES: raise ValueError(f"operation {i}: unknown folio property " f"{op.get('property')!r}; expected one of " @@ -1830,6 +1851,18 @@ def _build_script(operations: list, output: str) -> str: lines.append(f" var e{i} = qetMcpConductorEnd({i}, {args[0]}, {conductor_js});") call = f"(e{i} ? {call} : false)" lines.append(f" var v{i} = {call};") + if route == "avoid": + # The wire exists either way; a route not found leaves it on the + # default path, which is a note on the op, not a failure of it. + lines.append(f" if (v{i} === true) {{ var r{i} = qet.routeConductorBetween(" + f"{', '.join(args)}); if (r{i} !== 'routed') qet.log({_js(_MARKER)} + " + f"JSON.stringify({{kind: 'op_note', index: {i}, note: 'no route " + f"around the symbols was found; the conductor keeps the default " + f"path'}})); }}") + if name == "route_conductor": + lines.append(f" if (v{i} === 'no-route') qet.log({_js(_MARKER)} + " + f"JSON.stringify({{kind: 'op_note', index: {i}, note: 'no route " + f"around the symbols was found; the conductor keeps its path'}}));") if ident is not None: lines.append(f" R[{_js(ident)}] = v{i};") refs.add(ident) @@ -3524,6 +3557,15 @@ TOOLS = [ "movable ones, then a static segment, in that order from the " "first terminal; call with a guessed index and read \"succeeded\" " "to check it landed on a movable one. " + "add_conductor takes an optional \"route\": \"avoid\" to " + "redraw the new wire around the symbols in its way instead of " + "QElectroTech's default two or three straight segments; " + "route_conductor does the same to an existing conductor " + "(addressed like move_conductor_segment, or by \"conductor\") " + "and returns \"routed\" or \"no-route\". Where no route " + "exists the wire keeps its path and the op's note says so -- " + "not a failure. Route after placing everything: moving a " + "symbol later stretches the routed path, it does not reroute it. " "link_elements takes a folio for each end, since a master " "and its slave are usually on different ones. " "delete_conductor removes only the conductor on the named " diff --git a/misc/qet-mcp/test_qet_mcp.py b/misc/qet-mcp/test_qet_mcp.py index 0f7871168..95bf7b918 100644 --- a/misc/qet-mcp/test_qet_mcp.py +++ b/misc/qet-mcp/test_qet_mcp.py @@ -281,6 +281,35 @@ class EditValidation(unittest.TestCase): with self.assertRaisesRegex(ValueError, "saved before conductors carried a uuid"): self.build([{"op": "delete_conductor", "folio": 0, "conductor": ""}]) + def test_route_ops(self): + """route_conductor and add_conductor's "route": "avoid" call the + router; neither makes a missing route a failure of the run, and the + router methods are required only by an edit that routes.""" + E, F = "{11111111-2222-4333-8444-555555555555}", "{21111111-2222-4333-8444-555555555555}" + U = "{31111111-2222-4333-8444-555555555555}" + plain = self.build([{"op": "add_conductor", "folio": 0, "from": E, "from_terminal": 1, + "to": F, "to_terminal": 0}]) + self.assertNotIn("routeConductor", plain) + self.assertEqual(plain, self.build([{"op": "add_conductor", "folio": 0, "from": E, + "from_terminal": 1, "to": F, "to_terminal": 0, + "route": "default"}])) + s = self.build([{"op": "add_conductor", "folio": 0, "from": E, "from_terminal": 1, + "to": F, "to_terminal": 0, "route": "avoid"}]) + self.assertIn(f'if (v0 === true) {{ var r0 = qet.routeConductorBetween(0, "{E}", 1, "{F}", 0);', s) + self.assertIn('"routeConductorBetween"', s) + self.assertNotIn('"routeConductor",', s) + # the op's own result is still the conductor being added + self.assertIn("result: v0", s) + s = self.build([{"op": "route_conductor", "folio": 2, "conductor": U}]) + self.assertIn("(e0 ? qet.routeConductor(2, e0.element, e0.terminal) : false)", s) + self.assertIn("if (v0 === 'no-route')", s) + self.assertIn('"routeConductor"', s) + s = self.build([{"op": "route_conductor", "folio": 0, "element": E, "terminal": 1}]) + self.assertIn(f'qet.routeConductor(0, "{E}", 1)', s) + with self.assertRaisesRegex(ValueError, "unknown route"): + self.build([{"op": "add_conductor", "folio": 0, "from": E, "from_terminal": 1, + "to": F, "to_terminal": 0, "route": "around"}]) + def test_terminal_by_uuid(self): """A terminal named by uuid is turned into its index at run time, on the element it belongs to: the op's element, or each add_conductor @@ -343,6 +372,8 @@ class EditValidation(unittest.TestCase): "move_conductor_segment": el + [{"op": "move_conductor_segment", "folio": "$f", "element": "$e", "terminal": 0, "segment": 1, "dx": 10, "dy": 0}], + "route_conductor": el + [{"op": "route_conductor", "folio": "$f", "element": "$e", + "terminal": 0}], "delete_conductor": el + [{"op": "delete_conductor", "folio": "$f", "element": "$e", "terminal": 0}], "link_elements": two + [{"op": "link_elements", "folio": "$f", "element": "$e", "to_folio": "$f", "to": "$e2"}], @@ -3806,6 +3837,65 @@ class Integration(unittest.TestCase): "terminal": 0, "segment": 99, "dx": 1, "dy": 1}]) self.assertFalse(r["ok"]) + def _column_with_a_symbol_between(self): + """Three coils in a column; a wire from the bottom of the first to + the top of the third runs straight through the middle one by + default.""" + return [{"op": "add_folio", "id": "f"}, + {"op": "add_element", "id": "a", "folio": "$f", "path": COIL, "x": 200, "y": 100}, + {"op": "add_element", "id": "b", "folio": "$f", "path": COIL, "x": 200, "y": 250}, + {"op": "add_element", "id": "c", "folio": "$f", "path": COIL, "x": 200, "y": 400}] + + @staticmethod + def _crosses_the_middle_coil(xml): + """Whether the saved path enters the middle coil. The path starts + at the first coil's A2 terminal, (200, 120); relative to that the + middle coil (40 x 60, hotspot 17,32, placed at 200,250) covers + x -17..23, y 98..158.""" + segs = re.findall(r' -17 and lo_y < 158 and hi_y > 98: + return True + x, y = nx, ny + return False + + def test_route_avoid_goes_around_the_symbol_between(self): + base = self.sb.new() + ops = self._column_with_a_symbol_between() + wire = {"op": "add_conductor", "folio": "$f", "from": "$a", "from_terminal": 1, + "to": "$c", "to_terminal": 0} + # the arm that must differ: the default path is straight, saved + # without segments, and so through the middle coil + plain = self.ok(self.sb.edit(base, ops + [wire], out="plain.qet")) + self.assertNotIn("')) + # one undo puts the default path back + u = self.ok(self.sb.edit(base, ops + [{**wire, "route": "avoid"}, {"op": "undo"}], + out="undone.qet")) + self.assertNotIn(". +*/ +// SPDX-License-Identifier: GPL-2.0-or-later +#include "conductorrouter.h" + +#include +#include +#include +#include +#include + +namespace { + +using ConductorRouter::Direction; + +constexpr qreal eps = 1e-6; + ///Larger than any folio needs: a 2000 x 2000 grid +constexpr int max_nodes = 4000000; + + ///What each thing costs, in scene units of length. A bend is worth + ///three grid steps of extra wire, so the search prefers a slightly + ///longer route to a more crooked one, as a person drawing would. +constexpr qreal bend_steps = 3.0; + ///Running along another wire costs this much more per unit of length +constexpr qreal along_factor = 3.0; + ///Each crossing of another wire costs two grid steps +constexpr qreal cross_steps = 2.0; + +QPointF step(Direction d) +{ + switch (d) { + case Direction::North: return {0, -1}; + case Direction::East: return {1, 0}; + case Direction::South: return {0, 1}; + case Direction::West: return {-1, 0}; + } + return {0, 0}; +} + +Direction opposite(Direction d) +{ + return static_cast((static_cast(d) + 2) % 4); +} + +bool strictlyInside(const QPointF &p, const QRectF &r) +{ + return p.x() > r.left() + eps && p.x() < r.right() - eps + && p.y() > r.top() + eps && p.y() < r.bottom() - eps; +} + +bool insideAny(const QPointF &p, const QList &rects) +{ + for (const QRectF &r : rects) + if (strictlyInside(p, r)) return true; + return false; +} + + ///A wire segment, kept as the fixed coordinate and the range along the + ///other axis +struct Span { qreal at, from, to; }; + + ///The first point of a route after a terminal: one grid step out in the + ///terminal's direction, snapped to the grid the way + ///Conductor::extendTerminal() snaps it, then on until it is clear of + ///every obstacle -- of the terminal's own symbol above all. +bool exitPoint(const QPointF &dock, Direction d, const ConductorRouter::Request &r, + const QList &obstacles, QPointF &out) +{ + const QPointF s = step(d); + QPointF p = dock; + if (s.x() != 0) + p.setX(std::round((dock.x() + s.x() * r.grid) / r.grid) * r.grid); + else + p.setY(std::round((dock.y() + s.y() * r.grid) / r.grid) * r.grid); + for (int i = 0; i < 200; ++i) { + if (!insideAny(p, obstacles)) { + out = p; + return true; + } + p += s * r.grid; + } + return false; +} + + ///Sorted, without duplicates: the grid lines inside [low, high], plus + ///the extra coordinates (the two exit points, which need not be on the + ///grid when a terminal is not) +QVector axis(qreal low, qreal high, qreal grid, std::initializer_list extra) +{ + QVector v; + for (qreal c = std::ceil(low / grid) * grid; c <= high + eps; c += grid) + v << c; + for (qreal c : extra) v << c; + std::sort(v.begin(), v.end()); + v.erase(std::unique(v.begin(), v.end(), + [](qreal a, qreal b) { return std::abs(a - b) < eps; }), + v.end()); + return v; +} + +int indexOf(const QVector &v, qreal c) +{ + auto it = std::lower_bound(v.begin(), v.end(), c - eps); + return (it != v.end() && std::abs(*it - c) < eps) ? int(it - v.begin()) : -1; +} + + ///The cost of the edge along one axis from a to b at fixed coordinate at, + ///or infinity if it crosses an obstacle. horizontal says which axis. +qreal edgeCost(bool horizontal, qreal at, qreal a, qreal b, + const QList &obstacles, + const QVector &along, const QVector &across, + qreal grid) +{ + for (const QRectF &r : obstacles) { + const qreal lo = horizontal ? r.left() : r.top(); + const qreal hi = horizontal ? r.right() : r.bottom(); + const qreal flo = horizontal ? r.top() : r.left(); + const qreal fhi = horizontal ? r.bottom(): r.right(); + if (at > flo + eps && at < fhi - eps + && std::min(b, hi) - std::max(a, lo) > eps) + return std::numeric_limits::infinity(); + } + qreal cost = b - a; + for (const Span &s : along) { + if (std::abs(s.at - at) > 0.5) continue; + const qreal overlap = std::min(b, s.to) - std::max(a, s.from); + if (overlap > eps) cost += overlap * along_factor; + } + for (const Span &s : across) { + // Half-open (a, b], so a crossing on a grid node is counted + // once, by the edge that ends on it; and only through the + // other wire's interior, not at its end, which is a junction. + if (s.at > a + eps && s.at <= b + eps + && at > s.from + 0.5 && at < s.to - 0.5) + cost += cross_steps * grid; + } + return cost; +} + +} // namespace + +ConductorRouter::Result ConductorRouter::route(const Request &r) +{ + Result result; + if (r.grid <= 0) { + result.error = QStringLiteral("the grid step must be positive"); + return result; + } + + QList obstacles; + for (const QRectF &o : r.obstacles) + obstacles << o.normalized().adjusted(-r.margin, -r.margin, r.margin, r.margin); + + QPointF s1, s2; + if (!exitPoint(r.start, r.start_direction, r, obstacles, s1) + || !exitPoint(r.end, r.end_direction, r, obstacles, s2)) { + result.error = QStringLiteral("a terminal has no way out of the symbols around it"); + return result; + } + + // The area searched: everything involved, with room to go round + // it, kept on the folio when there is one. + QRectF box = QRectF(s1, s2).normalized(); + for (const QRectF &o : obstacles) box = box.united(o); + box.adjust(-3 * r.grid, -3 * r.grid, 3 * r.grid, 3 * r.grid); + if (r.bounds.isValid()) box = box.intersected(r.bounds); + box = box.united(QRectF(s1, s2).normalized()); + + const QVector xs = axis(box.left(), box.right(), r.grid, {s1.x(), s2.x()}); + const QVector ys = axis(box.top(), box.bottom(), r.grid, {s1.y(), s2.y()}); + const int nx = xs.size(), ny = ys.size(); + if (qint64(nx) * ny > max_nodes) { + result.error = QStringLiteral("the area to search is too large"); + return result; + } + + QVector horizontal_wires, vertical_wires; + for (const QVector &w : r.wires) { + for (int i = 0; i + 1 < w.size(); ++i) { + const QPointF a = w.at(i), b = w.at(i + 1); + if (std::abs(a.y() - b.y()) < 0.5 && std::abs(a.x() - b.x()) > eps) + horizontal_wires << Span{a.y(), std::min(a.x(), b.x()), std::max(a.x(), b.x())}; + else if (std::abs(a.x() - b.x()) < 0.5 && std::abs(a.y() - b.y()) > eps) + vertical_wires << Span{a.x(), std::min(a.y(), b.y()), std::max(a.y(), b.y())}; + } + } + + // The cost of the edge from each node to the next one east + // (h_cost) and south (v_cost); infinity where blocked or none. + const qreal inf = std::numeric_limits::infinity(); + std::vector h_cost(size_t(nx) * ny, inf), v_cost(size_t(nx) * ny, inf); + for (int j = 0; j < ny; ++j) + for (int i = 0; i + 1 < nx; ++i) + h_cost[size_t(j) * nx + i] = edgeCost(true, ys[j], xs[i], xs[i + 1], obstacles, + horizontal_wires, vertical_wires, r.grid); + for (int i = 0; i < nx; ++i) + for (int j = 0; j + 1 < ny; ++j) + v_cost[size_t(j) * nx + i] = edgeCost(false, xs[i], ys[j], ys[j + 1], obstacles, + vertical_wires, horizontal_wires, r.grid); + + const int start_node = indexOf(ys, s1.y()) * nx + indexOf(xs, s1.x()); + const int goal_node = indexOf(ys, s2.y()) * nx + indexOf(xs, s2.x()); + const qreal bend = bend_steps * r.grid; + // The wire arrives at the second terminal moving opposite to the + // way it points. + const Direction arrival = opposite(r.end_direction); + + // Dijkstra over (node, direction of travel): the direction is what + // lets a bend be charged for. + const size_t states = size_t(nx) * ny * 4; + std::vector dist(states, inf); + std::vector previous(states, -1); + using Entry = std::pair; + std::priority_queue, std::greater> queue; + const int first = start_node * 4 + int(r.start_direction); + dist[size_t(first)] = 0; + queue.push({0, first}); + + qreal best = inf; + int best_state = -1; + while (!queue.empty()) { + const auto [cost, state] = queue.top(); + queue.pop(); + if (cost > dist[size_t(state)] || cost >= best) { + if (cost >= best) break; + continue; + } + const int node = state / 4; + const Direction d = static_cast(state % 4); + if (node == goal_node && d != r.end_direction) { + const qreal total = cost + (d == arrival ? 0 : bend); + if (total < best) { best = total; best_state = state; } + } + const int i = node % nx, j = node / nx; + for (int k = 0; k < 4; ++k) { + const Direction nd = static_cast(k); + if (nd == opposite(d)) continue; + int ni = i, nj = j; + qreal edge = inf; + switch (nd) { + case Direction::East: if (i + 1 < nx) { ni = i + 1; edge = h_cost[size_t(j) * nx + i]; } break; + case Direction::West: if (i > 0) { ni = i - 1; edge = h_cost[size_t(j) * nx + ni]; } break; + case Direction::South: if (j + 1 < ny) { nj = j + 1; edge = v_cost[size_t(j) * nx + i]; } break; + case Direction::North: if (j > 0) { nj = j - 1; edge = v_cost[size_t(nj) * nx + i]; } break; + } + if (edge == inf) continue; + const qreal next_cost = cost + edge + (nd == d ? 0 : bend); + const int next = (nj * nx + ni) * 4 + k; + if (next_cost < dist[size_t(next)]) { + dist[size_t(next)] = next_cost; + previous[size_t(next)] = state; + queue.push({next_cost, next}); + } + } + } + + if (best_state < 0) { + result.error = QStringLiteral("no path around the symbols was found"); + return result; + } + + QList chain; + for (int s = best_state; s >= 0; s = previous[size_t(s)]) { + const int node = s / 4; + chain.prepend(QPointF(xs[node % nx], ys[node / nx])); + } + + // Keep only the corners. The two exit points stay even when + // straight on, as Conductor::generateConductorPath() keeps them: + // the segment from a terminal to its exit point is the one the + // application holds fixed when a wire is edited by hand. + QList corners; + for (int k = 0; k < chain.size(); ++k) { + const QPointF p = chain.at(k); + if (k > 0 && k + 1 < chain.size()) { + const QPointF a = chain.at(k - 1), b = chain.at(k + 1); + const bool straight = (std::abs(a.x() - p.x()) < eps && std::abs(b.x() - p.x()) < eps) + || (std::abs(a.y() - p.y()) < eps && std::abs(b.y() - p.y()) < eps); + if (straight) continue; + } + corners << p; + } + + result.points << r.start; + for (const QPointF &p : corners) + if (result.points.last() != p) result.points << p; + if (result.points.last() != r.end) result.points << r.end; + return result; +} diff --git a/sources/conductorrouter.h b/sources/conductorrouter.h new file mode 100644 index 000000000..1fa6b65fe --- /dev/null +++ b/sources/conductorrouter.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 . +*/ +// SPDX-License-Identifier: GPL-2.0-or-later +#ifndef CONDUCTORROUTER_H +#define CONDUCTORROUTER_H + +#include +#include +#include +#include +#include + +/** + @brief The ConductorRouter namespace + Finds a path for a conductor that goes around obstacles -- the bounding + rectangles of the symbols on the folio -- instead of the default two or + three straight segments, which run through whatever lies between the two + terminals. Kept free of any QGraphicsItem so the geometry can be tested + on its own. + + The path is made of horizontal and vertical segments only, like every + conductor. It leaves each terminal in the terminal's own direction, + runs on the folio grid, and is the cheapest one found by a search that + charges for length, for every bend, and for running along or crossing + the wires already drawn. +*/ +namespace ConductorRouter +{ + ///The direction a terminal points, outward from its symbol. + ///Same order as Qet::Orientation. + enum class Direction { North, East, South, West }; + + struct Request + { + QPointF start; ///< the first terminal's docking point + Direction start_direction = Direction::North; + QPointF end; ///< the second terminal's docking point + Direction end_direction = Direction::North; + ///Areas no segment may cross. A margin is added to each. + QList obstacles; + ///The other wires on the folio, each as its list of points. + ///Running along one or crossing one costs extra. + QList> wires; + ///The route stays inside this, when it is valid (the folio). + QRectF bounds; + qreal grid = 10.0; + ///Added around each obstacle, so a route keeps clear of it + qreal margin = 5.0; + }; + + struct Result + { + ///From start to end, both included; empty if none was found + QList points; + ///Why there is no route, when points is empty + QString error; + }; + + Result route(const Request &request); +} + +#endif // CONDUCTORROUTER_H diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 4d658129f..80a8c7124 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -1389,6 +1389,46 @@ bool Conductor::moveSegment(int index, qreal dx, qreal dy) return true; } +/** + @brief Conductor::setPathPoints + Replace this conductor's path by the one through @p scene_points, and + push one undo step for it -- the same ChangeConductorCommand a manual + handle drag or moveSegment() pushes, so the path is saved as a + modified one and survives a reload. + @param scene_points in scene coordinates, from terminal1's docking + point to terminal2's, every segment horizontal or vertical + @return false, changing nothing, if the points do not make such a path +*/ +bool Conductor::setPathPoints(const QList &scene_points) +{ + if (scene_points.size() < 2 || !terminal1 || !terminal2) return false; + const auto near = [](const QPointF &a, const QPointF &b) { + return qAbs(a.x() - b.x()) < 0.5 && qAbs(a.y() - b.y()) < 0.5; + }; + if (!near(scene_points.first(), terminal1->dockConductor()) || + !near(scene_points.last(), terminal2->dockConductor())) + return false; + QList points; + for (int i = 0; i < scene_points.size(); ++i) { + const QPointF p = scene_points.at(i); + if (i && qAbs(p.x() - scene_points.at(i - 1).x()) > 0.01 + && qAbs(p.y() - scene_points.at(i - 1).y()) > 0.01) + return false; + points << mapFromScene(p); + } + // A two-point path has nothing to segment between: let the + // application draw it, as for a conductor with no profile. + if (points.size() < 3) return false; + + before_mov_text_pos_ = m_text_item->pos(); + pointsToSegments(points); + modified_path = true; + segmentsToPath(); + calculateTextItemPosition(); + saveProfile(); + return true; +} + /** @brief Conductor::length @return the length of this conductor diff --git a/sources/qetgraphicsitem/conductor.h b/sources/qetgraphicsitem/conductor.h index 46976129a..2cbe76f27 100644 --- a/sources/qetgraphicsitem/conductor.h +++ b/sources/qetgraphicsitem/conductor.h @@ -116,6 +116,7 @@ class Conductor : public QGraphicsObject QVector handlerPoints() const; const QList segmentsList() const; bool moveSegment(int index, qreal dx, qreal dy); + bool setPathPoints(const QList &scene_points); void setPropertyToPotential( const ConductorProperties &property, diff --git a/sources/scripting/qetscriptapi.cpp b/sources/scripting/qetscriptapi.cpp index 54b0d9054..63fdd0098 100644 --- a/sources/scripting/qetscriptapi.cpp +++ b/sources/scripting/qetscriptapi.cpp @@ -42,6 +42,7 @@ #include "../qetgraphicsitem/conductor.h" #include "../qetgraphicsitem/conductortextitem.h" #include "../conductorsegment.h" +#include "../conductorrouter.h" #include "../qetgraphicsitem/diagramimageitem.h" // See diagrameventaddpdf.h: a missing QtPdf module (or Qt < 6.4) is not @@ -1194,6 +1195,119 @@ bool QetScriptApi::moveConductorSegment(int folioIndex, const QString &elementUu return conductor->moveSegment(segmentIndex, dx, dy); } +namespace { +ConductorRouter::Direction routerDirection(Qet::Orientation o) +{ + switch (o) { + case Qet::North: return ConductorRouter::Direction::North; + case Qet::East: return ConductorRouter::Direction::East; + case Qet::South: return ConductorRouter::Direction::South; + case Qet::West: return ConductorRouter::Direction::West; + } + return ConductorRouter::Direction::North; +} +} // namespace + +/** + @brief QetScriptApi::applyRoute + Redraw @p conductor around the symbols on its folio (ConductorRouter), + as one undo step through Conductor::setPathPoints() -- the same + ChangeConductorCommand a handle drag pushes, so the path is saved and + survives a reload. Obstacles are every element's own rectangle, its + texts left out; the other conductors are not obstacles but cost extra + to run along or cross. + @return "routed", or "no-route" with the reason logged when there is + no such path -- the conductor then keeps the path it had. Not a + failure: the wire exists and joins the right terminals either way. +*/ +QString QetScriptApi::applyRoute(Conductor *conductor, const QString &caller) +{ + Diagram *diagram = conductor->diagram(); + if (!diagram) return QString(); + + ConductorRouter::Request request; + request.start = conductor->terminal1->dockConductor(); + request.start_direction = routerDirection(conductor->terminal1->orientation()); + request.end = conductor->terminal2->dockConductor(); + request.end_direction = routerDirection(conductor->terminal2->orientation()); + request.grid = Diagram::xGrid; + request.bounds = diagram->border_and_titleblock.insideBorderRect(); + for (Element *e : diagram->elements()) + request.obstacles << e->mapRectToScene(e->boundingRect()); + for (Conductor *other : diagram->conductors()) { + if (other == conductor) continue; + QVector wire; + const QList segs = other->segmentsList(); + for (ConductorSegment *seg : segs) { + if (wire.isEmpty()) wire << other->mapToScene(seg->firstPoint()); + wire << other->mapToScene(seg->secondPoint()); + } + request.wires << wire; + } + + const ConductorRouter::Result route = ConductorRouter::route(request); + if (route.points.isEmpty()) { + log(QStringLiteral("qet.%1: %2; the conductor keeps its path") + .arg(caller, route.error)); + return QStringLiteral("no-route"); + } + if (!conductor->setPathPoints(route.points)) { + log(QStringLiteral("qet.%1: the route found does not join the two terminals; " + "the conductor keeps its path").arg(caller)); + return QStringLiteral("no-route"); + } + return QStringLiteral("routed"); +} + +/** + @brief QetScriptApi::routeConductor + Redraw the conductor on a terminal so it goes around the symbols in + its way instead of through them -- see applyRoute(). Addressed as the + other conductor calls address one. + @return "routed", "no-route" (path unchanged, reason logged), or an + empty string if there is no such conductor or the project is read-only +*/ +QString QetScriptApi::routeConductor(int folioIndex, const QString &elementUuid, + int terminalIndex) +{ + if (!m_project) return QString(); + if (m_project->isReadOnly()) { + log(QStringLiteral("qet.routeConductor: project is read-only")); + return QString(); + } + Conductor *conductor = findConductor(folioIndex, elementUuid, terminalIndex, + QStringLiteral("routeConductor")); + if (!conductor) return QString(); + return applyRoute(conductor, QStringLiteral("routeConductor")); +} + +/** + @brief QetScriptApi::routeConductorBetween + routeConductor() for the conductor joining two given terminals, which + names it even where either terminal carries other conductors too -- + the case just after addConductor() onto a terminal already wired. +*/ +QString QetScriptApi::routeConductorBetween(int folioIndex, + const QString &elementUuidA, int terminalIndexA, + const QString &elementUuidB, int terminalIndexB) +{ + if (!m_project) return QString(); + if (m_project->isReadOnly()) { + log(QStringLiteral("qet.routeConductorBetween: project is read-only")); + return QString(); + } + const QString caller = QStringLiteral("routeConductorBetween"); + Terminal *a = findTerminal(folioIndex, elementUuidA, terminalIndexA, caller); + Terminal *b = findTerminal(folioIndex, elementUuidB, terminalIndexB, caller); + if (!a || !b) return QString(); + for (Conductor *c : a->conductors()) { + if (c->terminal1 == b || c->terminal2 == b) + return applyRoute(c, caller); + } + log(QStringLiteral("qet.%1: no conductor joins those two terminals").arg(caller)); + return QString(); +} + QString QetScriptApi::elementLinkType(int folioIndex, const QString &elementUuid) const { Element *element = findElement(folioIndex, elementUuid); diff --git a/sources/scripting/qetscriptapi.h b/sources/scripting/qetscriptapi.h index a458149da..a4da697de 100644 --- a/sources/scripting/qetscriptapi.h +++ b/sources/scripting/qetscriptapi.h @@ -418,6 +418,11 @@ class QetScriptApi : public QObject Q_INVOKABLE bool moveConductorSegment(int folioIndex, const QString &elementUuid, int terminalIndex, int segmentIndex, double dx, double dy); + Q_INVOKABLE QString routeConductor(int folioIndex, const QString &elementUuid, + int terminalIndex); + Q_INVOKABLE QString routeConductorBetween(int folioIndex, + const QString &elementUuidA, int terminalIndexA, + const QString &elementUuidB, int terminalIndexB); // -- cross-references: master/slave and report links -- Q_INVOKABLE QString elementLinkType(int folioIndex, const QString &elementUuid) const; @@ -596,6 +601,7 @@ class QetScriptApi : public QObject Element *findElement(int folioIndex, const QString &elementUuid) const; Terminal *findTerminal(int folioIndex, const QString &elementUuid, int terminalIndex, const QString &caller); + QString applyRoute(Conductor *conductor, const QString &caller); Conductor *findConductor(int folioIndex, const QString &elementUuid, int terminalIndex, const QString &caller); QList sortedTexts(int folioIndex) const; diff --git a/tests/qttest/CMakeLists.txt b/tests/qttest/CMakeLists.txt index 3b1085990..e92e86f53 100644 --- a/tests/qttest/CMakeLists.txt +++ b/tests/qttest/CMakeLists.txt @@ -402,6 +402,16 @@ target_link_libraries(tst_wirehops PRIVATE Qt::Test Qt::Gui) target_compile_definitions(tst_wirehops PRIVATE "QET_TEST_BINARY_PATH=\"$\"") +# The routing behind qet.routeConductor(): conductorrouter.cpp needs only +# Qt Core, so the geometry is tested without a scene. +add_executable( + tst_conductorrouter + tst_conductorrouter.cpp + ${QET_DIR}/sources/conductorrouter.cpp) +add_test(NAME tst_conductorrouter COMMAND tst_conductorrouter) +target_include_directories(tst_conductorrouter PRIVATE ${QET_DIR}/sources) +target_link_libraries(tst_conductorrouter PRIVATE Qt::Test) + # qet.conductorUuids() / qet.conductorEnds(): a script lists a folio's # conductors by uuid and finds each one's two ends. Runs a script through # the real binary's --run on fixtures/qet_bug_repro_resaved.qet, so only diff --git a/tests/qttest/tst_conductorrouter.cpp b/tests/qttest/tst_conductorrouter.cpp new file mode 100644 index 000000000..6807d4149 --- /dev/null +++ b/tests/qttest/tst_conductorrouter.cpp @@ -0,0 +1,212 @@ +/* + 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 . +*/ +// SPDX-License-Identifier: GPL-2.0-or-later +#include "conductorrouter.h" + +#include + +/** + The geometry of ConductorRouter on its own: that a route is made of + horizontal and vertical segments, leaves and enters each terminal in + the terminal's direction, and goes around obstacles rather than + through them. +*/ +class TestConductorRouter : public QObject +{ + Q_OBJECT + + using Direction = ConductorRouter::Direction; + + static bool crosses(const QList &points, const QRectF &r) + { + for (int i = 0; i + 1 < points.size(); ++i) { + const QPointF a = points.at(i), b = points.at(i + 1); + const QRectF seg = QRectF(a, b).normalized(); + const qreal left = qMax(seg.left(), r.left()), right = qMin(seg.right(), r.right()); + const qreal top = qMax(seg.top(), r.top()), bottom = qMin(seg.bottom(), r.bottom()); + // a segment is a degenerate rectangle: it crosses the + // interior when it overlaps it on one axis and lies + // strictly inside it on the other + if (seg.width() == 0 && seg.left() > r.left() && seg.left() < r.right() && bottom > top) + return true; + if (seg.height() == 0 && seg.top() > r.top() && seg.top() < r.bottom() && right > left) + return true; + } + return false; + } + + static void checkShape(const QList &p, const ConductorRouter::Request &r) + { + QVERIFY(p.size() >= 3); + QCOMPARE(p.first(), r.start); + QCOMPARE(p.last(), r.end); + for (int i = 0; i + 1 < p.size(); ++i) + QVERIFY2(p.at(i).x() == p.at(i + 1).x() || p.at(i).y() == p.at(i + 1).y(), + "a segment is neither horizontal nor vertical"); + } + + static QPointF unit(Direction d) + { + switch (d) { + case Direction::North: return {0, -1}; + case Direction::East: return {1, 0}; + case Direction::South: return {0, 1}; + case Direction::West: return {-1, 0}; + } + return {}; + } + + static QPointF direction(QPointF from, QPointF to) + { + const QPointF d = to - from; + return {d.x() > 0 ? 1. : d.x() < 0 ? -1. : 0., d.y() > 0 ? 1. : d.y() < 0 ? -1. : 0.}; + } + +private slots: + void straightWhenNothingIsInTheWay() + { + ConductorRouter::Request r; + r.start = {100, 100}; + r.start_direction = Direction::East; + r.end = {300, 100}; + r.end_direction = Direction::West; + const auto result = ConductorRouter::route(r); + checkShape(result.points, r); + // no bend at all: start, the two exit points, end + for (const QPointF &p : result.points) QCOMPARE(p.y(), 100.); + } + + void goesAroundASymbol() + { + ConductorRouter::Request r; + r.start = {100, 100}; + r.start_direction = Direction::East; + r.end = {300, 100}; + r.end_direction = Direction::West; + const QRectF symbol(170, 60, 60, 80); + r.obstacles << symbol; + const auto result = ConductorRouter::route(r); + QVERIFY2(result.error.isEmpty(), qPrintable(result.error)); + checkShape(result.points, r); + QVERIFY(!crosses(result.points, symbol.adjusted(-r.margin, -r.margin, r.margin, r.margin))); + } + + // The test that the check above can fail: a straight line through + // the symbol is reported as crossing it. + void crossingCheckCanFail() + { + QVERIFY(crosses({{100, 100}, {300, 100}}, QRectF(170, 60, 60, 80))); + } + + void leavesAndEntersInTheTerminalsDirections_data() + { + QTest::addColumn("from"); + QTest::addColumn("to"); + for (int a = 0; a < 4; ++a) + for (int b = 0; b < 4; ++b) + QTest::addRow("%d-%d", a, b) << a << b; + } + + void leavesAndEntersInTheTerminalsDirections() + { + QFETCH(int, from); + QFETCH(int, to); + ConductorRouter::Request r; + r.start = {100, 100}; + r.start_direction = Direction(from); + r.end = {250, 180}; + r.end_direction = Direction(to); + // each terminal's own symbol, on the side opposite the way + // the terminal points + const QPointF s = unit(r.start_direction), e = unit(r.end_direction); + const QRectF own_start(r.start - s * 40 - QPointF(20, 20), QSizeF(40, 40)); + const QRectF own_end(r.end - e * 40 - QPointF(20, 20), QSizeF(40, 40)); + r.obstacles << own_start << own_end; + const auto result = ConductorRouter::route(r); + QVERIFY2(result.error.isEmpty(), qPrintable(result.error)); + checkShape(result.points, r); + const auto &p = result.points; + QCOMPARE(direction(p.at(0), p.at(1)), s); + QCOMPARE(direction(p.at(p.size() - 1), p.at(p.size() - 2)), e); + QVERIFY(!crosses(p, own_start)); + QVERIFY(!crosses(p, own_end)); + } + + void prefersNotToRunAlongAnotherWire() + { + ConductorRouter::Request r; + r.start = {100, 100}; + r.start_direction = Direction::East; + r.end = {300, 100}; + r.end_direction = Direction::West; + // a wire lying exactly on the straight route + r.wires << QVector{{110, 100}, {290, 100}}; + const auto result = ConductorRouter::route(r); + checkShape(result.points, r); + bool on_it = false; + for (int i = 1; i + 2 < result.points.size(); ++i) + if (result.points.at(i).y() == 100 && result.points.at(i + 1).y() == 100) + on_it = true; + QVERIFY(!on_it); + } + + void staysOnTheFolio() + { + ConductorRouter::Request r; + r.start = {100, 30}; + r.start_direction = Direction::East; + r.end = {300, 30}; + r.end_direction = Direction::West; + r.obstacles << QRectF(170, 0, 60, 200); + r.bounds = QRectF(0, 0, 500, 400); + const auto result = ConductorRouter::route(r); + QVERIFY2(result.error.isEmpty(), qPrintable(result.error)); + for (const QPointF &p : result.points) QVERIFY(r.bounds.contains(p)); + } + + void reportsWhenThereIsNoWay() + { + ConductorRouter::Request r; + r.start = {100, 100}; + r.start_direction = Direction::East; + r.end = {300, 100}; + r.end_direction = Direction::West; + // a wall from the top of the folio to the bottom + r.obstacles << QRectF(170, -10, 60, 520); + r.bounds = QRectF(0, 0, 500, 500); + const auto result = ConductorRouter::route(r); + QVERIFY(result.points.isEmpty()); + QVERIFY(!result.error.isEmpty()); + } + + void terminalsOffTheGrid() + { + ConductorRouter::Request r; + r.start = {103, 97}; + r.start_direction = Direction::South; + r.end = {287, 213}; + r.end_direction = Direction::North; + r.obstacles << QRectF(120, 140, 200, 30); + const auto result = ConductorRouter::route(r); + QVERIFY2(result.error.isEmpty(), qPrintable(result.error)); + checkShape(result.points, r); + } +}; + +QTEST_MAIN(TestConductorRouter) +#include "tst_conductorrouter.moc" From e345d4e5d01c3cdc5142795a8fc3ad455fae68c5 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 22:30:49 +1300 Subject: [PATCH 12/18] Give each end of the wiring export its terminal index and uuid Most shipped symbols leave their terminals unnamed, so --export-wiring wrote both terminal columns empty and a reader had to work each end out from the .qet: terminal uuid, then its place in the definition, then the index. The terminal table now keeps the index the scripting API's addConductor() takes, from both fills of the database (the document and the folios give the same value: Element::parseTerminal()'s sort, top to bottom then left to right), and wiring_list_view and the CSV gain from/to_terminal_index and from/to_terminal_uuid as their last columns. The index is left empty for two terminals at one point, where the sort is not stable and the index is not defined; the uuid tells them apart. The wiring list dialog reads named columns and is unaffected. Co-Authored-By: Claude Opus 5.5 (1M context) --- misc/qet-mcp/README.md | 9 ++++ misc/qet-mcp/test_qet_mcp.py | 39 ++++++++++++++ sources/cli_export.cpp | 9 +++- sources/dataBase/projectdatabase.cpp | 76 +++++++++++++++++++++++++--- sources/dataBase/projectdatabase.h | 2 +- 5 files changed, 127 insertions(+), 8 deletions(-) diff --git a/misc/qet-mcp/README.md b/misc/qet-mcp/README.md index cd53ec880..f86491c72 100644 --- a/misc/qet-mcp/README.md +++ b/misc/qet-mcp/README.md @@ -542,6 +542,15 @@ Python, plus the hang guard on `addConductor` and the database refresh in `qet.terminalIndex()` in the build. A symbol file saved without terminal uuids lists them empty; QElectroTech gives the terminals of every project's copy of it a uuid on opening (#1118), written on the next save. +- **The `wiring` export names unnamed terminals.** Most shipped symbols + leave their terminals unnamed, so `from_terminal`/`to_terminal` are often + empty. Each row also ends with `from_terminal_index`, + `from_terminal_uuid`, `to_terminal_index` and `to_terminal_uuid`: the + index `add_conductor` takes, and the uuid the `.qet` names the terminal + by (as `qet_edit` accepts in place of the index). The index is empty for + a terminal sharing its point with another, where the order is undefined; + the uuid tells those apart. `wiring_list_view` carries the same four + columns for `qet_query`. - **`qet_export` isolates its launch.** SingleApplication keys its socket on `applicationFilePath()`, so a second launch of the same binary path forwards its request to an already-running instance and returns *that* diff --git a/misc/qet-mcp/test_qet_mcp.py b/misc/qet-mcp/test_qet_mcp.py index 0f7871168..2d96cafe8 100644 --- a/misc/qet-mcp/test_qet_mcp.py +++ b/misc/qet-mcp/test_qet_mcp.py @@ -22,6 +22,7 @@ away: a check that has never been seen to fail is not evidence. from __future__ import annotations +import csv import json import os import re @@ -3675,6 +3676,44 @@ class Integration(unittest.TestCase): note = r["operations"][1].get("note", "") self.assertIn("from_terminal: no terminal", note) self.assertIn("to_terminal: no terminal", note) + def test_wiring_export_names_unnamed_terminals(self): + """--export-wiring gives each end the index add_conductor took and + the uuid the file names the terminal by, even where the terminal + has no name. This strip's file lists its terminals in another order + than the index (top to bottom, then left to right), so a column + holding the file's order would fail here.""" + strip = ("common://10_electric/10_allpole/130_terminals_terminal_strips/" + "90_terminal_strips_diagram/90-10-0211.elmt") + base = self.sb.new() + r = self.ok(self.sb.edit(base, [ + {"op": "add_element", "id": "a", "folio": 0, "path": strip, "x": 100, "y": 200}, + {"op": "add_element", "id": "b", "folio": 0, "path": strip, "x": 400, "y": 200}, + {"op": "add_conductor", "folio": 0, "from": "$a", "from_terminal": 2, + "to": "$b", "to_terminal": 3}, + {"op": "add_conductor", "folio": 0, "from": "$a", "from_terminal": 1, + "to": "$b", "to_terminal": 0}])) + a_uuid, b_uuid = (o["result"] for o in r["operations"][:2]) + out = self.sb.p("wiring.csv") + e = m.tool_export(BINARY, r["output"], "wiring", out) + self.assertTrue(e["ok"], e) + with open(out, encoding="utf-8-sig", newline="") as fh: + rows = list(csv.DictReader(fh, delimiter=";")) + self.assertEqual(len(rows), 2) + # the conductor in the file: which uuid it names each end by + in_file = {c.get("uuid"): {(c.get("element1"), c.get("terminal1")), + (c.get("element2"), c.get("terminal2"))} + for c in ET.parse(r["output"]).getroot().iter("conductor") + if c.get("element1")} + got = set() + for row in rows: + self.assertEqual((row["from_terminal"], row["to_terminal"]), ("", "")) + ends = {(int(row["from_terminal_index"]), row["from_terminal_uuid"]), + (int(row["to_terminal_index"]), row["to_terminal_uuid"])} + self.assertEqual({u for _, u in ends}, + {t for _, t in in_file[row["conductor_uuid"]]}) + got.add(frozenset(i for i, _ in ends)) + self.assertEqual(got, {frozenset({2, 3}), frozenset({1, 0})}) + def test_folio_ref_survives_an_insert_before_it(self): """add_folio names a folio "$f"; inserting another at position 0 moves it from index 1 to 2. "$f" must still name it.""" diff --git a/sources/cli_export.cpp b/sources/cli_export.cpp index c8734cac8..d1e22412d 100644 --- a/sources/cli_export.cpp +++ b/sources/cli_export.cpp @@ -620,6 +620,12 @@ QHash folioIndex(QETProject &project) /// From-to wiring list: one row per conductor, each endpoint resolved to its /// element label and terminal name. /// +/// Most symbols leave their terminals unnamed, so each end also carries the +/// terminal's index -- the one the scripting API's addConductor() takes, +/// empty for two terminals at one point -- and its uuid, the one the project +/// file names the terminal by. These come last, after the columns the list +/// has always had, so a reader of those is not disturbed. +/// /// Reads wiring_list_view out of the project database. --export-cables produces /// the same logical list from the document XML instead, and the two are meant /// to agree: running both and diffing them is a direct check that the database @@ -632,7 +638,8 @@ int exportWiring(QETProject &project, const QString &output) static const QStringList columns { "wire_number", "from_element_label", "from_terminal", - "to_element_label", "to_terminal", "diagram_position", "conductor_uuid" + "to_element_label", "to_terminal", "diagram_position", "conductor_uuid", + "from_terminal_index", "from_terminal_uuid", "to_terminal_index", "to_terminal_uuid" }; QSqlQuery query = project.dataBase()->newQuery( diff --git a/sources/dataBase/projectdatabase.cpp b/sources/dataBase/projectdatabase.cpp index bea454bd4..653bcf172 100644 --- a/sources/dataBase/projectdatabase.cpp +++ b/sources/dataBase/projectdatabase.cpp @@ -180,8 +180,37 @@ struct DocumentTerminal QString uuid; QString name; bool master_label = false; + QVariant index; }; + //The index each of @p points has in Element::terminals() -- the index + //the scripting API's addConductor() and conductor calls take -- or a + //null QVariant for a point another terminal shares. Element:: + //parseTerminal() sorts the list top to bottom, then left to right, on + //each terminal's position in its definition, and the sort is not + //stable, so which of two terminals at the same point comes first is + //not defined: no index is given rather than one that can change. +QList terminalIndexes(const QList &points) +{ + QList order; + for (int i = 0 ; i < points.size() ; ++i) { + order << i; + } + std::stable_sort(order.begin(), order.end(), [&points](int a, int b) { + if (points.at(a).y() == points.at(b).y()) { + return points.at(a).x() < points.at(b).x(); + } + return points.at(a).y() < points.at(b).y(); + }); + QList indexes(points.size()); + for (int i = 0 ; i < order.size() ; ++i) { + if (points.count(points.at(order.at(i))) == 1) { + indexes[order.at(i)] = i; + } + } + return indexes; +} + struct DocumentDefinition { QString type; @@ -391,6 +420,25 @@ bool projectDataBase::populateFromDocument(const QDomDocument &document, QString data.fromXml(definition); read.type = data.typeToString(); read.sub_type = data.masterTypeToString(); + //Every terminal the element is built with counts towards + //the indexes, as Element::parseTerminal() keeps every one + //whose position reads, in every . + QList parsed; + QList points; + for (QDomElement d = definition.firstChildElement(QStringLiteral("description")) ; + !d.isNull() ; d = d.nextSiblingElement(QStringLiteral("description"))) { + for (QDomElement t = d.firstChildElement(QStringLiteral("terminal")) ; + !t.isNull() ; t = t.nextSiblingElement(QStringLiteral("terminal"))) + { + qreal x, y; + if (QET::attributeIsAReal(t, QStringLiteral("x"), &x) + && QET::attributeIsAReal(t, QStringLiteral("y"), &y)) { + parsed << t; + points << QPointF(x, y); + } + } + } + const QList indexes = terminalIndexes(points); const QDomElement description = definition.firstChildElement(QStringLiteral("description")); for (QDomElement t = description.firstChildElement(QStringLiteral("terminal")) ; !t.isNull() ; t = t.nextSiblingElement(QStringLiteral("terminal"))) @@ -403,6 +451,10 @@ bool projectDataBase::populateFromDocument(const QDomDocument &document, QString terminal.uuid = terminal_uuid.toString(); terminal.name = t.attribute(QStringLiteral("name")); terminal.master_label = t.attribute(QStringLiteral("use_master_label")) == QLatin1String("true"); + const int place = parsed.indexOf(t); + if (place >= 0) { + terminal.index = indexes.at(place); + } read.terminals.insert(terminal_uuid, terminal); } known = definitions.insert(type, read); @@ -582,8 +634,8 @@ bool projectDataBase::populateFromDocument(const QDomDocument &document, QString for (const auto &end : {std::make_pair(conductor.element1, conductor.terminal1), std::make_pair(conductor.element2, conductor.terminal2)}) { const DocumentElement &owner = elements.at(element_index.value(end.first)); - insertTerminal(end.second, end.first, - owner.terminals.value(QUuid(end.second)).name); + const DocumentTerminal &terminal = owner.terminals.value(QUuid(end.second)); + insertTerminal(end.second, end.first, terminal.name, terminal.index); } m_insert_conductor_query.bindValue(QStringLiteral(":uuid"), conductor.uuid); m_insert_conductor_query.bindValue(QStringLiteral(":diagram_uuid"), conductor.diagram_uuid); @@ -1560,6 +1612,7 @@ bool projectDataBase::createDataBase() "uuid VARCHAR(50) NOT NULL, " "element_uuid VARCHAR(50) NOT NULL," "name VARCHAR(50)," + "terminal_index INTEGER," "PRIMARY KEY (uuid, element_uuid)," "FOREIGN KEY (element_uuid) REFERENCES element (uuid)" ")"); @@ -1812,7 +1865,11 @@ void projectDataBase::createWiringListView() "t2.element_uuid AS to_element_uuid," "ei2.label AS to_element_label," "t2.name AS to_terminal," - "d.pos AS diagram_position" + "d.pos AS diagram_position," + "t1.uuid AS from_terminal_uuid," + "t1.terminal_index AS from_terminal_index," + "t2.uuid AS to_terminal_uuid," + "t2.terminal_index AS to_terminal_index" " FROM conductor c" " JOIN terminal t1 ON c.terminal1_uuid = t1.uuid AND c.terminal1_element_uuid = t1.element_uuid" " JOIN terminal t2 ON c.terminal2_uuid = t2.uuid AND c.terminal2_element_uuid = t2.element_uuid" @@ -1999,9 +2056,15 @@ void projectDataBase::populateConductorTable() */ void projectDataBase::insertTerminal(Terminal *terminal) { + const QList terminals = terminal->parentElement()->terminals(); + QList points; + for (const Terminal *t : terminals) { + points << terminal->parentElement()->mapFromScene(t->dockConductor()); + } insertTerminal(terminal->stableUuid().toString(), terminal->parentElement()->uuid().toString(), - terminal->name()); + terminal->name(), + terminalIndexes(points).value(terminals.indexOf(terminal))); } /** @@ -2009,11 +2072,12 @@ void projectDataBase::insertTerminal(Terminal *terminal) insertTerminal(Terminal *) from values rather than a live terminal. */ void projectDataBase::insertTerminal(const QString &uuid, const QString &element_uuid, - const QString &name) + const QString &name, const QVariant &index) { m_insert_terminal_query.bindValue(":uuid", uuid); m_insert_terminal_query.bindValue(":element_uuid", element_uuid); m_insert_terminal_query.bindValue(":name", name); + m_insert_terminal_query.bindValue(":terminal_index", index); if (!m_insert_terminal_query.exec()) { qDebug() << "projectDataBase::insertTerminal insert error : " << m_insert_terminal_query.lastError(); } @@ -2146,7 +2210,7 @@ void projectDataBase::prepareQuery() //INSERT TERMINAL m_insert_terminal_query = QSqlQuery(m_data_base); - m_insert_terminal_query.prepare("INSERT OR IGNORE INTO terminal (uuid, element_uuid, name) VALUES (:uuid, :element_uuid, :name)"); + m_insert_terminal_query.prepare("INSERT OR IGNORE INTO terminal (uuid, element_uuid, name, terminal_index) VALUES (:uuid, :element_uuid, :name, :terminal_index)"); //INSERT CONDUCTOR m_insert_conductor_query = QSqlQuery(m_data_base); diff --git a/sources/dataBase/projectdatabase.h b/sources/dataBase/projectdatabase.h index 67472af91..1029fcc3d 100644 --- a/sources/dataBase/projectdatabase.h +++ b/sources/dataBase/projectdatabase.h @@ -150,7 +150,7 @@ class projectDataBase : public QObject void watchConductor(Conductor *conductor); void insertTerminal(Terminal *terminal); void insertTerminal(const QString &uuid, const QString &element_uuid, - const QString &name); + const QString &name, const QVariant &index); void prepareQuery(); static QHash elementInfoToString( Element *elmt); From 371ea881e515fb18d538db8e71cb4db4733e81ab Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 23:08:32 +1300 Subject: [PATCH 13/18] Keep longestConductorInPotential's doc comment on the function Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/qetgraphicsitem/conductor.cpp | 12 ++++++------ tests/qttest/tst_potentialtextcarrier.cpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 0d2faa2f2..5c6daa74a 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -2305,12 +2305,6 @@ QPointF Conductor::movePointIntoPolygon(const QPointF &point, const QPainterPath } } -/** - @brief longestConductorInPotential - @param conductor : a conductor in the potential to search - @param all_diagram : true -> search in the whole project, false -> search only in the diagram of conductor - @return the longest conductor in the same potential of conductor -*/ namespace { /// The two ends of @p conductor on the folio, smaller first, compared /// by x then y. @@ -2343,6 +2337,12 @@ namespace { } } +/** + @brief longestConductorInPotential + @param conductor : a conductor in the potential to search + @param all_diagram : true -> search in the whole project, false -> search only in the diagram of conductor + @return the longest conductor in the same potential of conductor +*/ Conductor * longestConductorInPotential(Conductor *conductor, bool all_diagram) { Conductor *longest_conductor = conductor; qreal longest_length = conductor->length(); diff --git a/tests/qttest/tst_potentialtextcarrier.cpp b/tests/qttest/tst_potentialtextcarrier.cpp index 559ef0ce0..97d8c28d2 100644 --- a/tests/qttest/tst_potentialtextcarrier.cpp +++ b/tests/qttest/tst_potentialtextcarrier.cpp @@ -66,8 +66,8 @@ private slots: QVERIFY(QFile::exists(QStringLiteral(QET_TEST_BINARY_PATH))); } - // Before the fix about half the runs differed from the first, so - // eight agreeing runs leave a 1 in 128 chance of a false pass. + // Before the fix about half the runs differed from the first, so + // eight agreeing runs leave a 1 in 128 chance of a false pass. void sameCarrierEveryRun() { const QString first = carrier(0); From ca42080ebe75867f90a7b9522294e332a1e294f4 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 2 Oct 2026 23:21:35 +1300 Subject: [PATCH 14/18] Route a conductor in milliseconds on a crowded folio The router costed every grid edge against every symbol and every wire segment on the folio. On the 191-symbol, 366-wire Polonez example that is about 145 million tests and 700 ms per route, so a qet_edit routing some 40 wires there ran into the scripting run's 30-second limit. Each symbol and wire now visits only the grid edges it can touch, found by binary search, and applies the same exact test to them as before, in the same order. Rerouting every conductor of the 23 example projects gives the same 11,018 saved segments as before, now 22 ms per route on Polonez instead of 700. Co-Authored-By: Claude Opus 5.5 (1M context) --- sources/conductorrouter.cpp | 96 ++++++++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 29 deletions(-) diff --git a/sources/conductorrouter.cpp b/sources/conductorrouter.cpp index 93912bdd0..d3d800453 100644 --- a/sources/conductorrouter.cpp +++ b/sources/conductorrouter.cpp @@ -119,35 +119,77 @@ int indexOf(const QVector &v, qreal c) return (it != v.end() && std::abs(*it - c) < eps) ? int(it - v.begin()) : -1; } - ///The cost of the edge along one axis from a to b at fixed coordinate at, - ///or infinity if it crosses an obstacle. horizontal says which axis. -qreal edgeCost(bool horizontal, qreal at, qreal a, qreal b, - const QList &obstacles, - const QVector &along, const QVector &across, - qreal grid) + ///[first, last) of the sorted v: the values strictly between low and high +std::pair openRange(const QVector &v, qreal low, qreal high) { + const int first = int(std::upper_bound(v.begin(), v.end(), low) - v.begin()); + const int last = int(std::lower_bound(v.begin(), v.end(), high) - v.begin()); + return {first, std::max(first, last)}; +} + + ///The cost of every edge along one axis, or infinity where an obstacle + ///blocks it. Edge (k, i) runs from pos[i] to pos[i + 1] at the fixed + ///coordinate lines[k], and is stored at [k * pos.size() + i]; + ///horizontal says which axis pos is. Each obstacle and wire visits only + ///the edges it can touch, so the cost grows with the folio, not with + ///the folio times everything drawn on it. +std::vector edgeCosts(bool horizontal, + const QVector &pos, const QVector &lines, + const QList &obstacles, + const QVector &along, const QVector &across, + qreal grid) +{ + const int np = pos.size(), nl = lines.size(); + std::vector cost(size_t(np) * nl, std::numeric_limits::infinity()); + for (int k = 0; k < nl; ++k) + for (int i = 0; i + 1 < np; ++i) + cost[size_t(k) * np + i] = pos[i + 1] - pos[i]; + + // The edges i that can overlap (low, high): pos[i + 1] > low and + // pos[i] < high. The exact test is applied to each one found. + const auto edges = [&](qreal low, qreal high) { + const int first = int(std::upper_bound(pos.begin(), pos.end(), low) - pos.begin()) - 1; + const int last = int(std::lower_bound(pos.begin(), pos.end(), high) - pos.begin()); + return std::pair{std::max(0, first), std::min(np - 1, last)}; + }; + for (const QRectF &r : obstacles) { const qreal lo = horizontal ? r.left() : r.top(); const qreal hi = horizontal ? r.right() : r.bottom(); const qreal flo = horizontal ? r.top() : r.left(); const qreal fhi = horizontal ? r.bottom(): r.right(); - if (at > flo + eps && at < fhi - eps - && std::min(b, hi) - std::max(a, lo) > eps) - return std::numeric_limits::infinity(); + const auto [k0, k1] = openRange(lines, flo, fhi); + const auto [i0, i1] = edges(lo, hi); + for (int k = k0; k < k1; ++k) { + if (!(lines[k] > flo + eps && lines[k] < fhi - eps)) continue; + for (int i = i0; i < i1; ++i) + if (std::min(pos[i + 1], hi) - std::max(pos[i], lo) > eps) + cost[size_t(k) * np + i] = std::numeric_limits::infinity(); + } } - qreal cost = b - a; for (const Span &s : along) { - if (std::abs(s.at - at) > 0.5) continue; - const qreal overlap = std::min(b, s.to) - std::max(a, s.from); - if (overlap > eps) cost += overlap * along_factor; + const int k0 = int(std::lower_bound(lines.begin(), lines.end(), s.at - 0.5) - lines.begin()); + const auto [i0, i1] = edges(s.from, s.to); + for (int k = k0; k < nl && lines[k] <= s.at + 0.5; ++k) { + if (std::abs(s.at - lines[k]) > 0.5) continue; + for (int i = i0; i < i1; ++i) { + const qreal overlap = std::min(pos[i + 1], s.to) - std::max(pos[i], s.from); + if (overlap > eps) cost[size_t(k) * np + i] += overlap * along_factor; + } + } } for (const Span &s : across) { // Half-open (a, b], so a crossing on a grid node is counted // once, by the edge that ends on it; and only through the // other wire's interior, not at its end, which is a junction. - if (s.at > a + eps && s.at <= b + eps - && at > s.from + 0.5 && at < s.to - 0.5) - cost += cross_steps * grid; + const auto [k0, k1] = openRange(lines, s.from, s.to); + const auto [i0, i1] = edges(s.at - 1.0, s.at + 1.0); + for (int k = k0; k < k1; ++k) { + if (!(lines[k] > s.from + 0.5 && lines[k] < s.to - 0.5)) continue; + for (int i = i0; i < i1; ++i) + if (s.at > pos[i] + eps && s.at <= pos[i + 1] + eps) + cost[size_t(k) * np + i] += cross_steps * grid; + } } return cost; } @@ -200,18 +242,14 @@ ConductorRouter::Result ConductorRouter::route(const Request &r) } } - // The cost of the edge from each node to the next one east - // (h_cost) and south (v_cost); infinity where blocked or none. + // The cost of the edge from each node to the next one east, + // h_cost[j * nx + i], and south, v_cost[i * ny + j]; infinity + // where blocked or none. const qreal inf = std::numeric_limits::infinity(); - std::vector h_cost(size_t(nx) * ny, inf), v_cost(size_t(nx) * ny, inf); - for (int j = 0; j < ny; ++j) - for (int i = 0; i + 1 < nx; ++i) - h_cost[size_t(j) * nx + i] = edgeCost(true, ys[j], xs[i], xs[i + 1], obstacles, - horizontal_wires, vertical_wires, r.grid); - for (int i = 0; i < nx; ++i) - for (int j = 0; j + 1 < ny; ++j) - v_cost[size_t(j) * nx + i] = edgeCost(false, xs[i], ys[j], ys[j + 1], obstacles, - vertical_wires, horizontal_wires, r.grid); + const std::vector h_cost = edgeCosts(true, xs, ys, obstacles, + horizontal_wires, vertical_wires, r.grid); + const std::vector v_cost = edgeCosts(false, ys, xs, obstacles, + vertical_wires, horizontal_wires, r.grid); const int start_node = indexOf(ys, s1.y()) * nx + indexOf(xs, s1.x()); const int goal_node = indexOf(ys, s2.y()) * nx + indexOf(xs, s2.x()); @@ -255,8 +293,8 @@ ConductorRouter::Result ConductorRouter::route(const Request &r) switch (nd) { case Direction::East: if (i + 1 < nx) { ni = i + 1; edge = h_cost[size_t(j) * nx + i]; } break; case Direction::West: if (i > 0) { ni = i - 1; edge = h_cost[size_t(j) * nx + ni]; } break; - case Direction::South: if (j + 1 < ny) { nj = j + 1; edge = v_cost[size_t(j) * nx + i]; } break; - case Direction::North: if (j > 0) { nj = j - 1; edge = v_cost[size_t(nj) * nx + i]; } break; + case Direction::South: if (j + 1 < ny) { nj = j + 1; edge = v_cost[size_t(i) * ny + j]; } break; + case Direction::North: if (j > 0) { nj = j - 1; edge = v_cost[size_t(i) * ny + nj]; } break; } if (edge == inf) continue; const qreal next_cost = cost + edge + (nd == d ? 0 : bend); From 708dd4ddd2af7c0419e64345522f4e94b4f592c9 Mon Sep 17 00:00:00 2001 From: Jeff Patterson Date: Fri, 2 Oct 2026 05:47:31 -0500 Subject: [PATCH 15/18] Served the settings page icons as SVG and kept draw-fillet in the generated themes --- misc/import_breeze_icons.py | 13 ++++++++++++- misc/make_icon_themes.py | 32 ++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/misc/import_breeze_icons.py b/misc/import_breeze_icons.py index e8bd9af4a..3b9afbad0 100644 --- a/misc/import_breeze_icons.py +++ b/misc/import_breeze_icons.py @@ -29,6 +29,9 @@ and 32 pixels, unchanged: ico/breeze/22/.svg ico/breeze/32/.svg +The settings page icons in BREEZE_PAGES are copied from the one size +listed for each, to ico/breeze//.svg. + Many Breeze names are symbolic links to another file. The copy holds the linked file's content under the name BREEZE gives, so list the link's target in BREEZE and several QET icons share one copy. Every name needs @@ -39,7 +42,7 @@ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent)) -from make_icon_themes import BREEZE, BREEZE_SIZES, ICO # noqa: E402 +from make_icon_themes import BREEZE, BREEZE_PAGES, BREEZE_SIZES, ICO # noqa: E402 CATEGORIES = ["actions", "places", "mimetypes", "status", "devices", "apps", "preferences"] OUT = ICO / "breeze" @@ -69,6 +72,14 @@ def main(): target.parent.mkdir(parents=True, exist_ok=True) target.write_bytes(source.read_bytes()) wanted.add(target) + for name, size in BREEZE_PAGES.values(): + source = find(checkout, name, size) + if not source: + sys.exit(f"{name}: no {size} pixel icon in {checkout}") + target = OUT / str(size) / f"{name}.svg" + target.parent.mkdir(parents=True, exist_ok=True) + target.write_bytes(source.read_bytes()) + wanted.add(target) # Drop icons no longer listed, so ico/breeze/ holds only what the theme uses. for old in sorted(OUT.glob("*/*.svg")): if old not in wanted: diff --git a/misc/make_icon_themes.py b/misc/make_icon_themes.py index 1a2a79bfb..3d585a3db 100644 --- a/misc/make_icon_themes.py +++ b/misc/make_icon_themes.py @@ -94,9 +94,13 @@ Breeze art: another multiple of 16 (32, 64, 128...) the smooth 16 pixel design 44 pixels and scalable the smooth 22 pixel design -The Scale=2 folders follow the table at twice their size. Four icons +The Scale=2 folders follow the table at twice their size. Five icons have a 32 pixel design, used in place of both smooth vectors. +A settings page icon (PAGES) is colored art shown at 64 and 128 pixels: +one SVG in the scalable folder serves it. The printer and settings pages +use the Breeze art QET's PNGs were exported from (BREEZE_PAGES). + An SVG is recolored for the dark theme through its text color (see dark_svg). A colored SVG, one without a text color, gets no dark copy and is inherited from the light theme, as a colored PNG is. @@ -110,7 +114,7 @@ touched; the dark theme inherits them from the light one. Qt inherits by name, not by size: once a name has any file in the dark theme, the parent theme is never consulted for that name, and a size the dark theme lacks is served by scaling the nearest dark file. An icon that -is line art at 22 pixels and colored at 128 (the printer) would then come +is line art at 22 pixels and colored at 128 would then come out as the 22 pixel copy scaled up on a dark palette. So for every name the dark theme holds, the .qrc also aliases the light files of the sizes the dark theme does not have, when they read on the dark window (3:1, @@ -173,6 +177,7 @@ SVGS = [ "scalable/align-vertical-center.svg", "scalable/align-vertical-top.svg", "scalable/diagram.svg", + "scalable/draw-fillet.svg", "scalable/folio-delete.svg", "scalable/folio-new.svg", "scalable/folio-properties.svg", @@ -197,7 +202,6 @@ BREEZE = { "applications-development-translation": "amarok_change_language", "arrow-left": "go-previous", "arrow-right": "go-next", - "circle": "draw-circle", "configure": "configure", "dialog-cancel": "dialog-cancel", "dialog-ok": "dialog-ok-apply", @@ -233,7 +237,6 @@ BREEZE = { "edit-table-insert-row-above": "edit-table-insert-row-above", "edit-table-insert-row-under": "edit-table-insert-row-under", "edit-undo": "edit-undo", - "ellipse": "draw-ellipse", "flip": "object-flip-vertical", "folder": "folder", "folder-new": "folder-new", @@ -283,7 +286,6 @@ BREEZE = { "two_pages": "view-pages-facing", "user-busy": "im-user-busy", "user-online": "im-user-online", - "view-fit-window": "zoom-fit-best", "view-fullscreen": "view-fullscreen", "view-pim-journal": "view-calendar-journal", "view-refresh": "view-refresh", @@ -299,6 +301,19 @@ BREEZE = { # Sizes Breeze draws its action icons at, the folders of ico/breeze/. BREEZE_SIZES = [16, 22, 32] +# Settings page icons: colored art shown at 64 and 128 pixels only, so one +# scalable SVG serves every size. QET name to Breeze name and the Breeze +# size it is copied from (ico/breeze//.svg). QET's PNGs of +# these were exports of the same Breeze art. +BREEZE_PAGES = { + "printer": ("printer", 64), + "settings": ("systemsettings", 48), +} + +# Page icons, QET name to SVG, relative to ico/. +PAGES = {name: f"breeze/{size}/{breeze}.svg" for name, (breeze, size) in BREEZE_PAGES.items()} +PAGES["configure-shortcuts"] = "128x128/configure-shortcuts.svg" + # Where the generator puts the 22 pixel Breeze art moved onto a 24 pixel # canvas (see on_24_canvas). BREEZE_24 = ICO / "generated" / "breeze-24" @@ -599,7 +614,7 @@ def main(): for size in SIZES: folder = ICO / size for png in sorted(folder.glob("*.png")): - if png.stem in BREEZE or png.stem in TRACED or png.stem in grid: + if png.stem in BREEZE or png.stem in TRACED or png.stem in grid or png.stem in PAGES: continue rel = f"{size}/{png.name}" names = [png.stem] @@ -624,8 +639,9 @@ def main(): changed += write_if_changed(target, dark_image) dark.append(f"themes/qet-dark/{size}/{name}.png") - for rel in SVGS: - name = (ICO / rel).name.replace("-symbolic", "") + svgs = [((ICO / rel).name.replace("-symbolic", ""), rel) for rel in SVGS] + svgs += [(f"{name}.svg", rel) for name, rel in PAGES.items()] + for name, rel in svgs: light.append((f"themes/qet/scalable/{name}", rel)) text = dark_svg((ICO / rel).read_text(encoding="utf-8")) if text is None: From 15439cfc8418a7359d3d9a49d2a5bfe62ff49eb8 Mon Sep 17 00:00:00 2001 From: Jeff Patterson Date: Fri, 2 Oct 2026 05:47:32 -0500 Subject: [PATCH 16/18] Traced the last PNG theme icons and took ispyisail's circle, ellipse and fit-window drawings --- ico/copyright | 46 ++------ ico/traced/16/arc.svg | 16 +++ ico/traced/16/autoconnect.svg | 14 +++ ico/traced/16/bring_forward.svg | 17 +++ ico/traced/16/circle.svg | 18 ++++ ico/traced/16/conductor.svg | 12 +++ ico/traced/16/element.svg | 31 ++++++ ico/traced/16/ellipse.svg | 17 +++ ico/traced/16/move.svg | 63 +++++++++++ ico/traced/16/qet.svg | 73 +++++++++++++ ico/traced/16/qt.svg | 64 +++++++++++ ico/traced/16/user-away-extended.svg | 20 ++++ ico/traced/16/view-fit-window.svg | 10 ++ ico/traced/22/arc.svg | 27 +++++ ico/traced/22/autoconnect.svg | 13 +++ ico/traced/22/bring_forward.svg | 46 ++++++++ ico/traced/22/circle.svg | 19 ++++ ico/traced/22/conductor.svg | 11 ++ ico/traced/22/element.svg | 20 ++++ ico/traced/22/ellipse.svg | 21 ++++ ico/traced/22/move.svg | 69 ++++++++++++ ico/traced/22/qet.svg | 125 ++++++++++++++++++++++ ico/traced/22/qt.svg | 81 ++++++++++++++ ico/traced/22/user-away-extended.svg | 33 ++++++ ico/traced/22/view-fit-window.svg | 10 ++ ico/traced/large16/arc.svg | 8 ++ ico/traced/large16/autoconnect.svg | 40 +++++++ ico/traced/large16/bring_forward.svg | 13 +++ ico/traced/large16/circle.svg | 10 ++ ico/traced/large16/conductor.svg | 19 ++++ ico/traced/large16/element.svg | 12 +++ ico/traced/large16/ellipse.svg | 10 ++ ico/traced/large16/move.svg | 11 ++ ico/traced/large16/qet.svg | 13 +++ ico/traced/large16/qt.svg | 13 +++ ico/traced/large16/user-away-extended.svg | 13 +++ ico/traced/large16/view-fit-window.svg | 17 +++ ico/traced/large22/arc.svg | 8 ++ ico/traced/large22/autoconnect.svg | 46 ++++++++ ico/traced/large22/bring_forward.svg | 13 +++ ico/traced/large22/circle.svg | 10 ++ ico/traced/large22/conductor.svg | 15 +++ ico/traced/large22/element.svg | 12 +++ ico/traced/large22/ellipse.svg | 10 ++ ico/traced/large22/move.svg | 11 ++ ico/traced/large22/qet.svg | 13 +++ ico/traced/large22/qt.svg | 13 +++ ico/traced/large22/user-away-extended.svg | 13 +++ ico/traced/large22/view-fit-window.svg | 17 +++ 49 files changed, 1199 insertions(+), 37 deletions(-) create mode 100644 ico/traced/16/arc.svg create mode 100644 ico/traced/16/autoconnect.svg create mode 100644 ico/traced/16/bring_forward.svg create mode 100644 ico/traced/16/circle.svg create mode 100644 ico/traced/16/conductor.svg create mode 100644 ico/traced/16/element.svg create mode 100644 ico/traced/16/ellipse.svg create mode 100644 ico/traced/16/move.svg create mode 100644 ico/traced/16/qet.svg create mode 100644 ico/traced/16/qt.svg create mode 100644 ico/traced/16/user-away-extended.svg create mode 100644 ico/traced/16/view-fit-window.svg create mode 100644 ico/traced/22/arc.svg create mode 100644 ico/traced/22/autoconnect.svg create mode 100644 ico/traced/22/bring_forward.svg create mode 100644 ico/traced/22/circle.svg create mode 100644 ico/traced/22/conductor.svg create mode 100644 ico/traced/22/element.svg create mode 100644 ico/traced/22/ellipse.svg create mode 100644 ico/traced/22/move.svg create mode 100644 ico/traced/22/qet.svg create mode 100644 ico/traced/22/qt.svg create mode 100644 ico/traced/22/user-away-extended.svg create mode 100644 ico/traced/22/view-fit-window.svg create mode 100644 ico/traced/large16/arc.svg create mode 100644 ico/traced/large16/autoconnect.svg create mode 100644 ico/traced/large16/bring_forward.svg create mode 100644 ico/traced/large16/circle.svg create mode 100644 ico/traced/large16/conductor.svg create mode 100644 ico/traced/large16/element.svg create mode 100644 ico/traced/large16/ellipse.svg create mode 100644 ico/traced/large16/move.svg create mode 100644 ico/traced/large16/qet.svg create mode 100644 ico/traced/large16/qt.svg create mode 100644 ico/traced/large16/user-away-extended.svg create mode 100644 ico/traced/large16/view-fit-window.svg create mode 100644 ico/traced/large22/arc.svg create mode 100644 ico/traced/large22/autoconnect.svg create mode 100644 ico/traced/large22/bring_forward.svg create mode 100644 ico/traced/large22/circle.svg create mode 100644 ico/traced/large22/conductor.svg create mode 100644 ico/traced/large22/element.svg create mode 100644 ico/traced/large22/ellipse.svg create mode 100644 ico/traced/large22/move.svg create mode 100644 ico/traced/large22/qet.svg create mode 100644 ico/traced/large22/qt.svg create mode 100644 ico/traced/large22/user-away-extended.svg create mode 100644 ico/traced/large22/view-fit-window.svg diff --git a/ico/copyright b/ico/copyright index a0c7c532a..a8bc50945 100644 --- a/ico/copyright +++ b/ico/copyright @@ -92,6 +92,7 @@ Files: ico/22x22/* Files: ico/32x32/* Files: ico/48x48/* Files: ico/128x128/* +Files: ico/breeze/* From the KDE Breeze theme icons Copyright: 2014, Uri Herrera and others @@ -136,12 +137,9 @@ Clarification: Some icons have been created exclusively for QElectroTech. They are based or inspired by the KDE Breeze icon theme. These icons are: - ico/16x16/diagram.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/document-open.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/east.svg by the QElectroTech team, traced from east.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/edit-clear.png from https://www.brandeps.com (License CC BY-ND 3.0) changes: icon color, icon rotation - ico/16x16/element.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) + ico/traced/*/element.svg by the QElectroTech team, traced from element.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/element-delete.svg by the QElectroTech team, traced from element-delete.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/element-edit.svg by the QElectroTech team, traced from element-edit.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/element-new.svg by the QElectroTech team, traced from element-new.png by Nuri, with permission (License GPL-2.0-or-later) @@ -151,69 +149,43 @@ Clarification: ico/traced/*/endline-simple.svg by the QElectroTech team, traced from endline-simple.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/endline-triangle.svg by the QElectroTech team, traced from endline-triangle.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/export-csv.svg by the QElectroTech team, traced from export-csv.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/folio-delete.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/folio-new.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/folio-properties.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/folder-delete.svg by the QElectroTech team, traced from folder-delete.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/folder-edit.svg by the QElectroTech team, traced from folder-edit.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/folder-only-this.svg by the QElectroTech team, traced from folder-only-this.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/folder-properties.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/folder-show-all.svg by the QElectroTech team, traced from folder-show-all.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/go-down-double.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/go-up-double.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/ground.svg by the QElectroTech team, traced from ground.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/label.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/list-remove.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/neutral.svg by the QElectroTech team, traced from neutral.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/north.svg by the QElectroTech team, traced from north.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/phase.svg by the QElectroTech team, traced from phase.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/project.svg by the QElectroTech team, traced from project.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/project-close.svg by the QElectroTech team, traced from project-close.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/project-delete.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/project-new.svg by the QElectroTech team, traced from project-new.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/project-properties.svg by the QElectroTech team, traced from project-properties.png by Nuri, with permission (License GPL-2.0-or-later) - ico/16x16/qet.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/16x16/qt.png from http://brand.qt.io/downloads/ + ico/traced/*/qet.svg by the QElectroTech team, traced from qet.png by Nuri, with permission (License GPL-2.0-or-later) + ico/traced/*/qt.svg by the QElectroTech team, traced from the Qt logo, http://brand.qt.io/downloads/ ico/traced/*/south.svg by the QElectroTech team, traced from south.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/terminalstrip.svg by the QElectroTech team, traced from terminalstrip.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/west.svg by the QElectroTech team, traced from west.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/arc.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/autoconnect.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/diagram.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/diagram_add.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) + ico/traced/*/arc.svg by the QElectroTech team, traced from arc.png by Nuri, with permission (License GPL-2.0-or-later) + ico/traced/*/autoconnect.svg by the QElectroTech team, traced from autoconnect.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/diagram_bg.svg by the QElectroTech team, traced from diagram_bg.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/diagram_del.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/dialog-information.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/document-open.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/edit-clear.png from https://www.brandeps.com (License CC BY-ND 3.0) changes: icon color, icon rotation - ico/22x22/folder-new.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/hotspot.svg by the QElectroTech team, traced from hotspot.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/label.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/landscape.svg by the QElectroTech team, traced from landscape.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/line.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/list-remove.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/portrait.svg by the QElectroTech team, traced from portrait.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/project-delete.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/22x22/single_page.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/traced/*/terminal.svg by the QElectroTech team, traced from terminal.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/titleblock-bottom.svg by the QElectroTech team, traced from titleblock-bottom.png by Nuri, with permission (License GPL-2.0-or-later) ico/traced/*/titleblock-right.svg by the QElectroTech team, traced from titleblock-right.png by Nuri, with permission (License GPL-2.0-or-later) - ico/22x22/two_pages.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/32x32/qt.png from http://brand.qt.io/downloads/ ico/traced/*/simplifyrichtext.svg by the QElectroTech team, traced from simplifyrichtext.png by Nuri, with permission (License GPL-2.0-or-later) - ico/48x48/document-print-frame.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/128x128/diagram.png by the QElectroTech team (License CC BY-ND 3.0) - ico/128x128/document-export.png by the QElectroTech team (License CC BY-ND 3.0) - ico/128x128/configure-shortcuts.png by Jeff Patterson from the QElectroTech team (License CC BY-ND 3.0), rendered from the .svg files beside them - ico/scalable/pdf-import.svg by Jeff Patterson from the QElectroTech team (License CC BY-ND 3.0), laid out like ico/22x22/insert-image.png + ico/128x128/configure-shortcuts.svg by Jeff Patterson from the QElectroTech team (License GPL-2.0-or-later) + ico/scalable/pdf-import.svg by Jeff Patterson from the QElectroTech team (License CC BY-ND 3.0), laid out like the former insert-image.png ico/scalable/diagram.svg, folio-new.svg, folio-delete.svg, folio-properties.svg, label.svg by Jeff Patterson from the QElectroTech team (License CC BY-ND 3.0), the folio icons redrawn in the same style + ico/traced/*/circle.svg, ellipse.svg, view-fit-window.svg by ispyisail from the QElectroTech team (License GPL-2.0-or-later), 16 pixel versions by the QElectroTech team ico/traced/* other than the above by the QElectroTech team (License GPL-2.0-or-later), traced from QElectroTech's PNG icons of the same names ico/scalable/16/* by the QElectroTech team (License GPL-2.0-or-later), 16 pixel versions of the ico/scalable/ icons of the same names ico/breeze-added/16/* by the QElectroTech team, 16 pixel versions of the KDE Breeze icons of the same names (License LGPL, as Breeze) ico/256x256/* by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/breeze-icons/* by Nuri from the QElectroTech team (License CC BY-ND 3.0) - ico/diagram.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/mac_icon/* by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/splash.png by Nuri from the QElectroTech team (License CC BY-ND 3.0) ico/windows_icon/* by Nuri from the QElectroTech team (License CC BY-ND 3.0) diff --git a/ico/traced/16/arc.svg b/ico/traced/16/arc.svg new file mode 100644 index 000000000..067b784ab --- /dev/null +++ b/ico/traced/16/arc.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/ico/traced/16/autoconnect.svg b/ico/traced/16/autoconnect.svg new file mode 100644 index 000000000..f7908086f --- /dev/null +++ b/ico/traced/16/autoconnect.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/ico/traced/16/bring_forward.svg b/ico/traced/16/bring_forward.svg new file mode 100644 index 000000000..bbcfafc85 --- /dev/null +++ b/ico/traced/16/bring_forward.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/traced/16/circle.svg b/ico/traced/16/circle.svg new file mode 100644 index 000000000..c05f542ee --- /dev/null +++ b/ico/traced/16/circle.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/ico/traced/16/conductor.svg b/ico/traced/16/conductor.svg new file mode 100644 index 000000000..16ca2aa30 --- /dev/null +++ b/ico/traced/16/conductor.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/traced/16/element.svg b/ico/traced/16/element.svg new file mode 100644 index 000000000..65961d04c --- /dev/null +++ b/ico/traced/16/element.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/16/ellipse.svg b/ico/traced/16/ellipse.svg new file mode 100644 index 000000000..0c3515a70 --- /dev/null +++ b/ico/traced/16/ellipse.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/traced/16/move.svg b/ico/traced/16/move.svg new file mode 100644 index 000000000..ca1a69142 --- /dev/null +++ b/ico/traced/16/move.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/16/qet.svg b/ico/traced/16/qet.svg new file mode 100644 index 000000000..3a8c37a1f --- /dev/null +++ b/ico/traced/16/qet.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/16/qt.svg b/ico/traced/16/qt.svg new file mode 100644 index 000000000..1d39bbb5c --- /dev/null +++ b/ico/traced/16/qt.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/16/user-away-extended.svg b/ico/traced/16/user-away-extended.svg new file mode 100644 index 000000000..ade4e5c3a --- /dev/null +++ b/ico/traced/16/user-away-extended.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/16/view-fit-window.svg b/ico/traced/16/view-fit-window.svg new file mode 100644 index 000000000..2be401960 --- /dev/null +++ b/ico/traced/16/view-fit-window.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/22/arc.svg b/ico/traced/22/arc.svg new file mode 100644 index 000000000..2f28cf24c --- /dev/null +++ b/ico/traced/22/arc.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/autoconnect.svg b/ico/traced/22/autoconnect.svg new file mode 100644 index 000000000..ca36d3aef --- /dev/null +++ b/ico/traced/22/autoconnect.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/traced/22/bring_forward.svg b/ico/traced/22/bring_forward.svg new file mode 100644 index 000000000..478f2c2df --- /dev/null +++ b/ico/traced/22/bring_forward.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/circle.svg b/ico/traced/22/circle.svg new file mode 100644 index 000000000..1dccc4a24 --- /dev/null +++ b/ico/traced/22/circle.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/conductor.svg b/ico/traced/22/conductor.svg new file mode 100644 index 000000000..b18342819 --- /dev/null +++ b/ico/traced/22/conductor.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/ico/traced/22/element.svg b/ico/traced/22/element.svg new file mode 100644 index 000000000..6fcf61e1c --- /dev/null +++ b/ico/traced/22/element.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/ellipse.svg b/ico/traced/22/ellipse.svg new file mode 100644 index 000000000..d31dc19be --- /dev/null +++ b/ico/traced/22/ellipse.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/move.svg b/ico/traced/22/move.svg new file mode 100644 index 000000000..4fabe5b6d --- /dev/null +++ b/ico/traced/22/move.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/qet.svg b/ico/traced/22/qet.svg new file mode 100644 index 000000000..ae4009302 --- /dev/null +++ b/ico/traced/22/qet.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/qt.svg b/ico/traced/22/qt.svg new file mode 100644 index 000000000..8c0534014 --- /dev/null +++ b/ico/traced/22/qt.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/user-away-extended.svg b/ico/traced/22/user-away-extended.svg new file mode 100644 index 000000000..77cb631c4 --- /dev/null +++ b/ico/traced/22/user-away-extended.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/22/view-fit-window.svg b/ico/traced/22/view-fit-window.svg new file mode 100644 index 000000000..c38944073 --- /dev/null +++ b/ico/traced/22/view-fit-window.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/large16/arc.svg b/ico/traced/large16/arc.svg new file mode 100644 index 000000000..a02942c80 --- /dev/null +++ b/ico/traced/large16/arc.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/ico/traced/large16/autoconnect.svg b/ico/traced/large16/autoconnect.svg new file mode 100644 index 000000000..db1ba2417 --- /dev/null +++ b/ico/traced/large16/autoconnect.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/large16/bring_forward.svg b/ico/traced/large16/bring_forward.svg new file mode 100644 index 000000000..caa43e692 --- /dev/null +++ b/ico/traced/large16/bring_forward.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/traced/large16/circle.svg b/ico/traced/large16/circle.svg new file mode 100644 index 000000000..01eba33d3 --- /dev/null +++ b/ico/traced/large16/circle.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/large16/conductor.svg b/ico/traced/large16/conductor.svg new file mode 100644 index 000000000..6721eccb2 --- /dev/null +++ b/ico/traced/large16/conductor.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/traced/large16/element.svg b/ico/traced/large16/element.svg new file mode 100644 index 000000000..66b215a41 --- /dev/null +++ b/ico/traced/large16/element.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/ico/traced/large16/ellipse.svg b/ico/traced/large16/ellipse.svg new file mode 100644 index 000000000..e6a9bb7d0 --- /dev/null +++ b/ico/traced/large16/ellipse.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/large16/move.svg b/ico/traced/large16/move.svg new file mode 100644 index 000000000..180e532c4 --- /dev/null +++ b/ico/traced/large16/move.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/ico/traced/large16/qet.svg b/ico/traced/large16/qet.svg new file mode 100644 index 000000000..8df27d1ca --- /dev/null +++ b/ico/traced/large16/qet.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/ico/traced/large16/qt.svg b/ico/traced/large16/qt.svg new file mode 100644 index 000000000..989d8e813 --- /dev/null +++ b/ico/traced/large16/qt.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/ico/traced/large16/user-away-extended.svg b/ico/traced/large16/user-away-extended.svg new file mode 100644 index 000000000..5bb547c5a --- /dev/null +++ b/ico/traced/large16/user-away-extended.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/traced/large16/view-fit-window.svg b/ico/traced/large16/view-fit-window.svg new file mode 100644 index 000000000..c7fd13771 --- /dev/null +++ b/ico/traced/large16/view-fit-window.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/traced/large22/arc.svg b/ico/traced/large22/arc.svg new file mode 100644 index 000000000..dc582061a --- /dev/null +++ b/ico/traced/large22/arc.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/ico/traced/large22/autoconnect.svg b/ico/traced/large22/autoconnect.svg new file mode 100644 index 000000000..29a0bffa0 --- /dev/null +++ b/ico/traced/large22/autoconnect.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/traced/large22/bring_forward.svg b/ico/traced/large22/bring_forward.svg new file mode 100644 index 000000000..a7c59edb3 --- /dev/null +++ b/ico/traced/large22/bring_forward.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/traced/large22/circle.svg b/ico/traced/large22/circle.svg new file mode 100644 index 000000000..344d34e0d --- /dev/null +++ b/ico/traced/large22/circle.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/large22/conductor.svg b/ico/traced/large22/conductor.svg new file mode 100644 index 000000000..0c1afe579 --- /dev/null +++ b/ico/traced/large22/conductor.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/traced/large22/element.svg b/ico/traced/large22/element.svg new file mode 100644 index 000000000..0f84da760 --- /dev/null +++ b/ico/traced/large22/element.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/ico/traced/large22/ellipse.svg b/ico/traced/large22/ellipse.svg new file mode 100644 index 000000000..979506787 --- /dev/null +++ b/ico/traced/large22/ellipse.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/traced/large22/move.svg b/ico/traced/large22/move.svg new file mode 100644 index 000000000..2c505be49 --- /dev/null +++ b/ico/traced/large22/move.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/ico/traced/large22/qet.svg b/ico/traced/large22/qet.svg new file mode 100644 index 000000000..c889fac42 --- /dev/null +++ b/ico/traced/large22/qet.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/ico/traced/large22/qt.svg b/ico/traced/large22/qt.svg new file mode 100644 index 000000000..989d8e813 --- /dev/null +++ b/ico/traced/large22/qt.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/ico/traced/large22/user-away-extended.svg b/ico/traced/large22/user-away-extended.svg new file mode 100644 index 000000000..1b33be0c4 --- /dev/null +++ b/ico/traced/large22/user-away-extended.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/traced/large22/view-fit-window.svg b/ico/traced/large22/view-fit-window.svg new file mode 100644 index 000000000..5fd9421f5 --- /dev/null +++ b/ico/traced/large22/view-fit-window.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + From 0d473a3889e211a65a967ea20d5cac191adbcf4f Mon Sep 17 00:00:00 2001 From: Jeff Patterson Date: Fri, 2 Oct 2026 05:47:32 -0500 Subject: [PATCH 17/18] Imported the Breeze page icons and generated the light and dark icon themes --- ico/breeze/16/draw-circle.svg | 9 - ico/breeze/16/draw-ellipse.svg | 9 - ico/breeze/16/go-next-skip.svg | 13 - ico/breeze/16/go-previous-skip.svg | 13 - ico/breeze/16/text-csv.svg | 3 - ico/breeze/16/text-field.svg | 13 - ico/breeze/16/text-xml.svg | 3 - ico/breeze/16/view-pages-overview.svg | 9 - ico/breeze/22/draw-circle.svg | 9 - ico/breeze/22/draw-ellipse.svg | 9 - ico/breeze/22/go-next-skip.svg | 10 - ico/breeze/22/go-previous-skip.svg | 10 - ico/breeze/22/text-csv.svg | 11 - ico/breeze/22/text-field.svg | 14 - ico/breeze/22/text-xml.svg | 38 -- ico/breeze/22/view-pages-overview.svg | 9 - ico/breeze/32/go-next-skip.svg | 10 - ico/breeze/32/go-previous-skip.svg | 10 - ico/breeze/32/text-csv.svg | 28 - ico/breeze/32/text-xml.svg | 26 - ico/breeze/48/systemsettings.svg | 168 +++++ ico/breeze/64/printer.svg | 212 +++++++ ico/generated/breeze-24/draw-circle.svg | 11 - ico/generated/breeze-24/draw-ellipse.svg | 11 - ico/generated/traced-24/arc.svg | 29 + ico/generated/traced-24/autoconnect.svg | 15 + ico/generated/traced-24/bring_forward.svg | 48 ++ ico/generated/traced-24/circle.svg | 21 + ico/generated/traced-24/conductor.svg | 13 + ico/generated/traced-24/element.svg | 22 + ico/generated/traced-24/ellipse.svg | 23 + ico/generated/traced-24/move.svg | 71 +++ ico/generated/traced-24/qet.svg | 127 ++++ ico/generated/traced-24/qt.svg | 83 +++ .../traced-24/user-away-extended.svg | 35 ++ ico/generated/traced-24/view-fit-window.svg | 12 + ico/generated/traced-large-24/arc.svg | 10 + ico/generated/traced-large-24/autoconnect.svg | 48 ++ .../traced-large-24/bring_forward.svg | 15 + ico/generated/traced-large-24/circle.svg | 12 + ico/generated/traced-large-24/conductor.svg | 17 + ico/generated/traced-large-24/element.svg | 14 + ico/generated/traced-large-24/ellipse.svg | 12 + ico/generated/traced-large-24/move.svg | 13 + ico/generated/traced-large-24/qet.svg | 15 + .../traced-large-24/user-away-extended.svg | 15 + .../traced-large-24/view-fit-window.svg | 19 + ico/icon-themes.qrc | 578 +++++++++++++----- ico/themes/qet-dark/128x128/settings.png | Bin 4641 -> 0 bytes .../16x16/edit-clear-locationbar-rtl.png | Bin 228 -> 0 bytes ico/themes/qet-dark/16x16/element.png | Bin 453 -> 0 bytes ico/themes/qet-dark/16x16/move.png | Bin 533 -> 0 bytes .../22x22/Actions-player-time-icon.png | Bin 517 -> 0 bytes ico/themes/qet-dark/22x22/arc.png | Bin 321 -> 0 bytes .../22x22/edit-clear-locationbar-rtl.png | Bin 326 -> 0 bytes ico/themes/qet-dark/22x22/move.png | Bin 619 -> 0 bytes .../qet-dark/32x32/format-text-color.png | Bin 417 -> 0 bytes ico/themes/qet-dark/32x32/insert-link.png | Bin 391 -> 0 bytes ico/themes/qet-dark/32x32/printer.png | Bin 192 -> 0 bytes .../qet-dark/48x48/user-away-extended.png | Bin 1145 -> 0 bytes ico/themes/qet-dark/48x48/user-away.png | Bin 1145 -> 0 bytes ico/themes/qet-dark/breeze-24/draw-circle.svg | 11 - .../qet-dark/breeze-24/draw-ellipse.svg | 11 - ico/themes/qet-dark/breeze/16/draw-circle.svg | 9 - .../qet-dark/breeze/16/draw-ellipse.svg | 9 - ico/themes/qet-dark/breeze/22/draw-circle.svg | 9 - .../qet-dark/breeze/22/draw-ellipse.svg | 9 - ico/themes/qet-dark/traced-24/arc.svg | 29 + ico/themes/qet-dark/traced-24/autoconnect.svg | 15 + .../qet-dark/traced-24/bring_forward.svg | 48 ++ ico/themes/qet-dark/traced-24/circle.svg | 21 + ico/themes/qet-dark/traced-24/conductor.svg | 13 + ico/themes/qet-dark/traced-24/element.svg | 22 + ico/themes/qet-dark/traced-24/ellipse.svg | 23 + ico/themes/qet-dark/traced-24/move.svg | 71 +++ .../qet-dark/traced-24/user-away-extended.svg | 35 ++ .../qet-dark/traced-24/view-fit-window.svg | 12 + ico/themes/qet-dark/traced-large-24/arc.svg | 10 + .../qet-dark/traced-large-24/autoconnect.svg | 48 ++ .../traced-large-24/bring_forward.svg | 15 + .../qet-dark/traced-large-24/circle.svg | 12 + .../qet-dark/traced-large-24/conductor.svg | 17 + .../qet-dark/traced-large-24/element.svg | 14 + .../qet-dark/traced-large-24/ellipse.svg | 12 + ico/themes/qet-dark/traced-large-24/move.svg | 13 + .../traced-large-24/user-away-extended.svg | 15 + .../traced-large-24/view-fit-window.svg | 19 + ico/themes/qet-dark/traced/16/arc.svg | 16 + ico/themes/qet-dark/traced/16/autoconnect.svg | 14 + .../qet-dark/traced/16/bring_forward.svg | 17 + ico/themes/qet-dark/traced/16/circle.svg | 18 + ico/themes/qet-dark/traced/16/conductor.svg | 12 + ico/themes/qet-dark/traced/16/element.svg | 31 + ico/themes/qet-dark/traced/16/ellipse.svg | 17 + ico/themes/qet-dark/traced/16/move.svg | 63 ++ .../qet-dark/traced/16/user-away-extended.svg | 20 + .../qet-dark/traced/16/view-fit-window.svg | 10 + ico/themes/qet-dark/traced/22/arc.svg | 27 + ico/themes/qet-dark/traced/22/autoconnect.svg | 13 + .../qet-dark/traced/22/bring_forward.svg | 46 ++ ico/themes/qet-dark/traced/22/circle.svg | 19 + ico/themes/qet-dark/traced/22/conductor.svg | 11 + ico/themes/qet-dark/traced/22/element.svg | 20 + ico/themes/qet-dark/traced/22/ellipse.svg | 21 + ico/themes/qet-dark/traced/22/move.svg | 69 +++ .../qet-dark/traced/22/user-away-extended.svg | 33 + .../qet-dark/traced/22/view-fit-window.svg | 10 + ico/themes/qet-dark/traced/large16/arc.svg | 8 + .../qet-dark/traced/large16/autoconnect.svg | 40 ++ .../qet-dark/traced/large16/bring_forward.svg | 13 + ico/themes/qet-dark/traced/large16/circle.svg | 10 + .../qet-dark/traced/large16/conductor.svg | 19 + .../qet-dark/traced/large16/element.svg | 12 + .../qet-dark/traced/large16/ellipse.svg | 10 + ico/themes/qet-dark/traced/large16/move.svg | 11 + .../traced/large16/user-away-extended.svg | 13 + .../traced/large16/view-fit-window.svg | 17 + ico/themes/qet-dark/traced/large22/arc.svg | 8 + .../qet-dark/traced/large22/autoconnect.svg | 46 ++ .../qet-dark/traced/large22/bring_forward.svg | 13 + ico/themes/qet-dark/traced/large22/circle.svg | 10 + .../qet-dark/traced/large22/conductor.svg | 15 + .../qet-dark/traced/large22/element.svg | 12 + .../qet-dark/traced/large22/ellipse.svg | 10 + ico/themes/qet-dark/traced/large22/move.svg | 11 + .../traced/large22/user-away-extended.svg | 13 + .../traced/large22/view-fit-window.svg | 17 + 127 files changed, 2753 insertions(+), 489 deletions(-) delete mode 100644 ico/breeze/16/draw-circle.svg delete mode 100644 ico/breeze/16/draw-ellipse.svg delete mode 100644 ico/breeze/16/go-next-skip.svg delete mode 100644 ico/breeze/16/go-previous-skip.svg delete mode 100644 ico/breeze/16/text-csv.svg delete mode 100644 ico/breeze/16/text-field.svg delete mode 100644 ico/breeze/16/text-xml.svg delete mode 100644 ico/breeze/16/view-pages-overview.svg delete mode 100644 ico/breeze/22/draw-circle.svg delete mode 100644 ico/breeze/22/draw-ellipse.svg delete mode 100644 ico/breeze/22/go-next-skip.svg delete mode 100644 ico/breeze/22/go-previous-skip.svg delete mode 100644 ico/breeze/22/text-csv.svg delete mode 100644 ico/breeze/22/text-field.svg delete mode 100644 ico/breeze/22/text-xml.svg delete mode 100644 ico/breeze/22/view-pages-overview.svg delete mode 100644 ico/breeze/32/go-next-skip.svg delete mode 100644 ico/breeze/32/go-previous-skip.svg delete mode 100644 ico/breeze/32/text-csv.svg delete mode 100644 ico/breeze/32/text-xml.svg create mode 100644 ico/breeze/48/systemsettings.svg create mode 100644 ico/breeze/64/printer.svg delete mode 100644 ico/generated/breeze-24/draw-circle.svg delete mode 100644 ico/generated/breeze-24/draw-ellipse.svg create mode 100644 ico/generated/traced-24/arc.svg create mode 100644 ico/generated/traced-24/autoconnect.svg create mode 100644 ico/generated/traced-24/bring_forward.svg create mode 100644 ico/generated/traced-24/circle.svg create mode 100644 ico/generated/traced-24/conductor.svg create mode 100644 ico/generated/traced-24/element.svg create mode 100644 ico/generated/traced-24/ellipse.svg create mode 100644 ico/generated/traced-24/move.svg create mode 100644 ico/generated/traced-24/qet.svg create mode 100644 ico/generated/traced-24/qt.svg create mode 100644 ico/generated/traced-24/user-away-extended.svg create mode 100644 ico/generated/traced-24/view-fit-window.svg create mode 100644 ico/generated/traced-large-24/arc.svg create mode 100644 ico/generated/traced-large-24/autoconnect.svg create mode 100644 ico/generated/traced-large-24/bring_forward.svg create mode 100644 ico/generated/traced-large-24/circle.svg create mode 100644 ico/generated/traced-large-24/conductor.svg create mode 100644 ico/generated/traced-large-24/element.svg create mode 100644 ico/generated/traced-large-24/ellipse.svg create mode 100644 ico/generated/traced-large-24/move.svg create mode 100644 ico/generated/traced-large-24/qet.svg create mode 100644 ico/generated/traced-large-24/user-away-extended.svg create mode 100644 ico/generated/traced-large-24/view-fit-window.svg delete mode 100644 ico/themes/qet-dark/128x128/settings.png delete mode 100644 ico/themes/qet-dark/16x16/edit-clear-locationbar-rtl.png delete mode 100644 ico/themes/qet-dark/16x16/element.png delete mode 100644 ico/themes/qet-dark/16x16/move.png delete mode 100644 ico/themes/qet-dark/22x22/Actions-player-time-icon.png delete mode 100644 ico/themes/qet-dark/22x22/arc.png delete mode 100644 ico/themes/qet-dark/22x22/edit-clear-locationbar-rtl.png delete mode 100644 ico/themes/qet-dark/22x22/move.png delete mode 100644 ico/themes/qet-dark/32x32/format-text-color.png delete mode 100644 ico/themes/qet-dark/32x32/insert-link.png delete mode 100644 ico/themes/qet-dark/32x32/printer.png delete mode 100644 ico/themes/qet-dark/48x48/user-away-extended.png delete mode 100644 ico/themes/qet-dark/48x48/user-away.png delete mode 100644 ico/themes/qet-dark/breeze-24/draw-circle.svg delete mode 100644 ico/themes/qet-dark/breeze-24/draw-ellipse.svg delete mode 100644 ico/themes/qet-dark/breeze/16/draw-circle.svg delete mode 100644 ico/themes/qet-dark/breeze/16/draw-ellipse.svg delete mode 100644 ico/themes/qet-dark/breeze/22/draw-circle.svg delete mode 100644 ico/themes/qet-dark/breeze/22/draw-ellipse.svg create mode 100644 ico/themes/qet-dark/traced-24/arc.svg create mode 100644 ico/themes/qet-dark/traced-24/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced-24/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced-24/circle.svg create mode 100644 ico/themes/qet-dark/traced-24/conductor.svg create mode 100644 ico/themes/qet-dark/traced-24/element.svg create mode 100644 ico/themes/qet-dark/traced-24/ellipse.svg create mode 100644 ico/themes/qet-dark/traced-24/move.svg create mode 100644 ico/themes/qet-dark/traced-24/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced-24/view-fit-window.svg create mode 100644 ico/themes/qet-dark/traced-large-24/arc.svg create mode 100644 ico/themes/qet-dark/traced-large-24/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced-large-24/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced-large-24/circle.svg create mode 100644 ico/themes/qet-dark/traced-large-24/conductor.svg create mode 100644 ico/themes/qet-dark/traced-large-24/element.svg create mode 100644 ico/themes/qet-dark/traced-large-24/ellipse.svg create mode 100644 ico/themes/qet-dark/traced-large-24/move.svg create mode 100644 ico/themes/qet-dark/traced-large-24/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced-large-24/view-fit-window.svg create mode 100644 ico/themes/qet-dark/traced/16/arc.svg create mode 100644 ico/themes/qet-dark/traced/16/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced/16/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced/16/circle.svg create mode 100644 ico/themes/qet-dark/traced/16/conductor.svg create mode 100644 ico/themes/qet-dark/traced/16/element.svg create mode 100644 ico/themes/qet-dark/traced/16/ellipse.svg create mode 100644 ico/themes/qet-dark/traced/16/move.svg create mode 100644 ico/themes/qet-dark/traced/16/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced/16/view-fit-window.svg create mode 100644 ico/themes/qet-dark/traced/22/arc.svg create mode 100644 ico/themes/qet-dark/traced/22/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced/22/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced/22/circle.svg create mode 100644 ico/themes/qet-dark/traced/22/conductor.svg create mode 100644 ico/themes/qet-dark/traced/22/element.svg create mode 100644 ico/themes/qet-dark/traced/22/ellipse.svg create mode 100644 ico/themes/qet-dark/traced/22/move.svg create mode 100644 ico/themes/qet-dark/traced/22/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced/22/view-fit-window.svg create mode 100644 ico/themes/qet-dark/traced/large16/arc.svg create mode 100644 ico/themes/qet-dark/traced/large16/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced/large16/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced/large16/circle.svg create mode 100644 ico/themes/qet-dark/traced/large16/conductor.svg create mode 100644 ico/themes/qet-dark/traced/large16/element.svg create mode 100644 ico/themes/qet-dark/traced/large16/ellipse.svg create mode 100644 ico/themes/qet-dark/traced/large16/move.svg create mode 100644 ico/themes/qet-dark/traced/large16/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced/large16/view-fit-window.svg create mode 100644 ico/themes/qet-dark/traced/large22/arc.svg create mode 100644 ico/themes/qet-dark/traced/large22/autoconnect.svg create mode 100644 ico/themes/qet-dark/traced/large22/bring_forward.svg create mode 100644 ico/themes/qet-dark/traced/large22/circle.svg create mode 100644 ico/themes/qet-dark/traced/large22/conductor.svg create mode 100644 ico/themes/qet-dark/traced/large22/element.svg create mode 100644 ico/themes/qet-dark/traced/large22/ellipse.svg create mode 100644 ico/themes/qet-dark/traced/large22/move.svg create mode 100644 ico/themes/qet-dark/traced/large22/user-away-extended.svg create mode 100644 ico/themes/qet-dark/traced/large22/view-fit-window.svg diff --git a/ico/breeze/16/draw-circle.svg b/ico/breeze/16/draw-circle.svg deleted file mode 100644 index 54ff98519..000000000 --- a/ico/breeze/16/draw-circle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/breeze/16/draw-ellipse.svg b/ico/breeze/16/draw-ellipse.svg deleted file mode 100644 index 5323404c8..000000000 --- a/ico/breeze/16/draw-ellipse.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/breeze/16/go-next-skip.svg b/ico/breeze/16/go-next-skip.svg deleted file mode 100644 index 85ae02d5e..000000000 --- a/ico/breeze/16/go-next-skip.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/ico/breeze/16/go-previous-skip.svg b/ico/breeze/16/go-previous-skip.svg deleted file mode 100644 index 4e556a50a..000000000 --- a/ico/breeze/16/go-previous-skip.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/ico/breeze/16/text-csv.svg b/ico/breeze/16/text-csv.svg deleted file mode 100644 index 706719a6d..000000000 --- a/ico/breeze/16/text-csv.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ico/breeze/16/text-field.svg b/ico/breeze/16/text-field.svg deleted file mode 100644 index 8eb9c52be..000000000 --- a/ico/breeze/16/text-field.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/ico/breeze/16/text-xml.svg b/ico/breeze/16/text-xml.svg deleted file mode 100644 index 1a12e4b23..000000000 --- a/ico/breeze/16/text-xml.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ico/breeze/16/view-pages-overview.svg b/ico/breeze/16/view-pages-overview.svg deleted file mode 100644 index 1831d1a87..000000000 --- a/ico/breeze/16/view-pages-overview.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/ico/breeze/22/draw-circle.svg b/ico/breeze/22/draw-circle.svg deleted file mode 100644 index 2b95109cc..000000000 --- a/ico/breeze/22/draw-circle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/breeze/22/draw-ellipse.svg b/ico/breeze/22/draw-ellipse.svg deleted file mode 100644 index 60e0527e4..000000000 --- a/ico/breeze/22/draw-ellipse.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/breeze/22/go-next-skip.svg b/ico/breeze/22/go-next-skip.svg deleted file mode 100644 index 0ec9674a1..000000000 --- a/ico/breeze/22/go-next-skip.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/ico/breeze/22/go-previous-skip.svg b/ico/breeze/22/go-previous-skip.svg deleted file mode 100644 index f9ef7544f..000000000 --- a/ico/breeze/22/go-previous-skip.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/ico/breeze/22/text-csv.svg b/ico/breeze/22/text-csv.svg deleted file mode 100644 index 20f53dd51..000000000 --- a/ico/breeze/22/text-csv.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/ico/breeze/22/text-field.svg b/ico/breeze/22/text-field.svg deleted file mode 100644 index 03947bedd..000000000 --- a/ico/breeze/22/text-field.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/ico/breeze/22/text-xml.svg b/ico/breeze/22/text-xml.svg deleted file mode 100644 index e627ee108..000000000 --- a/ico/breeze/22/text-xml.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - \ No newline at end of file diff --git a/ico/breeze/22/view-pages-overview.svg b/ico/breeze/22/view-pages-overview.svg deleted file mode 100644 index 2b0e87053..000000000 --- a/ico/breeze/22/view-pages-overview.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/ico/breeze/32/go-next-skip.svg b/ico/breeze/32/go-next-skip.svg deleted file mode 100644 index f04490974..000000000 --- a/ico/breeze/32/go-next-skip.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/ico/breeze/32/go-previous-skip.svg b/ico/breeze/32/go-previous-skip.svg deleted file mode 100644 index 0197efd74..000000000 --- a/ico/breeze/32/go-previous-skip.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/ico/breeze/32/text-csv.svg b/ico/breeze/32/text-csv.svg deleted file mode 100644 index 54e71c7b6..000000000 --- a/ico/breeze/32/text-csv.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ico/breeze/32/text-xml.svg b/ico/breeze/32/text-xml.svg deleted file mode 100644 index 412e09202..000000000 --- a/ico/breeze/32/text-xml.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ico/breeze/48/systemsettings.svg b/ico/breeze/48/systemsettings.svg new file mode 100644 index 000000000..847b3e338 --- /dev/null +++ b/ico/breeze/48/systemsettings.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/breeze/64/printer.svg b/ico/breeze/64/printer.svg new file mode 100644 index 000000000..d96428e5b --- /dev/null +++ b/ico/breeze/64/printer.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/breeze-24/draw-circle.svg b/ico/generated/breeze-24/draw-circle.svg deleted file mode 100644 index d2ad41042..000000000 --- a/ico/generated/breeze-24/draw-circle.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/ico/generated/breeze-24/draw-ellipse.svg b/ico/generated/breeze-24/draw-ellipse.svg deleted file mode 100644 index 6fd8a96a1..000000000 --- a/ico/generated/breeze-24/draw-ellipse.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/ico/generated/traced-24/arc.svg b/ico/generated/traced-24/arc.svg new file mode 100644 index 000000000..df09768fa --- /dev/null +++ b/ico/generated/traced-24/arc.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/autoconnect.svg b/ico/generated/traced-24/autoconnect.svg new file mode 100644 index 000000000..01e720d16 --- /dev/null +++ b/ico/generated/traced-24/autoconnect.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/generated/traced-24/bring_forward.svg b/ico/generated/traced-24/bring_forward.svg new file mode 100644 index 000000000..1136e6089 --- /dev/null +++ b/ico/generated/traced-24/bring_forward.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/circle.svg b/ico/generated/traced-24/circle.svg new file mode 100644 index 000000000..91da1dfe1 --- /dev/null +++ b/ico/generated/traced-24/circle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/conductor.svg b/ico/generated/traced-24/conductor.svg new file mode 100644 index 000000000..ff1637e47 --- /dev/null +++ b/ico/generated/traced-24/conductor.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/generated/traced-24/element.svg b/ico/generated/traced-24/element.svg new file mode 100644 index 000000000..2a756af46 --- /dev/null +++ b/ico/generated/traced-24/element.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/ellipse.svg b/ico/generated/traced-24/ellipse.svg new file mode 100644 index 000000000..841723148 --- /dev/null +++ b/ico/generated/traced-24/ellipse.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/move.svg b/ico/generated/traced-24/move.svg new file mode 100644 index 000000000..9ac05b85a --- /dev/null +++ b/ico/generated/traced-24/move.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/qet.svg b/ico/generated/traced-24/qet.svg new file mode 100644 index 000000000..8f776ca95 --- /dev/null +++ b/ico/generated/traced-24/qet.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/qt.svg b/ico/generated/traced-24/qt.svg new file mode 100644 index 000000000..1a409c91e --- /dev/null +++ b/ico/generated/traced-24/qt.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/user-away-extended.svg b/ico/generated/traced-24/user-away-extended.svg new file mode 100644 index 000000000..5e4626875 --- /dev/null +++ b/ico/generated/traced-24/user-away-extended.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-24/view-fit-window.svg b/ico/generated/traced-24/view-fit-window.svg new file mode 100644 index 000000000..bfe23f139 --- /dev/null +++ b/ico/generated/traced-24/view-fit-window.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/generated/traced-large-24/arc.svg b/ico/generated/traced-large-24/arc.svg new file mode 100644 index 000000000..5ab8cc61b --- /dev/null +++ b/ico/generated/traced-large-24/arc.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/ico/generated/traced-large-24/autoconnect.svg b/ico/generated/traced-large-24/autoconnect.svg new file mode 100644 index 000000000..2a89c943d --- /dev/null +++ b/ico/generated/traced-large-24/autoconnect.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/bring_forward.svg b/ico/generated/traced-large-24/bring_forward.svg new file mode 100644 index 000000000..e7db9a3c5 --- /dev/null +++ b/ico/generated/traced-large-24/bring_forward.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/circle.svg b/ico/generated/traced-large-24/circle.svg new file mode 100644 index 000000000..f49fc49a5 --- /dev/null +++ b/ico/generated/traced-large-24/circle.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/generated/traced-large-24/conductor.svg b/ico/generated/traced-large-24/conductor.svg new file mode 100644 index 000000000..f68d9476b --- /dev/null +++ b/ico/generated/traced-large-24/conductor.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/element.svg b/ico/generated/traced-large-24/element.svg new file mode 100644 index 000000000..08cbca002 --- /dev/null +++ b/ico/generated/traced-large-24/element.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/ellipse.svg b/ico/generated/traced-large-24/ellipse.svg new file mode 100644 index 000000000..9cd21593a --- /dev/null +++ b/ico/generated/traced-large-24/ellipse.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/generated/traced-large-24/move.svg b/ico/generated/traced-large-24/move.svg new file mode 100644 index 000000000..9f547aa75 --- /dev/null +++ b/ico/generated/traced-large-24/move.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/qet.svg b/ico/generated/traced-large-24/qet.svg new file mode 100644 index 000000000..872283612 --- /dev/null +++ b/ico/generated/traced-large-24/qet.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/user-away-extended.svg b/ico/generated/traced-large-24/user-away-extended.svg new file mode 100644 index 000000000..6dc6282cb --- /dev/null +++ b/ico/generated/traced-large-24/user-away-extended.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/ico/generated/traced-large-24/view-fit-window.svg b/ico/generated/traced-large-24/view-fit-window.svg new file mode 100644 index 000000000..abcd1b198 --- /dev/null +++ b/ico/generated/traced-large-24/view-fit-window.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/icon-themes.qrc b/ico/icon-themes.qrc index 45d6454ca..37a903f33 100644 --- a/ico/icon-themes.qrc +++ b/ico/icon-themes.qrc @@ -4,37 +4,14 @@ themes/qet/index.theme themes/qet-dark/index.theme - 16x16/conductor.png - 16x16/edit-clear-locationbar-rtl.png - 16x16/element.png - 16x16/move.png - 16x16/project-delete.png - 16x16/qet.png - 16x16/qt.png - 22x22/Actions-player-time-icon.png - 22x22/arc.png - 22x22/autoconnect.png - 22x22/bring_forward.png - 22x22/edit-clear-locationbar-rtl.png - 22x22/move.png - 22x22/project-delete.png - 32x32/format-text-color.png - 32x32/insert-link.png - 32x32/printer.png - 32x32/qt.png - 48x48/user-away-extended.png - 48x48/user-away.png - 128x128/configure-shortcuts.png - 128x128/printer.png - 128x128/settings.png scalable/align-horizontal-center.svg scalable/align-horizontal-left.svg - scalable/draw-fillet.svg scalable/align-horizontal-right.svg scalable/align-vertical-bottom.svg scalable/align-vertical-center.svg scalable/align-vertical-top.svg scalable/diagram.svg + scalable/draw-fillet.svg scalable/folio-delete.svg scalable/folio-new.svg scalable/folio-properties.svg @@ -49,6 +26,9 @@ generated/ellipse-to-bezier.svg generated/rect-to-bezier.svg generated/rect-to-polyline.svg + breeze/64/printer.svg + breeze/48/systemsettings.svg + 128x128/configure-shortcuts.svg scalable/16/align-horizontal-center.svg generated/scalable-22/align-horizontal-center.svg scalable/16/align-horizontal-center.svg @@ -62,29 +42,17 @@ scalable/16/align-horizontal-center.svg scalable/16/align-horizontal-center.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg generated/scalable-22/align-horizontal-left.svg - generated/scalable-22/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/align-horizontal-left.svg - scalable/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg generated/scalable-22/align-horizontal-left.svg - generated/scalable-22/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/align-horizontal-left.svg - scalable/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/16/align-horizontal-left.svg - scalable/16/draw-fillet.svg scalable/16/align-horizontal-right.svg generated/scalable-22/align-horizontal-right.svg scalable/16/align-horizontal-right.svg @@ -189,6 +157,21 @@ generated/breeze-24/amarok_change_language.svg breeze/16/amarok_change_language.svg breeze/16/amarok_change_language.svg + traced/16/arc.svg + traced/large16/arc.svg + traced/22/arc.svg + traced/large22/arc.svg + traced/large16/arc.svg + traced/large16/arc.svg + generated/traced-large-24/arc.svg + generated/traced-large-24/arc.svg + traced/large16/arc.svg + traced/large16/arc.svg + traced/large16/arc.svg + traced/large16/arc.svg + generated/traced-24/arc.svg + generated/traced-large-24/arc.svg + traced/large22/arc.svg breeze/16/go-previous.svg breeze/22/go-previous.svg generated/breeze-24/go-previous.svg @@ -245,19 +228,66 @@ generated/traced-24/arrow-right-double.svg generated/traced-large-24/arrow-right-double.svg traced/large22/arrow-right-double.svg - breeze/16/draw-circle.svg - breeze/22/draw-circle.svg - generated/breeze-24/draw-circle.svg - breeze/16/draw-circle.svg - generated/breeze-24/draw-circle.svg - breeze/16/draw-circle.svg - breeze/16/draw-circle.svg - breeze/16/draw-circle.svg - breeze/22/draw-circle.svg - breeze/16/draw-circle.svg - generated/breeze-24/draw-circle.svg - breeze/16/draw-circle.svg - breeze/16/draw-circle.svg + traced/16/autoconnect.svg + traced/large16/autoconnect.svg + traced/22/autoconnect.svg + traced/large22/autoconnect.svg + traced/large16/autoconnect.svg + traced/large16/autoconnect.svg + generated/traced-large-24/autoconnect.svg + generated/traced-large-24/autoconnect.svg + traced/large16/autoconnect.svg + traced/large16/autoconnect.svg + traced/large16/autoconnect.svg + traced/large16/autoconnect.svg + generated/traced-24/autoconnect.svg + generated/traced-large-24/autoconnect.svg + traced/large22/autoconnect.svg + traced/16/bring_forward.svg + traced/large16/bring_forward.svg + traced/22/bring_forward.svg + traced/large22/bring_forward.svg + traced/large16/bring_forward.svg + traced/large16/bring_forward.svg + generated/traced-large-24/bring_forward.svg + generated/traced-large-24/bring_forward.svg + traced/large16/bring_forward.svg + traced/large16/bring_forward.svg + traced/large16/bring_forward.svg + traced/large16/bring_forward.svg + generated/traced-24/bring_forward.svg + generated/traced-large-24/bring_forward.svg + traced/large22/bring_forward.svg + traced/16/circle.svg + traced/large16/circle.svg + traced/22/circle.svg + traced/large22/circle.svg + traced/large16/circle.svg + traced/large16/circle.svg + generated/traced-large-24/circle.svg + generated/traced-large-24/circle.svg + traced/large16/circle.svg + traced/large16/circle.svg + traced/large16/circle.svg + traced/large16/circle.svg + generated/traced-24/circle.svg + generated/traced-large-24/circle.svg + traced/large22/circle.svg + traced/16/conductor.svg + traced/large16/conductor.svg + traced/22/conductor.svg + traced/large22/conductor.svg + traced/large16/conductor.svg + traced/large16/conductor.svg + generated/traced-large-24/conductor.svg + generated/traced-large-24/conductor.svg + traced/large16/conductor.svg + traced/large16/conductor.svg + traced/large16/conductor.svg + traced/large16/conductor.svg + generated/traced-24/conductor.svg + generated/traced-large-24/conductor.svg + traced/large22/conductor.svg traced/16/conductor-edit.svg traced/large16/conductor-edit.svg traced/22/conductor-edit.svg @@ -527,6 +557,18 @@ generated/breeze-24/document-save-as.svg breeze/32/document-save-as.svg breeze/32/document-save-as.svg + scalable/16/draw-fillet.svg + generated/scalable-22/draw-fillet.svg + scalable/16/draw-fillet.svg + scalable/draw-fillet.svg + scalable/16/draw-fillet.svg + scalable/16/draw-fillet.svg + scalable/16/draw-fillet.svg + generated/scalable-22/draw-fillet.svg + scalable/16/draw-fillet.svg + scalable/draw-fillet.svg + scalable/16/draw-fillet.svg + scalable/16/draw-fillet.svg traced/16/east.svg traced/large16/east.svg traced/22/east.svg @@ -815,6 +857,21 @@ generated/breeze-24/edit-undo.svg breeze/32/edit-undo.svg breeze/32/edit-undo.svg + traced/16/element.svg + traced/large16/element.svg + traced/22/element.svg + traced/large22/element.svg + traced/large16/element.svg + traced/large16/element.svg + generated/traced-large-24/element.svg + generated/traced-large-24/element.svg + traced/large16/element.svg + traced/large16/element.svg + traced/large16/element.svg + traced/large16/element.svg + generated/traced-24/element.svg + generated/traced-large-24/element.svg + traced/large22/element.svg traced/16/element-delete.svg traced/large16/element-delete.svg traced/22/element-delete.svg @@ -890,19 +947,21 @@ generated/traced-24/element-slave.svg generated/traced-large-24/element-slave.svg traced/large22/element-slave.svg - breeze/16/draw-ellipse.svg - breeze/22/draw-ellipse.svg - generated/breeze-24/draw-ellipse.svg - breeze/16/draw-ellipse.svg - generated/breeze-24/draw-ellipse.svg - breeze/16/draw-ellipse.svg - breeze/16/draw-ellipse.svg - breeze/16/draw-ellipse.svg - breeze/22/draw-ellipse.svg - breeze/16/draw-ellipse.svg - generated/breeze-24/draw-ellipse.svg - breeze/16/draw-ellipse.svg - breeze/16/draw-ellipse.svg + traced/16/ellipse.svg + traced/large16/ellipse.svg + traced/22/ellipse.svg + traced/large22/ellipse.svg + traced/large16/ellipse.svg + traced/large16/ellipse.svg + generated/traced-large-24/ellipse.svg + generated/traced-large-24/ellipse.svg + traced/large16/ellipse.svg + traced/large16/ellipse.svg + traced/large16/ellipse.svg + traced/large16/ellipse.svg + generated/traced-24/ellipse.svg + generated/traced-large-24/ellipse.svg + traced/large22/ellipse.svg traced/16/endline-circle.svg traced/large16/endline-circle.svg traced/22/endline-circle.svg @@ -1609,6 +1668,21 @@ generated/breeze-24/object-flip-horizontal.svg breeze/16/object-flip-horizontal.svg breeze/16/object-flip-horizontal.svg + traced/16/move.svg + traced/large16/move.svg + traced/22/move.svg + traced/large22/move.svg + traced/large16/move.svg + traced/large16/move.svg + generated/traced-large-24/move.svg + generated/traced-large-24/move.svg + traced/large16/move.svg + traced/large16/move.svg + traced/large16/move.svg + traced/large16/move.svg + generated/traced-24/move.svg + generated/traced-large-24/move.svg + traced/large22/move.svg traced/16/names.svg traced/large16/names.svg traced/22/names.svg @@ -1864,6 +1938,36 @@ generated/traced-24/project-properties.svg generated/traced-large-24/project-properties.svg traced/large22/project-properties.svg + traced/16/qet.svg + traced/large16/qet.svg + traced/22/qet.svg + traced/large22/qet.svg + traced/large16/qet.svg + traced/large16/qet.svg + generated/traced-large-24/qet.svg + generated/traced-large-24/qet.svg + traced/large16/qet.svg + traced/large16/qet.svg + traced/large16/qet.svg + traced/large16/qet.svg + generated/traced-24/qet.svg + generated/traced-large-24/qet.svg + traced/large22/qet.svg + traced/16/qt.svg + traced/large16/qt.svg + traced/22/qt.svg + traced/large22/qt.svg + traced/large16/qt.svg + traced/large16/qt.svg + traced/large22/qt.svg + traced/large22/qt.svg + traced/large16/qt.svg + traced/large16/qt.svg + traced/large16/qt.svg + traced/large16/qt.svg + generated/traced-24/qt.svg + traced/large22/qt.svg + traced/large22/qt.svg traced/16/raise.svg traced/large16/raise.svg traced/22/raise.svg @@ -2171,6 +2275,21 @@ generated/breeze-24/view-pages-facing.svg breeze/16/view-pages-facing.svg breeze/16/view-pages-facing.svg + traced/16/user-away-extended.svg + traced/large16/user-away-extended.svg + traced/22/user-away-extended.svg + traced/large22/user-away-extended.svg + traced/large16/user-away-extended.svg + traced/large16/user-away-extended.svg + generated/traced-large-24/user-away-extended.svg + generated/traced-large-24/user-away-extended.svg + traced/large16/user-away-extended.svg + traced/large16/user-away-extended.svg + traced/large16/user-away-extended.svg + traced/large16/user-away-extended.svg + generated/traced-24/user-away-extended.svg + generated/traced-large-24/user-away-extended.svg + traced/large22/user-away-extended.svg breeze/16/im-user-busy.svg breeze/22/im-user-busy.svg generated/breeze-24/im-user-busy.svg @@ -2197,19 +2316,21 @@ generated/breeze-24/im-user-online.svg breeze/16/im-user-online.svg breeze/16/im-user-online.svg - breeze/16/zoom-fit-best.svg - breeze/22/zoom-fit-best.svg - generated/breeze-24/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - generated/breeze-24/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - breeze/22/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - generated/breeze-24/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg - breeze/32/zoom-fit-best.svg + traced/16/view-fit-window.svg + traced/large16/view-fit-window.svg + traced/22/view-fit-window.svg + traced/large22/view-fit-window.svg + traced/large16/view-fit-window.svg + traced/large16/view-fit-window.svg + generated/traced-large-24/view-fit-window.svg + generated/traced-large-24/view-fit-window.svg + traced/large16/view-fit-window.svg + traced/large16/view-fit-window.svg + traced/large16/view-fit-window.svg + traced/large16/view-fit-window.svg + generated/traced-24/view-fit-window.svg + generated/traced-large-24/view-fit-window.svg + traced/large22/view-fit-window.svg breeze/16/view-fullscreen.svg breeze/22/view-fullscreen.svg generated/breeze-24/view-fullscreen.svg @@ -2370,27 +2491,14 @@ generated/breeze-24/zoom-out.svg breeze/32/zoom-out.svg breeze/32/zoom-out.svg - themes/qet-dark/16x16/edit-clear-locationbar-rtl.png - themes/qet-dark/16x16/element.png - themes/qet-dark/16x16/move.png - themes/qet-dark/22x22/Actions-player-time-icon.png - themes/qet-dark/22x22/arc.png - themes/qet-dark/22x22/edit-clear-locationbar-rtl.png - themes/qet-dark/22x22/move.png - themes/qet-dark/32x32/format-text-color.png - themes/qet-dark/32x32/insert-link.png - themes/qet-dark/32x32/printer.png - themes/qet-dark/48x48/user-away-extended.png - themes/qet-dark/48x48/user-away.png - themes/qet-dark/128x128/settings.png themes/qet-dark/scalable/align-horizontal-center.svg themes/qet-dark/scalable/align-horizontal-left.svg - themes/qet-dark/scalable/draw-fillet.svg themes/qet-dark/scalable/align-horizontal-right.svg themes/qet-dark/scalable/align-vertical-bottom.svg themes/qet-dark/scalable/align-vertical-center.svg themes/qet-dark/scalable/align-vertical-top.svg themes/qet-dark/scalable/diagram.svg + themes/qet-dark/scalable/draw-fillet.svg themes/qet-dark/scalable/folio-delete.svg themes/qet-dark/scalable/folio-new.svg themes/qet-dark/scalable/folio-properties.svg @@ -2408,9 +2516,7 @@ themes/qet-dark/scalable-16/align-horizontal-center.svg themes/qet-dark/scalable-22/align-horizontal-center.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-22/align-horizontal-left.svg - themes/qet-dark/scalable-22/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-right.svg themes/qet-dark/scalable-22/align-horizontal-right.svg themes/qet-dark/scalable-16/align-vertical-bottom.svg @@ -2428,6 +2534,12 @@ themes/qet-dark/breeze/16/amarok_change_language.svg themes/qet-dark/breeze/22/amarok_change_language.svg themes/qet-dark/breeze-24/amarok_change_language.svg + themes/qet-dark/traced/16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/22/arc.svg + themes/qet-dark/traced/large22/arc.svg + themes/qet-dark/traced-large-24/arc.svg + themes/qet-dark/traced-24/arc.svg themes/qet-dark/breeze/16/go-previous.svg themes/qet-dark/breeze/22/go-previous.svg themes/qet-dark/breeze-24/go-previous.svg @@ -2448,9 +2560,30 @@ themes/qet-dark/traced/large22/arrow-right-double.svg themes/qet-dark/traced-large-24/arrow-right-double.svg themes/qet-dark/traced-24/arrow-right-double.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/22/draw-circle.svg - themes/qet-dark/breeze-24/draw-circle.svg + themes/qet-dark/traced/16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/22/autoconnect.svg + themes/qet-dark/traced/large22/autoconnect.svg + themes/qet-dark/traced-large-24/autoconnect.svg + themes/qet-dark/traced-24/autoconnect.svg + themes/qet-dark/traced/16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/22/bring_forward.svg + themes/qet-dark/traced/large22/bring_forward.svg + themes/qet-dark/traced-large-24/bring_forward.svg + themes/qet-dark/traced-24/bring_forward.svg + themes/qet-dark/traced/16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/22/circle.svg + themes/qet-dark/traced/large22/circle.svg + themes/qet-dark/traced-large-24/circle.svg + themes/qet-dark/traced-24/circle.svg + themes/qet-dark/traced/16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/22/conductor.svg + themes/qet-dark/traced/large22/conductor.svg + themes/qet-dark/traced-large-24/conductor.svg + themes/qet-dark/traced-24/conductor.svg themes/qet-dark/traced/16/conductor-edit.svg themes/qet-dark/traced/large16/conductor-edit.svg themes/qet-dark/traced/22/conductor-edit.svg @@ -2525,6 +2658,8 @@ themes/qet-dark/breeze/22/document-save-as.svg themes/qet-dark/breeze-24/document-save-as.svg themes/qet-dark/breeze/32/document-save-as.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-22/draw-fillet.svg themes/qet-dark/traced/16/east.svg themes/qet-dark/traced/large16/east.svg themes/qet-dark/traced/22/east.svg @@ -2594,6 +2729,12 @@ themes/qet-dark/breeze/22/edit-undo.svg themes/qet-dark/breeze-24/edit-undo.svg themes/qet-dark/breeze/32/edit-undo.svg + themes/qet-dark/traced/16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/22/element.svg + themes/qet-dark/traced/large22/element.svg + themes/qet-dark/traced-large-24/element.svg + themes/qet-dark/traced-24/element.svg themes/qet-dark/traced/16/element-delete.svg themes/qet-dark/traced/large16/element-delete.svg themes/qet-dark/traced/22/element-delete.svg @@ -2624,9 +2765,12 @@ themes/qet-dark/traced/large22/element-slave.svg themes/qet-dark/traced-large-24/element-slave.svg themes/qet-dark/traced-24/element-slave.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/22/draw-ellipse.svg - themes/qet-dark/breeze-24/draw-ellipse.svg + themes/qet-dark/traced/16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/22/ellipse.svg + themes/qet-dark/traced/large22/ellipse.svg + themes/qet-dark/traced-large-24/ellipse.svg + themes/qet-dark/traced-24/ellipse.svg themes/qet-dark/traced/16/endline-circle.svg themes/qet-dark/traced/large16/endline-circle.svg themes/qet-dark/traced/22/endline-circle.svg @@ -2814,6 +2958,12 @@ themes/qet-dark/breeze/16/object-flip-horizontal.svg themes/qet-dark/breeze/22/object-flip-horizontal.svg themes/qet-dark/breeze-24/object-flip-horizontal.svg + themes/qet-dark/traced/16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/22/move.svg + themes/qet-dark/traced/large22/move.svg + themes/qet-dark/traced-large-24/move.svg + themes/qet-dark/traced-24/move.svg themes/qet-dark/traced/16/names.svg themes/qet-dark/traced/large16/names.svg themes/qet-dark/traced/22/names.svg @@ -2945,10 +3095,18 @@ themes/qet-dark/breeze/16/view-pages-facing.svg themes/qet-dark/breeze/22/view-pages-facing.svg themes/qet-dark/breeze-24/view-pages-facing.svg - themes/qet-dark/breeze/16/zoom-fit-best.svg - themes/qet-dark/breeze/22/zoom-fit-best.svg - themes/qet-dark/breeze-24/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg + themes/qet-dark/traced/16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/22/user-away-extended.svg + themes/qet-dark/traced/large22/user-away-extended.svg + themes/qet-dark/traced-large-24/user-away-extended.svg + themes/qet-dark/traced-24/user-away-extended.svg + themes/qet-dark/traced/16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/22/view-fit-window.svg + themes/qet-dark/traced/large22/view-fit-window.svg + themes/qet-dark/traced-large-24/view-fit-window.svg + themes/qet-dark/traced-24/view-fit-window.svg themes/qet-dark/breeze/16/view-fullscreen.svg themes/qet-dark/breeze/22/view-fullscreen.svg themes/qet-dark/breeze-24/view-fullscreen.svg @@ -2975,6 +3133,10 @@ themes/qet-dark/breeze/16/window-new.svg themes/qet-dark/breeze/22/window-new.svg themes/qet-dark/breeze-24/window-new.svg + themes/qet-dark/breeze/16/zoom-fit-best.svg + themes/qet-dark/breeze/22/zoom-fit-best.svg + themes/qet-dark/breeze-24/zoom-fit-best.svg + themes/qet-dark/breeze/32/zoom-fit-best.svg themes/qet-dark/traced/16/zoom-fit-best.svg themes/qet-dark/traced/large16/zoom-fit-best.svg themes/qet-dark/traced/22/zoom-fit-best.svg @@ -3006,29 +3168,17 @@ themes/qet-dark/scalable-16/align-horizontal-center.svg themes/qet-dark/scalable-16/align-horizontal-center.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-22/align-horizontal-left.svg - themes/qet-dark/scalable-22/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable/align-horizontal-left.svg - themes/qet-dark/scalable/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-22/align-horizontal-left.svg - themes/qet-dark/scalable-22/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable/align-horizontal-left.svg - themes/qet-dark/scalable/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-left.svg - themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/scalable-16/align-horizontal-right.svg themes/qet-dark/scalable-22/align-horizontal-right.svg themes/qet-dark/scalable-16/align-horizontal-right.svg @@ -3105,6 +3255,21 @@ themes/qet-dark/breeze-24/amarok_change_language.svg themes/qet-dark/breeze/16/amarok_change_language.svg themes/qet-dark/breeze/16/amarok_change_language.svg + themes/qet-dark/traced/16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/22/arc.svg + themes/qet-dark/traced/large22/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced-large-24/arc.svg + themes/qet-dark/traced-large-24/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced/large16/arc.svg + themes/qet-dark/traced-24/arc.svg + themes/qet-dark/traced-large-24/arc.svg + themes/qet-dark/traced/large22/arc.svg themes/qet-dark/breeze/16/go-previous.svg themes/qet-dark/breeze/22/go-previous.svg themes/qet-dark/breeze-24/go-previous.svg @@ -3161,19 +3326,66 @@ themes/qet-dark/traced-24/arrow-right-double.svg themes/qet-dark/traced-large-24/arrow-right-double.svg themes/qet-dark/traced/large22/arrow-right-double.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/22/draw-circle.svg - themes/qet-dark/breeze-24/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze-24/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/22/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze-24/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg - themes/qet-dark/breeze/16/draw-circle.svg + themes/qet-dark/traced/16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/22/autoconnect.svg + themes/qet-dark/traced/large22/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced-large-24/autoconnect.svg + themes/qet-dark/traced-large-24/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced/large16/autoconnect.svg + themes/qet-dark/traced-24/autoconnect.svg + themes/qet-dark/traced-large-24/autoconnect.svg + themes/qet-dark/traced/large22/autoconnect.svg + themes/qet-dark/traced/16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/22/bring_forward.svg + themes/qet-dark/traced/large22/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced-large-24/bring_forward.svg + themes/qet-dark/traced-large-24/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced/large16/bring_forward.svg + themes/qet-dark/traced-24/bring_forward.svg + themes/qet-dark/traced-large-24/bring_forward.svg + themes/qet-dark/traced/large22/bring_forward.svg + themes/qet-dark/traced/16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/22/circle.svg + themes/qet-dark/traced/large22/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced-large-24/circle.svg + themes/qet-dark/traced-large-24/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced/large16/circle.svg + themes/qet-dark/traced-24/circle.svg + themes/qet-dark/traced-large-24/circle.svg + themes/qet-dark/traced/large22/circle.svg + themes/qet-dark/traced/16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/22/conductor.svg + themes/qet-dark/traced/large22/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced-large-24/conductor.svg + themes/qet-dark/traced-large-24/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced/large16/conductor.svg + themes/qet-dark/traced-24/conductor.svg + themes/qet-dark/traced-large-24/conductor.svg + themes/qet-dark/traced/large22/conductor.svg themes/qet-dark/traced/16/conductor-edit.svg themes/qet-dark/traced/large16/conductor-edit.svg themes/qet-dark/traced/22/conductor-edit.svg @@ -3415,6 +3627,18 @@ themes/qet-dark/breeze-24/document-save-as.svg themes/qet-dark/breeze/32/document-save-as.svg themes/qet-dark/breeze/32/document-save-as.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-22/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-22/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg + themes/qet-dark/scalable-16/draw-fillet.svg themes/qet-dark/traced/16/east.svg themes/qet-dark/traced/large16/east.svg themes/qet-dark/traced/22/east.svg @@ -3690,6 +3914,21 @@ themes/qet-dark/breeze-24/edit-undo.svg themes/qet-dark/breeze/32/edit-undo.svg themes/qet-dark/breeze/32/edit-undo.svg + themes/qet-dark/traced/16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/22/element.svg + themes/qet-dark/traced/large22/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced-large-24/element.svg + themes/qet-dark/traced-large-24/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced/large16/element.svg + themes/qet-dark/traced-24/element.svg + themes/qet-dark/traced-large-24/element.svg + themes/qet-dark/traced/large22/element.svg themes/qet-dark/traced/16/element-delete.svg themes/qet-dark/traced/large16/element-delete.svg themes/qet-dark/traced/22/element-delete.svg @@ -3765,19 +4004,21 @@ themes/qet-dark/traced-24/element-slave.svg themes/qet-dark/traced-large-24/element-slave.svg themes/qet-dark/traced/large22/element-slave.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/22/draw-ellipse.svg - themes/qet-dark/breeze-24/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze-24/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/22/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze-24/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg - themes/qet-dark/breeze/16/draw-ellipse.svg + themes/qet-dark/traced/16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/22/ellipse.svg + themes/qet-dark/traced/large22/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced-large-24/ellipse.svg + themes/qet-dark/traced-large-24/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced/large16/ellipse.svg + themes/qet-dark/traced-24/ellipse.svg + themes/qet-dark/traced-large-24/ellipse.svg + themes/qet-dark/traced/large22/ellipse.svg themes/qet-dark/traced/16/endline-circle.svg themes/qet-dark/traced/large16/endline-circle.svg themes/qet-dark/traced/22/endline-circle.svg @@ -4428,6 +4669,21 @@ themes/qet-dark/breeze-24/object-flip-horizontal.svg themes/qet-dark/breeze/16/object-flip-horizontal.svg themes/qet-dark/breeze/16/object-flip-horizontal.svg + themes/qet-dark/traced/16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/22/move.svg + themes/qet-dark/traced/large22/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced-large-24/move.svg + themes/qet-dark/traced-large-24/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced/large16/move.svg + themes/qet-dark/traced-24/move.svg + themes/qet-dark/traced-large-24/move.svg + themes/qet-dark/traced/large22/move.svg themes/qet-dark/traced/16/names.svg themes/qet-dark/traced/large16/names.svg themes/qet-dark/traced/22/names.svg @@ -4853,19 +5109,36 @@ themes/qet-dark/breeze-24/view-pages-facing.svg themes/qet-dark/breeze/16/view-pages-facing.svg themes/qet-dark/breeze/16/view-pages-facing.svg - themes/qet-dark/breeze/16/zoom-fit-best.svg - themes/qet-dark/breeze/22/zoom-fit-best.svg - themes/qet-dark/breeze-24/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze-24/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze/22/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze-24/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg - themes/qet-dark/breeze/32/zoom-fit-best.svg + themes/qet-dark/traced/16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/22/user-away-extended.svg + themes/qet-dark/traced/large22/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced-large-24/user-away-extended.svg + themes/qet-dark/traced-large-24/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced/large16/user-away-extended.svg + themes/qet-dark/traced-24/user-away-extended.svg + themes/qet-dark/traced-large-24/user-away-extended.svg + themes/qet-dark/traced/large22/user-away-extended.svg + themes/qet-dark/traced/16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/22/view-fit-window.svg + themes/qet-dark/traced/large22/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced-large-24/view-fit-window.svg + themes/qet-dark/traced-large-24/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced/large16/view-fit-window.svg + themes/qet-dark/traced-24/view-fit-window.svg + themes/qet-dark/traced-large-24/view-fit-window.svg + themes/qet-dark/traced/large22/view-fit-window.svg themes/qet-dark/breeze/16/view-fullscreen.svg themes/qet-dark/breeze/22/view-fullscreen.svg themes/qet-dark/breeze-24/view-fullscreen.svg @@ -5026,7 +5299,6 @@ themes/qet-dark/breeze-24/zoom-out.svg themes/qet-dark/breeze/32/zoom-out.svg themes/qet-dark/breeze/32/zoom-out.svg - 128x128/printer.png traced/22/titleblock-bottom.svg generated/traced-24/titleblock-bottom.svg traced/22/titleblock-right.svg diff --git a/ico/themes/qet-dark/128x128/settings.png b/ico/themes/qet-dark/128x128/settings.png deleted file mode 100644 index 93b34f1adeb63f03091ed2fc49c46084896f65c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 zcmZu#c{CK<8=e_sY$Iz7Vr(J#lBJc5Df^yeEklwmTe368P?ijlvGktDOQBD8=z-?%tV|l`u{}wys z1lzTodjSBxUxqqJtB~>a`{CthDEE&BvbzU1rW<|c#mE(}zIRmLN_vtj$NgL8A9YS| zLx%#8ceIs4dYQC(kRymgaTKH*Z}ZHGPySrIzWq4B+w!G>B`^0PT$W$JefXw~0n?!3 z{+W9d^yys6z+6gXf6g_xpn*TxQ%#hBqsqWww}HMq>cQav^&nR`A)ozjLkQRV*92+p zyNV#IqW?!r^9t`)x#M^ceg)2Ra%0ZV)9+dhoWIF#j8bmSROzu=Re{#7oWlFEYrR4Z z!dw)|xx9N+-ll-DongAF!Izs`lexj@E!NYT2}X(xHT(_cits>gV=k|e<>?*71DPX8 z!lA}~^PF3|ewwp!!rCe#Mw?-B)Z98Fy9>qM8(gHC-U#@v!P_Q~5gr$Ef6MDYmP8Tb ziP|49KTHb(ozY^p;M~Yj%c#QHnlleAz^EV;IWRsRH$Gk?7sQb zPsjMeFE7F21~3SrsqQ(&F+3M`xj_Qs2$BRft(Hx>tBZaWF2oA27)k-NzMx^JkB79R zbnpU3)xb2q#~p#1bBvj<F@GjVS8;NegzxBc%_gufGbF@fSbOXBADZXoV~DS$QzCDU71d6W=Jf zDEZ#$laeQirBaO10*ULy7pp~2zCxKg8p0qFiC1esC)G`KwJozgo~d$KRWF3nRhC?J3M}|wh&A+ z?77uJ!jW$YF`QxZ0c5&HJ#`}{8^~!bh}tb?Fa{%`%IGx*Y|+dJD=PcM zrTNiuBl*yQF+twj|FRpl&?hn(@M|PwZ;5JlZ#iQH7>2y}bGEqrRe0Q%I(lm_-O|Fy zIa}^=Z^xD6O*jo#jPIEWs#u$^!S4l@PUEd_vxB&Ga^2fKBRpY*^tOu%?Cd2-B*!!7 zpks-O&#W*PMq4}2xhuPy3*9H1^E$lYOpCI{e?vinqYP3`119chPvdG}GtNwK#z5gd z+f|MXz#GHn71gx-gAsgcTOgkiZ_}pe|Xy zB3UOVTRS_TALok~8g3W)((f$bed8G9@kg*Xb;e?9O}}BOfJ<1x>f8_W_!QY&5JpwK ztfg(#U{-DIrHftKdM^P0Ya8p^LFWjd#Vwq?A<@}+!_;By3L_@$`OHMW^&Et}IBeW_ zX(wp2<-qPrzkXKnR7|D9P( zJrGao+>qKz5_b_)vTwsPM}#vG!c8o?VT{&-zz-b#UhE+Mw1l#)>w zmTdyHuvqRF;j2JZetSIDXvtY^%D1HPATe)h3VKe%uKnd1Fuylj@BEwFyZdg<7sl}0 zLo#tY2^zE(-y_HX9)YJ|{MLv0Pcb{3R2qF@w-M~t1Dh+5?~lbQR$Tbq zt|w=+Tk=2;CBb9k?w7@epO&yQ-;S;T$dt;q8-aE_5vsBr<{izAa39D1*icCOMSt2x zI4wDNI!RvQSh0C~-M4*PQ|C5#M7^rA5)=G+`w{c6zEgB56ha^^uG0^ zUpsfb-yA42E32yRQ(`|Cm+igDYm&b2MrEeNd9evEwQsXlR<%;2L>a*GSi)_R@j-Z( zZAEB^U^il2j19;;)gJ?hVt zWFHEenw+IauPiXT|J=c)MD%N}k2K5grN#4J+%Xx>(()bIrI3vj2V* zn7nX+jK4%N4U|!(xgG{be5pH7{4IIm+ojGWl;T`Wp<6s9qsvE$DC{Wn#XbWGDq~?v zv3GWF#z^W+Y%dlEv12tQm_T>gb*Z#GWeb}#!Vrm z@5?IG+4vj(+$yFA~-k(3BK=irT}seds}}Dc6!(2ZzJuG}}Lv=fTx}8QS-X;=#)g zTWs(|DjQH6^J(FsSI_{x82g!T9RD#a&#yo|{LxK$((WJ!laOcYn&~P{W6|L(j&+AY zU-#WRlw_aV-2(f2iQ7Jvps`lnnp_P{i=R(y+d!Wo%6kyq_-sT(lCPOOtoh~9H_C(M zjSchjG~9?W(3==aQ$6FYOh7T(pf++%BXnupt3A*>mi@+0oQb0V@M@Ut*%-Pj0|#zp|YS z8^?rjY9ss#c}?FkG*lv@%lnCnkLbsjqi*%#=dR69AqjfewryY!7%$mm(N1Tn&&vWF zcO(eZFRUPvNk=;+|UXUHp{uHvehKw60$fa6Y}RgN=T1knMFE> zBaTyw6=l*s)Lk`)sC7gSFCOvC zUsU%gwMOJS42gji-I`Gg4`h$txb@$rKI4j`eq<8%!5X>c2nvn#E+MD+n z5)XI2x{a*`bS55jeQl%X*=uD$q9EmYWVuA?9IZ&v_j}e_MCC8BZSv0-e|HZyN?p%7 z1h{XT4%wMl=4{12rA%|@zY?k5PcPa#w%z%%^F0yePt2 zIgz$)A33dlA+`1*vfx`sa;I)+tTG@kqYMO<$x!W=*{-_;J<~j`SFnM35=d*rVc*Hy zCl-78c9NR@`e+`0e`RDx+S?0_SS*0IkJ_NrQq?OgFPlp($ZtvNvb4@8NV4MKx_sl_ z!nfu5sh36B5W8M!jZb6+%z~M1@|E@V{~k<;jekS?AAS@7Xz5vh8gn{R~g&JNw6&u{fA!y8`c5l7o5 zrgwwRXg(e6EA-D$Mf0a!27=OPLPe zUi;3a#-+?IetmT^Vnok47&yO{6U9O7-wXMmDUJRs$}`XOYEsR|O&`$YNEO20eW9S*7b%{bq-;Xuk96^|DEZ(1BF&YTO? zy6o-gOr0if7El{l!*?CIe-<_ya{tU6r|>N6rmq9Lzz9BpdI`}TQTDeUG}iOJmTEyR zvi@h-;F^8__;o)*$W1pE+sGWszFKs;YLacG6a@9TkZ25oo4tn^l}=9ew#ff>6Egbs zn3t$5$|Lw%pu`JxsE|0jCvm1*#Kb4vw8x}F2-|?}u|~Lh*kDJqlvx5XgCtm@G=#DP zA;uaCG1R$_3f&eIxql{G0?YW0w0Tx&&?R01<7#us8|`upzljTMSU`lVe3;pTQ|M`R zA7_uOTNL?n#~^O~a@gCk$)7R+$lb$DuqKs95pCAjwrwL@J1jP1WNr^^dO$HNVScM-ieF@^`@`gv z*3<853(<6Cm{6h{CyQ+70G9#>Gg{{%)Mvu9{>fPyB|tP7WQ~}%1ys{VDS>_uK5D?q zVonZIlA2g>PV1W=Tnctg$yI>s5{xG}#3@F?Mhm@Br8S++_aP=zYQ3v^eic-H-c`c(UExL&bz z8asPF93w4?3d^0}^hi<(X-3Ebe-b<!t(l01#%N8M?DW=2ba` z@XH%X_BYNOLw37CPoqf-LpohBrX(!QiKWorRk?Kwh>+qT*e!cVMSCYWJWUIr6?^S0 z2{?_lm(p#X!r~=Q zUPe{Z4cL#K)owYAGc3vV@lSibLWB^9lG;@M+EpA;ETk!cAOb}E6px+a7A#I3%JwHx z-mt$`p)KHqo=a6fUvayE>xG>^9pNqEBzoAy$zjs|vKuV?c2sx^04W*^10j%DGq)dq zgri3%AhjO^2y<8ak5vEcfY8GNPt&-GUZ>C!L^tT;o6&jBu#(Z7$%*2{4N%|fpC0x? z*cPhKp4`=B*D)?BusT|aNNCNts8B6hqjbfb9ctt}ahW~g`Z&js<7OV|inuj#^h;P3 z^TmfsGhWT&Caxdks2MK6H4w%%Z_p;A6bpa$Ehe14ahNihd}~LiC(Chv!}7h4Bm7xk z`FMB`=Ox1*9M~1B7G)hw+2f1zR;Ctw1jW<9GRyx*PyEx5*`V+l!{rb=>65P?fT6CL KPQ^_p?Ee5OSo{P4 diff --git a/ico/themes/qet-dark/16x16/edit-clear-locationbar-rtl.png b/ico/themes/qet-dark/16x16/edit-clear-locationbar-rtl.png deleted file mode 100644 index 5ba1904835d38dd45eced2678326c815120da403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmVyJZq-CQFl_=$eb@k|8(AcRl@xUOF1r8qxt eVyOuK{u^Ir1_RZ{J2;t3qJ|C>K;O;#$d#kG7fCs?4 z7~^B$J@80Xk5Wo|BGOw)AR=3{+3XZxLGlcE>FzI7^#~x(^Hbo;x=;L(=lS(YHt-bK z6_F>Eos`lxaIucyQ>|9(FOn6ST@=OHbUHn$*X!FrS40fxUrt^cq*kl-Im@z6O6jVI95xz_pCWQ7B3r;s vRsFIw%kIAR6h+~iaCcwch5x#Ze-pm|zJToKQf7=j00000NkvXXu0mjf9@WwJ diff --git a/ico/themes/qet-dark/16x16/move.png b/ico/themes/qet-dark/16x16/move.png deleted file mode 100644 index ba16ed79c4050ff3d498cc47cef4080dddde021b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)QqELfNKD5Mp3l643H&BQb^PEJ<0t5K=N~bw+3Lt z7;}~6!G!=3iJWt$-EMzZO8v?KU-ErTYyD)We;2@e|4u}X=K2!=Xsx$$__un!zGba7 zB;#2Z;y6B;W!WVW@k*%|-upuU9!(~bX8_P>G~NKfXf%2S07|J-B%jYJAi0rc+2wAx zdx4}9krn_1K`_}_T@VC6b9rJs9=}AMjDEj=+*;lOfB(KMD+*k%!Sy`!) z{JIcej2SDX*1h)+!Z19%2v91O4v_pYo0~!s{rN=WdOH~G53}N{w00` Xj4kqcu?jda00000NkvXXu0mjfcMjt2 diff --git a/ico/themes/qet-dark/22x22/Actions-player-time-icon.png b/ico/themes/qet-dark/22x22/Actions-player-time-icon.png deleted file mode 100644 index f7cfeec5fe16e5098b48b50cb524c3ac855d9c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmV+g0{Z=lP)roW#130a!Yei9+cD-BSoLdL*l;mw|?f!!PBM5@` zB%c{$Ud`w89RT!loMqW%0MAvmy$C(57{DzNc}ubbpd})g@;txb(~2&D*Ue`0Q%OFL zj4^c)8K~<0QZUIj$-d91kbDTB51{SiI1!Q2UqCnikZx3~)h__9`h+(xisHy=vDWSZ zkVS1WnVbQjK8_FKI9~C+y3^@&h2((`ct~>77c3&1A~N&|uLocw%d+cb&^*sqNp`|8 z?3IG8wch}ANe+*L=Xt(5o6UwIvQ@9wzk9zGX`0>!?1UhQ!nuU^)>whqdLRfAcTMV59C&%m3(nb0yP7s6xN9W#llOIJm#6drRo5MK>ehbHhVmHCD(jsXa zmri=^c|!-G&zO)OyyQv5Ima0B7%3C{kKu!%O|5kzA}KHjf^PXuL|*E;zK`ShwePHK z>v5jvzP0umSO9AgdGdYV09b3IrfJTB74WE(x(b5eYbV^H&%k?GmdhkbK6|D)6p=gN zSSfY(6aNJpV{U29f%hOsXz@jY6ZUHGoz0eo@i2JbLwPa$#1UpJ2g1I4Gn&RG#i zzWhw5t%)&WixO;9o55#uA62y$k!sb%OVA{|6rF_EKu56m{w9SQW8OvN62Qmc^`|lB z8o*l;4k1(ko>B?Au6xL`?3LsdfEGYY^1@pCLUKO}5@SRNp^7oqKm1)wa_5|DRJ8zr z{#is00M5U`-uqL~5q?~cNp#ztXRWn7S6ebapF^OlI5_cB61ku z<>cZGCu64H4ar9lc^>q%C0UBd9e^SU_p>}Vc7NV^d7ke9+-`Dgu7M}VZ7FX4ucp4f Y0M-_nEpUnr5dZ)H07*qoM6N<$f+Ty89RL6T diff --git a/ico/themes/qet-dark/22x22/move.png b/ico/themes/qet-dark/22x22/move.png deleted file mode 100644 index 97f50985d32ec19eafa4107a67b6cb8b05ae5ad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)X`jo=VdcqY%P~WMp6~ z&$zXMec7}OwfA;qFtPJ!O07T@& z0sGr*oF$@Hhdwvo_s?ss?*ix>W44KCx6|p=DwT>KMbT1rlh%Peyv`CjlO)OgLp|17 zKZ)b`8Z%!`)AX@1rmmEl27vwR9~5SevV@+k*XtX3p_nh1%g@{G_Jr%YYqo7)5Rp%L zv1&G(M*#G4E039%!!U%1JOgkg%l5lG@YvWG8)L$O1;WhBX_{_?VR*ApvmrXIwcajN zc~KP21GwS){<%S5V@w6WZXvMedB2S@*R|F!*4Nih4DfhTDfO*zuW%fvrIdP9DwP(4 zAaHWn$C4!Z@vl-1`ayyqxJ5*_0pxjJXJ&sW@c;8Q{RJaQ=w6xPKR5sY002ovPDHLk FV1jmw9W?*| diff --git a/ico/themes/qet-dark/32x32/format-text-color.png b/ico/themes/qet-dark/32x32/format-text-color.png deleted file mode 100644 index fd28e4058617acd575e31b1950d7fe641af78f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)MI5zdRmXp+JkI9O(e{e3%gx3?>*$|`M*6H zS0Zv9jF$`Gy6y$A19*<(oKMS>MeGB$T5Ur_YQR?DYIM8ZY(AfFFQoz^ayKCku$fM$ zZ)d82F{Y%dM{|gNc%FAytyW#jvZ}y(C}l7nk8`^$Oto6AXJ9WBdQB#i1;=p)3vGdI+kK!2JOJ(BxgU*2#jyCa zm+;r-d0rDZi~oi(KnxHA!~nC{PqyMm;0>VH>-GQa^c3F>|2@Dbm;81X0pgI)00000 LNkvXXu0mjf=m4;Q diff --git a/ico/themes/qet-dark/32x32/insert-link.png b/ico/themes/qet-dark/32x32/insert-link.png deleted file mode 100644 index 8b2611840c7a297c400fa8e2e7fb2b27c02d7e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)%%&q}cBapkzp7;K(Y|eY%1<=jx zl+p&t*MCV6W9*1XD>t-MwlSr&OY&&sflKfGeaW&jRXxdhrr&HfFJ>wTWn3as)i!`f z5!w7pf)ej!5^RSMdJ~BOGrLpOd=OrZv`0$mnB-w02q*IlopVDoyD1(>@~hB)&yfRw zC+FO-vIKQ1t_joxY64XdW9-BjJ5wVdBCW#DI(rgKJQWw}iLFulJiqlo6{u2Cl4002ovPDHLkV1m#>r`rGk diff --git a/ico/themes/qet-dark/32x32/printer.png b/ico/themes/qet-dark/32x32/printer.png deleted file mode 100644 index cabec7e102d24353ff42cd780e7dbe82c3abc148..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJc25__kcwMx!*25)P~e!-=6k1J zdCt>c_qVia*hMLR^j486Z(vb4yG7Y|n@7WaJ#S4trjwSzp-i`uyE7H8EnCpam;LmH z^@IJp61cfu?Bd>2b)T!nebHX#@3Mm17S*oO>VIT)t#B(_)a{_fN*WQt%<~>c^s*i( qabdBoab|vVYWeYcg=YuKIOlMknI`Uaw7w4LBnD4cKbLh*2~7ZLMM?tz diff --git a/ico/themes/qet-dark/48x48/user-away-extended.png b/ico/themes/qet-dark/48x48/user-away-extended.png deleted file mode 100644 index a3b9e1c8e7192038830d40487951a236ed48f865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcmV-<1cv*GP)1*$N)dwi zDlFQTs5CVz2_1>n%otL>gGxyH< z=A1cm=B%hHw{!8h%}WcQ1<(R$0W5FHrt#4ziVDC1V54g~sj6=WK`@r|T$1!b=7c{B zbS~(+s;ZA94UvWk9dN>bDBBIS&*xthk@tXm7IaVgzP~p0bHG}= zNkqN|a;kc)TrTe@7K_&wajVyWDd1-j83v9AL2%Go`xS6dM7GQuUP;}A#>U3(&tx)Z zfxCbYec#``lpRM=w6JenMD`eCjsX%y(MP~*03x!}81qSLZnRV?d6`V6co6Y_XtO0iTzW-?&8W2@|!>RhMMucym?6%fES11&&s_LG(Hb4>wh~u~qxDS}< z?Cd<6*g+)nK^TU2OiWA+sp=H4K8m6Zi36zWCRY!wTD7X0U^HOz`TRhCe}6?phFsf| zX_(OCu0EAQ{50USacaR_i2`&3WV6{nn~`i@G`f@-Jp@pxRQ_;HJ!t^k4N$AqE;R$N zAR1k)tO00mZ@)BuuB1=mI>7AgY||llZ*T8pBc7#Jt7YaM)6l?0fE6oNtWN8GTd7pm zxW@}=09*j5*Xt%N01;U?f3cEwqi5VCo6`bN)n{CNIt>jB&$+xX3^Pd!ABJH@RiAZ> z^iARbK@j`|SYT~FpMNQ7fVQ@_9U{`Ds^@**|0N9#sEF)y&-=qLY)?vfYwexDe)n^4 zGZAi6F3}kCCGew&bmjB;L(K$TONHnna@d^(=Yk+OmS$Q-RrLkniim89qG<5HK)8g! zpbI4~SF6=+&E79==uRBRalfj5=dP5;%jNR+#jcb~nT=cd0idF)PX$5n{Y^=18Dma* zp4Sgt5|J%!ZEd60+E=Ehr?ZW$y0vzzi2UY+zak<}--z%@q*Z(oIWjM;GASa%s(J$W zYj$>a%6XVB;9lqF2SlXHjXzhdR<{)jg?KqLa}q_-R^VMAXmBH)2ll!RyL^eQh2I(< zAAhi3uMYr^x#U&%oMv2ja0VE5em;?jrS(5?3!nwi0%!sJuL1r6Kl;LrtDUl>00000 LNkvXXu0mjf13o5- diff --git a/ico/themes/qet-dark/48x48/user-away.png b/ico/themes/qet-dark/48x48/user-away.png deleted file mode 100644 index a3b9e1c8e7192038830d40487951a236ed48f865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1145 zcmV-<1cv*GP)1*$N)dwi zDlFQTs5CVz2_1>n%otL>gGxyH< z=A1cm=B%hHw{!8h%}WcQ1<(R$0W5FHrt#4ziVDC1V54g~sj6=WK`@r|T$1!b=7c{B zbS~(+s;ZA94UvWk9dN>bDBBIS&*xthk@tXm7IaVgzP~p0bHG}= zNkqN|a;kc)TrTe@7K_&wajVyWDd1-j83v9AL2%Go`xS6dM7GQuUP;}A#>U3(&tx)Z zfxCbYec#``lpRM=w6JenMD`eCjsX%y(MP~*03x!}81qSLZnRV?d6`V6co6Y_XtO0iTzW-?&8W2@|!>RhMMucym?6%fES11&&s_LG(Hb4>wh~u~qxDS}< z?Cd<6*g+)nK^TU2OiWA+sp=H4K8m6Zi36zWCRY!wTD7X0U^HOz`TRhCe}6?phFsf| zX_(OCu0EAQ{50USacaR_i2`&3WV6{nn~`i@G`f@-Jp@pxRQ_;HJ!t^k4N$AqE;R$N zAR1k)tO00mZ@)BuuB1=mI>7AgY||llZ*T8pBc7#Jt7YaM)6l?0fE6oNtWN8GTd7pm zxW@}=09*j5*Xt%N01;U?f3cEwqi5VCo6`bN)n{CNIt>jB&$+xX3^Pd!ABJH@RiAZ> z^iARbK@j`|SYT~FpMNQ7fVQ@_9U{`Ds^@**|0N9#sEF)y&-=qLY)?vfYwexDe)n^4 zGZAi6F3}kCCGew&bmjB;L(K$TONHnna@d^(=Yk+OmS$Q-RrLkniim89qG<5HK)8g! zpbI4~SF6=+&E79==uRBRalfj5=dP5;%jNR+#jcb~nT=cd0idF)PX$5n{Y^=18Dma* zp4Sgt5|J%!ZEd60+E=Ehr?ZW$y0vzzi2UY+zak<}--z%@q*Z(oIWjM;GASa%s(J$W zYj$>a%6XVB;9lqF2SlXHjXzhdR<{)jg?KqLa}q_-R^VMAXmBH)2ll!RyL^eQh2I(< zAAhi3uMYr^x#U&%oMv2ja0VE5em;?jrS(5?3!nwi0%!sJuL1r6Kl;LrtDUl>00000 LNkvXXu0mjf13o5- diff --git a/ico/themes/qet-dark/breeze-24/draw-circle.svg b/ico/themes/qet-dark/breeze-24/draw-circle.svg deleted file mode 100644 index 24a47d8ba..000000000 --- a/ico/themes/qet-dark/breeze-24/draw-circle.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/ico/themes/qet-dark/breeze-24/draw-ellipse.svg b/ico/themes/qet-dark/breeze-24/draw-ellipse.svg deleted file mode 100644 index b555a2f27..000000000 --- a/ico/themes/qet-dark/breeze-24/draw-ellipse.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/ico/themes/qet-dark/breeze/16/draw-circle.svg b/ico/themes/qet-dark/breeze/16/draw-circle.svg deleted file mode 100644 index 6be8bad15..000000000 --- a/ico/themes/qet-dark/breeze/16/draw-circle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/themes/qet-dark/breeze/16/draw-ellipse.svg b/ico/themes/qet-dark/breeze/16/draw-ellipse.svg deleted file mode 100644 index 69e16fb55..000000000 --- a/ico/themes/qet-dark/breeze/16/draw-ellipse.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/themes/qet-dark/breeze/22/draw-circle.svg b/ico/themes/qet-dark/breeze/22/draw-circle.svg deleted file mode 100644 index 0938c51c9..000000000 --- a/ico/themes/qet-dark/breeze/22/draw-circle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/themes/qet-dark/breeze/22/draw-ellipse.svg b/ico/themes/qet-dark/breeze/22/draw-ellipse.svg deleted file mode 100644 index 6ec4427de..000000000 --- a/ico/themes/qet-dark/breeze/22/draw-ellipse.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/ico/themes/qet-dark/traced-24/arc.svg b/ico/themes/qet-dark/traced-24/arc.svg new file mode 100644 index 000000000..c4b414eaf --- /dev/null +++ b/ico/themes/qet-dark/traced-24/arc.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/autoconnect.svg b/ico/themes/qet-dark/traced-24/autoconnect.svg new file mode 100644 index 000000000..cc26af7a3 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/autoconnect.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/bring_forward.svg b/ico/themes/qet-dark/traced-24/bring_forward.svg new file mode 100644 index 000000000..b95a85e10 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/bring_forward.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/circle.svg b/ico/themes/qet-dark/traced-24/circle.svg new file mode 100644 index 000000000..aaf079f33 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/circle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/conductor.svg b/ico/themes/qet-dark/traced-24/conductor.svg new file mode 100644 index 000000000..90fb92c60 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/conductor.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/element.svg b/ico/themes/qet-dark/traced-24/element.svg new file mode 100644 index 000000000..c7783399f --- /dev/null +++ b/ico/themes/qet-dark/traced-24/element.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/ellipse.svg b/ico/themes/qet-dark/traced-24/ellipse.svg new file mode 100644 index 000000000..676e31291 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/ellipse.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/move.svg b/ico/themes/qet-dark/traced-24/move.svg new file mode 100644 index 000000000..2153d6528 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/move.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/user-away-extended.svg b/ico/themes/qet-dark/traced-24/user-away-extended.svg new file mode 100644 index 000000000..9ec112a77 --- /dev/null +++ b/ico/themes/qet-dark/traced-24/user-away-extended.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-24/view-fit-window.svg b/ico/themes/qet-dark/traced-24/view-fit-window.svg new file mode 100644 index 000000000..1e871071e --- /dev/null +++ b/ico/themes/qet-dark/traced-24/view-fit-window.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/arc.svg b/ico/themes/qet-dark/traced-large-24/arc.svg new file mode 100644 index 000000000..6a66b9f94 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/arc.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/autoconnect.svg b/ico/themes/qet-dark/traced-large-24/autoconnect.svg new file mode 100644 index 000000000..763aedd3d --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/autoconnect.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/bring_forward.svg b/ico/themes/qet-dark/traced-large-24/bring_forward.svg new file mode 100644 index 000000000..fa7cd8228 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/bring_forward.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/circle.svg b/ico/themes/qet-dark/traced-large-24/circle.svg new file mode 100644 index 000000000..177ab3ce0 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/circle.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/conductor.svg b/ico/themes/qet-dark/traced-large-24/conductor.svg new file mode 100644 index 000000000..49c646fbc --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/conductor.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/element.svg b/ico/themes/qet-dark/traced-large-24/element.svg new file mode 100644 index 000000000..9d98298f3 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/element.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/ellipse.svg b/ico/themes/qet-dark/traced-large-24/ellipse.svg new file mode 100644 index 000000000..d078da777 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/ellipse.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/move.svg b/ico/themes/qet-dark/traced-large-24/move.svg new file mode 100644 index 000000000..b15d9677d --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/move.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/user-away-extended.svg b/ico/themes/qet-dark/traced-large-24/user-away-extended.svg new file mode 100644 index 000000000..bfebb2da6 --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/user-away-extended.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced-large-24/view-fit-window.svg b/ico/themes/qet-dark/traced-large-24/view-fit-window.svg new file mode 100644 index 000000000..499d28daa --- /dev/null +++ b/ico/themes/qet-dark/traced-large-24/view-fit-window.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/arc.svg b/ico/themes/qet-dark/traced/16/arc.svg new file mode 100644 index 000000000..7f851111d --- /dev/null +++ b/ico/themes/qet-dark/traced/16/arc.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/autoconnect.svg b/ico/themes/qet-dark/traced/16/autoconnect.svg new file mode 100644 index 000000000..d457a6b94 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/autoconnect.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/bring_forward.svg b/ico/themes/qet-dark/traced/16/bring_forward.svg new file mode 100644 index 000000000..64607e324 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/bring_forward.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/circle.svg b/ico/themes/qet-dark/traced/16/circle.svg new file mode 100644 index 000000000..f6f289104 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/circle.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/conductor.svg b/ico/themes/qet-dark/traced/16/conductor.svg new file mode 100644 index 000000000..bfbc696b8 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/conductor.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/element.svg b/ico/themes/qet-dark/traced/16/element.svg new file mode 100644 index 000000000..8e3ca766d --- /dev/null +++ b/ico/themes/qet-dark/traced/16/element.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/ellipse.svg b/ico/themes/qet-dark/traced/16/ellipse.svg new file mode 100644 index 000000000..f20e3683e --- /dev/null +++ b/ico/themes/qet-dark/traced/16/ellipse.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/move.svg b/ico/themes/qet-dark/traced/16/move.svg new file mode 100644 index 000000000..ac7aa5191 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/move.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/user-away-extended.svg b/ico/themes/qet-dark/traced/16/user-away-extended.svg new file mode 100644 index 000000000..9a1cbc6e8 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/user-away-extended.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/16/view-fit-window.svg b/ico/themes/qet-dark/traced/16/view-fit-window.svg new file mode 100644 index 000000000..40cd1f8d8 --- /dev/null +++ b/ico/themes/qet-dark/traced/16/view-fit-window.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/arc.svg b/ico/themes/qet-dark/traced/22/arc.svg new file mode 100644 index 000000000..9b542da79 --- /dev/null +++ b/ico/themes/qet-dark/traced/22/arc.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/autoconnect.svg b/ico/themes/qet-dark/traced/22/autoconnect.svg new file mode 100644 index 000000000..00503bad5 --- /dev/null +++ b/ico/themes/qet-dark/traced/22/autoconnect.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/bring_forward.svg b/ico/themes/qet-dark/traced/22/bring_forward.svg new file mode 100644 index 000000000..e3c92e383 --- /dev/null +++ b/ico/themes/qet-dark/traced/22/bring_forward.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/circle.svg b/ico/themes/qet-dark/traced/22/circle.svg new file mode 100644 index 000000000..f5b1c6119 --- /dev/null +++ b/ico/themes/qet-dark/traced/22/circle.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/conductor.svg b/ico/themes/qet-dark/traced/22/conductor.svg new file mode 100644 index 000000000..87abf0ffd --- /dev/null +++ b/ico/themes/qet-dark/traced/22/conductor.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/element.svg b/ico/themes/qet-dark/traced/22/element.svg new file mode 100644 index 000000000..b7e08d23f --- /dev/null +++ b/ico/themes/qet-dark/traced/22/element.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/ellipse.svg b/ico/themes/qet-dark/traced/22/ellipse.svg new file mode 100644 index 000000000..4ed940cbc --- /dev/null +++ b/ico/themes/qet-dark/traced/22/ellipse.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/move.svg b/ico/themes/qet-dark/traced/22/move.svg new file mode 100644 index 000000000..d87d60e41 --- /dev/null +++ b/ico/themes/qet-dark/traced/22/move.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/user-away-extended.svg b/ico/themes/qet-dark/traced/22/user-away-extended.svg new file mode 100644 index 000000000..3ba6549bd --- /dev/null +++ b/ico/themes/qet-dark/traced/22/user-away-extended.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/22/view-fit-window.svg b/ico/themes/qet-dark/traced/22/view-fit-window.svg new file mode 100644 index 000000000..62149d0ff --- /dev/null +++ b/ico/themes/qet-dark/traced/22/view-fit-window.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/arc.svg b/ico/themes/qet-dark/traced/large16/arc.svg new file mode 100644 index 000000000..778242ad8 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/arc.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/autoconnect.svg b/ico/themes/qet-dark/traced/large16/autoconnect.svg new file mode 100644 index 000000000..695a91a7b --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/autoconnect.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/bring_forward.svg b/ico/themes/qet-dark/traced/large16/bring_forward.svg new file mode 100644 index 000000000..9a888c0f4 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/bring_forward.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/circle.svg b/ico/themes/qet-dark/traced/large16/circle.svg new file mode 100644 index 000000000..3a8ad1a61 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/circle.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/conductor.svg b/ico/themes/qet-dark/traced/large16/conductor.svg new file mode 100644 index 000000000..d651eced5 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/conductor.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/element.svg b/ico/themes/qet-dark/traced/large16/element.svg new file mode 100644 index 000000000..910792fe4 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/element.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/ellipse.svg b/ico/themes/qet-dark/traced/large16/ellipse.svg new file mode 100644 index 000000000..ff55f773f --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/ellipse.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/move.svg b/ico/themes/qet-dark/traced/large16/move.svg new file mode 100644 index 000000000..e26d51b2c --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/move.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/user-away-extended.svg b/ico/themes/qet-dark/traced/large16/user-away-extended.svg new file mode 100644 index 000000000..b3052a3f4 --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/user-away-extended.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large16/view-fit-window.svg b/ico/themes/qet-dark/traced/large16/view-fit-window.svg new file mode 100644 index 000000000..2bb2ef2ff --- /dev/null +++ b/ico/themes/qet-dark/traced/large16/view-fit-window.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/arc.svg b/ico/themes/qet-dark/traced/large22/arc.svg new file mode 100644 index 000000000..a515a8392 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/arc.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/autoconnect.svg b/ico/themes/qet-dark/traced/large22/autoconnect.svg new file mode 100644 index 000000000..18a8605c0 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/autoconnect.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/bring_forward.svg b/ico/themes/qet-dark/traced/large22/bring_forward.svg new file mode 100644 index 000000000..b11386061 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/bring_forward.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/circle.svg b/ico/themes/qet-dark/traced/large22/circle.svg new file mode 100644 index 000000000..8a568e096 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/circle.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/conductor.svg b/ico/themes/qet-dark/traced/large22/conductor.svg new file mode 100644 index 000000000..05df7eb10 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/conductor.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/element.svg b/ico/themes/qet-dark/traced/large22/element.svg new file mode 100644 index 000000000..994cd0877 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/element.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/ellipse.svg b/ico/themes/qet-dark/traced/large22/ellipse.svg new file mode 100644 index 000000000..2692858f2 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/ellipse.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/move.svg b/ico/themes/qet-dark/traced/large22/move.svg new file mode 100644 index 000000000..8bd28ae84 --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/move.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/user-away-extended.svg b/ico/themes/qet-dark/traced/large22/user-away-extended.svg new file mode 100644 index 000000000..ead81c42b --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/user-away-extended.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ico/themes/qet-dark/traced/large22/view-fit-window.svg b/ico/themes/qet-dark/traced/large22/view-fit-window.svg new file mode 100644 index 000000000..4920fa0fe --- /dev/null +++ b/ico/themes/qet-dark/traced/large22/view-fit-window.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + From 6753aa3ce70068093780de57d5c3b562b2f1dcf6 Mon Sep 17 00:00:00 2001 From: Jeff Patterson Date: Fri, 2 Oct 2026 05:47:32 -0500 Subject: [PATCH 18/18] Loaded icons by theme name and removed the PNGs nothing uses --- ico/128x128/configure-shortcuts.png | Bin 1713 -> 0 bytes ico/128x128/diagram.png | Bin 2690 -> 0 bytes ico/128x128/document-export.png | Bin 3093 -> 0 bytes ico/128x128/printer.png | Bin 3666 -> 0 bytes ico/128x128/settings.png | Bin 5418 -> 0 bytes ico/16x16/application-exit.png | Bin 199 -> 0 bytes ico/16x16/arrow-left.png | Bin 362 -> 0 bytes ico/16x16/arrow-right.png | Bin 368 -> 0 bytes ico/16x16/circle.png | Bin 425 -> 0 bytes ico/16x16/conductor.png | Bin 197 -> 0 bytes ico/16x16/configure.png | Bin 296 -> 0 bytes ico/16x16/diagram.png | Bin 198 -> 0 bytes ico/16x16/dialog-cancel.png | Bin 447 -> 0 bytes ico/16x16/dialog-ok.png | Bin 375 -> 0 bytes ico/16x16/document-close.png | Bin 296 -> 0 bytes ico/16x16/document-export.png | Bin 274 -> 0 bytes ico/16x16/document-import.png | Bin 277 -> 0 bytes ico/16x16/document-new.png | Bin 207 -> 0 bytes ico/16x16/document-open-recent.png | Bin 365 -> 0 bytes ico/16x16/document-open.png | Bin 243 -> 0 bytes ico/16x16/document-print-frame.png | Bin 219 -> 0 bytes ico/16x16/document-print.png | Bin 219 -> 0 bytes ico/16x16/document-save-all.png | Bin 299 -> 0 bytes ico/16x16/document-save-as.png | Bin 358 -> 0 bytes ico/16x16/document-save.png | Bin 275 -> 0 bytes ico/16x16/edit-clear-locationbar-ltr.png | Bin 316 -> 0 bytes ico/16x16/edit-clear-locationbar-rtl.png | Bin 325 -> 0 bytes ico/16x16/edit-clear.png | Bin 373 -> 0 bytes ico/16x16/edit-copy.png | Bin 227 -> 0 bytes ico/16x16/edit-cut.png | Bin 410 -> 0 bytes ico/16x16/edit-delete.png | Bin 195 -> 0 bytes ico/16x16/edit-download.png | Bin 339 -> 0 bytes ico/16x16/edit-paste.png | Bin 201 -> 0 bytes ico/16x16/edit-redo.png | Bin 397 -> 0 bytes ico/16x16/edit-rename.png | Bin 401 -> 0 bytes ico/16x16/edit-select-all.png | Bin 210 -> 0 bytes ico/16x16/edit-select-invert.png | Bin 336 -> 0 bytes ico/16x16/edit-select-none.png | Bin 328 -> 0 bytes ico/16x16/edit-table-cell-merge.png | Bin 247 -> 0 bytes ico/16x16/edit-table-cell-split.png | Bin 300 -> 0 bytes ico/16x16/edit-table-delete-column.png | Bin 320 -> 0 bytes ico/16x16/edit-table-delete-row.png | Bin 268 -> 0 bytes ico/16x16/edit-table-insert-column-left.png | Bin 314 -> 0 bytes ico/16x16/edit-table-insert-column-right.png | Bin 289 -> 0 bytes ico/16x16/edit-table-insert-row-above.png | Bin 293 -> 0 bytes ico/16x16/edit-table-insert-row-under.png | Bin 289 -> 0 bytes ico/16x16/edit-undo.png | Bin 404 -> 0 bytes ico/16x16/element.png | Bin 516 -> 0 bytes ico/16x16/flip.png | Bin 295 -> 0 bytes ico/16x16/folder-new.png | Bin 267 -> 0 bytes ico/16x16/folder-open.png | Bin 227 -> 0 bytes ico/16x16/folder-properties.png | Bin 281 -> 0 bytes ico/16x16/folder.png | Bin 242 -> 0 bytes ico/16x16/folio-delete.png | Bin 223 -> 0 bytes ico/16x16/folio-new.png | Bin 248 -> 0 bytes ico/16x16/folio-properties.png | Bin 230 -> 0 bytes ico/16x16/go-bottom.png | Bin 370 -> 0 bytes ico/16x16/go-down-double.png | Bin 429 -> 0 bytes ico/16x16/go-down.png | Bin 352 -> 0 bytes ico/16x16/go-home.png | Bin 433 -> 0 bytes ico/16x16/go-top.png | Bin 371 -> 0 bytes ico/16x16/go-up-double.png | Bin 417 -> 0 bytes ico/16x16/go-up.png | Bin 356 -> 0 bytes ico/16x16/grid.png | Bin 167 -> 0 bytes ico/16x16/help-contents.png | Bin 542 -> 0 bytes ico/16x16/help-donate.png | Bin 418 -> 0 bytes ico/16x16/item-cancel.png | Bin 447 -> 0 bytes ico/16x16/item-copy.png | Bin 227 -> 0 bytes ico/16x16/item-move.png | Bin 305 -> 0 bytes ico/16x16/kdenlive-show-video.png | Bin 251 -> 0 bytes ico/16x16/label.png | Bin 216 -> 0 bytes ico/16x16/list-add.png | Bin 192 -> 0 bytes ico/16x16/list-remove.png | Bin 166 -> 0 bytes ico/16x16/masquer.png | Bin 484 -> 0 bytes ico/16x16/mirror.png | Bin 291 -> 0 bytes ico/16x16/move.png | Bin 603 -> 0 bytes ico/16x16/object-group.png | Bin 342 -> 0 bytes ico/16x16/object-rotate-right.png | Bin 391 -> 0 bytes ico/16x16/preferences-desktop-user.png | Bin 351 -> 0 bytes ico/16x16/project-delete.png | Bin 268 -> 0 bytes ico/16x16/qet.png | Bin 541 -> 0 bytes ico/16x16/qt.png | Bin 1309 -> 0 bytes ico/16x16/select.png | Bin 309 -> 0 bytes ico/16x16/table-of-content.png | Bin 192 -> 0 bytes ico/16x16/transform-rotate.png | Bin 282 -> 0 bytes ico/16x16/user-busy.png | Bin 427 -> 0 bytes ico/16x16/user-online.png | Bin 481 -> 0 bytes ico/16x16/view-fullscreen.png | Bin 276 -> 0 bytes ico/16x16/view-refresh.png | Bin 492 -> 0 bytes ico/16x16/view-restore.png | Bin 299 -> 0 bytes ico/16x16/window-new.png | Bin 212 -> 0 bytes ico/16x16/zoom-draw.png | Bin 359 -> 0 bytes ico/16x16/zoom-in.png | Bin 268 -> 0 bytes ico/16x16/zoom-out.png | Bin 271 -> 0 bytes ico/22x22/Actions-player-time-icon.png | Bin 592 -> 0 bytes ico/22x22/application-exit.png | Bin 211 -> 0 bytes .../applications-development-translation.png | Bin 349 -> 0 bytes ico/22x22/arc.png | Bin 376 -> 0 bytes ico/22x22/arrow-left.png | Bin 276 -> 0 bytes ico/22x22/arrow-right.png | Bin 286 -> 0 bytes ico/22x22/autoconnect.png | Bin 257 -> 0 bytes ico/22x22/bring_forward.png | Bin 597 -> 0 bytes ico/22x22/configure.png | Bin 357 -> 0 bytes ico/22x22/dialog-cancel.png | Bin 636 -> 0 bytes ico/22x22/dialog-ok.png | Bin 415 -> 0 bytes ico/22x22/document-close.png | Bin 295 -> 0 bytes ico/22x22/document-export.png | Bin 286 -> 0 bytes ico/22x22/document-import.png | Bin 285 -> 0 bytes ico/22x22/document-new.png | Bin 210 -> 0 bytes ico/22x22/document-open-recent.png | Bin 363 -> 0 bytes ico/22x22/document-open.png | Bin 241 -> 0 bytes ico/22x22/document-print-frame.png | Bin 239 -> 0 bytes ico/22x22/document-print.png | Bin 239 -> 0 bytes ico/22x22/document-save-all.png | Bin 299 -> 0 bytes ico/22x22/document-save-as.png | Bin 397 -> 0 bytes ico/22x22/document-save.png | Bin 292 -> 0 bytes ico/22x22/edit-clear-locationbar-ltr.png | Bin 424 -> 0 bytes ico/22x22/edit-clear-locationbar-rtl.png | Bin 414 -> 0 bytes ico/22x22/edit-clear.png | Bin 486 -> 0 bytes ico/22x22/edit-copy.png | Bin 247 -> 0 bytes ico/22x22/edit-cut.png | Bin 613 -> 0 bytes ico/22x22/edit-delete.png | Bin 200 -> 0 bytes ico/22x22/edit-paste.png | Bin 225 -> 0 bytes ico/22x22/edit-redo.png | Bin 473 -> 0 bytes ico/22x22/edit-rename.png | Bin 394 -> 0 bytes ico/22x22/edit-select-all.png | Bin 247 -> 0 bytes ico/22x22/edit-table-cell-merge.png | Bin 263 -> 0 bytes ico/22x22/edit-table-cell-split.png | Bin 276 -> 0 bytes ico/22x22/edit-table-delete-column.png | Bin 366 -> 0 bytes ico/22x22/edit-table-delete-row.png | Bin 271 -> 0 bytes ico/22x22/edit-table-insert-column-left.png | Bin 395 -> 0 bytes ico/22x22/edit-table-insert-column-right.png | Bin 395 -> 0 bytes ico/22x22/edit-table-insert-row-above.png | Bin 326 -> 0 bytes ico/22x22/edit-table-insert-row-under.png | Bin 348 -> 0 bytes ico/22x22/edit-undo.png | Bin 451 -> 0 bytes ico/22x22/ellipse.png | Bin 523 -> 0 bytes ico/22x22/folder-new.png | Bin 327 -> 0 bytes ico/22x22/folder-open.png | Bin 240 -> 0 bytes ico/22x22/format-text-subscript.png | Bin 537 -> 0 bytes ico/22x22/format-text-superscript.png | Bin 584 -> 0 bytes ico/22x22/go-down.png | Bin 295 -> 0 bytes ico/22x22/go-home.png | Bin 547 -> 0 bytes ico/22x22/go-up.png | Bin 284 -> 0 bytes ico/22x22/grid.png | Bin 173 -> 0 bytes ico/22x22/insert-image.png | Bin 353 -> 0 bytes ico/22x22/line.png | Bin 241 -> 0 bytes ico/22x22/list-add.png | Bin 184 -> 0 bytes ico/22x22/list-remove.png | Bin 171 -> 0 bytes ico/22x22/move.png | Bin 691 -> 0 bytes ico/22x22/object-locked.png | Bin 311 -> 0 bytes ico/22x22/object-rotate-right.png | Bin 537 -> 0 bytes ico/22x22/object-unlocked.png | Bin 321 -> 0 bytes ico/22x22/polygon.png | Bin 291 -> 0 bytes ico/22x22/preferences-desktop-user.png | Bin 421 -> 0 bytes ico/22x22/project-delete.png | Bin 321 -> 0 bytes ico/22x22/rectangle.png | Bin 190 -> 0 bytes ico/22x22/restaurer.png | Bin 525 -> 0 bytes ico/22x22/select.png | Bin 339 -> 0 bytes ico/22x22/single_page.png | Bin 216 -> 0 bytes ico/22x22/start.png | Bin 414 -> 0 bytes ico/22x22/text.png | Bin 498 -> 0 bytes ico/22x22/transform-scale.png | Bin 254 -> 0 bytes ico/22x22/two_pages.png | Bin 220 -> 0 bytes ico/22x22/view-fit-window.png | Bin 317 -> 0 bytes ico/22x22/view-fullscreen.png | Bin 267 -> 0 bytes ico/22x22/view-refresh.png | Bin 626 -> 0 bytes ico/22x22/view-restore.png | Bin 313 -> 0 bytes ico/22x22/view_fit_width.png | Bin 240 -> 0 bytes ico/22x22/window-new.png | Bin 220 -> 0 bytes ico/22x22/zoom-draw.png | Bin 276 -> 0 bytes ico/22x22/zoom-in.png | Bin 265 -> 0 bytes ico/22x22/zoom-out.png | Bin 289 -> 0 bytes ico/32x32/format-text-bold.png | Bin 724 -> 0 bytes ico/32x32/format-text-color.png | Bin 506 -> 0 bytes ico/32x32/format-text-italic.png | Bin 523 -> 0 bytes ico/32x32/format-text-underline.png | Bin 489 -> 0 bytes ico/32x32/image-x-eps.png | Bin 595 -> 0 bytes ico/32x32/insert-link.png | Bin 480 -> 0 bytes ico/32x32/printer.png | Bin 262 -> 0 bytes ico/32x32/qt.png | Bin 15711 -> 0 bytes ico/48x48/document-print-frame.png | Bin 619 -> 0 bytes ico/48x48/user-away-extended.png | Bin 1288 -> 0 bytes ico/48x48/user-away.png | Bin 1288 -> 0 bytes ico/48x48/view-pim-journal.png | Bin 252 -> 0 bytes ico/diagram.png | Bin 214 -> 0 bytes qelectrotech.qrc | 184 ------------------ sources/NameList/ui/namelistwidget.ui | 6 +- .../SearchAndReplace/ui/replacefoliowidget.ui | 3 +- .../ui/searchandreplacewidget.ui | 9 +- .../TerminalStrip/ui/freeterminaleditor.ui | 3 +- .../TerminalStrip/ui/terminalstripeditor.ui | 3 +- .../ui/terminalstripeditorwindow.ui | 9 +- sources/autoNum/ui/autonumberingdockwidget.ui | 12 +- sources/autoNum/ui/selectautonumw.ui | 15 +- sources/dataBase/ui/elementquerywidget.ui | 18 +- sources/dataBase/ui/summaryquerywidget.ui | 12 +- sources/editor/ui/polygoneditor.ui | 6 +- sources/editor/ui/qetelementeditor.ui | 93 +++------ sources/elementspanel.cpp | 4 +- sources/print/projectprintwindow.ui | 30 +-- .../ui/graphicstablepropertieseditor.ui | 6 +- .../ui/projectdbmodelpropertieswidget.ui | 6 +- sources/qeticons.cpp | 3 +- sources/ui/conductorpropertieswidget.ui | 3 +- sources/ui/configsaveloaderwidget.ui | 6 +- sources/ui/dialogwaiting.cpp | 3 + sources/ui/dialogwaiting.ui | 3 - sources/ui/dynamicelementtextitemeditor.ui | 12 +- sources/ui/masterpropertieswidget.ui | 6 +- sources/ui/thirdpartybinaryinstalldialog.ui | 6 +- sources/ui/titleblockpropertieswidget.ui | 9 +- 211 files changed, 97 insertions(+), 373 deletions(-) delete mode 100644 ico/128x128/configure-shortcuts.png delete mode 100644 ico/128x128/diagram.png delete mode 100644 ico/128x128/document-export.png delete mode 100644 ico/128x128/printer.png delete mode 100644 ico/128x128/settings.png delete mode 100644 ico/16x16/application-exit.png delete mode 100644 ico/16x16/arrow-left.png delete mode 100644 ico/16x16/arrow-right.png delete mode 100644 ico/16x16/circle.png delete mode 100644 ico/16x16/conductor.png delete mode 100644 ico/16x16/configure.png delete mode 100644 ico/16x16/diagram.png delete mode 100644 ico/16x16/dialog-cancel.png delete mode 100644 ico/16x16/dialog-ok.png delete mode 100644 ico/16x16/document-close.png delete mode 100644 ico/16x16/document-export.png delete mode 100644 ico/16x16/document-import.png delete mode 100644 ico/16x16/document-new.png delete mode 100644 ico/16x16/document-open-recent.png delete mode 100644 ico/16x16/document-open.png delete mode 100644 ico/16x16/document-print-frame.png delete mode 100644 ico/16x16/document-print.png delete mode 100644 ico/16x16/document-save-all.png delete mode 100644 ico/16x16/document-save-as.png delete mode 100644 ico/16x16/document-save.png delete mode 100644 ico/16x16/edit-clear-locationbar-ltr.png delete mode 100644 ico/16x16/edit-clear-locationbar-rtl.png delete mode 100644 ico/16x16/edit-clear.png delete mode 100644 ico/16x16/edit-copy.png delete mode 100644 ico/16x16/edit-cut.png delete mode 100644 ico/16x16/edit-delete.png delete mode 100644 ico/16x16/edit-download.png delete mode 100644 ico/16x16/edit-paste.png delete mode 100644 ico/16x16/edit-redo.png delete mode 100644 ico/16x16/edit-rename.png delete mode 100644 ico/16x16/edit-select-all.png delete mode 100644 ico/16x16/edit-select-invert.png delete mode 100644 ico/16x16/edit-select-none.png delete mode 100644 ico/16x16/edit-table-cell-merge.png delete mode 100644 ico/16x16/edit-table-cell-split.png delete mode 100644 ico/16x16/edit-table-delete-column.png delete mode 100644 ico/16x16/edit-table-delete-row.png delete mode 100644 ico/16x16/edit-table-insert-column-left.png delete mode 100644 ico/16x16/edit-table-insert-column-right.png delete mode 100644 ico/16x16/edit-table-insert-row-above.png delete mode 100644 ico/16x16/edit-table-insert-row-under.png delete mode 100644 ico/16x16/edit-undo.png delete mode 100644 ico/16x16/element.png delete mode 100644 ico/16x16/flip.png delete mode 100644 ico/16x16/folder-new.png delete mode 100644 ico/16x16/folder-open.png delete mode 100644 ico/16x16/folder-properties.png delete mode 100644 ico/16x16/folder.png delete mode 100644 ico/16x16/folio-delete.png delete mode 100644 ico/16x16/folio-new.png delete mode 100644 ico/16x16/folio-properties.png delete mode 100644 ico/16x16/go-bottom.png delete mode 100644 ico/16x16/go-down-double.png delete mode 100644 ico/16x16/go-down.png delete mode 100644 ico/16x16/go-home.png delete mode 100644 ico/16x16/go-top.png delete mode 100644 ico/16x16/go-up-double.png delete mode 100644 ico/16x16/go-up.png delete mode 100644 ico/16x16/grid.png delete mode 100644 ico/16x16/help-contents.png delete mode 100644 ico/16x16/help-donate.png delete mode 100644 ico/16x16/item-cancel.png delete mode 100644 ico/16x16/item-copy.png delete mode 100644 ico/16x16/item-move.png delete mode 100644 ico/16x16/kdenlive-show-video.png delete mode 100644 ico/16x16/label.png delete mode 100644 ico/16x16/list-add.png delete mode 100644 ico/16x16/list-remove.png delete mode 100644 ico/16x16/masquer.png delete mode 100644 ico/16x16/mirror.png delete mode 100644 ico/16x16/move.png delete mode 100644 ico/16x16/object-group.png delete mode 100644 ico/16x16/object-rotate-right.png delete mode 100644 ico/16x16/preferences-desktop-user.png delete mode 100644 ico/16x16/project-delete.png delete mode 100644 ico/16x16/qet.png delete mode 100644 ico/16x16/qt.png delete mode 100644 ico/16x16/select.png delete mode 100644 ico/16x16/table-of-content.png delete mode 100644 ico/16x16/transform-rotate.png delete mode 100644 ico/16x16/user-busy.png delete mode 100644 ico/16x16/user-online.png delete mode 100644 ico/16x16/view-fullscreen.png delete mode 100644 ico/16x16/view-refresh.png delete mode 100644 ico/16x16/view-restore.png delete mode 100644 ico/16x16/window-new.png delete mode 100644 ico/16x16/zoom-draw.png delete mode 100644 ico/16x16/zoom-in.png delete mode 100644 ico/16x16/zoom-out.png delete mode 100644 ico/22x22/Actions-player-time-icon.png delete mode 100644 ico/22x22/application-exit.png delete mode 100644 ico/22x22/applications-development-translation.png delete mode 100644 ico/22x22/arc.png delete mode 100644 ico/22x22/arrow-left.png delete mode 100644 ico/22x22/arrow-right.png delete mode 100644 ico/22x22/autoconnect.png delete mode 100644 ico/22x22/bring_forward.png delete mode 100644 ico/22x22/configure.png delete mode 100644 ico/22x22/dialog-cancel.png delete mode 100644 ico/22x22/dialog-ok.png delete mode 100644 ico/22x22/document-close.png delete mode 100644 ico/22x22/document-export.png delete mode 100644 ico/22x22/document-import.png delete mode 100644 ico/22x22/document-new.png delete mode 100644 ico/22x22/document-open-recent.png delete mode 100644 ico/22x22/document-open.png delete mode 100644 ico/22x22/document-print-frame.png delete mode 100644 ico/22x22/document-print.png delete mode 100644 ico/22x22/document-save-all.png delete mode 100644 ico/22x22/document-save-as.png delete mode 100644 ico/22x22/document-save.png delete mode 100644 ico/22x22/edit-clear-locationbar-ltr.png delete mode 100644 ico/22x22/edit-clear-locationbar-rtl.png delete mode 100644 ico/22x22/edit-clear.png delete mode 100644 ico/22x22/edit-copy.png delete mode 100644 ico/22x22/edit-cut.png delete mode 100644 ico/22x22/edit-delete.png delete mode 100644 ico/22x22/edit-paste.png delete mode 100644 ico/22x22/edit-redo.png delete mode 100644 ico/22x22/edit-rename.png delete mode 100644 ico/22x22/edit-select-all.png delete mode 100644 ico/22x22/edit-table-cell-merge.png delete mode 100644 ico/22x22/edit-table-cell-split.png delete mode 100644 ico/22x22/edit-table-delete-column.png delete mode 100644 ico/22x22/edit-table-delete-row.png delete mode 100644 ico/22x22/edit-table-insert-column-left.png delete mode 100644 ico/22x22/edit-table-insert-column-right.png delete mode 100644 ico/22x22/edit-table-insert-row-above.png delete mode 100644 ico/22x22/edit-table-insert-row-under.png delete mode 100644 ico/22x22/edit-undo.png delete mode 100644 ico/22x22/ellipse.png delete mode 100644 ico/22x22/folder-new.png delete mode 100644 ico/22x22/folder-open.png delete mode 100644 ico/22x22/format-text-subscript.png delete mode 100644 ico/22x22/format-text-superscript.png delete mode 100644 ico/22x22/go-down.png delete mode 100644 ico/22x22/go-home.png delete mode 100644 ico/22x22/go-up.png delete mode 100644 ico/22x22/grid.png delete mode 100644 ico/22x22/insert-image.png delete mode 100644 ico/22x22/line.png delete mode 100644 ico/22x22/list-add.png delete mode 100644 ico/22x22/list-remove.png delete mode 100644 ico/22x22/move.png delete mode 100644 ico/22x22/object-locked.png delete mode 100644 ico/22x22/object-rotate-right.png delete mode 100644 ico/22x22/object-unlocked.png delete mode 100644 ico/22x22/polygon.png delete mode 100644 ico/22x22/preferences-desktop-user.png delete mode 100644 ico/22x22/project-delete.png delete mode 100644 ico/22x22/rectangle.png delete mode 100644 ico/22x22/restaurer.png delete mode 100644 ico/22x22/select.png delete mode 100644 ico/22x22/single_page.png delete mode 100644 ico/22x22/start.png delete mode 100644 ico/22x22/text.png delete mode 100644 ico/22x22/transform-scale.png delete mode 100644 ico/22x22/two_pages.png delete mode 100644 ico/22x22/view-fit-window.png delete mode 100644 ico/22x22/view-fullscreen.png delete mode 100644 ico/22x22/view-refresh.png delete mode 100644 ico/22x22/view-restore.png delete mode 100644 ico/22x22/view_fit_width.png delete mode 100644 ico/22x22/window-new.png delete mode 100644 ico/22x22/zoom-draw.png delete mode 100644 ico/22x22/zoom-in.png delete mode 100644 ico/22x22/zoom-out.png delete mode 100644 ico/32x32/format-text-bold.png delete mode 100644 ico/32x32/format-text-color.png delete mode 100644 ico/32x32/format-text-italic.png delete mode 100644 ico/32x32/format-text-underline.png delete mode 100644 ico/32x32/image-x-eps.png delete mode 100644 ico/32x32/insert-link.png delete mode 100644 ico/32x32/printer.png delete mode 100644 ico/32x32/qt.png delete mode 100644 ico/48x48/document-print-frame.png delete mode 100644 ico/48x48/user-away-extended.png delete mode 100644 ico/48x48/user-away.png delete mode 100644 ico/48x48/view-pim-journal.png delete mode 100644 ico/diagram.png diff --git a/ico/128x128/configure-shortcuts.png b/ico/128x128/configure-shortcuts.png deleted file mode 100644 index 6046a62868f3ab32adf04b54d3a7a5915a98ac52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1713 zcmb_d`#aNn9RF^OV{R!O%B5Bol@O9!rzVYd4kIaSFKhWoSUa$A-^Lf92ct6kU{rP;-z0vMk>IUin z0BE6(9raO0${N&EmE3$Ngslvqcpvv80Ikz#Qn_&m^+$zydIEctS`7f*hy);OB}y15 z0RZ4)@P8+i;&uP)wPci=sV4xanxT%m_$GqHg`5l{2}l$OT#XsNZ45d@~-4#iq8@rK|d0P36?f0}a0?yW?}Z{7kQmMl8$Z zd~)*MTnH~;BxRe;TOSFPqo&~3t*tsB*~!e)bNIALb1J39`%EN>U`jbRPZwbO2YW27 z@A_l5-iN|!$x%9D@eZAgrv-qtgi8w@dxeDQv5V|VgpRA<3v4BSwVj}Gm*kti&h!T| zQ`!RSVnR|0MB66M_?cJ@!K`?3bH-DWN|$bX8ApRT0pI?FqffNmsLZA`lgP5^eI03n!M%)~=uS+^T-h8a z6Te_hu^N5XO?-rP&Etc&u$wXrcV?3{=*OFHS)~C`Z#Sb;Yg1Ai(etr@BW|(V)-HaakXu(aX-lXR{;dNft6*O;FA@SyB(KH<4?%ickv6 zhRFKr6N|B*jG7ii(pEI(uAGB;EXvJUBc_Eo$%1iVq1=v9^r(9OspJH(zi#)4B^ZvV z9qXf4!x3MP4cUbxfLkS%r4hGj*soP?TnjRGa27-4NpVrcUy#v}FXyHpuSf1AyN=N> zyYs3>hIT9H5!$267fI6=#g=b!g$sIJ-HjH5;wfz7BV+u^-^!`XZLaY*ha=uR49LX8 z8{-`Gqkf0%IbF+%WiaI4qa*cGeGma7kA21kf2=O=!&rL{ z!nRi*ZZEL-{nla0&;$XkH_15iF-$+sG!g25qb z4xY|wWA_EL5b0Tc{-iuz3F{qs6>^%dSc@~3Ckaj!s%aJ}PTW0(PF9`|?7Mic9wnmv z5Ncj}WY9*4yF2>Hf^X}vY zg6+7F&9?w2=Y%^ksgP-($@HN2^08qp%`YG{np`h?>5z(3nm&G2Q7<4s!9_YSzpSDj zGx0-aQQCwX>*yQP*&jW+v%7#zsqZ44LqFhq`4Sx-taqh)`^*7VNrU|}mc%C$9XOe> z8iu0f7SE$+s|JSoFQEXKdM5o@^|b;N_U~rpa3~6(;hvYg`X;|%ccHgEk@j>ReYL5u zfHHn0ES^9?o}>i5iLi0ZsBl!!Iw;#FxmIc^o3l=D?(MOtzQYSQyia;~O8fRTIIZI& zjFfJrw0i9oPVZz{KmF4nENOaI^MTiEXPdLx51!65`(5i;d%`s*-C8iuH=6M9Cr^+T zW|Jq%jL-uGZbz4y_1B3u2j`}y9Xz~9f6t>$-=-y@ACiDO^1c2!9l?Q$$&$S5IkZrV zWF_C7DQxe}PXWJy^5!D&f#(m7;_>+EDP)@)A^Q&hQDp>OFD{8|bWCX-n zUS6Thz~+E6E2VW87!k#+_h59NoR+<3X~^RF;||2$I-YeOa?167RjDgpuF{_J(BU0D``6vot16ezZ;7tmFkdakYx6HkQxRWd0(hU< zC3Y{oEaLt2W}jcsqClA&FPD5Y_Sj7T>5shB2{V9 zqE_c01S$JD@pEdefbzERR6Jru6B58n$tBNM9V8@q?&#X`p?qWDuhrqc(pne931tLh zfENgkplkIGOx>E^Y2r4vK0iZE$t5FoTkS(-mC2Q{WM658kBj)HI zO3N!MQfQBE#|}e@mv85-=Cif-K%DXKuxXzek>New71*3P*I|8P2N4`nW$)>oDj3W3 zUDrkHS=}mMnRIJdKl?&LfA$oVk8B-kpdgmH@?W1tv=o(3P4M`s|4}_T)sa`fPE!z9 z4Qg)CJQ}<0Dj|2z+TO=?qfGjTc^yz|1=||;RI<&2ajde>L0moHBl;s2#(q*O+_Dzz z;NzJZj|&rgk+1P0OBkSn9I%+Gj2`O;JBy-RxCI_1Gd}LOJxBJpSU94LJOZAcP*Fd* z9V{-_|LSLY3((SD8N)%R_8U<*6Ammo^O{tV13jba$1H7Q4+p7_*Il+PZ`i6&9=||+ zodqk;5xr2@C>Do56I`k0fc@f$%5SvtB(p{-4C`NJ=sFYM81_-_q#UpQ5Zmaqs`z2p zi)Sv5%GB3tbkk_1R1hw8^cK%Z>%M@mP(4J8_Lkg7#+@DATPNK5Uxkg1+Pk;9Ik@YW zG=!rAKAHl#-}BIh+@tcv&)?#O(nE|+?yrA_N*ZyFC`(Od)kAcy3@rM4rx>-w6V?a5 z-i?j;`~{7DQraOE8hRcyDk(m{4U_eUYe9)a8HWwyMwCpW{Ci1$fRbziM$8l5*m8cp z{j7G%sH{Cnv98EY2g(;3sC**H*sYi!Lzw#dK?TF zESX4b3%>4!`7%w@QBZ2X+hm8+Zv8E}am4?22lYM6J!h_luZtGnW9$27q{8cTPgUVr zPyBb2K-5&^0|3e!viv!GPL(~jw-YB7Ju|~KXp@-1h0kM3y4pYL7H{&0lYt8SjNj|I zZxe&Ytzggj(C@Gy?vSAHwPxwEW2+06=Xuvv24o&HnN^}$(q!`H4DnZo*-!Ssaq;ON z!bn6C7^B}hH@+axCS)E@p71qLYAr~Nn;^V><2+i^{s~GqmcM7LM*cp+G+t;?Pr6ob zmHd_bHoj@PCE>HT5nAb%tfK#8SiY!MOdGscG@s7nN)w8#Z^K(cPbwTQGq#qiXRRglBIPWpF@IM4|B^uX-G&);=!EJ zCa{<8$WgKhnRA{p#49=jSDtT4AOQQjgR(t}bL#A|B>@3}Q~LTV#pzP?ea@)Mn(AY1 z&ZpYjQv#CB0M4JXyCzZ|zHW7xV(5+9B$--~))&oMvmIFlb6xL^?HY96>nuhsALZQ_ rD8>}cdP7GJR;~VRzxt({A3ES+ACYti9Ro{n_eFq}nXM@W?VJ1$UfB9D diff --git a/ico/128x128/document-export.png b/ico/128x128/document-export.png deleted file mode 100644 index b7891a130a02c7b0df4138f849144c4fc4ddf4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3093 zcmV+w4C?cVP)tJoN)a00d@hZ*CU7>`;~pDgZ2U&)efRg5Kd z-=|7NwMG(coqOK%o^!hekw_#Gi9{liNF)-8L?V$$BoZk&GRcd7f903@U7bkeq0xWi z#4i>e^u-VSLI5Skzi3Rj03tx&D_n$JW=WU#O$(bKr%gX`j~2QYaI6?N3dv{ka7|`^F9P2h3W#ThpTM9ae~i&_c@)fJ3ycWD2)qs6j+Ys zz*86naF5#I8k;}cxLXO@H`v|VBfZe!&c~gppXYokz>J$fN9~YRf)75YvmGcw%Xosu z`8trX_CEe<)@nR`W|QiXntv`+ zrP*rRIYCP2qxmielTexx5K>*Ma^lTRuDpMlG%N?r7AVxuA4JjlR)PnlbP5nE!HKh* zRF5nUDM5?fz5miXpOVh05==rV6~M8uW{lyL_lA|A3HmsVt%Im4)t8E^1f?>8qgXgx z9b~H7|scr%_e)hd-S(bx^q+xCZW_N zAY@^!#t+`wj6F3NXaN zT9xB(ZSci=m+5Y&0D&if`lsf5D2fu4-UN=Ky0*yix1QnZxz7g6L9@vds?uE_yDUfKgPy>p>uN|5?DGiUyC4i z0VC*cr(8XEacuApy?m6FA2&cu@C5aq5@b<@IMAJ*fziK<`e9ic&o|dyAm7CE$L+Z=62L(sK=K_{1f=k$b@}2={jdM8q5e*x-{0 z8AA4L7ZPD%Www5}s+0=Q+v)Jt+xHIs@^f~`V}oxDpD}(oHSo${pG$OLA&_8HfeaF% zcc+V@GqngxrvMKU{H2qtLGUFAJ~sFg1RtO6F8G?5W8(*0$uRHlclxNn!t!h^f>N2l z-cE;W?_8q$pV7guzp~Eq$yE?F?w%mKF^*rNg9;WGiu-G6?ph$#_?Qw3KttU8GO zJHCRTiI8Skld24Bg7nr~hwHq)IFn9R39O~|vG z+%Je*PzhvcaO^q=CF}PgQKT}RMNnu3=}d!4k4o&EcE zFv;6MNz5eBcK$);ix0M&54dCXpK0Ek^%b#3^HEdS-w1k;;4hzA%>!d)UlNnvHrmj_e59xBuMZVRIT+3g<9UtOfPJudjiSoDT(DC^yf zUkO@0JHSbDxp(bcCT883*P6P2cjmj`-<|mqw3pM$d`Dq!43Ps19C-eS|2@F)ap2YU zf#AD--vv$+Q=hShFY|rB`qvE0z9#Pd;x~yh$ma&ZwE}K|IoWp|h5!FQ-6(oJQ+52gT^qQBg~)dhm>9c9I{j~LAJMU4YqW}%X~+v zZVkI1QmdFU(9P^pcl-XXD+q4!a%n&3-$^V1LrARxB4oX+u(BT#OTZ|qc9@fyi>!w4 z^qF_r4~Ysejs-gf%EF60ij(<{r~voEUosnBHB>C33A`T?q%B z6BVH3Otb*L_`@gP)p%$}MUf-2)GAkwP?U1p zu;dC+DEEDrJJz}O=llQf{X8@C%sj6@=9xcco_T6*X?}!Tj2i%eBNpc{mk%TPKZ9}{ z`mY8q?S}#4XKZm5dMFa~X4GNMML1{gcgXksXCPz6*MWycQGZiA|10=g{sAt&?m$35 z0P42)T|YM$f;$TD>+yP7PwbHHvcMQ!4NP5fbk3Ks6=kKRq@@jvzSbn-FRR#`IHvK| z;!@Kc0g}Mt71MjNMMbWShL_k?kS``pmcs2I1wyhyNy1)+4nk561?4|%W6E+Iay4GO z=tjDF`%;J$S^z7=pdsrA@^ z%#s1Qz7WDwS#RB$%!&0`;1rzCF~H@+gcA_{@Gq)EW0;3d1o8+d@^uN?as&2j74U_V zz_SHj)gfQ06d`W`mTG<=2?O7YDO=9ZWlNTgi!z6%zO}@6`8(39IH`ZHWs1?O07EA* zN}zI?9C<@~3kcn(J@x}_!^VXTARRiXL;!s-(m*8ZMEdcM`vDaM6kt_%V;gpAj<5_O zK?yu_;MEPUYMh)^ zsDAOdez#@<0;q`oD2^TaY6P`Dh8~+5D{U#97-j1SfmSx^(F-a@M}^&-(ZO90P<4x$ z3J-_MRw6$z4GZd&6jjJe&usM=GZy{$O_GraAMBgo%h$QxX-%R z1=dZw^krjRDUdmaA3xjjENi6pj#o&ZJ$?k&8Qt86CNd->bq+2Rra6C{K1dFMmp%wR z-leyv2Zhr%_d?v+eq!;}`q7J99VK11W(L-4y7aprGmM`{+;8e4LQm;W2FB!Qe&9>y z&g>abzUj}ZW$UjDl-9@5MfgHASY^gwy4?%7I{CSx3=FPDb~hd15xAiG?Sn_GVFFLL zR-1P#=2dc9>pS;LF(E!D*bHyKR(@|aPIdrXZiNLb2|@*41AugwwZg7re`Pn_6Fb@2Aew{fnNdBp?3J z+t*ur8)8XS$G>ySrb(}5^~$?>FeH7rFVs&-J&b}WsF2nCHBpAK=bN`H!E?IV>`zis z*55Aj+-P@g9pn%ZnP%kLnl@bf+_x+NlW`)a@IAR)MA!TDuC%< z^vapO&{xo?ZY|7x6PYBS>?va-D^Z>mdl8FlTve12;^Zh>x|-@R2JgXEH}RE6qL69w z70%ZPjO0^D^?rd0K*@$~U8VOV1%#$K#1 z<7u5(XsF(T!?%kzp>oC6Su>K^qAdt;^$1_%xmz$UsRWAZuoeYdbw=!;XHg#M(LKVf z9KY%>cK+qWsf30Ix!D^Qwq4Y6Q43vBIkWf2Xi;tKr|enl=P?CPI@vo;8aNE{R zm!GkMX-xHs1J-7>)MX2qL`qg3(EU(!?n*Sib^+mCyI=Fd7yN@CEp z_7_a<+{<-x1JxNQ&UMPmMBcf=VcB3i_ru`r|8&7FlL% z6(;ykmugyLOqkAz<(l5nr+dpa;JZ(r=OAhR_O5^afT8*@&`qp6*`#(FTk=Zu-Sk{ZMClo;ZOO_N+IC|cC#GYpthZUK z?g3oMqjS=>E>t~Z?k>|t_kv7UtfB;kvsEr4C6fHd10<+*)9KBkzzlDua?mjy=$gdDI^Wqs-L9ABEW7S9ifK;!V4t4Rb0#Xr zo}A{-M40wR0j~2~G$62}i}!()2f{a3| zGoD=4ACfZKjS9VCQIYmCKIukMh5N5DQGXa%_MJP=D~6iBQ9l5JGp<-Aw6OGM|N2O0 zXt&1b@$&1Fh6l^kEU~|4G3j)(>Y5RY!|f|nouBo$NwPyf_ia;X#3|l-D4ciiPq2Yc zv`%2^obxQXv{j~PDTeBd+099(7uq%p3Jran1yiqfGN!vMt3zF2PY`Bs2It{?u4OtR zKMJ4A;IR`9nr42=iQk0G$~^teJ&cZnB{<|Uz|>M{HxK27-5mteg^oekdac?dh4{kUHwk8=pNJmtR}g@9L7*F z-dt_|`&HDBEMq6JZoC^$ceaJX&nnCuz5Vq+`Q)uNE78W72EJboJ z+3w|zXPqi1264448$3emZ-Fgq*5ozMzJ|}-HGhVQQG~kzZt$b-e~m?VAe%CiJ^|8a z@BbbY3agD&x1Hi?+l`9zEqD z)DfYf&KiJQ*Z$sCTR1ytJMY%8QswfMyfXh`3#`jlA=fTfi|DNRZc&G7)lK zSap64@CE!fW{@ZIk8G2P=@R?6nq#jM5EinNtP;?i4L_t>{B4LJ(tfje`LJlbD`5}6 zh>lODjj}`S4Au-v4?ekFSh_T^0v@k8;XT}`6i^#e-zmwlBzb+A*xgYP#uksrpk1hl1)FL%lVRw6+_y8;8DCoZig=(5w8&LygDlfr3dXGfnf zaefp4>S=nT8Y;;OW(uvIES@{48S++DCe{U-=*3bI1xzH_#h+U|z0i&!0u#IK1>UE$=ivg zKTGxVlIGe#jr%tAn$Yh#*Rq9&T9H)$6(~pwj`g_l&L6A}LB&iU0uMEy%19pxj7c#E z9l4+_hKxcmhyuluM^O=Uhwx(Iqrb(^Rlw}3{N;L2G)<6&Eoo(#?bTD25E#{%&> zYNdrK?agY+J4QUdJ?)V+l^6OCV;_Cq3*hl+&eYjq9cg0oNW)4)wm ziuje!)L_0$rQp5~j<{HtnT^{5U<9S;h^}Sz{polit55^Hd5s;~vfa+$PjbK7Su9w` zP=~5^#Lmgd(zN)q>rrU?yt!poqIl~L;QNNUjNTM3hpTrhX(ObHhwi?jR&kEoIXHmb zcv)&@pBC18)KBbr1dr$?Ddw!Vb!z~!i69f91Ti1-Ad#HG+R?Uys|S)peDkP&P>kaSVcfaHpR7!oazO3fFGXuNl9e^3wxJJ)+`9udV#O7 zxq`#vm=1~7AP+zOJ7IK_L7ru&>P*U2e3U1C4!*U!-8q2;3{O4+A~f2BV{oEWlG`B1 zeW^j(y%z}?#TU8ec*|e_fE9fVH7rm_a7E*!Q}MpfGNCdVs5Z#yT%!*C9m6;X0G!Q& z@tPD~ah^1@JW&25_4e<}shUJVGA$&rkz6Gwm7f9tIJJL}zh_Em#M%W{m=Agj+C0DI zJx1?kU!9(6IVOnS{TInCq9u|AfQ+$-HgmK*oau{Fm;t^#(&q1dK^k%DFEZmBarJurRg6d@#m6`X6_>-{}AV diff --git a/ico/128x128/settings.png b/ico/128x128/settings.png deleted file mode 100644 index 5683686e064fb0891feced40cb49560ece3d2019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 zcmV+_71ipAP)+ZC_U!P-?(EL&%uqb-%7~m2B)ABVch(k$=9_@M6z>$`Gq$oFn7#?w$9{p zV^CSHpex@#xjb20^0W1m ziGDvM3p)?s7{^zH{E{9*C0j(ksWr2rO2|*-3*-!8tN>xW1639IrkQ?zn?#_L94iwI ztQzvQa&cu=NmR1aA|C)e8{wM#)ldG^Jb*B9#l@=E_-^E9uVsFiQ1@BJ1K26Rw8+o7 zSoIozdgKGv%fQU!AQNP&B(~%W=cgd3jFRZcUyW;gWq5QXA8=U)t^oP<8XwN&$8yFR zVZI6oDW#s~!sl32y~Zy`ex96)d|RyCMv%}(JgzE^vx6$gH??L~R0;Wse1Tl%vrfhY zE3y$JYPb4CswV%fvdqg<3KO{J0IP}oTo+!Gp9k|CU@`%1c;bW|$*(erGbLXlNEs$F z=TnmWtm5T|33Z>-Bp-0x2;%+}lb>_3>NS2j^2-pkJpMSi`;Um5ZN$2)?63dt|&Ayl$O@2o!*@Es&7xSm*@%o7qY7eu7M;!2w}{vZ7Q@8SdR z|5+4a(}fq}GxzPq&YhP@W1dU$fifN-PU5CbzGR)5Iq-c}MSj-nP)ZSoA;K_3Fdicq zkMPq!^^>^%x@%1?8vvlw>EKU4{>MVuxh5a5$N?sk5MDFVm-BIrKZywr!wG0e5z-Lh zBt%G~<5cko2qD;W+pR^HOu~*GZ^sSSU5iH_dt3?^=L$|Yg_Cr_S25Cl%+n8Ny|P#f|A;EE6bI{MuUG2f@42!yse0(44|rz|wX7|qI1O?js8 zJf&bVm#%Y4ouamvz5^7%Xf)I+0r3dt=H{?v3vle%ap$p2;J6hm6lz_0v%4N|wl2Vl z-XyLUnh9;>^32}?rBGTc&1}kKKA4WdKC}AC#9aYqW@bPL0i`ro2>@VrX4ZKeQ&^vg z5XW=KrxX}3_wdG<#kgMXV=a(RA(9UOXZs_?h-UcynKJ;T$@}?6;~}WxMU?u z#Tk~X0P#a%vKLYezwt#N7$xP?CZ8p1SpwMse{4d&s{X~^#F?C~)pvh}0r3@WhAB0FsqYOn{L*>#^ z*?{khq-{uAu97=Q2##F*%Xrt$AC&sb!)P?Z6HojrjvYHDRuF)I#NnU;8irUN46I)D z;tK1#f}=lXbxQNmJd>hNlOR;qlp`LwKt&8(EfC#S~*?LwH$J=asuwE#@G?C3r z-B;XCtQ?!Oz@qJvMIKh;FwlyrL}#0`z)4y!7(R`18N`Bo00Qy!3Wv!u`*N z8V!eNwL9=U_tl0eN^JxI_K9KBZ=u@-`u!!LUKm3`K8urlUpn%kC7-!+lDKlhjgiWc zMB$<%RZai|!36j0-G`^2`6fPe(~bDy%P&W}-G=9R2!a6f^YeK6nQ!9ZfA~lAdJ9U6 zR~1q)C1_7w38uCY6cvlI?AZ5xbZ2I;-0vrA;&{;aa}U!`#w6|t}*$^8lO+{AjWSs`Kgj<$RKb;BpQEByR^2Hjl*U@O0`ztJE;Jy)*AwQL|`ySu-Tj+MXf@bN+PyP~; z5()^!r?T9Snn33vfP{R-9OK!fo&my%2{OgR7AZ%5KjYD8DoSAQS2RSjvaGeTHdLW7 zd}7#{nMwO8AYUK9DMvn)JcQU6gyo-1endugV~Cec<%A}g8dK%a_rov^C9qQf4f(12 zg;3AhsB;8Sw%PR2?soO$15%PFyL@)#sN^AdnS^|*TP=u5URIG)nX0T_EfW=yWc338 z<8if0V5|UPye(O@%+rxC<_NOof>QX+c(X`BzCM0)$yp*Tuj`Y%gp2ja&VeyN#PeG* ztIvR_3TgBuQB_Ld^sZo|OkbNLh)TjQ`v9QnH__>I6N}f!Z*gpZvOHg$OFA9iCFpYo zBA$ns5S|;Wmt`q}ij=^96=1l`DWFu7%g7QjG^66j*$NC&WCSQW5uPRgx#>74k55rF7BhwQ$GDXhN?5_7!j$XCiCULABO z2Frt_jX-KFxAARn!_`+`jZ3y&g1Na_%%7gecfRvoJa^zgCK-$ykaSEj&g=8N^iWx- zIIPCqYl;$30Ks^Srte$*UJzh&TX-1KM*MTZF3UU@@zpc{`T$L@!%K!7C--?o3!`Y@7S>e_uab>AH98#c)g?q zlN;YT$;+*Xi*jOprlF!pY9JKTC>(@gXnaSB+fT+s2ZGBlTH{-huaE7SfQ?`py;%G?B2cGYU)7reBLb|xf!3k z{{gY@s$zWxW=WnbNkOqZ7;yIvDpOBwL6c;!vL5a)i88e2Z9nk=Y`^wq;jyr?_@NCA zw0!&590R~L*Ia|g9{;M85CX*+zA5pMM7az<3`3kac@k&O_OvoN1;#MGiX;pv_0oq! zfnxIE5nOc5ZXE7~SQt$Nk5LBOXWgF51Ar}?w@Bo#2CL7?c%FyNn>V8uD?na9W;0Wx z#4m=#$2oDl*a%F_E1LqVcl7~|Tfy;hK@vA! zJd6H`mmR03$Eij4N3-5IeL7kHJ8k1C;Ixfv(Dh(2P{_!OPN~`=+&bS9W}3l|9=#j> z@$Z35s(a4uzs~|o+^yv{IB?*gk=1MRZ3(5eaW!4jkYZ`6kK?buuGJPL@uYaZS(xtx z0w4~{yvdo97(Mhc43_(tgdqqN$`dt4e5-z9q3m;Zr|uLep1SMLaKrW2S?zi)EG*!m zzke8q4!w{Tn#6h~$JNAovkX7S-4nHpDV#TgY}WXm=b_W-!Xuu-b3h;;O7bJk<~N-F z>aRbKt#Ugb&%G0wIfzYP?3_HuUt z;|kC7(CKzTI3-|rd+_8-;~;%VgYWOikt4YKQ+x5+Yp)f)MWfg2;n`>Z9rt`{UsRwC z`}%w!Dynir$9%_6U*($mrEq*xsNpVPM%MEPI^8aom;2E(@g&g!Nok@#@=ck%l6?K^ zPoj6WhuinuhHcxnVQy{?tyU{}GN<3~qu1-_|S7@jMUhP8Y*LA7Q8< zpNM^m-n6=af+ZyBpkK2)CrgfUaLMF$~r7E?IDW<*=#AJAR!NQ4$cDs{4CCsldGQ_GALPx95 zz&zGhwX~a#)!V9q)3bpt-{TANu@F1*JP)0AN4T^sEF{O7gm6t+y{6MDtv*L@a#8wi z;iie9j{KxgLeS}S0El%;hBPaycQJpI@Bl2?vmzhRlFutayVd3gP29b32Tzq&uOxo0Sv@z_ zG`E5Qxz?(7 z_wH67*Gwk_*sk#@AZ7ce5zDW z(NLf2tW~Sekp5zkQC1FR(Z41`4Q)>mGHwQTh!Nghxc`GD(7qRt`t43QGF(r}<4 z%_M=dP4d(+T0<<+%g9xRR$o9qA!Ir`fyoUa6_KA^8MuHD0-slcs1$2?8&^9eGvae) zRB*d3yrMOJ6%ducB-XEuZCqQccZK6tFn?HXjb8-_A@Kc-CzyuS=eYZ-wsBM4Fn0I3 zGDWbyDRi34yfTQCz(+71XP!b<5HA(TmMR|LaXJ2c#Y(g zS3CJUD5VH#`ogLlr*8z&o7j_ArJJXSe${0(8o~3Z@o&!>D?q#1{q|tAOozi^GV8TO z{#yvtZ#4Fs3LC#p>h$T8CpTWO=^_AEQA#BxsIe+QJ$Rozdi2QOm^QHXK|6Q8>)k;( z+(oG8_NvYrQvoGm;5Qok4<9~!@LbQOMvWRZYSgGvqehJyHEPtTQKLqU8mkTe5Bfe8 UE^6Z8t^fc407*qoM6N<$g3{89$N&HU diff --git a/ico/16x16/application-exit.png b/ico/16x16/application-exit.png deleted file mode 100644 index 35ec37b9d0e3fb2ebe77af1a87d7c7aee21549f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4$4yrc3Q;k@0`8?~6 moF%)sSG;Bon*8|z14Dmv;WAJqKb6Mw<&;$U;S3KVU diff --git a/ico/16x16/arrow-left.png b/ico/16x16/arrow-left.png deleted file mode 100644 index cb61de83721ed99dc9658a2a5f1b426785787a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4%5rnG03d;i^7X329{JajJ8i|e+N-MOb?Y#L|Y5B<7W=k#+E-+H~LQjBM8m_DTSRBpQVFZTAO zooU+wAM?9BncTtCF!S}U(>ka5<}!$;Jg&TVv2adDN0`#4_be+E;$5aNcXVXvDpjgG zu>Sm3`(OM(Q^z)?P1fI|Z4LV#M})>R^4xy%ezmY!YtW8_70X`%z0Bb0>gTe~DWM4f Dxn7g- diff --git a/ico/16x16/arrow-right.png b/ico/16x16/arrow-right.png deleted file mode 100644 index 1d5e3d9d4f8ed6e145222c603db1131fe34341de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4p3=F=PZC1VVanTF;I`>JIKtk@PCwu32p4hpnZbA$n(;DA--HUdZZ4M5- zt77@z>b+G`_L(=O8yrJJqZz~){EE&!e*ZbHd6Ulexy9TJkEdKJyxsTZ&z{F~cC!{t z37S>%b}Lg-&u)giGj9~0*IZ5CdGVtBtebV`EWg_RlmE%0xGiK$#lo|HfF5V?boFyt I=akR{0AO>HVgLXD diff --git a/ico/16x16/circle.png b/ico/16x16/circle.png deleted file mode 100644 index 8d1beb0c5283ffbad44403dc1c3f6858affee44a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4KlWqtN4Go-@nkAsHw8Ybn z=>}7T*3xSX3Aev-o}BPx$-3;B%U)KqU+}48`Y=J|WNv)S{qN6Jnm6g3zop_9os*Q` zK8sPobCUGhuje+c>Aq&X?`k^3H0QJN6Hm5YtGdQ+Q6%&HsQ|+PsozikG4upQPGbr9 z&S+LS&!3;s=kgq;8($dTd9*1zwWx&4I)sJ_p6q=8`}0CS&8McG;T(cnF27l+v`={w+aNx9G6#~_p|*M%bdt`>v`!a RKY_u@;OXk;vd$@?2>=IisyhGx diff --git a/ico/16x16/conductor.png b/ico/16x16/conductor.png deleted file mode 100644 index 63689325e471a60051a5cfb7ef5f1f29ab96bee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1T?JY5_^ zEP9g@BqlwuXFgmnF}pM9u!dQK&xeQhiKZ0}o}Qd{7{pRIFVdQ&MBb@0M4H{7XSbN diff --git a/ico/16x16/configure.png b/ico/16x16/configure.png deleted file mode 100644 index 9fbee62340f9829e7bbb3fc97f7325ed8a0a6dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?PS#50n{Ku!x)9+X8aO95kJ<4me$&_K0Vsy!e12ckdmBqTJmBs#wI67lu l;ko2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4}IiRif_zqT6!jbre1^>bP0l+XkK{Ovuh diff --git a/ico/16x16/dialog-cancel.png b/ico/16x16/dialog-cancel.png deleted file mode 100644 index c731f7ace5a14db15db3425d44e2c831a1f97552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR47*|yIaIU<&R8pcm;-kK}FWmqkC+HLjKNl|OdxE^pE2+ONykXVxWs{i=o3dIAZ zcTFdiGdN9p9w=hV*znlGT4lG2^yQaVc$*$n^G#6S&kzxQwM>A8|7qE^TXLTIo|En_ z>eTG3eCrWx2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4vzOJpmqMiBxdsuygG%m*Tos=*>`T5U+*-zsWHJ_GxW%4F)GDIgQzW>`drHHK| zxo7#^x+{#yXO`sN7CNvx=+%mKucx28EjMw`?4T$P#cN(GGXq8PYyW?4*!s;W`>%jg z#MiQF!(-A6{w^lEr;Y0PUxe>Se-@qnwvL@Sf+0fiV&P>I`veAozXvVL&z+fmW)8RF zItCk|izfyCEM;P75qP)d+Ifa&4AUZ~%?%CxYRAHV%Ch{$-v3_@{&$go^*lEI-uGLJ Qfc|IjboFyt=akR{0Hc7GZU6uP diff --git a/ico/16x16/document-close.png b/ico/16x16/document-close.png deleted file mode 100644 index ebe8cad2169b3e969516ea98c0efa015200d0c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4 kp!04~DX)m(;r;7H7qD1Wsjqux2y`%mr>mdKI;Vst0CxLpaR2}S diff --git a/ico/16x16/document-export.png b/ico/16x16/document-export.png deleted file mode 100644 index 42060fc3a9f9a3d8acdab2fb66c560a3847b4c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR48y?gekoG^QEykGv@ znKNgOGcz%XoG?oG{Os)RfB*mA|Mva;edc@j?s@&-NpKWD(2=gTtdfU^htEZ_Va}nN znwlUa`os*w(lU0CD OWAJqKb6Mw<&;$UjWM=RH diff --git a/ico/16x16/document-import.png b/ico/16x16/document-import.png deleted file mode 100644 index 48097aa369985651fba326a32944119109ad8fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4aolLz5}8MCZ>p9s7alal-9iaKEs>)YYkUk6Ww=>Ie}eYIeyvc RKS0+pc)I$ztaD0e0szWiWDWoT diff --git a/ico/16x16/document-new.png b/ico/16x16/document-new.png deleted file mode 100644 index 3c7b13cc50f5e0e0ff74b8b1e5f717ad64ad7f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4mdKI;Vst03%*Qf&c&j diff --git a/ico/16x16/document-open-recent.png b/ico/16x16/document-open-recent.png deleted file mode 100644 index 12d9726ea3ec87c770a9238e58f71f913e571c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=C_x!(l$$!z;?pM5@Y7`PW^>5V#CW&t`OYh8B6T)2^+s}~Spla~i zE7~}^MSySlyv<^}9?o4-{ygU0oYQCDIA2<)(N!bDprdMgy>xHh?Qg4fPQMp8#8olz z%M_*=sgc_x#m>GF-Qmy3qx+TlUt~O2p>*;b=GFg>PyE8Lrt0s{mhG8M}|_Th+IXw2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4T;j$&GhG enhBo-1H-jmh4Rh&tm1)oGkCiCxvX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4mERD@=N|sF9h$d5f~!{uS8~Ksy*bUHx3v IIVCg!0JTC%)Bpeg diff --git a/ico/16x16/document-print.png b/ico/16x16/document-print.png deleted file mode 100644 index aaff67f2356d307290ba772122c0bb0e84778a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4mERD@=N|sF9h$d5f~!{uS8~Ksy*bUHx3v IIVCg!0JTC%)Bpeg diff --git a/ico/16x16/document-save-all.png b/ico/16x16/document-save-all.png deleted file mode 100644 index 7a288174d8a5c195b06f93461d98a1283ce4be52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4q!^pWvI#QB zwLg5gcYRXTg04G03tHB_zIWiR<#(T*$?Fu-pPScBJtod{`QrA3$*udjbabZ7Gmi59 o`9|ontxtDQ-fMTQuJ`@=PVLTo%ObT}fo^8-boFyt=akR{05mFc8UO$Q diff --git a/ico/16x16/document-save-as.png b/ico/16x16/document-save-as.png deleted file mode 100644 index e4f0a726a8dbda065cfd1d3ac78e5fbb3903d65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4iZRBKCBfjI@i1E-myCuCEF7tLPEcaNuLTW zI>&obn!#J}=C<7148n3EL34N>a2;T6SROIk#Bh>l-0~^cRLWJ}pUJU~Zg`@$bW73q yxgBqmC4VF&-HZ>FTvzn$-Fc-=`qlsS_b@y8#m6+39?u7Qm%-E3&t;ucLK6TCs*Ya( diff --git a/ico/16x16/document-save.png b/ico/16x16/document-save.png deleted file mode 100644 index 5f3e7777b71ea113255ecd72a4636b5ab3871f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4LnzK-}?e| O8-u5-pUXO@geCwSV`eP? diff --git a/ico/16x16/edit-clear-locationbar-ltr.png b/ico/16x16/edit-clear-locationbar-ltr.png deleted file mode 100644 index 9386508fe9d3e74b4545220c2f74b230b67ed5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4blHLL}yl6P$<-kGMxspzsG z=h5Xg0#5Fqc6?a!?=17A!>21hwtMi+UL$bVcI7L{1Lw|2g|apTJIdU(JSv zftle-scpxJ8T?90C(j6N$eWlpcX`cKxhIc88z%j*f5h0Qmhr%=2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4r+x%%^W(@Bqoz)4xx_4&i0kdNfOwG$D z@ZYmr_3BS-!1*(Jv9hj5vgA#-{GD>?re!(nGTmp+JsWuxb@qHW4qY3!wYC8$Uaf!N z2W!Ep&owGa(g`o-oNkadsLXiPCUA)9MrmkP$O`?~Qah$UTtDC6Vcc^+iGQtv!!Dq2 O7(8A5T-G@yGywntv3uSC diff --git a/ico/16x16/edit-clear.png b/ico/16x16/edit-clear.png deleted file mode 100644 index e570733a8aeda12284444da7d795fc556d502241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4&;>)&^CW!aWks*--}_xS!Rm_oN`~imcq*jcI)r}S_g>ze zxnb_ARdN5BJHjr>i@0uN*Gb;2!oF%2Gyh^nrJ{tM$Rla>ZXfRDM`!zol*(^7aNLb= zPO-U?5qsI}Wjp`dEi++PY%vbC4ZUhESjl#8vySlrEz?7m1sY1P|80J~>-7?j)X1m@ z6$<*VcE$0QFXp?oZ7;)_U952pR@;7a3piN>UG=WxdoFgOaks<+Zs$%XrUPyJZUKGI N;OXk;vd$@?2>^BRk0Jm7 diff --git a/ico/16x16/edit-copy.png b/ico/16x16/edit-copy.png deleted file mode 100644 index b804d7a981d61d0fb24bf90579fba0394952a761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4leE$FcpMPUhs<(1azpdvZ1CH3w4;UEa-m4qAd=8xm Pw2Q&h)z4*}Q$iB}nkh@Z diff --git a/ico/16x16/edit-cut.png b/ico/16x16/edit-cut.png deleted file mode 100644 index e3ddef14f73628c7d498993540986955fac98f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR40Dd{*6vo^i^}v4C6bSXlPKhSX&R++G{FqHaca z-Q~Ey)9mM>kH-_HhsW}j>wULnyO!s~aaSTaf8ue8>c4gM=@WNP>j_UVk>Ii7o$)$Q z^J#9XgIA{3OS|VaH#W@qELbo-XqMiu+S^iTWjZevk5#bNcvvxPi{6_npwLo~lomaS zr@}{b?zW#%(hOHhYv1jifA;G?qx+W_7BJ=Qd-=Vdwc`Ex2HOWGtM@Z*+4iHbSt8m0 zl4?N1tuwnUpHE-4Dy_lXc(RF)=3Tw)f`@Z%>n^o0miAYhoZcYdwEW=#(+xLmethNk z(p)zsY0{U_%RapSKeJ70OEW7wck)cz>K|2S)ISxK&8XB#wgiSFgQu&X%Q~loCIC;9 Br+NSY diff --git a/ico/16x16/edit-delete.png b/ico/16x16/edit-delete.png deleted file mode 100644 index 21ce6f71c3218ef8c943176a61a60a26178568b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4fuSf`#96nvJppJIgQu&X%Q~loCIDZGI{E+r diff --git a/ico/16x16/edit-download.png b/ico/16x16/edit-download.png deleted file mode 100644 index 18a931b4299e1807f64222d56e47d0ff23ed77f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4J;x)O-b?TMZOC7ER?qE3judOTCC2INK z1%DNkTu+v4oA0iC^FX|}7qfBqp0e*s)t4V!(z*UZ@A`cM3*nQdo^dlLKiM@yLCH+; zqhFEL2Aj?fbB5h};-9*DyP2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4@Rv$M^USGWrvSSmQ*(dWpGCjY+Hh}InpZQLHL5wQ)rIt4qk nI4T+^WV0<4@9^zyW@lj7B`eeY)}`VD&_o7LS3j3^P62?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4F+Nw&R8(>x1tDtXF3?1;1D42xFY= zbTDj-;LM!QIc5UwC*Fls?XG-(&-idPbG`1?GYLI6zudE4`_(gYnto!uK66N@>G@4M zViRYZ_`aXL>}LcwL%{W~&hwtfd#!veut{)M_aX_#-~^_e^64EM41pqdnX2d7OL3fU zh<#wt_jqElpXGCr0xp~Ewf({om~2}2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4R6lvW*IbC}7ngdQ89<$yk{8KpLqw1tEyJJT~N!cxq%p9E~b!fnrexr`Z6$#ax zUmB)w(s3`HoX;Cou(ZuHo%aue&Gx9j0*7)-e_mS9q&k_%e0lRnE78e z*~>iRY}#C%)6)+0ExD`WId9d^4N9LYXDz!Py7%_mzQ)caf35Cx1l-QKy*|{oYms4r z;>!iR=1MMsQ<#?@V7b9$*T7>D!^)g<<(%zD$F+&$dbJPxyV~TQ$eR t{OW4iJ9Uhco=tkTt=O~r^@INl{aaVJsp!1A`W_g344$rjF6*2UngD(_sL=ob diff --git a/ico/16x16/edit-select-all.png b/ico/16x16/edit-select-all.png deleted file mode 100644 index 0755c5e6442f8cae659355ccddbdd31ffbcd9f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmU;9S${Cj6Qd=2AFPfTiI*c2s}lyflMSXePVnfXN4%nzC}QVfUh xr?4ySWXNOK`I2G3f*{+5gvknOn*4GM32?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4uaYrf`rnenl(Cg&%L2jNyw64y{wvCM~I`&yhC;M#L zU3q`@blC^jk3JJ$gyjjD%8>$E;PW9&Kk+Ij^^7)$U)f>L(>|ur-`p_KW8aqXYw2 z_?@3Fp}npt7n$#`-FkaFr-z(}8bcq$yi)aRw<6~~-+qy0Rn{ew+;4k|jxJVJdZzs# b{}t=r>Tp3ejqnFRk1=?<`njxgN@xNAnGk{j diff --git a/ico/16x16/edit-select-none.png b/ico/16x16/edit-select-none.png deleted file mode 100644 index 39e824a95f6098a4540f24f63be9bad71be396e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4*C(d?HBu6A_TcIJUTc7syIIC^<0%w(!TIAL_a_6 ze)>J8{cSHCG+kxGLsiv2u1WLJOI&kz-OEjByF42|DhK-|Z#H=p^UmJD@JPyy%e?DE zcHZ=z_%%*~bLZw;Mr`{kKD_+ma7E!#yL61h66V0{cd-Ya>}tC_b*Dh5L!Xn1U-+|G zv;Qz(o?ETooBDmni-Vb@^u4a*rny!y`vi(p=Uajk=lFakLclCcZ{Yjz8bMO6Y RKLqp;gQu&X%Q~loCIG$3eB}TD diff --git a/ico/16x16/edit-table-cell-merge.png b/ico/16x16/edit-table-cell-merge.png deleted file mode 100644 index 68ea6fa5fb512022500fc663d21da085d9ad1da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR48oOn&RUT}(G#^Bq$06)5=rnOj|H)4rt&D;c&u2;DkCC)3~A lD@XR!nfmhwcLdIB;|^ctcy2>Lz6j8M22WQ%mvv4FO#n-!S#baW diff --git a/ico/16x16/edit-table-cell-split.png b/ico/16x16/edit-table-cell-split.png deleted file mode 100644 index f5af726557c4127022a18c215202b659ffd59e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4+tOHY>yJ|NsA& zevre~Ru%KAKjEw{=!_v-JtHdCH1%ld;qH)ObQy39ye@BN`Z#eVVW pWL}@5%Z%p?6vP7bHTfkN7?R!vDb|Fy>;^iT!PC{xWt~$(69BP@bPoUk diff --git a/ico/16x16/edit-table-delete-column.png b/ico/16x16/edit-table-delete-column.png deleted file mode 100644 index 90a8a76f838e38b386f755aa14500f540f0b3edb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#t6u2?wq*stSE@o}eMSYwEW53YARq3EeZhf~F{FO?Y*(=-j!x zH(i3+f2o`=mb)AgD%#PJws6tZu9+KIb|gI5uw!1dw&?lUOz-FOvhl1q7#nkF_ZGd~ zx6^hji62wl$XHkWsG#d18&BL7IhV}XGPf5zef>Od4&JHxa2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmpStVgXJ=b$Ir8aU*^Fcd%MzzKPn;FD}2F@rQ}x=Rzq4 z<0t>?mnkf(_c@)vtIZ<$vGVHW76K0w3YIVjnIu&t9$;YTxm^-jIDcvj&`}JYu6{1- HoD!M<(!^#2 diff --git a/ico/16x16/edit-table-insert-column-left.png b/ico/16x16/edit-table-insert-column-left.png deleted file mode 100644 index 363501016254d016e7b8fbfb1915cff029586791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4G&ifhvu0?Klhem#GJ@qonP%=}ZXQ9!=@ z-A{fG?p_fzVrHAW_+&`4TCwnz)&|G8V{&ucYvmUo$gy4!wNY&Mk7F)dE=9#>yJ_YJ zDH_W&muw^YPmGWi-q-?^P<{jGmk$NBn3r_Pl2+ye9hgQu&X%Q~loCIDr> Baw-4- diff --git a/ico/16x16/edit-table-insert-column-right.png b/ico/16x16/edit-table-insert-column-right.png deleted file mode 100644 index 9e5d7d3da99a62b4898b93e077df91869e890298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4UH|{z`qYF!@+UvcFFgNHq0mjl^#z;4=iKXi z|K#s}_cVKVss5aVni(>}AN~Hy*J*ep$)6FJ#M_Yh@BD!sLRS-H;vCqTt$8{=9eQ?l zwq)VS#8M-^e}eV(_2MP9F4c{VjR$|--(SD`BCpa>hBXZ@3_g7QYJ1?ofq?y$pPw~P diSmkNU|4n~J|m`eLNw5&44$rjF6*2UngH>la!UXJ diff --git a/ico/16x16/edit-table-insert-row-above.png b/ico/16x16/edit-table-insert-row-above.png deleted file mode 100644 index 7edf814933351707a620a48f4256b7e033912b1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4_yX=S2oN?*DTXvnQ2yJ@7lRusC&hX4~F| zwGfJ@_?>o@O1TaS?83{1OT0jYzhDX diff --git a/ico/16x16/edit-table-insert-row-under.png b/ico/16x16/edit-table-insert-row-under.png deleted file mode 100644 index ff42999018bbacc313e5dd1cdcdf6a5b31ce5f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#}R->j--?5uvQRWJf(vB;Wb!u+d$up!k z7aclNm2#olKVLk$aaR56naa`MKWsiA|HpA-qN>?^176v!Sw|ZUpD^es?DchaH}&7f zY@FToL2<)6EtXoJ@2_8^yvyceSoQ17-qN@SDepdKs_L1Zw>{~);<=uys7X}kg<8L} cXO}-_EwqXXcA58aBG9D_p00i_>zopr03tYQKL7v# diff --git a/ico/16x16/edit-undo.png b/ico/16x16/edit-undo.png deleted file mode 100644 index d9e6dccbf2f99f9f0a12b3448e247a40840669f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4M~c`69#Q(t1hZ0fWhsTgN_KVzXed zO;tMAkYfINA%oKK8=Wqbos?KDbux9JNZ}+C}RbG-=#pcuaS)hqaQDf~_ zu>vNUuu#*&b2IO;8N@%}E)aIwk!@NNY*FJcBpJC~h){dUpanCt?EuWj6-emKG^Swl} v8~26O#O$>nYT1JYD@~5|+$!HtSIa2(Ecv)?P|ads2r_uO`njxgN@xNAeIuXD diff --git a/ico/16x16/element.png b/ico/16x16/element.png deleted file mode 100644 index 14888be00d505df6916be485f333645ec01b31cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)?ZmG?3hYNPlQ zM6i)`VyTVD{)SaoaGS{sDC}ZkAq4yZX~bO#`UfQ8@jNzp5_S{TMm*IW=H4^soXfz! zM2u0V_1KD`OTfU)GD+vnY$~Y$o~D$(9Pjt#LzZRNfw7r=bN61S(>derJzxrq^E}^L zt6=f+7;s59hr{8A`mW#a_kcY!`&Cs{cQhJ(U8P`PW-ovnX0{t+ytW{|YG%7;c3aYR zv)LT1v|whLyT42+eFSa+uVRc3fVaS%l+uB_??}p45=h!;wOU623z8?mb2EFEQaS)A z%kl^~yDr2ZWm#URWdo0ahms!Eb{dVwCh&ckpivhggv*jHh7hVH*{?$gpMWMe(kxs;;}Ale9mZ&3;PSm$U&~IX-+U{^l?IfBXjLprN$tqgciO0000k44ofvPP)Tsw@SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeEE1(RC1Jbkdkz0Tg5}@$_|Nf62thDaxxDnmQjSRO{*D7@~20>O^n8!wNhu^A~%) zeE8^H)hRv8n46Z|3NtMxUgG2aEcn=*p_m`Vcq}$ diff --git a/ico/16x16/folder-new.png b/ico/16x16/folder-new.png deleted file mode 100644 index 81fe83d54cc19ddfded5b9e65a3fcec9acd9cf7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmpZoMb|NqxtpQamqs?&(`E`z_ne_(w4eQ!HEySYEUYE%rLi(I5D4>KH!(6WxFYztNJKn=n|%?Z=B$ZVlfE*Yjag8> zOu(7FVdQ&MBb@ E08a{CUH||9 diff --git a/ico/16x16/folder-open.png b/ico/16x16/folder-open.png deleted file mode 100644 index a191f9979e659f204e60b017cbc21490aef75441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmpZoMb|NqxtpQamq>Z9a=mg^;M$Bg9V=lgAnZQ#$jw`b7Bs zIy+SU{r`V|L+a^iZaGCK)*XGtR5R=2E{13NK@3L|4S0AQI9-B-FF#;lm};#cd!g^! QGoW1zp00i_>zopr08LF%CjbBd diff --git a/ico/16x16/folder-properties.png b/ico/16x16/folder-properties.png deleted file mode 100644 index e5a609d4dd648d2cb9509eef46fb34837a90aa8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4{{OGPK210JRHqT=T?T)D|G@b8``&hTc5{Dx+4x{eLgLB9 zgoF#JDJfUJe*LQJJpKNjN@HbaAQ0xeZenC$a7FNOk%)K#H~S(+%~=z#Cbcxa-8KEc zq=bY7AA6_qp&KV26il#CHj+2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmpZoMb|NqxtpQamqs?&(`E`z_ne_(w4eQ!HEySYEUYE%rLi(I5D4>KH!(6WxFYztNJKn=n|%?Z=B$ZVlfE)(CR}02 ea(mps$gm2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4U2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4ey$2BuHyP0IVd Ru;= diff --git a/ico/16x16/go-bottom.png b/ico/16x16/go-bottom.png deleted file mode 100644 index 490b265c0dd4a72583a9a0b5f5738c38ac6d4784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4&xWlcR@+)`OXX90wW>Dthj& z{MGt_fA@^*EjCdG5<=^C8C!l&WBd2D`qMr0b2}fYpR)|Fct5+&Y;ULGJn7`TRjY2v za9=Ooo7l6{Pc!!GZqIxtj?Fgb(;X(K-gM?j+$R#}uX(rg#Jp90`$ZVG(+1EUhgVz*rapa<%yg{z}3^|B_*w{R_|w)IVQ24p~tZQz{FMabT>D%c2BBJC^ww9 z>eWdBbIB;ClGyJ#YhxMXLcUh?2sb4Cns%(={g*9!t$rPpzr_CSkkgTe~DWM4f!xokl diff --git a/ico/16x16/go-down-double.png b/ico/16x16/go-down-double.png deleted file mode 100644 index 46e2bed31ba90e11edc7e53744fd08c6d39a9337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4%T~GyQ_$c zw6*rc(?wrJ>)LzIx;ps?XdevU`+bJw4EYcB$D(FSCO?{Aa%{$psM(?0L%P5J^Kn`C z`|m%m>6V_8QU!Nvo&L1x7wgqWb7s2*ny^l2P5kj-&TP{&-l>t#yjIFiGQZEnkYF@( zPxjh$ua(7Xzs3fN$TM7c{Z(vg(07J!9&uM}SDiahU2i1UKY#7k*$m(IeqYU?pybcM z=eg|Ij0l%)9_z}D6lO9>bb070SvDx1{1VRNw)o=OYgLQ~v`;#UH?QZ~swK_9#&FGJ zUnozLLIq2K!>27%9hH|%b_~8PWx#)vb%U*azo*>RmrdK$8AMz^2BlwE`uq1!meWDK UH$I>L1Bwg=Pgg&ebxsLQ030T(vj6}9 diff --git a/ico/16x16/go-down.png b/ico/16x16/go-down.png deleted file mode 100644 index 05c690b067951f4fd3b81ab10c4c08a8d304bd91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4M&W=dG*kOnf(QUw3EQ z+jXn%O%Hn4mSZ$y%B4N)URz!W4gESRC~D1=axcyEN<}GY{rlM%e(n2Ta!%Lf$uZ0C zBFTT4W}HpCt@Md$&WxLH&-eB0m2$FR@GCy|n_<;2wmCCzUe&U;+8|@e#y9=>(wVV6 tg_Ac5C>;CoZq98cyEAWUWVZ{}Fgs?t&Hu82Z8OlL44$rjF6*2UngA7DkDLGi diff --git a/ico/16x16/go-home.png b/ico/16x16/go-home.png deleted file mode 100644 index a3cf271c9cfa90bff841ed7a12f9ea174400c6e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)f15pr!XI~Dv>eZHFt=I(wi~NBj)ipw}I%1bv z3lr1(17evJ7U{ylfgl_Z}O`IOi?_?31i|@2euRSE*FGq1j*nfQB*VG|%&wq9~rd_e~LL z{3KvwqBZ(JReSY%y$JxS+5^zv_<}f&+W;o2I#$&&fJg6r`?uEy3B6I0Bsn3OiO2x} zkenD}u1BL$9{|?|)M~ZJT6;rsmt;po9-=6s_x?~sIwYT_)9GOwKJ00qQ3gZ9b?RWk|cp@zIgx6 b{ChqCD++<+ZoS!k00000NkvXXu0mjfC`_?3 diff --git a/ico/16x16/go-top.png b/ico/16x16/go-top.png deleted file mode 100644 index ae516930f03432db3130892873758002d1c4ae25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sb#nLV5d$Ipn}`8%b9FS+Oas;cjc8)jZ-e8U_eBB;A`Pgtm`V#{NR$Fo=6 z^A|DkHD)PDNIR|c$>N>2roQG!sW0>z}sl5AvG+ zuFgz?XVWSzh89BsryB;FMFn^Me5cQFVcXm0nQMhE-cosHAN+**^n}2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4Mhf4maf0Iyg=ZQ7@e+Bu3fTd=_*-~GD!O7t1>gTe~ HDWM4f+OVIK diff --git a/ico/16x16/go-up.png b/ico/16x16/go-up.png deleted file mode 100644 index 8a0d0e2dd9e3e9e30a620706a2f144b09a0a1ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR47>&4rVr8Wy zPb4KorEclmwOHakcXxRIq6XDwgU^D-@_d$y8=uxPR5KhiJhot!c|D)OXT1hyn^s)ss~NldcWUhQ$WT#+LopnRZ)V(V v>$vmpi#WrJUGFZQG3(68p1Apmd=1n4h{)@^lsTROJgTe~DWM4fyY7ig diff --git a/ico/16x16/grid.png b/ico/16x16/grid.png deleted file mode 100644 index 2c646c60d09298cfda66d29dfda1b351667432ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR48E=;Q4^q$I>FVdQ&MBb@ E0Au_yQvd(} diff --git a/ico/16x16/help-contents.png b/ico/16x16/help-contents.png deleted file mode 100644 index 3fb63a165ba81bbc3633bb2e1ebcdbfffaf81378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmV+(0^$9MP)ugK~y-6#gZ{^6HyR^zj>T-Nh}2b>*X$oLwx4ieqlICVM1@5P5 zDuAG3b_hhk&7x_0JRZLW=yto?z?PY9Ny2;ov}~#xdJ*E=lKmF1CTV3v}kO_*nkGqd0DR5!{NZFWInA={qjPQ#_?9He z!D_Xd0_}AM|AktuW>tQ!EW$AC0UyFJya(KI&RuObn{V3f_66_#5a_g8Et%O0=*(ub zXYhN7&&})@xKi*a2!a#uJ-`P13>G+*bokd3%2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4{e?O~j&(-M;dVyIM3TlFRIucuRJQ^MPY-*451~ zuN(^E5NuJtxm9rD?g>jSub*RXy}3X3$90S6yUy)=XVah7`L?Xu`O?HCu?eCTQ%auh zwb!o>Pm@_EnVhFu+GyVJvZN}v=jNQyG_5AX+Xqfm*K_tX7Vf{l|NYl0ac@?SD%Mw# z(`1iGXn!{HjFjMOe}6XZGphybH`S|By~k91FE2lsV6al;9B25n)N}`~HH;D2(UtSW zi^G4oPBEEOlD;;V@#`XuvQx`it(j`J*R=^aRfbg_^IIOwuPEdF$?(`$iR6NFbB{#8EnK4O$+*LFQi}fh&;6-+e-0bP|9t|sSp4F diff --git a/ico/16x16/item-cancel.png b/ico/16x16/item-cancel.png deleted file mode 100644 index c731f7ace5a14db15db3425d44e2c831a1f97552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR47*|yIaIU<&R8pcm;-kK}FWmqkC+HLjKNl|OdxE^pE2+ONykXVxWs{i=o3dIAZ zcTFdiGdN9p9w=hV*znlGT4lG2^yQaVc$*$n^G#6S&kzxQwM>A8|7qE^TXLTIo|En_ z>eTG3eCrWx2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4leE$FcpMPUhs<(1azpdvZ1CH3w4;UEa-m4qAd=8xm Pw2Q&h)z4*}Q$iB}nkh@Z diff --git a/ico/16x16/item-move.png b/ico/16x16/item-move.png deleted file mode 100644 index 5f8cee2fac088a7dd9e8e9d1e469e83ed40d6b6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4@1xS@$l4cK>=IewvHn_7O^{&WYk4C>oV)3 z|M|21i&EMYes$lIg@+2b6BsTCT+};eq4#svp-;vQybagR=!vqgS4ey3qO#|8w@1*` z+_>4wE3)3tk!Cn^Vb6DS!JTP!`Dx!}ayl71UU<4}OKUlBCid$gsj2@I9voF(GKJ53 upHQ=MgW!R~mgT=**@V8e-}~vkDdUwzy5YTv)BAxgXYh3Ob6Mw<&;$VF>~f$0 diff --git a/ico/16x16/kdenlive-show-video.png b/ico/16x16/kdenlive-show-video.png deleted file mode 100644 index 9135f40eda192d9b330dd3a6390c655f0e3de534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4>t5VR&84oFm|w&) odfwj6UH`51Rl)cC>Hj&^pHGl2W%0SM33LO4r>mdKI;Vst02Xmnwg3PC diff --git a/ico/16x16/label.png b/ico/16x16/label.png deleted file mode 100644 index 315cb52798d24532f96bccca8b4b660f9679a820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4PbJeO-?VUomC4nMtyb?TY2DjE#|C|q1!^hfX wdWhxCwf(EypD8n!SnmG1{uTQ@ZV_e%_bBn7UKw@2ffg`$y85}Sb4q9e0QZPO4FCWD diff --git a/ico/16x16/list-add.png b/ico/16x16/list-add.png deleted file mode 100644 index 67ceb411354ad4de5254da3dfc8a253045441d99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4a6FfT~6$50WG~3DPt@ESJk? zc_)%P-upM_-25QyoEsC7?cCSz_fOL_J(8kRWjpDRtVdDwkj35tFr}*XLGQOS4#Up5 zF_LQl8gU#~hW)`$ura1d@&&+j9LJSzxBEIg;H!eQwhG`Dz>2Eg7ga0LV1kB-EdK`n a8~Owdy1#^h?3~~L0000k44ofvPP)Tsw@SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeEE1(RC1Jbkdkz0Tg5}@$_|Nf62thDI&DhEm9jORO#vB7@~20ZNH&VivfqLykz>9 z0`HfaZ=V#sym3fn!MmKrCIXZG{Fk@U-MKzYYr_V{fJ?pdYm@j)wKWp>ZhiTcv;6)& zch}21c|J}|W3;=ZtGegEzJzxnfk|16q32*WTi#+>#%@1=-bRMmZ|y3NeXs>;LRaJAR#ZIAkS5-`Rz04zA? z8Y1%6T6>O&j`jQfGXQS+zQ0nfRu|_20Ls?d`v7hdQ4RpA`YOw^p{fdiO8~CLalA1P zaA6qwzVE*wqWu6sM4v_h0jyhV*NEugOh8rN8Do~3&E_`|`BMO&i`6*i9`5X)0+{)= zsva%&9|6EQw^iU@yWQ?qtyWtiqW1vc13(l-Cp^zPuc{&aPU;dV%QhH=rW>gU%lt}Eky%y+<0$9Kn@2a`%vB4TEEUi6(9S~}9oTh1w+M{;i z@f@R%5$-V7-q01`;|T{28#A7-)WJ7i6}CcT2SmtmtIbDw!wtSP|HSB0K+h2n{|gwp z0z&L)*{3G>kd#r^>-}MYKGv>)0ucu)YCE=nVud%*!RFjYyhal{&08iAbv!3YV)nLC zoC|2d$1i@+R=^BLOj+}=cLfycz*CDk0+@gostK5*dFdWJC}fC%zDbArsQEo6P=Na? o=hoFN)Xh@!h2tuh`!kguC%zpS3yrjCzW@LL07*qoM6N<$f;)tj{r~^~ diff --git a/ico/16x16/object-rotate-right.png b/ico/16x16/object-rotate-right.png deleted file mode 100644 index 30a29672fb827634101d707e2ec83bfc844ec2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4lFW*+venzKxMc@{;4f0h2XKLQRoNM&?_Kdb!404P+lovIx zd%f-Tt~yB-ZpKFzbp_|%T0ZaVeBqgGE6@7l(e%`p9WPi8h%%@uowiHydMI?DbiJ2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4de&ZH|{!w_Paj0cvt_{Hrs;l-Vau0&RRU@;5#;@BHlG;-&AVPT(z!I s`@x%V=6!Jz$vym@=hO8L{4_{Kz}lLy85}Sb4q9e0F~U1&Hw-a diff --git a/ico/16x16/project-delete.png b/ico/16x16/project-delete.png deleted file mode 100644 index 6a14a5649ea4d16d6642c11f148909dcda30393f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4T;jNyChR z@5ER8qk0Es@?AKnJ3WC%{GV7#((&0-5*emtu&FaJSm>$$yz;AmCeTp~p00i_>zopr E0H8`+jQ{`u diff --git a/ico/16x16/qet.png b/ico/16x16/qet.png deleted file mode 100644 index c0c7eb9b56dad967b1baaa0ce6ebcfb4ba7a0152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^Z&q-WenwL%K8Q`Pd*TY-7S15qX19e>O?H6l)XfDu7=3@G$11F%_p#GXHHH8*-3n?ZEINbhI7!~wo!Sv`4*7K!N> zaRG3n5}G-gX}n%MddBa%Vj}&P8SjNvBN9XBw7&#nGJ? zmPS;YL1PC7Z48C}4H9mhOizW&i9VWzd-quf68xr4l3QZSLoa z7S?3oMs4iOTD_O?>=(8wd6xHPEKF<(@k<0)+n*+vI^@l_+1Me)Y#jEI|M)IRR*&Zx f_TorW!iD26x9b*ukT;FK00000NkvXXu0mjfF+Aw7 diff --git a/ico/16x16/qt.png b/ico/16x16/qt.png deleted file mode 100644 index 74b406ec0415497efe5c22885123780a7f13f3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n6)xPB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk*hs;Rw<*Tq`*pFzr4I$ zuiRKKzbGB3*V0noz)0W7NEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPCaRL@jF!#6QG zGY=%J3D)Q9Yvq|&T#}fVoa*Ufs{}MjFEca6%EjEm+`_`q(A2=$$9L_#;sN&qYE|Kxk zQG>H@eBSU>ZqnpgR>Q{g|KI;)i*FxI4sTKCmiYJQ|6u{0XNL=ZU9N0%x1X0Jae(Ww zi#Ln$i_aN`CU;&ZCZwh$t_apis`&F*^6<9p)sjv}Yb5Rd{XFvF)phAM`Tuo`BpBG; z_E_;m-+!05&yh zx%SkDC(n%yem~zI?{N6$hGR@JITd^7E)3l{$+0PxN2cRdj22Jj_EiUq`0H%aJSO+C zR%dcu(2n4>VC`9UB%77zm&5;4#U92hiZl)P{Qt|SbNy=p*9F%sp8UGKt{+XgcTINi zV@q^X5J?hEnZPRb<=J=Zw*312#&iCb2u8lNSLjP+S>{qyB2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4owV$u=+qY|@x33dSX5bdv7{f;{NsP^DUW~nUyWs3=A9&tvG!AczW~p?b{VVd=M}) z`ekTnIQP@Xj~CTXGiU@Prlia|F63(=Vp=MbS5Xg6GxWMoWOY6 uJpbOFh6Yv(-W|U_KR+MhG>e^`fkEt*)|)x^H}wHs&*16m=d#Wzp$P!yx^<%f diff --git a/ico/16x16/table-of-content.png b/ico/16x16/table-of-content.png deleted file mode 100644 index 604fe31c2c8043cd1a0e798d3709b997d2f8b4f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4R fsdVzE1_lNbYtiGfJbzXK4Px+g^>bP0l+XkK>?1q( diff --git a/ico/16x16/transform-rotate.png b/ico/16x16/transform-rotate.png deleted file mode 100644 index 71042d3c325c9a01ab4f22a324b45fca48104934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4G_?*XY@3enr;Za z>N|OXfYXld6LL5HsxWjI#x;i8zTX$SMt=Jn@1uJYe4fvj@G%H@Ej`)(Qp&+Udw>qp V6~6q}(+}uG22WQ%mvv4FO#lO2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4kP$}GY$yK zu$|_9qxoZZYw3U24U^XCo)kLL_pA7wrMmg|KN~VU0PBRrWf>Ve(3wAheuvn-l&@7zkNfj!+pEiPq)~2o+*#h*~i$en40?L TO{fGgU>Q7J{an^LB{Ts5m1(WJ diff --git a/ico/16x16/user-online.png b/ico/16x16/user-online.png deleted file mode 100644 index 1d358cbabef3dd98a00bc840adc6e3598eee689d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmV<70UrK|P)O#U>I1iGP5ri3Cks_h(R2?UhIj&Un7(oSb~WU-)l` z6FIhRmOgq|27-VRMa*rnxDznbg<8!iAX&!}umJdU(Y!{-cu!eFO~gs-7*MX4jLx-; zoVav7z1}^2(OTV5X=PqQPFj}}sYFzNeQVXQuj@XUc`ltwthT4^to7>#scd?8GO^Np zZr$AG%w0Z8=CzhY|<1>tzaXNHl7Omz3HUdTO{J(ey X{+MupIO9BV00000NkvXXu0mjfRtLrg diff --git a/ico/16x16/view-fullscreen.png b/ico/16x16/view-fullscreen.png deleted file mode 100644 index d00b8133a35e31bf183cf7de587617e9c0a38c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=on-u?{1_jl(mUlMX=&6?>fN}iYgDj%}*QV}@o+_?B=fy*DZ zdW8*pC#INg&Rlue-{aJ0o9ElrJk=x5%cwrRmmr_mip@Cz`Qd_-b!FA`=}31aOm z((3gQqd`m(M8eY9$DsF$iG;x*c8Lx`I?@mAvADF9j?VO+lXIRt@5zDx4yjkPy`^bH zX9YTdh`=o>2Tg_Mt&{P1p}N=90~k>e=&oQ!tx~KFVP1`n6r;II+gojKXaF$myE6(a zs-XejN!$ZCzPkWShVw1`fyt+V?JZ3^XYNFhXKZ)JAX63dmJMp2?XICb6e78~pceXa z(OJrpthP9{Q{E3Xm31+?25i2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`%r6cjKS_PIho{E?FfMx>qo8&F@rp)#Yo|W(!Q*6Qi#5 pr}OAG{n+bs&%W8`z3OfybNF(Hkk19DmIK|);OXk;vd$@?2>>Xpb)EnK diff --git a/ico/16x16/window-new.png b/ico/16x16/window-new.png deleted file mode 100644 index f60d2d000bfaef831eec5b839390ef96660a0c1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4OmpStVgXJ=llA_5lk+)jg>FVdQ&MBb@035+a ARsaA1 diff --git a/ico/16x16/zoom-draw.png b/ico/16x16/zoom-draw.png deleted file mode 100644 index 0879f41e8da34f7595c587af9cbbaf6ba14ffdb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4MWoO`>gYGP8snv+3heg`v_Z2hKm{iYSTwe)0QXyVILk8`@Kvg-@6U z)iO_#PCj!h>UW4p>k*0T3~`P7<5#Fj9RJw*X)=`gfm2YSyw!WlQ0S$DQqVo>G5ZUG|4zeO~0dCFvbYf&OLiboFyt=akR{096{4 A`~Uy| diff --git a/ico/16x16/zoom-in.png b/ico/16x16/zoom-in.png deleted file mode 100644 index 74886f5a652bd8852c8feb93f46ef1fa061c7aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<~w8{;BtSFj5aU(469SBJHokEmG&0Ri%DA9(UTM*sdyx0Tl(K`$%pTI1bKA% zpDSCeelt1O_8`N%eTC|K`G7T^AhzCDt2Yh{+h`S~94ir!{>j9%5=_46;?e^IveoZb3Ar>z=+j$-h1^>bP0 Hl+XkK`K@8? diff --git a/ico/16x16/zoom-out.png b/ico/16x16/zoom-out.png deleted file mode 100644 index 998789b8354707537bfa285e5a38de0d61a2b826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4g?9(d;&O3>|6lztrY%CCcdu;P9(+~NE_9{yS z7w3w#3Lg0Me%*BuCkwA#SHFfj%u{*k@QLez5zC1*2IGd!Z>#Ulw_{{Dqq#J==i|++ zZ+8;>KN-%tv})Rhm7y$Bmiq%YHsyYkn%$tQ6|~~|k5>=tmWd07YiHgqkh=hM7lWs( KpUXO@geCxYqGB`v diff --git a/ico/22x22/Actions-player-time-icon.png b/ico/22x22/Actions-player-time-icon.png deleted file mode 100644 index 19c5d34110c7f603144beec163ac591bff9692a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0VJAsrlgW~N0j+HG{L=_mE0z%!vb*!zLk-wRRi83zGMoa|a9lU+?`Vk}tjYZfG&V{!{P92S(61l_1<3T&crvVgo8Xu-2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4v!($ijYTvKG*622WQ%mvv4FO#smxLd5_8 diff --git a/ico/22x22/applications-development-translation.png b/ico/22x22/applications-development-translation.png deleted file mode 100644 index 34599ba3c3bbf2ff51f41a3d5ee571a4b0ea1228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4J$k*f`;QIf*fDpI-1JgZC(=HT>*^07i-xU)vQ_JgF%RXUNgjZV56@f)e#||}J zfBWy`>6A2aiJga^DRwEb1~A>2RKj2uIc;veYMzn`|EgDOw!T(Ox;%CDE13gX9b5W; zc*-0URx`+B$A#bs)hA))C#g`uIMu7Owf3vA!H;#J=gVZrIoch<8UbO@ZSd6Kok zQ-EckmdKI;Vst0H&geW&i*H diff --git a/ico/22x22/arc.png b/ico/22x22/arc.png deleted file mode 100644 index 082df111ff2cd1c596c5b56626094c0bdda3b1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4p_sk4>^3!ZF{EV$4Y@A||uyEa(l=x2pOnd1u$ zpD}qfwszQDDc#Fva7-p^t?&b$9pCTG4-ftNbM=m?c1-!#ZdJ~EE^nLr&E<*I4WLZU zr2hvjx0jr|`)%t>w&HVlEuZV{?p`oCiEGKVTb2se9j=;F8JBxblKI+o+gyU$zan>U%tG R3orl}JYD@<);T3K0RUDeo5=tG diff --git a/ico/22x22/arrow-left.png b/ico/22x22/arrow-left.png deleted file mode 100644 index c2e5228647d53b3e76808d9c653f1ad388c8712a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4%cm1rU2BtMLcJgKP&Q=Wab8&EC^qR3yFqqNKdmoS4)pz2Y|0F#% zpRQO{yn1v0qE%H4dIzq&$`yJcI^)cnZCo;ryB})YVokr`YSC@>P*5a6TJ}rY_qPw; z2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4{(`p!K2nf@wLz8h^6d)HK@kc1VUSl2qwpx^^HzQ%T~?%-gjOpZxviyDw5O z;pO$JtdOgU&;J;17Uy0+=kJsttJSaiTGjQ2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4gTe~DWM4fk9l2& diff --git a/ico/22x22/bring_forward.png b/ico/22x22/bring_forward.png deleted file mode 100644 index c3b8b164201e0b8bddbaebb90460dc7d89148936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)=K*XlH)3o_)r#z{FT>uY_C{SkR=}0u{ z+69`X9)}49{Rh>0+Vf%QSP1de@Ap3_7K;bh!o#8yU*1^NYIO&|41kEw=R2`1>!-c9 zJL8G%BiGo-*lRG2nos}`+OZz`wQ3a#g-rml_W8d69uv_ErBt>L?v0evQLEJ+_2ELy z19(S7&zX6Hh}M~T9KeFs`e`4v6s z;oC&7z?DjcwAQb*)*k!vdcEPBqJVA2`F#EYKzI1DSS(0Hv!zlA@p!zmec^Vy-=d5iEkeYl00000NkvXXu0mjfh9C(* diff --git a/ico/22x22/configure.png b/ico/22x22/configure.png deleted file mode 100644 index fdc4f0d940482473a468523e9b5f886cdcf755ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR49=y%vb!1eyI*0mm21Z9^yXeM`->BK7*Fz`(lJH!~X?unX(?VTpQQl?A0By?SM zS|-ln@p>J;?%RLa+OzQzFAJu5r$*je@rt{Ed(X;Oo7TPV51!R|bcb;)L$HGXq?B5} z%d;a~7Cl|4xaYfl-7*cA6z(Vc`=s9gy{p-4+NHXIbzcM9j_ohp+VFUJi zx>scvZ9l&17f;TuZF4Q3n@xK)OHFK|^R(3Kp`o>6u7#q>cm5yG*>Fke)2lhzmrP_q4#FV!GkUr|%W5}=g#^N7ua;g4v>HhB_hhD~79S8cB!PC{xWt~$(69Cn?j}rg@ diff --git a/ico/22x22/dialog-cancel.png b/ico/22x22/dialog-cancel.png deleted file mode 100644 index c812778917ce98e3f40cc07f311cff6276c962a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)DU4neBD^aJ!#M5UnUT^f5>Og8U%aD&NqH^zJax0(0m_x>|) zW`GN2qD4V#?HYg$0961h+4NTtc_$*zz4yoe1rEb7&{}U3QGd=6}_T_d7~*4hGC2hg$B-YO0%={3*%X+LR$D2iT(VR)qs&df&uJ^@J6G~LR_3tcsv%}Ys=>`Xr) z5%I>D&%@zRf*`mhB9@4r0O+J?x-}RKek}!_Dto3a{JH$sv-~dr4wO>Q^4q^qp?(8b Wi_!yVt6?hu00002?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4PBSO3bj4Fwr81=k;)?N?6q^l7u@{ep=oMzEXRz0vBs@~-#@PxU#L4{=5LoT zfuUDd^hqaId94%_yle41PJH2kFXxrlezk3w_x|_s)W|&M3ig8IXZ-g&M)%e$ISPDn zeX?1j%dmk{@NSu7x+xn&O60SrmH!-EgtOl!i2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4nldG{qW_+AKKll-UY zN(D9--dA~TTboSUJB;u1E0{*`2Kj$ve3Z!())8d;8_gegFg-~Gx|hMz)z4*}Q$iB}G(>A< diff --git a/ico/22x22/document-export.png b/ico/22x22/document-export.png deleted file mode 100644 index d7b6cfbba9feca79e3b31925014843abfa1203c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4(a9Bj+#7FX#iuI99Xedmxgf!GWl%?J_@=no3W{nwA}{Y;FLNV5 zVVa~y=Hp+io`&p3oB3a-SG+izq%~<4lX!)a&PySu8)x{K)t}#qyi^u;hkL|JXRZf{rk4SYo32U Z?_t=_qC2ZP(hB5n22WQ%mvv4FO#tm2YvBL@ diff --git a/ico/22x22/document-import.png b/ico/22x22/document-import.png deleted file mode 100644 index 0d22342fb338cd422effdb7ab774e11ecc9f726b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4ccVMQxd8sLb7) z_xaJB&x;m$GpJ9>+b^lNG{&^YmY-2a@gaRR!M!PC{xWt~$(697BkYI6Vp diff --git a/ico/22x22/document-new.png b/ico/22x22/document-new.png deleted file mode 100644 index b25da4ce084fd22544cad24e6dc55b30542ecc81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4WY_N xI`rV&+1cjd0k;#@v>6!$gylRkDG^z~z|iX~+V>`*UJqzAgQu&X%Q~loCID!yL%#q3 diff --git a/ico/22x22/document-open-recent.png b/ico/22x22/document-open-recent.png deleted file mode 100644 index 76a88838cdc5392c41f1ebd95e940788f184641e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR49n|H`Tp!L4OwQxiA2MjG`wagYwyu9ij0-aNwk8JIZ_4eZu*AozTJgI1N$$PVF zlJH6U(3be0CZ98xm>VBhqL3+dEsBq^@_qE0iw~l0H}9LUZq|YS5;pIHbJoT(STIGf zt`?ctT)b}U;koL37rLI@ln|CqP7>TXVa+6!PWEO-8P9!BD*we?|C&B6HU8XA;fC-@ z{mBPbYjj;&rm2+Aa4q@3{wo%buX%pwTpx0kx8d^ncIP7Q2gwEzE_{j_3?9rS%n8d^ zoerzL{NwfR%J-^E{=0lqyzze3F8!`Yw@MFKUooE`7OD22t#}>K&kUZfelF{r5}E+P Cc#En4 diff --git a/ico/22x22/document-open.png b/ico/22x22/document-open.png deleted file mode 100644 index c73e84cf1252665f64c01024545a119827107fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4De=j4 dG~qG;x?f3J^+&_$S3sK?JYD@<);T3K0RZ7fO<@24 diff --git a/ico/22x22/document-print-frame.png b/ico/22x22/document-print-frame.png deleted file mode 100644 index 778f2fc19d99ecdd1447ce1e1454ea7174d8ca8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`i>FI>?3j?g)k9!z&CV^ZX?5BHf`OI-H>`duu-XKR zli?UDFzw#wOC-08sM*zKZ`6Vj}B``D__H!YrV>}Fl`v(r7_YqlH4E%ZqG|Do!_ cw>bgK+d_1goLVIj478WQ)78&qol`;+0EEs_X8-^I diff --git a/ico/22x22/document-print.png b/ico/22x22/document-print.png deleted file mode 100644 index 778f2fc19d99ecdd1447ce1e1454ea7174d8ca8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`i>FI>?3j?g)k9!z&CV^ZX?5BHf`OI-H>`duu-XKR zli?UDFzw#wOC-08sM*zKZ`6Vj}B``D__H!YrV>}Fl`v(r7_YqlH4E%ZqG|Do!_ cw>bgK+d_1goLVIj478WQ)78&qol`;+0EEs_X8-^I diff --git a/ico/22x22/document-save-all.png b/ico/22x22/document-save-all.png deleted file mode 100644 index 5c670cd9ba1c5da8ef268788ec51a677e30df02c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4k= zMc?;*@$l00?)muZ-`fjWLV`kqm!6ATK35i;JGXecVqy1`OLJ%XyKM0hWp?0rXm)sW z*SY3w*Y2$wOypPJkO~XFbBHT@yTl9b?(C!Y=JI!b&0F4Cy>Xe*(Xi%uM`o@0b$nN5 p%JblPU&4>hc4z%|f6o0!jH23p(lw^HuK?Z5;OXk;vd$@?2>@W#bh7{e diff --git a/ico/22x22/document-save-as.png b/ico/22x22/document-save-as.png deleted file mode 100644 index 55f60a51e5a7337bd63ea0b0c38bfb07abe2138f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4C`pWH9dXje&cq>t_^4R94y-SA)4i2REtB> zNmD;UCD@F(T1sf?d^*XME1AdV?O`$zbvcY$Men{!4Fn)TV4A&wZo@js$tsP2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR49$alzqhhcq3ulNTEu`>NchdmQIS<~HQe~HaI@JLZdVd;uYY1P<({9={)!q%K? zYBC-Us3s&b>2j7f)d>VAk9J$@dvw^@=R^ISs2jWL9_X|0Hlo za!0r*bH)4U1o8E`%O^c*oOSa}(&9%I1v^7Bj|!ZWJ-_$z%3#s0No#&2t&KQ(y4!pI gSvghySN)aDhD;U@t!yXp03FNV>FVdQ&MBb@0RLfWRsaA1 diff --git a/ico/22x22/edit-clear-locationbar-ltr.png b/ico/22x22/edit-clear-locationbar-ltr.png deleted file mode 100644 index bf798c4b8c293211d66c2824af6842c969c43915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)%QS;Mr6)l`G87<^0bnGsm z9TspPGmKrH4LA{!g&||dD_=HWcK+P}mu$l<%XH?uWAFWA+r#8c6aXHwEPMM8IEr_L zTk!)}(z>du8vtLmdL!u$!17f508WzRWj33Akh}#@0w_uLLkM${nOQ1n5`iJqV3MQSOc#jJb~7zW zjwC$+NROcaaMiFTm9*IFdJWxgB<0@wqTY4>^CaaVgkrz%1h=7`;23(zpZowyGo9T- S2MrJa0000V diff --git a/ico/22x22/edit-clear-locationbar-rtl.png b/ico/22x22/edit-clear-locationbar-rtl.png deleted file mode 100644 index 694cae9d3ea83d97b4a79623d3b76d14098d35c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=*+eH+ zUcc=1;*#ZbbUq z<8ztJ@nEZcvG;jqak~aSIW|N7!5Qs0-1j+uAL3_xAinx-m$Sjjuqa?yGI+ZBxvX@P)G)t z;hg)Dmlx{Td%q1_=Ix1#z#)XUK<4>E!H$hFtq?->FtA&%*MC$Bx7+Q&6&rwc0D7@VEIsE3npHWMyk%N$)bEpJ|%@ zE(AO0c7Qia%fJ54U-N47U;`ZT|2+u!1R&`+4_2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4FgLU`2aU3bGu#PeUIw%4EJ!WTO;mG*z0+QnG1H!W<=OmT)?9dFh}{NEHg lY2uU<60>JbtWeX*r# diff --git a/ico/22x22/edit-cut.png b/ico/22x22/edit-cut.png deleted file mode 100644 index d1f4f1155137795f4bfb0ccb1e50908bd141cb83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)tZFuq)D}7-}U+Z z9?p3=2X^Q8xT8R+R5}|3K_-f#Xc#XRi*rE`1W^=qhjC|=*jhUyB1_q9)*EEya(OSX zBqB#g^+$?Tbs3mSBod2*%otNq)&0P&QT>st=ytokbUOV5xRy$#?nF`a9iUh&POIu& z;A$9#kGFkd0MGMkzy}ez-glE5z^7y~S=*{BTS0(Ap>PIRjpKM0*l--@m59tW8jT14 zB?idn^Y=yM0APV{VHoDebrO?^RdrEB-U5z@9Gavvk=S+Juc}%D9MAKuIs)5-UIi5%fR6<4Bu@_JU>5w&|13!%&6*`i0lETeBVEk$z-(C z>AV(^^*D}=h@4Q>wK$F!TCLW{e$QX;*jjrVcxa57b{yvsFsrJSdcAI|)oKh}RMnFr zvbvdZ9A{B0-EOY~H-U|2v-xBbhGF;===Enre00000NkvXXu0mjf(OVIq diff --git a/ico/22x22/edit-delete.png b/ico/22x22/edit-delete.png deleted file mode 100644 index a34adf6952a23e195fa02760a44066f0d02b691a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4KFcGHnuyCjy?Wug#i;@{Yn%Pc_QYrm_eI?LG7*5#_;DKBY`$C Nc)I$ztaD0e0ssZn5{R9uAKZRt0# zL;V1L3kMO!#aYdk8w7FE$-%V{x~NNNa5IX8hUZeHl$@o}Z2gUQ@Biby2Y0}XA*DPa zDWzxIc0UM$XI;%)9&wtcN6hR=DI2<)Tpjm%y%)=}9*F3wQmH%!LGUzQLz5&z2nRq1 zKpj9iqnSQ{HKo+Y=%IEM?RI-X2yq7BoSAP2gTaPj7>i0NQc4jKZ3Bpis5LGHfO(xb z48vmpD~4gLd!84M-bpDN%zQyauJ8MIS@}%yaQvMt>5$HEQY}J=%Vx8=H&tj1-Hz*N znqC(nUNTKHDnk64BuTjl@jWx|{=1lnPMG2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4_0dQZGP$_=hUd!mjg2f)*DKhyEgB2g8%*9f z!Bg$c2Cgl?OFzf`_-JJFV8+&qQPaIvK41CoWzZGN?<_G(Gpp`>|9d;j!l8E251k5! z{6^UcEfv#J7roxaA8#?U^ImjzevhH_1LHT=&(9s&Jfkyj*0P^WCqDmi^4iI&*EoIG zI{CxtPwX$UXTRO*?tatx|C|ag-etK-FB~g)tvJ`aF5YlIIN9gYwzuc5cQ5kjF^pC` zk{ufQR8hq3wb_DlhU^P_JEsPnlbGzGxxY5oV*hzZ#Z7sKmmJ!k!O1nz-ak9`(EE0# mh$g2eT5f+|e3CcTwl8_JU(#Xnl}=!|F?hQAxvX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR44>b%4T%w{z2K^@D0#{M`rkJmy8=V2gL;;v zFz-B6zV%<@L8Z67hve4;%-y&uDkhNGK=ot5sZwh;gQdUXG-N*O-RClnw!JlR;gy+7 zCd4rG1PV`_`D9LU<*C)}&oiGHUbx4c`DgtPGwHmr_`K(;n>2y$VeoYIb6Mw<&;$Tk CRbUkW diff --git a/ico/22x22/edit-table-cell-split.png b/ico/22x22/edit-table-cell-split.png deleted file mode 100644 index c625fbfbc0b5de8726db70358c13c11313b0b917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4xA*T4RqiL=e~(~f90o=qq^IzyvCAn!o_|Nr}rR~H;mbuU__Ao6?1fs9B-_Ai`W6L}f*W`=)zm)$rU P=r{&XS3j3^P62?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=q~*D&;GPC^jV}Uvt60ioJ9Lj0SMc!%ZP@X`&+Dz>8e7M`4G)wG1C<4} zeNCGdY(90qda{8$=ZEW|OZ;rk3%{SC>gm)gy=tS3{Ea{FHca}tE+%``^i8|&tVr3X zt)MhFD)(^{t1_ctVYhydq_~cRV8t2TeFfWQ`z&8BdhgX0_6FrfC+pbf*DcCUAN+Z6 zjq#pIKlKWj!zG*3m%sj#ZFJ2@?ZXU*g`4lD7)|>o=X(BuV8)t;ZU&y-1I({1_;TXj zF5lc~Sg}6k&SlLYqjRON7;`JWKE7bOwpyh2&Fw$Au?(}7C#=^?XpjYZo59o7&t;uc GLK6T(`j5f@ diff --git a/ico/22x22/edit-table-delete-row.png b/ico/22x22/edit-table-delete-row.png deleted file mode 100644 index 48138a07a78615aad6604b00d359a09fef524e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tFxQ#M$QgX-Bjg&n6TdouN^n5NGhEiRtjsz4vc=lxZ?EGdmkT z*B22_ZuwZxrWVb{))xMM#y`u|ZzE58bnqX3@hm}N&A#-n6aVx09Q64=W7_=!?h>UV z$DcBHQdY?7}zIIsEa>1Jrn3I22WQ% Jmvv4FO#o=kU%&tW diff --git a/ico/22x22/edit-table-insert-column-left.png b/ico/22x22/edit-table-insert-column-left.png deleted file mode 100644 index fa2abf46329905209a7fdbee3e3c257204d3ffbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4IewpZVpJh)P<|!+X6U+XF%;&(%^>Qcv!jf50Pb zUj|PLxsB=r`}r`vi+?~{`+%jt*d68nU>6b@4Ukvo_D7f z=WCTc_m44?fr9RBX-azVWKx_j7_(!C0cL=IG~m@QDZ$5n8r n>Z0^yAF*Hhf2y?psj=H!?w_~(g5qjmz%h8b`njxgN@xNA5UZjg diff --git a/ico/22x22/edit-table-insert-column-right.png b/ico/22x22/edit-table-insert-column-right.png deleted file mode 100644 index 02cdf5e899888a2edf7a01eaa5fa021dc803929d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)R}P)Vb1;DDoK zkEInY^et&};sss~5Y;sXIe`O0ottOZv*VF%fPd_O_ChJeA)D4uuU>vRyhU%pC+y>T zy8Oe*w1`|zgg86~nHCYUn7aH;h(niK*P^*jM0pikDY}~iwKhA6R#6ZUTD{*wh)I@ZbGv8nx)IUdFqd=CHO9Qfar~0!`J^UK{wrYX pcwmbHoEF6b0G^5H^9<&$85{eqj;AtmHS_=g002ovPDHLkV1kzOsH6Y@ diff --git a/ico/22x22/edit-table-insert-row-above.png b/ico/22x22/edit-table-insert-row-above.png deleted file mode 100644 index b4a15aab514634e4c9d792952564619522428ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4FVdQ&MBb@0Q}v4*Z=?k diff --git a/ico/22x22/edit-table-insert-row-under.png b/ico/22x22/edit-table-insert-row-under.png deleted file mode 100644 index 2309e492313f9dc683e908f3d2f65878f2aedca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4F%h%)}(0X5hKVfOnbkl>(0UpU3zI!;n8*E%A&~-QLCP%qqP$koGwlll*OhQ!l zWZnN$Q+bmyZL8Admc$du2|->(WZiNJu^)*$^~ElvI=*`kAA?A42a`j>nk>zy>x}otKWq}J&b*%f?8uz$dxdp2 zxd~KjHa^aJpMAO9*h`bwp*%DCKEGI`GDnSS!JiJZ^4q(EZe`9*V4BVl#?(ufe!!x diff --git a/ico/22x22/edit-undo.png b/ico/22x22/edit-undo.png deleted file mode 100644 index 005705c512a4ed0a7dbaa6b8b75a95019759b8bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmV;!0X+VRP)GUi2%zm6H2Kc84B2pC*U*_*pUf`VD zF*6UKSw_q}DS#UQ%@9I&E@J20Du71-8#B=uz$<`0$qQBOeJ5U+eFz~8Nj3nyk=zR* zFoeJ)NmfRq(KgAhnO%v9IL5e1@_p`N z00(B)&kAx+`X@xBVrFdsM_GBP#v)Py-~n_(2=`etg&U`7x)@{J!q@t30G+{LaF#cp tdwJ71=M2D@#rf_HKb{}3A_Tn0w28hhxK~>7r-AjKR+n5r{s2fCkvs)lyj}nR N002ovPDHLkV1l1)=v)8* diff --git a/ico/22x22/folder-new.png b/ico/22x22/folder-new.png deleted file mode 100644 index 8be615292133cc1be90cfbf35bbd876fdc61262e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4Mxl$h*@FnLTxbiuIi+e58llCnNiU(&49sTv` zOAhm&(#fCnJ6}M>Vl6&uZ zqW2MpXTyCudC+rzcQsKInYI1Woh}@U;Qt*998YtY!@;- Q1@sStr>mdKI;Vst0A^=?6aWAK diff --git a/ico/22x22/folder-open.png b/ico/22x22/folder-open.png deleted file mode 100644 index d7e71cd01e55e275bc23db7f3b1dfa7af0e0b9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4)(FwhyVZo-@Ps8W{}^SgFY_18zyc%bNu-7$r)cy$kgbmvE|&` zBbg_6QBO_u!kGjyr7Ib3}pr1N&s>Bqz-of=o-yO}xX zIp@dWJu~pX;!?k`SS;Si=kxo(Enwbz|28e0=@;g5xo0tY2u!C%uY@I4fgfhJ1Uw1D zaBN`MIadHC&1^ZF&3*(jlBWK~iL1a6@S#?#Z2+6Vi-BP?dkJhc8jbaMyb1))x$!@S zopS+jU($QP03@x(ajHwa6po^(8ow@|&Ux>@0y}0llLr3nJFZkJBdu0zAGm2|pA(Cv z3E(#H(0jk$4<72CXt&!TFbb?m+Utt9fjLgvaXr|~W`UoQrt9_k;U#+(03NS=w|M*u zv!&+qyRR=UO7yr?D%}B|0-t)IiE5S$QlxuGue!4Y-05^?fMGLxcNKbiYRlL+VC2!t zLD&=K3_SuK%}d;?<%F>z^lIEo1WRfFKh10#Sg%wnSLfB4B(US9 zz@F#jfDJQirc$XE;7HmWuPL z-o=T{Yzz3-?RG!M_g!GETrS^80w#hz&&vb1B)tU;K+-ON<2W-*TpAojQ6oM!Pu_wc z*ayB#+FAxYGpBmJel85dL*Rm$eVizkZUdJkt@*ycp9G#+-e54O0GELGl739t2f!0X zOH2gMBz9fb2kuH*^?m2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4BO~By?qLIIB`F4()4z7vESVyAriS&w%%9VO zcIhu<@MHL<*itN-ckuZI&l^qp3qvdTwl83C*xJ4FC4-Ib3Qo3rufP1Pd@`rp@L2cK k^CE(U``=XfpPwNf92dTJQ{sdepnDlSUHx3vIVCg!0Eppj;s5{u diff --git a/ico/22x22/go-home.png b/ico/22x22/go-home.png deleted file mode 100644 index 3d5b728797a6a04240401bac20c12e4aa1f9588d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)>Z&u#*Sa1$NJWsMLdm`zUq!$2oCX>l00I1jN7mP7CNZtqV&U^pRIrnoRIM4GWP17Bc z-@NyCopa;g9p345vPPrvMpEXzzc~*-_IPQUJ|_9K)oQJu1O))++_>3nu9F-Bz|1f5m4+dVg(P7gu|*Jfuv-*}Vc%VnVe(C_!ZOL}dLxi{<2gL6rP lWuZrs^d7*K)8_sW{Q}t|s#TnmKI#Af002ovPDHLkV1me^@j(Cp diff --git a/ico/22x22/go-up.png b/ico/22x22/go-up.png deleted file mode 100644 index 258977752770d17b5461144c4c66d504f1edb2e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4^!c-g>!0KOm-o%8u=w#Bg>%mr*0m@1}4y6oDyf33LaM88mZmlEaz zrA50}eOvudG3r~~A7z`?bqC!)2)#ObKSBT1LG$L@%`;W`ql6}|o~g=E{oa4=H|@O) Y$JSmdKI;Vst0BJI4hX4Qo diff --git a/ico/22x22/grid.png b/ico/22x22/grid.png deleted file mode 100644 index 8cd01f801f3cd8ec320ba4c572d3ef0aa373c6aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4FVdQ&MBb@0C2-BGXMYp diff --git a/ico/22x22/insert-image.png b/ico/22x22/insert-image.png deleted file mode 100644 index 760803eef97299ddc6409928b543e53473ee93d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4Pn)i@_fJ?f7cou_}(>=2wCih3usx4+o-E9l_^w|qiSgjQ~kDobtfBWKz*AJ}f zpW)YIxQpf4oaC}(&K>pTv#nK>)I;}9ydvQAbnkwD-7T7H%o)C|s#3V=)5_N2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR42?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4xA*T4Sj9A}&7r>U&T66t9QbckkPSYXV;v@ic=Bv227r>mdK II;Vst0H#4OhX4Qo diff --git a/ico/22x22/move.png b/ico/22x22/move.png deleted file mode 100644 index 2d8f172070fcc0b5dabe66a7eb92496d857dc52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)hRV`h|6lVKR%GR8~+I5#^xoBS)V<2a`Q+^g5?*8xwQGj ziUqdnW-=Mag5CpwQtD-2{Fxo6MdWe+MyKEKJntkkUjq;j(VB>?r_<@f0G3_Xt=meP zz4apU1OS+M%5j_<+h)wncazEFd1H(wqB}%1(d%=s{C*i@z5xIc9jaEVt5L0(+uYoI zkjv%9eBWORg5Z==>dn>;{Zgq^N&#pO`hRPMF=nAqC?JtY+y`*h-uCk-aHrEbLPRTr z{w2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4B$aTm;!1X?#lh#)T%Lb>sgqc>ek8ReN=TO9upSXSHT9&;|BIhS<=XF47 zLio9N^=InD+@yS7G;J;86mhuK<9BSv+~Rl7PM_qz)NS}oPpPv*<$!bO`pS9wH8(vI z9x_>2J>QnU*>_rMaRUFE-(8n?tqXsl^N>)eOrDWy*K;ELy>o*7&A;&DLAb zc@9Z`f0qBK|G&kTGiIrgWj2RbCyDS!*nE1#DU+wR#k>36xRz@r=6v1hno5q20+;w-w(o^1h-gnQt zT;Nsr^2ZtCIQDC`+CihyIPUd&7cU0xcDoXW;Vpn~^?LniFc_S_2p9nR{r*W9hNmRI zP73F!hEnRgwYH^{l2YrWQmMR6lH~4L;30!P0BC!j_rBBV{2k}_$|;ALwAL|zHp%52 zsox$6N;-Ao!oY12nIpMKa?cpEGcDsu`2Fd< bYP|jfJ4Cr8JSvYe00000NkvXXu0mjfnda;) diff --git a/ico/22x22/object-unlocked.png b/ico/22x22/object-unlocked.png deleted file mode 100644 index 446d31ad448742a937197766e570fca4ab795060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR49$aTm;!1X?llh#)T%Lb>sgqc>ek8ReN=TO9upSXSHT9&;{UFj!pu}sV;^F82n zLOcC=eVYAdZe~-VEQ4cb8ksy^UvhLYyLM}}|MK`5^IV=RTh+Nr?Z92j@^hbSo?Y%^ zVirGeFKTz)%C(zxW-~=6+`MkFc2(9zomH>SS(bm{+#AU7*rM2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4xA*T4O~7oVM-ExEB%n0JF@&uJs4hEApFJr>RSzkmHQ3%dKjzW$$u zv4H{0uOB~3g04Pzdwcu-f1jWC8!Ia>R@ZD37CrVv!ms4X#4HQXl}#dtIny$8Zr;3n zIe1EIYwG*||Nn2#zqx7Y9FgM>w{YAnh>ySTy(7l2j7?EQN93tZP1|E#K2P17|Nj5K g?;19PKc9iYdUmAH##Rmypj#O{UHx3vIVCg!02@SdA^-pY diff --git a/ico/22x22/preferences-desktop-user.png b/ico/22x22/preferences-desktop-user.png deleted file mode 100644 index 401dcf1e182a7aef212150bc117a3a2fcc5eadb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=KT~M|4lsSkc;=^w>RT<{`z&L2Fp+(>8Lo zJ-n4-dc@GWn?tPnl=)}BynE6K&h0I6SE7oq%4X+oc>n)l@4RI%{X|^NRn!?Aisq@D zOpToOe&M6s_>Gg#+3nXWx@N-5D6(H@vdycUYL9?NG-4`t-{?O3SyF1Gp|Ng8OPLC|} z4`SAEc_PW+A;-9b`9sE9+j#53>0iP$OEY>RznuSMbHDi9-U)NAmga_cwy#g(S|H)Y zctB#az(j6AOI}YKk@x!b_uX%A^ZzmHx5nY;+q^&dX3JjMt=PlQuAi>!(c^X)7^DoI Lu6{1-oD!M2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4obb^bbVRX0q2GV2dgBlkN*3YeB<-{hx_$3`wnDph&$%D(O&2OccVY)7Zi^M z>|s01^Y{P!#MfU}%CW?D%h^k?9TxeM_~ZPC|Mt$$fr6q-c8RS%ctX&DGhtDi;$k*o z{tr_{moQD*WMZ`AsZ@nftWWOus^T?WD_h?`>Si8l}iGe}g!=YD<2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tFxQ#M$QgX-BjiI}g67nt8&sLqNi`;>v@-W_MmSwharo1ENa$ cn0Oc%_I%^KbVcxRH_#XcPgg&ebxsLQ07QX0$^ZZW diff --git a/ico/22x22/restaurer.png b/ico/22x22/restaurer.png deleted file mode 100644 index ca9208c8e299e999b19152601b8796be1837afc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)>4S(~_8dP!1yG#Y&<%d!t_0$5FZ(W<1?leL^oeB_*4&$8^OuCuC! z9bl_Eo}cN%;qU;sFX^zh1{V<2@{jqCL-B``u2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4|b-(;Fu5NoTXEY*MHb-C@4F#^072qgTR4nrQh{FXfMC}`+(o>+Yh$+U)oijQGb7T zvp~}Ft^2qYPwiUg&EP8H`c&YD5X(U&&q=diYsWlr(lqtId_|J=jkGqyX`R#SVgs_z f?D@v^FO7fM1}C{0c42}*zcF~a`njxgN@xNA7KDYt diff --git a/ico/22x22/single_page.png b/ico/22x22/single_page.png deleted file mode 100644 index 3be1b7b402690788ffb4343ebe736071153a4971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tFxQ#M$QgZL^QNbUOYxaKRWTBXsOVRpg1SJeG?#FgCFz8@EWz z=iPfk+H}S@HsPsvPMox0;Z>U=*kLx~(xPIK1O^6gTe~DWM4f DFy}>A diff --git a/ico/22x22/start.png b/ico/22x22/start.png deleted file mode 100644 index 694cae9d3ea83d97b4a79623d3b76d14098d35c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=*+eH+ zUcc=1;*#ZbbUq z<8ztJ@nEZcvG;jqak~aSIW|N7!5Qs0-1j+uAL3_xAinx-m$Sjjuqa?yGI+ZBxvX-C<0 z=UQc9Y4Z1-!-85n4s1QdtUuU<4Rdy_|V) z9k8aqdGvI-$9{IlS0w+HLPoqBCwtZZ$*I&P$6$*uPE|=RD zk!l$D+m0Q_$pc$JV-^a~@Auz;7EmmeN_Ju}Z~&x52?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4}pxbou4|OBG#df}8k>^)_Sh4xt)6||vTi3qea(}jL_nLc( tf{efCXxJ$I6nELlvpG-leC5LyS!G8jH@-EpSAfo7@O1TaS?83{1OQ@NTR#8* diff --git a/ico/22x22/two_pages.png b/ico/22x22/two_pages.png deleted file mode 100644 index 8c3d5c515801c5840ab5839e5163bb84fe582422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tFxQ#M$QgZL^QNbUOYxaKRWTBXsOVRpzrKv80^z1cxIQc9uLPyL1 diff --git a/ico/22x22/view-fit-window.png b/ico/22x22/view-fit-window.png deleted file mode 100644 index 557a5e9703e038bb617295955f782ca74cf9f8a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4J$ah$Q$Mx+h=W2`JRxiVDO!_=ycWH@uR3kI5-!#6TLP8w>+jVmqf+Hj3Iy_Eq z?x=Y`({jZtUl%#$k5h9JI8~L-W`C>Lu5X^Q_xj@glGFA~|3r%m_ddJ8b>_@L?#$W@ z)^oaFzceu>Z2G{pX4QJx3(K}Mb)RVJxXA5#WJZwG=fAn(A!;enVOj|R{e44$rjF6*2U FngAdabTI$` diff --git a/ico/22x22/view-fullscreen.png b/ico/22x22/view-fullscreen.png deleted file mode 100644 index 4b28b04138a853492c2031a0f3bbdeceb38a03da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4rc1DY=CnpYmhdAD^h38=0!#8o6D6cJ&?5O$?r{elF{r G5}E*XOl0c- diff --git a/ico/22x22/view-refresh.png b/ico/22x22/view-refresh.png deleted file mode 100644 index 273307b35206e3d448fc18150a8cc0186e0041a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)2_WGuBH73xM51Ksr>w56FzQmvrS zf*|598?hj`QL@mS(2d==C>SW%AJBy;s11OoTM9yYUcLVrnT?i0gxu(k^o5nUm>WFskSN$k3SEaRZ+07^(_E*MNk;~ zgY!mv{G1}(7Db2R>-Ub!<)xhsEB3|!;M7V*61ict;e5Ev-+T4h`uc>`I(|;TRI)L7 z<=xeL%~)_h-b`5Y_4&fj{|y0UJ>C|}!>(N{iBKV1ZT=24 z2y&bl%L7g6CfDx~m61i2_U zg;w$)F5Cvb0JsnZn;o;^$Atly1azX{Z-$RlTvchL00d4Ngax}|(6zWQ6qZHc4TZ^6 zTO_hNTVJ0D&oZ;JUA{iZCBcz0jm2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR49$alzq$2B+Mp~^|c9Zj`!`<6so_8V_9DCmr7xv0aFdBx0csfWjhWgZ*n>%3NH zsJC0Nw4;NKVFm+3i0KiD<5A}?D*0*J?)~1;!7sSdYxkyITuMRR4lZJ{?R$l1k%VVE#8lP^U$=|$4KmBt%i@jd%t3Gu9G4I!>4iOXQId}klz~JfX=d#Wzp$Pz| Cx^zJR diff --git a/ico/22x22/view_fit_width.png b/ico/22x22/view_fit_width.png deleted file mode 100644 index 607c5da3203ac7e119df173173df142beeb3c216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4?R)w0NA0Ae d>^((puKM#tHN}e0Eg5JrgQu&X%Q~loCIB@8R7L;* diff --git a/ico/22x22/window-new.png b/ico/22x22/window-new.png deleted file mode 100644 index 58d82d02be2f1bbd1d38eec876c3f51391603f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tFxQ#M$QgZL^QNbUOYxaKRWTBXsOVReM}Ok5rFrz^u;`7?0{5 zdnz%Dm6dy^)Wle>WMy$D3(?8Rj7A3v3=P{Jm)z7iz{b$?M>6Ab(!9?=OBg&|{an^L HB{Ts5LH$Ro diff --git a/ico/22x22/zoom-draw.png b/ico/22x22/zoom-draw.png deleted file mode 100644 index 1d04149d122a8821e40e37c437ca6a9f0cf84b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4{~&p{!fY=VU@`@3~J z{fk1G1yo`^??umjw8ZAh-Kn>>99=7}{pZm;UWUZg!MiRL%W1v5xN*KBe>|&qRcXt% zown{5AHSJeZ}-xBvB`{^DQRk&Mzopr0LE%)asU7T diff --git a/ico/22x22/zoom-in.png b/ico/22x22/zoom-in.png deleted file mode 100644 index 2ae499de18633c64f4da390b3596cd0996556f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4epU}Z;eW|?5aDuz3J?6Z_X^IdM3VmCf11y0)=M-UBuw&>gTe~DWM4f DMt)o& diff --git a/ico/22x22/zoom-out.png b/ico/22x22/zoom-out.png deleted file mode 100644 index cdd8d75051722b39b6f32bdad90d4b6d4036f8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4v}Cpj<>Xt)P{rULy7$~yv%-%> zF>Y1HulIcazSRARRi5jUFst{GXU-XVc1vHfYF8KC_+0ed{qyPjzDzm4wr_Sx;}X{G drux4U*^YTwUCjS*^*7L^44$rjF6*2UngC7;YqS6W diff --git a/ico/32x32/format-text-bold.png b/ico/32x32/format-text-bold.png deleted file mode 100644 index 52d835f86aaf7f382c67fc054a89ebcd5bdde6bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmV;_0xSKAP)MUpqB~cp%!6J$Rpq_Py+fLsr}`0d9l%G zEcpz0-9=G!T109d0|)E%`sa|Lz5P9ckZ0m8c@|)5!pqTCjj^Xe6-fi2SG4ftJT)Jtn(i`1it`Cy0n;y&ZMyb0000@8qk?%52=D)L@5fz8AX20d zC8bPDDbwRJv5*-yg%BIR0$|&A0@%}9?+@>P7NF5+*uWex-)uH_-pYwE%5%A#rM12V zriWH5nM^K}N~N|x8_Eu7tq(or08_nQ?;t2UvIA1eq7Y*J6Qz%i+U8JiGtsc z#bW2c3V>2-Q3%oU&Qqz>Gk_4{LTeq^E`+#z7ob+Fb%Czmmr|Zf%W<3sVEZH4u>S=S wKm-s0L;!yuV3JSq8E^w&nr1&7oJjvsFPT4WgCZSZg#Z8m07*qoM6N<$f=1ZQ1poj5 diff --git a/ico/32x32/format-text-italic.png b/ico/32x32/format-text-italic.png deleted file mode 100644 index fc025fb0af990bf1736c169be6017bb5b3f43b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmV+m0`&cfP)h1NE9f?#8z_Vx>#ynt4wQe$Z+ zcD{f%D)w3l$%ajvH&C##Qbfyi*?@%2jLm?Pu*l92+nCeLoSD5dhs%7hz(W6BWb$#d z+1!;IV)4gz5)=@p_=A-o?n-(^AbS4jU8nl`~Ch`r2zn(X!9$RLgzOS$MGr=y#ojV zJS9o8ZBp;t0U~Ov%K_lhwB9K|6h(Ca2g(jdqtQd90fHdd2e6{-&0sM2t~7uxdR_v! zpywq39MIEcg`tif5j}Ui-7VVywjDTzLQe=`jGj|~D2nPt)KYesW!ZhD0m3lc!!LTb zHt0D80C1$noSCiAvkowiUZ>OftTX^Tp{J`fhCb2LWzqp}=;W zlCm#EG%2bTLY(({y|iqA!oOl6#Ds|6=9Xu?l(O(ZX3ol9zR*Gd@B`N8f*?Q2mL32A N002ovPDHLkV1iqn;G_Tm diff --git a/ico/32x32/format-text-underline.png b/ico/32x32/format-text-underline.png deleted file mode 100644 index 53a8045dc0e459f8395dce9884de41f1c97354cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmVq&lR2;>zQyTJ)OA4i?d8w@+HfMQo@44rFguM5FLbEQh z89dM1Bzcz7(pu}Q6#ogyT>ub~^H!_%n3X?g10Y!f;HR|SNBFn<$tQ9~h^*I5+$HV|p6g>mz4%bCwWyHv8vUZIzorwY3?RE&@X1GrB zz;)fyV9j;i4FEeyznRQt%K8`qfa5szIF4%omIlhpj^jLdo_7l1$r!UGA{PJ_0dz&A zo+sP-9QReNRu2I*0nA&hJ(9H`2y~v@+{aLBeJ3LO0A4a|9RPcIHwVV}0)6?uzYvDu z5lI)oT2g)^d0#GENm=d)TnExAU=d(5rxD= zpTW0?HxMfkEJP5|!csIuqUak~*(!*;%Ia9`N-jIImswp4e;7z+&N=_bnM@Aw-$g{5 z?`u0;wICgMt82yTR3d=a!Fgo><7^2Zmk)JqVKEW}m13!`o-Ek(km>C2U8w^kA;@Hb zOcrb=XF3Omp%A~)f$zm;^QLoj5(psyAnL0Pz=bH7&hfbvLUIKOoPVIJ%5y3Qz)QoPc^J6vRvgpq~>k&hbKs3jw#yO!BbB014IiNx%SDv}MjD zv9UT}+-*k!u!c+M3R@0D}Et+-?bvtdX)Xp8=2!7onAvEBfN~o6P_!zwFUv-=1;5>+_4%0ej3} zR3yE*8QjHC0BN?os@~iH0N7)d(AaQ*`2Mg9mCl$%9gzJK5(52tJ+PoXUJb6%rC7r# z%sgsLyCQeMo>*y_G-@5+g?kY@pgfH9MolR%8bFBb$yJrK7yt>z@ecu{=C3l0(g67D h4qWi3^a%dFz5prPV_W}>VIBYg002ovPDHLkV1gQD{-*!{ diff --git a/ico/32x32/insert-link.png b/ico/32x32/insert-link.png deleted file mode 100644 index f8bd90cffd9c9e8c741c8fe250152e375cae571e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E91o-U3d z5v^~h*?O@!3bfwW<~h^*g~4snBS|sV?W>gqSq`3I?pWh4!269MZIMF9MZfhAHmMtY z;8*6~5O;9J=@j<1!n=}F126uZ^zzjzJ-J}kP=~Yi?XHYx(~A9EzPatto2+8V%n*8) zVZ$u`4nw(;-FJ@{{#5T`={UjD;5*4b?c1b#vv1};v+*sm+v@2z>*kt{ISfB$HB6Cs zT*dLQZi;@(1-1)*xzFz~o!o6yd7tCMz3pe#Ox!t3>gxr|?QTWV3}@bGv=kUB<-~`U z2REnezx+}rjd@AWDJ{($r_flog4DF`_fr-8m$7JjPWp1}=(Kl?f|lV|bA;viv-zLj z;XAqZih0hVph|AmBNFUNMYH@pK3SI6o#mdKI;Vst07fXsW&i*H diff --git a/ico/32x32/printer.png b/ico/32x32/printer.png deleted file mode 100644 index 47f73d6f16eb5c4ca086656c6a8a84a4dfb51a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt;`-E{-7) zt#79|@--N6u&n-Ay=NNxtJtLunvuRUv!x><7Hmx_-F8n|aIWzrgJN_4RSdevLsE}OZy!{2-513+>TU6V1neJpzoTz`H{c469&^ZjAu6{1-oD!M)iCeXwY?RkZ55F;;vgGkKEChA1W=qES?8adpMX%!G_4nV1C+9}5f+DgiOPB*89Aj4>%8^h<3ti(!YQ?5j5?eSAm2}LAI z-_ckQi`zunsnmQAIW2!u2A)3;*Avpw#u$SSSR(H>Hwk!xkRLZy@>=;aEHUa3=$k|+^{7Dm*tLN8OOQ0`BSNP;h^ zF@}o_9>RuBHKzoJUQMtdJvcgd~gQ5hnzrEC#c@I4XJNFNm;jqeGh`D-e$)CR7Q zQIm(nSlW|8(+*>xT+^GcUScxw<*AWtB*QEiPPzC=4L88yX`$i?Ig)0KC5?P>%MhIm zQD!LAs0Kk5x{-(qMG(LwpbYb{&;(`6YtKW8DpjBdpbYomHY0(t*ekh!+SWc63p(D# zu$T)c$D57Z+~pKSplX}ihFDdY4AGK=Ol{R;GOJ#zm*E77U`j%(w(1D~BwMGqu{P6q z4qr?`Yl5@ZsdP%c(yY-Srm+e|vR0=z>&EKTh)$Da)+lTU*jY<&s2-hj#k+ zxf}B^B)@$UrOo@N1iFccGgS#W1F0eB77U@O zhSfHQezJ$+j&{reu;N$n|H0gj1#l6Z8#hcU#c+El4;Y`HH-ErRBj>knZSHVTuedNR z%flUOD2DS#w~@iP#WleGqprCvbWwo}exQJ$oi%;6@@Iy?TMx){EL)h;56& zK;Wp2_Bb)tNI9`=5_Y??4REM2G^U~DHvu)#4%)+=YNSzRfZJ;ZviM&EzQ#FRn7=R- z2DnXIxIU9V0USAgeS#9E|7*`EaDPG1PVl4 zAPvD-#3hIb6o|M$8iKKiOArw#5OIMt1Y;4GARSi~iW2o#98KpKLv zh)WO=C=hXhGz4Q2mmnfgAmRdP2*x5VK}4WH#0An2j9-c?CiL(n>EfQa^m30@_OO~O zxW_UjcCzK7gPc1cDyUfgp4P1offc&nioSpbo0>=A;bY%}2#E zCtmgTIzPJUSyt7DvkP+L=kAJmJ+{-vqT=Mk_EnQ_EUm&f@4BuXFc6icd=n} zZOKoU8X7xVu9olWTYl(3j~*|cPq}_8J*qmoy6HEIXX&cC-mTCVq;pL%)fbjAP|uoK z6(!g0+bTaTPJ2E*W@3Z=qcmjTS5^C5X#BBs^^k94cWyGzKD^?Sw8?jrz2nO|OP36& z+iFYMay@73diA06CF_1&IJ)j}`L1^=#-ue|ThO<7-`b;b_n+T>d*H=-NsRRP=6~*E zYO~jogI82)pZ<`}Odpauf~>TBaDRQ2+g2leylo@;?83DU)`tVS?f-V~{1fBqYRK(# zWA~pa)GfL@V#&&j8#<54cyG`=PyQ17inDwAdnZ;e?0QPMP}Xy?#c@*dK4K+k05Oa?{Q$%Xh#l_fCN-H&$)i{`&N{P7Eh4 z@dr|u_Ac_hTT?tL>10hu$y<|mtGkyC{l4_j^5`pnuS+fX@A>!g-hz$Sc?nIAi=UwXIl0uN&Oh6D zY~i5(xjPb%C)E?rywO*BmfBvk^fzK(XU)z(`-hc<<+&@?bf7DvFYEJ)Pkl4|mRy(6 z>GY)YGk<^NJ5w*qoiDD@^~)L`)D|k|b xSFV1_eXrb8;_EZY(_M0)v|HAK=%!f6*Kg#txSb20@sB`{Po8A{%h)-E{{z#GuAu+` diff --git a/ico/48x48/document-print-frame.png b/ico/48x48/document-print-frame.png deleted file mode 100644 index 6c3e472338ebb2bbaa67425bea81db9c32306f14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)PO6G0S){}Tez-WILT;BBvc0Lz?%mZn7zU!zhi z-6RN#&tY2(RhZd6fmgmjA3+c=1aIT!^kTD6irLLhGLsbNyIOX3hyR~{W@pa;i9{li zNZez{_r)FeV{?NxAKbk^?i9uM-K{^1$(o-=15dyF)EGi$@%Znf?&yGuS?!&eVnWcJ z_rY&_+uqa7hbsBeHEL(T|C2xkGY4H0&bd}euYUrk^;4*I0u^mXDirIV0MYs`ViC!h z`TZh&tjvIjWU6`!;AjyOD>1;#gQ@rmZxhiCF!MVACjiC(KHq9O5|ONJe^Cug#UG;- z|I#^k2w+sTPbQPrdyMyIv@QP-f62@T0A2u?sOlik^M2cYqa?u01C-(mB6{tdyEMk^ z1Nek;5I_2e2O<~{ks-=CUl7qNYwd+GW}k@8QHuZIoO|Qje^3J=GE~*K2qYe8GN9`H zyRanjjf*-+0x?FuV(A8AiU*nu^xGHxs(K7ytg1b0?S+W+LWu{$E#j*@&%YXD4psFG zK$nR6%N7qTu#w%Z%x={O9RSan*#dZmsd#H`=B=`Z+5~z}{LhU5Fo3SAW}(Cb9tkv6 zVzDc=^{>bps7>J4LlAzK*Q-9Eo5j6PAdyHU5{bkrxdFO;(DoM`y;cAK002ovPDHLk FV1fY!4+8)I diff --git a/ico/48x48/user-away-extended.png b/ico/48x48/user-away-extended.png deleted file mode 100644 index 4ff79a78b36846827ad6b5d94acb9ac0f18fbdcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1288 zcmV+j1^4=iP)T<@WEPXrq*N(}yq&7oEY| z{q-c{eExnBISOQfNnnAQItTOuv8t|!qUf_$`J8nC zK@eod$HzAU+kyU+v~N^(D2k%}fX>GMtOD>n?>1H42i$9h&I0cPN8&jCstQj##fulOti3Sp`ZjOk1R$5oS(o6YQfZPDnZlnM`JxjVK$a>Qd7^o0emfMvoaMYb|x9hKLNB_Gns;%?^}I zTkw6~X=vF5eBXCO!~;;(FfA{20AU!813v&us@3Wydx?!vsZ=(rYLAFal*{EW)ADR~ zKvi|8>F@G=ztc`)eR!TX57=dX?!cl*v`UFl6ny}EuBtuNYIPqi`leRZ{nXwCC&Dm1 zXv4S7=_(>m0Kci~I@fiFm_-ogLSTqmDRItmoDEo(=uJ7#=kpJW$SAc>%0nF;9UJR? zQr3g#dGpLaUjQzP$RlAGeqyVoscbSaF>$J|uWw95^1whG$D8{5`=`6RyT3kt`gGEW z8w5e7tE=mARXqgUM{PGBEtktp6^XOGR=HJG5AfHu%A~56MC34VDwoSm0aPlL9^e*} z=L@RZW9&~jjk-b0000T<@WEPXrq*N(}yq&7oEY| z{q-c{eExnBISOQfNnnAQItTOuv8t|!qUf_$`J8nC zK@eod$HzAU+kyU+v~N^(D2k%}fX>GMtOD>n?>1H42i$9h&I0cPN8&jCstQj##fulOti3Sp`ZjOk1R$5oS(o6YQfZPDnZlnM`JxjVK$a>Qd7^o0emfMvoaMYb|x9hKLNB_Gns;%?^}I zTkw6~X=vF5eBXCO!~;;(FfA{20AU!813v&us@3Wydx?!vsZ=(rYLAFal*{EW)ADR~ zKvi|8>F@G=ztc`)eR!TX57=dX?!cl*v`UFl6ny}EuBtuNYIPqi`leRZ{nXwCC&Dm1 zXv4S7=_(>m0Kci~I@fiFm_-ogLSTqmDRItmoDEo(=uJ7#=kpJW$SAc>%0nF;9UJR? zQr3g#dGpLaUjQzP$RlAGeqyVoscbSaF>$J|uWw95^1whG$D8{5`=`6RyT3kt`gGEW z8w5e7tE=mARXqgUM{PGBEtktp6^XOGR=HJG5AfHu%A~56MC34VDwoSm0aPlL9^e*} z=L@RZW9&~jjk-b0000~}U&Kt+|FE{-7? zjc;!_ay2N3xCVA_d!7}W&^wD|8C%uncQd*F|8%(^pyFA-ZHr!q;X7Nllb)J)&+X`w zS~C6Z%R{fv%{e=zY)x41<@@;wUuNc;)-tm#kZcIs(^~ZXZ?w<-2F45!KaF7)W5&J{ kVD_`_o@ej3sCX`64x1_?>a_2P4$u({p00i_>zopr0Q^8(XaE2J diff --git a/ico/diagram.png b/ico/diagram.png deleted file mode 100644 index 1a59e02b876a3b8496de2a952da92528bd8169c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv*!3HG19C1kkQY^(zo*^7SP{WbZ0pxQQctjQh z)n5l;MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1ToJzX3_ zEP9g@B-S(t9{ce1>tFv)$JyrjX(^6kH@0L3D_gSt{Q2{$u>lYSK9VXi$huKr#G^X* z;3e)*9%sKTb#--LcL*8olJOPN4gIY4^qeCT!$Tp-j%)S2XMn~tc)I$ztaD0e0sxR? BMArZS diff --git a/qelectrotech.qrc b/qelectrotech.qrc index 9f72e5274..dd68461dd 100644 --- a/qelectrotech.qrc +++ b/qelectrotech.qrc @@ -1,148 +1,9 @@ - ico/128x128/diagram.png - ico/128x128/settings.png - ico/128x128/document-export.png - ico/128x128/printer.png - ico/16x16/application-exit.png - ico/16x16/arrow-left.png - ico/16x16/arrow-right.png - ico/16x16/circle.png - ico/16x16/configure.png - ico/16x16/dialog-cancel.png - ico/16x16/dialog-ok.png - ico/16x16/document-close.png - ico/16x16/document-export.png - ico/16x16/document-import.png - ico/16x16/document-new.png - ico/16x16/document-open.png - ico/16x16/document-open-recent.png - ico/16x16/document-print-frame.png - ico/16x16/document-print.png - ico/16x16/document-save-all.png - ico/16x16/document-save-as.png - ico/16x16/document-save.png - ico/16x16/edit-clear-locationbar-ltr.png - ico/16x16/edit-clear.png - ico/16x16/edit-copy.png - ico/16x16/edit-cut.png - ico/16x16/edit-delete.png - ico/16x16/edit-paste.png - ico/16x16/edit-redo.png - ico/16x16/edit-rename.png - ico/16x16/edit-select-all.png - ico/16x16/edit-table-insert-row-above.png - ico/16x16/edit-table-insert-column-left.png - ico/16x16/edit-table-insert-row-under.png - ico/16x16/edit-table-delete-row.png - ico/16x16/edit-table-insert-column-right.png - ico/16x16/edit-table-delete-column.png - ico/16x16/edit-table-cell-split.png - ico/16x16/edit-table-cell-merge.png - ico/16x16/edit-undo.png - ico/16x16/flip.png - ico/16x16/folder-new.png - ico/16x16/folder.png - ico/16x16/go-down.png - ico/16x16/go-home.png - ico/16x16/go-up.png - ico/16x16/label.png - ico/16x16/list-add.png - ico/16x16/list-remove.png - ico/16x16/masquer.png - ico/16x16/mirror.png - ico/16x16/preferences-desktop-user.png - ico/16x16/qet.png - ico/16x16/user-busy.png - ico/16x16/user-online.png - ico/16x16/view-fullscreen.png - ico/16x16/view-refresh.png - ico/16x16/view-restore.png - ico/16x16/window-new.png - ico/16x16/zoom-draw.png - ico/16x16/zoom-in.png - ico/16x16/zoom-out.png - ico/22x22/application-exit.png - ico/22x22/arc.png - ico/22x22/arrow-left.png - ico/22x22/arrow-right.png - ico/22x22/bring_forward.png - ico/22x22/configure.png - ico/22x22/dialog-cancel.png - ico/22x22/dialog-ok.png - ico/22x22/document-close.png - ico/22x22/document-export.png - ico/22x22/document-import.png - ico/22x22/document-new.png - ico/22x22/document-open.png - ico/22x22/document-open-recent.png - ico/22x22/document-print-frame.png - ico/22x22/document-print.png - ico/22x22/document-save-all.png - ico/22x22/document-save-as.png - ico/22x22/document-save.png - ico/22x22/edit-clear-locationbar-ltr.png - ico/22x22/edit-clear.png - ico/22x22/edit-copy.png - ico/22x22/edit-cut.png - ico/22x22/edit-delete.png - ico/22x22/edit-paste.png - ico/22x22/edit-redo.png - ico/22x22/edit-rename.png - ico/22x22/edit-select-all.png - ico/22x22/edit-table-insert-row-above.png - ico/22x22/edit-table-insert-column-left.png - ico/22x22/edit-table-insert-row-under.png - ico/22x22/edit-table-delete-row.png - ico/22x22/edit-table-insert-column-right.png - ico/22x22/edit-table-delete-column.png - ico/22x22/edit-table-cell-split.png - ico/22x22/edit-table-cell-merge.png - ico/22x22/edit-undo.png - ico/22x22/ellipse.png - ico/22x22/folder-new.png - ico/22x22/go-down.png - ico/22x22/go-home.png - ico/22x22/go-up.png - ico/22x22/insert-image.png - ico/22x22/line.png - ico/22x22/list-add.png - ico/22x22/list-remove.png - ico/22x22/move.png - ico/22x22/object-locked.png - ico/22x22/object-rotate-right.png - ico/22x22/object-unlocked.png - ico/22x22/polygon.png - ico/22x22/preferences-desktop-user.png - ico/22x22/rectangle.png - ico/22x22/restaurer.png - ico/22x22/select.png - ico/22x22/single_page.png - ico/22x22/start.png - ico/22x22/text.png - ico/22x22/transform-scale.png - ico/22x22/two_pages.png - ico/22x22/view_fit_width.png - ico/22x22/view-fullscreen.png - ico/22x22/view-refresh.png - ico/22x22/view-restore.png - ico/22x22/window-new.png - ico/22x22/zoom-draw.png - ico/22x22/zoom-in.png - ico/22x22/zoom-out.png ico/256x256/qelectrotech.png ico/256x256/qet.png - ico/32x32/image-x-eps.png - ico/32x32/printer.png - ico/32x32/qt.png - ico/diagram.png ico/splash.png titleblocks/default.titleblock - ico/48x48/user-away.png - ico/48x48/user-away-extended.png - ico/32x32/format-text-bold.png - ico/32x32/format-text-italic.png - ico/32x32/format-text-underline.png ico/24x16/ar.png ico/24x16/cs.png ico/24x16/de.png @@ -158,34 +19,10 @@ ico/24x16/sl.png ico/24x16/gr.png ico/24x16/it.png - ico/22x22/applications-development-translation.png - ico/48x48/view-pim-journal.png ico/24x16/nl.png ico/24x16/nl_BE.png - ico/22x22/autoconnect.png - ico/16x16/folio-new.png - ico/48x48/document-print-frame.png - ico/22x22/Actions-player-time-icon.png ico/24x16/dk.png ico/24x16/br.png - ico/22x22/grid.png - ico/16x16/diagram.png - ico/16x16/edit-clear-locationbar-rtl.png - ico/16x16/edit-download.png - ico/16x16/help-contents.png - ico/16x16/help-donate.png - ico/16x16/item-cancel.png - ico/16x16/item-copy.png - ico/16x16/item-move.png - ico/16x16/kdenlive-show-video.png - ico/16x16/object-rotate-right.png - ico/16x16/project-delete.png - ico/16x16/qt.png - ico/22x22/edit-clear-locationbar-rtl.png - ico/22x22/format-text-subscript.png - ico/22x22/format-text-superscript.png - ico/22x22/project-delete.png - ico/22x22/view-fit-window.png ico/24x16/ad.png ico/24x16/ae.png ico/24x16/af.png @@ -434,8 +271,6 @@ ico/24x16/za.png ico/24x16/zm.png ico/24x16/zw.png - ico/32x32/format-text-color.png - ico/32x32/insert-link.png ico/breeze-icons/128x128/apps/qelectrotech.png ico/breeze-icons/128x128/mimetypes/application-x-qet-element.png ico/breeze-icons/128x128/mimetypes/application-x-qet-project.png @@ -490,7 +325,6 @@ ico/generated/rect-to-polyline.svg ico/generated/rect-to-bezier.svg ico/generated/ellipse-to-bezier.svg - ico/16x16/object-group.png ico/mac_icon/elmt.icns ico/mac_icon/qelectrotech.icns ico/mac_icon/qet.icns @@ -502,25 +336,7 @@ ico/windows_icon/qelectrotech.ico ico/windows_icon/qelectrotech.rc ico/copyright - ico/16x16/folio-delete.png - ico/16x16/table-of-content.png - ico/16x16/folio-properties.png - ico/16x16/select.png - ico/16x16/grid.png - ico/16x16/move.png - ico/16x16/element.png - ico/16x16/folder-open.png - ico/16x16/folder-properties.png - ico/16x16/go-up-double.png - ico/16x16/go-down-double.png - ico/16x16/go-top.png - ico/16x16/go-bottom.png - ico/22x22/folder-open.png - ico/16x16/edit-select-invert.png - ico/16x16/edit-select-none.png - ico/16x16/transform-rotate.png ico/16x16/window-close.svg - ico/16x16/conductor.png ico/22x22/color/color-brown.png ico/22x22/color/color-gray.png ico/22x22/color/color-orange.png diff --git a/sources/NameList/ui/namelistwidget.ui b/sources/NameList/ui/namelistwidget.ui index a38dd046d..33fec9d97 100644 --- a/sources/NameList/ui/namelistwidget.ui +++ b/sources/NameList/ui/namelistwidget.ui @@ -36,8 +36,7 @@ Ajouter une ligne - - :/ico/16x16/list-add.png:/ico/16x16/list-add.png + @@ -48,8 +47,7 @@ Copier dans le presse papier - - :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png + diff --git a/sources/SearchAndReplace/ui/replacefoliowidget.ui b/sources/SearchAndReplace/ui/replacefoliowidget.ui index b438180b9..a46499e16 100644 --- a/sources/SearchAndReplace/ui/replacefoliowidget.ui +++ b/sources/SearchAndReplace/ui/replacefoliowidget.ui @@ -180,8 +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 dd45f6a26..e14cf95c9 100644 --- a/sources/SearchAndReplace/ui/searchandreplacewidget.ui +++ b/sources/SearchAndReplace/ui/searchandreplacewidget.ui @@ -106,8 +106,7 @@ - - :/ico/16x16/go-bottom.png:/ico/16x16/go-bottom.png + true @@ -123,8 +122,7 @@ - - :/ico/16x16/go-top.png:/ico/16x16/go-top.png + true @@ -140,8 +138,7 @@ - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + true diff --git a/sources/TerminalStrip/ui/freeterminaleditor.ui b/sources/TerminalStrip/ui/freeterminaleditor.ui index 4f318c60e..b0432600f 100644 --- a/sources/TerminalStrip/ui/freeterminaleditor.ui +++ b/sources/TerminalStrip/ui/freeterminaleditor.ui @@ -84,8 +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 ef65cdf9c..4b5020e08 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.ui +++ b/sources/TerminalStrip/ui/terminalstripeditor.ui @@ -63,8 +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 53b413b3b..3678c1a8b 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.ui +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.ui @@ -54,8 +54,7 @@ - - :/ico/16x16/list-add.png:/ico/16x16/list-add.png + Ajouter un bornier @@ -66,8 +65,7 @@ - - :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png + Supprimer le bornier @@ -78,8 +76,7 @@ - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + Recharger diff --git a/sources/autoNum/ui/autonumberingdockwidget.ui b/sources/autoNum/ui/autonumberingdockwidget.ui index b0bcc6e61..e2fd474ef 100644 --- a/sources/autoNum/ui/autonumberingdockwidget.ui +++ b/sources/autoNum/ui/autonumberingdockwidget.ui @@ -73,8 +73,7 @@ - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + @@ -161,8 +160,7 @@ - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + @@ -238,8 +236,7 @@ - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + @@ -319,8 +316,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 8da8d2e70..4c4626415 100644 --- a/sources/autoNum/ui/selectautonumw.ui +++ b/sources/autoNum/ui/selectautonumw.ui @@ -63,8 +63,7 @@ - - :/ico/16x16/edit-delete.png:/ico/16x16/edit-delete.png + @@ -136,8 +135,7 @@ - - :/ico/22x22/list-remove.png:/ico/22x22/list-remove.png + false @@ -153,8 +151,7 @@ - - :/ico/22x22/list-add.png:/ico/22x22/list-add.png + false @@ -170,8 +167,7 @@ - - :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png + @@ -184,8 +180,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 8300b2387..2464c6c81 100644 --- a/sources/dataBase/ui/elementquerywidget.ui +++ b/sources/dataBase/ui/elementquerywidget.ui @@ -88,8 +88,7 @@ - - :/ico/16x16/go-up.png:/ico/16x16/go-up.png + false @@ -105,8 +104,7 @@ - - :/ico/16x16/list-add.png:/ico/16x16/list-add.png + @@ -119,8 +117,7 @@ - - :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png + @@ -133,8 +130,7 @@ - - :/ico/16x16/go-down.png:/ico/16x16/go-down.png + @@ -353,8 +349,7 @@ - - :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png + @@ -380,8 +375,7 @@ - - :/ico/16x16/document-save.png:/ico/16x16/document-save.png + false diff --git a/sources/dataBase/ui/summaryquerywidget.ui b/sources/dataBase/ui/summaryquerywidget.ui index de98cd343..5ed869f20 100644 --- a/sources/dataBase/ui/summaryquerywidget.ui +++ b/sources/dataBase/ui/summaryquerywidget.ui @@ -76,8 +76,7 @@ - - :/ico/16x16/go-up.png:/ico/16x16/go-up.png + @@ -87,8 +86,7 @@ - - :/ico/16x16/list-add.png:/ico/16x16/list-add.png + @@ -98,8 +96,7 @@ - - :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png + @@ -109,8 +106,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 c34d26888..434d2fce6 100644 --- a/sources/editor/ui/polygoneditor.ui +++ b/sources/editor/ui/polygoneditor.ui @@ -48,8 +48,7 @@ - - :/ico/16x16/list-add.png:/ico/16x16/list-add.png + Ajouter un point @@ -57,8 +56,7 @@ - - :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png + Supprimer ce point diff --git a/sources/editor/ui/qetelementeditor.ui b/sources/editor/ui/qetelementeditor.ui index 53c380cba..6df529dd9 100644 --- a/sources/editor/ui/qetelementeditor.ui +++ b/sources/editor/ui/qetelementeditor.ui @@ -14,8 +14,7 @@ QElectroTech - Éditeur d'élément - - :/ico/16x16/qet.png:/ico/16x16/qet.png + @@ -55,8 +54,7 @@ Coller depuis... - - :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png + @@ -202,8 +200,7 @@ - - :/ico/16x16/edit-select-all.png:/ico/16x16/edit-select-all.png + Tout sélectionner @@ -211,8 +208,7 @@ - - :/ico/22x22/document-new.png:/ico/22x22/document-new.png + &Nouveau @@ -220,8 +216,7 @@ - - :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png + &Ouvrir @@ -229,8 +224,7 @@ - - :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png + &Ouvrir depuis un fichier @@ -238,8 +232,7 @@ - - :/ico/22x22/document-save.png:/ico/22x22/document-save.png + &Enregistrer @@ -247,8 +240,7 @@ - - :/ico/22x22/document-save-as.png:/ico/22x22/document-save-as.png + Enregistrer sous @@ -256,8 +248,7 @@ - - :/ico/22x22/document-save.png:/ico/22x22/document-save.png + Enregistrer dans un fichier @@ -265,8 +256,7 @@ - - :/ico/22x22/document-export.png:/ico/22x22/document-export.png + Exporter en SVG @@ -274,8 +264,7 @@ - - :/ico/22x22/view-refresh.png:/ico/22x22/view-refresh.png + Recharger @@ -283,8 +272,7 @@ - - :/ico/16x16/application-exit.png:/ico/16x16/application-exit.png + &Fermer cet éditeur @@ -295,8 +283,7 @@ - - :/ico/16x16/edit-select-none.png:/ico/16x16/edit-select-none.png + Désélectionner tout @@ -304,8 +291,7 @@ - - :/ico/16x16/edit-cut.png:/ico/16x16/edit-cut.png + Co&uper @@ -313,8 +299,7 @@ - - :/ico/16x16/edit-copy.png:/ico/16x16/edit-copy.png + Cop&ier @@ -322,8 +307,7 @@ - - :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png + C&oller @@ -331,8 +315,7 @@ - - :/ico/16x16/edit-paste.png:/ico/16x16/edit-paste.png + C&oller dans la zone @@ -348,8 +331,7 @@ - - :/ico/16x16/element.png:/ico/16x16/element.png + Un élément @@ -357,8 +339,7 @@ - - :/ico/16x16/edit-select-invert.png:/ico/16x16/edit-select-invert.png + Inverser la sélection @@ -366,8 +347,7 @@ - - :/ico/22x22/edit-delete.png:/ico/22x22/edit-delete.png + &Supprimer @@ -383,8 +363,7 @@ - - :/ico/16x16/preferences-desktop-user.png:/ico/16x16/preferences-desktop-user.png + Éditer les informations sur l'auteur @@ -400,8 +379,7 @@ - - :/ico/22x22/zoom-in.png:/ico/22x22/zoom-in.png + Zoom avant @@ -409,8 +387,7 @@ - - :/ico/22x22/zoom-out.png:/ico/22x22/zoom-out.png + Zoom arrière @@ -434,8 +411,7 @@ - - :/ico/16x16/qet.png:/ico/16x16/qet.png + À &propos de QElectroTech @@ -446,8 +422,7 @@ - - :/ico/16x16/help-contents.png:/ico/16x16/help-contents.png + Manuel en ligne @@ -458,8 +433,7 @@ - - :/ico/16x16/kdenlive-show-video.png:/ico/16x16/kdenlive-show-video.png + Chaine Youtube @@ -470,8 +444,7 @@ - - :/ico/16x16/help-donate.png:/ico/16x16/help-donate.png + Soutenir le projet par un don @@ -482,8 +455,7 @@ - - :/ico/16x16/qt.png:/ico/16x16/qt.png + À propos de &Qt @@ -510,8 +482,7 @@ - - :/ico/16x16/mirror.png:/ico/16x16/mirror.png + Mirror @@ -519,8 +490,7 @@ - - :/ico/16x16/flip.png:/ico/16x16/flip.png + Flip @@ -536,8 +506,7 @@ - - :/ico/22x22/folder-open.png:/ico/22x22/folder-open.png + importer un élément à redimensionner diff --git a/sources/elementspanel.cpp b/sources/elementspanel.cpp index d4d318717..72e20ef79 100644 --- a/sources/elementspanel.cpp +++ b/sources/elementspanel.cpp @@ -255,9 +255,9 @@ bool ElementsPanel::matchesFilter(const QTreeWidgetItem *item, */ void ElementsPanel::reload() { - QIcon system_icon(":/ico/16x16/qet.png"); + QIcon system_icon = QIcon::fromTheme("qet"); QIcon company_icon = QET::Icons::Company; - QIcon user_icon(":/ico/16x16/go-home.png"); + QIcon user_icon = QIcon::fromTheme("go-home"); // load the common title block templates collection TitleBlockTemplatesCollection *common_tbt_collection = QETApp::commonTitleBlockTemplatesCollection(); diff --git a/sources/print/projectprintwindow.ui b/sources/print/projectprintwindow.ui index beae39275..70cbf2e59 100644 --- a/sources/print/projectprintwindow.ui +++ b/sources/print/projectprintwindow.ui @@ -134,8 +134,7 @@ - - :/ico/16x16/dialog-ok.png:/ico/16x16/dialog-ok.png + true @@ -305,8 +304,7 @@ - - :/ico/22x22/view_fit_width.png:/ico/22x22/view_fit_width.png + Ajuster la largeur @@ -314,8 +312,7 @@ - - :/ico/22x22/view-fit-window.png:/ico/22x22/view-fit-window.png + Ajuster la page @@ -323,8 +320,7 @@ - - :/ico/16x16/zoom-out.png:/ico/16x16/zoom-out.png + Zoom arrière @@ -332,8 +328,7 @@ - - :/ico/16x16/zoom-in.png:/ico/16x16/zoom-in.png + Zoom avant @@ -365,8 +360,7 @@ - - :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png + Page précédente @@ -374,8 +368,7 @@ - - :/ico/16x16/arrow-right.png:/ico/16x16/arrow-right.png + Page suivante @@ -391,8 +384,7 @@ - - :/ico/22x22/single_page.png:/ico/22x22/single_page.png + Afficher une seule page @@ -400,8 +392,7 @@ - - :/ico/22x22/two_pages.png:/ico/22x22/two_pages.png + Afficher deux pages @@ -417,8 +408,7 @@ - - :/ico/48x48/document-print-frame.png:/ico/48x48/document-print-frame.png + mise en page diff --git a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui index 3c9751697..5d07ce7a1 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui +++ b/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.ui @@ -62,8 +62,7 @@ - - :/ico/16x16/arrow-right.png:/ico/16x16/arrow-right.png + true @@ -178,8 +177,7 @@ - - :/ico/16x16/arrow-left.png:/ico/16x16/arrow-left.png + true diff --git a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui index 649e756c7..2ae359594 100644 --- a/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui +++ b/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.ui @@ -20,8 +20,7 @@ Requête - - :/ico/16x16/edit-rename.png:/ico/16x16/edit-rename.png + @@ -31,8 +30,7 @@ Recharger - - :/ico/16x16/view-refresh.png:/ico/16x16/view-refresh.png + diff --git a/sources/qeticons.cpp b/sources/qeticons.cpp index ae3c9ff4f..dbfe7a736 100644 --- a/sources/qeticons.cpp +++ b/sources/qeticons.cpp @@ -427,8 +427,7 @@ void QET::Icons::initIcons() 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"); + Diagram = QIcon::fromTheme("diagram"); DiagramBg = QIcon::fromTheme("diagram_bg"); DiagramDelete = QIcon::fromTheme("folio-delete"); DialogCancel = QIcon::fromTheme("dialog-cancel"); diff --git a/sources/ui/conductorpropertieswidget.ui b/sources/ui/conductorpropertieswidget.ui index 41163cfed..301aa0f18 100644 --- a/sources/ui/conductorpropertieswidget.ui +++ b/sources/ui/conductorpropertieswidget.ui @@ -233,8 +233,7 @@ - - :/ico/16x16/configure.png:/ico/16x16/configure.png + diff --git a/sources/ui/configsaveloaderwidget.ui b/sources/ui/configsaveloaderwidget.ui index aaa8aa130..97c35b529 100644 --- a/sources/ui/configsaveloaderwidget.ui +++ b/sources/ui/configsaveloaderwidget.ui @@ -29,8 +29,7 @@ - - :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png + @@ -40,8 +39,7 @@ - - :/ico/16x16/document-save.png:/ico/16x16/document-save.png + diff --git a/sources/ui/dialogwaiting.cpp b/sources/ui/dialogwaiting.cpp index 498504e1e..1f9f7c468 100644 --- a/sources/ui/dialogwaiting.cpp +++ b/sources/ui/dialogwaiting.cpp @@ -19,6 +19,7 @@ #include "dialogwaiting.h" #include "ui_dialogwaiting.h" #include "../qet.h" +#include #include @@ -32,6 +33,8 @@ DialogWaiting::DialogWaiting(QWidget *parent) : ui(new Ui::DialogWaiting) { ui->setupUi(this); + ui->label->setPixmap(QIcon::fromTheme("user-away-extended") + .pixmap(ui->label->maximumSize())); QET::trackDialogGeometry(this); setTitle( "..." ); setDetail( "..." ); diff --git a/sources/ui/dialogwaiting.ui b/sources/ui/dialogwaiting.ui index a7d223783..bb6ff955e 100644 --- a/sources/ui/dialogwaiting.ui +++ b/sources/ui/dialogwaiting.ui @@ -62,9 +62,6 @@ - - :/ico/48x48/user-away-extended.png - true diff --git a/sources/ui/dynamicelementtextitemeditor.ui b/sources/ui/dynamicelementtextitemeditor.ui index 549fe9dbb..f4d264cd3 100644 --- a/sources/ui/dynamicelementtextitemeditor.ui +++ b/sources/ui/dynamicelementtextitemeditor.ui @@ -25,8 +25,7 @@ ... - - :/ico/16x16/document-save.png:/ico/16x16/document-save.png + @@ -39,8 +38,7 @@ ... - - :/ico/16x16/folder-open.png:/ico/16x16/folder-open.png + @@ -79,8 +77,7 @@ ... - - :/ico/16x16/object-group.png:/ico/16x16/object-group.png + @@ -93,8 +90,7 @@ ... - - :/ico/16x16/list-remove.png:/ico/16x16/list-remove.png + diff --git a/sources/ui/masterpropertieswidget.ui b/sources/ui/masterpropertieswidget.ui index 910ac27c0..123042be0 100644 --- a/sources/ui/masterpropertieswidget.ui +++ b/sources/ui/masterpropertieswidget.ui @@ -136,8 +136,7 @@ - - :/ico/16x16/go-up.png:/ico/16x16/go-up.png + @@ -150,8 +149,7 @@ - - :/ico/16x16/go-down.png:/ico/16x16/go-down.png + diff --git a/sources/ui/thirdpartybinaryinstalldialog.ui b/sources/ui/thirdpartybinaryinstalldialog.ui index cbd94b056..dff03700c 100644 --- a/sources/ui/thirdpartybinaryinstalldialog.ui +++ b/sources/ui/thirdpartybinaryinstalldialog.ui @@ -33,8 +33,7 @@ Télechargement - - :/ico/16x16/edit-download.png:/ico/16x16/edit-download.png + @@ -44,8 +43,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 b1ad44d4b..da3edd61c 100644 --- a/sources/ui/titleblockpropertieswidget.ui +++ b/sources/ui/titleblockpropertieswidget.ui @@ -119,8 +119,7 @@ - - :/ico/22x22/edit-rename.png:/ico/22x22/edit-rename.png + @@ -208,8 +207,7 @@ - - :/ico/16x16/configure.png:/ico/16x16/configure.png + @@ -303,8 +301,7 @@ - - :/ico/22x22/start.png:/ico/22x22/start.png +