概要
这个文档是关于 Ruby/GTK2 这个库,它可以让你更方便地创建图形界面。GTK+ 可以在 GNOME 桌面系统上创建应用程序,并且能够在任何其它桌面环境上运行:Linux, OSX, FreeBSD 等等;而且全程使用 Ruby,不需要额外的修改和重新编译!这个教程最早是日语版本,现在是从英文版本翻译过来的。
截至2009年1月,所有的材料都来自 Andrew Krause 的书 《Foundations of GTK+ Development》,并由 Igor Pirnovar 添加进来的。注意:顶级目录前面的数字是该内容对应到 Andrew 的书中的章节,含有感叹号的警告标志⚠️的地方表示该实例在当前 Ruby 1.8/GNOME2 2-0.17.0-rc1 发布的版本上可能有问题。
目录
- 介绍
开始
- Hello World
- 理解信号和回调机制
- 事件
- 深入理解 Hello World
继续
- 更多关于信号的处理
- 升级版的 Hello World
包装控件
- 理解包装的盒子
- 关于这个盒子
- 一个包装的实例
- 使用表格包装
- 表格式包装实例
(3) 容器控件
- (基于 Andrew Krause 的书《Foundations of GTK+ Development》)
- 装饰容器
- 布局容器
- 垂直和水平的盒子
- 垂直和水平的面板
- 表格
- 固定的容器
- 扩展器
- 处理式盒子(Handle Boxes)
- 记事本
- 事件盒子
- (基于 Andrew Krause 的书《Foundations of GTK+ Development》)
(4) 基本控件
- 4.1 开关按钮
- 4.1.1 助记符
- 4.2 多选按钮
- 4.3 使用 Stock Items
- 4.5 回调盒事件处理
- 4.6 单选按钮
- 4.7 ** 不是按钮但是和按钮隐性相关的
- 4.8 ** Font 按钮(在选择器下面...)(!) ⚠️
- 4.9 数字--文本数据输入框
- 4.10 单行输入框
- 4.11 旋转按钮
- 4.11.1 调整器
- 4.12 垂直和水平方向放大
- 4.13 选择接口和控件
- 4.15 文件选择按钮
- 4.16 颜色按钮
- 4.16.1 修改一个控件的前景色
- 4.17 Font 按钮(!) ⚠️
- 4.18 测试一下你看懂了没有
- 4.1 开关按钮
(5) 对话框
- 创建你的对话框
- 模态框和非模态框
- ** GTK::Image 控件
- 消息对话框
- 关于你的应用程序
- ** Pixbuf
- 帮助菜单选项
- 文件选择对话框的类型
- 保存文件
- 创建目录(!) ⚠️
- 选择多个文件
- 用字体和颜色选择对话框收集信息
- 颜色选择对话框
- 字体选择对话框
- 编程方式修改字体
- 使用 Gtk::Assistant 实现多页对话框
- 进度条
- 测试一下你看懂了没有
- 创建你的对话框
(6) GLib 简短介绍
- 环境变量
- 定时器
- 文件操作
- 错误处理
- 主循环
- 输入输出通道
(7) 文本视图控件
- 7.1 滚动窗口
- 7.2 文本视图
- 7.2.1 文本缓冲区
- 7.2.2 文本视图属性
- 7.2.3 Pango 标签阵列
- 7.3 文本迭代器和标记
- 7.3.1 编辑文本缓冲区(!,f)
- 7.3.2 检索文本迭代器和标记
- 7.3.3 修改文本缓冲区内容
- 7.3.4 剪切,复制和粘贴
- 7.3.5 在文本缓冲区搜索
- 7.3.6 文本缓冲区的滚动
- 7.4 文本标签
- 7.5 插入图片
- 7.6 插入子控件
- 7.7 GtkSourceView
- 7.8 测试一下你看懂了没有
(8) 树形视图控件
- 8.1 树形视图部分
- 8.1.1 Gtk::TreeModel
- 8.1.2 Gtk::TreeViewColumn 和 Gtk::CellRenderer
- 8.1.3 Gtk::ListStore 的使用
- 8.1.4 渲染和列
- 8.1.4.1 不要混淆模型的列和视图的列
- 8.1.4.2 TreeViewColumn 和 CellRenderer
- 8.1.5 创建 Gtk::ListStore
- 8.1.6 树形视图的排列
- 8.2 使用 Gtk::TreeStore
- 8.2.1 用树形存储组织内容
- 8.2.1.1 构建一个多层树形存储
- 8.2.2 单元格数据函数
- 8.2.3 多层树形存储
- 8.2.3.1 加载多层树形存储
- 8.2.4 Multi-item Super Columns
- 8.2.1 用树形存储组织内容
- 8.3 行的引用
- 8.3.1 树形路径
- 8.3.2 树形迭代器
- 8.3.3 树形行引用
- 8.4 添加行和选择处理
- 8.4.1 单项选择
- 8.4.2 多项选择
- 8.4.3 添加新行
- 8.4.4 组合框
- 8.4.5 移除多行
- 8.5 可编辑文本渲染器
- 8.6 单元格数据函数
- 8.7 单元格渲染
- 8.7.1 开关按钮渲染
- 8.7.1.1 渲染开关按钮可能影响树形视图里面其它值
- 8.7.1.2 树形视图中行列之间的数据依赖
- 8.7.2 Pixbuf 渲染
- 8.7.3 旋转按钮渲染
- 8.7.4 组合框渲染
- 8.7.4.1 进度条渲染
- 8.7.5 键盘加速渲染 ⚠️
- 8.7.1 开关按钮渲染
- 8.1 树形视图部分
(9) 菜单和工具栏
- 9.1 弹出菜单
- 9.1.1 创建弹出菜单(!) ⚠️
- 9.1.1.1 菜单项分割
- 9.1.1.2 弹出菜单回调
- 9.1.1 创建弹出菜单(!) ⚠️
- 9.2 键盘快捷键
- 9.2.1 快捷键路径
- 9.3 状态栏
- 9.3.1 状态栏提示
- 9.3.2 状态栏控件
- 9.3.2.1 状态栏内容和消息
- 9.3.3 菜单项信息
- 9.4 菜单项
- 9.4.1 子菜单
- 9.4.1.1 构建菜单树机制
- 9.4.1.1.1 撤销菜单项(!) ⚠️
- 9.4.1.2 子菜单的信号处理和回调
- 9.4.1.2.1 基于菜单项的哈希表的菜单程序设计及回调
- 9.4.1.1 构建菜单树机制
- 9.4.2 不同类型菜单项的区别
- 9.4.2.1 图片菜单项
- 9.4.2.2 多选菜单项
- 9.4.2.3 单选菜单项
- 9.4.1 子菜单
- 9.5 菜单栏
- 9.5.1 给菜单项添加键盘快捷键
- 9.5.2 键盘快捷键和它们关联菜单和其它控件
- 9.5.2.1 使用菜单中的快捷键路径
- 9.6 工具栏
- 9.6.1 一些 'toolbar-item-menu.rb' 范例须知
- 9.6.1.1 工具栏样式
- 9.6.1.2 你工具栏上的图标大小
- 9.6.2 拖放工具栏
- 9.6.2.1 独立式工具栏实例
- 9.6.2.1.1 独立是工具栏的方向
- 9.6.2.2 在一个窗口里拖放工具栏
- 9.6.2.1 独立式工具栏实例
- 9.6.1 一些 'toolbar-item-menu.rb' 范例须知
- 9.7 工具栏项
- 9.8 动态创建菜单
- 9.8.1 创建用户界面文件
- 9.8.2 加载用户界面文件
- 9.8.2.1 附件操作类型
- 9.8.2.2 占位
- 9.9 自定义 Stock Item(!) ⚠️
- 9.10 测试一下你的看懂了没有
- 9.1 弹出菜单
(10) 拖放
- 10.1 拖放介绍
- 10.1.1 识别拖放对象
- 10.1.2 拖放的原对象和目标对象
- 10.1.2.1 为什么拖放控件需要一个它们自己的 Gdk::Window
- 10.1.2.2 有三种不同的拖放源和目标构建场景
- 10.2 没有自己的 Gdk::Window 情况下设置拖放控件
- 10.2.1 把一个按钮拖到一个 Label 上
- 10.2.1.1 是时候使用面向对象范式了
- 10.2.1.1.1 拖放调试模块须知
- 10.2.1.1 是时候使用面向对象范式了
- [(10.2.2) 9.6.2.2 在一个窗口内拖放工具栏]
- 10.2.2 在一个窗口内拖放工具栏(面向对象版本)
- 10.2.2.1 'dnd-toolbar-oo.rb' 编程实例须知
- 10.2.1 把一个按钮拖到一个 Label 上
- 10.3 自带 Gdk::Window 的拖放控件
- 10.3.1 文本视图控件中的拖放
- 10.3.2 树形视图项的拖放
- 10.3.2.1 树形视图内建拖放机制
- 10.3.2.2 树形视图中自定义拖放
- 10.3.3 图标视图项的拖放
- 10.3.3.1 文本视图中自定义拖放
- 10.3.4 拖放到可绘画控件
- 10.3.4.1 Gtk::DrawingArea 上拖放
- 10.3.4.2 拖放和 Cairo
- 10.1 拖放介绍
(11) 其它 GTK+ 控件
- 绘画控件
- 日历
- 状态图标
(12) 绘画区域和 Cairo
- 介绍
- 把绘画图写入到 Pixbuf 文件中
(12.3) Ruby Cairo 教程(top page)
- 12.3.0 介绍 Ruby Cairo 教程
- 12.3.0.1 用 Gtk-Cairo 框架运行这个教程中的实例代码
- 12.3.0.1.1 Cairo 后端
- 12.3.0.1.1.1 编程须知
- 12.3.0.1.1.1.1 学生须知
- 12.3.0.1.1.1 编程须知
- 12.3.0.1.2 运行任意 Cairo 代码的模版文件
- 12.3.0.1.2.1 一个运行 Cairo 代码的真实例子
- 12.3.0.2 在非 Gtk Ruby 环境运行 Cairo 代码
- 12.3.0.3 Hiki Gtk With Cairo Module Download File
- 12.3.0.1.1 Cairo 后端
- 12.3.1 Cairo 的绘画模型
- 12.3.1.1 名词
- 12.3.1.1.1 Destination
- 12.3.1.1.2 Source
- 12.3.1.1.3 Mask
- 12.3.1.1.4 Path
- 12.3.1.1.5 Context
- 12.3.1.2 动词
- 12.3.1.2.1 Stroke
- 12.3.1.2.1.A1 Scale
- 12.3.1.2.1.A2 默认放大的实例
- 12.3.1.2.1.A3 经验法则
- 12.3.1.2.2 Fill
- 12.3.1.2.3 显示文本 - Glyphs
- 12.3.1.2.4 Paint
- 12.3.1.2.4.A1 Ruby Cairo 库里涂料以及颜色透明度
- 12.3.1.2.5 Mask
- 12.3.1.2.5.A1 Ruby Cairo 库不支持渐变模式
- 12.3.1.2.1 Stroke
- 12.3.1.1 名词
- 12.3.2 用 Cairo 绘画
- 12.3.2.1 准备或者选择一个源
- 12.3.2.2 创建一个路径
- 12.3.3 理解文本
- 12.3.4 理解变换
- 12.3.5 下一步做什么?
- 12.3.6 技巧和窍门
- 12.3.6.1 行宽
- 12.3.6.2 文本对其
- 12.3.0.1 用 Gtk-Cairo 框架运行这个教程中的实例代码
- 12.3.0 介绍 Ruby Cairo 教程
(13) 动态的用户界面
- 创建用户界面的 Glade
- Glade 的窗口以及菜单
- 用 Glade 创建用户界面的实例
- 创建窗体
- 添加工具栏
- 添加文件查看器
- 做出一些改变
- 控件信号
- 创建菜单
- 使用 Libglade
- 测试一下你看懂了没有
- 动态菜单设计的问题
- 创建用户界面的 Glade
(A) 附录
+ 计算机专业人员的数字颜色理论