Jea*_*ouX 3 gtk user-interface spreadsheet gtk2hs
我打算制作一个程序来以电子表格样式编辑数据。
是否有特定的小部件可以使用 Gtk(任何版本)制作电子表格,例如 wxWidget 中的 wxSheet ?
如果没有,您是否知道它是否打算由 Gtk 开发人员实现?
关于我希望实现的功能的一些细节:
根本不打算使用以下功能:
准确地说,我想要这样的东西:

小智 6
我们需要做一些类似的事情(实际上有更完整的电子表格功能,以及其他一些复杂性)。我们研究了各种策略,发现其中包括:
1) OpenOffice 和 GNumerics(使用 Gtk3 构建)等开源包实现了这些功能。他们要么不明确地使用 Gtk,要么他们似乎使用“原始 Gtk”而不是提供明确的“工作表小部件”。我们放弃了这种太昂贵的策略,在 GNumerics 的情况下,我们发现他们的编码风格对于我们贫乏的大脑来说太复杂/太难了。
2) andlabs 走在正确的轨道上,基于我们最终构建的内容。我们在很大程度上依赖于 GtkExtra。这当然可以提供(开箱即用)您需要的大部分功能。可以给您一个想法的许多可能的评论中的一些包括:
a) GtkExtra 有一个名为 GtkSheet 的小部件,它是一个基本的“网格/电子表格”,但也带有“testgtksheet.c/.exe”,这是您“开箱即用”的大部分内容。
b) 您需要为“范围”的剪切/复制/粘贴 (CCP) 编写自己的代码,因为“开箱即用”的 GtkExtra 代码只能对跨应用程序的单个单元格的字符串内容进行 CCP(即通过GtkClipboard) ,如下图所示,显示了从 Excel 到我们的应用程序的范围 CCP(“较短的弹出窗口”是“开箱即用”的 CCP,而另一个是我们的自定义版本)。
此外,到目前为止,我们还无法弄清楚如何跨应用程序(例如在 GtkExtra 和 Excel 或 OpenOffice 等之间)对“完整单元格内容”(即公式、颜色等)进行 CCP,另请参阅发布Gtk剪贴板电子表格值与公式 (Windows) )。然而,字符串/值是相当简单的。
更新:随后我们证明了一种对“完整单元格/范围”对象(即公式、属性等)进行 CCP 处理的方法,如此处所述(Gtk 剪贴板电子表格值与公式(Windows))
当然,在我们的例子中,这种“应用程序内”的 CCP 非常简单,因为整个应用程序基于数组,而不是对象(数组基础更适合我们复杂的计算问题),并且不需要剪贴板“内部”用于,但我们让用户选择是否映射到/从剪贴板或使用其他方式。
你没有说明你的操作系统,GtkClipboard在 Windows 和 Linux 等上有一些不同。
c) GtkExtra“开箱即用”元素中可能有许多“默认”设置,您可能喜欢也可能不喜欢。在我们的例子中,我们不得不重新编写大量代码,让 Cell/Range 等选择/导航以更符合我们的需求和“标准电子表格协议”的方式执行。
d) 我们还为诸如“弹出菜单”等“模块”重新编写了大量代码,因为我们的需求再次超出了 GtkExtra 默认/“开箱即用”等元素,尽管您的要求可能不需要太多这样的。
e) 如果您的电子表格还需要能够处理公式,您将需要获取或编写解析器/计算器。根据您的需要,这可以从非常容易到非常复杂。在我们的例子中,我们使用复杂的数学进行大量的计算分析,所以我们不得不走“昂贵”的路线,尽管您的要求可能不需要这样。
f) 如果希望添加功能/“模块”,例如绘图等,类似的评论适用,尽管 GtkExtra 确实提供了各种额外的小部件来为其中的一些提供“体面的位”,尽管您的要求可能不需要这样。
但是,要以传统电子表格方式连接(任何)绘图/图形,或者就此而言,如果您只需要“多区域”范围 CCP,那么您将需要进行一些重要的编码。
g) 您的 OP 不清楚您是否还需要从文件中读取/写入工作表(例如,除了 CCP),如果需要,文件格式是什么。同样,根据您的需要,这可能相对容易到非常困难。GtkExtra 在许多电子表格格式(xls、xlsx、ods、csv、sylk 等)方面并没有为通用电子表格 IO 提供太多支持,尽管它们确实提供了相当不错的小部件来帮助您开始使用“文件小部件”,“字体/网格”小部件等(见下图,我们的应用程序称为“ARTEx”)。
h) 虽然网上有很多地方说 GtkExtra 和 Gtk3,但我们发现坚持使用 Gtk2(这是 GtkExtra 的“官方”基础)更好(至少对于我们的需求),然后你会还需要注意其他各种软件包(例如,如果您使用 Glade,那么您需要获得支持 Gtk2 的相当旧版本的 Glade,等等)。
i) 我们确实发现了一些导致 Gtk/GtkExtra 崩溃的子程序和情况,并且不得不重新编写一些 Gtk/GtkExtra 源代码。
顺便说一下,这些图像是为一个用 Fortran 编写的应用程序(这是处理复杂/大型计算问题的最佳工具)并使用 ISO 绑定/接口到基于 C 的 Gtk 位,在 Windows 上运行(使用 MingW 构建并创建 Gtk 等) dll's),所以你可以用 Gtk/GtkExtra 做很多事情。