Página Inicial > GdkCursor, Gtk/Gdk > Como mudar o cursor do mouse

Como mudar o cursor do mouse

Solução

Existe uma classe Gdk chamada GdkCursor para manipulação de cursores. Nela é passada um parâmetro indicando qual o cursor.
Existem constantes indicando o cursor à ser utilizado. (ver nas referências)

Exemplo

<?php
   // Classe de testes
   class Teste
   {
      // Vetor que armazena todos os widgets da interface
      public $widgets = array();
      
      // Construtor da classe
      public function __construct()
      {
         // Cria o container
         $fixed = new GtkFixed();
         
         // Cria o eventbox
         $this->widgets['evtTeste'] = new GtkEventBox();
         $this->widgets['evtTeste']->set_size_request(100, 50);
         $fixed->put($this->widgets['evtTeste'], 8, 8);
         
         // Adiciona todos os eventos ao eventbox
         $this->widgets['evtTeste']->set_events(Gdk::ALL_EVENTS_MASK);
         
         // Cria a janela
         $this->widgets['frmTeste'] = new GtkWindow();
         $this->widgets['frmTeste']->set_size_request(116, 66);
         $this->widgets['frmTeste']->set_resizable(FALSE);
         $this->widgets['frmTeste']->set_title("Teste");
         $this->widgets['frmTeste']->add($fixed);
         $this->widgets['frmTeste']->set_position(GTK::WIN_POS_CENTER);
         $this->widgets['frmTeste']->show_all();
         
         // Conecta os eventos do eventbox
         $this->widgets['evtTeste']->connect(
            "event",
            array($this, "evtTeste_onevents")
         );
         
         // Conecta o mouse move do label
         $this->widgets['frmTeste']->connect_simple(
            "destroy",
            array("Gtk", "main_quit")
         );
      }
      
      // Callback dos eventos do EventBox
      public function evtTeste_onevents($widget, $event)
      {
         // Verifica o evento ocorrido
         switch($event->type)
         {
            // Move move in
            case 10:
               $cursor = new GdkCursor(Gdk::MAN);
               $widget->window->set_cursor($cursor);
               break;
         }
      }
   }

   // Inicia a aplicação
   $teste = new Teste();
   gtk::main();
 

Explicação

É utilizada a classe para a construção do ícone. Após o ícone estar criado, setamos o mesmo no GdkWindow do widget.

Referências

http://gtk.php.net/manual/en/gdk.gdkcursor.php
http://gtk.php.net/manual/en/gdk.enum.cursor.php

Categories: GdkCursor, Gtk/Gdk Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.