Skip to content

Commit 5f17fc3

Browse files
committed
ErrorBarsDialog: Change dialog to popup-like widgets
1 parent 026e4f7 commit 5f17fc3

File tree

3 files changed

+25
-17
lines changed

3 files changed

+25
-17
lines changed

Orange/widgets/visualize/owscatterplot.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -515,18 +515,26 @@ def _add_controls_axis(self):
515515
vizrank_box.layout().addWidget(button)
516516
self.vizrankSelectionChanged.connect(self.set_attr)
517517

518-
self.__x_axis_dlg = ErrorBarsDialog(self, "Axis x Error Bars")
518+
self.__x_axis_dlg = ErrorBarsDialog(self)
519519
self.__x_axis_dlg.changed.connect(self.__on_x_dlg_changed)
520-
self.__y_axis_dlg = ErrorBarsDialog(self, "Axis y Error Bars")
520+
self.__y_axis_dlg = ErrorBarsDialog(self)
521521
self.__y_axis_dlg.changed.connect(self.__on_y_dlg_changed)
522522

523523
def __on_x_button_clicked(self):
524-
self.__x_axis_dlg.show_dlg(self.data.domain, self.attr_x_upper,
525-
self.attr_x_lower, self.attr_x_is_abs)
524+
self.__show_bars_dlg(
525+
self.__x_axis_dlg, self.button_attr_x,
526+
self.attr_x_upper, self.attr_x_lower, self.attr_x_is_abs)
526527

527528
def __on_y_button_clicked(self):
528-
self.__y_axis_dlg.show_dlg(self.data.domain, self.attr_y_upper,
529-
self.attr_y_lower, self.attr_y_is_abs)
529+
self.__show_bars_dlg(
530+
self.__y_axis_dlg, self.button_attr_y,
531+
self.attr_y_upper, self.attr_y_lower, self.attr_y_is_abs)
532+
533+
def __show_bars_dlg(self, dlg, button, upper, lower, is_abs):
534+
pos = button.mapToGlobal(button.rect().bottomLeft())
535+
dlg.show_dlg(self.data.domain,
536+
pos.x(), pos.y(),
537+
upper, lower, is_abs)
530538

531539
def __on_x_dlg_changed(self):
532540
self.attr_x_upper, self.attr_x_lower, self.attr_x_is_abs = \

Orange/widgets/visualize/utils/error_bars_dialog.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
import sys
22
from typing import Optional
33

4-
from AnyQt.QtCore import Signal
5-
from AnyQt.QtWidgets import QDialog, QVBoxLayout, QWidget, QComboBox, \
4+
from AnyQt.QtCore import Signal, Qt
5+
from AnyQt.QtWidgets import QVBoxLayout, QWidget, QComboBox, \
66
QFormLayout, QLabel, QButtonGroup, QRadioButton, QLayout
77

88
from Orange.data import ContinuousVariable, Domain
99
from Orange.widgets.utils import disconnected
1010
from Orange.widgets.utils.itemmodels import DomainModel
1111

1212

13-
class ErrorBarsDialog(QDialog):
13+
class ErrorBarsDialog(QWidget):
1414
changed = Signal()
1515

1616
def __init__(
1717
self,
1818
parent: QWidget,
19-
title: str,
2019
):
21-
super().__init__(parent, windowTitle=title)
22-
self.setModal(True)
20+
super().__init__(parent)
21+
self.setWindowFlags(self.windowFlags() | Qt.Popup)
22+
self.hide()
2323
self.__model = DomainModel(
2424
separators=False,
2525
valid_types=(ContinuousVariable,),
@@ -68,13 +68,15 @@ def get_data(self) -> tuple[
6868
def show_dlg(
6969
self,
7070
domain: Domain,
71+
x: int, y: int,
7172
attr_upper: Optional[ContinuousVariable] = None,
7273
attr_lower: Optional[ContinuousVariable] = None,
7374
is_abs: bool = True
7475
):
7576
self._set_data(domain, attr_upper, attr_lower, is_abs)
7677
self.show()
7778
self.raise_()
79+
self.move(x, y)
7880
self.activateWindow()
7981

8082
def _set_data(

i18n/si/msgs.jaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@ util.py:
202202
def `funcv`:
203203
unsafe: false
204204
version.py:
205-
3.38.0: false
206-
3.38.0.dev0+b3dd2eb: false
207-
b3dd2eba6a3cfa73ba06460226d6e16a8e25a23a: false
205+
3.39.0: false
206+
3.39.0.dev0+c2c1648: false
207+
c2c16487816d19a63177fae0b9febf1f0220f982: false
208208
.dev: false
209209
canvas/__main__.py:
210210
ORANGE_STATISTICS_API_URL: false
@@ -14695,8 +14695,6 @@ widgets/visualize/owscatterplot.py:
1469514695
attr_y: false
1469614696
Axis y:: Os y:
1469714697
Find Informative Projections: Poišči informativne projekcije
14698-
Axis x Error Bars: Napaka Osi x
14699-
Axis y Error Bars: Napaka Osi y
1470014698
def `_add_controls_sampling`:
1470114699
auto_sample: false
1470214700
Sample: Vzorec

0 commit comments

Comments
 (0)