|
3 | 3 | import platform |
4 | 4 | from collections.abc import Iterable |
5 | 5 | from importlib.metadata import version |
| 6 | +from operator import itemgetter |
6 | 7 | from pathlib import Path |
7 | 8 | from typing import TYPE_CHECKING, cast |
8 | 9 |
|
|
16 | 17 | from qtpy.QtGui import QIcon |
17 | 18 | from qtpy.QtWidgets import QLabel, QListWidget, QListWidgetItem, QProgressBar, QVBoxLayout, QWidget |
18 | 19 | from spatialdata import SpatialData |
| 20 | +from spatialdata.models._utils import DEFAULT_COORDINATE_SYSTEM |
19 | 21 |
|
20 | 22 | from napari_spatialdata._viewer import SpatialDataViewer |
21 | 23 | from napari_spatialdata.constants.config import N_CIRCLES_WARNING_THRESHOLD, N_SHAPES_WARNING_THRESHOLD |
@@ -59,7 +61,7 @@ def _onItemChange(self, selected_coordinate_system: QListWidgetItem | int | Iter |
59 | 61 | self._elements = elements |
60 | 62 |
|
61 | 63 | def _set_element_widget_items(self, elements: dict[str, dict[str, str | int]]) -> None: |
62 | | - for key, dict_val in elements.items(): |
| 64 | + for key, dict_val in sorted(elements.items(), key=itemgetter(0)): |
63 | 65 | sdata = self._sdata[dict_val["sdata_index"]] |
64 | 66 | element_type = dict_val["element_type"] |
65 | 67 | element_name = dict_val["original_name"] |
@@ -95,7 +97,11 @@ def __init__(self, sdata: EventedList): |
95 | 97 | self._sdata = sdata |
96 | 98 | self._system: None | str = None |
97 | 99 |
|
98 | | - coordinate_systems = {cs for sdata in self._sdata for cs in sdata.coordinate_systems} |
| 100 | + # Sort alphabetically, but keep default "global" at the top. |
| 101 | + coordinate_systems = sorted(cs for sdata in self._sdata for cs in sdata.coordinate_systems) |
| 102 | + if DEFAULT_COORDINATE_SYSTEM in coordinate_systems: |
| 103 | + coordinate_systems.remove(DEFAULT_COORDINATE_SYSTEM) |
| 104 | + coordinate_systems.insert(0, DEFAULT_COORDINATE_SYSTEM) |
99 | 105 | self.addItems(coordinate_systems) |
100 | 106 |
|
101 | 107 | def _select_coord_sys(self, selected_coordinate_system: QListWidgetItem | int | Iterable[str]) -> None: |
|
0 commit comments