mirror of
https://github.com/ModOrganizer2/modorganizer-plugin_python.git
synced 2026-07-27 14:03:33 -07:00
* Expose INVALID_HANDLE_VALUE as mobase.INVALID_HANDLE_VALUE. * Add tests for startApplication() returning INVALID_HANDLE_VALUE. * Clean tests and generate stub files for them.
63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
from PyQt6.QtWidgets import QWidget
|
|
|
|
import mobase_tests.qt_widgets as m
|
|
|
|
|
|
class PyWidget(QWidget):
|
|
def heightForWidth(self, a0: int) -> int:
|
|
return a0 * 3 + 4
|
|
|
|
|
|
class PyCustomWidget(m.CustomWidget):
|
|
def __init__(self, name: str):
|
|
super().__init__(name)
|
|
|
|
def heightForWidth(self, value: int) -> int:
|
|
return value * 6 - 5
|
|
|
|
|
|
def test_qt_widget():
|
|
# own cpp
|
|
w = m.make_widget_own_cpp("w1")
|
|
assert m.is_alive("w1")
|
|
assert m.is_owned_cpp("w1")
|
|
|
|
del w
|
|
assert m.is_alive("w1")
|
|
|
|
# own py
|
|
w = m.make_widget_own_py("w2")
|
|
assert m.is_alive("w2")
|
|
assert not m.is_owned_cpp("w2")
|
|
|
|
del w
|
|
assert not m.is_alive("w2")
|
|
|
|
# transfer to C++
|
|
w = PyWidget()
|
|
m.send_to_cpp("w3", w)
|
|
|
|
# delete the reference w - this should NOT delete the underlying object since it
|
|
# was transferred to C++
|
|
del w
|
|
assert m.is_alive("w3")
|
|
assert m.is_owned_cpp("w3")
|
|
|
|
# if the Python object is dead (BAD!), this will crash horrible
|
|
assert m.heightForWidth("w3", 4) == 4 * 3 + 4
|
|
|
|
# CustomWidget as a qholder, so the construction itself transfers the ownership
|
|
# to C++
|
|
w = PyCustomWidget("w4")
|
|
w.set_parent_cpp()
|
|
assert m.is_alive("w4")
|
|
assert m.heightForWidth("w4", 7) == 6 * 7 - 5
|
|
assert w.heightForWidth(7) == 6 * 7 - 5
|
|
|
|
# can call function not defined and not bound through the delegate
|
|
assert not w.hasHeightForWidth()
|
|
|
|
del w
|
|
assert m.is_alive("w4")
|
|
assert m.heightForWidth("w4", 7) == 6 * 7 - 5
|