Compare commits

...

66 Commits

Author SHA1 Message Date
Serendipity 41008e9282 chore: 从仓库移除 CLAUDE.md 和 .claude/ 内部配置文件
这些是 Claude Code 工具的内部配置文件,对开源项目用户无意义。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 08:27:16 +08:00
Serendipity 732b2aabaa docs: 重写 README.md 为开源项目风格
- 添加 badges(版本/Tauri/React/Rust/测试数)
- 按功能模块分组(路径管理/验证/撤销/导入导出/安全/界面)
- 补充安装章节(Releases + 源码构建)
- 补充贡献指南(开发环境、代码规范)
- 完整项目结构和快捷键表

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 08:22:35 +08:00
Serendipity 19bdb3078a docs: 重写 CLAUDE.md 反映最新项目状态
- 更新架构图(移除已删除的 string-list.ts,补充 Modal/buttons/ErrorBoundary)
- 新增数据模型章节(不可变 string[] + snapshot 比较 isModified)
- 新增撤销/重做 API 说明
- 新增错误处理章节(前端 + Rust 完整覆盖表)
- 补充 TypeScript strict 模式、Rust SAFETY 注释等质量约束

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 08:20:15 +08:00
Serendipity bdbb399ddc refactor: 清理 LOW 问题 — 样式去重、死代码删除、命名修正
- 抽取 buttons.ts 共享按钮样式,消除 3 个组件的重复定义
- store 删除未调用的 canUndo/canRedo 方法
- importFromContent 变量 ext→lower 修正确性
- CSV 导出修复 BOM 重复(exportToCsv 自带 BOM)
- Rust error.rs 添加 allow(dead_code) 消除编译警告

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 08:13:17 +08:00
Serendipity d28861ff9c refactor: 抽取 Modal 组件、支持 JSON/CSV 导出、清理冗余代码
- 新增 Modal 组件,消除 3 个 Dialog 中重复的遮罩层/Escape/stopPropagation 代码
- PathEditDialog/HelpDialog/ImportDialog 改用 Modal 包裹
- handleExport 支持 JSON/CSV 两种格式(CSV 导出代码之前存在但从未接线)
- App.tsx 移除冗余的 initDarkMode 后重复设 store 的逻辑
- ErrorBoundary 添加 componentDidCatch 日志和 console.error

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 00:51:32 +08:00
Serendipity b159407773 fix: 最终审查修复 — 数据安全、功能缺失、状态管理
Rust:
- save_paths 添加 Windows PATH 32767 字符上限检查防静默截断
- backup_registry 回退路径统一为 backup_base_dir() 三级链

Store:
- 新增 isSaving 并发守卫防止重复保存
- 保存失败详情通过 Promise.allSettled.reason 展示
- isModified 改为与上次保存快照比较(undo/redo 后准确反映状态)
- 批删除合并为单条撤销记录(N 次删除 → 1 次 Ctrl+Z 恢复)
- 保存失败/备份失败使用 i18n 键(消除硬编码中文)

UI:
- 拖拽添加改用 webkitGetAsEntry().isDirectory 校验文件夹
- Ctrl+F 快捷键聚焦搜索框
- handleClean 使用 is_valid_path_format(替代不完整的 inline 函数)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 00:48:43 +08:00
Serendipity e6a2416271 refactor: AppShell 拆分 + savePaths 并行化
- 抽取 useAppActions hook(~160行),AppShell 从 306 行精简至 105 行
- AppShell 现在只负责布局和渲染,操作逻辑全部可单独测试
- savePaths 改为 Promise.allSettled 并行保存 + 并行备份
- useKeyboard 通过 hook 内部集成,不再暴露给 AppShell

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 00:36:59 +08:00
Serendipity 3a21891f84 feat: 原生对话框、ErrorBoundary、配置生效、交互打磨
- handleBrowse 改用 @tauri-apps/plugin-dialog 原生目录选择
- handleImport 清理临时 DOM 元素(add input.remove())
- config/default.json 实际导入生效(maxHistory、path 长度限制)
- app-store.ts 长度检查改用配置值
- 删除 AppShell 中与 store 重复的长度检查
- 新增 ErrorBoundary 组件避免单异常白屏
- StatusBar 加载失败时显示重试按钮
- 取消按钮检查 isModified 未保存提示
- lib.rs 注册 tauri-plugin-dialog
- tsconfig 添加 resolveJsonModule
- CLAUDE.md 添加 cargo test 运行时说明

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 00:33:57 +08:00
Serendipity bfd114d80f refactor: 全面代码质量提升 — StringList→string[], strict 模式, 死代码清理
架构重构:
- StringList 类替换为不可变 string[](消除 dataVersion hack,Zustand 自然检测变化)
- UndoRedoManager.undo/redo 返回新数组而非原地修改
- 删除 dataVersion 字段和 _bumpVersion()
- 启用 TypeScript strict 模式

死代码清理:
- 删除 string-list.ts, string-list.test.ts, use-path-validation.ts
- Rust AppError 保留供未来使用

功能修复:
- importFromJson 添加 try/catch
- handleClean 使用真实格式验证替代 () => true
- savePaths 保存前调用 backup_registry,处理部分保存失败
- importFromJson 校验非 object 类型输入

i18n 完善:
- MergePreview/StatusBar 硬编码中文 → t() 调用
- 新增 merge.* 和 status.* 翻译键

Rust 改进:
- registry.rs 抽取 load_paths/save_paths 通用函数,消除重复
- registry 新增 6 个单元测试(split/join/roundtrip)
- backup.rs 时间戳加毫秒防覆盖,回退路径改为 home_dir

元数据:
- package.json 名称→patheditor, 版本→4.0.0
- 新增 CHANGELOG.md
- 移除 UndoRedoButtons 废弃注释
- tsconfig 添加 strict:true

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 00:26:27 +08:00
Serendipity 2ceec54790 fix: 全面审查修复 14 个 bug,新增 Rust 单元测试
CRITICAL:
- PathTable/MergePreview 操作后不重新渲染(加 dataVersion 版本号机制)
- moveUp/moveDown 后 selectedIndices 过时(更新到新位置)

HIGH:
- ImportDialog 显示 "true" 而非路径数量(改为 number 类型)
- F1 快捷键无效果(添加 onHelp 回调)
- useKeyboard 每次渲染重复注册事件(改用 ref 模式)
- batch delete 撤销顺序错误(拆分为独立记录)
- importPaths 存储数组引用而非副本
- StringList.all 暴露内部数组(改为返回副本)
- expand_env_vars 静默吞 API 错误(加 log::warn)
- join_path 写入前未修剪路径(加 trim 避免注册表污染)

MEDIUM:
- handleClean 总传 () => true 不验证无效路径
- HelpDialog/ImportDialog 缺 Escape 关闭
- initDarkMode 不同步 Zustand store
- 多处硬编码中文改为 i18n.t()
- Rust unsafe 块补全 SAFETY 注释

新增 Rust 测试: system.rs 4 个单元测试

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 23:14:26 +08:00
Serendipity b1acb3690c feat: 路径验证颜色编码、环境变量 tooltip、长度检查、拖拽添加
- PathTable 异步调用 Rust validate_path 实现红/橙色编码
- 含 %VAR% 的路径悬浮显示展开后的 tooltip
- 保存前检查 PATH 长度(系统2048/用户2048/合并8191),超限弹框确认
- 支持拖放文件夹到列表区域添加路径

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 19:24:13 +08:00
Serendipity 8967fe34e5 fix: 修复编辑对话框空白及双击编辑无效的问题
- PathEditDialog 添加 useEffect 在打开时同步 initialValue
- AppShell 添加 path-dblclick 事件监听,双击路径行打开编辑

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 18:40:53 +08:00
Serendipity 48129a8908 feat: 重写为 Tauri + React + TypeScript (v4.0)
完全移除旧 C+IUP 代码,改用 Tauri 2.x + React 19 + TypeScript + Rust 技术栈重写。
功能与 v3.1 完全等价:

- React 前端:Tailwind CSS 4、Zustand 状态管理、i18next 国际化
- Rust 后端:winreg 注册表读写、Win32 API FFI 调用
- 核心逻辑:StringList、UndoRedoManager、PathManager、Import/Export
- 深色模式、中英文切换、键盘快捷键、合并预览
- 66 个 Vitest 单元测试

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 18:33:04 +08:00
Serendipity cdcfd8e0a7 feat: CSV 导入导出、导入撤销支持及多项 bug 修复
功能:
- 新增 CSV 格式导入导出支持(含 BOM 处理、引号转义、智能标题行检测)
- 导入操作支持撤销/重做
- 保存时 PATH 长度检查与警告
- 深色模式状态持久化(darkmode.txt)
- 提取 get_current_target/push_record 为共享函数,消除控制器层重复代码
- 新增 string_list_insert_at,修复撤销删除时的索引恢复
- 新增 undo_redo、error_code、import_export 单元测试

Bug 修复:
- 修复备份目录对话框和失败原因的硬编码中文字符串
- 提取 get_exe_dir 到 os_env 消除 i18n.c/ui_utils.c 重复定义
- 修复导入撤销 old_sys/old_user 内存管理(push 后置 NULL 防止重复释放)
- 修复 CSV 导出转义与导入解析不一致(移除反斜杠转义,依赖 CSV 引号机制)
- 修正 PATH 长度 8191 限制描述为 "command line safe limit"
2026-05-03 01:52:06 +08:00
Serendipity 720ebb535d feat(ui): 添加深色模式支持
- 新增深色/浅色模式切换按钮,位于主窗口底部
- 在配置文件中定义主题颜色(浅色/深色背景、列表背景、前景色)
- 更新 UI 工具函数以支持动态主题切换,包括列表斑马纹适配
- 添加翻译条目(Dark Mode/Light Mode)并更新编译脚本
- 修改主窗口创建逻辑,集成主题切换回调
- 调整列表背景色属性从 BACKCOLOR 改为 BGCOLOR 以保持一致性
2026-05-02 01:32:56 +08:00
Serendipity 3df2988915 feat(merge): 添加合并预览 Tab 页
- 新增第三个 Tab「合并预览」,只读展示系统+用户 PATH 完整列表
- 选项卡切换时自动刷新合并列表
- 支持无效/重复路径高亮
- 新增中英文翻译

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:54:53 +08:00
Serendipity c5c5517ded feat(multi-select): 支持列表多选及批量删除
- 列表控件启用 MULTIPLE=YES 属性
- btn_del_cb 支持批量删除:解析分号分隔的多选索引,从大到小删除
- 批量删除推送一条合并的 undo record,支持一步撤销

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:49:44 +08:00
Serendipity 485d16a180 feat(tooltip): 添加环境变量展开预览悬停提示
- 新增 expand_env_vars 函数,调用 ExpandEnvironmentStringsA 展开 %VAR%
- sync_string_list_to_ui 中对含 % 的路径设置 ITEMTIP 属性
- 鼠标悬停时显示展开后的完整路径

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:45:58 +08:00
Serendipity e5d24389b4 feat(shortcuts): 添加全局快捷键 Ctrl+N/S/F
- Ctrl+N: 新建路径
- Ctrl+S: 保存(确定)
- Ctrl+F: 聚焦搜索框
- 对话框级 K_ANY 回调,列表级 K_ANY 保持 Ctrl+Z/Y/DEL

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:17:14 +08:00
Serendipity 5bb0ac66cf docs: 添加全局快捷键设计文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:16:05 +08:00
Serendipity ec0ca5a3f6 fix(undo): 修复撤销按钮状态不刷新及空指针防护
- 将 refresh_undo_redo_buttons 提升为公共函数(声明在 callbacks_internal.h,实现在 callbacks.c)
- 在所有 push_record 的操作回调末尾调用 refresh_undo_redo_buttons,确保按钮状态实时更新
- 修复 redo() 中 OP_CLEAN/OP_IMPORT 的 new_paths 空指针风险
- 移除 undo_redo.c 中废弃的 apply_record 函数

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:12:42 +08:00
Serendipity bbcfc25aea feat(undo): 重新编译 .mo 翻译文件以包含撤销/重做文本
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:04:24 +08:00
Serendipity a8002aeba4 feat(undo): 添加撤销/重做的中英文翻译
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 23:00:47 +08:00
Serendipity aac4cc4b54 feat(undo): 在 Lua 配置中添加撤销/重做按钮文本 2026-05-01 22:54:20 +08:00
Serendipity c8d9b32c70 feat(undo): 在 UI 中添加撤销/重做按钮并集成布局
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:53:18 +08:00
Serendipity f9628f6e8c feat(undo): 实现撤销/重做按钮回调及 Ctrl+Z/Y 快捷键
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:50:39 +08:00
Serendipity e0af409ef5 feat(undo): 声明撤销/重做按钮回调函数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:48:14 +08:00
Serendipity 256e793ee4 feat(undo): 添加撤销/重做按钮的 UI 常量
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:47:14 +08:00
Serendipity 8bd8c0a0aa docs: 添加撤销/重做 UI 集成的实现计划
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:45:06 +08:00
Serendipity 1f48551199 feat: 实现撤销/重做功能和CSV导出支持
- 添加撤销/重做管理器,支持添加、删除、编辑、移动等操作的撤销/重做
- 在应用上下文中集成撤销/重做管理器,最大支持50条历史记录
- 为所有基本操作(新建、编辑、删除、上移、下移、清理)添加撤销记录
- 扩展导出功能,支持CSV格式导出(除原有JSON格式外)
- 添加路径格式验证函数,确保导入数据的有效性
- 更新UI文件对话框过滤器以包含CSV格式选项
2026-05-01 22:42:56 +08:00
Serendipity 06e4c15b5c docs: 添加撤销/重做 UI 集成设计文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:39:39 +08:00
Serendipity 32e6bb262b feat(test): 添加单元测试框架并完善国际化支持
- 新增 CMake 测试框架配置,支持 safe_string、string_ext 和 path_manager 模块的单元测试
- 实现 Windows API Mock 机制,便于测试编码转换函数
- 添加 error_code 模块的字符串表示函数,支持英文错误日志
- 在 UI 回调函数中集成国际化翻译,覆盖新建、编辑、导入导出等操作提示
- 扩展 string_list 功能,新增重复路径检查函数
- 更新翻译文件,同步所有用户界面的中英文文本
2026-04-30 11:38:34 +08:00
Serendipity cf19a37a97 feat(test): 添加单元测试框架并完善国际化支持
- 新增 CMake 测试框架配置,支持 safe_string、string_ext 和 path_manager 模块的单元测试
- 实现 Windows API Mock 机制,便于测试编码转换函数
- 添加 error_code 模块的字符串表示函数,支持英文错误日志
- 在 UI 回调函数中集成国际化翻译,覆盖新建、编辑、导入导出等操作提示
- 扩展 string_list 功能,新增重复路径检查函数
- 更新翻译文件,同步所有用户界面的中英文文本
2026-04-30 11:38:05 +08:00
Serendipity ceed90aea8 feat(backup): 支持自定义备份目录和备份跳过选项
- 在 Lua 配置中新增 backup.dir 配置项,允许设置默认备份路径
- 修改 backup_registry() 函数,接受自定义备份路径参数,优先级为:传入参数 > Lua 配置 > 默认 %APPDATA% 路径
- 在保存操作前,通过对话框让用户选择“使用默认路径”、“自定义目录”或“跳过备份”
- 更新 README 文档,说明新的备份功能和多语言支持等架构细节
2026-04-29 16:08:58 +08:00
Serendipity 3bc2f00cb1 feat(backup): 增强备份失败时的用户提示和错误处理
- 在备份失败时显示具体原因(如无法获取AppData路径、创建备份目录失败等)
- 改进备份函数的错误处理,添加详细的日志记录
- 备份失败时允许用户选择是否继续保存操作
- 修复备份目录创建失败时的错误码返回
- 添加备份过程的详细文档说明
2026-04-28 22:40:50 +08:00
Serendipity e777b26879 fix: 修复JSON导入、备份目录创建和内存安全等问题
修复JSON导入时转义字符处理不完整的问题,添加对\b、\f等控制字符的转义
改进备份目录创建逻辑,使用SHCreateDirectoryExW递归创建目录
修复内存分配失败处理,避免空指针解引用
修正选项卡标题设置位置,从Dialog改为Tabs控件
增强导入功能,支持TXT文件导入时选择目标变量类型
优化清理无效路径算法,使用标记数组减少内存移动
修复宽字符环境变量设置,使用_wputenv_s替代putenv
添加导入数据初始化,防止未初始化内存访问
改进文件属性检查,使用宽字符API支持Unicode路径
2026-04-28 22:21:06 +08:00
Serendipity 7908bad1f4 refactor(controller): 拆分回调函数到模块化文件并添加字符串列表访问器
- 将 callbacks.c 拆分为多个按功能分类的文件(callbacks_basic.c、callbacks_nav.c、callbacks_search.c、callbacks_io.c、callbacks_sys.c)
- 新增 callbacks_internal.h 提供内部辅助函数声明,减少代码重复
- 在 string_ext 模块中添加 string_list_get 和 string_list_set 安全访问器函数
- 更新 CMakeLists.txt 和 ui_utils.c 以使用新的模块结构和访问器
- 重构旨在提高代码可维护性和可读性,便于后续功能扩展
2026-04-28 21:54:47 +08:00
Serendipity ea3d678d22 feat(ui): 统一管理IUP控件名称常量,增强可维护性
refactor(core): 移除未使用的get_app_context函数
refactor(os_env): 修改backup_registry函数以返回错误码并备份到指定目录
refactor(path_manager): 增强路径管理函数的错误处理
2026-04-28 21:01:52 +08:00
Serendipity 86792012e2 feat(i18n): 为UI添加gettext国际化支持
- 将配置中的中文文本改为英文原文,作为翻译源字符串
- 在C代码中为所有UI字符串添加_()包装以启用gettext翻译
- 更新对话框、主窗口和配置文件的文本处理方式
2026-03-26 22:06:05 +08:00
Serendipity 4fe7dc47e4 feat(i18n): 添加多语言支持功能
- 新增国际化系统,支持中英文切换
- 添加语言选择对话框和语言切换按钮回调
- 扩展配置系统以支持语言设置存储
- 创建语言文件目录结构和占位文件
- 更新主窗口支持UI文本动态刷新
2026-03-26 20:44:22 +08:00
Serendipity 9a78b88c4a refactor(core): 统一使用ErrorCode并添加错误日志记录
- 将path_manager和import_export模块的返回值从int/void改为ErrorCode
- 在关键操作中添加日志记录,便于调试和错误追踪
- 更新调用代码以检查错误码并记录错误
- 修改运行命令以管理员权限启动程序
2026-03-26 18:27:38 +08:00
Serendipity 3af0e96060 refactor: 移除未使用的布局配置并增强日志与安全字符串
- 删除未使用的 layout_config.h 头文件及其引用
- 在 main.c 和 callbacks.c 中添加日志记录以追踪程序启动、关闭和关键操作
- 将多处 strncpy 调用替换为安全的 safe_strcpy 函数
- 在 dialogs.c 中引入 safe_string.h 以使用安全字符串函数
2026-03-26 13:20:34 +08:00
Serendipity 6ba7e702f2 refactor(registry): 使用ErrorCode类型替换int作为错误返回值
- 将registry_service.h/c中的函数返回值从int改为ErrorCode枚举
- 更新callbacks.c中的错误检查逻辑,使用ERR_OK常量进行比较
- 在内部辅助函数中返回具体的错误码(ERR_REGISTRY_FAILED等)
- 提高代码类型安全性和错误处理可读性
2026-03-26 13:02:14 +08:00
Serendipity 9aa1e208ba docs: 更新 README 中的架构与工具库说明
更新“架构与二次开发”章节的图标,并补充了项目中包含的开发工具库列表,如统一错误码系统、安全字符串函数等,以便开发者更全面地了解项目结构。
2026-03-26 12:50:29 +08:00
Serendipity d934d21323 feat: 新增安全字符串处理和日志系统模块
- 添加 safe_string 模块,提供安全的字符串复制、拼接和复制功能
- 添加 logger 模块,支持多级别日志记录和文件输出
- 添加 error_code 模块,定义统一的错误代码枚举
- 添加 layout_config 模块,定义布局配置结构
- 更新 CMakeLists.txt 包含新增的源文件
2026-03-26 12:47:44 +08:00
Serendipity 8767271e96 feat(导入导出): 支持同时导出和导入系统与用户PATH变量
- 重构导出功能,将系统变量和用户变量合并到单个JSON文件中
- 重构导入功能,支持解析包含系统变量和用户变量的JSON文件
- 在导入时提供选项让用户选择导入目标(系统变量、用户变量或全部)
- 更新UI交互逻辑,适配新的导入导出数据结构
- 改进JSON文件格式,包含版本信息和导出时间戳
2026-03-26 12:16:48 +08:00
Serendipity 55ff64b92d docs: 更新 README 以反映新增的导入导出功能
更新功能列表,新增“导入导出”模块的说明,包括 JSON 备份/恢复和旧版 TXT 格式兼容。
更新架构说明,将“统一配置中心”修改为“热配置系统”,以反映从 C++ 头文件到 Lua 配置文件的变更。
2026-03-25 19:56:10 +08:00
Serendipity 55d0f80743 feat: 新增导入导出功能,支持备份和恢复 PATH 配置
- 添加 import_export 模块,实现 JSON 格式的导入导出
- 在界面中添加导入和导出按钮,并配置回调函数
- 更新配置文件,增加相关文本和状态提示
- 在非管理员权限下禁用导入按钮
2026-03-25 19:49:47 +08:00
Serendipity ce232cb024 feat: 引入 Lua 配置系统实现 UI 参数热更新
- 添加 Lua 5.5 库支持,包含头文件和动态链接库
- 新增 lua_config 模块,提供配置初始化、获取字符串/整型值等功能
- 创建 config.lua 配置文件,集中管理所有 UI 文本、尺寸和布局参数
- 移除原有的硬编码 config.h,将 UI 常量迁移至 Lua 配置
- 修改主窗口、对话框和回调函数,动态读取 Lua 配置值
- 更新 CMakeLists.txt,添加 Lua 库依赖和 DLL 复制步骤
- 删除过时的 Makefile,统一使用 CMake 构建
2026-03-25 19:18:23 +08:00
Serendipity bd1b05be55 chore: 更新运行命令注释以反映最新的可执行文件路径 2026-03-19 22:21:33 +08:00
Serendipity a769a6b9b3 refactor: 重构项目为 MVC 架构并移除全局变量
- 将原有扁平目录结构重构为 MVC 分层架构:
  * src/core/: 核心业务逻辑(Model),完全独立于 UI 框架
  * src/ui/: 界面组件构建(View),负责纯视觉展示
  * src/controller/: 用户交互处理(Controller),连接数据与界面
  * src/utils/: 底层工具函数,专注于系统调用和字符串处理
