gpt4 book ai didi

跨平台编辑器控件

转载 作者:太空狗 更新时间:2023-10-29 14:58:30 26 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我需要一个跨平台的编辑器控件作为内部工具中的 GUI 部件。控制可能是商业的,但价格合理。

所需功能:

  • 平台:Win32、OS X、Linux
  • UTF-8 支持
  • 对文本样式(或至少是颜色)的细粒度运行时控制
  • 不错的低级纯 C API,没有通常可怕的膨胀
  • 不应该阻止我拥有这些功能(即使我必须自己实现它们):
  • 撤消/重做
  • 复制/粘贴
  • 上下文菜单,取决于文本中的单击位置
  • 工具栏,取决于文本中的光标位置
  • 侧边栏面板,取决于文本中的光标位置

  • 其实上面需要的不是简单的控件,而是整个跨平台的GUI库。

    废弃的选项:
  • 闪烁和后代
  • FLTK
  • Fox-toolkit
  • gtksourceview

  • 更新:

    注意:我在这里插入了一些半写的丢弃推理,我道歉。 Scintilla 确实可以在 OS X 上运行。但是,如果我理解正确,Scintilla 的 API 是在 C++ 中。

    用例:

    我的用例是编写自定义的“半刚性”逻辑编辑器,用户可以在其中自由复制粘贴,在他希望的地方添加评论,如果愿意,甚至可以直接输入文本。但是文本结构是逻辑树的严格自然语言表示(本质上有点类似于 AST)。我计划编写一些类似智能感知(或类似代码模板)的东西,用作主要的创作工具(而不是手动输入逻辑)。

    顺便说一句,存储格式不是纯文本,而是提到的逻辑树的内部表示(带有注释和空格等元信息)。

    所以,我有所有必要的信息来自己渲染文本所需的颜色。我不需要任何外部词法分析器等。

    最佳答案

    正如约翰所写,众所周知,Scintilla 可以在 OS X 上运行。
    现在,它不是富文本组件,如果这就是您要找的。它是一个源代码编辑器:您不能将任意颜色应用于任意文本段,它使用词法分析器来设置内容样式。

    您没有告诉我们您的用例是什么。

    [编辑] 感谢您添加用例。

    免责声明 1:我不试图“出售” Scintilla,我只是想向您提供有关我熟悉的组件的信息,希望对您有所帮助... :-D
    请注意 Related Sites页面列出了许多可能有趣的替代编辑组件(或不感兴趣,其中很多仅适用于 Win32)。
    免责声明 2:我没有在 Win32 平台之外使用 Scintilla 的经验。

    但是查看源代码树,我看到了一个 scintilla/macosx 文件夹。除此之外,它还有一个包含 main.cpp 文件的 SciTest 子文件夹。尽管它有扩展,但对我来说它看起来很像纯 C。因此,它可以作为如何在 C 中使用 Scintilla 的示例。

    请注意,按照设计,Scintilla API 非常有限:它最初被用作大多数传统的 Win32 组件,通过向它发送消息。 Scintilla Documentation页面仅列出这些消息及其参数。 main.cpp 示例使用 MacOS X 样式的组件创建窗口,并使用类似 scintilla->WndProc(SCI_STYLESETFORE, 0, 0x808080); 的行发送命令。

    我不会声称它可以完成您需要的一切,甚至不会在 MacOS X 上完美运行,您必须进行试验(或询问改编的作者)以确保。
    此外,Scintilla 不会提供工具栏或侧边栏面板(这更属于应用程序本身)。但我认为它可以提供足够的通知来帮助您将这些侧组件保持在上下文中。
    您还需要为您的语法编写一个特定的词法分析器(此处为 C++)。如果你看看其他词法分析器是如何工作的,这并不难。也许你会找到一种足够接近的语言作为起点。
    或许还有兴趣将文档的某些部分设置为只读的功能,尽管我相信这还没有经过彻底的测试。

    哈。

    关于跨平台编辑器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/196820/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com