我打算制作一个程序,以电子表格样式编辑数据。
是否存在使用wtWidget中的wxSheet之类的Gtk(任何版本)制作电子表格的特定小部件?
如果不是,您是否知道它是否打算由Gtk开发人员实施?
我希望实现的功能的一些细节:
根本不打算使用以下功能:
确切地说,我想要这样的东西:
最佳答案
我们需要做一些类似的事情(实际上是使用更完整的电子表格功能以及一些其他复杂性)。我们研究了各种策略,并发现了以下方面:
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 clipboard spreadsheet value vs formula (Windows)发布)。但是,字符串/值相当简单。
更新:随后,我们证明了一种用于CCP的“完整单元格/范围”对象(即公式,属性等)的方法,如此处所讨论的(Gtk clipboard spreadsheet value vs formula (Windows))
当然,在我们的案例中,这种“在应用程序内”的CCP非常简单,因为整个应用程序都是基于数组而不是对象(数组基础更适合于我们复杂的计算问题),并且不需要剪贴板“内部”用于,但我们让用户选择是映射到剪贴板还是从剪贴板映射或使用其他方式。
您没有声明您的操作系统,并且Windows和Linux等上的GtkClipboard
有所不同。
c)您可能会或可能不会喜欢GtkExtra“开箱即用”元素中的许多“默认”设置。在我们的案例中,我们不得不重新编写大量代码,以使单元格/范围等选择/导航等操作以更符合我们的需求和“标准电子表格协议”的方式执行。
d)我们还为“模块”(例如“弹出菜单”等)重新编写了很多代码,同样,我们的需求超出了GtkExtra默认值/“开箱即用”等元素,尽管您的需求可能不需要太多这样的。
e)如果您的电子表格还需要能够处理公式,则需要获取或编写解析器/计算器。根据您的需求,范围从非常容易到非常复杂。在我们的案例中,我们使用复杂的数学进行了大量的计算分析,因此我们不得不走“昂贵”的道路,尽管您的需求可能不需要这样做。
f)如果希望添加功能/“模块”(例如绘图等),也可以使用类似的注释,尽管GtkExtra确实提供了各种其他小部件来为其中的某些部分提供“不错的功能”,尽管您的要求可能不需要这样。
但是,要以传统电子表格方式连接(任何)绘图/图形,或者如果您只需要“多区域”范围CCP,那么您将需要进行一些简单的编码。
g)从您的OP中尚不清楚您是否还需要向/从文件读取/写入工作表(例如,除了CCP之外),以及是否需要读取什么文件格式。同样,根据您的需求,这可能相对容易甚至相当困难。尽管GtkExtra确实提供了相当不错的小部件来帮助您开始使用“文件小部件”,“”,但GtkExtra在许多电子表格格式(xls,xlsx,ods,csv,sylk等)方面并未为一般电子表格IO提供太多支持。字体/网格”小部件等(请参见下图,我们的应用程序称为“ARTEx”)。
h)尽管网络上有很多地方都提到使用Gtk3的GtkExtra,但我们发现(至少出于我们的需要)最好还是坚持使用Gtk2(这是GtkExtra的“官方”基础),然后您将还需要注意其他各种软件包(例如,如果使用Glade,则需要获得支持Gtk2的Glade的较旧版本等)。
i)我们确实发现了一些导致Gtk / GtkExtra崩溃的子程序和情况,因此不得不重新编写一些Gtk / GtkExtra源代码。
顺便说一句,这些图像适用于用Fortran编写的应用程序(这是处理复杂/大型计算事务的最佳工具),并使用ISO绑定/接口与基于C的Gtk位,并在Windows上运行(使用MingW构建并创建Gtk等) dll),因此您可以使用Gtk / GtkExtra做很多事情。
关于user-interface - 是否有Gtk电子表格小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28821681/