Skip to content

Commit 525a19a

Browse files
committed
💄 version 0.4.3
edit styles
1 parent 7ca3111 commit 525a19a

9 files changed

Lines changed: 61 additions & 65 deletions

File tree

nonechat/app.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,11 @@ def apply_theme_background(self) -> None:
147147

148148
# 查找需要更新背景色的视图
149149
try:
150-
horizontal_view = self.query_one(HorizontalView)
150+
view = self.query_one(RouterView)
151151
if self.current_theme.dark:
152-
horizontal_view.styles.background = setting.dark_bg_color
152+
view.styles.background = setting.dark_bg_color
153153
else:
154-
horizontal_view.styles.background = setting.bg_color
154+
view.styles.background = setting.bg_color
155155
except Exception:
156156
# 视图可能还没有加载
157157
pass

nonechat/components/channel_selector.py

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from textual.widget import Widget
66
from textual.message import Message
7-
from textual.widgets import Label, Button, ListItem, ListView
7+
from textual.widgets import Label, ListItem, ListView
88

99
from ..model import Channel
1010

@@ -26,32 +26,21 @@ class ChannelSelector(Widget):
2626
DEFAULT_CSS = """
2727
ChannelSelector {
2828
layout: vertical;
29-
height: auto;
29+
height: 100%;
3030
width: 100%;
31-
border: round rgba(170, 170, 170, 0.7);
32-
padding: 1;
33-
margin: 1;
31+
padding: 0 1;
3432
}
3533
3634
ChannelSelector ListView {
37-
height: auto;
35+
height: 1fr;
3836
width: 100%;
39-
max-height: 85%;
4037
}
4138
4239
ChannelSelector ListItem {
4340
width: 100%;
4441
margin: 1;
45-
padding: 1;
4642
text-align: center;
4743
}
48-
49-
ChannelSelector .add-channel-button {
50-
width: 100%;
51-
margin-top: 1;
52-
background: darkgreen;
53-
color: white;
54-
}
5544
"""
5645

5746
def __init__(self):
@@ -64,7 +53,6 @@ def app(self) -> "Frontend":
6453

6554
def compose(self):
6655
yield ListView(id="channel-list")
67-
yield Button("➕ 添加频道", classes="add-channel-button", id="add-channel")
6856

6957
async def on_mount(self):
7058
await self.update_channel_list()
@@ -92,11 +80,6 @@ async def update_channel_list(self):
9280
else:
9381
item.remove_class("current")
9482

95-
async def on_button_pressed(self, event: Button.Pressed):
96-
"""处理按钮点击事件"""
97-
if event.button.id == "add-channel":
98-
await self._add_new_channel()
99-
10083
async def on_list_view_selected(self, event: ListView.Selected):
10184
"""处理列表项选择事件"""
10285
if event.item and event.item.id and event.item.id.startswith("channel-"):
@@ -106,7 +89,7 @@ async def on_list_view_selected(self, event: ListView.Selected):
10689
self.post_message(ChannelSelectorPressed(channel))
10790
break
10891

109-
async def _add_new_channel(self):
92+
async def add_new_channel(self):
11093
"""添加新频道的逻辑"""
11194

11295
# 生成随机频道ID

nonechat/components/log/__init__.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,7 @@ class LogPanel(Widget):
2828

2929
def __init__(self) -> None:
3030
super().__init__()
31-
3231
self.output = RichLog(max_lines=MAX_LINES, min_width=60, wrap=True, markup=True)
33-
# if setting.bg_color:
34-
# self.styles.background = setting.bg_color
35-
# self.output.styles.background = setting.bg_color
3632

3733
@property
3834
def storage(self) -> "Storage":

nonechat/components/sidebar.py

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
from textual.widget import Widget
44
from textual.message import Message
5-
from textual.widgets import TabPane, TabbedContent
5+
from textual.containers import Vertical
6+
from textual.widgets import Button, TabPane, TabbedContent
67

