C 跨平台编辑器控件
我需要一个跨平台的编辑器控件,作为内部工具中的GUI部分使用。控制可能是商业性的,但价格合理 所需功能:C 跨平台编辑器控件,c,user-interface,editor,cross-platform,C,User Interface,Editor,Cross Platform,我需要一个跨平台的编辑器控件,作为内部工具中的GUI部分使用。控制可能是商业性的,但价格合理 所需功能: 平台:Win32、OS X、Linux UTF-8支持 文本样式(或至少颜色)的细粒度运行时控件 漂亮的低级普通C API,没有通常可怕的膨胀 不应阻止我拥有这些功能(即使我必须自己实现它们): 撤消/重做 复制/粘贴 上下文菜单,取决于文本中的单击位置 工具栏,取决于光标在文本中的位置 侧栏面板,取决于光标在文本中的位置 事实上,以上要求的不是简单的控制,而是整个跨平台GUI库 放
- 平台:Win32、OS X、Linux
- UTF-8支持
- 文本样式(或至少颜色)的细粒度运行时控件
- 漂亮的低级普通C API,没有通常可怕的膨胀
- 不应阻止我拥有这些功能(即使我必须自己实现它们):
- 撤消/重做
- 复制/粘贴
- 上下文菜单,取决于文本中的单击位置
- 工具栏,取决于光标在文本中的位置
- 侧栏面板,取决于光标在文本中的位置
- 闪烁体及其后代
- FLTK
- 福克斯工具包
- gtksourceview
您可以尝试使用GTK+或Qt。正如John所写,斯金特拉已知在OS X上运行。
现在,它不是一个富文本组件,如果这是您正在寻找的。它是一个源代码编辑器:您不能将任意颜色应用于任意文本段,它使用lexer来设置内容的样式 你没有告诉我们你的用例是什么 [编辑]感谢您添加用例 免责声明1:我不想“销售”斯金特拉,我只是想向您提供我熟悉的组件的信息,希望能帮助您……:-D
请注意,该页面列出了许多有趣的替代编辑组件(或者不有趣,其中许多仅适用于Win32)。
免责声明2:我没有在Win32平台之外使用闪烁体的经验 但是看源代码树,我看到一个闪烁/macosx文件夹。除此之外,它还有一个SCIEST子文件夹和一个main.cpp文件。尽管它是扩展的,但对我来说它很像纯C。因此,它可以作为如何在C中使用闪烁体的一个例子 请注意,从设计上看,斯金特拉API非常有限:它最初是通过向其发送消息而被用作大多数传统的Win32组件的。该页面仅列出这些消息及其参数。main.cpp示例使用MacOS X样式的组件创建窗口,并发送命令行,如
scatinlla->WndProc(SCI_STYLESETFORE,0,0x8080)代码>
我不会宣称它能满足您的所有需求,甚至不会宣称它在MacOS X上工作完美无瑕,您必须进行实验(或询问改编本的作者)才能确定。
此外,斯金塞拉不会提供工具栏或边栏面板(这更属于应用程序本身)。但我认为它可以提供足够的通知,帮助您保持这些辅助组件的上下文。
您还需要为您的语法编写一个特定的lexer(这里是C++)。这并不难,如果你看看如何工作其他lexer。也许你会找到一种足够接近的语言作为起点。
也许有趣的是将文档的某些部分设置为只读的特性,尽管我相信这还没有经过彻底的测试
嗯。嗯,
您也许可以使用文本小部件——据说它很好而且灵活——来看看
或者你可以使用一些嵌入式/游戏工具包(比如)——但我想,有一个具有编辑功能的文本小部件会更麻烦
但对我来说,说你想做一个跨平台的cgui,然后写下GTK似乎是浪费了很多时间和精力。您可能最终会切换语言或使用GTK。FLTK的TextEditor小部件就是您所需要的。它简单、直接且易于使用,具有utf8,您可以轻松地拥有文本样式。只需几行就可以拥有一个编辑器。检查/test/editor.cxx示例。它在OSX上也能完美工作。此外,这里还解释了您所需要的一切:。非常抱歉。OSX的注释刚刚滑入(以及FLTK的半书面原因)。GtkTextView:要在OS X上获得GTK+,您必须安装大量带有端口的软件包,我说得对吗?(至少我是这样做的。)对我来说太重了。2.QTextEdit:是C++ 1。不,在2使用框架安装程序:没有很多跨平台编辑器,你会很愚蠢地丢弃一个C++编写的。我增加了用例。关于Scintilla和Listel:对不起,我描述了我的情况很差。我不需要莱克瑟。我的数据结构非常严格(尽管对用户来说是自然语言文本),我从中了解所有需要的文本样式。编写lexer将是不必要的复杂。lexer:它们在闪烁体中是可选的,它们只是进行语法着色的标准方法。但是你可以完全不着色,或者使用另一种着色方式(客户端程序可以发送消息将任意样式应用于任何文本段)。我不知道你是否收到重要更新的通知,所以我写此评论是为了告诉你