SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
PHP in a Whole New World
Desktop Applications Built in PHP-GTK




                              Ben Ramsey
What Is PHP-GTK?
•   PHP extension
•   Language bindings for GTK+
•   OO Interface to GTK+ classes
•   Way to create cross-platform, portable
    GUI applications in PHP




                                        Ben Ramsey
What Is GTK+?
• Stands for “GIMP Tool Kit”
 (originally developed for the GNU Image Manipulation Program, or GIMP)

• C library used to create graphical user
  interfaces
• Central part of Gnome desktop on
  Linux, but libraries ported to Windows




                                                                  Ben Ramsey
Why PHP-GTK?
• Originally a proof-of-concept (inspired
  by PyGTK) to show that it could be
  done
• Because PHP isn’t just for the Web
  anymore
• If you need a GUI application, why not
  use your favorite language?



                                       Ben Ramsey
What this talk is not...
• Discussion on the GTK+ bindings that
  are the core of PHP-GTK
• Instructions on how to install PHP-GTK
• Introduction to PHP-GTK 2
 (that was yesterday and you missed it)




                                          Ben Ramsey
Overview
• Tutorial: pedit
• Applications:
  •   PHP-GTK Manual Browser
  •   Tulip
  •   Agata Report
  •   Deep Dungeons RPG




                               Ben Ramsey
A Brief Tutorial: pedit
• pedit is a simple text editor
• It can open text files, modify, and save
  them
• It can copy, paste, and cut
• That’s it--I said it’s simple




                                        Ben Ramsey
A Look At pedit




                  Ben Ramsey
The Code Behind pedit
<?php
if (!extension_loaded('gtk')) {
    dl('php_gtk.' . PHP_SHLIB_SUFFIX);
}
...
$w =& new GtkWindow();
$w->set_title('Untitled');
$w->set_usize(800, 600);
$w->connect_object('destroy', array('Gtk', 'main_quit'));
$w->connect('delete-event', create_function('', 'return false;'));
...
$w->show_all();

Gtk::main();
?>




                                                               Ben Ramsey
pedit’s Menu Code
<?php
/* Application menu bar */
$menu =& new GtkMenuBar();
$box->pack_start($menu, false, false);

/* File menu */
$file =& new GtkMenuItem('File');
$menu->append($file);

$file_menu =& new GtkMenu();

...

$save =& new GtkMenuItem('Save');
$save->connect('activate', 'save_file');
$file_menu->append($save);
?>



                                           Ben Ramsey
pedit’s Text Editor Code
<?php
$text_area =& new GtkHBox();
$box->pack_start($text_area);
...
/* Editable text field */
$textpad =& new GtkText();
$textpad->set_editable(true);
$textpad->set_style($textpad_style);
$textpad->set_line_wrap(false);
$textpad->set_word_wrap(false);
$textpad->connect('changed', 'text_changed');
$text_area->pack_start($textpad);

/* Vertical scrollbar */
$textpad_vadj = $textpad->vadj;
$textpad_vscrollbar =& new GtkVScrollbar($textpad_vadj);
$text_area->pack_end($textpad_vscrollbar, false);
?>


                                                           Ben Ramsey
pedit’s Actions
<?php
function save_file()
{
    global $text_changed, $loaded_file, $textpad, $w;
    if (!is_null($loaded_file)) {
         $bytes = file_put_contents($loaded_file, $textpad->get_chars(0, -1));
         if ($bytes === false) {
             save_error_dialog();
         } else {
             $text_changed = false;
             $w->set_title($loaded_file);
         }
    }
    else
    {
         file_save_dialog();
    }
    return true;
}
?>




                                                                           Ben Ramsey
PHP-GTK Manual Browser
• PHP-GTK application
• Allows you to easily browse the PHP-
  GTK manual
• Reads PHP-GTK manual HTML files
  and displays them, so it acts somewhat
  like a Web browser




                                     Ben Ramsey
PHP-GTK Manual Browser




                     Ben Ramsey
Tulip
• PHP-GTK based IDE for writing PHP
  applications
• Allows you to set up projects
• CVS controls (create, modify, and
  remove files from a remote server
  seamlessly)
• File-locking feature for added security
  when working in a networked
  environment
                                       Ben Ramsey
