Com a evolução do PHP, senti necessidade da criação de um novo framework. Sempre senti a necessidade de utilizar namespaces, para utilizar widgets personalizados de forma transparente, pois por exemplo, no atual, os widgets possuem nome FFWWindow, e a abstração é feita por métodos estaticos, o que dificultou muito a documentação.
A criação de um novo framework irá possibilitar o uso de métodos que eram para ser desenvolvidos desde o inicio, porem sem sucesso, principalmente na hora de sobreescrever classes nativas.
O esboço do framework ja conta com uma criação de tela, baseada em GtkBuilder, que será a base para a extensão de outras interfaces, como glade e o próprio builder
O proposito do framework também muda um pouco. Atualmente ele somente provê funcionalidades para facilitar o uso do widget. Neste novo, o proposito será a utilização de um melhor MVC, melhorando também a performance e a facilidade de desenvolvimento de todo o projeto, e não só mais do uso do widget
Estou fazendo este post, para que possamos cria-lo juntos, e termos ideias juntos. Gostaria de mais da participação de vocês
No final das contas, veja como ficou o desenvolvimento, de um pequeno exemplo, no esboço atual
Imagem
Exemplo
interface.php
return array( 'GtkWindow' => array( 'properties' => array( 'name' => "frmMain", 'default-width' => 300, 'default-height' => 100, 'title' => "Janela Teste" ), 'signals' => array( 'destroy' => array($this, "frmMain_unload"), ), 'children' => array( 'GtkVBox' => array( 'properties' => array( 'name' => "vbox1", ), 'signals' => array(), 'children' => array( 'GtkLabel' => array( 'properties' => array( 'name' => "label1", 'label' => "Caminho", ), 'packing' => array( 'expand' => FALSE, 'fill' => FALSE, ), ), 'GtkEntry' => array( 'properties' => array( 'name' => "txtText", ), 'packing' => array( 'expand' => FALSE, 'fill' => FALSE, ), ), 'GtkButton' => array( 'properties' => array( 'name' => "btnConfirmar", 'label' => "Confirmar", ), 'signals' => array( 'clicked' => array($this, "btnConfirmar_clicked"), ), 'packing' => array( 'fill' => TRUE, 'expand' => TRUE, ), ), ) ) ), ), );
mainclass.php
// Namespace da aplicação namespace Sample; // Inclusão do Fabula Framework require_once "../../Fabula.php"; // Adiciona os includes use Fabula\Application; use Fabula\Gtk\Gtk; use Fabula\Interfaces\Bootstrap; use Fabula\Ui\Builder; /** * */ class Sample implements Bootstrap { /** * */ public $ui = array(); /** * */ public function run() { $ar = include "interface.php"; $this->ui = new Builder(); $this->ui->fromArray($ar); $this->ui->getByName("frmMain")->show_all(); Gtk::main(); } /** * */ public function frmMain_unload() { Gtk::main_quit(); exit(0); } /** * */ public function btnConfirmar_clicked() { $text = $this->ui->getByName("txtText")->get_text(); echo "Digitado: " . $text . "\n"; } } // Inicia a aplicação Application::getInstance() ->run("\\Sample\\Sample");
Coloque o código no Github para poder um melhor controle sobre o desenvolvimento! Não sou nenhum expert em PHP-GTK mais estou disposto a ajudar no que for possível!
Com certeza será versionado sim Josué. Assim que firmar as ideias, subirei ele para o repositório oficial
Muito bom. Bem mais prático.
Estou fazendo algumas modificações para o MVC, vai ficar melhor ainda, estou quase fazendo outro post sobre o assunto ja. Assim que ficar definido uma estrutura legal, ou comita-lo