Skip to content

Commit f22a91f

Browse files
committed
Hide alternative Flux models in installer if they're not recommended/supported by hardware #2048
* Previously showed "Not Supported" which was confusing to many
1 parent b331518 commit f22a91f

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

ai_diffusion/ui/server.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from __future__ import annotations
2+
from dataclasses import dataclass
23
from enum import Enum
34
from pathlib import Path
45
from typing import Optional
@@ -45,6 +46,7 @@ class PackageState(Enum):
4546
disabled = 3
4647

4748

49+
@dataclass
4850
class PackageItem:
4951
label: QLabel
5052
status: QLabel | QCheckBox
@@ -101,32 +103,35 @@ def __init__(
101103
self._items: list[PackageItem] = [self.add_item(p) for p in packages]
102104
self._update_visibility()
103105

106+
def _update_item_visibility(self, item: PackageItem):
107+
supported = self._backend_supports(item)
108+
item.label.setVisible(supported and self._header.isChecked())
109+
item.status.setVisible(supported and self._header.isChecked())
110+
104111
def _update_visibility(self):
105112
self._header.setArrowType(
106113
Qt.ArrowType.DownArrow if self._header.isChecked() else Qt.ArrowType.RightArrow
107114
)
108115
if self._desc:
109116
self._desc.setVisible(self._header.isChecked())
110117
for item in self._items:
111-
item.label.setVisible(self._header.isChecked())
112-
item.status.setVisible(self._header.isChecked())
118+
self._update_item_visibility(item)
113119

114120
def expand(self):
115121
if not self._header.isChecked():
116122
self._header.setChecked(True)
117123

118124
def add_item(self, package: str | ModelResource | CustomNode):
119-
item = PackageItem()
120-
item.package = package
121-
item.state = PackageState.available
122-
item.label = QLabel(self._package_name(package), self)
125+
item = PackageItem(
126+
package=package,
127+
state=PackageState.available,
128+
label=QLabel(self._package_name(package), self),
129+
status=QCheckBox(_("Install"), self) if self.is_checkable else QLabel(self),
130+
)
123131
item.label.setContentsMargins(20, 0, 0, 0)
124132
if self.is_checkable:
125-
item.status = QCheckBox(_("Install"), self)
126133
item.status.setChecked(False)
127134
item.status.toggled.connect(self._handle_checkbox_toggle)
128-
else:
129-
item.status = QLabel(self)
130135
self._layout.addWidget(item.label, self._layout.rowCount(), 0)
131136
self._layout.addWidget(item.status, self._layout.rowCount() - 1, 1)
132137
return item
@@ -147,6 +152,7 @@ def values(self, values: list[PackageState]):
147152

148153
def _update(self):
149154
for item in self._items:
155+
self._update_item_visibility(item)
150156
if item.state is PackageState.installed:
151157
item.status.setText(_("Installed"))
152158
item.status.setStyleSheet(f"color:{green}")

0 commit comments

Comments
 (0)