78
from .user_selector import UserSelector, UserSelectorPressed
89
from .channel_selector import ChannelSelector, ChannelSelectorPressed
@@ -36,16 +37,39 @@ class Sidebar(Widget):
3637
width: 25%;
3738
height: 100%;
3839
border-right: solid rgba(170, 170, 170, 0.7);
40+
layout: vertical;
41+
}
42+
43+
TabbedContent {
44+
height: 100%;
3945
}
4046
4147
TabPane {
4248
padding: 0;
49+
layout: vertical;
50+
height: 100%;
51+
}
52+
53+
.selector-container {
54+
height: 1fr;
55+
layout: vertical;
56+
}
57+
58+
.button-container {
59+
height: auto;
60+
layout: vertical;
61+
margin: 1 0;
62+
align-horizontal: center;
4363
}
4464
4565
UserSelector, ChannelSelector {
4666
margin: 1 0 0 0;
47-
border: none;
48-
max-height: 100%;
67+
height: 1fr;
68+
}
69+
70+
.add-button {
71+
background: darkgreen;
72+
color: white;
4973
}
5074
"""
5175

@@ -61,16 +85,29 @@ def app(self) -> "Frontend":
6185
def compose(self):
6286
with TabbedContent():
6387
with TabPane("👥 用户列表", id="users"):
64-
yield self.user_selector
88+
with Vertical(classes="selector-container"):
89+
yield self.user_selector
90+
with Vertical(classes="button-container"):
91+
yield Button("➕ 添加用户", id="add-user", classes="add-button")
6592
with TabPane("📺 频道列表", id="channels"):
66-
yield self.channel_selector
93+
with Vertical(classes="selector-container"):
94+
yield self.channel_selector
95+
with Vertical(classes="button-container"):
96+
yield Button("➕ 添加频道", id="add-channel", classes="add-button")
97+
98+
async def on_button_pressed(self, event: Button.Pressed):
99+
"""处理按钮点击事件"""
100+
if event.button.id == "add-user":
101+
await self.user_selector.add_new_user()
102+
elif event.button.id == "add-channel":
103+
await self.channel_selector.add_new_channel()
67104

68105
def on_user_selector_pressed(self, event: UserSelectorPressed):
69106
"""处理用户选择事件"""
70107
# 更新当前用户
71108
self.app.storage.set_user(event.user)
72109

73-
# 更新用���选择器显示
110+
# 更新用户选择器显示
74111
# self.user_selector.update_user_list()
75112

76113
# 向父组件发送消息

nonechat/components/user_selector.py

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from textual.widget import Widget
66
from textual.message import Message
7-
from textual.widgets import Label, Button, ListItem, ListView
7+
from textual.widgets import Label, ListItem, ListView
88

99
from ..model import User
1010

@@ -26,32 +26,21 @@ class UserSelector(Widget):
2626
DEFAULT_CSS = """
2727
UserSelector {
2828
layout: vertical;
29-
height: auto;
29+
height: 100%;
3030
width: 100%;
31-
border: round rgba(170, 170, 170, 0.7);
32-
padding: 1;
33-
margin: 1;
31+
padding: 0 1;
3432
}
3533
3634
UserSelector ListView {
37-
height: auto;
35+
height: 1fr;
3836
width: 100%;
39-
max-height: 85%;
4037
}
4138
4239
UserSelector ListItem {
4340
width: 100%;
4441
margin: 1;
45-
padding: 1;
4642
text-align: center;
4743
}
48-
49-
UserSelector .add-user-button {
50-
width: 100%;
51-
margin-top: 1;
52-
background: darkblue;
53-
color: white;
54-
}
5544
"""
5645

5746
def __init__(self):
@@ -64,7 +53,6 @@ def app(self) -> "Frontend":
6453

6554
def compose(self):
6655
yield ListView(id="user-list")
67-
yield Button("➕ 添加用户", classes="add-user-button", id="add-user")
6856

6957
async def on_mount(self):
7058
await self.update_user_list()
@@ -87,11 +75,6 @@ async def update_user_list(self):
8775
else:
8876
item.remove_class("current")
8977

90-
async def on_button_pressed(self, event: Button.Pressed):
91-
"""处理按钮点击事件"""
92-
if event.button.id == "add-user":
93-
await self._add_new_user()
94-
9578
async def on_list_view_selected(self, event: ListView.Selected):
9679
"""处理列表项选择事件"""
9780
if event.item and event.item.id and event.item.id.startswith("user-"):
@@ -101,7 +84,7 @@ async def on_list_view_selected(self, event: ListView.Selected):
10184
self.post_message(UserSelectorPressed(user))
10285
break
10386

104-
async def _add_new_user(self):
87+
async def add_new_user(self):
10588
"""添加新用户的逻辑"""
10689

10790
# 生成随机用户ID

nonechat/views/horizontal.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
if TYPE_CHECKING:
1212
from ..app import Frontend
1313

14-
SHOW_LOG_BREAKPOINT = 120
14+
SHOW_LOG_BREAKPOINT = 125
1515

1616

1717
class HorizontalView(Widget):
@@ -73,12 +73,9 @@ class HorizontalView(Widget):
7373

7474
def __init__(self):
7575
super().__init__()
76-
# setting = self.app.setting
7776
self.sidebar = Sidebar()
7877
self.chatroom = ChatRoom()
7978
self.log_panel = LogPanel()
80-
# if setting.bg_color:
81-
# self.styles.background = setting.bg_color
8279

8380
@property
8481
def app(self) -> "Frontend":

nonechat/views/log_view.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ class LogView(Widget):
1616
LogView > Toolbar {
1717
dock: top;
1818
}
19+
LogView > LogPanel {
20+
padding: 0 1;
21+
}
1922
"""
2023

2124
def __init__(self):
2225
super().__init__()
23-
# setting = self.app.setting
24-
# if setting.bg_color:
25-
# self.styles.background = setting.bg_color
2626

2727
def compose(self):
2828
yield Toolbar(self.app.setting)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ authors = [
77
dependencies = [
88
"textual<4.0.0,>=3.7.0",
99
]
10-
version = "0.4.2"
10+
version = "0.4.3"
1111
requires-python = ">=3.9, <4.0"
1212
readme = "README.md"
1313
license = {text = "MIT"}

view.png

19.4 KB
Loading

0 commit comments

Comments
 (0)