Skip to content

Commit 8d38712

Browse files
authored
Merge pull request #4 from rtuszik/dev
Refactor and improve Docker support, UI notifications, and component styling
2 parents 5db8d32 + c4519a7 commit 8d38712

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ FROM python:3.11-slim
33
# Environment variables to optimize Python behavior
44
ENV PYTHONDONTWRITEBYTECODE=1
55
ENV PYTHONUNBUFFERED=1
6+
ENV DOCKER_CONTAINER=True
67

78
# Set the working directory
89
WORKDIR /app

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
![Super-Linter](https://github.com/rtuszik/replicate-flux-lora/actions/workflows/super-linter.yml/badge.svg)
2-
![GitHub tag check runs](https://img.shields.io/github/check-runs/rtuszik/replicate-flux-lora/latest)
2+
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/rtuszik/replicate-flux-lora/docker-build-push.yml)
3+
34

45
# Flux Replicate GUI
56
A simple web interface for running Flux models using the Replicate API. Use it to generate images with custom LoRAs and fine-tuned Flux models.

src/gui.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
)
1818
logger.add("gui.log", rotation="10 MB", format="{time} {level} {message}", level="INFO")
1919

20+
DOCKERIZED = os.environ.get("DOCKER_CONTAINER", False)
21+
2022

2123
class Lightbox:
2224
def __init__(self):
@@ -100,9 +102,13 @@ def setup_left_panel(self):
100102
"w-full"
101103
)
102104

103-
self.folder_path = self.settings.get(
104-
"output_folder", str(Path.home() / "Downloads")
105-
)
105+
if DOCKERIZED:
106+
self.folder_path = self.settings.get("output_folder", str("/app/output"))
107+
else:
108+
self.folder_path = self.settings.get(
109+
"output_folder", str(Path.home() / "Downloads")
110+
)
111+
106112
self.folder_input = ui.input(
107113
label="Output Folder", value=self.folder_path
108114
).classes("w-full")
@@ -244,9 +250,9 @@ def add_user_model(self):
244250
self.user_models_select.options = self.user_added_models
245251
self.new_model_input.value = ""
246252
self.save_settings()
247-
ui.notify(f"Model '{new_model}' added successfully", type="success")
253+
ui.notify(f"Model '{new_model}' added successfully", type="positive")
248254
else:
249-
ui.notify("Invalid model name or model already exists", type="error")
255+
ui.notify("Invalid model name or model already exists", type="negative")
250256

251257
def delete_user_model(self):
252258
selected_model = self.user_models_select.value
@@ -255,9 +261,9 @@ def delete_user_model(self):
255261
self.user_models_select.options = self.user_added_models
256262
self.user_models_select.value = None
257263
self.save_settings()
258-
ui.notify(f"Model '{selected_model}' deleted successfully", type="success")
264+
ui.notify(f"Model '{selected_model}' deleted successfully", type="positive")
259265
else:
260-
ui.notify("No model selected for deletion", type="error")
266+
ui.notify("No model selected for deletion", type="negative")
261267

262268
def select_user_model(self, e):
263269
if e.value:
@@ -271,15 +277,15 @@ def update_folder_path(self, e):
271277
self.folder_path = new_path
272278
self.save_settings()
273279
logger.info(f"Output folder set to: {self.folder_path}")
274-
ui.notify(f"Output folder updated to: {self.folder_path}", type="success")
280+
ui.notify(f"Output folder updated to: {self.folder_path}", type="positive")
275281
else:
276282
ui.notify(
277-
"Invalid folder path. Please enter a valid directory.", type="error"
283+
"Invalid folder path. Please enter a valid directory.", type="negative"
278284
)
279285
self.folder_input.value = self.folder_path
280286

281287
def setup_right_panel(self):
282-
self.spinner = ui.spinner(size="lg")
288+
self.spinner = ui.spinner(type="infinity", size="xl")
283289
self.spinner.visible = False
284290

285291
# Add gallery view
@@ -328,7 +334,8 @@ def toggle_custom_dimensions(self, e):
328334
async def start_generation(self):
329335
if not self.replicate_model_input.value:
330336
ui.notify(
331-
"Please set a Replicate model before generating images.", type="error"
337+
"Please set a Replicate model before generating images.",
338+
type="negative",
332339
)
333340
logger.warning(
334341
"Attempted to generate images without setting a Replicate model"
@@ -372,7 +379,7 @@ async def start_generation(self):
372379
logger.success(f"Images generated successfully: {output}")
373380
except Exception as e:
374381
error_message = f"An error occurred: {str(e)}"
375-
ui.notify(error_message, type="error")
382+
ui.notify(error_message, type="negative")
376383
logger.exception(error_message)
377384
finally:
378385
self.generate_button.enable()
@@ -398,7 +405,7 @@ async def download_and_display_images(self, image_urls):
398405
logger.error(f"Failed to download image from {url}")
399406

400407
self.update_gallery(downloaded_images)
401-
ui.notify("Images generated and downloaded successfully!", type="success")
408+
ui.notify("Images generated and downloaded successfully!", type="positive")
402409

403410
def update_gallery(self, image_paths):
404411
self.gallery_container.clear()

0 commit comments

Comments
 (0)