import PySide2
import PySide2.QtCore as core
import PySide2.QtWidgets as widgets
from _typeshed import Incomplete

class Dialog(PySide2.QtWidgets.QDialog):
    def __init__(self, parent: Incomplete | None = ..., flags=...) -> None: ...
    def hideEvent(self, event) -> None: ...
    restore_shader_compile_pause: Incomplete
    def showEvent(self, event) -> None: ...

def messageAndLog(text, title: str = ..., ui: bool = ..., console: bool = ..., log: bool = ...) -> None: ...
def message(text, title: str = ..., buttons=..., icon=..., details: Incomplete | None = ...) -> None: ...
def messageResult(text, title: str = ..., buttons=..., icon=..., details: Incomplete | None = ...): ...
def execDialog(dlg): ...
def reloadAll() -> None: ...
def incName(name): ...
def getUniqueName(name_base, name_list): ...
def getOpenFileName(parent: Incomplete | None = ..., caption: str = ..., dir: str = ..., filter: str = ..., selected_filter: Incomplete | None = ..., options: int = ...): ...
def getSaveFileName(parent: Incomplete | None = ..., caption: str = ..., dir: str = ..., filter: str = ..., selected_filter: Incomplete | None = ..., options: int = ..., save_filename: str = ...): ...
def getExistingDirectory(parent: Incomplete | None = ..., caption: str = ..., dir: str = ...): ...
def setTimer(interval_sec, func, single_shot: bool = ...): ...
def createCustomDisplayWidget(display_name, width, height): ...
def checkProjectAndGeoValidity(): ...
def mariPlainIcon(fileName): ...
def mariDisabledIcon(fileName): ...
def mariIcon(fileName): ...

class PushButtonIconSetter(core.QObject):
    pushButton: Incomplete
    onIcon: Incomplete
    offIcon: Incomplete
    def __init__(self, pushButton, icon) -> None: ...
    def eventFilter(self, watched, event): ...

class PushButton(widgets.QPushButton):
    iconSetter: Incomplete
    def __init__(self, icon, text) -> None: ...

def isFileReadable(root, filename): ...
