是否有Gtk电子表格小部件

时间:2015-03-02 23:59:03

标签: user-interface gtk spreadsheet gtk2hs

我打算制作一个以电子表格样式编辑数据的程序。

是否有特定的小部件可以在wxWidget中制作带有Gtk(任何版本)的电子表格,如wxSheet?

如果没有,您知道它是否打算由Gtk开发人员实施?

我希望实现的功能的一些细节:

  • 在单元格中编辑文本或数字
  • 将细胞选择复制/粘贴到Libre办公室等其他电子表格中,或者从其他电子表格中粘贴;
  • 添加/删除行和列
  • 独立修改单元格颜色
  • 每列的格式相同

根本不打算使用以下功能:

  • 合并/跨越单元格
  • 放置图片或"非常规"细胞中的东西。

确切地说,我想要这样的东西:

enter image description here

1 个答案:

答案 0 :(得分:3)

我们需要做类似的事情(实际上有更完整的电子表格功能和其他一些复杂功能)。我们研究了各种策略,并发现了以下内容:

1)OpenOffice和GNumerics(使用Gtk3构建)等开源软件包实现了这些功能。他们要么不明确地使用Gtk,要么他们似乎用#34; raw Gtk"而不是提供一个明确的表格小部件"。我们放弃了这个策略太昂贵了,在GNumerics的情况下,我们发现他们的编码风格对于我们微薄的大脑来说太复杂/困难了。

2)根据我们最终建造的内容,andlabs在正确的轨道上。我们在很大程度上依赖于GtkExtra。这当然可以提供(开箱即用)您需要的大部分功能。为您提供一些想法的一些可能的评论包括:

a)GtkExtra有一个名为GtkSheet的小部件,它是一个基本的"网格/电子表格",但也带有" testgtksheet.c / .exe",这是你的大部分内容希望"开箱即用"。

b)你需要为"范围"的剪切/复制/粘贴(CCP)编写自己的代码,因为"开箱即用" GtkExtra代码只能跨越应用程序(例如通过GtkClipboard)CCP的单个单元格的字符串内容,根据下面的图像显示从Excel到我们的应用程序的范围CCP("较短的弹出窗口" "开箱即用" CCP,而另一个是我们的自定义版本。

此外,我们还没有弄清楚如何使用CCP"完整的细胞内容" (即公式,颜色等)跨应用程序(例如,在GtkExtra和Excel之间,或OpenOffice等,另请参见SO帖子Gtk clipboard spreadsheet value vs formula (Windows))。但是,字符串/值非常简单。

更新:随后我们证明了一种方法来实现CCP"完整的Cell / Range"这里讨论的对象(即公式,属性等)(Gtk clipboard spreadsheet value vs formula (Windows)

当然,这样的CCP"在app"在我们的情况下,这一切都非常简单,因为整个应用程序都是基于数组而不是对象(数组基础更适合我们复杂的计算问题),并且不需要剪贴板"内部" for,但我们让用户选择是否映射到剪贴板或从剪贴板映射或使用其他方法。

您没有说明您的操作系统,Windows与Linux等的GtkClipboard存在一些差异。

c)可能有许多"默认" GtkExtra中的设置"开箱即用"你可能喜欢或不喜欢的元素。在我们的例子中,我们不得不重新编写相当多的代码,以便像Cell / Range等选择/导航一样以更符合我们需求和标准电子表格协议的方式执行#34;。

d)我们还为" modules"重写了很多代码。例如" pop menu""等等,再次,我们的需求超越了GtkExtra默认/"开箱即用"等元素,虽然你的要求可能不需要太多。

e)如果您的电子表格还需要能够处理公式,您将需要获取或编写解析器/计算器。根据您的需要,这可以从非常容易到极其复杂。在我们的例子中,我们使用复杂的数学进行大量的计算分析,因此我们必须选择昂贵的数据。路线,虽然您的要求可能不需要。

f)如果希望添加功能/"模块"比如绘图等,虽然GtkExtra确实带来了各种额外的小部件,以提供“正确的比特”#34;对于其中一些,尽管您的要求可能不需要。

然而,以传统的电子表格方式界面(任何)绘图/图形,或者如果你只是需要"多区域"范围CCP,那么你需要做一些非平凡的编码。

g)您的OP中不清楚您是否还需要向/从文件读取/写入工作表(例如,除CCP之外),如果是,则使用什么文件格式。同样,根据您的需求,这可能相对容易,非常困难。 GtkExtra在许多电子表格格式(xls,xlsx,ods,csv,sylk等等)方面没有为通用电子表格IO提供太多支持,尽管它们确实提供了相当不错的小部件来帮助你开始使用"文件小部件和#34;," font / grid"小工具等(见下图,我们的应用程序被称为" ARTEx")。

enter image description here

enter image description here

enter image description here

enter image description here

h)虽然网上有很多地方都说GtkExtra和Gtk3,但我们发现坚持使用Gtk2(这是"官方"基础)更好(至少对我们的需求而言)对于GtkExtra),然后您还需要对其他各种软件包进行一些处理(例如,如果您使用Glade,那么您需要获得支持Gtk2的Glade的旧版本等。)

i)我们确实发现了一些使Gtk / GtkExtra崩溃的子程序和环境,并且不得不重写一些Gtk / GtkExtra源代码。

顺便提一下,这些图片是针对用Fortran编写的应用程序(它是复杂/大型计算事务的最佳工具),并使用ISO绑定/接口来运行在Windows上运行的基于C的Gtk位(使用MingW和创建Gtk等dll' s,所以你可以用Gtk / GtkExtra做很多事。