- 引入 AppContext 结构体统一管理应用状态,替代原有的全局变量模式
- 重命名并重新组织头文件,按功能模块划分到对应子目录
- 更新 CMakeLists.txt 以适配新的目录结构
- 同步更新 README.md 文档,说明新的架构设计
2026-03-19 20:58:41 +08:00
Serendipity 6509ef98e4 chore: 清理旧版IUP库文件并更新头文件路径
删除旧的iup-3.31_Win64_dllw6_lib目录下的所有DLL和静态库文件
将IUP头文件从旧目录迁移到新的libs/IUP/include统一路径
更新CMakeLists.txt中的包含路径和库链接配置
简化DLL复制逻辑,只复制核心iup.dll文件
2026-03-19 20:14:06 +08:00
Serendipity c928c271e8 chore: 移除构建安装程序前的DLL复制步骤
不再需要手动复制IUP DLL文件,因为安装脚本已直接引用库目录。
2026-03-19 13:23:03 +08:00
Serendipity 02e702b285 fix(构建): 修复IUP DLL复制命令的路径变量
将CMAKE_SOURCE_DIR更改为CMAKE_CURRENT_SOURCE_DIR以确保在子目录中也能正确找到DLL文件。
移除不必要的条件判断,使复制命令始终执行。
2026-03-19 12:40:01 +08:00
Serendipity af3138c146 build: 重构 CMakeLists.txt 以使用现代 CMake 最佳实践
- 将项目声明更新为包含版本和语言
- 启用 RC 语言以正确处理资源文件
- 使用 target_* 命令替代全局命令(如 include_directories、link_directories)
- 将资源文件直接加入源文件列表,简化构建定义
- 优化 DLL 复制逻辑,使用 file(GLOB) 和 copy_if_different
- 改进编译器选项的条件设置,增强跨编译器兼容性
2026-03-19 12:37:41 +08:00
Serendipity 6e6adf3b85 chore: 迁移构建系统并清理遗留的二进制文件
- 删除 bin/ 目录下遗留的 DLL 和可执行文件,它们现在由 CMake 构建过程自动复制
- 更新 CMakeLists.txt,明确设置 C17 标准并优化编译选项
- 更新 Inno Setup 安装脚本,使其从 build/ 目录获取构建产物
- 更新 main.c 中的编译说明,反映当前基于 CMake 的构建流程
2026-03-19 12:32:54 +08:00
Serendipity e84b33c5ca build: 迁移项目构建系统至 CMake
- 新增 CMakeLists.txt 文件,定义项目构建规则、依赖和编译选项。
- 更新 README.md 文档,推荐使用 CMake 进行构建,并说明新旧构建方式。
- 保留原有的 Makefile 支持以保持向后兼容。
2026-03-19 12:07:01 +08:00
Serendipity ac6b409f3a feat: 为只读模式添加专用应用程序标题
在非管理员权限下运行时,将对话框标题从硬编码字符串改为使用配置文件中定义的 APP_NAME_READONLY 宏。这提高了代码的可维护性和一致性,使标题文本集中管理,便于未来修改。
2026-03-18 22:37:33 +08:00
Serendipity 1bbe95582a refactor: 将应用程序名称提取为配置常量
- 在 config.h 中定义 APP_NAME 常量,提高可维护性
- 将 main.c 中的对话框标题硬编码替换为使用 APP_NAME
2026-03-18 22:33:25 +08:00
Serendipity 3ecf35963d feat(ui): 增加对话框最小尺寸并调整默认大小
- 将对话框默认大小从500x400调整为800x800
- 添加MINSIZE属性确保对话框不可缩小
- 清理ui.c中的多余空白字符
- 在main.c中添加编译和打包说明注释
2026-03-18 22:03:57 +08:00
Serendipity 276d2c5fe3 docs(config.h): 为UI配置常量添加注释说明 2026-03-18 21:09:13 +08:00
Serendipity a9339f9b9f style(config): 统一宏定义格式并更新文档
调整 config.h 中 UI_DLG_SIZE 宏定义的对齐格式以保持代码风格一致。
在 README.md 中新增“架构与二次开发”章节,说明项目的模块化设计和配置管理方式。
2026-03-18 21:06:55 +08:00
Serendipity 7fac2aab35 refactor: 重构代码以提取配置和全局变量
- 将 Windows 消息常量和 UI 配置常量分别提取到 globals.h 和 config.h 头文件中,提高可维护性
- 将全局变量和控件定义从 main.c 移至独立的 globals.c 源文件,实现关注点分离
- 更新 Makefile 以包含新的源文件 globals.c
- 在 ui.c 和 main.c 中引用 config.h,使用配置常量替代硬编码的 UI 参数
2026-03-18 21:01:50 +08:00
Serendipity 7db190306c docs: 更新 README 项目描述与功能亮点
重写项目概述,使其更具吸引力和信息性。新增对目标用户、核心优势(如双视图、智能检测、自动备份)的说明,以更好地向潜在用户展示工具价值。
2026-03-16 20:32:16 +08:00
Serendipity 575fcca5c4 refactor: 提取UI组件到独立模块并改进拖拽支持
- 将列表、按钮等UI创建代码从main.c移至ui.c/ui.h
- 添加Windows UIPI消息过滤以支持管理员模式下的文件拖拽
- 更新Makefile和构建脚本以包含新的UI模块
- 清理旧的备份注册表文件并更新README文档
2026-03-16 20:15:10 +08:00
Serendipity 39d06e20e0 feat: 新增系统/用户变量分离、搜索、拖拽和清理功能
- 将单一列表拆分为系统和用户变量两个标签页
- 新增搜索框支持实时过滤路径
- 支持拖拽文件夹直接添加到列表
- 新增一键清理功能移除无效和重复路径
- 增加注册表备份机制和删除确认
- 优化界面布局和权限提示逻辑
2026-03-16 19:58:41 +08:00
170 changed files with 12317 additions and 5615 deletions
+2
View File
@@ -0,0 +1,2 @@
[target.x86_64-pc-windows-gnu]
rustflags = ["-C", "link-arg=-lmcfgthread"]
+23 -19
View File
@@ -1,22 +1,26 @@
/.trae/
/.vscode/
/build/
*.o
*.obj
*.pdb
*.ilk
# Logs
logs
*.log
*.tmp
*.bak
Thumbs.db
Desktop.ini
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# 忽略obj目录
/obj/
node_modules
dist
dist-ssr
*.local
# 忽略dist目录
/dist/
# 忽略.ps1文件
*.ps1
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.claude/
CLAUDE.md
+38
View File
@@ -0,0 +1,38 @@
# Changelog
## v4.0.0 (2026-05-26)
### 重大变更
完全重写为 Tauri 2.x + React 19 + TypeScript + Rust 技术栈,替代原有的 C + IUP GUI。
### 新增
- 现代 Web UIReact + Tailwind CSS 4 + Zustand
- 深色/浅色模式切换
- 中英文界面即时切换
- 路径有效性颜色编码(红色无效、橙色重复)
- 环境变量展开悬停提示
- 文件夹拖拽添加路径
- 保存前 PATH 长度检查
- 66 个前端单元测试 + 10 个 Rust 单元测试
### 改进
- 安装包体积从 ~3MB 降至 ~8MB(含 WebView2 运行时)
- 完整撤销/重做支持(8 种操作类型,50 步历史)
- JSON/CSV/TXT 三种格式导入导出
- 合并预览查看系统+用户路径
- 类型安全:TypeScript strict 模式 + Rust 编译期检查
### 移除
- 旧 C + IUP + Lua + gettext 代码库
- Lua 配置引擎 → JSON 配置文件
- gettext 国际化 → i18next
### 已知限制
- 需要 Windows 10+ 系统预装的 WebView2 运行时
- 内存占用约 50MB(旧版约 15MB)
- 文件系统路径验证在清理功能中为同步检查(不含实际目录存在性验证)
-54
View File
@@ -1,54 +0,0 @@
CC = gcc
WINDRES = windres
# Paths - specific to user environment
IUP_DIR = libs/iup-3.31_Win64_dllw6_lib
INCLUDE_DIR = $(IUP_DIR)/include
LIB_DIR = $(IUP_DIR)
LOCAL_INCLUDE_DIR = include
# Output Directories
OBJ_DIR = obj
BIN_DIR = bin
# Flags
# -mwindows: Create GUI app (no console)
# -DUNICODE -D_UNICODE: Use Wide Character API
CFLAGS = -Wall -O2 -I$(INCLUDE_DIR) -I$(LOCAL_INCLUDE_DIR) -D_WIN32 -DUNICODE -D_UNICODE -fexec-charset=UTF-8
LDFLAGS = -L$(LIB_DIR) -liup -liupcd -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32 -ladvapi32 -mwindows
# Source
SRC = src/main.c src/utils.c src/registry.c src/callbacks.c
RES = ico/resources.rc
OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/callbacks.o $(OBJ_DIR)/resources.o
EXE = $(BIN_DIR)/PathEditor.exe
all: $(BIN_DIR) $(OBJ_DIR) $(EXE)
$(BIN_DIR):
if not exist $(BIN_DIR) mkdir $(BIN_DIR)
$(OBJ_DIR):
if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
$(EXE): $(OBJ)
$(CC) -o $@ $^ $(LDFLAGS)
$(OBJ_DIR)/main.o: src/main.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/utils.o: src/utils.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/registry.o: src/registry.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/callbacks.o: src/callbacks.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/resources.o: ico/resources.rc
$(WINDRES) -i $< -o $@
clean:
if exist $(OBJ_DIR)\*.o del /Q $(OBJ_DIR)\*.o
if exist $(BIN_DIR)\*.exe del /Q $(BIN_DIR)\*.exe
-73
View File
@@ -1,73 +0,0 @@
@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
REM 检查管理员权限
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 正在请求管理员权限...
echo [注意] 将会弹出一个新窗口进行操作,请留意任务栏或 UAC 提示。
echo 本窗口即将关闭...
timeout /t 3 >nul
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%~dp0"
:menu
cls
echo ========================================================
echo 系统 PATH 环境变量管理器
echo ========================================================
echo 1. 导出当前 PATH 到 'path_list.txt' (用于编辑)
echo 2. 从 'path_list.txt' 导入 PATH (应用更改)
echo 3. 备份当前 PATH 到带时间戳的文件
echo 4. 退出
echo ========================================================
set /p choice=请输入选项 (1-4):
if "%choice%"=="1" goto export
if "%choice%"=="2" goto import
if "%choice%"=="3" goto backup
if "%choice%"=="4" goto end
goto menu
:export
cls
echo 正在导出 PATH 到 path_list.txt...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$p = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); if ($p) { $p -split ';' | Where-Object { $_.Trim() -ne '' } | Out-File 'path_list.txt' -Encoding utf8; Write-Host '导出完成!您现在可以编辑 path_list.txt' -ForegroundColor Green } else { Write-Host '错误:无法获取 PATH 变量。' -ForegroundColor Red }"
pause
goto menu
:import
cls
if not exist "path_list.txt" (
echo 错误:未找到 'path_list.txt'!请先导出或手动创建该文件。
pause
goto menu
)
echo 正在从 path_list.txt 导入 PATH...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$lines = Get-Content 'path_list.txt' | Where-Object { $_.Trim() -ne '' }; if ($lines.Count -eq 0) { Write-Host '错误:path_list.txt 为空!' -ForegroundColor Red; exit }; $newPath = $lines -join ';'; Write-Host ('新的 PATH 将包含 ' + $lines.Count + ' 个条目。'); try { [Environment]::SetEnvironmentVariable('PATH', $newPath, 'Machine'); Write-Host 'PATH 更新成功!' -ForegroundColor Green } catch { Write-Host ('更新 PATH 时出错:' + $_.Exception.Message) -ForegroundColor Red }"
echo.
echo 请重启您的终端/应用程序以使更改生效。
pause
goto menu
:backup
cls
echo 正在备份 PATH...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$date = Get-Date -Format 'yyyyMMdd_HHmmss'; $outFile = 'path_backup_' + $date + '.txt'; $p = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); if ($p) { $p -split ';' | Out-File $outFile -Encoding utf8; Write-Host ('备份已保存至 ' + $outFile) -ForegroundColor Cyan } else { Write-Host '错误:无法获取 PATH 变量。' -ForegroundColor Red }"
pause
goto menu
:end
exit
+145 -54
View File
@@ -1,82 +1,173 @@
# Path Editor (系统环境变量编辑器)
<p align="center">
<h1>PathEditor</h1>
<p>Windows 系统环境变量 (PATH) 编辑器</p>
</p>
一个简单、轻量级的 Windows 系统环境变量(PATH)编辑器,基于 C 语言和 IUP 图形库开发。
<p align="center">
<img src="https://img.shields.io/badge/version-4.0.0-blue" alt="version">
<img src="https://img.shields.io/badge/tauri-2.x-ffa03a" alt="tauri">
<img src="https://img.shields.io/badge/react-19-61dafb" alt="react">
<img src="https://img.shields.io/badge/rust-1.95-000000" alt="rust">
<img src="https://img.shields.io/badge/typescript-strict-blue" alt="typescript">
<img src="https://img.shields.io/badge/license-MIT-green" alt="license">
<img src="https://img.shields.io/badge/tests-55%20passed-brightgreen" alt="tests">
</p>
## ✨ 功能特点
---
* **可视化编辑**:直观地查看和管理系统 PATH 环境变量。
* **安全操作**:必须以管理员身份运行才能保存更改,防止误操作。
* **便捷管理**
* **新建**:添加新路径到列表。
* 📂 **浏览**:直接从文件资源管理器选择目录添加。
* ✏️ **编辑**:修改现有路径。
* 🗑️ **删除**:移除不需要的路径。
* ⬆️⬇️ **排序**:上移/下移调整路径优先级。
* **轻量级**:原生 C 语言编写,运行速度快,占用资源少。
## 简介
## 📦 下载与安装
PathEditor 是 Windows PATH 环境变量的可视化管理工具。支持系统变量和用户变量的增删改查、拖拽排序、一键清理无效路径、导入导出以及完整的撤销/重做。
您可以从 [Releases](https://github.com/LHY0125/PathEditor/releases) 页面下载最新的安装包 (`PathEditorSetup.exe`)
v4.0 使用 **Tauri 2.x + React 19 + TypeScript + Rust** 完全重写,替代了原有的 C + IUP GUI
安装完成后,请**以管理员身份运行**程序以确保能够保存对系统环境变量的修改。
## 截图
## 🛠️ 构建指南
_[待补充]_
如果您想从源码构建本项目,请按照以下步骤操作:
## 功能
### 环境要求
### 路径管理
- 查看和编辑 **系统 PATH**HKLM)和 **用户 PATH**HKCU
- 新建、编辑、删除、上移、下移路径条目
- 多选批量删除
- 实时搜索过滤
- 合并预览(系统 + 用户路径并列显示)
- 文件夹拖拽添加
* Windows 操作系统
* GCC 编译器 (推荐 MinGW-w64)
* Make 工具
* IUP 库 (已包含在 `libs` 目录下)
### 路径验证
- **红色**标记:路径在文件系统中不存在
- **橙色**标记:路径在列表中重复出现
- 环境变量路径(含 `%VAR%`)悬浮展开预览
### 编译步骤
### 撤销/重做
- 支持 8 种操作类型,最多 50 步历史
- 新增、删除、编辑、移动、清理、清空、导入均可撤销
1. 克隆仓库:
### 导入/导出
- **JSON**:结构化导出,含版本和时间戳
- **CSV**UTF-8 BOM 编码,兼容 Excel
- **TXT**:纯文本,每行一个路径
```bash
git clone https://github.com/LHY0125/PathEditor.git
cd PathEditor
```
### 安全
- 保存前自动备份注册表到 `%APPDATA%/PathEditor/backups/`
- PATH 长度检查(Windows 单变量上限 32767 字符)
- 非管理员自动进入**只读模式**
- 保存中途失败精确提示哪个注册表 hive 出错
2. 编译项目:
### 界面
- 深色模式 / 浅色模式
- 中文 / English 界面切换
- 全局键盘快捷键
- 修改状态指示(黄点)+ 未保存退出确认
```bash
mingw32-make
```
## 安装
3. 运行:
编译成功后,可执行文件位于 `bin/PathEditor.exe`。
从 [Releases](https://github.com/LHY0125/PathEditor/releases) 下载最新版 `PathEditor_4.0.0_x64-setup.exe` 安装。
### 打包 (可选)
或从源码构建:
本项目使用 Inno Setup 生成安装包。
```bash
# 安装依赖
npm install
1. 确保已安装 [Inno Setup 6](https://jrsoftware.org/isdl.php)。
2. 编译项目生成 exe 文件。
3. 使用 Inno Setup 编译 `dist/installer.iss` 脚本。
# 构建安装包
npx tauri build
```
## 📝 使用说明
> **要求**Windows 10+(自带 WebView2),管理员权限才能编辑系统 PATH。
1. **启动**:右键点击程序图标,选择“以管理员身份运行”。
2. **查看**:程序启动后会自动加载当前的系统 PATH 变量。
3. **修改**:使用右侧按钮栏进行添加、删除、移动等操作。
4. **保存**:操作完成后,务必点击底部的【确定】按钮保存更改。
5. **生效**:保存后,某些正在运行的程序可能需要重启才能识别新的环境变量。CMD 或 PowerShell 窗口需要重新打开。
## 开发
## 👤 作者信息
```bash
# 开发模式(热更新)
npx tauri dev
* **作者**LHY
* **邮箱**<3364451258@qq.com>
* **GitHub**[https://github.com/LHY0125/PathEditor](https://github.com/LHY0125/PathEditor)
# 仅前端
npm run dev
如果您觉得这个工具对您有帮助,请给我的 GitHub 仓库点个 Star ⭐️
# 前端测试
npm test
## 📄 许可证
# Rust 后端检查
cd src-tauri && cargo check
本项目基于 MIT 许可证开源,您可以在遵守许可证条款的前提下自由使用、修改和分发本项目的代码。
# Rust 后端测试
cd src-tauri && cargo test
```
详细信息请参阅 [LICENSE](LICENSE) 文件。
### 技术栈
Copyright © 2026 LHY. All Rights Reserved.
| 层 | 技术 |
|---|---|
| 前端框架 | React 19 + TypeScript (strict) |
| UI 样式 | Tailwind CSS 4 |
| 状态管理 | Zustand |
| 国际化 | i18next |
| 桌面框架 | Tauri 2.x |
| 后端 | Rust (winreg + windows-rs FFI) |
| 前端测试 | Vitest (45 个测试) |
| Rust 测试 | cargo test (10 个测试) |
| 构建 | Vite |
| 打包 | NSIS |
### 项目结构
```
src/ # React 前端
├── core/ # 纯逻辑 — 零框架依赖、零平台依赖
├── store/ # Zustand 状态管理
├── components/
│ ├── layout/ # AppShell、TitleBar、StatusBar、ErrorBoundary
│ ├── path-list/ # PathTable、MergePreview
│ ├── toolbar/ # ToolBar、ActionButtons、UndoRedoButtons、SearchInput
│ ├── dialogs/ # PathEditDialog、HelpDialog、ImportDialog
│ └── ui/ # Modal、buttons(共享组件)
├── hooks/ # useAppActions、useKeyboard
├── i18n/ # zh-CN / en
└── config/ # default.json
src-tauri/ # Rust 后端
└── src/commands/
├── registry.rs # 注册表读写
├── system.rs # 权限检测、路径验证、环境变量展开
└── backup.rs # 注册表备份
tests/unit/ # 前端单元测试
```
## 快捷键
| 快捷键 | 功能 |
|--------|------|
| `Ctrl+N` | 新建路径 |
| `Ctrl+S` | 保存 |
| `Ctrl+Z` | 撤销 |
| `Ctrl+Y` | 重做 |
| `Ctrl+F` | 搜索 |
| `Delete` | 删除选中 |
| `F1` | 帮助 |
## 贡献
欢迎提交 Issue 和 Pull Request。在开始大改动前,建议先开 Issue 讨论。
### 本地开发环境
- Node.js 22+
- Rust 1.95+ (stable-x86_64-pc-windows-gnu)
- MinGW-w64 (GCC 15.x 需配置 `-lmcfgthread` 链接标志)
### 代码规范
- TypeScript `strict: true`,零编译错误
- 所有 Rust `unsafe` 块必须有 `// SAFETY:` 注释
- 前端核心逻辑在 `src/core/`,纯函数,零依赖,可独立测试
## 许可证
MIT License
## 作者
[刘航宇](https://github.com/LHY0125) — 河南理工大学人工智能协会
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
-50
View File
@@ -1,50 +0,0 @@
; Script generated by Trae AI
#define MyAppName "Path Editor"
#define MyAppVersion "1.0"
#define MyAppPublisher "LHY"
#define MyAppURL "https://github.com/LHY0125/PathEditor"
#define MyAppExeName "PathEditor.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{A3F29B10-1234-5678-9ABC-DEF012345678}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=d:\Code\doing_exercises\programs\PathEditor\dist\dist
OutputBaseFilename=PathEditorSetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern
SetupIconFile=d:\Code\doing_exercises\programs\PathEditor\ico\PathEditor.ico
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
;Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "d:\Code\doing_exercises\programs\PathEditor\bin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "d:\Code\doing_exercises\programs\PathEditor\bin\*.dll"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

-1
View File
@@ -1 +0,0 @@
IDI_ICON1 ICON "PathEditor.ico"
-20
View File
@@ -1,20 +0,0 @@
#ifndef CALLBACKS_H
#define CALLBACKS_H
#include <iup.h>
// 按钮回调
int btn_new_cb(Ihandle* self);
int btn_edit_cb(Ihandle* self);
int btn_browse_cb(Ihandle* self);
int btn_del_cb(Ihandle* self);
int btn_up_cb(Ihandle* self);
int btn_down_cb(Ihandle* self);
int btn_ok_cb(Ihandle* self);
int btn_cancel_cb(Ihandle* self);
int btn_help_cb(Ihandle* self);
// 双击回调
int list_dblclick_cb(Ihandle* self, int item, char* text);
#endif // CALLBACKS_H
-24
View File
@@ -1,24 +0,0 @@
#ifndef GLOBALS_H
#define GLOBALS_H
#include <iup.h>
// 注册表路径常量
#define REG_PATH L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"
#define REG_VALUE L"Path"
// 全局控件句柄声明
extern Ihandle *dlg; // 主对话框句柄
extern Ihandle *list_path; // 路径列表控件句柄
extern Ihandle *lbl_status; // 状态标签句柄
extern Ihandle *btn_new; // 新增按钮句柄
extern Ihandle *btn_edit; // 编辑按钮句柄
extern Ihandle *btn_browse; // 浏览按钮句柄
extern Ihandle *btn_del; // 删除按钮句柄
extern Ihandle *btn_up; // 上移按钮句柄
extern Ihandle *btn_down; // 下移按钮句柄
extern Ihandle *btn_ok; // 确认按钮句柄
extern Ihandle *btn_cancel; // 取消按钮句柄
extern Ihandle *btn_help; // 帮助按钮句柄
#endif // GLOBALS_H
-10
View File
@@ -1,10 +0,0 @@
#ifndef REGISTRY_H
#define REGISTRY_H
// 从注册表加载PATH到列表控件
void load_path();
// 将列表控件中的PATH保存回注册表
void save_path();
#endif // REGISTRY_H
-19
View File
@@ -1,19 +0,0 @@
#ifndef UTILS_H
#define UTILS_H
#include <windows.h>
#include <wchar.h>
// 宽字符转UTF-8
char* wide_to_utf8(const wchar_t* wstr);
// UTF-8转宽字符
wchar_t* utf8_to_wide(const char* str);
// 检查管理员权限
int check_admin();
// 刷新列表样式(斑马纹)
void refresh_list_style();
#endif // UTILS_H
+12
View File
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>PathEditor v4.0</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Binary file not shown.
Binary file not shown.
-516
View File
@@ -1,516 +0,0 @@
/** \file
* \brief User API
* IUP - A Portable User Interface Toolkit
* Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil
* http://www.tecgraf.puc-rio.br/iup mailto:iup@tecgraf.puc-rio.br
*
* See Copyright Notice at the end of this file
*/
#ifndef __IUP_H
#define __IUP_H
#include "iupkey.h"
#include "iupdef.h"
#include "iup_export.h"
#ifdef __cplusplus
extern "C" {
#endif
#define IUP_NAME "IUP - Portable User Interface"
#define IUP_DESCRIPTION "Multi-platform Toolkit for Building Graphical User Interfaces"
#define IUP_COPYRIGHT "Copyright (C) 1994-2023 Tecgraf/PUC-Rio"
#define IUP_VERSION "3.31" /* bug fixes are reported only by IupVersion functions */
#define IUP_VERSION_NUMBER 331000
#define IUP_VERSION_DATE "2023/10/13" /* does not include bug fix releases */
typedef struct Ihandle_ Ihandle;
typedef int (*Icallback)(Ihandle*);
/************************************************************************/
/* Main API */
/************************************************************************/
IUP_API int IupOpen (int *argc, char ***argv);
IUP_API void IupClose (void);
IUP_API int IupIsOpened (void);
IUPIMGLIB_API void IupImageLibOpen(void);
IUP_API int IupMainLoop (void);
IUP_API int IupLoopStep (void);
IUP_API int IupLoopStepWait (void);
IUP_API int IupMainLoopLevel (void);
IUP_API void IupFlush (void);
IUP_API void IupExitLoop (void);
IUP_API void IupPostMessage (Ihandle* ih, const char* s, int i, double d, void* p);
IUP_API int IupRecordInput(const char* filename, int mode);
IUP_API int IupPlayInput(const char* filename);
IUP_API void IupUpdate (Ihandle* ih);
IUP_API void IupUpdateChildren(Ihandle* ih);
IUP_API void IupRedraw (Ihandle* ih, int children);
IUP_API void IupRefresh (Ihandle* ih);
IUP_API void IupRefreshChildren(Ihandle* ih);
IUP_API int IupExecute(const char *filename, const char* parameters);
IUP_API int IupExecuteWait(const char *filename, const char* parameters);
IUP_API int IupHelp(const char* url);
IUP_API void IupLog(const char* type, const char* format, ...);
IUP_API char* IupLoad (const char *filename);
IUP_API char* IupLoadBuffer (const char *buffer);
IUP_API char* IupVersion (void);
IUP_API char* IupVersionDate (void);
IUP_API int IupVersionNumber (void);
IUP_API void IupVersionShow (void);
IUP_API void IupSetLanguage (const char *lng);
IUP_API char* IupGetLanguage (void);
IUP_API void IupSetLanguageString(const char* name, const char* str);
IUP_API void IupStoreLanguageString(const char* name, const char* str);
IUP_API char* IupGetLanguageString(const char* name);
IUP_API void IupSetLanguagePack(Ihandle* ih);
IUP_API void IupDestroy (Ihandle* ih);
IUP_API void IupDetach (Ihandle* child);
IUP_API Ihandle* IupAppend (Ihandle* ih, Ihandle* child);
IUP_API Ihandle* IupInsert (Ihandle* ih, Ihandle* ref_child, Ihandle* child);
IUP_API Ihandle* IupGetChild (Ihandle* ih, int pos);
IUP_API int IupGetChildPos (Ihandle* ih, Ihandle* child);
IUP_API int IupGetChildCount(Ihandle* ih);
IUP_API Ihandle* IupGetNextChild (Ihandle* ih, Ihandle* child);
IUP_API Ihandle* IupGetBrother (Ihandle* ih);
IUP_API Ihandle* IupGetParent (Ihandle* ih);
IUP_API Ihandle* IupGetDialog (Ihandle* ih);
IUP_API Ihandle* IupGetDialogChild(Ihandle* ih, const char* name);
IUP_API int IupReparent (Ihandle* ih, Ihandle* new_parent, Ihandle* ref_child);
IUP_API int IupPopup (Ihandle* ih, int x, int y);
IUP_API int IupShow (Ihandle* ih);
IUP_API int IupShowXY (Ihandle* ih, int x, int y);
IUP_API int IupHide (Ihandle* ih);
IUP_API int IupMap (Ihandle* ih);
IUP_API void IupUnmap (Ihandle* ih);
IUP_API void IupResetAttribute(Ihandle* ih, const char* name);
IUP_API int IupGetAllAttributes(Ihandle* ih, char** names, int n);
IUP_API void IupCopyAttributes(Ihandle* src_ih, Ihandle* dst_ih);
IUP_API Ihandle* IupSetAtt(const char* handle_name, Ihandle* ih, const char* name, ...);
IUP_API Ihandle* IupSetAttributes (Ihandle* ih, const char *str);
IUP_API char* IupGetAttributes (Ihandle* ih);
IUP_API void IupSetAttribute (Ihandle* ih, const char* name, const char* value);
IUP_API void IupSetStrAttribute(Ihandle* ih, const char* name, const char* value);
IUP_API void IupSetStrf (Ihandle* ih, const char* name, const char* format, ...);
IUP_API void IupSetInt (Ihandle* ih, const char* name, int value);
IUP_API void IupSetFloat (Ihandle* ih, const char* name, float value);
IUP_API void IupSetDouble (Ihandle* ih, const char* name, double value);
IUP_API void IupSetRGB (Ihandle* ih, const char* name, unsigned char r, unsigned char g, unsigned char b);
IUP_API void IupSetRGBA (Ihandle* ih, const char* name, unsigned char r, unsigned char g, unsigned char b, unsigned char a);
IUP_API char* IupGetAttribute(Ihandle* ih, const char* name);
IUP_API int IupGetInt (Ihandle* ih, const char* name);
IUP_API int IupGetInt2 (Ihandle* ih, const char* name);
IUP_API int IupGetIntInt (Ihandle* ih, const char* name, int *i1, int *i2);
IUP_API float IupGetFloat (Ihandle* ih, const char* name);
IUP_API double IupGetDouble(Ihandle* ih, const char* name);
IUP_API void IupGetRGB (Ihandle* ih, const char* name, unsigned char *r, unsigned char *g, unsigned char *b);
IUP_API void IupGetRGBA (Ihandle* ih, const char* name, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a);
IUP_API void IupSetAttributeId(Ihandle* ih, const char* name, int id, const char *value);
IUP_API void IupSetStrAttributeId(Ihandle* ih, const char* name, int id, const char *value);
IUP_API void IupSetStrfId(Ihandle* ih, const char* name, int id, const char* format, ...);
IUP_API void IupSetIntId(Ihandle* ih, const char* name, int id, int value);
IUP_API void IupSetFloatId(Ihandle* ih, const char* name, int id, float value);
IUP_API void IupSetDoubleId(Ihandle* ih, const char* name, int id, double value);
IUP_API void IupSetRGBId(Ihandle* ih, const char* name, int id, unsigned char r, unsigned char g, unsigned char b);
IUP_API char* IupGetAttributeId(Ihandle* ih, const char* name, int id);
IUP_API int IupGetIntId(Ihandle* ih, const char* name, int id);
IUP_API float IupGetFloatId(Ihandle* ih, const char* name, int id);
IUP_API double IupGetDoubleId(Ihandle* ih, const char* name, int id);
IUP_API void IupGetRGBId(Ihandle* ih, const char* name, int id, unsigned char *r, unsigned char *g, unsigned char *b);
IUP_API void IupSetAttributeId2(Ihandle* ih, const char* name, int lin, int col, const char* value);
IUP_API void IupSetStrAttributeId2(Ihandle* ih, const char* name, int lin, int col, const char* value);
IUP_API void IupSetStrfId2(Ihandle* ih, const char* name, int lin, int col, const char* format, ...);
IUP_API void IupSetIntId2(Ihandle* ih, const char* name, int lin, int col, int value);
IUP_API void IupSetFloatId2(Ihandle* ih, const char* name, int lin, int col, float value);
IUP_API void IupSetDoubleId2(Ihandle* ih, const char* name, int lin, int col, double value);
IUP_API void IupSetRGBId2(Ihandle* ih, const char* name, int lin, int col, unsigned char r, unsigned char g, unsigned char b);
IUP_API char* IupGetAttributeId2(Ihandle* ih, const char* name, int lin, int col);
IUP_API int IupGetIntId2(Ihandle* ih, const char* name, int lin, int col);
IUP_API float IupGetFloatId2(Ihandle* ih, const char* name, int lin, int col);
IUP_API double IupGetDoubleId2(Ihandle* ih, const char* name, int lin, int col);
IUP_API void IupGetRGBId2(Ihandle* ih, const char* name, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b);
IUP_API void IupSetGlobal (const char* name, const char* value);
IUP_API void IupSetStrGlobal(const char* name, const char* value);
IUP_API char* IupGetGlobal (const char* name);
IUP_API Ihandle* IupSetFocus (Ihandle* ih);
IUP_API Ihandle* IupGetFocus (void);
IUP_API Ihandle* IupPreviousField(Ihandle* ih);
IUP_API Ihandle* IupNextField (Ihandle* ih);
IUP_API Icallback IupGetCallback (Ihandle* ih, const char *name);
IUP_API Icallback IupSetCallback (Ihandle* ih, const char *name, Icallback func);
IUP_API Ihandle* IupSetCallbacks(Ihandle* ih, const char *name, Icallback func, ...);
IUP_API Icallback IupGetFunction(const char *name);
IUP_API Icallback IupSetFunction(const char *name, Icallback func);
IUP_API Ihandle* IupGetHandle (const char *name);
IUP_API Ihandle* IupSetHandle (const char *name, Ihandle* ih);
IUP_API int IupGetAllNames (char** names, int n);
IUP_API int IupGetAllDialogs(char** names, int n);
IUP_API char* IupGetName (Ihandle* ih);
IUP_API void IupSetAttributeHandle(Ihandle* ih, const char* name, Ihandle* ih_named);
IUP_API Ihandle* IupGetAttributeHandle(Ihandle* ih, const char* name);
IUP_API void IupSetAttributeHandleId(Ihandle* ih, const char* name, int id, Ihandle* ih_named);
IUP_API Ihandle* IupGetAttributeHandleId(Ihandle* ih, const char* name, int id);
IUP_API void IupSetAttributeHandleId2(Ihandle* ih, const char* name, int lin, int col, Ihandle* ih_named);
IUP_API Ihandle* IupGetAttributeHandleId2(Ihandle* ih, const char* name, int lin, int col);
IUP_API char* IupGetClassName(Ihandle* ih);
IUP_API char* IupGetClassType(Ihandle* ih);
IUP_API int IupGetAllClasses(char** names, int n);
IUP_API int IupGetClassAttributes(const char* classname, char** names, int n);
IUP_API int IupGetClassCallbacks(const char* classname, char** names, int n);
IUP_API void IupSaveClassAttributes(Ihandle* ih);
IUP_API void IupCopyClassAttributes(Ihandle* src_ih, Ihandle* dst_ih);
IUP_API void IupSetClassDefaultAttribute(const char* classname, const char *name, const char* value);
IUP_API int IupClassMatch(Ihandle* ih, const char* classname);
IUP_API Ihandle* IupCreate (const char *classname);
IUP_API Ihandle* IupCreatev(const char *classname, void* *params);
IUP_API Ihandle* IupCreatep(const char *classname, void* first, ...);
/************************************************************************/
/* Elements */
/************************************************************************/
IUP_API Ihandle* IupFill (void);
IUP_API Ihandle* IupSpace(void);
IUP_API Ihandle* IupRadio (Ihandle* child);
IUP_API Ihandle* IupVbox (Ihandle* child, ...);
IUP_API Ihandle* IupVboxv (Ihandle* *children);
IUP_API Ihandle* IupZbox (Ihandle* child, ...);
IUP_API Ihandle* IupZboxv (Ihandle* *children);
IUP_API Ihandle* IupHbox (Ihandle* child, ...);
IUP_API Ihandle* IupHboxv (Ihandle* *children);
IUP_API Ihandle* IupNormalizer (Ihandle* ih_first, ...);
IUP_API Ihandle* IupNormalizerv(Ihandle* *ih_list);
IUP_API Ihandle* IupCbox (Ihandle* child, ...);
IUP_API Ihandle* IupCboxv (Ihandle* *children);
IUP_API Ihandle* IupSbox (Ihandle* child);
IUP_API Ihandle* IupSplit (Ihandle* child1, Ihandle* child2);
IUP_API Ihandle* IupScrollBox (Ihandle* child);
IUP_API Ihandle* IupFlatScrollBox(Ihandle* child);
IUP_API Ihandle* IupGridBox (Ihandle* child, ...);
IUP_API Ihandle* IupGridBoxv (Ihandle* *children);
IUP_API Ihandle* IupMultiBox (Ihandle* child, ...);
IUP_API Ihandle* IupMultiBoxv (Ihandle **children);
IUP_API Ihandle* IupExpander(Ihandle* child);
IUP_API Ihandle* IupDetachBox (Ihandle* child);
IUP_API Ihandle* IupBackgroundBox(Ihandle* child);
IUP_API Ihandle* IupFrame (Ihandle* child);
IUP_API Ihandle* IupFlatFrame (Ihandle* child);
IUP_API Ihandle* IupImage (int width, int height, const unsigned char* pixels);
IUP_API Ihandle* IupImageRGB (int width, int height, const unsigned char* pixels);
IUP_API Ihandle* IupImageRGBA (int width, int height, const unsigned char* pixels);
IUP_API Ihandle* IupItem (const char* title, const char* action);
IUP_API Ihandle* IupSubmenu (const char* title, Ihandle* child);
IUP_API Ihandle* IupSeparator (void);
IUP_API Ihandle* IupMenu (Ihandle* child, ...);
IUP_API Ihandle* IupMenuv (Ihandle* *children);
IUP_API Ihandle* IupButton (const char* title, const char* action);
IUP_API Ihandle* IupFlatButton (const char* title);
IUP_API Ihandle* IupFlatToggle (const char* title);
IUP_API Ihandle* IupDropButton (Ihandle* dropchild);
IUP_API Ihandle* IupFlatLabel (const char* title);
IUP_API Ihandle* IupFlatSeparator(void);
IUP_API Ihandle* IupCanvas (const char* action);
IUP_API Ihandle* IupDialog (Ihandle* child);
IUP_API Ihandle* IupUser (void);
IUP_API Ihandle* IupThread (void);
IUP_API Ihandle* IupLabel (const char* title);
IUP_API Ihandle* IupList (const char* action);
IUP_API Ihandle* IupFlatList (void);
IUP_API Ihandle* IupText (const char* action);
IUP_API Ihandle* IupMultiLine (const char* action);
IUP_API Ihandle* IupToggle (const char* title, const char* action);
IUP_API Ihandle* IupTimer (void);
IUP_API Ihandle* IupClipboard (void);
IUP_API Ihandle* IupProgressBar(void);
IUP_API Ihandle* IupVal (const char *type);
IUP_API Ihandle* IupFlatVal (const char *type);
IUP_API Ihandle* IupFlatTree (void);
IUP_API Ihandle* IupTabs (Ihandle* child, ...);
IUP_API Ihandle* IupTabsv (Ihandle* *children);
IUP_API Ihandle* IupFlatTabs (Ihandle* first, ...);
IUP_API Ihandle* IupFlatTabsv (Ihandle* *children);
IUP_API Ihandle* IupTree (void);
IUP_API Ihandle* IupLink (const char* url, const char* title);
IUP_API Ihandle* IupAnimatedLabel(Ihandle* animation);
IUP_API Ihandle* IupDatePick (void);
IUP_API Ihandle* IupCalendar (void);
IUP_API Ihandle* IupColorbar (void);
IUP_API Ihandle* IupGauge (void);
IUP_API Ihandle* IupDial (const char* type);
IUP_API Ihandle* IupColorBrowser(void);
/* Old controls, use SPIN attribute of IupText */
IUP_API Ihandle* IupSpin (void);
IUP_API Ihandle* IupSpinbox (Ihandle* child);
/************************************************************************/
/* Utilities */
/************************************************************************/
/* String compare utility */
IUP_API int IupStringCompare(const char* str1, const char* str2, int casesensitive, int lexicographic);
/* IupImage utilities */
IUP_API int IupSaveImageAsText(Ihandle* ih, const char* filename, const char* format, const char* name);
IUP_API Ihandle* IupImageGetHandle(const char* name);
/* IupText and IupScintilla utilities */
IUP_API void IupTextConvertLinColToPos(Ihandle* ih, int lin, int col, int *pos);
IUP_API void IupTextConvertPosToLinCol(Ihandle* ih, int pos, int *lin, int *col);
/* IupText, IupList, IupTree, IupMatrix and IupScintilla utility */
IUP_API int IupConvertXYToPos(Ihandle* ih, int x, int y);
/* OLD names, kept for backward compatibility, will never be removed. */
IUP_API void IupStoreGlobal(const char* name, const char* value);
IUP_API void IupStoreAttribute(Ihandle* ih, const char* name, const char* value);
IUP_API void IupSetfAttribute(Ihandle* ih, const char* name, const char* format, ...);
IUP_API void IupStoreAttributeId(Ihandle* ih, const char* name, int id, const char *value);
IUP_API void IupSetfAttributeId(Ihandle* ih, const char* name, int id, const char* f, ...);
IUP_API void IupStoreAttributeId2(Ihandle* ih, const char* name, int lin, int col, const char* value);
IUP_API void IupSetfAttributeId2(Ihandle* ih, const char* name, int lin, int col, const char* format, ...);
/* IupTree and IupFlatTree utilities (work for both) */
IUP_API int IupTreeSetUserId(Ihandle* ih, int id, void* userid);
IUP_API void* IupTreeGetUserId(Ihandle* ih, int id);
IUP_API int IupTreeGetId(Ihandle* ih, void *userid);
IUP_API void IupTreeSetAttributeHandle(Ihandle* ih, const char* name, int id, Ihandle* ih_named); /* deprecated, use IupSetAttributeHandleId */
/************************************************************************/
/* Pre-defined dialogs */
/************************************************************************/
IUP_API Ihandle* IupFileDlg(void);
IUP_API Ihandle* IupMessageDlg(void);
IUP_API Ihandle* IupColorDlg(void);
IUP_API Ihandle* IupFontDlg(void);
IUP_API Ihandle* IupProgressDlg(void);
IUP_API int IupGetFile(char *arq);
IUP_API void IupMessage(const char *title, const char *msg);
IUP_API void IupMessagef(const char *title, const char *format, ...);
IUP_API void IupMessageError(Ihandle* parent, const char* message);
IUP_API int IupMessageAlarm(Ihandle* parent, const char* title, const char *message, const char *buttons);
IUP_API int IupAlarm(const char *title, const char *msg, const char *b1, const char *b2, const char *b3);
IUP_API int IupScanf(const char *format, ...);
IUP_API int IupListDialog(int type, const char *title, int size, const char** list,
int op, int max_col, int max_lin, int* marks);
IUP_API int IupGetText(const char* title, char* text, int maxsize);
IUP_API int IupGetColor(int x, int y, unsigned char* r, unsigned char* g, unsigned char* b);
typedef int (*Iparamcb)(Ihandle* dialog, int param_index, void* user_data);
IUP_API int IupGetParam(const char* title, Iparamcb action, void* user_data, const char* format,...);
IUP_API int IupGetParamv(const char* title, Iparamcb action, void* user_data, const char* format, int param_count, int param_extra, void** param_data);
IUP_API Ihandle* IupParam(const char* format);
IUP_API Ihandle* IupParamBox(Ihandle* param, ...);
IUP_API Ihandle* IupParamBoxv(Ihandle* *param_array);
IUP_API Ihandle* IupLayoutDialog(Ihandle* dialog);
IUP_API Ihandle* IupElementPropertiesDialog(Ihandle* parent, Ihandle* elem);
IUP_API Ihandle* IupGlobalsDialog(void);
IUP_API Ihandle* IupClassInfoDialog(Ihandle* parent);
#ifdef __cplusplus
}
#endif
/************************************************************************/
/* Common Flags and Return Values */
/************************************************************************/
#define IUP_ERROR 1
#define IUP_NOERROR 0
#define IUP_OPENED -1
#define IUP_INVALID -1
#define IUP_INVALID_ID -10
/************************************************************************/
/* Callback Return Values */
/************************************************************************/
#define IUP_IGNORE -1
#define IUP_DEFAULT -2
#define IUP_CLOSE -3
#define IUP_CONTINUE -4
/************************************************************************/
/* IupPopup and IupShowXY Parameter Values */
/************************************************************************/
#define IUP_CENTER 0xFFFF /* 65535 */
#define IUP_LEFT 0xFFFE /* 65534 */
#define IUP_RIGHT 0xFFFD /* 65533 */
#define IUP_MOUSEPOS 0xFFFC /* 65532 */
#define IUP_CURRENT 0xFFFB /* 65531 */
#define IUP_CENTERPARENT 0xFFFA /* 65530 */
#define IUP_LEFTPARENT 0xFFF9 /* 65529 */
#define IUP_RIGHTPARENT 0xFFF8 /* 65528 */
#define IUP_TOP IUP_LEFT
#define IUP_BOTTOM IUP_RIGHT
#define IUP_TOPPARENT IUP_LEFTPARENT
#define IUP_BOTTOMPARENT IUP_RIGHTPARENT
/************************************************************************/
/* SHOW_CB Callback Values */
/************************************************************************/
enum{IUP_SHOW, IUP_RESTORE, IUP_MINIMIZE, IUP_MAXIMIZE, IUP_HIDE};
/************************************************************************/
/* SCROLL_CB Callback Values */
/************************************************************************/
enum{IUP_SBUP, IUP_SBDN, IUP_SBPGUP, IUP_SBPGDN, IUP_SBPOSV, IUP_SBDRAGV,
IUP_SBLEFT, IUP_SBRIGHT, IUP_SBPGLEFT, IUP_SBPGRIGHT, IUP_SBPOSH, IUP_SBDRAGH};
/************************************************************************/
/* Mouse Button Values and Macros */
/************************************************************************/
#define IUP_BUTTON1 '1'
#define IUP_BUTTON2 '2'
#define IUP_BUTTON3 '3'
#define IUP_BUTTON4 '4'
#define IUP_BUTTON5 '5'
#define iup_isshift(_s) (_s[0]=='S')
#define iup_iscontrol(_s) (_s[1]=='C')
#define iup_isbutton1(_s) (_s[2]=='1')
#define iup_isbutton2(_s) (_s[3]=='2')
#define iup_isbutton3(_s) (_s[4]=='3')
#define iup_isdouble(_s) (_s[5]=='D')
#define iup_isalt(_s) (_s[6]=='A')
#define iup_issys(_s) (_s[7]=='Y')
#define iup_isbutton4(_s) (_s[8]=='4')
#define iup_isbutton5(_s) (_s[9]=='5')
/* Old definitions for backward compatibility */
#define isshift iup_isshift
#define iscontrol iup_iscontrol
#define isbutton1 iup_isbutton1
#define isbutton2 iup_isbutton2
#define isbutton3 iup_isbutton3
#define isdouble iup_isdouble
#define isalt iup_isalt
#define issys iup_issys
#define isbutton4 iup_isbutton4
#define isbutton5 iup_isbutton5
/************************************************************************/
/* Pre-Defined Masks */
/************************************************************************/
#define IUP_MASK_FLOAT "[+/-]?(/d+/.?/d*|/./d+)"
#define IUP_MASK_UFLOAT "(/d+/.?/d*|/./d+)"
#define IUP_MASK_EFLOAT "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
#define IUP_MASK_UEFLOAT "(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
#define IUP_MASK_FLOATCOMMA "[+/-]?(/d+/,?/d*|/,/d+)"
#define IUP_MASK_UFLOATCOMMA "(/d+/,?/d*|/,/d+)"
#define IUP_MASK_INT "[+/-]?/d+"
#define IUP_MASK_UINT "/d+"
/* Old definitions for backward compatibility */
#define IUPMASK_FLOAT IUP_MASK_FLOAT
#define IUPMASK_UFLOAT IUP_MASK_UFLOAT
#define IUPMASK_EFLOAT IUP_MASK_EFLOAT
#define IUPMASK_INT IUP_MASK_INT
#define IUPMASK_UINT IUP_MASK_UINT
/************************************************************************/
/* IupGetParam Callback situations */
/************************************************************************/
#define IUP_GETPARAM_BUTTON1 -1
#define IUP_GETPARAM_INIT -2
#define IUP_GETPARAM_BUTTON2 -3
#define IUP_GETPARAM_BUTTON3 -4
#define IUP_GETPARAM_CLOSE -5
#define IUP_GETPARAM_MAP -6
#define IUP_GETPARAM_OK IUP_GETPARAM_BUTTON1
#define IUP_GETPARAM_CANCEL IUP_GETPARAM_BUTTON2
#define IUP_GETPARAM_HELP IUP_GETPARAM_BUTTON3
/************************************************************************/
/* Used by IupColorbar */
/************************************************************************/
#define IUP_PRIMARY -1
#define IUP_SECONDARY -2
/************************************************************************/
/* Record Input Modes */
/************************************************************************/
enum {IUP_RECBINARY, IUP_RECTEXT};
/************************************************************************/
/* Replacement for the WinMain in Windows, */
/* this allows the application to start from "main". */
/* Used only for Watcom. */
/************************************************************************/
#if defined (__WATCOMC__)
#ifdef __cplusplus
extern "C" {
int IupMain (int argc, char** argv); /* In C++ we have to declare the prototype */
}
#endif
#define main IupMain /* this is the trick for Watcom and MetroWerks */
#endif
/******************************************************************************
* Copyright (C) 1994-2019 Tecgraf/PUC-Rio.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
******************************************************************************/
#endif
@@ -1,464 +0,0 @@
/** \file
* \brief Class Callback Utilities.
*/
#ifndef __IUP_CLASS_CBS_HPP
#define __IUP_CLASS_CBS_HPP
#define IUP_CLASS_GET_OBJECT(__ih, __class) dynamic_cast<__class*>((__class*)IupGetAttribute(__ih, #__class "->this"))
#define IUP_CLASS_INITCALLBACK(__ih, __class) \
IupSetAttribute(__ih, #__class "->this", (char*)this)
#define IUP_CLASS_SETCALLBACK(__ih, __name, __cb) \
IupSetCallback(__ih, __name, (Icallback)CB_##__cb)
#ifdef __IUP_PLUS_H
#define IUP_PLUS_GET_OBJECT(__elem, __class) dynamic_cast<__class*>((__class*)IupGetAttribute(__elem.GetHandle(), #__class "->this"))
#define IUP_PLUS_INITCALLBACK(__elem, __class) \
IupSetAttribute(__elem.GetHandle(), #__class "->this", (char*)this)
#define IUP_PLUS_SETCALLBACK(__elem, __name, __cb) \
IupSetCallback(__elem.GetHandle(), __name, (Icallback)CB_##__cb)
#endif
#define IUP_CLASS_DECLARECALLBACK_IFn(__class, __cb) \
int __cb(Ihandle* ih); \
static int CB_##__cb(Ihandle* ih) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih); \
}
#define IUP_CLASS_DECLARECALLBACK_IFni(__class, __cb) \
int __cb(Ihandle* ih, int i1); \
static int CB_##__cb(Ihandle* ih, int i1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2); \
static int CB_##__cb(Ihandle* ih, int i1, int i2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, i5); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiiii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, i5, i6); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiiiiC(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6, struct _cdCanvas* canvas); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6, struct _cdCanvas* canvas) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, i5, i6, canvas); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnC(__class, __cb) \
int __cb(Ihandle* ih, struct _cdCanvas* canvas); \
static int CB_##__cb(Ihandle* ih, struct _cdCanvas* canvas) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, canvas); \
}
#define IUP_CLASS_DECLARECALLBACK_dIFnii(__class, __cb) \
double __cb(Ihandle* ih, int i1, int i2); \
static double CB_##__cb(Ihandle* ih, int i1, int i2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2); \
}
#define IUP_CLASS_DECLARECALLBACK_sIFni(__class, __cb) \
char* __cb(Ihandle* ih, int i1); \
static char* CB_##__cb(Ihandle* ih, int i1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1); \
}
#define IUP_CLASS_DECLARECALLBACK_sIFnii(__class, __cb) \
char* __cb(Ihandle* ih, int i1, int i2); \
static char* CB_##__cb(Ihandle* ih, int i1, int i2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2); \
}
#define IUP_CLASS_DECLARECALLBACK_sIFniis(__class, __cb) \
char* __cb(Ihandle* ih, int i1, int i2, char* s); \
static char* CB_##__cb(Ihandle* ih, int i1, int i2, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnff(__class, __cb) \
int __cb(Ihandle* ih, float f1, float f2); \
static int CB_##__cb(Ihandle* ih, float f1, float f2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, f1, f2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniff(__class, __cb) \
int __cb(Ihandle* ih, int i1, float f1, float f2); \
static int CB_##__cb(Ihandle* ih, int i1, float f1, float f2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, f1, f2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnfiis(__class, __cb) \
int __cb(Ihandle* ih, float f1, int i1, int i2, char* s); \
static int CB_##__cb(Ihandle* ih, float f1, int i1, int i2, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, f1, i1, i2, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnd(__class, __cb) \
int __cb(Ihandle* ih, double d1); \
static int CB_##__cb(Ihandle* ih, double d1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, d1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFndds(__class, __cb) \
int __cb(Ihandle* ih, double d1, double d2, char* s); \
static int CB_##__cb(Ihandle* ih, double d1, double d2, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, d1, d2, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniid(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, double d1); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, double d1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, d1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniidd(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, double d1, double d2); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, double d1, double d2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, d1, d2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiddi(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, double d1, double d2, int i3); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, double d1, double d2, int i3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, d1, d2, i3); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniidds(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, double d1, double d2, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, double d1, double d2, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, d1, d2, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiIII(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int *I1, int *I2, int *I3); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int *I1, int *I2, int *I3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, I1, I2, I3); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniIIII(__class, __cb) \
int __cb(Ihandle* ih, int i1, int *I1, int *I2, int *I3, int *I4); \
static int CB_##__cb(Ihandle* ih, int i1, int *I1, int *I2, int *I3, int *I4) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, I1, I2, I3, I4); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnIi(__class, __cb) \
int __cb(Ihandle* ih, int *I1, int i1); \
static int CB_##__cb(Ihandle* ih, int *I1, int i1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, I1, i1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnccc(__class, __cb) \
int __cb(Ihandle* ih, char c1, char c2, char c3); \
static int CB_##__cb(Ihandle* ih, char c1, char c2, char c3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, c1, c2, c3); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnis(__class, __cb) \
int __cb(Ihandle* ih, int i1, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniis(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiis(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiis(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiiis(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, i5, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniiiiiis(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6, char* s); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, int i3, int i4, int i5, int i6, char* s) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, i3, i4, i5, i6, s); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnss(__class, __cb) \
int __cb(Ihandle* ih, char* s1, char* s2); \
static int CB_##__cb(Ihandle* ih, char* s1, char* s2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, s2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFns(__class, __cb) \
int __cb(Ihandle* ih, char* s1); \
static int CB_##__cb(Ihandle* ih, char* s1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnsi(__class, __cb) \
int __cb(Ihandle* ih, char* s1, int i1); \
static int CB_##__cb(Ihandle* ih, char* s1, int i1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, i1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnsii(__class, __cb) \
int __cb(Ihandle* ih, char* s1, int i1, int i2); \
static int CB_##__cb(Ihandle* ih, char* s1, int i1, int i2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, i1, i2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnsiii(__class, __cb) \
int __cb(Ihandle* ih, char* s1, int i1, int i2, int i3); \
static int CB_##__cb(Ihandle* ih, char* s1, int i1, int i2, int i3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, i1, i2, i3); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnnii(__class, __cb) \
int __cb(Ihandle* ih, Ihandle* ih1, int i1, int i2); \
static int CB_##__cb(Ihandle* ih, Ihandle* ih1, int i1, int i2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, ih1, i1, i2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnnn(__class, __cb) \
int __cb(Ihandle* ih, Ihandle* ih1, Ihandle *ih2); \
static int CB_##__cb(Ihandle* ih, Ihandle* ih1, Ihandle *ih2) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, ih1, ih2); \
}
#define IUP_CLASS_DECLARECALLBACK_IFniinsii(__class, __cb) \
int __cb(Ihandle* ih, int i1, int i2, Ihandle* ih1, char* s, int i3, int i4); \
static int CB_##__cb(Ihandle* ih, int i1, int i2, Ihandle* ih1, char* s, int i3, int i4) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, i1, i2, ih1, s, i3, i4); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnsVi(__class, __cb) \
int __cb(Ihandle* ih, char* s1, void* V1, int i1); \
static int CB_##__cb(Ihandle* ih, char* s1, void* V1, int i1) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, V1, i1); \
}
#define IUP_CLASS_DECLARECALLBACK_IFnsViii(__class, __cb) \
int __cb(Ihandle* ih, char* s1, void* V1, int i1, int i2, int i3); \
static int CB_##__cb(Ihandle* ih, char* s1, void* V1, int i1, int i2, int i3) \
{ \
__class* obj = IUP_CLASS_GET_OBJECT(ih, __class); \
return obj->__cb(ih, s1, V1, i1, i2, i3); \
}
/* #define IUP_CLASS_DEBUG */
#ifdef IUP_CLASS_DEBUG
class IUP_CLASS_DUMMY
{
// Used to check for errors in the definitions
IUP_CLASS_DECLARECALLBACK_IFn(IUP_CLASS_DUMMY, IFn);
IUP_CLASS_DECLARECALLBACK_IFni(IUP_CLASS_DUMMY, IFni);
IUP_CLASS_DECLARECALLBACK_IFnii(IUP_CLASS_DUMMY, IFnii);
IUP_CLASS_DECLARECALLBACK_IFniii(IUP_CLASS_DUMMY, IFniii);
IUP_CLASS_DECLARECALLBACK_IFniiii(IUP_CLASS_DUMMY, IFniiii);
IUP_CLASS_DECLARECALLBACK_IFniiiii(IUP_CLASS_DUMMY, IFniiiii);
IUP_CLASS_DECLARECALLBACK_IFniiiiii(IUP_CLASS_DUMMY, IFniiiiii);
IUP_CLASS_DECLARECALLBACK_IFniiiiiiC(IUP_CLASS_DUMMY, IFniiiiiiC);
IUP_CLASS_DECLARECALLBACK_IFnC(IUP_CLASS_DUMMY, IFnC);
IUP_CLASS_DECLARECALLBACK_dIFnii(IUP_CLASS_DUMMY, dIFnii);
IUP_CLASS_DECLARECALLBACK_sIFni(IUP_CLASS_DUMMY, sIFni);
IUP_CLASS_DECLARECALLBACK_sIFnii(IUP_CLASS_DUMMY, sIFnii);
IUP_CLASS_DECLARECALLBACK_sIFniis(IUP_CLASS_DUMMY, sIFniis);
IUP_CLASS_DECLARECALLBACK_IFnff(IUP_CLASS_DUMMY, IFnff);
IUP_CLASS_DECLARECALLBACK_IFniff(IUP_CLASS_DUMMY, IFniff);
IUP_CLASS_DECLARECALLBACK_IFnfiis(IUP_CLASS_DUMMY, IFnfiis);
IUP_CLASS_DECLARECALLBACK_IFnd(IUP_CLASS_DUMMY, IFnd);
IUP_CLASS_DECLARECALLBACK_IFndds(IUP_CLASS_DUMMY, IFndds);
IUP_CLASS_DECLARECALLBACK_IFniid(IUP_CLASS_DUMMY, IFniid);
IUP_CLASS_DECLARECALLBACK_IFniidd(IUP_CLASS_DUMMY, IFniidd);
IUP_CLASS_DECLARECALLBACK_IFniiddi(IUP_CLASS_DUMMY, IFniiddi);
IUP_CLASS_DECLARECALLBACK_IFniidds(IUP_CLASS_DUMMY, IFniidds);
IUP_CLASS_DECLARECALLBACK_IFniiIII(IUP_CLASS_DUMMY, IFniiIII);
IUP_CLASS_DECLARECALLBACK_IFniIIII(IUP_CLASS_DUMMY, IFniIIII);
IUP_CLASS_DECLARECALLBACK_IFnIi(IUP_CLASS_DUMMY, IFnIi);
IUP_CLASS_DECLARECALLBACK_IFnccc(IUP_CLASS_DUMMY, IFnccc);
IUP_CLASS_DECLARECALLBACK_IFnis(IUP_CLASS_DUMMY, IFnis);
IUP_CLASS_DECLARECALLBACK_IFniis(IUP_CLASS_DUMMY, IFniis);
IUP_CLASS_DECLARECALLBACK_IFniiis(IUP_CLASS_DUMMY, IFniiis);
IUP_CLASS_DECLARECALLBACK_IFniiiis(IUP_CLASS_DUMMY, IFniiiis);
IUP_CLASS_DECLARECALLBACK_IFniiiiis(IUP_CLASS_DUMMY, IFniiiiis);
IUP_CLASS_DECLARECALLBACK_IFniiiiiis(IUP_CLASS_DUMMY, IFniiiiiis);
IUP_CLASS_DECLARECALLBACK_IFnss(IUP_CLASS_DUMMY, IFnss);
IUP_CLASS_DECLARECALLBACK_IFns(IUP_CLASS_DUMMY, IFns);
IUP_CLASS_DECLARECALLBACK_IFnsi(IUP_CLASS_DUMMY, IFnsi);
IUP_CLASS_DECLARECALLBACK_IFnsii(IUP_CLASS_DUMMY, IFnsii);
IUP_CLASS_DECLARECALLBACK_IFnsiii(IUP_CLASS_DUMMY, IFnsiii);
IUP_CLASS_DECLARECALLBACK_IFnnii(IUP_CLASS_DUMMY, IFnnii);
IUP_CLASS_DECLARECALLBACK_IFnnn(IUP_CLASS_DUMMY, IFnnn);
IUP_CLASS_DECLARECALLBACK_IFniinsii(IUP_CLASS_DUMMY, IFniinsii);
IUP_CLASS_DECLARECALLBACK_IFnsVi(IUP_CLASS_DUMMY, IFnsVi);
IUP_CLASS_DECLARECALLBACK_IFnsViii(IUP_CLASS_DUMMY, IFnsViii);
};
class SampleClass
{
int sample_count;
public:
SampleClass()
{
sample_count = 0;
Ihandle* button1 = IupButton("Inc", NULL);
Ihandle* button2 = IupButton("Dec", NULL);
Ihandle* dialog = IupDialog(IupHbox(button1, button2, NULL));
// 1) Register "this" object as a callback receiver (need only once)
IUP_CLASS_INITCALLBACK(dialog, SampleClass);
// 2) Associate the callback with the button
IUP_CLASS_SETCALLBACK(button1, "ACTION", ButtonAction1);
IUP_CLASS_SETCALLBACK(button2, "ACTION", ButtonAction2);
IupShow(dialog);
};
protected:
// 3) Declare the callback as a member function
IUP_CLASS_DECLARECALLBACK_IFn(SampleClass, ButtonAction1);
IUP_CLASS_DECLARECALLBACK_IFn(SampleClass, ButtonAction2);
};
// 4) Define the callback as a member function
int SampleClass::ButtonAction1(Ihandle*)
{
sample_count++;
return IUP_DEFAULT;
}
int SampleClass::ButtonAction2(Ihandle*)
{
sample_count--;
return IUP_DEFAULT;
}
#endif // IUP_CLASS_DEBUG
#endif
@@ -1,60 +0,0 @@
/** \file
* \brief Configuration file Utilities
*
* See Copyright Notice in "iup.h"
*/
#ifndef IUP_CONFIG_H
#define IUP_CONFIG_H
#if defined(__cplusplus)
extern "C" {
#endif
IUP_API Ihandle* IupConfig(void);
IUP_API int IupConfigLoad(Ihandle* ih);
IUP_API int IupConfigSave(Ihandle* ih);
/****************************************************************/
IUP_API void IupConfigSetVariableStr(Ihandle* ih, const char* group, const char* key, const char* value);
IUP_API void IupConfigSetVariableStrId(Ihandle* ih, const char* group, const char* key, int id, const char* value);
IUP_API void IupConfigSetVariableInt(Ihandle* ih, const char* group, const char* key, int value);
IUP_API void IupConfigSetVariableIntId(Ihandle* ih, const char* group, const char* key, int id, int value);
IUP_API void IupConfigSetVariableDouble(Ihandle* ih, const char* group, const char* key, double value);
IUP_API void IupConfigSetVariableDoubleId(Ihandle* ih, const char* group, const char* key, int id, double value);
IUP_API const char* IupConfigGetVariableStr(Ihandle* ih, const char* group, const char* key);
IUP_API const char* IupConfigGetVariableStrId(Ihandle* ih, const char* group, const char* key, int id);
IUP_API int IupConfigGetVariableInt(Ihandle* ih, const char* group, const char* key);
IUP_API int IupConfigGetVariableIntId(Ihandle* ih, const char* group, const char* key, int id);
IUP_API double IupConfigGetVariableDouble(Ihandle* ih, const char* group, const char* key);
IUP_API double IupConfigGetVariableDoubleId(Ihandle* ih, const char* group, const char* key, int id);
IUP_API const char* IupConfigGetVariableStrDef(Ihandle* ih, const char* group, const char* key, const char* def);
IUP_API const char* IupConfigGetVariableStrIdDef(Ihandle* ih, const char* group, const char* key, int id, const char* def);
IUP_API int IupConfigGetVariableIntDef(Ihandle* ih, const char* group, const char* key, int def);
IUP_API int IupConfigGetVariableIntIdDef(Ihandle* ih, const char* group, const char* key, int id, int def);
IUP_API double IupConfigGetVariableDoubleDef(Ihandle* ih, const char* group, const char* key, double def);
IUP_API double IupConfigGetVariableDoubleIdDef(Ihandle* ih, const char* group, const char* key, int id, double def);
IUP_API void IupConfigCopy(Ihandle* ih1, Ihandle* ih2, const char* exclude_prefix);
/****************************************************************/
IUP_API void IupConfigSetListVariable(Ihandle* ih, const char *group, const char* key, const char* value, int add);
IUP_API void IupConfigRecentInit(Ihandle* ih, Ihandle* menu, Icallback recent_cb, int max_recent);
IUP_API void IupConfigRecentUpdate(Ihandle* ih, const char* filename);
IUP_API void IupConfigDialogShow(Ihandle* ih, Ihandle* dialog, const char* name);
IUP_API void IupConfigDialogClosed(Ihandle* ih, Ihandle* dialog, const char* name);
#if defined(__cplusplus)
}
#endif
#endif
@@ -1,83 +0,0 @@
#ifndef __IUP_EXPORT_H
#define __IUP_EXPORT_H
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
/** @cond DOXYGEN_SHOULD_IGNORE_THIS */
/* Mark the official functions */
#ifndef IUP_API
#ifdef IUP_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUP_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUP_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUP_API __attribute__ ((visibility("default")))
#else
#define IUP_API
#endif
#else
#define IUP_API
#endif /* IUP_BUILD_LIBRARY */
#endif /* IUP_API */
/* Mark the internal SDK functions (some not official but need to be exported) */
#ifndef IUP_SDK_API
#ifdef IUP_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUP_SDK_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUP_SDK_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUP_SDK_API __attribute__ ((visibility("default")))
#else
#define IUP_SDK_API
#endif
#else
#define IUP_SDK_API
#endif /* IUP_BUILD_LIBRARY */
#endif /* IUP_SDK_API */
/* Mark the driver functions that need to be exported */
#ifndef IUP_DRV_API
#ifdef IUP_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUP_DRV_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUP_DRV_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUP_DRV_API __attribute__ ((visibility("default")))
#else
#define IUP_DRV_API
#endif
#else
#define IUP_DRV_API
#endif /* IUP_BUILD_LIBRARY */
#endif /* IUP_DRV_API */
/* Mark the IupImageLib function, it does not have a header of its own */
#ifndef IUPIMGLIB_API
#ifdef IUPIMGLIB_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUPIMGLIB_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUPIMGLIB_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUPIMGLIB_API __attribute__ ((visibility("default")))
#else
#define IUPIMGLIB_API
#endif
#else
#define IUPIMGLIB_API
#endif /* IUPIMGLIB_BUILD_LIBRARY */
#endif /* IUPIMGLIB_API */
/** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* __IUP_EXPORT_H */
@@ -1,70 +0,0 @@
/** \file
* \brief Plot component for Iup.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUP_MGLPLOT_H
#define __IUP_MGLPLOT_H
#ifdef __cplusplus
extern "C" {
#endif
/* Initialize IupMglPlot widget class */
void IupMglPlotOpen(void);
/* Create an IupMglPlot widget instance */
Ihandle* IupMglPlot(void);
/***********************************************/
/* Additional API */
/* Linear Data Only */
void IupMglPlotBegin(Ihandle *ih, int dim);
void IupMglPlotAdd1D(Ihandle *ih, const char* name, double y);
void IupMglPlotAdd2D(Ihandle *ih, double x, double y);
void IupMglPlotAdd3D(Ihandle *ih, double x, double y, double z);
int IupMglPlotEnd(Ihandle *ih);
/* Linear (dim=1,2,3), Planar (dim=1), Volumetric (dim=1) */
int IupMglPlotNewDataSet(Ihandle *ih, int dim);
/* Linear Data Only */
void IupMglPlotInsert1D(Ihandle* ih, int ds_index, int sample_index, const char** names, const double* y, int count);
void IupMglPlotInsert2D(Ihandle* ih, int ds_index, int sample_index, const double* x, const double* y, int count);
void IupMglPlotInsert3D(Ihandle* ih, int ds_index, int sample_index, const double* x, const double* y, const double* z, int count);
/* Linear Data Only */
void IupMglPlotSet1D(Ihandle* ih, int ds_index, const char** names, const double* y, int count);
void IupMglPlotSet2D(Ihandle* ih, int ds_index, const double* x, const double* y, int count);
void IupMglPlotSet3D(Ihandle* ih, int ds_index, const double* x, const double* y, const double* z, int count);
void IupMglPlotSetFormula(Ihandle* ih, int ds_index, const char* formulaX, const char* formulaY, const char* formulaZ, int count);
/* Linear (dim=1), Planar (dim=1), Volumetric (dim=1) */
void IupMglPlotSetData(Ihandle* ih, int ds_index, const double* data, int count_x, int count_y, int count_z);
void IupMglPlotLoadData(Ihandle* ih, int ds_index, const char* filename, int count_x, int count_y, int count_z);
void IupMglPlotSetFromFormula(Ihandle* ih, int ds_index, const char* formula, int count_x, int count_y, int count_z);
/* Only inside callbacks */
void IupMglPlotTransform(Ihandle* ih, double x, double y, double z, int *ix, int *iy);
void IupMglPlotTransformTo(Ihandle* ih, int ix, int iy, double *x, double *y, double *z);
/* Only inside callbacks */
void IupMglPlotDrawMark(Ihandle* ih, double x, double y, double z);
void IupMglPlotDrawLine(Ihandle* ih, double x1, double y1, double z1, double x2, double y2, double z2);
void IupMglPlotDrawText(Ihandle* ih, const char* text, double x, double y, double z);
void IupMglPlotPaintTo(Ihandle *ih, const char* format, int w, int h, double dpi, void *data);
/***********************************************/
/* Utility label for showing TeX labels */
Ihandle* IupMglLabel(const char* title);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,70 +0,0 @@
/** \file
* \brief Plot component for Iup.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUP_PLOT_H
#define __IUP_PLOT_H
#ifdef __cplusplus
extern "C" {
#endif
/* Initialize IupPlot widget class */
void IupPlotOpen(void);
/* Create an IupPlot widget instance */
Ihandle* IupPlot(void);
/***********************************************/
/* Additional API */
void IupPlotBegin(Ihandle *ih, int strXdata);
void IupPlotAdd(Ihandle *ih, double x, double y);
void IupPlotAddStr(Ihandle *ih, const char* x, double y);
void IupPlotAddSegment(Ihandle *ih, double x, double y);
int IupPlotEnd(Ihandle *ih);
int IupPlotLoadData(Ihandle* ih, const char* filename, int strXdata);
/* available only when linking with "iupluaplot" */
int IupPlotSetFormula(Ihandle* ih, int sample_count, const char* formula, const char* init);
void IupPlotInsert(Ihandle *ih, int ds_index, int sample_index, double x, double y);
void IupPlotInsertStr(Ihandle *ih, int ds_index, int sample_index, const char* x, double y);
void IupPlotInsertSegment(Ihandle *ih, int ds_index, int sample_index, double x, double y);
void IupPlotInsertStrSamples(Ihandle* ih, int ds_index, int sample_index, const char** x, double* y, int count);
void IupPlotInsertSamples(Ihandle* ih, int ds_index, int sample_index, double *x, double *y, int count);
void IupPlotAddSamples(Ihandle* ih, int ds_index, double *x, double *y, int count);
void IupPlotAddStrSamples(Ihandle* ih, int ds_index, const char** x, double* y, int count);
void IupPlotGetSample(Ihandle* ih, int ds_index, int sample_index, double *x, double *y);
void IupPlotGetSampleStr(Ihandle* ih, int ds_index, int sample_index, const char* *x, double *y);
int IupPlotGetSampleSelection(Ihandle* ih, int ds_index, int sample_index);
double IupPlotGetSampleExtra(Ihandle* ih, int ds_index, int sample_index);
void IupPlotSetSample(Ihandle* ih, int ds_index, int sample_index, double x, double y);
void IupPlotSetSampleStr(Ihandle* ih, int ds_index, int sample_index, const char* x, double y);
void IupPlotSetSampleSelection(Ihandle* ih, int ds_index, int sample_index, int selected);
void IupPlotSetSampleExtra(Ihandle* ih, int ds_index, int sample_index, double extra);
void IupPlotTransform(Ihandle* ih, double x, double y, double *cnv_x, double *cnv_y);
void IupPlotTransformTo(Ihandle* ih, double cnv_x, double cnv_y, double *x, double *y);
int IupPlotFindSample(Ihandle* ih, double cnv_x, double cnv_y, int *ds_index, int *sample_index);
int IupPlotFindSegment(Ihandle* ih, double cnv_x, double cnv_y, int *ds_index, int *sample_index1, int *sample_index2);
struct _cdCanvas;
void IupPlotPaintTo(Ihandle *ih, struct _cdCanvas* cnv);
/***********************************************/
#ifdef __cplusplus
}
#endif
#endif
File diff suppressed because it is too large Load Diff
@@ -1,29 +0,0 @@
/** \file
* \brief Scintilla control.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUP_SCINTILLA_H
#define __IUP_SCINTILLA_H
#ifdef __cplusplus
extern "C" {
#endif
void IupScintillaOpen(void);
Ihandle *IupScintilla(void);
Ihandle *IupScintillaDlg(void);
#ifdef SCINTILLA_H
sptr_t IupScintillaSendMessage(Ihandle* ih, unsigned int iMessage, uptr_t wParam, sptr_t lParam);
#endif
#ifdef __cplusplus
}
#endif
#endif
@@ -1,52 +0,0 @@
/** \file
* \brief IUP API with explicit variable argument parameters.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUP_VARG_H
#define __IUP_VARG_H
#include <stdarg.h>
#include "iup.h"
#ifdef __cplusplus
extern "C" {
#endif
IUP_API void IupLogV(const char* type, const char* format, va_list arglist);
IUP_API Ihandle* IupSetAttV(const char* handle_name, Ihandle* ih, const char* name, va_list arglist);
IUP_API void IupSetStrfV(Ihandle* ih, const char* name, const char* format, va_list arglist);
IUP_API void IupSetStrfIdV(Ihandle* ih, const char* name, int id, const char* format, va_list arglist);
IUP_API void IupSetStrfId2V(Ihandle* ih, const char* name, int lin, int col, const char* format, va_list arglist);
IUP_API Ihandle* IupSetCallbacksV(Ihandle* ih, const char *name, Icallback func, va_list arglist);
IUP_API Ihandle* IupCreateV(const char *classname, void* first, va_list arglist);
IUP_API Ihandle* IupVboxV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupZboxV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupHboxV(Ihandle* child,va_list arglist);
IUP_API Ihandle* IupNormalizerV(Ihandle* ih_first, va_list arglist);
IUP_API Ihandle* IupCboxV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupGridBoxV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupMultiBoxV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupMenuV(Ihandle* child,va_list arglist);
IUP_API Ihandle* IupTabsV(Ihandle* child, va_list arglist);
IUP_API Ihandle* IupFlatTabsV(Ihandle* child, va_list arglist);
IUP_API void IupMessageV(const char *title, const char *format, va_list arglist);
IUP_API Ihandle* IupParamBoxV(Ihandle* param, va_list arglist);
IUP_API int IupGetParamV(const char* title, Iparamcb action, void* user_data, const char* format, va_list arglist);
/* must include iupglcontrols before this file to enable this declaration */
#ifdef __IUPGLCONTROLS_H
#ifndef IUP_GLCONTROLS_API
#define IUP_GLCONTROLS_API
#endif
IUP_GLCONTROLS_API Ihandle* IupGLCanvasBoxV(Ihandle* child, va_list arglist);
#endif
#endif
@@ -1,79 +0,0 @@
/** \file
* \brief Contains all function pointer typedefs.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPCBS_H
#define __IUPCBS_H
struct _cdCanvas;
typedef int (*IFidle)(void); /* idle */
typedef void (*IFentry)(void); /* entry */
typedef void (*IFi)(int); /* globalentermodal_cb, globalleavemodal_cb, */
typedef void (*IFs)(char*); /* openurl_cb */
typedef void (*IFii)(int, int); /* globalkeypress_cb */
typedef void (*IFiis)(int, int, char*); /* globalmotion_cb, openfiles_cb */
typedef void (*IFiiiis)(int, int, int, int, char*); /* globalbutton_cb */
typedef void (*IFfiis)(float,int,int,char*); /* globalwheel_cb */
typedef void (*IFvs)(void*, char*); /* handleadd_cb, handleremove_cb, imagecreate_cb, imagedestroy_cb */
typedef int (*IFn)(Ihandle*); /* default definition, same as Icallback */
typedef int (*IFni)(Ihandle*, int); /* k_any, show_cb, toggle_action, spin_cb, branchopen_cb, branchclose_cb, executeleaf_cb, showrename_cb, rightclick_cb, extended_cb, height_cb, width_cb */
typedef int (*IFnii)(Ihandle*, int, int); /* resize_cb, caret_cb, matrix_mousemove_cb, enteritem_cb, leaveitem_cb, scrolltop_cb, dropcheck_cb, selection_cb, select_cb, switch_cb, scrolling_cb, vspan_cb, hspan_cb */
typedef int (*IFniii)(Ihandle*, int, int, int); /* trayclick_cb, edition_cb */
typedef int (*IFniiii)(Ihandle*, int, int, int, int); /* dragdrop_cb */
typedef int (*IFniiiiiiC)(Ihandle*, int, int, int, int, int, int, struct _cdCanvas*); /* draw_cb */
typedef int (*IFniiiiii)(Ihandle*, int, int, int, int, int, int); /* OLD draw_cb */
typedef int (*IFnsidv)(Ihandle*, char*, int, double, void*); /* postmessage_cb */
typedef int (*IFnff)(Ihandle*, float, float); /* canvas_action */
typedef int (*IFniff)(Ihandle*,int,float,float); /* scroll_cb */
typedef int (*IFnfiis)(Ihandle*,float,int,int,char*); /* wheel_cb */
typedef int (*IFnsVi)(Ihandle*, char*, void*, int); /* dragdata_cb */
typedef int (*IFnsViii)(Ihandle*, char*, void*, int, int, int); /* dropdata_cb */
typedef int (*IFnsiii)(Ihandle*, char*, int, int, int); /* dropfiles_cb */
typedef int (*IFnssi)(Ihandle*, char*, char*, int); /* dragfilecreatename_cb */
typedef int (*IFnnii)(Ihandle*, Ihandle*, int, int); /* drop_cb */
typedef int (*IFnn)(Ihandle*, Ihandle*); /* savemarkers_cb, restoremarkers_cb */
typedef int (*IFnnn)(Ihandle*, Ihandle*, Ihandle*); /* tabchange_cb */
typedef int (*IFnss)(Ihandle*, char *, char *); /* file_cb */
typedef int (*IFns)(Ihandle*, char *); /* multiselect_cb */
typedef int (*IFnsi)(Ihandle*, char *, int); /* copydata_cb */
typedef int (*IFnis)(Ihandle*, int, char *); /* text_action, multiline_action, edit_cb, rename_cb */
typedef int (*IFnsii)(Ihandle*, char*, int, int); /* list_action */
typedef int (*IFniis)(Ihandle*, int, int, char*); /* motion_cb, click_cb, value_edit_cb */
typedef int (*IFniiis)(Ihandle*, int, int, int, char*); /* touch_cb, dblclick_cb */
typedef int (*IFniiiis)(Ihandle*, int, int, int, int, char*); /* button_cb, matrix_action, mousemotion_cb */
typedef int (*IFniiiiiis)(Ihandle*, int, int, int, int, int, int, char*); /* mouseclick_cb */
typedef int (*IFnIi)(Ihandle*, int*, int); /* multiselection_cb, multiunselection_cb */
typedef int (*IFnd)(Ihandle*, double); /* mousemove_cb, button_press_cb, button_release_cb */
typedef int (*IFniiIII)(Ihandle*, int, int, int*, int*, int*); /* fgcolor_cb, bgcolor_cb */
typedef int (*IFniinsii)(Ihandle*, int, int, Ihandle*, char*, int, int); /* dropselect_cb */
typedef int (*IFnccc)(Ihandle*, unsigned char, unsigned char, unsigned char); /* drag_cb, change_cb */
typedef int (*IFniIIII)(Ihandle*, int, int*, int*, int*, int*); /* multitouch_cb */
typedef int (*IFnC)(Ihandle*, struct _cdCanvas*); /* postdraw_cb, predraw_cb */
typedef int (*IFniidd)(Ihandle*, int, int, double, double); /* delete_cb */
typedef int (*IFniiddi)(Ihandle*, int, int, double, double, int); /* select_cb */
typedef int (*IFniiddiddi)(Ihandle*, int, int, double, double, int, double, double, int); /* clicksegment_cb */
typedef int (*IFniidds)(Ihandle*, int, int, double, double, char*); /* plotbutton_cb */
typedef int (*IFndds)(Ihandle*, double, double, char*); /* plotmotion_cb */
typedef int (*IFnssds)(Ihandle*, char*, char*, double, char*); /* plottickformat_cb */
typedef int (*IFnni)(Ihandle*, Ihandle*, int);
typedef char* (*sIFnii)(Ihandle*, int, int); /* value_cb, font_cb */
typedef char* (*sIFni)(Ihandle*, int); /* cell_cb */
typedef char* (*sIFniis)(Ihandle*, int, int, char*); /* translatevalue_cb */
typedef double (*dIFnii)(Ihandle*, int, int); /* numericgetvalue_cb */
typedef int (*IFniid)(Ihandle*, int, int, double); /* numericsetvalue_cb */
typedef void (*IFniiv)(Ihandle*, int, int, void*); /* android_onactivityresult_cb */
#endif
@@ -1,31 +0,0 @@
/** \file
* \brief initializes dial, gauge, colorbrowser, colorbar controls.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPCONTROLS_H
#define __IUPCONTROLS_H
#ifdef __cplusplus
extern "C" {
#endif
int IupControlsOpen(void);
Ihandle* IupCells(void);
Ihandle* IupMatrix(const char *action);
Ihandle* IupMatrixList(void);
Ihandle* IupMatrixEx(void);
/* available only when linking with "iupluamatrix" */
void IupMatrixSetFormula(Ihandle* ih, int col, const char* formula, const char* init);
void IupMatrixSetDynamic(Ihandle* ih, const char* init);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,683 +0,0 @@
/** \file
* \brief Callbacks, Attributes and Attribute Values definitions.
* Avoid using these definitions. Use the strings instead.
*
* See Copyright Notice in iup.h
*/
#ifndef __IUPDEF_H
#define __IUPDEF_H
/* ATTENTION: these are OLD definitions and they are NOT updated anymore since IUP 3.0 */
/* Avoid using them, directly use the strings instead. */
/* Define __IUPDEF_H to avoid the inclusion of this header */
#define IUP_RUN "RUN"
#define IUP_ENGLISH "ENGLISH"
#define IUP_PORTUGUESE "PORTUGUESE"
#define IUP_SBH "SBH"
#define IUP_SBV "SBV"
/************************************************************************/
/* Callbacks */
/************************************************************************/
#define IUP_IDLE_ACTION "IDLE_ACTION"
#define IUP_ACTION "ACTION"
#define IUP_GETFOCUS_CB "GETFOCUS_CB"
#define IUP_KILLFOCUS_CB "KILLFOCUS_CB"
#define IUP_K_ANY "K_ANY"
#define IUP_KEYPRESS_CB "KEYPRESS_CB"
#define IUP_HELP_CB "HELP_CB"
#define IUP_SCROLL_CB "SCROLL_CB"
#define IUP_RESIZE_CB "RESIZE_CB"
#define IUP_MOTION_CB "MOTION_CB"
#define IUP_BUTTON_CB "BUTTON_CB"
#define IUP_ENTERWINDOW_CB "ENTERWINDOW_CB"
#define IUP_LEAVEWINDOW_CB "LEAVEWINDOW_CB"
#define IUP_WHEEL_CB "WHEEL_CB"
#define IUP_MASK_CB "MASK_CB"
#define IUP_OPEN_CB "OPEN_CB"
#define IUP_HIGHLIGHT_CB "HIGHLIGHT_CB"
#define IUP_MENUCLOSE_CB "MENUCLOSE_CB"
#define IUP_MAP_CB "MAP_CB"
#define IUP_CLOSE_CB "CLOSE_CB"
#define IUP_SHOW_CB "SHOW_CB"
#define IUP_DROPFILES_CB "DROPFILES_CB"
#define IUP_WOM_CB "WOM_CB"
/************************************************************************/
/* Attributes */
/************************************************************************/
#define IUP_DIRECTION "DIRECTION"
#define IUP_ACTIVE "ACTIVE"
#define IUP_BGCOLOR "BGCOLOR"
#define IUP_FRAMECOLOR "FRAMECOLOR"
#define IUP_FGCOLOR "FGCOLOR"
#define IUP_COLOR "COLOR"
#define IUP_WID "WID"
#define IUP_SIZE "SIZE"
#define IUP_RASTERSIZE "RASTERSIZE"
#define IUP_TITLE "TITLE"
#define IUP_VALUE "VALUE"
#define IUP_VISIBLE "VISIBLE"
#define IUP_FONT "FONT"
#define IUP_TIP "TIP"
#define IUP_EXPAND "EXPAND"
#define IUP_SEPARATOR "SEPARATOR"
#define IUP_HOTSPOT "HOTSPOT"
#define IUP_HEIGHT "HEIGHT"
#define IUP_WIDTH "WIDTH"
#define IUP_KEY "KEY"
#define IUP_MULTIPLE "MULTIPLE"
#define IUP_DROPDOWN "DROPDOWN"
#define IUP_VISIBLE_ITEMS "VISIBLE_ITEMS"
#define IUP_MARGIN "MARGIN"
#define IUP_GAP "GAP"
#define IUP_ALIGNMENT "ALIGNMENT"
#define IUP_IMAGE "IMAGE"
#define IUP_IMINACTIVE "IMINACTIVE"
#define IUP_IMPRESS "IMPRESS"
#define IUP_WIN_SAVEBITS "WIN_SAVEBITS"
#define IUP_NC "NC"
#define IUP_MASK "MASK"
#define IUP_APPEND "APPEND"
#define IUP_BORDER "BORDER"
#define IUP_CARET "CARET"
#define IUP_SELECTION "SELECTION"
#define IUP_SELECTEDTEXT "SELECTEDTEXT"
#define IUP_INSERT "INSERT"
#define IUP_CONID "CONID"
#define IUP_CURSOR "CURSOR"
#define IUP_ICON "ICON"
#define IUP_MENUBOX "MENUBOX"
#define IUP_MINBOX "MINBOX"
#define IUP_MAXBOX "MAXBOX"
#define IUP_RESIZE "RESIZE"
#define IUP_MENU "MENU"
#define IUP_STARTFOCUS "STARTFOCUS"
#define IUP_PARENTDIALOG "PARENTDIALOG"
#define IUP_SHRINK "SHRINK"
#define IUP_DEFAULTENTER "DEFAULTENTER"
#define IUP_DEFAULTESC "DEFAULTESC"
#define IUP_X "X"
#define IUP_Y "Y"
#define IUP_TOOLBOX "TOOLBOX"
#define IUP_CONTROL "CONTROL"
#define IUP_READONLY "READONLY"
#define IUP_SCROLLBAR "SCROLLBAR"
#define IUP_POSY "POSY"
#define IUP_POSX "POSX"
#define IUP_DX "DX"
#define IUP_DY "DY"
#define IUP_XMAX "XMAX"
#define IUP_XMIN "XMIN"
#define IUP_YMAX "YMAX"
#define IUP_YMIN "YMIN"
#define IUP_RED "255 0 0"
#define IUP_GREEN "0 255 0"
#define IUP_BLUE "0 0 255"
#define IUP_MIN "MIN"
#define IUP_MAX "MAX"
#define IUP_TIME "TIME"
#define IUP_DRAG "DRAG"
#define IUP_DROP "DROP"
#define IUP_REPAINT "REPAINT"
#define IUP_TOPMOST "TOPMOST"
#define IUP_CLIPCHILDREN "CLIPCHILDREN"
#define IUP_DIALOGTYPE "DIALOGTYPE"
#define IUP_FILE "FILE"
#define IUP_MULTIPLEFILES "MULTIPLEFILES"
#define IUP_FILTER "FILTER"
#define IUP_FILTERUSED "FILTERUSED"
#define IUP_FILTERINFO "FILTERINFO"
#define IUP_EXTFILTER "EXTFILTER"
#define IUP_DIRECTORY "DIRECTORY"
#define IUP_ALLOWNEW "ALLOWNEW"
#define IUP_NOOVERWRITEPROMPT "NOOVERWRITEPROMPT"
#define IUP_NOCHANGEDIR "NOCHANGEDIR"
#define IUP_FILEEXIST "FILEEXIST"
#define IUP_STATUS "STATUS"
#define IUP_LOCKLOOP "LOCKLOOP"
#define IUP_SYSTEM "SYSTEM"
#define IUP_DRIVER "DRIVER"
#define IUP_SCREENSIZE "SCREENSIZE"
#define IUP_SYSTEMLANGUAGE "SYSTEMLANGUAGE"
#define IUP_COMPUTERNAME "COMPUTERNAME"
#define IUP_USERNAME "USERNAME"
#define IUP_OPEN "OPEN"
#define IUP_SAVE "SAVE"
#define IUP_DIR "DIR"
#define IUP_HORIZONTAL "HORIZONTAL"
#define IUP_VERTICAL "VERTICAL"
/************************************************************************/
/* Attribute Values */
/************************************************************************/
#define IUP_YES "YES"
#define IUP_NO "NO"
#define IUP_ON "ON"
#define IUP_OFF "OFF"
#define IUP_ACENTER "ACENTER"
#define IUP_ALEFT "ALEFT"
#define IUP_ARIGHT "ARIGHT"
#define IUP_ATOP "ATOP"
#define IUP_ABOTTOM "ABOTTOM"
#define IUP_NORTH "NORTH"
#define IUP_SOUTH "SOUTH"
#define IUP_WEST "WEST"
#define IUP_EAST "EAST"
#define IUP_NE "NE"
#define IUP_SE "SE"
#define IUP_NW "NW"
#define IUP_SW "SW"
#define IUP_FULLSCREEN "FULLSCREEN"
#define IUP_FULL "FULL"
#define IUP_HALF "HALF"
#define IUP_THIRD "THIRD"
#define IUP_QUARTER "QUARTER"
#define IUP_EIGHTH "EIGHTH"
#define IUP_ARROW "ARROW"
#define IUP_BUSY "BUSY"
#define IUP_RESIZE_N "RESIZE_N"
#define IUP_RESIZE_S "RESIZE_S"
#define IUP_RESIZE_E "RESIZE_E"
#define IUP_RESIZE_W "RESIZE_W"
#define IUP_RESIZE_NE "RESIZE_NE"
#define IUP_RESIZE_NW "RESIZE_NW"
#define IUP_RESIZE_SE "RESIZE_SE"
#define IUP_RESIZE_SW "RESIZE_SW"
#define IUP_MOVE "MOVE"
#define IUP_HAND "HAND"
#define IUP_NONE "NONE"
#define IUP_IUP "IUP"
#define IUP_CROSS "CROSS"
#define IUP_PEN "PEN"
#define IUP_TEXT "TEXT"
#define IUP_RESIZE_C "RESIZE_C"
#define IUP_OPENHAND "OPENHAND"
/************************************************************************/
/* Keys */
/************************************************************************/
#define IUP_K_exclam "K_exclam"
#define IUP_K_quotedbl "K_quotedbl"
#define IUP_K_numbersign "K_numbersign"
#define IUP_K_dollar "K_dollar"
#define IUP_K_percent "K_percent"
#define IUP_K_ampersand "K_ampersand"
#define IUP_K_quoteright "K_quoteright"
#define IUP_K_parentleft "K_parentleft"
#define IUP_K_parentright "K_parentright"
#define IUP_K_asterisk "K_asterisk"
#define IUP_K_plus "K_plus"
#define IUP_K_comma "K_comma"
#define IUP_K_minus "K_minus"
#define IUP_K_period "K_period"
#define IUP_K_slash "K_slash"
#define IUP_K_0 "K_0"
#define IUP_K_1 "K_1"
#define IUP_K_2 "K_2"
#define IUP_K_3 "K_3"
#define IUP_K_4 "K_4"
#define IUP_K_5 "K_5"
#define IUP_K_6 "K_6"
#define IUP_K_7 "K_7"
#define IUP_K_8 "K_8"
#define IUP_K_9 "K_9"
#define IUP_K_colon "K_colon"
#define IUP_K_semicolon "K_semicolon "
#define IUP_K_less "K_less"
#define IUP_K_equal "K_equal"
#define IUP_K_greater "K_greater"
#define IUP_K_question "K_question"
#define IUP_K_at "K_at"
#define IUP_K_A "K_A"
#define IUP_K_B "K_B"
#define IUP_K_C "K_C"
#define IUP_K_D "K_D"
#define IUP_K_E "K_E"
#define IUP_K_F "K_F"
#define IUP_K_G "K_G"
#define IUP_K_H "K_H"
#define IUP_K_I "K_I"
#define IUP_K_J "K_J"
#define IUP_K_K "K_K"
#define IUP_K_L "K_L"
#define IUP_K_M "K_M"
#define IUP_K_N "K_N"
#define IUP_K_O "K_O"
#define IUP_K_P "K_P"
#define IUP_K_Q "K_Q"
#define IUP_K_R "K_R"
#define IUP_K_S "K_S"
#define IUP_K_T "K_T"
#define IUP_K_U "K_U"
#define IUP_K_V "K_V"
#define IUP_K_W "K_W"
#define IUP_K_X "K_X"
#define IUP_K_Y "K_Y"
#define IUP_K_Z "K_Z"
#define IUP_K_bracketleft "K_bracketleft"
#define IUP_K_backslash "K_backslash"
#define IUP_K_bracketright "K_bracketright"
#define IUP_K_circum "K_circum"
#define IUP_K_underscore "K_underscore"
#define IUP_K_quoteleft "K_quoteleft"
#define IUP_K_a "K_a"
#define IUP_K_b "K_b"
#define IUP_K_c "K_c"
#define IUP_K_d "K_d"
#define IUP_K_e "K_e"
#define IUP_K_f "K_f"
#define IUP_K_g "K_g"
#define IUP_K_h "K_h"
#define IUP_K_i "K_i"
#define IUP_K_j "K_j"
#define IUP_K_k "K_k"
#define IUP_K_l "K_l"
#define IUP_K_m "K_m"
#define IUP_K_n "K_n"
#define IUP_K_o "K_o"
#define IUP_K_p "K_p"
#define IUP_K_q "K_q"
#define IUP_K_r "K_r"
#define IUP_K_s "K_s"
#define IUP_K_t "K_t"
#define IUP_K_u "K_u"
#define IUP_K_v "K_v"
#define IUP_K_w "K_w"
#define IUP_K_x "K_x"
#define IUP_K_y "K_y"
#define IUP_K_z "K_z"
#define IUP_K_braceleft "K_braceleft"
#define IUP_K_bar "K_bar"
#define IUP_K_braceright "K_braceright"
#define IUP_K_tilde "K_tilde"
#define IUP_K_cA "K_cA"
#define IUP_K_cB "K_cB"
#define IUP_K_cC "K_cC"
#define IUP_K_cD "K_cD"
#define IUP_K_cE "K_cE"
#define IUP_K_cF "K_cF"
#define IUP_K_cG "K_cG"
#define IUP_K_cJ "K_cJ"
#define IUP_K_cK "K_cK"
#define IUP_K_cL "K_cL"
#define IUP_K_cN "K_cN"
#define IUP_K_cO "K_cO"
#define IUP_K_cP "K_cP"
#define IUP_K_cQ "K_cQ"
#define IUP_K_cR "K_cR"
#define IUP_K_cS "K_cS"
#define IUP_K_cT "K_cT"
#define IUP_K_cU "K_cU"
#define IUP_K_cV "K_cV"
#define IUP_K_cW "K_cW"
#define IUP_K_cX "K_cX"
#define IUP_K_cY "K_cY"
#define IUP_K_cZ "K_cZ"
#define IUP_K_mA "K_mA"
#define IUP_K_mB "K_mB"
#define IUP_K_mC "K_mC"
#define IUP_K_mD "K_mD"
#define IUP_K_mE "K_mE"
#define IUP_K_mF "K_mF"
#define IUP_K_mG "K_mG"
#define IUP_K_mH "K_mH"
#define IUP_K_mI "K_mI"
#define IUP_K_mJ "K_mJ"
#define IUP_K_mK "K_mK"
#define IUP_K_mL "K_mL"
#define IUP_K_mM "K_mM"
#define IUP_K_mN "K_mN"
#define IUP_K_mO "K_mO"
#define IUP_K_mP "K_mP"
#define IUP_K_mQ "K_mQ"
#define IUP_K_mR "K_mR"
#define IUP_K_mS "K_mS"
#define IUP_K_mT "K_mT"
#define IUP_K_mU "K_mU"
#define IUP_K_mV "K_mV"
#define IUP_K_mW "K_mW"
#define IUP_K_mX "K_mX"
#define IUP_K_mY "K_mY"
#define IUP_K_mZ "K_mZ"
#define IUP_K_BS "K_BS"
#define IUP_K_TAB "K_TAB"
#define IUP_K_CR "K_CR"
#define IUP_K_SP "K_SP"
#define IUP_K_ESC "K_ESC"
#define IUP_K_sCR "K_sCR"
#define IUP_K_sTAB "K_sTAB"
#define IUP_K_cTAB "K_cTAB"
#define IUP_K_mTAB "K_mTAB"
#define IUP_K_HOME "K_HOME"
#define IUP_K_UP "K_UP"
#define IUP_K_PGUP "K_PGUP"
#define IUP_K_LEFT "K_LEFT"
#define IUP_K_RIGHT "K_RIGHT"
#define IUP_K_END "K_END"
#define IUP_K_DOWN "K_DOWN"
#define IUP_K_PGDN "K_PGDN"
#define IUP_K_MIDDLE "K_MIDDLE"
#define IUP_K_INS "K_INS"
#define IUP_K_DEL "K_DEL"
#define IUP_K_sHOME "K_sHOME"
#define IUP_K_sUP "K_sUP"
#define IUP_K_sPGUP "K_sPGUP"
#define IUP_K_sLEFT "K_sLEFT"
#define IUP_K_sRIGHT "K_sRIGHT"
#define IUP_K_sEND "K_sEND"
#define IUP_K_sDOWN "K_sDOWN"
#define IUP_K_sPGDN "K_sPGDN"
#define IUP_K_cHOME "K_cHOME"
#define IUP_K_cPGUP "K_cPGUP"
#define IUP_K_cLEFT "K_cLEFT"
#define IUP_K_cRIGHT "K_cRIGHT"
#define IUP_K_cEND "K_cEND"
#define IUP_K_cPGDN "K_cPGDN"
#define IUP_K_cUP "K_cUP"
#define IUP_K_cDOWN "K_cDOWN"
#define IUP_K_cMIDDLE "K_cMIDDLE"
#define IUP_K_cINS "K_cINS"
#define IUP_K_cDEL "K_cDEL"
#define IUP_K_mHOME "K_mHOME"
#define IUP_K_mPGUP "K_mPGUP"
#define IUP_K_mLEFT "K_mLEFT"
#define IUP_K_mRIGHT "K_mRIGHT"
#define IUP_K_mEND "K_mEND"
#define IUP_K_mPGDN "K_mPGDN"
#define IUP_K_mUP "K_mUP"
#define IUP_K_mDOWN "K_mDOWN"
#define IUP_K_mINS "K_mINS"
#define IUP_K_mDEL "K_mDEL"
#define IUP_K_F1 "K_F1"
#define IUP_K_F2 "K_F2"
#define IUP_K_F3 "K_F3"
#define IUP_K_F4 "K_F4"
#define IUP_K_F5 "K_F5"
#define IUP_K_F6 "K_F6"
#define IUP_K_F7 "K_F7"
#define IUP_K_F8 "K_F8"
#define IUP_K_F9 "K_F9"
#define IUP_K_F10 "K_F10"
#define IUP_K_F11 "K_F11"
#define IUP_K_F12 "K_F12"
#define IUP_K_sF1 "K_sF1"
#define IUP_K_sF2 "K_sF2"
#define IUP_K_sF3 "K_sF3"
#define IUP_K_sF4 "K_sF4"
#define IUP_K_sF5 "K_sF5"
#define IUP_K_sF6 "K_sF6"
#define IUP_K_sF7 "K_sF7"
#define IUP_K_sF8 "K_sF8"
#define IUP_K_sF9 "K_sF9"
#define IUP_K_sF10 "K_sF10"
#define IUP_K_sF11 "K_sF11"
#define IUP_K_sF12 "K_sF12"
#define IUP_K_cF1 "K_cF1"
#define IUP_K_cF2 "K_cF2"
#define IUP_K_cF3 "K_cF3"
#define IUP_K_cF4 "K_cF4"
#define IUP_K_cF5 "K_cF5"
#define IUP_K_cF6 "K_cF6"
#define IUP_K_cF7 "K_cF7"
#define IUP_K_cF8 "K_cF8"
#define IUP_K_cF9 "K_cF9"
#define IUP_K_cF10 "K_cF10"
#define IUP_K_cF11 "K_cF11"
#define IUP_K_cF12 "K_cF12"
#define IUP_K_mF1 "K_mF1"
#define IUP_K_mF2 "K_mF2"
#define IUP_K_mF3 "K_mF3"
#define IUP_K_mF4 "K_mF4"
#define IUP_K_mF5 "K_mF5"
#define IUP_K_mF6 "K_mF6"
#define IUP_K_mF7 "K_mF7"
#define IUP_K_mF8 "K_mF8"
#define IUP_K_mF9 "K_mF9"
#define IUP_K_mF10 "K_mF10"
#define IUP_K_m1 "K_m1"
#define IUP_K_m2 "K_m2"
#define IUP_K_m3 "K_m3"
#define IUP_K_m4 "K_m4"
#define IUP_K_m5 "K_m5"
#define IUP_K_m6 "K_m6"
#define IUP_K_m7 "K_m7"
#define IUP_K_m8 "K_m8"
#define IUP_K_m9 "K_m9"
#define IUP_K_m0 "K_m0"
/************/
/* Colorbar */
/************/
#define IUP_NUM_PARTS "NUM_PARTS"
#define IUP_NUM_CELLS "NUM_CELLS"
#define IUP_CELL "CELL"
#define IUP_PREVIEW_SIZE "PREVIEW_SIZE"
#define IUP_SHOW_PREVIEW "SHOW_PREVIEW"
#define IUP_SHOW_SECONDARY "SHOW_SECONDARY"
#define IUP_PRIMARY_CELL "PRIMARY_CELL"
#define IUP_SECONDARY_CELL "SECONDARY_CELL"
#define IUP_ORIENTATION "ORIENTATION"
#define IUP_SQUARED "SQUARED"
#define IUP_SHADOWED "SHADOWED"
#define IUP_BUFFERIZE "BUFFERIZE"
#define IUP_TRANSPARENCY "TRANSPARENCY"
#define IUP_CELL_CB "CELL_CB"
#define IUP_EXTENDED_CB "EXTENDED_CB"
#define IUP_SELECT_CB "SELECT_CB"
#define IUP_SWITCH_CB "SWITCH_CB"
#define IUP_VERTICAL "VERTICAL"
#define IUP_HORIZONTAL "HORIZONTAL"
/************/
/* Cells */
/************/
#define IUP_ALL "ALL"
#define IUP_BOXED "BOXED"
#define IUP_CLIPPED "CLIPPED"
#define IUP_TRANSPARENT "TRANSPARENT"
#define IUP_NON_SCROLLABLE_LINES "NON_SCROLLABLE_LINES"
#define IUP_NON_SCROLLABLE_COLS "NON_SCROLLABLE_COLS"
#define IUP_ORIGIN "ORIGIN"
#define IUP_NO_COLOR "NO_COLOR"
#define IUP_FIRST_LINE "FIRST_LINE"
#define IUP_FIRST_COL "FIRST_COL"
#define IUP_DOUBLE_BUFFER "DOUBLE_BUFFER"
#define IUP_LIMITS "LIMITS"
#define IUP_CANVAS "CANVAS"
#define IUP_IMAGE_CANVAS "IMAGE_CANVAS"
#define IUP_FULL_VISIBLE "FULL_VISIBLE"
#define IUP_MOUSECLICK_CB "MOUSECLICK_CB"
#define IUP_MOUSEMOTION_CB "MOUSEMOTION_CB"
#define IUP_DRAW_CB "DRAW_CB"
#define IUP_WIDTH_CB "WIDTH_CB"
#define IUP_HEIGHT_CB "HEIGHT_CB"
#define IUP_NLINES_CB "NLINES_CB"
#define IUP_NCOLS_CB "NCOLS_CB"
#define IUP_HSPAN_CB "HSPAN_CB"
#define IUP_VSPAN_CB "VSPAN_CB"
#define IUP_SCROLLING_CB "SCROLLING_CB"
/*****************/
/* ColorBrowser */
/*****************/
#define IUP_RGB "RGB"
#define IUP_CHANGE_CB "CHANGE_CB"
#define IUP_DRAG_CB "DRAG_CB"
/*****************/
/* Val */
/*****************/
#define ICTL_MOUSEMOVE_CB "MOUSEMOVE_CB"
#define ICTL_BUTTON_PRESS_CB "BUTTON_PRESS_CB"
#define ICTL_BUTTON_RELEASE_CB "BUTTON_RELEASE_CB"
#define ICTL_HORIZONTAL "HORIZONTAL"
#define ICTL_VERTICAL "VERTICAL"
#define ICTL_SHOWTICKS "SHOWTICKS"
/*****************/
/* Tabs */
/*****************/
#define ICTL_TOP "TOP"
#define ICTL_BOTTOM "BOTTOM"
#define ICTL_LEFT "LEFT"
#define ICTL_RIGHT "RIGHT"
#define ICTL_TABTYPE "TABTYPE"
#define ICTL_TABTITLE "TABTITLE"
#define ICTL_TABSIZE "TABSIZE"
#define ICTL_TABCHANGE_CB "TABCHANGE_CB"
#define ICTL_FONT "FONT"
#define ICTL_FONT_ACTIVE "FONT_ACTIVE"
#define ICTL_FONT_INACTIVE "FONT_INACTIVE"
/*****************/
/* Gauge */
/*****************/
#define ICTL_SHOW_TEXT "SHOW_TEXT"
#define ICTL_DASHED "DASHED"
#define ICTL_MARGIN "MARGIN"
#define ICTL_TEXT "TEXT"
/*****************/
/* Dial */
/*****************/
#define ICTL_DENSITY "DENSITY"
#define ICTL_HORIZONTAL "HORIZONTAL"
#define ICTL_VERTICAL "VERTICAL"
#define ICTL_CIRCULAR "CIRCULAR"
#define ICTL_UNIT "UNIT"
/*****************/
/* Matrix */
/*****************/
#define IUP_ENTERITEM_CB "ENTERITEM_CB"
#define IUP_LEAVEITEM_CB "LEAVEITEM_CB"
#define IUP_EDITION_CB "EDITION_CB"
#define IUP_CLICK_CB "CLICK_CB"
#define IUP_DROP_CB "DROP_CB"
#define IUP_DROPSELECT_CB "DROPSELECT_CB"
#define IUP_DROPCHECK_CB "DROPCHECK_CB"
#define IUP_SCROLL_CB "SCROLL_CB"
#define IUP_VALUE_CB "VALUE_CB"
#define IUP_VALUE_EDIT_CB "VALUE_EDIT_CB"
#define IUP_FIELD_CB "FIELD_CB"
#define IUP_RESIZEMATRIX "RESIZEMATRIX"
#define IUP_ADDLIN "ADDLIN"
#define IUP_ADDCOL "ADDCOL"
#define IUP_DELLIN "DELLIN"
#define IUP_DELCOL "DELCOL"
#define IUP_NUMLIN "NUMLIN"
#define IUP_NUMCOL "NUMCOL"
#define IUP_NUMLIN_VISIBLE "NUMLIN_VISIBLE"
#define IUP_NUMCOL_VISIBLE "NUMCOL_VISIBLE"
#define IUP_MARKED "MARKED"
#define IUP_WIDTHDEF "WIDTHDEF"
#define IUP_HEIGHTDEF "HEIGHTDEF"
#define IUP_AREA "AREA"
#define IUP_MARK_MODE "MARK_MODE"
#define IUP_LIN "LIN"
#define IUP_COL "COL"
#define IUP_LINCOL "LINCOL"
#define IUP_CELL "CELL"
#define IUP_EDIT_MODE "EDIT_MODE"
#define IUP_FOCUS_CELL "FOCUS_CELL"
#define IUP_ORIGIN "ORIGIN"
#define IUP_REDRAW "REDRAW"
#define IUP_PREVIOUSVALUE "PREVIOUSVALUE"
#define IUP_MOUSEMOVE_CB "MOUSEMOVE_CB"
/*****************/
/* Tree */
/*****************/
#define IUP_ADDLEAF "ADDLEAF"
#define IUP_ADDBRANCH "ADDBRANCH"
#define IUP_DELNODE "DELNODE"
#define IUP_IMAGELEAF "IMAGELEAF"
#define IUP_IMAGEBRANCHCOLLAPSED "IMAGEBRANCHCOLLAPSED"
#define IUP_IMAGEBRANCHEXPANDED "IMAGEBRANCHEXPANDED"
#define IUP_IMAGEEXPANDED "IMAGEEXPANDED"
#define IUP_KIND "KIND"
#define IUP_PARENT "PARENT"
#define IUP_DEPTH "DEPTH"
#define IUP_MARKED "MARKED"
#define IUP_ADDEXPANDED "ADDEXPANDED"
#define IUP_CTRL "CTRL"
#define IUP_SHIFT "SHIFT"
#define IUP_STATE "STATE"
#define IUP_STARTING "STARTING"
#define IUP_LEAF "LEAF"
#define IUP_BRANCH "BRANCH"
#define IUP_SELECTED "SELECTED"
#define IUP_CHILDREN "CHILDREN"
#define IUP_MARKED "MARKED"
#define IUP_ROOT "ROOT"
#define IUP_LAST "LAST"
#define IUP_PGUP "PGUP"
#define IUP_PGDN "PGDN"
#define IUP_NEXT "NEXT"
#define IUP_PREVIOUS "PREVIOUS"
#define IUP_INVERT "INVERT"
#define IUP_BLOCK "BLOCK"
#define IUP_CLEARALL "CLEARALL"
#define IUP_MARKALL "MARKALL"
#define IUP_INVERTALL "INVERTALL"
#define IUP_REDRAW "REDRAW"
#define IUP_COLLAPSED "COLLAPSED"
#define IUP_EXPANDED "EXPANDED"
#define IUP_SELECTION_CB "SELECTION_CB"
#define IUP_BRANCHOPEN_CB "BRANCHOPEN_CB"
#define IUP_BRANCHCLOSE_CB "BRANCHCLOSE_CB"
#define IUP_RIGHTCLICK_CB "RIGHTCLICK_CB"
#define IUP_EXECUTELEAF_CB "EXECUTELEAF_CB"
#define IUP_RENAMENODE_CB "RENAMENODE_CB"
#define IUP_IMGLEAF "IMGLEAF"
#define IUP_IMGCOLLAPSED "IMGCOLLAPSED"
#define IUP_IMGEXPANDED "IMGEXPANDED"
#define IUP_IMGBLANK "IMGBLANK"
#define IUP_IMGPAPER "IMGPAPER"
#endif
@@ -1,47 +0,0 @@
/** \file
* \brief Canvas Draw API
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPDRAW_H
#define __IUPDRAW_H
#ifdef __cplusplus
extern "C" {
#endif
/* all functions can be used only in IUP canvas and inside the ACTION callback */
IUP_API void IupDrawBegin(Ihandle* ih);
IUP_API void IupDrawEnd(Ihandle* ih);
/* all functions can be called only between calls to Begin and End */
IUP_API void IupDrawSetClipRect(Ihandle* ih, int x1, int y1, int x2, int y2);
IUP_API void IupDrawGetClipRect(Ihandle* ih, int *x1, int *y1, int *x2, int *y2);
IUP_API void IupDrawResetClip(Ihandle* ih);
/* color controlled by the attribute DRAWCOLOR */
/* line style or fill controlled by the attribute DRAWSTYLE */
IUP_API void IupDrawParentBackground(Ihandle* ih);
IUP_API void IupDrawLine(Ihandle* ih, int x1, int y1, int x2, int y2);
IUP_API void IupDrawRectangle(Ihandle* ih, int x1, int y1, int x2, int y2);
IUP_API void IupDrawArc(Ihandle* ih, int x1, int y1, int x2, int y2, double a1, double a2);
IUP_API void IupDrawPolygon(Ihandle* ih, int* points, int count);
IUP_API void IupDrawText(Ihandle* ih, const char* text, int len, int x, int y, int w, int h);
IUP_API void IupDrawImage(Ihandle* ih, const char* name, int x, int y, int w, int h);
IUP_API void IupDrawSelectRect(Ihandle* ih, int x1, int y1, int x2, int y2);
IUP_API void IupDrawFocusRect(Ihandle* ih, int x1, int y1, int x2, int y2);
IUP_API void IupDrawGetSize(Ihandle* ih, int *w, int *h);
IUP_API void IupDrawGetTextSize(Ihandle* ih, const char* text, int len, int *w, int *h);
IUP_API void IupDrawGetImageInfo(const char* name, int *w, int *h, int *bpp);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,21 +0,0 @@
/** \file
* \brief IupDraw CD driver
*
* See Copyright Notice in iup.h
*/
#ifndef __CD_IUPDRAW_H
#define __CD_IUPDRAW_H
#ifdef __cplusplus
extern "C" {
#endif
cdContext* cdContextIupDraw(void);
#define CD_IUPDRAW cdContextIupDraw()
#ifdef __cplusplus
}
#endif
#endif /* ifndef __CD_IUPDRAW_ */
@@ -1,24 +0,0 @@
/** \file
* \brief New FileDlg (Windows Only).
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPFILEDLG_H
#define __IUPFILEDLG_H
#ifdef __cplusplus
extern "C" {
#endif
/* the only exported function,
once called it will replace regular IupFileDlg */
int IupNewFileDlgOpen(void);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,97 +0,0 @@
/** \file
* \brief OpenGL canvas for Iup.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPGL_H
#define __IUPGL_H
#ifdef __cplusplus
extern "C" {
#endif
/* Attributes
** To set the appropriate visual (pixel format) the following
** attributes may be specified. Their values should be set
** before the canvas is mapped to the scrren.
** After mapping, changing their values has no effect.
*/
#ifndef IUP_BUFFER /* IUP_SINGLE (defaut) or IUP_DOUBLE */
#define IUP_BUFFER "BUFFER"
#endif
#ifndef IUP_STEREO /* IUP_NO (defaut) or IUP_YES */
#define IUP_STEREO "STEREO"
#endif
#ifndef IUP_BUFFER_SIZE /* Number of bits if index mode */
#define IUP_BUFFER_SIZE "BUFFER_SIZE"
#endif
#ifndef IUP_RED_SIZE /* Number of red bits */
#define IUP_RED_SIZE "RED_SIZE"
#endif
#ifndef IUP_GREEN_SIZE /* Number of green bits */
#define IUP_GREEN_SIZE "GREEN_SIZE"
#endif
#ifndef IUP_BLUE_SIZE /* Number of blue bits */
#define IUP_BLUE_SIZE "BLUE_SIZE"
#endif
#ifndef IUP_ALPHA_SIZE /* Number of alpha bits */
#define IUP_ALPHA_SIZE "ALPHA_SIZE"
#endif
#ifndef IUP_DEPTH_SIZE /* Number of bits in depth buffer */
#define IUP_DEPTH_SIZE "DEPTH_SIZE"
#endif
#ifndef IUP_STENCIL_SIZE /* Number of bits in stencil buffer */
#define IUP_STENCIL_SIZE "STENCIL_SIZE"
#endif
#ifndef IUP_ACCUM_RED_SIZE /* Number of red bits in accum. buffer */
#define IUP_ACCUM_RED_SIZE "ACCUM_RED_SIZE"
#endif
#ifndef IUP_ACCUM_GREEN_SIZE /* Number of green bits in accum. buffer */
#define IUP_ACCUM_GREEN_SIZE "ACCUM_GREEN_SIZE"
#endif
#ifndef IUP_ACCUM_BLUE_SIZE /* Number of blue bits in accum. buffer */
#define IUP_ACCUM_BLUE_SIZE "ACCUM_BLUE_SIZE"
#endif
#ifndef IUP_ACCUM_ALPHA_SIZE /* Number of alpha bits in accum. buffer */
#define IUP_ACCUM_ALPHA_SIZE "ACCUM_ALPHA_SIZE"
#endif
/* Attribute values */
#ifndef IUP_DOUBLE
#define IUP_DOUBLE "DOUBLE"
#endif
#ifndef IUP_SINGLE
#define IUP_SINGLE "SINGLE"
#endif
#ifndef IUP_INDEX
#define IUP_INDEX "INDEX"
#endif
#ifndef IUP_RGBA
#define IUP_RGBA "RGBA"
#endif
#ifndef IUP_YES
#define IUP_YES "YES"
#endif
#ifndef IUP_NO
#define IUP_NO "NO"
#endif
void IupGLCanvasOpen(void);
Ihandle *IupGLCanvas(const char *action);
Ihandle* IupGLBackgroundBox(Ihandle* child);
void IupGLMakeCurrent(Ihandle* ih);
int IupGLIsCurrent(Ihandle* ih);
void IupGLSwapBuffers(Ihandle* ih);
void IupGLPalette(Ihandle* ih, int index, float r, float g, float b);
void IupGLUseFont(Ihandle* ih, int first, int count, int list_base);
void IupGLWait(int gl);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,47 +0,0 @@
/** \file
* \brief GL Controls.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPGLCONTROLS_H
#define __IUPGLCONTROLS_H
#ifdef __cplusplus
extern "C" {
#endif
int IupGLControlsOpen(void);
Ihandle* IupGLCanvasBoxv(Ihandle** children);
Ihandle* IupGLCanvasBox(Ihandle* child, ...);
Ihandle* IupGLSubCanvas(void);
Ihandle* IupGLLabel(const char* title);
Ihandle* IupGLSeparator(void);
Ihandle* IupGLButton(const char* title);
Ihandle* IupGLToggle(const char* title);
Ihandle* IupGLLink(const char *url, const char * title);
Ihandle* IupGLProgressBar(void);
Ihandle* IupGLVal(void);
Ihandle* IupGLFrame(Ihandle* child);
Ihandle* IupGLExpander(Ihandle* child);
Ihandle* IupGLScrollBox(Ihandle* child);
Ihandle* IupGLSizeBox(Ihandle* child);
Ihandle* IupGLText(void);
/* Utilities */
void IupGLDrawImage(Ihandle* ih, const char* name, int x, int y, int active);
void IupGLDrawText(Ihandle* ih, const char* str, int len, int x, int y);
void IupGLDrawGetTextSize(Ihandle* ih, const char* str, int *w, int *h);
void IupGLDrawGetImageInfo(const char* name, int *w, int *h, int *bpp);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,36 +0,0 @@
/** \file
* \brief Utilities using IM
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPIM_H
#define __IUPIM_H
#if defined(__cplusplus)
extern "C" {
#endif
void IupImOpen(void); /* optional */
Ihandle* IupLoadImage(const char* filename);
int IupSaveImage(Ihandle* ih, const char* filename, const char* format);
Ihandle* IupLoadAnimation(const char* filename);
Ihandle* IupLoadAnimationFrames(const char** filename_list, int file_count);
#ifdef __IM_IMAGE_H
imImage* IupGetNativeHandleImage(void* handle);
void* IupGetImageNativeHandle(const imImage* image);
Ihandle* IupImageFromImImage(const imImage* image);
imImage* IupImageToImImage(Ihandle* iup_image);
#endif
#if defined(__cplusplus)
}
#endif
#endif
@@ -1,533 +0,0 @@
/** \file
* \brief Keyboard Keys definitions.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPKEY_H
#define __IUPKEY_H
/* from 32 to 126, all character sets are equal,
the key code is the same as the ASCii character code. */
#define K_SP ' ' /* 32 (0x20) */
#define K_exclam '!' /* 33 */
#define K_quotedbl '\"' /* 34 */
#define K_numbersign '#' /* 35 */
#define K_dollar '$' /* 36 */
#define K_percent '%' /* 37 */
#define K_ampersand '&' /* 38 */
#define K_apostrophe '\'' /* 39 */
#define K_parentleft '(' /* 40 */
#define K_parentright ')' /* 41 */
#define K_asterisk '*' /* 42 */
#define K_plus '+' /* 43 */
#define K_comma ',' /* 44 */
#define K_minus '-' /* 45 */
#define K_period '.' /* 46 */
#define K_slash '/' /* 47 */
#define K_0 '0' /* 48 (0x30) */
#define K_1 '1' /* 49 */
#define K_2 '2' /* 50 */
#define K_3 '3' /* 51 */
#define K_4 '4' /* 52 */
#define K_5 '5' /* 53 */
#define K_6 '6' /* 54 */
#define K_7 '7' /* 55 */
#define K_8 '8' /* 56 */
#define K_9 '9' /* 57 */
#define K_colon ':' /* 58 */
#define K_semicolon ';' /* 59 */
#define K_less '<' /* 60 */
#define K_equal '=' /* 61 */
#define K_greater '>' /* 62 */
#define K_question '?' /* 63 */
#define K_at '@' /* 64 */
#define K_A 'A' /* 65 (0x41) */
#define K_B 'B' /* 66 */
#define K_C 'C' /* 67 */
#define K_D 'D' /* 68 */
#define K_E 'E' /* 69 */
#define K_F 'F' /* 70 */
#define K_G 'G' /* 71 */
#define K_H 'H' /* 72 */
#define K_I 'I' /* 73 */
#define K_J 'J' /* 74 */
#define K_K 'K' /* 75 */
#define K_L 'L' /* 76 */
#define K_M 'M' /* 77 */
#define K_N 'N' /* 78 */
#define K_O 'O' /* 79 */
#define K_P 'P' /* 80 */
#define K_Q 'Q' /* 81 */
#define K_R 'R' /* 82 */
#define K_S 'S' /* 83 */
#define K_T 'T' /* 84 */
#define K_U 'U' /* 85 */
#define K_V 'V' /* 86 */
#define K_W 'W' /* 87 */
#define K_X 'X' /* 88 */
#define K_Y 'Y' /* 89 */
#define K_Z 'Z' /* 90 */
#define K_bracketleft '[' /* 91 */
#define K_backslash '\\' /* 92 */
#define K_bracketright ']' /* 93 */
#define K_circum '^' /* 94 */
#define K_underscore '_' /* 95 */
#define K_grave '`' /* 96 */
#define K_a 'a' /* 97 (0x61) */
#define K_b 'b' /* 98 */
#define K_c 'c' /* 99 */
#define K_d 'd' /* 100 */
#define K_e 'e' /* 101 */
#define K_f 'f' /* 102 */
#define K_g 'g' /* 103 */
#define K_h 'h' /* 104 */
#define K_i 'i' /* 105 */
#define K_j 'j' /* 106 */
#define K_k 'k' /* 107 */
#define K_l 'l' /* 108 */
#define K_m 'm' /* 109 */
#define K_n 'n' /* 110 */
#define K_o 'o' /* 111 */
#define K_p 'p' /* 112 */
#define K_q 'q' /* 113 */
#define K_r 'r' /* 114 */
#define K_s 's' /* 115 */
#define K_t 't' /* 116 */
#define K_u 'u' /* 117 */
#define K_v 'v' /* 118 */
#define K_w 'w' /* 119 */
#define K_x 'x' /* 120 */
#define K_y 'y' /* 121 */
#define K_z 'z' /* 122 */
#define K_braceleft '{' /* 123 */
#define K_bar '|' /* 124 */
#define K_braceright '}' /* 125 */
#define K_tilde '~' /* 126 (0x7E) */
/* Printable ASCii keys */
#define iup_isprint(_c) ((_c) > 31 && (_c) < 127)
/* also define the escape sequences that have keys associated */
#define K_BS '\b' /* 8 */
#define K_TAB '\t' /* 9 */
#define K_LF '\n' /* 10 (0x0A) not a real key, is a combination of CR with a modifier, just to document */
#define K_CR '\r' /* 13 (0x0D) */
/* backward compatible definitions */
#define K_quoteleft K_grave
#define K_quoteright K_apostrophe
#define isxkey iup_isXkey
/* IUP Extended Key Codes, range start at 128 */
#define iup_isXkey(_c) ((_c) >= 128)
/* These use the same definition as X11 and GDK.
This also means that any X11 or GDK definition can also be used. */
#define K_PAUSE 0xFF13
#define K_ESC 0xFF1B
#define K_HOME 0xFF50
#define K_LEFT 0xFF51
#define K_UP 0xFF52
#define K_RIGHT 0xFF53
#define K_DOWN 0xFF54
#define K_PGUP 0xFF55
#define K_PGDN 0xFF56
#define K_END 0xFF57
#define K_MIDDLE 0xFF0B
#define K_Print 0xFF61
#define K_INS 0xFF63
#define K_Menu 0xFF67
#define K_DEL 0xFFFF
#define K_F1 0xFFBE
#define K_F2 0xFFBF
#define K_F3 0xFFC0
#define K_F4 0xFFC1
#define K_F5 0xFFC2
#define K_F6 0xFFC3
#define K_F7 0xFFC4
#define K_F8 0xFFC5
#define K_F9 0xFFC6
#define K_F10 0xFFC7
#define K_F11 0xFFC8
#define K_F12 0xFFC9
#define K_F13 0xFFCA
#define K_F14 0xFFCB
#define K_F15 0xFFCC
#define K_F16 0xFFCD
#define K_F17 0xFFCE
#define K_F18 0xFFCF
#define K_F19 0xFFD0
#define K_F20 0xFFD1
/* no Shift/Ctrl/Alt */
#define K_LSHIFT 0xFFE1
#define K_RSHIFT 0xFFE2
#define K_LCTRL 0xFFE3
#define K_RCTRL 0xFFE4
#define K_LALT 0xFFE9
#define K_RALT 0xFFEA
#define K_NUM 0xFF7F
#define K_SCROLL 0xFF14
#define K_CAPS 0xFFE5
/* Mac clear button. Value randomly picked trying to avoid clashing with an existing value. */
#define K_CLEAR 0xFFD2
/* Help button if anybody has it. Value randomly picked trying to avoid clashing with an existing value. */
#define K_HELP 0xFFD3
/* Also, these are the same as the Latin-1 definition */
#define K_ccedilla 0x00E7
#define K_Ccedilla 0x00C7
#define K_acute 0x00B4 /* no Shift/Ctrl/Alt */
#define K_diaeresis 0x00A8
/******************************************************/
/* Modifiers use last 4 bits. Since IUP 3.9 */
/* These modifiers definitions are specific to IUP */
/******************************************************/
#define iup_isShiftXkey(_c) (((_c) & 0x10000000) != 0)
#define iup_isCtrlXkey(_c) (((_c) & 0x20000000) != 0)
#define iup_isAltXkey(_c) (((_c) & 0x40000000) != 0)
#define iup_isSysXkey(_c) (((_c) & 0x80000000) != 0)
#define iup_XkeyBase(_c) ((_c) & 0x0FFFFFFF)
#define iup_XkeyShift(_c) ((_c) | 0x10000000) /* Shift */
#define iup_XkeyCtrl(_c) ((_c) | 0x20000000) /* Ctrl */
#define iup_XkeyAlt(_c) ((_c) | 0x40000000) /* Alt */
#define iup_XkeySys(_c) ((_c) | 0x80000000) /* Sys (Win or Apple) - notice that using "int" will display a negative value */
/* These definitions are here for backward compatibility
and to simplify some key combination usage.
But since IUP 3.9, modifiers can be combined with any key
and they can be mixed together. */
#define K_sHOME iup_XkeyShift(K_HOME )
#define K_sUP iup_XkeyShift(K_UP )
#define K_sPGUP iup_XkeyShift(K_PGUP )
#define K_sLEFT iup_XkeyShift(K_LEFT )
#define K_sMIDDLE iup_XkeyShift(K_MIDDLE )
#define K_sRIGHT iup_XkeyShift(K_RIGHT )
#define K_sEND iup_XkeyShift(K_END )
#define K_sDOWN iup_XkeyShift(K_DOWN )
#define K_sPGDN iup_XkeyShift(K_PGDN )
#define K_sINS iup_XkeyShift(K_INS )
#define K_sDEL iup_XkeyShift(K_DEL )
#define K_sSP iup_XkeyShift(K_SP )
#define K_sTAB iup_XkeyShift(K_TAB )
#define K_sCR iup_XkeyShift(K_CR )
#define K_sBS iup_XkeyShift(K_BS )
#define K_sPAUSE iup_XkeyShift(K_PAUSE )
#define K_sESC iup_XkeyShift(K_ESC )
#define K_sCLEAR iup_XkeyShift(K_CLEAR )
#define K_sF1 iup_XkeyShift(K_F1 )
#define K_sF2 iup_XkeyShift(K_F2 )
#define K_sF3 iup_XkeyShift(K_F3 )
#define K_sF4 iup_XkeyShift(K_F4 )
#define K_sF5 iup_XkeyShift(K_F5 )
#define K_sF6 iup_XkeyShift(K_F6 )
#define K_sF7 iup_XkeyShift(K_F7 )
#define K_sF8 iup_XkeyShift(K_F8 )
#define K_sF9 iup_XkeyShift(K_F9 )
#define K_sF10 iup_XkeyShift(K_F10 )
#define K_sF11 iup_XkeyShift(K_F11 )
#define K_sF12 iup_XkeyShift(K_F12 )
#define K_sF13 iup_XkeyShift(K_F13 )
#define K_sF14 iup_XkeyShift(K_F14 )
#define K_sF15 iup_XkeyShift(K_F15 )
#define K_sF16 iup_XkeyShift(K_F16 )
#define K_sF17 iup_XkeyShift(K_F17 )
#define K_sF18 iup_XkeyShift(K_F18 )
#define K_sF19 iup_XkeyShift(K_F19 )
#define K_sF20 iup_XkeyShift(K_F20 )
#define K_sPrint iup_XkeyShift(K_Print )
#define K_sMenu iup_XkeyShift(K_Menu )
#define K_cHOME iup_XkeyCtrl(K_HOME )
#define K_cUP iup_XkeyCtrl(K_UP )
#define K_cPGUP iup_XkeyCtrl(K_PGUP )
#define K_cLEFT iup_XkeyCtrl(K_LEFT )
#define K_cMIDDLE iup_XkeyCtrl(K_MIDDLE )
#define K_cRIGHT iup_XkeyCtrl(K_RIGHT )
#define K_cEND iup_XkeyCtrl(K_END )
#define K_cDOWN iup_XkeyCtrl(K_DOWN )
#define K_cPGDN iup_XkeyCtrl(K_PGDN )
#define K_cINS iup_XkeyCtrl(K_INS )
#define K_cDEL iup_XkeyCtrl(K_DEL )
#define K_cSP iup_XkeyCtrl(K_SP )
#define K_cTAB iup_XkeyCtrl(K_TAB )
#define K_cCR iup_XkeyCtrl(K_CR )
#define K_cBS iup_XkeyCtrl(K_BS )
#define K_cPAUSE iup_XkeyCtrl(K_PAUSE )
#define K_cESC iup_XkeyCtrl(K_ESC )
#define K_cCLEAR iup_XkeyCtrl(K_CLEAR )
#define K_cCcedilla iup_XkeyCtrl(K_Ccedilla)
#define K_cF1 iup_XkeyCtrl(K_F1 )
#define K_cF2 iup_XkeyCtrl(K_F2 )
#define K_cF3 iup_XkeyCtrl(K_F3 )
#define K_cF4 iup_XkeyCtrl(K_F4 )
#define K_cF5 iup_XkeyCtrl(K_F5 )
#define K_cF6 iup_XkeyCtrl(K_F6 )
#define K_cF7 iup_XkeyCtrl(K_F7 )
#define K_cF8 iup_XkeyCtrl(K_F8 )
#define K_cF9 iup_XkeyCtrl(K_F9 )
#define K_cF10 iup_XkeyCtrl(K_F10 )
#define K_cF11 iup_XkeyCtrl(K_F11 )
#define K_cF12 iup_XkeyCtrl(K_F12 )
#define K_cF13 iup_XkeyCtrl(K_F13 )
#define K_cF14 iup_XkeyCtrl(K_F14 )
#define K_cF15 iup_XkeyCtrl(K_F15 )
#define K_cF16 iup_XkeyCtrl(K_F16 )
#define K_cF17 iup_XkeyCtrl(K_F17 )
#define K_cF18 iup_XkeyCtrl(K_F18 )
#define K_cF19 iup_XkeyCtrl(K_F19 )
#define K_cF20 iup_XkeyCtrl(K_F20 )
#define K_cPrint iup_XkeyCtrl(K_Print )
#define K_cMenu iup_XkeyCtrl(K_Menu )
#define K_mHOME iup_XkeyAlt(K_HOME )
#define K_mUP iup_XkeyAlt(K_UP )
#define K_mPGUP iup_XkeyAlt(K_PGUP )
#define K_mLEFT iup_XkeyAlt(K_LEFT )
#define K_mMIDDLE iup_XkeyAlt(K_MIDDLE )
#define K_mRIGHT iup_XkeyAlt(K_RIGHT )
#define K_mEND iup_XkeyAlt(K_END )
#define K_mDOWN iup_XkeyAlt(K_DOWN )
#define K_mPGDN iup_XkeyAlt(K_PGDN )
#define K_mINS iup_XkeyAlt(K_INS )
#define K_mDEL iup_XkeyAlt(K_DEL )
#define K_mSP iup_XkeyAlt(K_SP )
#define K_mTAB iup_XkeyAlt(K_TAB )
#define K_mCR iup_XkeyAlt(K_CR )
#define K_mBS iup_XkeyAlt(K_BS )
#define K_mPAUSE iup_XkeyAlt(K_PAUSE )
#define K_mESC iup_XkeyAlt(K_ESC )
#define K_mCLEAR iup_XkeyAlt(K_CLEAR )
#define K_mCcedilla iup_XkeyAlt(K_Ccedilla)
#define K_mF1 iup_XkeyAlt(K_F1 )
#define K_mF2 iup_XkeyAlt(K_F2 )
#define K_mF3 iup_XkeyAlt(K_F3 )
#define K_mF4 iup_XkeyAlt(K_F4 )
#define K_mF5 iup_XkeyAlt(K_F5 )
#define K_mF6 iup_XkeyAlt(K_F6 )
#define K_mF7 iup_XkeyAlt(K_F7 )
#define K_mF8 iup_XkeyAlt(K_F8 )
#define K_mF9 iup_XkeyAlt(K_F9 )
#define K_mF10 iup_XkeyAlt(K_F10 )
#define K_mF11 iup_XkeyAlt(K_F11 )
#define K_mF12 iup_XkeyAlt(K_F12 )
#define K_mF13 iup_XkeyAlt(K_F13 )
#define K_mF14 iup_XkeyAlt(K_F14 )
#define K_mF15 iup_XkeyAlt(K_F15 )
#define K_mF16 iup_XkeyAlt(K_F16 )
#define K_mF17 iup_XkeyAlt(K_F17 )
#define K_mF18 iup_XkeyAlt(K_F18 )
#define K_mF19 iup_XkeyAlt(K_F19 )
#define K_mF20 iup_XkeyAlt(K_F20 )
#define K_mPrint iup_XkeyAlt(K_Print )
#define K_mMenu iup_XkeyAlt(K_Menu )
#define K_yHOME iup_XkeySys(K_HOME )
#define K_yUP iup_XkeySys(K_UP )
#define K_yPGUP iup_XkeySys(K_PGUP )
#define K_yLEFT iup_XkeySys(K_LEFT )
#define K_yMIDDLE iup_XkeySys(K_MIDDLE )
#define K_yRIGHT iup_XkeySys(K_RIGHT )
#define K_yEND iup_XkeySys(K_END )
#define K_yDOWN iup_XkeySys(K_DOWN )
#define K_yPGDN iup_XkeySys(K_PGDN )
#define K_yINS iup_XkeySys(K_INS )
#define K_yDEL iup_XkeySys(K_DEL )
#define K_ySP iup_XkeySys(K_SP )
#define K_yTAB iup_XkeySys(K_TAB )
#define K_yCR iup_XkeySys(K_CR )
#define K_yBS iup_XkeySys(K_BS )
#define K_yPAUSE iup_XkeySys(K_PAUSE )
#define K_yESC iup_XkeySys(K_ESC )
#define K_yCLEAR iup_XkeySys(K_CLEAR )
#define K_yCcedilla iup_XkeySys(K_Ccedilla)
#define K_yF1 iup_XkeySys(K_F1 )
#define K_yF2 iup_XkeySys(K_F2 )
#define K_yF3 iup_XkeySys(K_F3 )
#define K_yF4 iup_XkeySys(K_F4 )
#define K_yF5 iup_XkeySys(K_F5 )
#define K_yF6 iup_XkeySys(K_F6 )
#define K_yF7 iup_XkeySys(K_F7 )
#define K_yF8 iup_XkeySys(K_F8 )
#define K_yF9 iup_XkeySys(K_F9 )
#define K_yF10 iup_XkeySys(K_F10 )
#define K_yF11 iup_XkeySys(K_F11 )
#define K_yF12 iup_XkeySys(K_F12 )
#define K_yF13 iup_XkeySys(K_F13 )
#define K_yF14 iup_XkeySys(K_F14 )
#define K_yF15 iup_XkeySys(K_F15 )
#define K_yF16 iup_XkeySys(K_F16 )
#define K_yF17 iup_XkeySys(K_F17 )
#define K_yF18 iup_XkeySys(K_F18 )
#define K_yF19 iup_XkeySys(K_F19 )
#define K_yF20 iup_XkeySys(K_F20 )
#define K_yPrint iup_XkeySys(K_Print )
#define K_yMenu iup_XkeySys(K_Menu )
#define K_sPlus iup_XkeyShift(K_plus )
#define K_sComma iup_XkeyShift(K_comma )
#define K_sMinus iup_XkeyShift(K_minus )
#define K_sPeriod iup_XkeyShift(K_period )
#define K_sSlash iup_XkeyShift(K_slash )
#define K_sAsterisk iup_XkeyShift(K_asterisk)
#define K_cA iup_XkeyCtrl(K_A)
#define K_cB iup_XkeyCtrl(K_B)
#define K_cC iup_XkeyCtrl(K_C)
#define K_cD iup_XkeyCtrl(K_D)
#define K_cE iup_XkeyCtrl(K_E)
#define K_cF iup_XkeyCtrl(K_F)
#define K_cG iup_XkeyCtrl(K_G)
#define K_cH iup_XkeyCtrl(K_H)
#define K_cI iup_XkeyCtrl(K_I)
#define K_cJ iup_XkeyCtrl(K_J)
#define K_cK iup_XkeyCtrl(K_K)
#define K_cL iup_XkeyCtrl(K_L)
#define K_cM iup_XkeyCtrl(K_M)
#define K_cN iup_XkeyCtrl(K_N)
#define K_cO iup_XkeyCtrl(K_O)
#define K_cP iup_XkeyCtrl(K_P)
#define K_cQ iup_XkeyCtrl(K_Q)
#define K_cR iup_XkeyCtrl(K_R)
#define K_cS iup_XkeyCtrl(K_S)
#define K_cT iup_XkeyCtrl(K_T)
#define K_cU iup_XkeyCtrl(K_U)
#define K_cV iup_XkeyCtrl(K_V)
#define K_cW iup_XkeyCtrl(K_W)
#define K_cX iup_XkeyCtrl(K_X)
#define K_cY iup_XkeyCtrl(K_Y)
#define K_cZ iup_XkeyCtrl(K_Z)
#define K_c1 iup_XkeyCtrl(K_1)
#define K_c2 iup_XkeyCtrl(K_2)
#define K_c3 iup_XkeyCtrl(K_3)
#define K_c4 iup_XkeyCtrl(K_4)
#define K_c5 iup_XkeyCtrl(K_5)
#define K_c6 iup_XkeyCtrl(K_6)
#define K_c7 iup_XkeyCtrl(K_7)
#define K_c8 iup_XkeyCtrl(K_8)
#define K_c9 iup_XkeyCtrl(K_9)
#define K_c0 iup_XkeyCtrl(K_0)
#define K_cPlus iup_XkeyCtrl(K_plus )
#define K_cComma iup_XkeyCtrl(K_comma )
#define K_cMinus iup_XkeyCtrl(K_minus )
#define K_cPeriod iup_XkeyCtrl(K_period )
#define K_cSlash iup_XkeyCtrl(K_slash )
#define K_cSemicolon iup_XkeyCtrl(K_semicolon )
#define K_cEqual iup_XkeyCtrl(K_equal )
#define K_cBracketleft iup_XkeyCtrl(K_bracketleft )
#define K_cBracketright iup_XkeyCtrl(K_bracketright)
#define K_cBackslash iup_XkeyCtrl(K_backslash )
#define K_cAsterisk iup_XkeyCtrl(K_asterisk )
#define K_mA iup_XkeyAlt(K_A)
#define K_mB iup_XkeyAlt(K_B)
#define K_mC iup_XkeyAlt(K_C)
#define K_mD iup_XkeyAlt(K_D)
#define K_mE iup_XkeyAlt(K_E)
#define K_mF iup_XkeyAlt(K_F)
#define K_mG iup_XkeyAlt(K_G)
#define K_mH iup_XkeyAlt(K_H)
#define K_mI iup_XkeyAlt(K_I)
#define K_mJ iup_XkeyAlt(K_J)
#define K_mK iup_XkeyAlt(K_K)
#define K_mL iup_XkeyAlt(K_L)
#define K_mM iup_XkeyAlt(K_M)
#define K_mN iup_XkeyAlt(K_N)
#define K_mO iup_XkeyAlt(K_O)
#define K_mP iup_XkeyAlt(K_P)
#define K_mQ iup_XkeyAlt(K_Q)
#define K_mR iup_XkeyAlt(K_R)
#define K_mS iup_XkeyAlt(K_S)
#define K_mT iup_XkeyAlt(K_T)
#define K_mU iup_XkeyAlt(K_U)
#define K_mV iup_XkeyAlt(K_V)
#define K_mW iup_XkeyAlt(K_W)
#define K_mX iup_XkeyAlt(K_X)
#define K_mY iup_XkeyAlt(K_Y)
#define K_mZ iup_XkeyAlt(K_Z)
#define K_m1 iup_XkeyAlt(K_1)
#define K_m2 iup_XkeyAlt(K_2)
#define K_m3 iup_XkeyAlt(K_3)
#define K_m4 iup_XkeyAlt(K_4)
#define K_m5 iup_XkeyAlt(K_5)
#define K_m6 iup_XkeyAlt(K_6)
#define K_m7 iup_XkeyAlt(K_7)
#define K_m8 iup_XkeyAlt(K_8)
#define K_m9 iup_XkeyAlt(K_9)
#define K_m0 iup_XkeyAlt(K_0)
#define K_mPlus iup_XkeyAlt(K_plus )
#define K_mComma iup_XkeyAlt(K_comma )
#define K_mMinus iup_XkeyAlt(K_minus )
#define K_mPeriod iup_XkeyAlt(K_period )
#define K_mSlash iup_XkeyAlt(K_slash )
#define K_mSemicolon iup_XkeyAlt(K_semicolon )
#define K_mEqual iup_XkeyAlt(K_equal )
#define K_mBracketleft iup_XkeyAlt(K_bracketleft )
#define K_mBracketright iup_XkeyAlt(K_bracketright)
#define K_mBackslash iup_XkeyAlt(K_backslash )
#define K_mAsterisk iup_XkeyAlt(K_asterisk )
#define K_yA iup_XkeySys(K_A)
#define K_yB iup_XkeySys(K_B)
#define K_yC iup_XkeySys(K_C)
#define K_yD iup_XkeySys(K_D)
#define K_yE iup_XkeySys(K_E)
#define K_yF iup_XkeySys(K_F)
#define K_yG iup_XkeySys(K_G)
#define K_yH iup_XkeySys(K_H)
#define K_yI iup_XkeySys(K_I)
#define K_yJ iup_XkeySys(K_J)
#define K_yK iup_XkeySys(K_K)
#define K_yL iup_XkeySys(K_L)
#define K_yM iup_XkeySys(K_M)
#define K_yN iup_XkeySys(K_N)
#define K_yO iup_XkeySys(K_O)
#define K_yP iup_XkeySys(K_P)
#define K_yQ iup_XkeySys(K_Q)
#define K_yR iup_XkeySys(K_R)
#define K_yS iup_XkeySys(K_S)
#define K_yT iup_XkeySys(K_T)
#define K_yU iup_XkeySys(K_U)
#define K_yV iup_XkeySys(K_V)
#define K_yW iup_XkeySys(K_W)
#define K_yX iup_XkeySys(K_X)
#define K_yY iup_XkeySys(K_Y)
#define K_yZ iup_XkeySys(K_Z)
#define K_y1 iup_XkeySys(K_1)
#define K_y2 iup_XkeySys(K_2)
#define K_y3 iup_XkeySys(K_3)
#define K_y4 iup_XkeySys(K_4)
#define K_y5 iup_XkeySys(K_5)
#define K_y6 iup_XkeySys(K_6)
#define K_y7 iup_XkeySys(K_7)
#define K_y8 iup_XkeySys(K_8)
#define K_y9 iup_XkeySys(K_9)
#define K_y0 iup_XkeySys(K_0)
#define K_yPlus iup_XkeySys(K_plus )
#define K_yComma iup_XkeySys(K_comma )
#define K_yMinus iup_XkeySys(K_minus )
#define K_yPeriod iup_XkeySys(K_period )
#define K_ySlash iup_XkeySys(K_slash )
#define K_ySemicolon iup_XkeySys(K_semicolon )
#define K_yEqual iup_XkeySys(K_equal )
#define K_yBracketleft iup_XkeySys(K_bracketleft )
#define K_yBracketright iup_XkeySys(K_bracketright)
#define K_yBackslash iup_XkeySys(K_backslash )
#define K_yAsterisk iup_XkeySys(K_asterisk )
#endif
@@ -1,54 +0,0 @@
/** \file
* \brief IUP Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUA_H
#define __IUPLUA_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
/** @cond DOXYGEN_SHOULD_IGNORE_THIS */
#ifndef IUPLUA_API
#ifdef IUPLUA_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUPLUA_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUPLUA_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUPLUA_API __attribute__ ((visibility("default")))
#else
#define IUPLUA_API
#endif
#else
#define IUPLUA_API
#endif /* IUPLUA_BUILD_LIBRARY */
#endif /* IUPLUA_API */
/** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
IUPLUA_API int iuplua_open(lua_State *L);
IUPLUA_API int iupkey_open(lua_State *L); /* does nothing, kept for backward compatibility */
IUPLUA_API int iuplua_close(lua_State * L);
/* utilities */
IUPLUA_API int iuplua_isihandle(lua_State *L, int pos);
IUPLUA_API Ihandle* iuplua_checkihandle(lua_State *L, int pos);
IUPLUA_API void iuplua_pushihandle(lua_State *L, Ihandle *n);
IUPLUA_API int iuplua_dofile(lua_State *L, const char *filename);
IUPLUA_API int iuplua_dostring(lua_State *L, const char *string, const char *chunk_name);
IUPLUA_API int iuplua_dobuffer(lua_State *L, const char *buffer, int len, const char *chunk_name);
IUPLUA_API void iuplua_show_error_message(const char *pname, const char* msg);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief IupMglPlot Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUA_MGLPLOT_H
#define __IUPLUA_MGLPLOT_H
#ifdef __cplusplus
extern "C" {
#endif
int iup_mglplotlua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief iup_plot Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUA_PLOT_H
#define __IUPLUA_PLOT_H
#ifdef __cplusplus
extern "C" {
#endif
int iup_plotlua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief IupScintilla Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUA_SCINTILLA_H
#define __IUPLUA_SCINTILLA_H
#ifdef __cplusplus
extern "C" {
#endif
int iup_scintillalua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief iupcontrols Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUACONTROLS_H
#define __IUPLUACONTROLS_H
#ifdef __cplusplus
extern "C" {
#endif
int iupcontrolslua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief Binding of new iupfiledlg to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAFILEDLG_H
#define __IUPLUAFILEDLG_H
#ifdef __cplusplus
extern "C" {
#endif
int iupfiledlglua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief Binding of iupglcanvas to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAGL_H
#define __IUPLUAGL_H
#ifdef __cplusplus
extern "C" {
#endif
int iupgllua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief iupglcontrols Binding for Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAGLCONTROLS_H
#define __IUPLUAGLCONTROLS_H
#ifdef __cplusplus
extern "C" {
#endif
int iupglcontrolslua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief Bindig of iupim functions to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAIM_H
#define __IUPLUAIM_H
#ifdef __cplusplus
extern "C" {
#endif
int iupimlua_open(lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief Binding of iupolecontrol to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAOLE_H
#define __IUPLUAOLE_H
#ifdef __cplusplus
extern "C" {
#endif
int iupolelua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,25 +0,0 @@
/** \file
* \brief IupLuaScripterDlg dialog and Lua binding
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUASCRIPTERDLG_H
#define __IUPLUASCRIPTERDLG_H
#ifdef __cplusplus
extern "C" {
#endif
void IupLuaScripterDlgOpen(lua_State * L);
Ihandle* IupLuaScripterDlg(void);
/* Lua binding */
int iupluascripterdlglua_open(lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,20 +0,0 @@
/** \file
* \brief Binding of iuptuio to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUATUIO_H
#define __IUPLUATUIO_H
#ifdef __cplusplus
extern "C" {
#endif
int iuptuiolua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,42 +0,0 @@
/** \file
* \brief Binding of iupwebbrowser to Lua.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPLUAWEB_H
#define __IUPLUAWEB_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
/** @cond DOXYGEN_SHOULD_IGNORE_THIS */
#ifndef IUPLUAWEB_API
#ifdef IUPLUAWEB_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUPLUAWEB_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUPLUAWEB_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUPLUAWEB_API __attribute__ ((visibility("default")))
#else
#define IUPLUAWEB_API
#endif
#else
#define IUPLUAWEB_API
#endif /* IUPLUAWEB_BUILD_LIBRARY */
#endif /* IUPLUAWEB_API */
/** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
IUPLUAWEB_API int iupweblua_open (lua_State * L);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,45 +0,0 @@
/** \file
* \brief Ole control.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPOLE_H
#define __IUPOLE_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
/** @cond DOXYGEN_SHOULD_IGNORE_THIS */
#ifndef IUPOLE_API
#ifdef IUPOLE_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUPOLE_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUPOLE_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUPOLE_API __attribute__ ((visibility("default")))
#else
#define IUPOLE_API
#endif
#else
#define IUPOLE_API
#endif /* IUP_BUILD_LIBRARY */
#endif /* IUPOLE_API */
/** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
IUPOLE_API Ihandle *IupOleControl(const char* progid);
IUPOLE_API int IupOleControlOpen(void);
#ifdef __cplusplus
}
#endif
#endif
@@ -1,21 +0,0 @@
/** \file
* \brief IupTuioClient control
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPTUIO_H
#define __IUPTUIO_H
#if defined(__cplusplus)
extern "C" {
#endif
int IupTuioOpen(void);
Ihandle* IupTuioClient(int port);
#if defined(__cplusplus)
}
#endif
#endif
@@ -1,45 +0,0 @@
/** \file
* \brief Web control.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPWEB_H
#define __IUPWEB_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
/** @cond DOXYGEN_SHOULD_IGNORE_THIS */
#ifndef IUPWEB_API
#ifdef IUPWEB_BUILD_LIBRARY
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#define IUPWEB_API EMSCRIPTEN_KEEPALIVE
#elif WIN32
#define IUPWEB_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#define IUPWEB_API __attribute__ ((visibility("default")))
#else
#define IUPWEB_API
#endif
#else
#define IUPWEB_API
#endif /* IUP_BUILD_LIBRARY */
#endif /* IUPWEB_API */
/** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
IUPWEB_API int IupWebBrowserOpen(void);
IUPWEB_API Ihandle *IupWebBrowser(void);
#ifdef __cplusplus
}
#endif
#endif
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3733
View File
File diff suppressed because it is too large Load Diff
+42
View File
@@ -0,0 +1,42 @@
{
"name": "patheditor",
"private": true,
"version": "4.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"@tailwindcss/vite": "^4.3.0",
"@tauri-apps/api": "^2.11.0",
"@tauri-apps/plugin-dialog": "^2.7.1",
"i18next": "^26.2.0",
"i18next-browser-languagedetector": "^8.2.1",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react-i18next": "^17.0.8",
"tailwindcss": "^4.3.0",
"zustand": "^5.0.13"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@tauri-apps/cli": "^2.11.2",
"@types/node": "^24.12.3",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"eslint": "^10.3.0",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^17.6.0",
"typescript": "~6.0.2",
"typescript-eslint": "^8.59.2",
"vite": "^8.0.12",
"vitest": "^4.1.7"
}
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="bluesky-icon" viewBox="0 0 16 17">
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
</symbol>
<symbol id="discord-icon" viewBox="0 0 20 19">
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
</symbol>
<symbol id="documentation-icon" viewBox="0 0 21 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
</symbol>
<symbol id="github-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
</symbol>
<symbol id="social-icon" viewBox="0 0 20 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
</symbol>
<symbol id="x-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

+4
View File
@@ -0,0 +1,4 @@
# Generated by Cargo
# will have compiled files and executables
/target/
/gen/schemas

Some files were not shown because too many files have changed in this diff Show More