Настройка GtkFileChooser - PullRequest
       5

Настройка GtkFileChooser

5 голосов
/ 08 июля 2011

GTK + noob вопрос здесь:

Можно ли настроить GtkFileChooserButton или GtkFileChooserDialog, чтобы удалить раздел «Места» (слева) и поле ввода «Расположение» вверху?

По сути, я пытаюсь разрешить пользователю выбирать файлы только из определенной папки (которую я установил с помощью gtk_file_chooser_set_current_folder ) и отключать навигацию в других местах файловой системы.

Это стандартный диалог выбора файлов: The standard GtkFilechooser Dialog

Это то, что мне нужно: enter image description here

Ответы [ 2 ]

5 голосов
/ 11 июля 2011

Не похоже, что это возможно в стандартном диалоге выбора файлов.Например, здесь - это документ, в котором обсуждается, почему такая вещь может быть полезной и как ее можно реализовать, но идея так и не была реализована.напишите свой собственный диалог, который реализует интерфейс GtkFileChooser, основанный на коде GtkFileChooserDialog, но скрывает строку адреса и список закладок.

4 голосов
/ 03 августа 2011

Вы можете разобраться с отдельными детьми, узнав, где они есть, с помощью gtkparasite , а затем получить к ним доступ с помощью get_children.

Обязательно используйте .show () вместо .run () для проверки диалога с помощью gtkparasite. Если вы используете .run (), диалоговое окно отображается в модальном режиме, поэтому вы не можете его проверить.

Например, я скрываю виджеты Path и Places с инструкциями ниже:

dialog = gtk.FileChooserDialog("Open***", None, gtk.FILE_CHOOSER_ACTION_OPEN,
            (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK))
dialog.set_show_hidden(True)
dialog.set_default_response(gtk.RESPONSE_OK)       
vbox = dialog.get_children()[0].get_children()[0].get_children( [0].get_children()[0]
vbox.get_children()[0].hide()
vbox.get_children()[2].get_children()[0].hide()

Конечно, это не открытый API, поэтому он всегда может выйти за пределы базовых изменений.

Надеюсь, это имеет смысл ...

Пытался опубликовать изображение, но я новый пользователь ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...