From 970f504cdd38db124325508affc4b101b0d694f5 Mon Sep 17 00:00:00 2001 From: Henry Hofmann Date: Thu, 18 Sep 2025 13:25:40 +0200 Subject: [PATCH] Skeleton UI --- README.md | 0 config/config.yml | 51 +++++++++ main.py | 12 ++ pyproject.toml | 0 requirements.txt | 0 setup.py | 0 src/__init__.py | 0 src/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 147 bytes src/__pycache__/settings.cpython-312.pyc | Bin 0 -> 1157 bytes src/__pycache__/ui.cpython-312.pyc | Bin 0 -> 7728 bytes src/__pycache__/utils.cpython-312.pyc | Bin 0 -> 2648 bytes src/api_client.py | 0 src/settings.py | 14 +++ src/ui.py | 133 +++++++++++++++++++++++ src/utils.py | 6 + tests/__init__.py | 0 tests/test_api_client.py | 0 17 files changed, 216 insertions(+) create mode 100755 README.md create mode 100755 config/config.yml create mode 100755 main.py create mode 100755 pyproject.toml create mode 100755 requirements.txt create mode 100755 setup.py create mode 100755 src/__init__.py create mode 100755 src/__pycache__/__init__.cpython-312.pyc create mode 100755 src/__pycache__/settings.cpython-312.pyc create mode 100755 src/__pycache__/ui.cpython-312.pyc create mode 100755 src/__pycache__/utils.cpython-312.pyc create mode 100755 src/api_client.py create mode 100755 src/settings.py create mode 100755 src/ui.py create mode 100755 src/utils.py create mode 100755 tests/__init__.py create mode 100755 tests/test_api_client.py diff --git a/README.md b/README.md new file mode 100755 index 0000000..e69de29 diff --git a/config/config.yml b/config/config.yml new file mode 100755 index 0000000..75cfec5 --- /dev/null +++ b/config/config.yml @@ -0,0 +1,51 @@ +--- + +UI: + theme: dark + font_size: 12 + language: en + +AI_Models: + Image_Prompt_Generation: + model: gpt-4 + system_prompt: "You are a prompt generation expert. Generate clear and concise prompts based on user input." + temperature: 0.7 + max_tokens: 1500 + Image_model_to_use: + model: stable-diffusion-v1-4 + guidance_scale: 7.5 + num_inference_steps: 50 + height: 512 + width: 512 + Image_Editing: + model: stable-diffusion-inpainting + guidance_scale: 7.5 + num_inference_steps: 50 + height: 512 + width: 512 + Video_Generation: + model: video-diffusion-model + guidance_scale: 7.5 + num_inference_steps: 50 + frame_rate: 24 + resolution: 720p + Analyzer_Model: + model: gpt-4 + system_prompt: "You are an expert image and video analyzer. Provide detailed descriptions and analyses." + temperature: 0.7 + max_tokens: 1500 + +API_Endpoints: + LLM_Provider: "OpenAI Compatible" + Image_Generation_Provider: "ComfyUI API" + Image_Editing_Provider: "ComfyUI API" + Video_Generation_Provider: "ComfyUI API" + Analyzer_Provider: "OpenAI Compatible" + API_Keys: + OpenAI_API_Key: "your_openai_api_key_here" + ComfyUI_API_Key: "your_comfyui_api_key_here" + Endpoints: + OpenAI_Endpoint: "https://api.openai.com/v1" + OpenAI_Compatible_Endpoint: "https://localhost:port/v1" + ComfyUI_Endpoint: "http://localhost:8188/api/v1" + diff --git a/main.py b/main.py new file mode 100755 index 0000000..bacd0ed --- /dev/null +++ b/main.py @@ -0,0 +1,12 @@ +import sys +from PyQt6.QtWidgets import QApplication +from src.ui import MainWindow + +def main(): + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec()) + +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml new file mode 100755 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..e69de29 diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..e69de29 diff --git a/src/__init__.py b/src/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/__pycache__/__init__.cpython-312.pyc b/src/__pycache__/__init__.cpython-312.pyc new file mode 100755 index 0000000000000000000000000000000000000000..b2e46093b13ed1c187f29a48605b82b2a231f785 GIT binary patch literal 147 zcmX@j%ge<81o2N!XMpI(AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdWt40c6Iz^FR2-9$ zk)M{En3oshlAm0fo0?Zr9OL5e8yW5&Q(TlB6Ca2KczG$)vkyY UXapk=7lRldnHd=wi;{db z;6bP!3W5}K=%L4!{38V~6;qT&=%G-sCn1(fPo3G1L}%g6d++z=eeYg6odopU{=HZH z1p)ZUgy_UVrZq;HU7!OUn!tiGv^bfwc$v2ZS%828Q$Xi7fX-vs;Da}EtSU&c6DCN4 zm&(nkhP`0edTGV$$}JfB5_YNf<&)Ctv|24yTrZxRRu{3U1+gdTm1t_x7e>Ky%eU1$h_0s=P?Sw-I8!WvvoMcU5orXyaDMRB5= z`neLJZ9iO%Tkegtox659%f1d0aW$^vw+f{AtcRk;oqVN6#x^a}7@=hCRs@JEhG~k6 zSTwA%i7jlqSQm?!U@7UvoJtuJ4=IXa8?K^wJq~t*5j;0s6MHEtPvMeg#-ti1ut%f+p-d@P(o2OQ*|6gahMZP6xaWa zX%F%*988>iu~;fts%_^dN?L_w?c^usW?n7KOBssP`|8@Kd!P9x8aa!DYuTObX8Z{C z93lpO?EfZ?9}G@3(d2P&W@qpMRPS#h(f5+wN7;JeJG#@NF@Y3gy|q;f)7~Z(#VY9) zlkwe(@}{Di0peHSrNee;*fbSIf~23N&erxZ8K9J)h_Ii*VO5`RfWKTaHhc;wA(;rD zmEzu&XVsj0e>6v@$^KV|ut)x|{4oZzV;;YN;2{g)p@%_+kH}3bve*vOpYjmGA7JtT ROr8lTIK2J(51^O-@IR*`3Y`D| literal 0 HcmV?d00001 diff --git a/src/__pycache__/ui.cpython-312.pyc b/src/__pycache__/ui.cpython-312.pyc new file mode 100755 index 0000000000000000000000000000000000000000..f0a3cb5fa42c5bc98400226f51eea94cb09c5938 GIT binary patch literal 7728 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 literal 0 HcmV?d00001 diff --git a/src/__pycache__/utils.cpython-312.pyc b/src/__pycache__/utils.cpython-312.pyc new file mode 100755 index 0000000000000000000000000000000000000000..c20060d0dcddf37fd21b6bd78b7824a4bfb9157a GIT binary patch literal 2648 zcmb7GU2M}<6!y=J6OtxryR=Q(H8Dwx$OP>w{-JDZ`R!;6+o;g0PM#Y(twUmG*A6VD zNS!ok>dVR-orJa`O#;Njc;u0HUhvH1%G$%EJ@MA6NR#%obDe}jW-4(c-+O)U`T2b8 z^Bq48hl3Qz*Ds#VZ*dg$H@RsDQ(tWDg~e@3qNXW{mY5=4Vy2lAJI&IR#7XFTG>u^P z!R)KDS^vT}!6`#2Dn^x`my2Z?>wI3ryfH8HU&w}`sB=1hT~Q_N`atmVyjTX^Tq*=y6rK(jByu4PU+17;% zK_29iR<0CDS$GuAtGaNjfhZI;QGx==X=+}XgG$O71Fjc`nHqC^piza#OgN)TWld2H-Dw#gpAar#?V2LVc%kiLSyo5J z_)}V`EE>veQFa1E|AJiAok;CasBbuw69v6|b!x1!HJJ@LTn(YaLRmW@7nhLJO0$|1 z(PiUQ1!Gw?F3aB-J)?B$Vqw>w8fk7FAS)t8%sG zq7@?LtCj7Ytk25CIzUb#4<a9lkGdZ3 zvG$BSN2Bg>!bAxh?KaWwUo&-up2xGGV5LW&qf@Wx>^0He`<=gaKj?n+=@VpS&pbyY zX0&6auv}P8-A`MQ{Y&RugI*K$+GwAN_N@n^E1~7kt;uJ7N36inmn`Gs0CQ{C%8lh4 ztH;-{75!l8yld2LqHY_dO_W|cdT;pd@Uss;d6Kp=B#e9BW1=1#WlWS=JAZHd?)bBz z(I=x;-?=}~`7KBY^#*a1th>bhBc$nV#O+nI4~Z)fgLrTSXaE{qvlPfnXp)9)gEqm^ zZIW-Q?G#m_@37ELr~;|5CfUgjEWGG>2aI6hMXNhlNX#8*L3bEvWdxxIHA-k0FfWo; z=XL5Mr&SIbeT}F-mqp1Xsa&mk`Kd8pHwbfys>EN%3ak`^pA~agp@AD(O}Ck-vMeS& z6cgl_^t~*D$&+CM0oEihI7$Zc7BT69li48dfY}MvBiHBwV&E>ajSS!s+)dPb$nZWH zddWbF9ReoFIzR`3cZy| zr0n>R86UFaC(ZatEB^6c$v!)I&`ch*lgG^DF)MjuJ=Jfg4x6dNcIt$gI$@