Tulip
• Auto-completion of PHP code
• Syntax highlighting and syntax hints
• Standard editing features (copy, cut,
  paste, search, go to, etc.)
• Embedded database navigator to
  access MySQL or PostgreSQL, make
  queries and edit or delete records


                                      Ben Ramsey
Tulip




        Ben Ramsey
Tulip




        Ben Ramsey
Tulip




        Ben Ramsey
Tulip




        Ben Ramsey
Agata Report
• Cross-platform database reporting tool
• Graph generation
• Query tool
• Support for multiple databases
  (PostgreSQL, MySQL, MSSQL, Oracle,
  etc.)
• Multiple export formats (text, HTML,
  XML, PDF, CSV, etc.)

                                     Ben Ramsey
Agata Report
• Define levels, subtotals, and a grand
  total for the report
• Merge data into a document
• Generate address labels
• Generate a relationship diagram of the
  database
• Not a database management tool; just
  a tool for reporting

                                      Ben Ramsey
Agata Report




               Ben Ramsey
Agata Report




               Ben Ramsey
Agata Report




               Ben Ramsey
Agata Report




               Ben Ramsey
Deep Dungeons RPG
• Classic RPG (role-playing game)
  written in PHP with the PHP-GTK
  extension
• Not very complex, but includes NPCs
  (non-player characters) you can interact
  with
• Includes monsters to fight
• Keeps track of your stats and hit points

                                      Ben Ramsey
Deep Dungeons RPG




                    Ben Ramsey
PHP-GTK Pitfalls
• Portable in theory, not in practice
• PHP speed good enough for the
  “Web problem;” not fast enough for
  desktop (Parrot?)
• Compiler for single executable/binary?
  (Roadsend, PriadoBlender?)




                                      Ben Ramsey
What’s Next?
• PHP-GTK 2 with PHP 5
  (binds GTK+ 2 libraries with PHP 5)
• PHP 6 on Parrot? (BIG “maybe”)




                                        Ben Ramsey
For more information...
•   PHP-GTK: http://gtk.php.net
•   GTK+: http://gtk.org
•   pedit: http://pedit.sourceforge.net
•   Tulip: http://tulip.solis.coop.br
•   Agata Report: http://www.agata.org.br
•   Deep Dungeons: http://deepdungeons.sf.net
•   Roadsend Compiler: http://roadsend.com
•   PriadoBlender: http://priadoblender.com

Questions?

                                                Ben Ramsey

Contenu connexe

Tendances

20090629 Using phpDocumentor
20090629 Using phpDocumentor20090629 Using phpDocumentor
20090629 Using phpDocumentor
Rimpei Ogawa
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
wpnepal
 
Vinay Paudel: Optimizing and Speeding up a WordPress site
Vinay Paudel: Optimizing and Speeding up a WordPress siteVinay Paudel: Optimizing and Speeding up a WordPress site
Vinay Paudel: Optimizing and Speeding up a WordPress site
wpnepal
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
Oleg Podsechin
 
Linux Apache Php Mysql Lamp1273
Linux Apache Php Mysql Lamp1273Linux Apache Php Mysql Lamp1273
Linux Apache Php Mysql Lamp1273
hussulinux
 

Tendances (16)

Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPPFast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
 
Fluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API DetailsFluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API Details
 
Synapse india reviews on php website development
Synapse india reviews on php website developmentSynapse india reviews on php website development
Synapse india reviews on php website development
 
Web Development: The Next Five Years
Web Development: The Next Five YearsWeb Development: The Next Five Years
Web Development: The Next Five Years
 
20090629 Using phpDocumentor
20090629 Using phpDocumentor20090629 Using phpDocumentor
20090629 Using phpDocumentor
 
Build Your Own Tools
Build Your Own ToolsBuild Your Own Tools
Build Your Own Tools
 
PHP client - Mongo db User Group Pune
PHP client - Mongo db User Group PunePHP client - Mongo db User Group Pune
PHP client - Mongo db User Group Pune
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with Grunt
 
Current status of PSR - Phpblt1
Current status of PSR - Phpblt1Current status of PSR - Phpblt1
Current status of PSR - Phpblt1
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
 
Introduction to protocol buffer
Introduction to protocol bufferIntroduction to protocol buffer
Introduction to protocol buffer
 
