/**
  * @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));
 }