Skip to content

Commit 49e5a11

Browse files
committed
feat: add tooltips to enum_multiselect
1 parent 9b6c847 commit 49e5a11

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

daras_ai_v2/enum_selector_widget.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def enum_multiselect(
1616
label: str = "",
1717
checkboxes=True,
1818
allow_none=True,
19+
tooltip: dict[E, str] | None = None,
20+
tooltip_placement: str = "top",
1921
):
2022
try:
2123
deprecated = enum_cls._deprecated()
@@ -27,8 +29,14 @@ def enum_multiselect(
2729
if e in deprecated and e.name not in value:
2830
continue
2931
enums.append(e)
30-
enum_names = [e.name for e in enums]
31-
enum_labels = {e.name: _default_format_func(e) for e in enums}
32+
33+
enum_names = []
34+
enum_labels = {}
35+
enum_lookup = {}
36+
for e in enums:
37+
enum_names.append(e.name)
38+
enum_labels[e.name] = _default_format_func(e)
39+
enum_lookup[e.name] = e
3240

3341
if checkboxes:
3442
if label:
@@ -41,7 +49,18 @@ def render(name):
4149
if inner_key not in gui.session_state:
4250
gui.session_state[inner_key] = name in selected
4351

44-
gui.checkbox(enum_labels.get(name), key=inner_key)
52+
enum_obj = enum_lookup[name]
53+
tooltip_text = tooltip.get(enum_obj) if tooltip else None
54+
55+
if tooltip_text:
56+
gui.checkbox(
57+
enum_labels.get(name),
58+
key=inner_key,
59+
help=tooltip_text,
60+
tooltip_placement=tooltip_placement,
61+
)
62+
else:
63+
gui.checkbox(enum_labels.get(name), key=inner_key)
4564

4665
if gui.session_state.get(inner_key):
4766
ret_val.append(name)

daras_ai_v2/stable_diffusion.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ def _deprecated(cls):
9696
}
9797

9898

99+
model_pricing_tooltips = {
100+
Text2ImgModels.dall_e_3: "15 Cr",
101+
Text2ImgModels.gpt_image_1: "3, 10 or 40 Cr",
102+
Text2ImgModels.nano_banana: "8 Cr",
103+
}
104+
105+
99106
class Img2ImgModels(Enum):
100107
flux_pro_kontext = "FLUX.1 Pro Kontext (fal.ai)"
101108

recipes/CompareText2Img.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ def related_workflows(self) -> list:
101101
]
102102

103103
def render_form_v2(self):
104+
from daras_ai_v2.stable_diffusion import model_pricing_tooltips
105+
104106
gui.text_area(
105107
"""
106108
#### 👩‍💻 Prompt
@@ -118,10 +120,6 @@ def render_form_v2(self):
118120
gui.caption(
119121
"""
120122
Each selected model costs 2 credits ($.02) / image except where noted.
121-
122-
Dalle-3: 15 Cr
123-
Nano banana: 8 Cr
124-
GPT-image: 3, 10 or 40 Cr
125123
"""
126124
)
127125

@@ -131,9 +129,12 @@ def render_form_v2(self):
131129
[Check out our prompt guide](https://docs.google.com/presentation/d/1RaoMP0l7FnBZovDAR42zVmrUND9W5DW6eWet-pi6kiE/edit#slide=id.g210b1678eba_0_26).
132130
"""
133131
)
132+
134133
selected_models = enum_multiselect(
135134
Text2ImgModels,
136135
key="selected_models",
136+
tooltip=model_pricing_tooltips,
137+
tooltip_placement="right",
137138
)
138139
if selected_models and set(selected_models) <= {Text2ImgModels.flux_1_dev.name}:
139140
loras_input()

0 commit comments

Comments
 (0)