我正在开发一个LibreOffice扩展,其中“选项”对话框必须有一个以编程方式创建的复选框列表,因为它们取决于用户安装的额外数据文件(a spelling/grammar checker的自定义设置)。你知道吗
在宏管理器dialog editor中手动添加一些复选框很容易,我可以将其导出到.xdl
文件并从Python加载,但我还没有找到任何类型的“容器”可以添加复选框,以便自动定位和滚动。你知道吗
我可以通过编程方式将条目添加到我在对话框.xdl使用
boxC = windowC.getControl("toggleIds")
boxM = boxC.getModel()
entries = ("some", "checkbox", "entries")
uno.invoke(boxM, "setPropertyValue", ("StringItemList", uno.Any("[]string", entries)))
但是在列表框中进行多重选择需要按ctrl键,这不是很直观。你知道吗
我可以通过编程方式将单个复选框添加到对话框窗口(扩展的选项选项卡的“主要部分”)
windowM = windowC.getModel()
ctx = uno.getComponentContext()
cb1 = ctx.ServiceManager.createInstanceWithContext("com.sun.star.form.component.CheckBox", ctx)
cb1.Label = "some label"
cb1.State = 1;
windowM.insertByName("mycb1", cb1)
这就把它放在了最上面,但是看起来我必须手动执行所有的滚动代码、定位等操作。如果我在这里执行insertByName
多次,它会将它们全部添加到同一位置,我还不知道如何将它们添加到另一个下面。你知道吗
TL;DR:有没有一种简单的方法以编程方式列出从Python扩展到LibreOffice的复选框列表?你知道吗
SvxCheckListBox
由LibreOffice用于对话框,例如工具->;选项->;LibreOffice->;字体中的替换表。但是,它没有被API公开,因此您不能使用它。你知道吗为了证明这一点,下面是API公开的所有接口和服务,其中包含来自
offapi/type_reference/offapi.idl
的单词“Box”。你知道吗所以唯一的办法就是。。。你知道吗
我的建议是创建一个名为“CheckListBox”的新的通用Python类来处理滚动和定位,然后派生或实例化它以生成选项的特定复选框。你知道吗
相关问题 更多 >
编程相关推荐