GTK FileChooserDialog选择文件和文件夹(Vala)

时间:2017-07-17 20:40:15

标签: gtk gtk3 vala

有没有办法让FileChooserDialog同时选择文件和文件夹?

我知道有FileChooserAction OPEN和SELECT_FOLDER,但它们是独占的。

PD:我不想要两个按钮,我已经知道如何做到这一点。我想要的是使用相同的按钮获取所有选定元素(文件和文件夹)的路径。

1 个答案:

答案 0 :(得分:3)

文件选择器操作与您想要的不同。我认为您使用的是set_select_multiple ()方法或select_multiple属性(均来自Gtk.FileChooser接口)。

然后,您可以根据需要使用get_filenames ()get_uris ()方法。

默认的GtkFileChooserDialog只允许您选择文件夹和文件,如果您在最近的“选项卡”上,但只要您使用普通文件夹,它就不允许您这样做。

为了实现这一点,你必须通过编写解决方案或创建一个新的小部件来使用Gtk.FileChooserWidget(例如,继承Gtk.FileChooserWidget或Gtk.Dialog)。

我创建了一个简单的示例,可以根据需要使用,并且可以轻松更改以满足您的需求。

以下代码基于Valadoc.org Gtk。FileChooserWidget页面,它可以满足您的要求:

...

编译:

file:///.../stackoverflow/3305/1 file:///.../stackoverflow/3305/2 file:///.../stackoverflow/3305/3 file:///.../stackoverflow/3305/Gtk.FileChooserDialog file:///.../stackoverflow/3305/Gtk.FileChooserDialog.vala file:///.../stackoverflow/3305/Gtk.FileChooserWidget file:///.../stackoverflow/3305/Gtk.FileChooserWidget.vala file:///.../stackoverflow/3305/img1.jpg file:///.../stackoverflow/3305/img2.jpg file:///.../stackoverflow/3305/img3.jpg file:///.../stackoverflow/3305/Makefile

选择选择后,应用程序会将您的选择打印到控制台:

widget

转储(路径部分替换为for ($i=1; $i<$ii_h-1; $i++) { $ii[$i*$ii_w] = 0; $ii2[$i*$ii_w] = 0; $rowsum = 0; $rowsum2 = 0; for ($j=1; $j<$ii_w-1; $j++) { $rgb = ImageColorAt($canvas, $j, $i); $red = ($rgb >> 16) & 0xFF; $green = ($rgb >> 8) & 0xFF; $blue = $rgb & 0xFF; $grey = (0.2989*$red + 0.587*$green + 0.114*$blue)>>0; // this is what matlab uses $rowsum += $grey; $rowsum2 += $grey*$grey; $ii_above = ($i-1)*$ii_w + $j; $ii_this = $i*$ii_w + $j; $ii[$ii_this] = $ii[$ii_above] + $rowsum; $ii2[$ii_this] = $ii2[$ii_above] + $rowsum2; } } ):

%<.cpp