Introduction to programming - class 8
Introduction to programming - class 8Introduction to programming - class 8
Introduction to programming - class 8
 
Golang
GolangGolang
Golang
 
Vinay Paudel: Optimizing and Speeding up a WordPress site
Vinay Paudel: Optimizing and Speeding up a WordPress siteVinay Paudel: Optimizing and Speeding up a WordPress site
Vinay Paudel: Optimizing and Speeding up a WordPress site
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Linux Apache Php Mysql Lamp1273
Linux Apache Php Mysql Lamp1273Linux Apache Php Mysql Lamp1273
Linux Apache Php Mysql Lamp1273
 

Similaire à PHP-GTK

Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick Rethans
Bachkoutou Toutou
 
6 3 tier architecture php
6 3 tier architecture php6 3 tier architecture php
6 3 tier architecture php
cefour
 

Similaire à PHP-GTK (20)

Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick Rethans
 
Php on the Web and Desktop
Php on the Web and DesktopPhp on the Web and Desktop
Php on the Web and Desktop
 
Building a fully API-based platform on top of cPanel
Building a fully API-based platform on top of cPanelBuilding a fully API-based platform on top of cPanel
Building a fully API-based platform on top of cPanel
 
6 3 tier architecture php
6 3 tier architecture php6 3 tier architecture php
6 3 tier architecture php
 
Php
PhpPhp
Php
 
test
testtest
test
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
ssfsd fsdf ds f
ssfsd fsdf ds fssfsd fsdf ds f
ssfsd fsdf ds f
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
ssfsd fsdf ds f
ssfsd fsdf ds fssfsd fsdf ds f
ssfsd fsdf ds f
 
ssfsd fsdf ds f
ssfsd fsdf ds fssfsd fsdf ds f
ssfsd fsdf ds f
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 
ssfsd fsdf ds f
ssfsd fsdf ds fssfsd fsdf ds f
ssfsd fsdf ds f
 
ssfsd fsdf ds f
ssfsd fsdf ds fssfsd fsdf ds f
ssfsd fsdf ds f
 
IntroductiontoPHP.ppt
IntroductiontoPHP.pptIntroductiontoPHP.ppt
IntroductiontoPHP.ppt
 

Plus de tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 

Plus de tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

