|
9 | 9 | from sklearn.metrics import r2_score |
10 | 10 |
|
11 | 11 | from AnyQt.QtCore import Qt, QTimer, QPointF |
12 | | -from AnyQt.QtGui import QColor, QFont |
| 12 | +from AnyQt.QtGui import QColor, QFont, QFontMetrics |
13 | 13 | from AnyQt.QtWidgets import QGroupBox, QSizePolicy, QPushButton |
14 | 14 |
|
15 | 15 | import pyqtgraph as pg |
16 | 16 |
|
| 17 | +from orangewidget.utils import load_styled_icon |
17 | 18 | from orangewidget.utils.combobox import ComboBoxSearch |
18 | 19 |
|
19 | 20 | from Orange.data import Table, Domain, DiscreteVariable, Variable |
@@ -481,29 +482,33 @@ def _add_controls_axis(self): |
481 | 482 | dmod = DomainModel |
482 | 483 | self.xy_model = DomainModel(dmod.MIXED, valid_types=dmod.PRIMITIVE) |
483 | 484 |
|
484 | | - hbox = gui.hBox(self.attr_box, spacing=2) |
| 485 | + hor_icon, ver_icon = self.__get_bar_icons() |
| 486 | + width = 3 * QFontMetrics(self.font()).horizontalAdvance("m") |
| 487 | + hbox = gui.hBox(self.attr_box, spacing=0) |
485 | 488 | self.cb_attr_x = gui.comboBox( |
486 | 489 | hbox, self, "attr_x", label="Axis x:", |
487 | 490 | callback=self.set_attr_from_combo, |
488 | 491 | model=self.xy_model, **common_options, |
489 | 492 | ) |
490 | 493 | self.button_attr_x = gui.button( |
491 | | - hbox, self, "ϵ", callback=self.__on_x_button_clicked, |
492 | | - autoDefault=False, width=20, enabled=False, |
493 | | - sizePolicy=(QSizePolicy.Maximum, QSizePolicy.Maximum) |
| 494 | + hbox, self, "", callback=self.__on_x_button_clicked, |
| 495 | + autoDefault=False, width=width, enabled=False, |
| 496 | + sizePolicy=(QSizePolicy.Fixed, QSizePolicy.Fixed) |
494 | 497 | ) |
| 498 | + self.button_attr_x.setIcon(hor_icon) |
495 | 499 |
|
496 | | - hbox = gui.hBox(self.attr_box, spacing=2) |
| 500 | + hbox = gui.hBox(self.attr_box, spacing=0) |
497 | 501 | self.cb_attr_y = gui.comboBox( |
498 | 502 | hbox, self, "attr_y", label="Axis y:", |
499 | 503 | callback=self.set_attr_from_combo, |
500 | 504 | model=self.xy_model, **common_options, |
501 | 505 | ) |
502 | 506 | self.button_attr_y = gui.button( |
503 | | - hbox, self, "ϵ", callback=self.__on_y_button_clicked, |
504 | | - autoDefault=False, width=20, enabled=False, |
505 | | - sizePolicy=(QSizePolicy.Maximum, QSizePolicy.Maximum) |
| 507 | + hbox, self, "", callback=self.__on_y_button_clicked, |
| 508 | + autoDefault=False, width=width, enabled=False, |
| 509 | + sizePolicy=(QSizePolicy.Fixed, QSizePolicy.Fixed) |
506 | 510 | ) |
| 511 | + self.button_attr_y.setIcon(ver_icon) |
507 | 512 |
|
508 | 513 | vizrank_box = gui.hBox(self.attr_box) |
509 | 514 | button = self.vizrank_button("Find Informative Projections") |
@@ -846,6 +851,18 @@ def migrate_context(cls, context, version): |
846 | 851 | if values["attr_x"][1] % 100 == 1 or values["attr_y"][1] % 100 == 1: |
847 | 852 | raise IncompatibleContext() |
848 | 853 |
|
| 854 | + __HorizontalBarIcon = None |
| 855 | + __VerticalBarIcon = None |
| 856 | + |
| 857 | + @classmethod |
| 858 | + def __get_bar_icons(cls): |
| 859 | + if cls.__HorizontalBarIcon is None: |
| 860 | + cls.__HorizontalBarIcon = load_styled_icon( |
| 861 | + "Orange.widgets.visualize", "icons/interval-horizontal.svg") |
| 862 | + cls.__VerticalBarIcon = load_styled_icon( |
| 863 | + "Orange.widgets.visualize", "icons/interval-vertical.svg") |
| 864 | + return cls.__HorizontalBarIcon, cls.__VerticalBarIcon |
| 865 | + |
849 | 866 |
|
850 | 867 | if __name__ == "__main__": # pragma: no cover |
851 | 868 | table = Table("iris") |
|
0 commit comments