Source code for gui.qtutils
#
##
## SPDX-FileCopyrightText: © 2007-2023 Benedict Verhegghe <bverheg@gmail.com>
## SPDX-License-Identifier: GPL-3.0-or-later
##
## This file is part of pyFormex 3.4 (Thu Nov 16 18:07:39 CET 2023)
## pyFormex is a tool for generating, manipulating and transforming 3D
## geometrical models by sequences of mathematical operations.
## Home page: https://pyformex.org
## Project page: https://savannah.nongnu.org/projects/pyformex/
## Development: https://gitlab.com/bverheg/pyformex
## Distributed under the GNU General Public License version 3 or later.
##
## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see http://www.gnu.org/licenses/.
##
"""General Qt utility functions.
"""
import pyformex as pf
[docs]def Size(w):
"""Return the size of a widget as a tuple."""
return w.width(), w.height()
[docs]def Pos(w):
"""Return the relative position of a widget as a tuple.
This is the position relative to its parent.
"""
return w.x(), w.y()
[docs]def relPos(w, parent=None):
"""Return the position of a widget relative to a parent.
If no parent is specified, it is taken as the GUI main window.
"""
if parent is None:
parent = pf.GUI
x, y = 0, 0
while w != parent:
#print(w)
dx, dy = w.x(), w.y()
x += dx
y += dy
#print("rel pos = %s, %s; abs pos = %s, %s" % (dx,dy,x,y))
w = w.parent()
if not w:
break
return x, y
def relGeom(w, parent=None):
return (*relPos(w), w.width(), w.height())
[docs]def absRect(w):
"""Return the absolute rectangle geometry of the widget as a tuple
Returns
-------
tuple:
(x,y,w,h) where x,y is the position relative to the screen origin.
"""
x0, y0 = Pos(pf.GUI)
x, y = relPos(w)
w, h = Size(w)
return x+x0, y+y0, w, h
[docs]def MaxSize(*args):
"""Return the maximum of a list of sizes"""
return max([i[0] for i in args]), max([i[1] for i in args])
[docs]def MinSize(*args):
"""Return the maximum of a list of sizes"""
return min([i[0] for i in args]), min([i[1] for i in args])
def printpos(w, t=''):
print(f"{t} {w.x()} x {w.y()}")
def sizeReport(w, t=''):
return f"{t} {w.width()} x {w.height()}"
#### End