Пример #1
0
    def init_ui(self, layout_cls=None):
        super().init_ui()
        layout_cls = first_valid(layout_cls=layout_cls,
                                 LAYOUT_CLS=self.LAYOUT_CLS,
                                 _self=self)

        layout = layout_cls(self)

        with self.setup_provided(layout):
            self.not_none_checkbox = QCheckBox()
            self.not_none_checkbox.toggled.connect(self._not_none_changed)
            layout.addWidget(self.not_none_checkbox)

            self.inner = self.inner_template()
            self.inner.on_change.connect(self.change_value)
            self.inner.setEnabled(False)

            layout.addWidget(self.inner)

        for p in chain(self.inner.provided_pre(), self.inner.provided_post()):
            p.hide()

        self.warden = self.MouseWarden(target=self.inner,
                                       dispatch=partial(
                                           self.not_none_checkbox.setChecked,
                                           True))
        QApplication.instance().installEventFilter(self.warden)

        return layout
Пример #2
0
def gdalos_qt_main():
    from fidget.backend.QtWidgets import QApplication
    from fidget.backend.QtWidgets import QVBoxLayout
    from fidget.core import Fidget
    from fidget.widgets import FidgetMatrix, FidgetMinimal, FidgetQuestion
    from fidget.widgets.__util__ import CountBounds
    from gdalos.gdalos_trans import gdalos_trans
    from gdalos_qt.gdalos_widget import GdalosWidget

    app = QApplication(
        []
    )  # this app variable is needed, because otherwise python will delete the QApplication
    q = FidgetQuestion(
        FidgetMatrix(
            FidgetMinimal(
                GdalosWidget(make_title=True,
                             make_plaintext=True,
                             make_indicator=True),
                make_title=False,
                make_plaintext=False,
                make_indicator=False,
                initial_value={},
            ),
            rows=CountBounds(1, 1, None),
            columns=1,
            make_plaintext=True,
            make_title=True,
            make_indicator=False,
            layout_cls=QVBoxLayout,
            scrollable=True,
        ),
        flags=Fidget.FLAGS,
    )
    q.show()
    result = q.exec()
    print(result)

    if result.is_ok() and result.value is not None:
        for v in result.value:
            d = dict(v[0])
            d2 = dict()
            for k, v in d.items():
                new_k = k.replace(" ", "_")
                d2[new_k] = d[k]

            print(gdalos_trans(**d2))
Пример #3
0
 def mutate_focus(ro, co):
     focus = QApplication.focusWidget()
     index = -1
     while index == -1:
         focus = focus.parent()
         if not focus:
             event.ignore()
             return
         index = self.grid_layout.indexOf(focus)
     r, c, *_ = self.grid_layout.getItemPosition(index)
     r += ro
     c += co
     if r <= 0 or c <= 0:
         # avoid row/column buttons
         event.ignore()
         return
     item = self.grid_layout.itemAtPosition(r, c)
     if not item:
         event.ignore()
         return
     to_focus = item.widget()
     to_focus.setFocus()
Пример #4
0
    MAKE_INDICATOR = False
    MAKE_PLAINTEXT = False
    LAYOUT_CLS = QHBoxLayout


class NodatavalueWidgetDst(FidgetStacked[Optional[Union[float, type(...)]]]):
    INNER_TEMPLATES = [
        FidgetConst.template("don't change", option=("None", None)),
        FidgetConst.template("change to default value (for DTM)",
                             option=("...", ...)),
        FidgetInt.template("change to a set value"),
    ]
    SELECTOR_CLS = "radio"
    MAKE_TITLE = True
    MAKE_INDICATOR = False
    MAKE_PLAINTEXT = False
    LAYOUT_CLS = QHBoxLayout


if __name__ == "__main__":
    from fidget.backend.QtWidgets import QApplication
    from fidget.widgets import FidgetOptional

    app = QApplication([])
    # w = FidgetOptional(NodatavalueWidget("sample nodatavalue"))
    # w = NodatavalueWidgetSrc("sample nodatavalue", initial_value=None)  # todo: setting initial_value doesn't work
    w = NodatavalueWidgetSrc("sample nodatavalue")
    w.show()
    app.exec_()
    print(w.value())
Пример #5
0
from fidget.backend.QtWidgets import QApplication, QHBoxLayout, QFrame

from fidget.widgets import FidgetLabel, FidgetInt, FidgetStacked

if __name__ == '__main__':
    app = QApplication([])
    w = FidgetStacked('number', [
        FidgetLabel('auto', initial=('auto', 123456)),
        FidgetInt('raw text'),
    ],
                      make_plaintext=True,
                      frame_style=QFrame.Box,
                      selector_cls=FidgetStacked.CheckBoxSelector,
                      layout_cls=QHBoxLayout,
                      make_indicator=False)
    w.show()
    res = app.exec_()
    print(w.value())
    exit(res)
Пример #6
0
from fidget.widgets.user_util import FidgetInt
from fidget.backend import prefer

# prefer('PySide6')

from fidget.backend.QtWidgets import QVBoxLayout
from fidget.widgets import FidgetQuestion, FidgetMatrix, FidgetMinimal, FidgetDict
from fidget.widgets.__util__ import CountBounds

if __name__ == '__main__':
    from fidget.backend.QtWidgets import QApplication

    app = QApplication([])
    q = FidgetQuestion(FidgetMatrix(FidgetMinimal(FidgetDict(
        'sample', [FidgetInt('X'), FidgetInt('Y')],
        make_title=True,
        make_indicator=True,
        make_plaintext=True),
                                                  make_plaintext=False,
                                                  make_indicator=False,
                                                  make_title=False,
                                                  initial_value=None),
                                    rows=CountBounds(1, 1, None),
                                    columns=1,
                                    make_plaintext=True,
                                    make_title=True,
                                    make_indicator=False,
                                    layout_cls=QVBoxLayout),
                       cancel_value=None)
    q.show()
    result = q.exec_()