无标题无名氏No.50750950 只看PO
2022-07-26(二)22:59:10
ID:bRRnPeX 回应
突发奇想尝试做一个命令行版X岛客户端( ゚∀。)
只是图一乐,所以应该不会加入太多的功能而且随时可能弃坑。目前只做了查看版面的功能,如果最后做完了我就把链接发到这个串下面( ゚∀。)
无标题无名氏No.67332327
2025-10-31(五)14:22:12 ID: 1kibn3l
>>No.64830106 好消息,我试着做了一个滚动功能,实测能用 (=゚ω゚)=
diff --git a/xdnmb/globals.py b/xdnmb/globals.py
index f7abaf1..d91f709 100644
--- a/xdnmb/globals.py
+++ b/xdnmb/globals.py
@@ -626,7 +626,13 @@ def titleControlContainer() -> Container:
titleControl = DynamicContainer(titleControlContainer)
forumGroupControl = ScrollablePane(DynamicContainer(forumGroupControlContainer))
-forumContentControl = ScrollablePane(DynamicContainer(forumContentControlContainer))
+visual_mode = False
+visible_filter = Condition(lambda: not visual_mode)
+forumContentControl = ScrollablePane(
+ DynamicContainer(forumContentControlContainer),
+ keep_cursor_visible=visible_filter,
+ keep_focused_window_visible=visible_filter,
+)
container = FloatContainer(
HSplit((
@@ -680,13 +686,38 @@ condition = Condition(lambda: not (len(container.floats) > 1 or showReplyForm))
@keyBinding.add('up', filter=condition)
@keyBinding.add('k', filter=condition)
def _(e):
+ global visual_mode
+ visual_mode = False
focus_previous(e)
@keyBinding.add('down', filter=condition)
@keyBinding.add('j', filter=condition)
def _(e):
+ global visual_mode
+ visual_mode = False
focus_next(e)
+
+@(keyBinding.add("c-j") if is_mac else keyBinding.add("escape", "j"))
+def _(e: KeyPressEvent):
+ global thread
+ if not thread or len(container.floats) > 1 or showReplyForm:
+ return
+ global visual_mode
+ visual_mode = True
+ forumContentControl.vertical_scroll += 1
+
+
+@(keyBinding.add("c-u") if is_mac else keyBinding.add("escape", "u"))
+def _(e: KeyPressEvent):
+ global thread
+ if not thread or len(container.floats) > 1 or showReplyForm:
+ return
+ global visual_mode
+ visual_mode = True
+ forumContentControl.vertical_scroll -= 1
+
+
@ (keyBinding.add('c-e') if is_mac else keyBinding.add('escape', 'e'))
def _(e):
LRU_CACHE_DB.close(),
无标题无名氏No.67332356
2025-10-31(五)14:31:19 ID: 1kibn3l
>>No.67332327 说一下思路:新增两个key binding,因为alt+k被占用了所以往上翻是alt+u,alt+j是往下翻1行,然后重点是global增加一个visual_mode,可以控制forumContentControl这个ScrollablePane的两个visable属性,翻行的时候进入visual_mode,按j/k都可以退出这个visual_mode,无缝衔接