Make field form a vertical layout, add formatted style sheets
							parent
							
								
									01261d601a
								
							
						
					
					
						commit
						12c37f3388
					
				| 
						 | 
				
			
			@ -37,7 +37,7 @@ from PyQt5.QtWidgets import (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
from ._event import open_handlers
 | 
			
		||||
from ._style import hcolor, _font, DpiAwareFont
 | 
			
		||||
from ._style import hcolor, _font, _font_small, DpiAwareFont
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FontAndChartAwareLineEdit(QLineEdit):
 | 
			
		||||
| 
						 | 
				
			
			@ -153,38 +153,54 @@ class FieldsForm(QWidget):
 | 
			
		|||
    def __init__(
 | 
			
		||||
        self,
 | 
			
		||||
 | 
			
		||||
        # godwidget: 'GodWidget',  # type: ignore # noqa
 | 
			
		||||
        godwidget: 'GodWidget',  # type: ignore # noqa
 | 
			
		||||
        parent=None,
 | 
			
		||||
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        super().__init__(parent)
 | 
			
		||||
 | 
			
		||||
        super().__init__(parent or godwidget)
 | 
			
		||||
        self.godwidget = godwidget
 | 
			
		||||
 | 
			
		||||
        # size it as we specify
 | 
			
		||||
        self.setSizePolicy(
 | 
			
		||||
            QSizePolicy.Fixed,
 | 
			
		||||
            QSizePolicy.Fixed,
 | 
			
		||||
        )
 | 
			
		||||
        # self.setMaximumHeight(30)
 | 
			
		||||
        self.setMaximumWidth(120)
 | 
			
		||||
 | 
			
		||||
        # split layout for the (label:| text bar entry)
 | 
			
		||||
        self.hbox = QtGui.QHBoxLayout(self)
 | 
			
		||||
        self.hbox.setContentsMargins(16, 0, 16, 0)
 | 
			
		||||
        self.hbox.setSpacing(3)
 | 
			
		||||
        self.vbox = QtGui.QVBoxLayout(self)
 | 
			
		||||
        self.vbox.setAlignment(Qt.AlignBottom)
 | 
			
		||||
        self.vbox.setContentsMargins(0, 0, 4, 0)
 | 
			
		||||
        self.vbox.setSpacing(3)
 | 
			
		||||
        # self.vbox.addStretch()
 | 
			
		||||
 | 
			
		||||
        self.labels: dict[str, QLabel] = {}
 | 
			
		||||
        self.fields: dict[str, QWidget] = {}
 | 
			
		||||
 | 
			
		||||
        self._font_size = _font_small.px_size - 1
 | 
			
		||||
        self._max_item_width: (float, float) = 0, 0
 | 
			
		||||
 | 
			
		||||
    def add_field_label(
 | 
			
		||||
        self,
 | 
			
		||||
        name: str,
 | 
			
		||||
        font_size: Optional[int] = None,
 | 
			
		||||
        font_color: str = 'default_light',
 | 
			
		||||
 | 
			
		||||
    ) -> QtGui.QLabel:
 | 
			
		||||
 | 
			
		||||
        # add label to left of search bar
 | 
			
		||||
        self.label = label = QtGui.QLabel(parent=self)
 | 
			
		||||
        label.setTextFormat(3)  # markdown
 | 
			
		||||
        label.setTextFormat(Qt.MarkdownText)  # markdown
 | 
			
		||||
        label.setFont(_font.font)
 | 
			
		||||
        font_size = font_size or self._font_size - 3
 | 
			
		||||
        label.setStyleSheet(
 | 
			
		||||
            f"QLabel {{ color : {hcolor('papas_special')}; }}"
 | 
			
		||||
            f"""QLabel {{
 | 
			
		||||
                color : {hcolor(font_color)};
 | 
			
		||||
                font-size : {font_size}px;
 | 
			
		||||
            }}
 | 
			
		||||
            """
 | 
			
		||||
        )
 | 
			
		||||
        label.setMargin(4)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +212,7 @@ class FieldsForm(QWidget):
 | 
			
		|||
        )
 | 
			
		||||
        label.show()
 | 
			
		||||
 | 
			
		||||
        self.hbox.addWidget(label)
 | 
			
		||||
        self.vbox.addWidget(label)
 | 
			
		||||
        self.labels[name] = label
 | 
			
		||||
 | 
			
		||||
        return label
 | 
			
		||||
| 
						 | 
				
			
			@ -220,10 +236,14 @@ class FieldsForm(QWidget):
 | 
			
		|||
            # width_in_chars=6,
 | 
			
		||||
        )
 | 
			
		||||
        edit.setStyleSheet(
 | 
			
		||||
            f"QLineEdit {{ color : {hcolor('gunmetal')}; }}"
 | 
			
		||||
            f"""QLineEdit {{
 | 
			
		||||
                color : {hcolor('gunmetal')};
 | 
			
		||||
                font-size : {self._font_size}px;
 | 
			
		||||
            }}
 | 
			
		||||
            """
 | 
			
		||||
        )
 | 
			
		||||
        edit.setText(str(value))
 | 
			
		||||
        self.hbox.addWidget(edit)
 | 
			
		||||
        self.vbox.addWidget(edit)
 | 
			
		||||
 | 
			
		||||
        self.fields[name] = edit
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +266,11 @@ class FieldsForm(QWidget):
 | 
			
		|||
            select.insertItem(i, str(value))
 | 
			
		||||
 | 
			
		||||
        select.setStyleSheet(
 | 
			
		||||
            f"QComboBox {{ color : {hcolor('gunmetal')}; }}"
 | 
			
		||||
            f"""QComboBox {{
 | 
			
		||||
                color : {hcolor('gunmetal')};
 | 
			
		||||
                font-size : {self._font_size}px;
 | 
			
		||||
            }}
 | 
			
		||||
            """
 | 
			
		||||
        )
 | 
			
		||||
        select.setSizeAdjustPolicy(QComboBox.AdjustToContents)
 | 
			
		||||
        select.setIconSize(QSize(0, 0))
 | 
			
		||||
