2009-11-10 23 views
3

在我的代碼,我有這樣的臺詞:你可以設置一個GTK對話框中格萊德的文件過濾器?

Builder builder = new Builder(); 
builder.AddFromFile(gladefile); 
FileChooserDialog dialog = 
    (FileChooserDialog) builder.GetObject("dialog"); 

FileFilter[] filters = new FileFilter[2]; 
filters[0] = new FileFilter(); 
filters[0].Name = "Some filter"; 
filters[0].AddPattern("*.someextension"); 
filters[1] = new FileFilter(); 
filters[1].Name = "All files"; 
filters[1].AddPattern("*"); 

foreach (FileFilter filter in filters) 
    dialog.AddFilter(filter); 
dialog.Filter = filters[0]; 
dialog.SetFilename(defaultFile); 

有沒有辦法建立在格萊德這些過濾器,而不是做手工?

回答

2

號您可以創建在林間空地文件過濾器對象(版本3.6及以上),並將其添加到對話,但因爲你不能實際設置的名稱或文件篩選器的模式,這是相當無用的。

+0

哦,好吧。你知道是否有計劃允許你設置名稱或模式? – 2009-11-10 15:30:08

+0

我不知道,但它可能不符合格萊德。格萊德(和GtkBuilder)讓你設置GObjects的性質,但文件過濾器的東西是不是GObject的特性來實現。所以我不會指望它。 – ptomato 2009-11-10 16:44:44

3

現在是可能的。代碼段或許應該是這個樣子:

builder = Gtk.Builder() 
    builder.add_objects_from_file("***name of glade file****.glade", 
     ("filechooserdialog1", "filefilter1")) 
    dialog = self.builder.get_object("filechooserdialog1") 
    filefilter = self.builder.get_object("filefilter1") 
    dialog.add_filter(filefilter) 

enter image description here

enter image description here

相關問題