Commit Graph
55 Commits
Author SHA1 Message Date
tianmo b737cc2b87 修 spine-lab/启动实验室Spine.command:它注入的 native-hook/hook.dylib 早已不存在(那套方案已废弃),改为调用 viewpanel/run.sh 2026-10-16 17:31:33 +08:00
tianmo 104eaba8c0 中段直接放列表表格(去掉 ScrollPane):expand/fill 撑满红框(代价:失去滚动) 2026-10-16 17:25:08 +08:00
tianmo d6a766d5b4 列表表格垫空白(80行)让 pref ≥ ScrollPane 视口:列表区域铺满红框,内容多时照常滚动 2026-10-16 17:24:23 +08:00
tianmo 949d741cde 列表表格 setFillParent(true):撑满 ScrollPane 视口(原来按内容固定高度只画一小块) 2026-10-16 17:23:38 +08:00
tianmo 9b85090e93 拉伸后保持内容靠左上:按钮块 top()+left(),日志格加 top() 2026-10-16 17:22:11 +08:00
tianmo 22c483738c 三段控件纵向拉伸填满各自单元格:按钮块与日志块加 fillY(Cell.L),中段原本已有 fillY 2026-10-16 17:21:28 +08:00
tianmo ee82bedabe 三段都加 expand(用户点名):吃掉停靠框剩余空间,消掉底部空带;600:1400:400 的比例仍作为各段 pref 2026-10-16 17:19:31 +08:00
tianmo dc4db3e8fa 三段按 600:1400:400 等比缩放到 Stage 高度(略大于停靠框):内容盖过底部,消掉底部空带 2026-10-16 17:17:37 +08:00
tianmo efeee1fe5a 加一行布局实测日志(root/按钮表/日志Label 高度),用于定位'底部空一条'的原因 2026-10-16 17:15:01 +08:00
tianmo 120d88bf0b 改回固定高度:上 600 / 中 1400 / 日志 400(不做等比缩放) 2026-10-16 17:13:32 +08:00
tianmo 4505c50af1 三段按 600:1400:400 的比例缩放到面板高度(原来三个数合计 2400 超过面板,被 libGDX 压扁导致比例看着不对) 2026-10-16 17:12:36 +08:00
tianmo 2a02984b79 三段固定高度按用户指定:上 600 / 中 1400 / 日志 400 2026-10-16 17:11:46 +08:00
tianmo 6744f122b4 三段高度按用户指定:中段 1400、日志段 400、上段取剩余;三段单元格都用 fillX 占满面板宽度 2026-10-16 17:10:22 +08:00
tianmo 8e9f70fdbd 下段(日志)固定 800 高;中段 = 面板高 − 上段20% − 800(仍铺满,不出空带) 2026-10-16 17:08:51 +08:00
tianmo 05c5d45cca 修 run.sh(漏 import os,导致编辑器根本起不来)+ 三段高度 20/60/20 自动按 Stage 高度算(实测 Stage.B()F=getHeight:4K 窗口 2044) 2026-10-16 17:07:41 +08:00
tianmo 84a8f30811 三段高度按 20/60/20 计算,面板高度可配置:-Dpanel.h=<像素>(默认 984,run.sh 支持 PANEL_H 环境变量)——4K 屏窗口更大时用得上 2026-10-16 17:01:37 +08:00
tianmo 77d6a91422 中段高度自适应父容器:middle = 父容器高(fillParent 前读到的 dock) − 按钮段 − 日志段(不用 expand);3 次迭代收敛 2026-10-16 16:59:27 +08:00
tianmo 8a1279bf5c 按用户要求去掉 expand:中段(列表)只用固定高度 700 做成最长的一段(fillY=L 拉伸),日志段自然高度贴底 2026-10-16 16:57:10 +08:00
tianmo 5c5ae8e7aa 中段(列表)改回最长的一段:expand+fill 吃掉剩余空间、保留高度下限;日志段只占自然高度贴底 2026-10-16 16:56:10 +08:00
tianmo 42def5b395 消除第 4 条空带:中段固定 450 且不再 expand,剩余高度全部给日志段(文字贴段顶)——此时面板就是干净的 上/中/下 三段 2026-10-16 16:55:14 +08:00
tianmo 1f402ea8e4 日志段固定高度 200(Cell.I=height 实测确认),中段 450:根表格三段都能看出来(上按钮/中列表/下日志) 2026-10-16 16:54:34 +08:00
tianmo 5a59b0f739 按用户要求画出上/中/下三段边界:根表格 setDebug(true)(载荷名 et.B(Z)V,对照表已确认)—— 红线=根表格三个单元格(按钮/中段/日志)的边界,绿线=按钮块内部单元格 2026-10-16 16:51:13 +08:00
tianmo 05e2d1b074 中段固定高度:Cell.I(float)=height(实测确认:设 900 → 根表格 580->1080;设后列表区出现滚动条可滚)。值先取 700,并把该映射写进 anchors.tsv/names.tsv 2026-10-16 16:50:16 +08:00
tianmo a5307021f3 回滚到可编译版本并修映射表路径:从 classes 往上找含 tools/deobf/names.tsv 的仓库根(Inspector 显示真名) 2026-10-16 16:46:14 +08:00
tianmo 84eb409b76 修映射表路径:classes 上跳三级才是仓库根(<root>/viewpanel/build/classes) 2026-10-16 16:44:46 +08:00
tianmo f0b78dbfd6 Inspector 显示用映射表翻译真名:字段/方法显示为 realName(混淆名),表来自 tools/deobf/names.tsv(运行时载荷不能改名,indy 靠加密串里的原名反射查找) 2026-10-16 16:44:12 +08:00
tianmo 0cdc0894a4 Revert "面板支持热更:视图里挂稳定容器(编辑器类加载器建的 Table),面板内容放在容器里;后台线程轮询 build/classes/com/spineview/ObjectPanel.class 的 mtime,一变就用新的子类加载器重建内容换进容器 —— 改完代码只需 build.sh,编辑器不用重启、场景与选择状态保留"
This reverts commit be0ed2352b.
2026-10-16 16:37:58 +08:00
tianmo be0ed2352b 面板支持热更:视图里挂稳定容器(编辑器类加载器建的 Table),面板内容放在容器里;后台线程轮询 build/classes/com/spineview/ObjectPanel.class 的 mtime,一变就用新的子类加载器重建内容换进容器 —— 改完代码只需 build.sh,编辑器不用重启、场景与选择状态保留 2026-10-16 16:35:23 +08:00
tianmo f8d2cda17c grabScrollFocus 改用 getMethods():Stage 的焦点 API 声明在接口里(lpt6 implements LPt9),getDeclaredMethods 扫不到(实测 setter1/getter0);排除 Actor/Group/WidgetGroup 上声明的同名形状方法以免误调 addActor 2026-10-16 16:31:48 +08:00
tianmo 55c0794ed4 面板恢复成上/中/下三段:上=按钮块(两列紧邻+名字输入框)、中=列表(expand+fill)、下=日志(独立 Label,自然高度贴底);去掉列表里内嵌的日志行与之前未验证的尺寸调用 2026-10-16 16:26:15 +08:00
tianmo 4b05804479 修鼠标滚轮(第3版):面板按钮动作后把编辑器的滚动焦点抢到列表上
- 诊断证据:给列表 ScrollPane 挂 EventListener 代理后,滚轮事件收到 0 条 → 滚轮被视口的 scroll focus 拿走;
- grabScrollFocus():只在 **Stage 自己声明**的方法里找(addActor 声明在 Group,不会误调);
  setter=『1 个参数是 Actor、返回 void』,getter=『无参返回 Actor』;调 setter 后看哪个 getter 变成面板,
  找到就写日志『滚动焦点已抢到面板:setter=.. getter=..』,找不到写『没找到 setScrollFocus』。
