-
Notifications
You must be signed in to change notification settings - Fork 1
/
settings.py
92 lines (78 loc) · 2.9 KB
/
settings.py
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
import flet as ft
from models import *
def clearState(e: ft.ControlEvent) -> None:
model_dropdown.value = "N/A"
e.page.session.set('selected_model', 'N/A')
e.page.session.set('isMlx', False)
e.page.session.set('selected_temp', 0)
def updateIsMlxInfo(e: ft.ControlEvent) -> None:
clearState(e)
if select_mlX_models.value:
model_dropdown.options = retModelOptions(True)
else:
model_dropdown.options = retModelOptions()
saveState(e)
e.page.update()
def saveState(e: ft.ControlEvent) -> None:
e.page.session.set('selected_model', model_dropdown.value)
e.page.session.set('isMlx', select_mlX_models.value)
e.page.session.set('selected_temp', temp_slider.value)
def updateTempInfo(e: ft.ControlEvent) -> None:
temp_value_label.value = temp_slider.value
saveState(e)
e.page.update()
def updateModelInfo(e: ft.ControlEvent) -> None:
saveState(e)
model_dropdown = ft.Dropdown(
label = "Load a model^",
hint_text= "Choose from available models",
options = retModelOptions(),
value = "unselected",
dense=True,
focused_bgcolor='pink',
)
select_mlX_models = ft.Switch(label='Load 🖥️ mlX models from HF',
value=False,
adaptive=True,
label_position=ft.LabelPosition.LEFT)
temp_label = ft.Text(value='Temperature')
temp_slider = ft.CupertinoSlider(min=0.0, max=1.0, divisions=10, value=0.3)
temp_value_label = ft.Text(value=temp_slider.value)
model_help_text = ft.Text('^Ollama models are loaded by default', style=ft.TextStyle(size=10), text_align=ft.TextAlign.LEFT)
model_control_view = ft.Row([
ft.Column([model_dropdown]),
ft.Column([select_mlX_models, model_help_text], horizontal_alignment=ft.CrossAxisAlignment.START)
], alignment=ft.MainAxisAlignment.CENTER, spacing=20)
temp_control_view = ft.Column([
temp_slider,
ft.Row([
temp_label,
temp_value_label
])
])
controls_view = ft.Row([
temp_control_view,
model_control_view
], alignment=ft.MainAxisAlignment.CENTER, spacing=20)
select_mlX_models.on_change = updateIsMlxInfo
model_dropdown.on_change = updateModelInfo
temp_slider.on_change = updateTempInfo
settings_banner_text = ft.Text(value='PyOllaMx Settings', style=ft.TextStyle(font_family='CabinSketch-Bold'), size=30)
settings_banner_image = ft.Image(src=f"logos/combined_logos.png",
width=75,
height=75,
fit=ft.ImageFit.CONTAIN,
)
settings_banner_view = ft.Row([
settings_banner_image,
settings_banner_text
], alignment=ft.MainAxisAlignment.CENTER, vertical_alignment=ft.CrossAxisAlignment.CENTER)
def settingsView(page: ft.Page) -> ft.View:
return ft.View(
"/settings",
controls = [
ft.AppBar(title=""),
settings_banner_view,
controls_view
]
)