McCLIM: 用 Lisp 画出你的用户界面

你是否厌倦了枯燥乏味的 GUI 编程? 想要用一种更优雅、更强大的方式构建你的用户界面?那么,McCLIM 就是你的不二之选!

McCLIM,全称为“Common Lisp Interface Manager CLIM II Specification”,是一个为 Common Lisp 打造的高层次用户界面管理系统工具包。它就像一个魔法师,能将你的 Lisp 代码直接转化为生动形象的界面,让你摆脱繁琐的代码,专注于创造更棒的用户体验。

McCLIM 的魅力:

  • 直观易用: McCLIM 拥有强大的表现模型,它将对象的视觉表现与语义直接关联,让你轻松构建界面,就像用积木搭建城堡一样简单。
  • 功能强大: McCLIM 提供了丰富的高层编程功能,包括格式化输出、图形绘制、窗口管理以及命令输入等。你可以用键盘、鼠标或文本命令来控制界面,就像指挥一支交响乐团一样灵活。
  • 跨平台兼容: McCLIM 支持多种主流的 Common Lisp 实现,包括 Allegro CL、Clozure CL、CLISP、CMUCL、Embeddable CL、Scieneer CL Common-lisp、SBCL 和 LispWorks。它还支持 CLX 后端,这意味着你可以在任何支持 Xserver 的平台上运行 McCLIM 应用。

🚀 快速上手 McCLIM

想要体验 McCLIM 的魅力? 那就快来试试吧!

  1. 安装 McCLIM: McCLIM 在 Quicklisp 上唾手可得。确保你已经安装了支持的 Common Lisp 实现并正确配置了 Quicklisp。然后,在你的 REPL 中输入以下命令:

    (ql:quickload "mcclim")
    
  2. 运行示例: 为了验证 McCLIM 是否正常工作,你可以加载示例系统并运行示例浏览器应用:

    (ql:quickload "clim-examples")   ; 加载示例系统
    (clim-demo:demodemo)             ; 运行示例浏览器应用
    

💡 一个简单的例子

  1. 运行 (ql:quickload "mcclim")​ 加载 McCLIM。

  2. 将以下代码保存到文件 example.lisp​ 中:

    (in-package :common-lisp-user)
    
    (defpackage "APP"
      (:use :clim :clim-lisp)
      (:export "APP-MAIN"))
    
    (in-package :app)
    
    ;;; 定义一个应用框架 (类似于传统 GUI 中的应用窗口)
    
    (define-application-frame superapp ()
      ()
      ;; :panes 部分描述了应用框架的不同部分。这个应用只有一个窗格。
      (:panes
       (int :interactor :height 400 :width 600))
    
      ;; :layouts 部分描述了窗格的布局方式。这个应用有一个名为 "default" 的布局,只有一个窗格。
      (:layouts
       (default int)))
    
    ;;; 以下函数启动 "superapp" 应用框架的实例。
    (defun app-main ()
      (run-frame-top-level (make-application-frame 'superapp)))
    
  3. 加载文件并运行:

    (app:app-main)
    

    ![example.lisp][]

📚 深入学习 McCLIM

想要更深入地了解 McCLIM? 你可以访问 McCLIM 的官方网站,阅读手册和文档,或者加入 McCLIM 的邮件列表和 IRC 频道,与其他开发者交流。

🗃️ McCLIM 的目录结构

  • Apps​ - 示例应用程序。包括:

    • Apps/Clouseau​ - 一个强大的 Lisp 对象检查器。
    • Apps/Listener​ - Andy Hefner 的 Lisp Listener。
    • Apps/Debugger​ - Peter Mechleborg 的调试器(类似于 Slime 的调试器)。
    • Apps/Functional-Geometry​ - Frank Buss 和 Rainer Joswig 的函数几何包,用于绘制“埃舍尔”瓷砖。
    • Apps/Scigraph​ - BBN 的绘图包。
  • Documentation​ - 包含可用的文档,例如 Drei​ 和 ESA​ 库的文档、CLIM 的入门指南、LATEX 源代码规范和 Texinfo 源代码手册。

  • Examples​ - clim-examples​ 中示例的源代码。这些示例的质量和风格各不相同,其中许多示例来自 McCLIM 还处于不完整阶段的时期。

  • Extensions​ - 包含对 CLIM 2 规范的扩展,例如字体、额外布局、图像等。大多数扩展在加载 McCLIM 时会自动加载。

  • Libraries​ - 包含 Drei​ 和 ESA​ 库。有关详细信息,请参阅文档。

🌎 加入 McCLIM 社区

McCLIM 是一个充满活力的社区,我们欢迎来自世界各地的开发者加入。无论你是经验丰富的 Lisp 程序员,还是对 GUI 编程充满兴趣的新手,McCLIM 都能为你提供一个学习、交流和成长的平台。让我们一起用 McCLIM 打造更美好的用户界面,让世界变得更加美好!

  • Lisp
    37 引用 • 13 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...