Skip to content
This repository has been archived by the owner on Sep 20, 2023. It is now read-only.

Commit

Permalink
#7
Browse files Browse the repository at this point in the history
  • Loading branch information
leon-thomm committed Aug 12, 2021
1 parent e281b7b commit 0f623c4
Showing 1 changed file with 70 additions and 33 deletions.
103 changes: 70 additions & 33 deletions ryvencore_qt/src/PortItemInputWidgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
from qtpy.QtWidgets import QSpinBox, QLineEdit, QSlider, QCheckBox, QComboBox


from .ryvencore.InfoMsgs import InfoMsgs


from .WidgetBaseClasses import IWB
from .retain import M

Expand Down Expand Up @@ -126,6 +129,13 @@ class DType_IW_Base(IWB):
def __str__(self):
return self.__class__.__name__

def show(self, data):
"""
Tries to convert and show the data appropriately in the widget.
Failure here should NOT result in a crash, i.e. subclasses must catch errors.
"""
pass




Expand All @@ -140,7 +150,7 @@ def __init__(self, params):
dtype = self.input.dtype

self.setFont(QFont('source code pro', 10))
self.val_update_event(dtype.default)
self.show(dtype.default)
if dtype.size == 's':
self.base_width = 30
elif dtype.size == 'm':
Expand Down Expand Up @@ -174,16 +184,19 @@ def get_val(self):
return self.text()

def val_update_event(self, val):
try:
self.setText(str(val))
except Exception as e:
pass
self.show(val)

def get_state(self) -> dict:
return {'text': self.text()}

def set_state(self, data: dict):
self.setText(data['text'])
self.show(data['text'])

def show(self, data):
try:
self.setText(str(data))
except Exception as e:
InfoMsgs.write_err(e)


# custom sized classes for qss access:
Expand Down Expand Up @@ -214,7 +227,7 @@ def __init__(self, params):
dtype = self.input.dtype

self.setFont(QFont('source code pro', 10))
self.setText(dtype.default)
self.show(dtype.default)
self.setFixedWidth(self.width)
self.setToolTip(dtype.doc)

Expand All @@ -230,14 +243,20 @@ def get_val(self):

def val_update_event(self, val):
self.block = True
self.setText(str(val))
self.show(val)
self.block = False

def get_state(self) -> dict:
return {'text': self.text()}

def set_state(self, data: dict):
self.setText(data['text'])
self.show(data['text'])

def show(self, data):
try:
self.setText(str(data))
except Exception as e:
InfoMsgs.write_err(e)


# custom sized classes for qss access:
Expand Down Expand Up @@ -266,7 +285,7 @@ def __init__(self, params):

if dtype.bounds:
self.setRange(dtype.bounds[0], dtype.bounds[1])
self.setValue(dtype.default)
self.show(dtype.default)
self.setToolTip(dtype.doc)

self.block = False # ignore updates from val_update_event
Expand All @@ -281,16 +300,21 @@ def get_val(self):

def val_update_event(self, val):
self.block = True
try:
self.setValue(val)
finally:
self.block = False
self.show(val)
self.block = False

def get_state(self) -> dict:
return {'val': self.value()}

def set_state(self, data: dict):
self.setValue(data['val'])
self.show(data['val'])

def show(self, data):
try:
self.setValue(data)
except Exception as e:
InfoMsgs.write_err(e)



class Float_IW(DType_IW_Base, QLineEdit):
Expand All @@ -303,7 +327,7 @@ def __init__(self, params):
self.setFont(QFont('source code pro', 10))
fm = QFontMetrics(self.font())
self.setMaximumWidth(fm.width(' ')*dtype.decimals+1)
self.setText(str(dtype.default))
self.show(dtype.default)
self.setToolTip(dtype.doc)

self.block = False # ignore updates from val_update_event
Expand All @@ -318,16 +342,20 @@ def get_val(self):

def val_update_event(self, val):
self.block = True
try:
self.setText(str(val))
finally:
self.block = False
self.show(val)
self.block = False

def get_state(self) -> dict:
return {'text': self.text()}

def set_state(self, data: dict):
self.setText(data['text'])
self.show(data['text'])

def show(self, data):
try:
self.setText(str(data))
except Exception as e:
InfoMsgs.write_err(e)


class Boolean_IW(DType_IW_Base, QCheckBox):
Expand All @@ -337,7 +365,7 @@ def __init__(self, params):

dtype = self.input.dtype

self.setChecked(dtype.default)
self.show(dtype.default)

self.setToolTip(dtype.doc)

Expand All @@ -353,16 +381,21 @@ def get_val(self):

def val_update_event(self, val):
self.block = True
try:
self.setChecked(bool(val))
finally:
self.block = False
self.show(val)
self.block = False

def get_state(self) -> dict:
return {'checked': self.isChecked()}

def set_state(self, data: dict):
self.setChecked(data['checked'])
self.show(data['checked'])

def show(self, data):
try:
self.setChecked(bool(data))
except Exception as e:
InfoMsgs.write_err(e)



class Choice_IW(DType_IW_Base, QComboBox):
Expand All @@ -373,7 +406,7 @@ def __init__(self, params):
dtype = self.input.dtype

self.addItems(dtype.items)
self.setCurrentText(dtype.default)
self.show(dtype.default)
self.setToolTip(dtype.doc)

self.block = False # ignore updates from val_update_event
Expand All @@ -388,10 +421,8 @@ def get_val(self):

def val_update_event(self, val):
self.block = True
try:
self.setCurrentText(val)
finally:
self.block = False
self.show(val)
self.block = False

def get_state(self) -> dict:
return {
Expand All @@ -402,4 +433,10 @@ def get_state(self) -> dict:
def set_state(self, data: dict):
self.clear()
self.addItems(data['items'])
self.setCurrentText(data['active'])
self.show(data['active'])

def show(self, data):
try:
self.setCurrentText(data)
except Exception as e:
InfoMsgs.write_err(e)

0 comments on commit 0f623c4

Please sign in to comment.