Merge pull request #669 from MikeTheWatchGuy/Dev-latest

Renamed Qt Folder.  Many PSG Qt new Elements are working!
This commit is contained in:
MikeTheWatchGuy 2018-11-07 12:55:19 -05:00 committed by GitHub
commit 58f59a7fd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 10 deletions

View File

@ -9,8 +9,10 @@ from PySide2.QtWidgets import QApplication, QLabel, QWidget, QLineEdit, QComboBo
from PySide2.QtWidgets import QSlider, QCheckBox, QRadioButton, QSpinBox, QPushButton, QTextEdit, QMainWindow, QDialog from PySide2.QtWidgets import QSlider, QCheckBox, QRadioButton, QSpinBox, QPushButton, QTextEdit, QMainWindow, QDialog
from PySide2.QtWidgets import QSpacerItem, QFrame, QGroupBox, QTextBrowser, QPlainTextEdit, QButtonGroup, QFileDialog from PySide2.QtWidgets import QSpacerItem, QFrame, QGroupBox, QTextBrowser, QPlainTextEdit, QButtonGroup, QFileDialog
# from PySide2.QtWidgets import # from PySide2.QtWidgets import
from PySide2.QtCore import Qt from PySide2.QtCore import Qt,QProcess
import PySide2.QtGui as QtGui import PySide2.QtGui as QtGui
import PySide2.QtWidgets as QtWidgets
@ -904,7 +906,7 @@ class Multiline(Element):
# ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- #
# ScrolledOutput # # ScrolledOutput #
# ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- #
class ScrolledOutput(Element): class MultilineOutput(Element):
def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, size=(None, None), def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, size=(None, None),
auto_size_text=None, background_color=None, text_color=None, change_submits=False, do_not_clear=False, auto_size_text=None, background_color=None, text_color=None, change_submits=False, do_not_clear=False,
key=None, focus=False, key=None, focus=False,
@ -944,7 +946,7 @@ class ScrolledOutput(Element):
if value is not None: if value is not None:
self.DefaultText = value self.DefaultText = value
self.QT_TextBrowser.insertPlainText(value) self.QT_TextBrowser.insertPlainText(value)
self.QT_TextBrowser.moveCursor(QtGui.QTextCursor.End)
if self.Autoscroll: if self.Autoscroll:
pass pass
if disabled == True: if disabled == True:
@ -1054,9 +1056,23 @@ class Output(Element):
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
super().__init__(ELEM_TYPE_OUTPUT, size=size, background_color=bg, text_color=fg, pad=pad, font=font, super().__init__(ELEM_TYPE_OUTPUT, size=size, background_color=bg, text_color=fg, pad=pad, font=font,
tooltip=tooltip, key=key) tooltip=tooltip, key=key)
def reroute_stdout(self):
self.my_stdout = sys.stdout
self.my_stderr = sys.stderr
sys.stdout = self
sys.stderr = self
def write(self, m):
self.QT_TextBrowser.moveCursor(QtGui.QTextCursor.End)
self.QT_TextBrowser.insertPlainText( str(m))
# if self.my_stdout:
# self.my_stdout.write(str(m))
def __del__(self): def __del__(self):
super().__del__() super().__del__()
@ -1177,10 +1193,16 @@ class Button(Element):
if self.BType == BUTTON_TYPE_BROWSE_FOLDER: if self.BType == BUTTON_TYPE_BROWSE_FOLDER:
folder_name = QFileDialog.getExistingDirectory() folder_name = QFileDialog.getExistingDirectory()
if folder_name != '': if folder_name != '':
if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = folder_name
else:
target_element.Update(folder_name) target_element.Update(folder_name)
elif self.BType == BUTTON_TYPE_BROWSE_FILE: elif self.BType == BUTTON_TYPE_BROWSE_FILE:
file_name = QFileDialog.getOpenFileName() file_name = QFileDialog.getOpenFileName()
if file_name != '': if file_name != '':
if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_name
else:
target_element.Update(file_name[0]) target_element.Update(file_name[0])
elif self.BType == BUTTON_TYPE_COLOR_CHOOSER: elif self.BType == BUTTON_TYPE_COLOR_CHOOSER:
color = 'TODO' color = 'TODO'
@ -1188,10 +1210,16 @@ class Button(Element):
file_name = QFileDialog.getOpenFileNames() file_name = QFileDialog.getOpenFileNames()
if file_name != '': if file_name != '':
file_name = ';'.join(file_name[0]) file_name = ';'.join(file_name[0])
target_element.Update(file_name) if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_name
else:
target_element.Update(file_name[0])
elif self.BType == BUTTON_TYPE_SAVEAS_FILE: elif self.BType == BUTTON_TYPE_SAVEAS_FILE:
file_name = QFileDialog.getSaveFileName() file_name = QFileDialog.getSaveFileName()
if file_name != '': if file_name != '':
if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_name
else:
target_element.Update(file_name[0]) target_element.Update(file_name[0])
elif self.BType == BUTTON_TYPE_CLOSES_WIN: # this is a return type button so GET RESULTS and destroy window elif self.BType == BUTTON_TYPE_CLOSES_WIN: # this is a return type button so GET RESULTS and destroy window
# first, get the results table built # first, get the results table built
@ -1229,6 +1257,7 @@ class Button(Element):
self.ParentForm.LastButtonClicked = target_element.Key self.ParentForm.LastButtonClicked = target_element.Key
self.ParentForm.FormRemainedOpen = True self.ParentForm.FormRemainedOpen = True
if self.ParentForm.CurrentlyRunningMainloop: if self.ParentForm.CurrentlyRunningMainloop:
self.ParentForm.QTApplication.exit()
pass # TODO # kick the users out of the mainloop pass # TODO # kick the users out of the mainloop
return return
@ -2702,6 +2731,7 @@ class Window:
return None return None
self.TKrootDestroyed = True self.TKrootDestroyed = True
self.RootNeedsDestroying = True self.RootNeedsDestroying = True
self.__del__()
return None return None
def Close(self): def Close(self):
@ -3183,7 +3213,10 @@ def BuildResultsForSubform(form, initialize_only, top_level_form):
except: except:
value = None value = None
else: else:
value=0 try:
value = element.FileOrFolderName
except:
value = None
elif element.Type == ELEM_TYPE_INPUT_COMBO: elif element.Type == ELEM_TYPE_INPUT_COMBO:
value = element.QT_ComboBox.currentText() value = element.QT_ComboBox.currentText()
elif element.Type == ELEM_TYPE_INPUT_OPTION_MENU: elif element.Type == ELEM_TYPE_INPUT_OPTION_MENU:
@ -3634,7 +3667,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
default_text = element.DefaultText default_text = element.DefaultText
width, height = element_size width, height = element_size
element.QT_TextBrowser = QTextBrowser() element.QT_TextBrowser = QTextBrowser()
element.QT_TextBrowser.setDisabled(True) element.QT_TextBrowser.setDisabled(False)
style = '' style = ''
if font is not None: if font is not None:
style += 'font-family: %s;'%font[0] style += 'font-family: %s;'%font[0]
@ -3652,6 +3685,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
element.QT_TextBrowser.setFixedHeight(element_size[1]) element.QT_TextBrowser.setFixedHeight(element_size[1])
element.QT_TextBrowser.insertPlainText(default_text) element.QT_TextBrowser.insertPlainText(default_text)
element.QT_TextBrowser.moveCursor(QtGui.QTextCursor.End)
qt_row_layout.addWidget(element.QT_TextBrowser) qt_row_layout.addWidget(element.QT_TextBrowser)
# ------------------------- INPUT CHECKBOX element ------------------------- # # ------------------------- INPUT CHECKBOX element ------------------------- #
elif element_type == ELEM_TYPE_INPUT_CHECKBOX: elif element_type == ELEM_TYPE_INPUT_CHECKBOX:
@ -3727,7 +3761,27 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
qt_row_layout.addWidget(element.QT_Spinner) qt_row_layout.addWidget(element.QT_Spinner)
# ------------------------- OUTPUT element ------------------------- # # ------------------------- OUTPUT element ------------------------- #
elif element_type == ELEM_TYPE_OUTPUT: elif element_type == ELEM_TYPE_OUTPUT:
width, height = element_size element.QT_TextBrowser = QTextBrowser()
element.QT_TextBrowser.setDisabled(False)
style = ''
if font is not None:
style += 'font-family: %s;'%font[0]
style += 'font-size: %spt;'%font[1]
if element.TextColor is not None:
style += 'color: %s;' % element.TextColor
if element.BackgroundColor is not None:
style += 'background-color: %s;' % element.BackgroundColor
element.QT_TextBrowser.setStyleSheet(style)
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
if element_size[0] is not None:
element.QT_TextBrowser.setFixedWidth(element_size[0])
if element_size[1] is not None:
element.QT_TextBrowser.setFixedHeight(element_size[1])
element.QT_TextBrowser.moveCursor(QtGui.QTextCursor.End)
element.reroute_stdout()
qt_row_layout.addWidget(element.QT_TextBrowser)
# ------------------------- IMAGE element ------------------------- # # ------------------------- IMAGE element ------------------------- #
elif element_type == ELEM_TYPE_IMAGE: elif element_type == ELEM_TYPE_IMAGE:
pass pass