- 触发时机:每次点击面板按钮/字段行之后(路由器里统一调用)。
2026-10-16 16:22:19 +08:00
tianmo 13bce4509d 让鼠标滚轮能滚列表:把列表 ScrollPane 的 touchable 从默认 childrenOnly 改成 enabled(无参返回枚举的方法=getTouchable,枚举 dv 第0常量=enabled)
- 诊断证据:程序化 scrollY(200) 生效(before=0 after=200),说明可滚范围没问题,
  是滚轮事件没送到面板 —— 因为 childrenOnly 时 ScrollPane 自己不是命中目标,收不到 enter、
  也就不会 setScrollFocus。
- 顺带把这条 Actor/Touchable 映射写进 anchors.tsv + names.tsv。
2026-10-16 16:18:28 +08:00
tianmo d59287937d 列表滚动(第二版):给列表单元格固定高度 360(Cell.height 载荷名 I,(F)LdR; 指纹确认)+ setForceScroll(false,true)(ScrollPane.I(ZZ)V 指纹确认);并把 setForceScroll/setOverscroll/Cell 尺寸方法写进 anchors.tsv+names.tsv 2026-10-16 16:15:35 +08:00
tianmo 8d396ecb5b 修列表滚动:ScrollPane 的 (boolean,boolean) 方法是 setScrollingDisabled 不是 setForceScroll;上一版传 (false,true) 把纵向滚动关掉了,现改为 (false,false) 恢复双向滚动 2026-10-16 16:13:09 +08:00
tianmo 320f537a60 只修列表:beginRender 改回复用同一个 Table(换新 ScrollPane 会抛 InvocationTargetException 导致列表渲染失败);invalidate 后再调 ScrollPane(boolean,boolean)=setForceScroll 让它按新内容高度重算可滚动范围 2026-10-16 16:11:54 +08:00
tianmo ee1f2a2ced 只修列表滚动:每次渲染换一套新的 Table+ScrollPane 塞回同一单元格(复用时 ScrollPane 不重新测量 widget 高度,maxY=0 导致滚轮失效) 2026-10-16 16:10:20 +08:00
tianmo 94c467a40d Revert "列表区改分页:每页 12 行 + Prev/Next(复用同一个 ScrollPane 时高度不重算,滚轮失效;分页绕开滚动)"
This reverts commit 32e707d23a.
2026-10-16 16:09:11 +08:00
tianmo 32e707d23a 列表区改分页:每页 12 行 + Prev/Next(复用同一个 ScrollPane 时高度不重算,滚轮失效;分页绕开滚动) 2026-10-16 16:09:08 +08:00
tianmo 5e7aed4a51 Inspector 变成可测数据的入口:字段行可点(读出当前值到输入框) + Set Value 按钮直接改模型字段(带撤销+重建树节点) + 跟随编辑器选择自动重新 Inspect 2026-10-16 16:08:05 +08:00
tianmo 0ec33d90ae 修 Inspect 被日志覆盖:setStatus 改为只追加一行日志(不再触发整表重排),日志块用 logBlockStarted 标记 2026-10-16 16:06:48 +08:00
tianmo 8fefcb76c4 run.sh 改用 python subprocess.Popen(start_new_session=True) 启动:nohup 方式会让编辑器挂在启动它的会话下,会话结束就被收掉 2026-10-16 16:04:26 +08:00
tianmo 1333e3d89c 面板内容区合并为一个滚动区:列表/Inspector 在上、日志块在下(不再用两个单元格,顺序不会再反) 2026-10-16 16:00:46 +08:00
tianmo 9e318f3361 下段提示区:包进 ScrollPane + 固定 90px 高度,保证任意停靠高度下三段都各占一块 2026-10-16 15:58:32 +08:00
tianmo 1cfd5e13cd 面板改为上/中/下三段:上=按钮(自适应)、中=列表(expand+fill 吃掉剩余)、下=实时提示(保留最近6条,多行) 2026-10-16 15:57:36 +08:00
tianmo 7f5ee1f00e 面板布局再修:按钮直接进根表格(两列多行),列表区是唯一 expand+fill 的行;列表内容 Table 设 top()+left(),否则 ScrollPane 里控件比视口小时会居中显示,看着像'列表跑到下面' 2026-10-16 15:51:46 +08:00
tianmo f4cf713ded 修面板布局:根表格与按钮子表 top(),按钮行/状态行不再 fill(否则控件被拉伸挤到停靠框下方) 2026-10-16 15:49:29 +08:00
tianmo 1f8a3b4dae 加可双击的 viewpanel/重启编辑器.command(Finder 双击即重启编辑器) 2026-10-16 15:47:58 +08:00
tianmo e5461cbf12 加 viewpanel/run.sh:一条命令手动重启编辑器(先杀旧实例、按需 rebuild、日志写 /tmp/spineview.log) 2026-10-16 15:46:40 +08:00
tianmo e197a6883a Spine View 启动自动打开(等价 Views 菜单勾选),不用每次手点
- ViewInstaller.showView():面板 Actor 填好后调 Fx.D(us.spineView) —— 菜单 'Tree View' 的动作体就是
  Fx.D(us.Tree)(og.java:23),是编辑器自己的'显示/停靠视图'入口。
