qpopup.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 ################################################################################
3 #
4 # Copyright Airbus Group SAS 2015
5 # All rigths reserved.
6 #
7 # File Name : qpopup.py
8 # Authors : Martin Matignon
9 #
10 # If you find any bug or if you have any question please contact
11 # Adolfo Suarez Roos <adolfo.suarez@airbus.com>
12 # Martin Matignon <martin.matignon.external@airbus.com>
13 #
14 #
15 ################################################################################
16 import rospy
17 
18 from python_qt_binding import QtGui
19 from python_qt_binding import QtCore
20 
21 ## @package: qpopup
22 ##
23 ## @version 2.0
24 ## @author Matignon Martin
25 ## @date Last modified 04/03/2014
26 ## @class QPopup
27 ## @brief Popup object.
28 class QPopup(QtGui.QWidget):
29 
30  TopLeft = 1
31  BottomRight = 2
32  TopRight = 3
33  BottomLeft = 4
34  Center = 5
35 
36  def __init__(self, parent = None):
37  """! The constructor.
38  @param parent: object parent.
39  @type parent: QObject.
40  """
41 
42  QtGui.QWidget.__init__(self, parent)
43  self.setWindowFlags(QtCore.Qt.Popup | QtCore.Qt.FramelessWindowHint)
44  self.setStyleSheet("QWidget{background-color: #d9d9d9;}")
45  self._parent = parent
46  self._popup_link = self.TopRight
48 
49  @staticmethod
50  def get_corner_position(obj, corner):
51  """! Get glabal corner position.
52  @param obj: object.
53  @type obj: QObject.
54 
55  @param corner: corner type.
56  @type corner: int.
57  """
58  if corner == QPopup.TopLeft:
59  return obj.mapToGlobal(obj.rect().topLeft())
60  elif corner == QPopup.BottomRight:
61  return obj.mapToGlobal(obj.rect().bottomRight())
62  elif corner == QPopup.TopRight:
63  return obj.mapToGlobal(obj.rect().topRight())
64  elif corner == QPopup.BottomLeft:
65  return obj.mapToGlobal(obj.rect().bottomLeft())
66  else :
67  return obj.mapToGlobal(obj.rect().center())
68 
69  def set_corners_link(self, popup_corner, parent_corner):
70  """! Geometric link between parent and popup object.
71  @param popup_corner: popup corner selected.
72  @type popup_corner: int.
73 
74  @param parent_corner: parent corner selected.
75  @type parent_corner: int.
76  """
77 
78  rospy.logwarn("QPopup::set_corners_link remplaced by QPopup::setLinks in the next version!")
79 
80  self._popup_link = popup_corner
81  self._parent_link = parent_corner
82 
83  def setAttachement(self, popup, widget):
84  """! Corner links between parent and popup object.
85  @param popup_corner: popup corner selected.
86  @type popup_corner: int.
87 
88  @param parent_corner: parent corner selected.
89  @type parent_corner: int.
90  """
91 
92  rospy.logwarn("QPopup::setAttachement remplaced by QPopup::setLinks in the next version!")
93 
94  self._popup_link = popup
95  self._parent_link = widget
96 
97  def setLinks(self, parent, popup):
98  self._parent_link = parent
99  self._popup_link = popup
100 
101  def show_(self):
102  """! Show popup."""
103  parent_pos = QPopup.get_corner_position(self._parent, self._parent_link)
104  popup_pos = QPopup.get_corner_position(self, self._popup_link)
105  self.move(parent_pos - popup_pos)
106  self.show()
107 
108 #End of file
def get_corner_position
Get glabal corner position.
Definition: qpopup.py:50
def setAttachement
Corner links between parent and popup object.
Definition: qpopup.py:83
def set_corners_link
Geometric link between parent and popup object.
Definition: qpopup.py:69


airbus_cobot_gui
Author(s):
autogenerated on Thu Dec 17 2015 11:42:05