All pastes #822510 Raw Edit

Whatpulse PHP-GTK

public php v1 · immutable
·published 2007-12-18 19:54 UTC
rendered paste body
<?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();?>