Skip to content

Commit 418b3ee

Browse files
update trolli tutotial code(#195)
* update trolli * clean up
1 parent 962f42d commit 418b3ee

File tree

10 files changed

+476
-467
lines changed

10 files changed

+476
-467
lines changed

python/apps/trolli/pyproject.toml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
[project]
2+
name = "new-trolli"
3+
version = "0.1.0"
4+
description = ""
5+
readme = "README.md"
6+
requires-python = ">=3.8"
7+
dependencies = [
8+
"flet==0.26.0"
9+
]
10+
11+
12+
[tool.flet]
13+
# org name in reverse domain name notation, e.g. "com.mycompany".
14+
# Combined with project.name to build bundle ID for iOS and Android apps
15+
org = "com.mycompany"
16+
17+
# project display name that is used as an app title on Android and iOS home screens,
18+
# shown in window titles and about app dialogs on desktop.
19+
product = "new-trolli"
20+
21+
# company name to display in about app dialogs
22+
company = "Flet"
23+
24+
# copyright text to display in about app dialogs
25+
copyright = "Copyright (C) 2024 by Flet"
26+
27+
[tool.flet.app]
28+
path = "src"

python/apps/trolli/src/app_layout.py

+65-79
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,78 @@
11
from board import Board
22
from data_store import DataStore
3-
from flet import (
4-
ButtonStyle,
5-
Column,
6-
Container,
7-
Control,
8-
IconButton,
9-
Page,
10-
PopupMenuButton,
11-
PopupMenuItem,
12-
RoundedRectangleBorder,
13-
Row,
14-
Text,
15-
TextButton,
16-
TextField,
17-
border,
18-
border_radius,
19-
colors,
20-
icons,
21-
padding,
22-
)
3+
import flet as ft
234
from sidebar import Sidebar
245

25-
class AppLayout(Row):
26-
def __init__(self, app, page: Page, store: DataStore, *args, **kwargs):
6+
7+
class AppLayout(ft.Row):
8+
def __init__(self, app, page: ft.Page, store: DataStore, *args, **kwargs):
279
super().__init__(*args, **kwargs)
2810
self.app = app
29-
self.page = page
30-
self.page.on_resize = self.page_resize
11+
self.page: ft.Page = page
12+
self.page.on_resized = self.page_resize
3113
self.store: DataStore = store
32-
self.toggle_nav_rail_button = IconButton(
33-
icon=icons.ARROW_CIRCLE_LEFT,
34-
icon_color=colors.BLUE_GREY_400,
14+
self.toggle_nav_rail_button = ft.IconButton(
15+
icon=ft.Icons.ARROW_CIRCLE_LEFT,
16+
icon_color=ft.Colors.BLUE_GREY_400,
3517
selected=False,
36-
selected_icon=icons.ARROW_CIRCLE_RIGHT,
18+
selected_icon=ft.Icons.ARROW_CIRCLE_RIGHT,
3719
on_click=self.toggle_nav_rail,
3820
)
39-
self.sidebar = Sidebar(self, self.store, page)
40-
self.members_view = Text("members view")
41-
self.all_boards_view = Column(
21+
self.sidebar = Sidebar(self, self.store)
22+
self.members_view = ft.Text("members view")
23+
self.all_boards_view = ft.Column(
4224
[
43-
Row(
25+
ft.Row(
4426
[
45-
Container(
46-
Text(value="Your Boards", style="headlineMedium"),
27+
ft.Container(
28+
ft.Text(
29+
value="Your Boards",
30+
theme_style=ft.TextThemeStyle.HEADLINE_MEDIUM,
31+
),
4732
expand=True,
48-
padding=padding.only(top=15),
33+
padding=ft.padding.only(top=15),
4934
),
50-
Container(
51-
TextButton(
35+
ft.Container(
36+
ft.TextButton(
5237
"Add new board",
53-
icon=icons.ADD,
38+
icon=ft.Icons.ADD,
5439
on_click=self.app.add_board,
55-
style=ButtonStyle(
40+
style=ft.ButtonStyle(
5641
bgcolor={
57-
"": colors.BLUE_200,
58-
"hovered": colors.BLUE_400,
42+
ft.ControlState.DEFAULT: ft.Colors.BLUE_200,
43+
ft.ControlState.HOVERED: ft.Colors.BLUE_400,
44+
},
45+
shape={
46+
ft.ControlState.DEFAULT: ft.RoundedRectangleBorder(
47+
radius=3
48+
)
5949
},
60-
shape={"": RoundedRectangleBorder(radius=3)},
6150
),
6251
),
63-
padding=padding.only(right=50, top=15),
52+
padding=ft.padding.only(right=50, top=15),
6453
),
6554
]
6655
),
67-
Row(
56+
ft.Row(
6857
[
69-
TextField(
58+
ft.TextField(
7059
hint_text="Search all boards",
7160
autofocus=False,
72-
content_padding=padding.only(left=10),
61+
content_padding=ft.padding.only(left=10),
7362
width=200,
7463
height=40,
7564
text_size=12,
76-
border_color=colors.BLACK26,
77-
focused_border_color=colors.BLUE_ACCENT,
78-
suffix_icon=icons.SEARCH,
65+
border_color=ft.Colors.BLACK26,
66+
focused_border_color=ft.Colors.BLUE_ACCENT,
67+
suffix_icon=ft.Icons.SEARCH,
7968
)
8069
]
8170
),
82-
Row([Text("No Boards to Display")]),
71+
ft.Row([ft.Text("No Boards to Display")]),
8372
],
8473
expand=True,
8574
)
86-
self._active_view: Control = self.all_boards_view
75+
self._active_view: ft.Control = self.all_boards_view
8776

8877
self.controls = [self.sidebar, self.toggle_nav_rail_button, self.active_view]
8978

@@ -96,29 +85,26 @@ def active_view(self, view):
9685
self._active_view = view
9786
self.controls[-1] = self._active_view
9887
self.sidebar.sync_board_destinations()
99-
self.update()
88+
self.page.update()
10089

10190
def set_board_view(self, i):
10291
self.active_view = self.store.get_boards()[i]
10392
self.sidebar.bottom_nav_rail.selected_index = i
10493
self.sidebar.top_nav_rail.selected_index = None
105-
self.sidebar.update()
106-
self.page.update()
10794
self.page_resize()
95+
self.page.update()
10896

10997
def set_all_boards_view(self):
11098
self.active_view = self.all_boards_view
11199
self.hydrate_all_boards_view()
112100
self.sidebar.top_nav_rail.selected_index = 0
113101
self.sidebar.bottom_nav_rail.selected_index = None
114-
self.sidebar.update()
115102
self.page.update()
116103

117104
def set_members_view(self):
118105
self.active_view = self.members_view
119106
self.sidebar.top_nav_rail.selected_index = 1
120107
self.sidebar.bottom_nav_rail.selected_index = None
121-
self.sidebar.update()
122108
self.page.update()
123109

124110
def page_resize(self, e=None):
@@ -129,49 +115,49 @@ def page_resize(self, e=None):
129115
self.page.update()
130116

131117
def hydrate_all_boards_view(self):
132-
self.all_boards_view.controls[-1] = Row(
118+
self.all_boards_view.controls[-1] = ft.Row(
133119
[
134-
Container(
135-
content=Row(
120+
ft.Container(
121+
content=ft.Row(
136122
[
137-
Container(
138-
content=Text(value=b.name),
123+
ft.Container(
124+
content=ft.Text(value=b.name),
139125
data=b,
140126
expand=True,
141127
on_click=self.board_click,
142128
),
143-
Container(
144-
content=PopupMenuButton(
129+
ft.Container(
130+
content=ft.PopupMenuButton(
145131
items=[
146-
PopupMenuItem(
147-
content=Text(
132+
ft.PopupMenuItem(
133+
content=ft.Text(
148134
value="Delete",
149-
style="labelMedium",
150-
text_align="center",
135+
theme_style=ft.TextThemeStyle.LABEL_MEDIUM,
136+
text_align=ft.TextAlign.CENTER,
151137
),
152138
on_click=self.app.delete_board,
153139
data=b,
154140
),
155-
PopupMenuItem(),
156-
PopupMenuItem(
157-
content=Text(
141+
ft.PopupMenuItem(),
142+
ft.PopupMenuItem(
143+
content=ft.Text(
158144
value="Archive",
159-
style="labelMedium",
160-
text_align="center",
145+
theme_style=ft.TextThemeStyle.LABEL_MEDIUM,
146+
text_align=ft.TextAlign.CENTER,
161147
),
162148
),
163149
]
164150
),
165-
padding=padding.only(right=-10),
166-
border_radius=border_radius.all(3),
151+
padding=ft.padding.only(right=-10),
152+
border_radius=ft.border_radius.all(3),
167153
),
168154
],
169-
alignment="spaceBetween",
155+
alignment=ft.MainAxisAlignment.SPACE_BETWEEN,
170156
),
171-
border=border.all(1, colors.BLACK38),
172-
border_radius=border_radius.all(5),
173-
bgcolor=colors.WHITE60,
174-
padding=padding.all(10),
157+
border=ft.border.all(1, ft.Colors.BLACK38),
158+
border_radius=ft.border_radius.all(5),
159+
bgcolor=ft.Colors.WHITE60,
160+
padding=ft.padding.all(10),
175161
width=250,
176162
data=b,
177163
)

0 commit comments

Comments
 (0)