|
4 | 4 | from datetime import datetime
|
5 | 5 | from functools import partial, cached_property
|
6 | 6 | from math import ceil, log10
|
| 7 | +import matplotlib.pyplot as plt |
7 | 8 | import pandas as pd
|
8 | 9 | from pathlib import Path
|
9 | 10 | from types import MethodType
|
|
49 | 50 | encode_categories,
|
50 | 51 | to_os_dir_sep,
|
51 | 52 | guarantee_multiindex_rows,
|
| 53 | + build_color_cycles |
52 | 54 | )
|
53 | 55 |
|
54 | 56 |
|
@@ -701,6 +703,11 @@ def on_insert(self, event):
|
701 | 703 | # Hide out of slice checkbox
|
702 | 704 | point_controls.outOfSliceCheckBox.hide()
|
703 | 705 | point_controls.layout().itemAt(15).widget().hide()
|
| 706 | + # Add dropdown menu for colormap picking |
| 707 | + colormap_selector = DropdownMenu(plt.colormaps, self) |
| 708 | + colormap_selector.update_to(layer.metadata["colormap_name"]) |
| 709 | + colormap_selector.currentTextChanged.connect(self._update_colormap) |
| 710 | + point_controls.layout().addRow("colormap", colormap_selector) |
704 | 711 |
|
705 | 712 | for layer_ in self.viewer.layers:
|
706 | 713 | if not isinstance(layer_, Image):
|
@@ -732,6 +739,20 @@ def on_remove(self, event):
|
732 | 739 | self._trail_cb.setChecked(False)
|
733 | 740 | self._trails = None
|
734 | 741 |
|
| 742 | + def _update_colormap(self, colormap_name): |
| 743 | + for layer in self.viewer.layers: |
| 744 | + if isinstance(layer, Points) and layer.metadata: |
| 745 | + face_color_cycle_maps = build_color_cycles( |
| 746 | + layer.metadata["header"], colormap_name, |
| 747 | + ) |
| 748 | + layer.metadata["face_color_cycles"] = face_color_cycle_maps |
| 749 | + face_color_prop = layer._face.color_properties.name |
| 750 | + layer.face_color = face_color_prop |
| 751 | + layer.face_color_cycle = face_color_cycle_maps[face_color_prop] |
| 752 | + layer.events.face_color() |
| 753 | + self._update_color_scheme() |
| 754 | + break |
| 755 | + |
735 | 756 | @register_points_action("Change labeling mode")
|
736 | 757 | def cycle_through_label_modes(self, *args):
|
737 | 758 | self.label_mode = next(keypoints.LabelMode)
|
@@ -1127,4 +1148,5 @@ def add_entry(self, name, color):
|
1127 | 1148 | def reset(self):
|
1128 | 1149 | self.scheme_dict = {}
|
1129 | 1150 | for i in reversed(range(self._layout.count())):
|
1130 |
| - self._layout.itemAt(i).widget().deleteLater() |
| 1151 | + w = self._layout.itemAt(i).widget() |
| 1152 | + self._layout.removeWidget(w) |
0 commit comments