Grab Anywhere for windows works!

This commit is contained in:
MikeTheWatchGuy 2018-11-09 09:12:47 -05:00
parent 6155130605
commit 377a338481
1 changed files with 39 additions and 18 deletions

View File

@ -1276,9 +1276,10 @@ class Button(Element):
self.ParentForm.QTApplication.exit()
elif self.BType == BUTTON_TYPE_CLOSES_WIN_ONLY: # special kind of button that does not exit main loop
self.ParentForm._Close()
if self.ParentForm.NonBlocking:
pass # TODO destroy window
_my_windows.Decrement()
# if self.ParentForm.NonBlocking:
if self.ParentForm.CurrentlyRunningMainloop: # if this window is running the mainloop, kick out
self.ParentForm.QTApplication.exit()
_my_windows.Decrement()
elif self.BType == BUTTON_TYPE_CALENDAR_CHOOSER: # this is a return type button so GET RESULTS and destroy window
should_submit_window = False
@ -2853,19 +2854,34 @@ class Window:
def CurrentLocation(self):
return int(self.TKroot.winfo_x()), int(self.TKroot.winfo_y())
# @property
# def Size(self):
# win_width = self.TKroot.winfo_width()
# win_height = self.TKroot.winfo_height()
# return win_width, win_height
#
# @Size.setter
# def Size(self, size):
# try:
# self.TKroot.geometry("%sx%s" % (size[0], size[1]))
# self.TKroot.update_idletasks()
# except:
# pass
class QTMainWindow(QWidget):
def __init__(self,enable_key_events, window):
self.KeyEventsEnabled = enable_key_events
self.Window = window
super().__init__()
def eventFilter(self, widget, event):
# print(event.type())
if event.type() == QEvent.MouseButtonPress and self.Window.GrabAnywhere:
self.mouse_offset = event.pos()
if event.type() == QEvent.MouseMove and self.Window.GrabAnywhere:
x = event.globalX()
y = event.globalY()
x_w = self.mouse_offset.x()
y_w = self.mouse_offset.y()
self.move(x - x_w, y - y_w)
if event.type() == QEvent.KeyRelease and self.KeyEventsEnabled:
# print("got key event")
key = event.key()
try:
self.Window.LastButtonClicked = chr(key).lower()
except:
self.Window.LastButtonClicked = "special %s" % key
self.Window.FormRemainedOpen = True
if self.Window.CurrentlyRunningMainloop:
self.Window.QTApplication.exit()
return QWidget.eventFilter(self, widget, event)
def __enter__(self):
return self
@ -4014,6 +4030,7 @@ def ConvertFlexToTK(window):
screen_width = 000000 # get window info to move to middle of screen
screen_height = 000000
if window.Location != (None, None):
window.QTWindow.move(window.Location[0], window.Location[1])
x, y = window.Location
elif DEFAULT_WINDOW_LOCATION != (None, None):
x, y = DEFAULT_WINDOW_LOCATION
@ -4027,7 +4044,7 @@ def ConvertFlexToTK(window):
if x + win_width > screen_width:
x = screen_width - win_width
pass
return
@ -4050,7 +4067,11 @@ def StartupTK(window):
window.QTApplication = _my_windows.QTApplication
window.QTWindow = QWidget()
# window.QTWindow = QWidget()
window.QTWindow = window.QTMainWindow(window.ReturnKeyboardEvents, window)
window.QTWindow.installEventFilter(window.QTWindow)
window.QTApplication.setActiveWindow(window.QTWindow)
flags = 0
if window.NoTitleBar: