diff --git a/sources/cli_export.cpp b/sources/cli_export.cpp index 034005d03..314d61606 100644 --- a/sources/cli_export.cpp +++ b/sources/cli_export.cpp @@ -564,7 +564,14 @@ int exportWiring(QETProject &project, const QString &output) QSqlQuery query = project.dataBase()->newQuery( "SELECT " % columns.join(", ") % - " FROM wiring_list_view ORDER BY diagram_position, wire_number"); + " FROM wiring_list_view" + //Wire numbers are text, so a plain sort puts "10" before "9". + //Numeric ones first, ordered by value; anything non-numeric after, + //ordered as text. The trailing wire_number keeps ties stable. + " ORDER BY diagram_position," + " CASE WHEN wire_number GLOB '[0-9]*' THEN 0 ELSE 1 END," + " CAST(wire_number AS INTEGER)," + " wire_number"); if (!query.exec()) { err << "Wiring list query failed: " << query.lastError().text() << "\n"; return 1; diff --git a/sources/ui/wiringlistdialog.cpp b/sources/ui/wiringlistdialog.cpp index cf80a6025..a28f2425e 100644 --- a/sources/ui/wiringlistdialog.cpp +++ b/sources/ui/wiringlistdialog.cpp @@ -52,7 +52,14 @@ WiringListDialog::WiringListDialog(QETProject *project, QWidget *parent) : "SELECT wire_number, from_element_label, from_terminal," " to_element_label, to_terminal, diagram_position" " FROM wiring_list_view" - " ORDER BY diagram_position, wire_number"), + //Wire numbers are text, so a plain sort puts "10" before "9". + //Numeric ones first, ordered by value; anything non-numeric + //after, ordered as text. The trailing wire_number keeps ties + //stable. + " ORDER BY diagram_position," + " CASE WHEN wire_number GLOB '[0-9]*' THEN 0 ELSE 1 END," + " CAST(wire_number AS INTEGER)," + " wire_number"), m_project->dataBase()->database()); model->setHeaderData(0, Qt::Horizontal, tr("Fil", "column title"));