FileBrowse, FilesBrowse, FolderBrowse buttons work! Colors, font for Input Text

This commit is contained in:
MikeTheWatchGuy 2019-01-04 20:27:35 -05:00
parent c6967ef8ed
commit fe1c16ff9a
1 changed files with 80 additions and 63 deletions

View File

@ -480,21 +480,18 @@ class Element():
def Update(self, widget, background_color=None, text_color=None, font=None, visible=None): def Update(self, widget, background_color=None, text_color=None, font=None, visible=None):
style = str(widget.styleSheet()) if font:
add_brace = False widget.SetFont(font_to_wx_font(font))
if len(style) != 0 and style[-1] == '}': if text_color not in (None, COLOR_SYSTEM_DEFAULT):
style = style[:-1] widget.SetForegroundColour(text_color)
add_brace = True if background_color not in (None, COLOR_SYSTEM_DEFAULT):
if font is not None: widget.SetBackgroundColour(background_color)
style += create_style_from_font(font) if visible is True:
if text_color is not None: widget.Enable(True)
style += ' color: %s;' % text_color elif visible is False:
if background_color is not None: widget.Enable(False)
style += 'background-color: %s;' % background_color
if add_brace:
style += '}'
widget.setStyleSheet(style)
set_widget_visiblity(widget, visible)
def __del__(self): def __del__(self):
pass pass
@ -525,6 +522,7 @@ class InputText(Element):
self.ChangeSubmits = change_submits or enable_events self.ChangeSubmits = change_submits or enable_events
self.QT_QLineEdit = None self.QT_QLineEdit = None
self.ValueWasChanged = False self.ValueWasChanged = False
self.WxTextControl = None
super().__init__(ELEM_TYPE_INPUT_TEXT, size=size, background_color=bg, text_color=fg, key=key, pad=pad, super().__init__(ELEM_TYPE_INPUT_TEXT, size=size, background_color=bg, text_color=fg, key=key, pad=pad,
font=font, tooltip=tooltip, visible=visible, size_px=size_px) font=font, tooltip=tooltip, visible=visible, size_px=size_px)
@ -559,18 +557,15 @@ class InputText(Element):
def Update(self, value=None, disabled=None, select=None, background_color=None, text_color=None, font=None, visible=None): def Update(self, value=None, disabled=None, select=None, background_color=None, text_color=None, font=None, visible=None):
if disabled is True: if disabled is True:
self.QT_QLineEdit.setDisabled(True) self.WxTextControl.Enable(True)
elif disabled is False: elif disabled is False:
self.QT_QLineEdit.setDisabled(False) self.WxTextControl.Enable(False)
if value is not None: if value is not None:
self.QT_QLineEdit.setText(str(value)) self.WxTextControl.SetValue(str(value))
self.DefaultText = value self.DefaultText = value
# was getting into an infinite loop when the update was triggering a text changed callback, but unable
# to dupliate this
# self.ValueWasChanged = True
if select: if select:
self.QT_QLineEdit.setSelection(0,QtGui.QTextCursor.End ) self.WxTextControl.SelectAll()
super().Update(self.QT_QLineEdit, background_color=background_color, text_color=text_color, font=font, visible=visible) super().Update(self.WxTextControl, background_color=background_color, text_color=text_color, font=font, visible=visible)
@ -1377,30 +1372,75 @@ class Button(Element):
except: except:
pass pass
filetypes = (("ALL Files", "*"),) if self.FileTypes is None else self.FileTypes filetypes = (("ALL Files", "*"),) if self.FileTypes is None else self.FileTypes
if self.BType == BUTTON_TYPE_BROWSE_FOLDER: if self.BType == BUTTON_TYPE_BROWSE_FOLDER: # Browse Folder
folder_name = QFileDialog.getExistingDirectory(dir=self.InitialFolder) wx_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
if self.InitialFolder:
dialog = wx.DirDialog(self.ParentForm.MasterFrame, style=wx.FD_OPEN)
else:
dialog = wx.DirDialog(self.ParentForm.MasterFrame)
folder_name = ''
if dialog.ShowModal() == wx.ID_OK:
folder_name = dialog.GetPath()
if folder_name != '': if folder_name != '':
if target_element.Type == ELEM_TYPE_BUTTON: if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = folder_name target_element.FileOrFolderName = folder_name
else: 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: # Browse File
qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes) qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
# qt_types = "PNG files (*.png)|*.png" # qt_types = "PNG files (*.png)|*.png"
print(qt_types) print(qt_types)
if self.InitialFolder: if self.InitialFolder:
dialog = wx.FileDialog(self.ParentForm.MasterFrame,defaultDir=self.InitialFolder, wildcard=qt_types, style=wx.FD_OPEN) dialog = wx.FileDialog(self.ParentForm.MasterFrame,defaultDir=self.InitialFolder, wildcard=qt_types, style=wx.FD_OPEN)
else: else:
dialog = wx.FileDialog(self.ParentForm.MasterFrame, wildcard=qt_types) dialog = wx.FileDialog(self.ParentForm.MasterFrame, wildcard=qt_types, style=wx.FD_OPEN)
file_name = '' file_name = ''
if dialog.ShowModal() == wx.ID_OK: if dialog.ShowModal() == wx.ID_OK:
file_name = dialog.GetFilename() file_name = dialog.GetPath()
else:
file_name = ''
if file_name != '': if file_name != '':
if target_element.Type == ELEM_TYPE_BUTTON: if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_name target_element.FileOrFolderName = file_name
else: else:
target_element.Update(file_name[0]) target_element.Update(file_name)
elif self.BType == BUTTON_TYPE_COLOR_CHOOSER: elif self.BType == BUTTON_TYPE_BROWSE_FILES: # Browse Files
qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
print(qt_types)
if self.InitialFolder:
dialog = wx.FileDialog(self.ParentForm.MasterFrame,defaultDir=self.InitialFolder, wildcard=qt_types, style=wx.FD_MULTIPLE)
else:
dialog = wx.FileDialog(self.ParentForm.MasterFrame, wildcard=qt_types, style=wx.FD_MULTIPLE)
file_names = ''
if dialog.ShowModal() == wx.ID_OK:
file_names = dialog.GetPaths()
print(file_names)
else:
file_names = ''
if file_names != '':
file_names = ';'.join(file_names)
if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_names
else:
target_element.Update(file_names)
elif self.BType == BUTTON_TYPE_SAVEAS_FILE: # Save As File
qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
print(qt_types)
if self.InitialFolder:
dialog = wx.FileDialog(self.ParentForm.MasterFrame,defaultDir=self.InitialFolder, wildcard=qt_types, style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
else:
dialog = wx.FileDialog(self.ParentForm.MasterFrame, wildcard=qt_types, style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
file_name = ''
if dialog.ShowModal() == wx.ID_OK:
file_name = dialog.GetPath()
else:
file_name = ''
if file_name != '':
if target_element.Type == ELEM_TYPE_BUTTON:
target_element.FileOrFolderName = file_name
else:
target_element.Update(file_name)
elif self.BType == BUTTON_TYPE_COLOR_CHOOSER: # Color Chooser
qcolor = QColorDialog.getColor() qcolor = QColorDialog.getColor()
rgb_color = qcolor.getRgb() rgb_color = qcolor.getRgb()
color= '#' + ''.join('%02x'% i for i in rgb_color[:3]) color= '#' + ''.join('%02x'% i for i in rgb_color[:3])
@ -1408,24 +1448,7 @@ class Button(Element):
self.FileOrFolderName = color self.FileOrFolderName = color
else: else:
target_element.Update(color) target_element.Update(color)
elif self.BType == BUTTON_TYPE_BROWSE_FILES: elif self.BType == BUTTON_TYPE_CLOSES_WIN: # Closes Window
qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
file_name = QFileDialog.getOpenFileNames(dir=self.InitialFolder, filter=qt_types)
if file_name != '':
file_name = ';'.join(file_name[0])
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:
qt_types = convert_tkinter_filetypes_to_wx(self.FileTypes)
file_name = QFileDialog.getSaveFileName(dir=self.InitialFolder, filter=qt_types)
if 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_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
# modify the Results table in the parent FlexForm object # modify the Results table in the parent FlexForm object
if self.Key is not None: if self.Key is not None:
@ -4484,25 +4507,19 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
# # ------------------------- INPUT (Single Line) element ------------------------- # # # ------------------------- INPUT (Single Line) element ------------------------- #
elif element_type == ELEM_TYPE_INPUT_TEXT: elif element_type == ELEM_TYPE_INPUT_TEXT:
element.WxTextControl = text_ctrl = wx.TextCtrl(form.MasterPanel) element.WxTextControl = text_ctrl = wx.TextCtrl(form.MasterPanel)
if font:
text_ctrl.SetFont(font_to_wx_font(font))
if element.TextColor not in (None, COLOR_SYSTEM_DEFAULT):
text_ctrl.SetForegroundColour(element.TextColor)
if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT):
text_ctrl.SetBackgroundColour(element.BackgroundColor)
text_ctrl.SetMinSize(element_size) text_ctrl.SetMinSize(element_size)
lrsizer = wx.BoxSizer(wx.HORIZONTAL)
if full_element_pad[1] == full_element_pad[3]: # if right = left
lrsizer.Add(element.WxTextControl, 0, wx.LEFT|wx.RIGHT, border=full_element_pad[1])
else:
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(element.WxTextControl,0,wx.LEFT, border=full_element_pad[3])
lrsizer.Add(sizer, 0, wx.RIGHT, border=full_element_pad[1])
top_bottom_sizer = wx.BoxSizer(wx.HORIZONTAL) sizer = pad_widget(text_ctrl)
if full_element_pad[0] == full_element_pad[2]: # if top = bottom hsizer.Add(sizer, 0)
top_bottom_sizer.Add(lrsizer, 0, wx.TOP|wx.BOTTOM, border=full_element_pad[0])
else:
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(lrsizer,0,wx.TOP, border=full_element_pad[0])
top_bottom_sizer.Add(sizer, 0, wx.BOTTOM, border=full_element_pad[2])
hsizer.Add(top_bottom_sizer, 0)