问题标签 [mcclim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
182 浏览

common-lisp - 更新窗口以响应 CLIM 框架命令

在试图弄清楚 CLIM 时,我遇到了这个示例程序。这是一个简单的迷宫游戏。作者声称已在 LispWorks 中对其进行了测试(甚至#+Genera在其中进行了测试,暗示该程序可以在真正的 Lisp 机器上运行),但我正试图让它在带有 McCLIM 的 SBCL 中运行。

在 SBCL/McCLIM 下,窗口绘制,但是当您按下移动键时没有任何可见的反应。非移动键会导致文本与游戏说明一起输入到窗格中。

我发现游戏命令键正在改变游戏的内部状态,所以唯一的问题是屏幕没有更新。

然后我意识到您无法编写代码来从实现命令的代码范围内重新绘制迷宫。所有绘制的方法都接收stream来自 CLIM 的参数,该参数必须传递给图形基元。例如:

但处理击键的代码不接受任何stream参数:

我最终要做的是将stream第一次(也是唯一一次)调用中的参数保存draw-maze-array到全局变量,以便我可以将更新代码添加到define-stone-command宏中,如下所示:

这种轻微的改变在带有 McCLIM 的 SBCL 上提供了所需的行为,但这似乎并不正确。毕竟,作者声称该代码在 LispWorks 上运行良好。我有几个问题:

  1. 有 LispWorks 的人可以确认这个程序在 LispWorks 上按原样工作吗?
  2. 我对代码的更改是否使其在 LispWorks 上失败?
  3. 在 CLIM 应用程序中处理屏幕更新的公认方法是什么?
0 投票
1 回答
108 浏览

lisp - McCLIM, How to catch a keystroke?

I'm currently learning McCLIM. Trying to figure out how to define a command, that will react to keystroke. For a app named superapp I have a function

which show some text on it's screen pane. It works fine for pane-buttons in activate-callback. However, this

doesn't work. I know that I defined it right, since it works well with (frame-exit *application-frame*). So I just don't understand something else.

EDIT: SO, this is the working variant

0 投票
0 回答
93 浏览

lisp - McCLIM 文本标签访问

有没有办法更改简单标签中的文本(screen :label :text "input")?尝试了不同的东西,但没有一个奏效。设置小工具值,访问文本插槽..

同样由于某种原因,在没有创建标签:text并运行该应用程序的情况下会重新启动我的用户会话。

0 投票
1 回答
95 浏览

lisp - 如何获取 McCLIM 的光标位置

我正在尝试向 McCLIM 添加输入法支持,以便它可以使用 fcitx 等输入法客户端在 McCLIM 中输入 CJK。

为了更好地绘制 fcitx,我想获取文本编辑区域更改时的光标位置。

看起来像这样: 在此处输入图像描述

我发现了一个叫做 的东西cursor-position/stream-cursor-position,但我不知道如何获得cursor/stream当前的关注。我试过*standard-output*了,但是失败了。

我怎么能这样做?

0 投票
1 回答
98 浏览

lisp - 是否存在 McCLIM Click Listener?

我一直在尝试学习 McCLIM,鉴于文档的简洁性,这非常困难。阅读手册后,我无法弄清楚如何将单击关联到窗格并运行命令。我知道我可以定义以下命令:

Say在命令框中键入以使其执行某些操作。我想单击一个窗格并让它在单击时输出这个 hello world 字符串。

为了在给定窗格上启用点击侦听器,我需要设置什么?