PHP-GTK

  • 1. PHP in a Whole New World Desktop Applications Built in PHP-GTK Ben Ramsey
  • 2. What Is PHP-GTK? • PHP extension • Language bindings for GTK+ • OO Interface to GTK+ classes • Way to create cross-platform, portable GUI applications in PHP Ben Ramsey
  • 3. What Is GTK+? • Stands for “GIMP Tool Kit” (originally developed for the GNU Image Manipulation Program, or GIMP) • C library used to create graphical user interfaces • Central part of Gnome desktop on Linux, but libraries ported to Windows Ben Ramsey
  • 4. Why PHP-GTK? • Originally a proof-of-concept (inspired by PyGTK) to show that it could be done • Because PHP isn’t just for the Web anymore • If you need a GUI application, why not use your favorite language? Ben Ramsey
  • 5. What this talk is not... • Discussion on the GTK+ bindings that are the core of PHP-GTK • Instructions on how to install PHP-GTK • Introduction to PHP-GTK 2 (that was yesterday and you missed it) Ben Ramsey
  • 6. Overview • Tutorial: pedit • Applications: • PHP-GTK Manual Browser • Tulip • Agata Report • Deep Dungeons RPG Ben Ramsey
  • 7. A Brief Tutorial: pedit • pedit is a simple text editor • It can open text files, modify, and save them • It can copy, paste, and cut • That’s it--I said it’s simple Ben Ramsey
  • 8. A Look At pedit Ben Ramsey
  • 9. The Code Behind pedit <?php if (!extension_loaded('gtk')) { dl('php_gtk.' . PHP_SHLIB_SUFFIX); } ... $w =& new GtkWindow(); $w->set_title('Untitled'); $w->set_usize(800, 600); $w->connect_object('destroy', array('Gtk', 'main_quit')); $w->connect('delete-event', create_function('', 'return false;')); ... $w->show_all(); Gtk::main(); ?> Ben Ramsey
  • 10. pedit’s Menu Code <?php /* Application menu bar */ $menu =& new GtkMenuBar(); $box->pack_start($menu, false, false); /* File menu */ $file =& new GtkMenuItem('File'); $menu->append($file); $file_menu =& new GtkMenu(); ... $save =& new GtkMenuItem('Save'); $save->connect('activate', 'save_file'); $file_menu->append($save); ?> Ben Ramsey
  • 11. pedit’s Text Editor Code <?php $text_area =& new GtkHBox(); $box->pack_start($text_area); ... /* Editable text field */ $textpad =& new GtkText(); $textpad->set_editable(true); $textpad->set_style($textpad_style); $textpad->set_line_wrap(false); $textpad->set_word_wrap(false); $textpad->connect('changed', 'text_changed'); $text_area->pack_start($textpad); /* Vertical scrollbar */ $textpad_vadj = $textpad->vadj; $textpad_vscrollbar =& new GtkVScrollbar($textpad_vadj); $text_area->pack_end($textpad_vscrollbar, false); ?> Ben Ramsey
  • 12. pedit’s Actions <?php function save_file() { global $text_changed, $loaded_file, $textpad, $w; if (!is_null($loaded_file)) { $bytes = file_put_contents($loaded_file, $textpad->get_chars(0, -1)); if ($bytes === false) { save_error_dialog(); } else { $text_changed = false; $w->set_title($loaded_file); } } else { file_save_dialog(); } return true; } ?> Ben Ramsey
  • 13. PHP-GTK Manual Browser • PHP-GTK application • Allows you to easily browse the PHP- GTK manual • Reads PHP-GTK manual HTML files and displays them, so it acts somewhat like a Web browser Ben Ramsey
  • 15. Tulip • PHP-GTK based IDE for writing PHP applications • Allows you to set up projects • CVS controls (create, modify, and remove files from a remote server seamlessly) • File-locking feature for added security when working in a networked environment Ben Ramsey
  • 16. Tulip • Auto-completion of PHP code • Syntax highlighting and syntax hints • Standard editing features (copy, cut, paste, search, go to, etc.) • Embedded database navigator to access MySQL or PostgreSQL, make queries and edit or delete records Ben Ramsey
  • 17. Tulip Ben Ramsey
  • 18. Tulip Ben Ramsey
  • 19. Tulip Ben Ramsey
  • 20. Tulip Ben Ramsey
  • 21. Agata Report • Cross-platform database reporting tool • Graph generation • Query tool • Support for multiple databases (PostgreSQL, MySQL, MSSQL, Oracle, etc.) • Multiple export formats (text, HTML, XML, PDF, CSV, etc.) Ben Ramsey
  • 22. Agata Report • Define levels, subtotals, and a grand total for the report • Merge data into a document • Generate address labels • Generate a relationship diagram of the database • Not a database management tool; just a tool for reporting Ben Ramsey
  • 23. Agata Report Ben Ramsey
  • 24. Agata Report Ben Ramsey
  • 25. Agata Report Ben Ramsey
  • 26. Agata Report Ben Ramsey
  • 27. Deep Dungeons RPG • Classic RPG (role-playing game) written in PHP with the PHP-GTK extension • Not very complex, but includes NPCs (non-player characters) you can interact with • Includes monsters to fight • Keeps track of your stats and hit points Ben Ramsey
  • 28. Deep Dungeons RPG Ben Ramsey
  • 29. PHP-GTK Pitfalls • Portable in theory, not in practice • PHP speed good enough for the “Web problem;” not fast enough for desktop (Parrot?) • Compiler for single executable/binary? (Roadsend, PriadoBlender?) Ben Ramsey
  • 30. What’s Next? • PHP-GTK 2 with PHP 5 (binds GTK+ 2 libraries with PHP 5) • PHP 6 on Parrot? (BIG “maybe”) Ben Ramsey
  • 31. For more information... • PHP-GTK: http://gtk.php.net • GTK+: http://gtk.org • pedit: http://pedit.sourceforge.net • Tulip: http://tulip.solis.coop.br • Agata Report: http://www.agata.org.br • Deep Dungeons: http://deepdungeons.sf.net • Roadsend Compiler: http://roadsend.com • PriadoBlender: http://priadoblender.com Questions? Ben Ramsey