| 
						 | 
				
			
			@ -270,9 +294,12 @@ class FieldsForm(QWidget):
 | 
			
		|||
 | 
			
		||||
        # limit to 6 items?
 | 
			
		||||
        view.setMaximumHeight(6*h)
 | 
			
		||||
        # one entry in view
 | 
			
		||||
        select.setMinimumHeight(h)
 | 
			
		||||
 | 
			
		||||
        select.show()
 | 
			
		||||
 | 
			
		||||
        self.hbox.addWidget(select)
 | 
			
		||||
        self.vbox.addWidget(select)
 | 
			
		||||
 | 
			
		||||
        return select
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -302,8 +329,8 @@ async def handle_field_input(
 | 
			
		|||
            # search.bar.unfocus()
 | 
			
		||||
 | 
			
		||||
            # kill the search and focus back on main chart
 | 
			
		||||
            if chart:
 | 
			
		||||
                chart.linkedsplits.focus()
 | 
			
		||||
            widget.clearFocus()
 | 
			
		||||
            form.godwidget.linkedsplits.focus()
 | 
			
		||||
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -311,6 +338,7 @@ async def handle_field_input(
 | 
			
		|||
@asynccontextmanager
 | 
			
		||||
async def open_form(
 | 
			
		||||
 | 
			
		||||
    godwidget: QWidget,
 | 
			
		||||
    parent: QWidget,
 | 
			
		||||
    fields: dict,
 | 
			
		||||
    # orientation: str = 'horizontal',
 | 
			
		||||
| 
						 | 
				
			
			@ -319,6 +347,12 @@ async def open_form(
 | 
			
		|||
 | 
			
		||||
    form = FieldsForm(parent)
 | 
			
		||||
 | 
			
		||||
    # form.add_field_label(
 | 
			
		||||
    #     '### **pp conf**\n---',
 | 
			
		||||
    #     font_size=_font.px_size - 2,
 | 
			
		||||
    #     font_color='default_lightest',
 | 
			
		||||
    # )
 | 
			
		||||
 | 
			
		||||
    for name, config in fields.items():
 | 
			
		||||
        wtype = config['type']
 | 
			
		||||
        key = str(config['key'])
 | 
			
		||||
| 
						 | 
				
			
			@ -332,13 +366,25 @@ async def open_form(
 | 
			
		|||
            values = list(config['default_value'])
 | 
			
		||||
            form.add_select_field(key, values)
 | 
			
		||||
 | 
			
		||||
    form.add_field_label('fills:')
 | 
			
		||||
    # form.add_field_label('fills:')
 | 
			
		||||
    fill_bar = QProgressBar(form)
 | 
			
		||||
    fill_bar.setMinimum(0)
 | 
			
		||||
    fill_bar.setMaximum(4)
 | 
			
		||||
    fill_bar.setValue(3)
 | 
			
		||||
    fill_bar.setOrientation(Qt.Vertical)
 | 
			
		||||
    fill_bar.setStyleSheet(
 | 
			
		||||
        f"""QProgressBar {{
 | 
			
		||||
            color : {hcolor('gunmetal')};
 | 
			
		||||
            font-size : {form._font_size}px;
 | 
			
		||||
            background-color: {hcolor('papas_special')};
 | 
			
		||||
            color: {hcolor('bracket')};
 | 
			
		||||
        }}
 | 
			
		||||
        """
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    form.hbox.addWidget(fill_bar)
 | 
			
		||||
    form.vbox.addWidget(fill_bar)
 | 
			
		||||
 | 
			
		||||
    # form.vbox.addStretch()
 | 
			
		||||
 | 
			
		||||
    async with open_handlers(
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue