/** * @name __construct($title, $window, $autorun=FALSE, $type=Gtk::FILE_CHOOSER_ACTION_OPEN, $filters=array()) * @param string $title Texto à ser mostrado no titulo do dialogo * @param GtkWindow $window Janela à qual o dialogo é transistent * @param bool $autorun Opção para auto executar o dialogo ao construir o objeto * @param GtkFileChooserAction $type Tipo do dialogo * @param array $filter Vetor com as opções de filtro * @return GtkFileChooserDialog */ public function __construct($title, $window, $autorun = FALSE, $type = Gtk::FILE_CHOOSER_ACTION_OPEN, $filters = array()) { // Constroi o dialogo parent::__construct($title, $window, $type, array(Gtk::STOCK_OK, Gtk::RESPONSE_OK, Gtk::STOCK_CANCEL, Gtk::RESPONSE_CANCEL)); // Adiciona os filtros if ($filters != NULL) { // Percorre os filtros foreach ($filters as $filter) { // Cria o filtro $fileFilter = new GtkFileFilter(); // Percorre as propriedades foreach ($filter as $property => $value) { // Verifica o tipo da propriedade do filtro switch ($property) { case "name": $fileFilter->set_name($value); break; case "mime_type": $fileFilter->add_mime_type($value); break; case "pattern": $fileFilter->add_pattern($value); break; } } // Adiciona o filtro parent::add_filter($fileFilter); } } // Verifica se é auto executavel if ($autorun) { // Inicia o dialogo if (parent::run() == Gtk::RESPONSE_OK) { // Armazena os filenames $this->__filenames = parent::get_filenames(); } else { // Armazena os filenames $this->__filenames = FALSE; } // Destroi o dialogo parent::destroy(); } }
public function testFilter() { $info = array('/data/test.txt', 'file:///data/test.txt', 'test.txt', 'text/plain'); $filter = new GtkFileFilter(); $filter->add_pattern('*.txt'); $this->assertTrue($filter->filter($info)); $filter = new GtkFileFilter(); $filter->add_pattern('*.csv'); $this->assertFalse($filter->filter($info)); $filter = new GtkFileFilter(); $filter->add_mime_type('text/plain'); $this->assertTrue($filter->filter($info)); $filter = new GtkFileFilter(); $filter->add_mime_type('text/csv'); $this->assertFalse($filter->filter($info)); }