- 为什么之前每次都要手点:视图可见状态写在 views.json,只有正常退出才落盘;而我们一直用 SIGTERM
  杀编辑器进程,状态没写回去。启动时主动开一次就绕过了这个。
- 列表区仍按设计需要点一次 Refresh(面板是编辑器 UI 搭好之前就建的,那时场景树还是空的)。
2026-10-16 15:36:42 +08:00
tianmo 9a6913e610 骨骼字段语义命名(实测证据)+ 逐类反编译避免大小写撞名
- anchors.tsv:按用户实测把这批字段钉死 ——
  Z/V=x/y、F=rotation、Code/SourceFile=scaleX/scaleY、StackMapTable/LineNumberTable=shearX/shearY
  (证据:编辑器里 Rotate=341.456 / Translate(-168,-116) / Scale(0.8799,0.572) / Shear(-52.221,-28.63)
   与 Inspector 显示值一一对应);D/B/L/I/S/C = 静止姿态组(推断);D:LGP;=skeleton、D:LGp;=parent、B:Color=color。
- names.tsv 合并后 208 条,Renamer 改名 2867 处成员引用。
- src-named 改为**每个类单独反编译、用载荷类名当文件名**:CFR 直接输出会把 GP.java/Gp.java
  这类只差大小写的类写到同一个文件(macOS 文件系统不区分大小写),必须逐类产出。
- 注:CFR 对同名成员的自动改名(var_xxx 风格)不要开(--renamedupmembers),否则会盖掉我们的语义名。
2026-10-16 15:35:33 +08:00