File: protocols.md

package info (click to toggle)
magicgui 0.9.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 21,796 kB
  • sloc: python: 11,202; makefile: 11; sh: 9
file content (149 lines) | stat: -rw-r--r-- 4,342 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Backend Protocols

!!!warning "Advanced Topic"

    ***Most users of magicgui will not need to worry about this section.***

    These Protocol classes declare the interface that backend
    adapters must implement in order to be used by magicgui. All magicgui `Widget`
    objects compose a backend widget implementing one of these protocols, and control
    it using the methods defined herein.

    `magicgui` developers may be interested in this page, but end-users
    needn't worry about it.

## Summary

::: autosummary
    magicgui.widgets.protocols.WidgetProtocol
    magicgui.widgets.protocols.ValueWidgetProtocol
    magicgui.widgets.protocols.ButtonWidgetProtocol
    magicgui.widgets.protocols.TableWidgetProtocol
    magicgui.widgets.protocols.RangedWidgetProtocol
    magicgui.widgets.protocols.CategoricalWidgetProtocol
    magicgui.widgets.protocols.SliderWidgetProtocol
    magicgui.widgets.protocols.ContainerProtocol
    magicgui.widgets.protocols.BaseApplicationBackend
    magicgui.widgets.protocols.DialogProtocol
    magicgui.widgets.protocols.SupportsChoices
    magicgui.widgets.protocols.SupportsOrientation
    magicgui.widgets.protocols.SupportsText
    magicgui.widgets.protocols.SupportsReadOnly

## Protocol Inheritance

The visual hierarchy of protocols looks like this:

``` mermaid
graph LR
    A([WidgetProtocol])-->B([ValueWidgetProtocol])
    A-->C([ContainerProtocol])
    M([SupportsText])-->E
    B-->E([ButtonWidgetProtocol])
    B-->D([RangedWidgetProtocol])
    B-->F([CategoricalWidgetProtocol])
    D-->I([SliderWidgetProtocol])
    B-->J([TableWidgetProtocol])
    K([SupportsReadOnly])-->J([TableWidgetProtocol])
    L([SupportsChoices])-->F
    N([SupportsOrientation])-->C
    N-->I
    C-->O([DialogProtocol])
    C-->P([MainWindowProtocol])

    click A "#magicgui.widgets.protocols.WidgetProtocol"
    click B "#magicgui.widgets.protocols.ValueWidgetProtocol"
    click C "#magicgui.widgets.protocols.ContainerProtocol"
    click D "#magicgui.widgets.protocols.RangedWidgetProtocol"
    click E "#magicgui.widgets.protocols.ButtonWidgetProtocol"
    click F "#magicgui.widgets.protocols.CategoricalWidgetProtocol"
    click I "#magicgui.widgets.protocols.SliderWidgetProtocol"
    click J "#magicgui.widgets.protocols.TableWidgetProtocol"
    click K "#magicgui.widgets.protocols.SupportsReadOnly"
    click L "#magicgui.widgets.protocols.SupportsChoices"
    click M "#magicgui.widgets.protocols.SupportsText"
    click N "#magicgui.widgets.protocols.SupportsOrientation"
    click O "#magicgui.widgets.protocols.DialogProtocol"
    click P "#magicgui.widgets.protocols.MainWindowProtocol"
```

## Widget Protocols

::: magicgui.widgets.protocols.WidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.ValueWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.ButtonWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.TableWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.RangedWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.CategoricalWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.SliderWidgetProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.ContainerProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.DialogProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.MainWindowProtocol
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.SupportsChoices
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.SupportsOrientation
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.SupportsText
    options:
        filters: []
        heading_level: 3

::: magicgui.widgets.protocols.SupportsReadOnly
    options:
        filters: []
        heading_level: 3

---------

## Application Protocol

::: magicgui.widgets.protocols.BaseApplicationBackend
    options:
        filters: []
        heading_level: 3