<?php/*Nom : Stats WhatpulseAuteur: XneMail: xn.exelsior@gmail.com*/ class GtkWhatpulse extends GtkWindow { // On initialise quelques variables qui vont être utilisées plus tard. private $Container; private $ToolBar; private $ToolBouton; private $ListView; private $Model; private $Iter; private $Select; private $MyEdit; private $UserID = ''; /* Fonction constructrice, les actions de cette fonction sont éxecutées dés la création de la class */ function __construct() { // On intialise GtkWindow en lancant sa fonction constructrice. parent::__construct(); // On met un titre a notre fenêtre $this->set_title('- WhatPulse Stats -'); // On connecte le signal destroy a une fonction gtk qui permet de quitter proprement $this->connect_simple('destroy', array('gtk', 'main_quit')); // On enleve le resizable pour la fenetre $this->set_resizable(false); // On met un joli icone a la fenetre $this->set_icon($this->render_icon(Gtk::STOCK_SELECT_COLOR, Gtk::ICON_SIZE_DIALOG)); // On creer un conteneur qui va contenir notre controles $this->Container = new GtkFixed(); // On creer une toolbar, qui va nous permettre d'avoir notre bouton de refresh $this->ToolBar = new GtkToolBar(); $this->ToolBar->set_show_arrow(false); $this->ToolBar->set_border_width(0); $this->ToolBouton = GtkToolButton::new_from_stock(Gtk::STOCK_REFRESH); $this->ToolBouton->connect_simple('clicked',array($this,'LoadData'),'refresh'); $this->ToolBar->insert($this->ToolBouton,-1); // On creer notre ListView $this->ListView = new GtkTreeView(); // On creer le modele de données de notre listView, ici deux Strings $this->Model = new GtkListStore(Gtk::TYPE_STRING, Gtk::TYPE_STRING); // On affecte le Modele a notre Listview $this->ListView->set_model($this->Model); // On set quelques parametres de style. $this->ListView->set_border_width(10); $this->ListView->set_size_request(400,200); // On creer une scrollbar qui va etre pour notre listview $ScrollBar = new GtkScrolledWindow(); $ScrollBar->set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); // On Creer les styles de nos deux cellules en modifiant quelques propriétés $RenderColumn1 = new GtkCellRendererText(); $RenderColumn1->set_property('width', 240); $RenderColumn1->set_property('font','bold'); $RenderColumn1->set_property('background','#d2eef8'); $RenderColumn2 = new GtkCellRendererText(); $RenderColumn2->set_property('width', 150); // Un edit pour l'userID avec un texte par défault (mon UserID, la flemme de le retaper) $this->MyEdit = new GtkEntry('195719'); $this->MyEdit->set_size_request(50,19); // Et un label avec pour montrer que c'est là qu'il faut taper :x $ALabel = new GtkLabel('UserID :'); // Colonnes de la treeview $ListColumn1 = new GtkTreeViewColumn('Info',$RenderColumn1, 'text', 0); $ListColumn2 = new GtkTreeViewColumn('Value',$RenderColumn2, 'text', 1); // On les ajoute a notre ListView $this->ListView->append_column($ListColumn1); $this->ListView->append_column($ListColumn2); // Et on ajoute la listview, a notre Scrollbar $ScrollBar->add($this->ListView); // Maintenant on met tout nos controles dans notre conteneur $this->Container->put($ScrollBar,0,60); $this->Container->put($this->MyEdit,60,30); $this->Container->put($this->ToolBar,0,8); $this->Container->put($ALabel,61,15); // On ajoute le conteneur a notre fenetre $this->add($this->Container); // Et on affiche tout ca. $this->show_all(); } /* Cette fonction est ici pour recupere les infos, vérifier que l'UserID est bon, et afficher les infos dans la listview, on parse ici les infos avec SimpleXML */ public function LoadData() { $this->UserID = $this->MyEdit->get_text(); if (!empty($this->UserID)) { if (preg_match('/^[0-9]+$/',$this->UserID)) { $this->Model->clear(); $Check = file_get_contents('http://whatpulse.org/api/user.php?UserID='.$this->UserID); if ($Check != 'Unknow UserID given!') { $xml = simplexml_load_file('http://whatpulse.org/api/user.php?UserID='.$this->UserID); $this->Model->append(array('Date de génération',$xml->GeneratedTime)); $this->Model->append(array('ID Utilisateur',$xml->UserID)); $this->Model->append(array('Nom de compte',$xml->AccountName)); $this->Model->append(array('Pays',$xml->Country)); $this->Model->append(array('Date d\'inscription',$xml->DateJoined)); $this->Model->append(array('Site internet',($xml->Homepage == '') ? 'N/A' : $xml->Homepage)); $this->Model->append(array('Derniere Pulsation',$xml->LastPulse)); $this->Model->append(array('Nombre de Pulsation',$xml->Pulses)); $this->Model->append(array('Nombre de keys total',$xml->TotalKeyCount)); $this->Model->append(array('Nombre de click total',$xml->TotalMouseClicks)); $this->Model->append(array('Nombre de miles',$xml->TotalMiles)); $this->Model->append(array('Nombre de keys moyen par pulse',$xml->AvKeysPerPulse)); $this->Model->append(array('Nombre de clicks moyen par pulse',$xml->AvClicksPerPulse)); $this->Model->append(array('Nombre moyen de keys par seconde',$xml->AvKPS)); $this->Model->append(array('Nombre moyen de clicks par seconde',$xml->AvCPS)); $this->Model->append(array('Rang Personnel',$xml->Rank)); $this->Model->append(array('ID de l\'équipe',($xml->TeamID == '') ? 'N/A' : $xml->TeamID)); $this->Model->append(array('Nom de l\'équipe',($xml->TeamName == '') ? 'N/A' : $xml->TeamName)); $this->Model->append(array('Nombre de membres',($xml->TeamMembers == '') ? 'N/A' : $xml->TeamMembers)); $this->Model->append(array('Keys de l\'équipe',($xml->TeamKeys == '') ? 'N/A' : $xml->TeamKeys)); $this->Model->append(array('Clicks de l\'équipe',($xml->TeamClicks == '') ? 'N/A' : $xml->TeamClicks)); $this->Model->append(array('Miles de l\'équipe',($xml->TeamMiles == '') ? 'N/A' : $xml->TeamMiles)); $this->Model->append(array('Description de l\'équipe',($xml->TeamDescription == '') ? 'N/A' : $xml->TeamDescription)); $this->Model->append(array('Date de création de l\'équipe',($xml->TeamDateFormed == '') ? 'N/A' : $xml->TeamDateFormed)); $this->Model->append(array('Rang de l\'équipe',($xml->TeamRank == '') ? 'N/A' : $xml->TeamRank)); $this->Model->append(array('Rang dans l\'équipe',($xml->RankInTeam == '') ? 'N/A' : $xml->RankInTeam)); } else { $this->Model->append(array('ERROR','UserID Inconnue !!')); } } else { $this->Model->append(array('ERROR','C\'est pas une UserID ça O_o')); } } else { $this->Model->append(array('ERROR','Veuillez saisir votre UserID')); } } } // On creer notre class et notre fenetre. new GtkWhatpulse(); Gtk::main();?>