Skip to content

Commit 19bceac

Browse files
authored
Create settings.py
1 parent dea5d92 commit 19bceac

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

files/settings.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import flet as ft
2+
3+
class Settings:
4+
def __init__(self, waste_size=3, deck_passes_allowed=1000, card_back=f"/images/card_back0.png"):
5+
self.waste_size = waste_size
6+
self.deck_passes_allowed = deck_passes_allowed
7+
self.card_back = card_back
8+
9+
10+
class SettingsDialog(ft.AlertDialog):
11+
def __init__(self, settings, on_settings_applied):
12+
super().__init__()
13+
self.on_settings_applied = on_settings_applied
14+
self.settings = settings
15+
self.modal = True
16+
self.title = ft.Text("Solitare Settings")
17+
self.waste_size = ft.RadioGroup(value=self.settings.waste_size, content=ft.Row(controls=[
18+
ft.Radio(value=1, label="One card"),
19+
ft.Radio(value=3, label="Three cards")
20+
]))
21+
self.deck_passes_allowed = ft.RadioGroup(value=self.settings.deck_passes_allowed, content=ft.Row(controls=[
22+
ft.Radio(value=3, label="Three"),
23+
ft.Radio(value=1000, label="Unlimited"),
24+
]))
25+
self.generate_card_backs()
26+
27+
28+
self.content = ft.Column(controls=[
29+
ft.Text("Waste pile size:"),
30+
self.waste_size,
31+
ft.Text("Passes through the deck:"),
32+
self.deck_passes_allowed,
33+
ft.Row(controls=self.card_backs),
34+
ft.Checkbox(label="New game will be started when settings are updated.", value=True, disabled=True),
35+
],
36+
tight=True
37+
)
38+
self.actions = [
39+
ft.TextButton("Cancel", on_click=self.cancel),
40+
ft.FilledButton("Apply settings", on_click=self.apply_settings),
41+
]
42+
43+
def generate_card_backs(self):
44+
self.card_backs = []
45+
for i in range(4):
46+
self.card_backs.append(ft.Container(width=70, height=100, content=ft.Image(src=f"/images/card_back{i}.png"), border_radius=ft.border_radius.all(6), on_click=self.choose_card_design, data=i))
47+
self.selected_card = self.card_backs[0]
48+
49+
50+
def choose_card_design(self, e):
51+
for card in self.card_backs:
52+
if card.data != e.control.data:
53+
card.border = None
54+
e.control.border = ft.border.all(3)
55+
self.selected_card = e.control
56+
self.update()
57+
58+
59+
def cancel(self, e):
60+
self.waste_size.value = self.settings.waste_size
61+
self.deck_passes_allowed.value = self.settings.deck_passes_allowed
62+
self.open = False
63+
self.update()
64+
65+
def apply_settings(self, e):
66+
self.open = False
67+
self.settings.waste_size = int(self.waste_size.value)
68+
self.settings.deck_passes_allowed = int(self.deck_passes_allowed.value)
69+
self.settings.card_back = self.selected_card.content.src
70+
self.on_settings_applied(self.settings)
71+
self.update()
72+
73+
74+
75+
76+

0 commit comments

Comments
 (0)