المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : برمجة برامج بواجهات رسومية باستخدام PHP-GTK



admin
11-01-2013, بتوقيت غرينيتش 02:32 PM
http://www.dzbatna.com/images/icons/iconrote.gif ط¨ط±ظ…ط¬ط© ط¨ط±ط§ظ…ط¬ ط¨ظˆط§ط¬ظ‡ط§طھ ط±ط³ظˆظ…ظٹط© ط¨ط§ط³طھط®ط¯ط§ظ… PHP-GTK (http://www.dzbatna.com/t1265221/)




حبيت انقلكم هذا الموضوع الرائع اتمنى انكم تسفيدون منه
--------------------
لغة PHP أصبحت من أهم اللغات في عالم الويب والإنترنت لقوتها كلغة Server-Side لكنها وإن كانت كذلك فهي تبقى لغة مفسرة يمكن استخدامها لكتابة برامج صغيرة محلية أو حتى واجهات رسومية سأقوم بكتابة برنامج بواجهة interface رسومية بواسطة لغة PHP والمكتبة الرسومية GTK+
التنصيب setup والإعداد:

صفحة المشروع الأساسية. (http://gtk.php.net/)
لابد أولاً أن ننصب إن لم تكن PHP منصبة قبلاً فلا بأس.
أفضل طريقة للتنصيب setup هي استعمال Gnope (http://gnope.org/)والذي سوف ينصب PHP مع إضافات GTK+ من خلال واجهة interface تنصيب setup في ويندوز.
* لاحظ أن Gnope سوف ينصب PHP4 أي الإصدار الأقدم كما أن هناك العديد من مشاكل التنصيب setup والإعداد بسبب توقف المشروع لمدة من الزمن ثم عودته ووعد المطورون بأداء أفضل.
من أجل التنصيب setup اليدوي يتوجب عليك تنصيب setup الإضافات extensions ثم تعديل ملف php.ini
إن كان لديك PHP سابقاً فعدل ملف php.ini وأضف السطر:
extension = php-gtk2.dll
أو في لينوكس
بعد التنصيب setup من خلال




أضف السطر التالي إلى php.ini
extension = php_gtk2.so
ثم شغل البرنامج من المجلد الذي في إضافات GTK+.
وذلك بالذهاب إليه في سطر الأوامر ثم كتابة اسم البرنامج “php” ثم فراغ ثم اسم الملف الذي كتبته.
لا تنسَ تحميل دليل المبرمج المفصل للرجوع إليه عند كتابة البرامج.

البدء بالبرمجة:

سأقوم أولاً بكتابة برنامج صغير يظهر واجهة interface.

كود code PHP:

<?php
if(!class_exists(’gtk’))
die(”Cannot load GTK+ module.”);

$window = new GtkWindow();
$window->set_title(’Hello, World’);
$window->connect_simple(’destroy’, array(’gtk’, ‘main_quit’));

$lblHello = new GtkLabel(’Hello, World’);

$window->add($lblHello);

$window->show_all();
Gtk::main();
?>

شرح طريقة البرنامج:
كود code PHP:

if(!class_exists(’gtk’))
die(”Cannot load GTK+ module.”);


نقوم هنا بتفحص وجود ملفات GTK+ في PHP إن لم توجد سيخرج البرنامج مع طباعة رسالة خطأ.
كود code PHP:

$window = new GtkWindow();


نقوم هنا بتعريف متغير والذي هو class من نوع GtkWindows أي نافذة GTK.
كود code PHP:

$window->set_title(’Hello, World’);


السطر السابق يؤدي إلى تغيير عنوان النافذة إلى Hello, World.
كود code PHP:

$window->connect_simple(’destroy’, array(’gtk’, ‘main_quit’));


يستدعي هذا السطر methode والتي هي connect_simple والتي تقوم بدورها هنا بالخروج من البرنامج عن طريق تنفيذ Gtk::main_quit عند حدوث الإشارة signal والتي هي distroy أي عندما يضغط المستخدم زر إغلاق النافذة سننهي البرنامج ليس فقط النافذة
كود code PHP:

$lblHello = new GtkLabel(’Hello, World’);


يعرف السطر السابق عنوان Label نصي مكتوب فيه Hello, World.
كود code PHP:

$window->add($lblHello);


يضيف السطر السابق العنوان النصي إلى النافدة
كود code PHP:

$window->show_all();
Gtk::main();


السطرين السابقين يظهران النافذة
والثاني ينقل التحكم إلى main في GTK والذي يقوم بدوره بكافة الأمور.
لأنه ببساطة إذا لم نقم بهذا سيظهر البرنامج النافذة ثم يتابع تنفيذ أوامر البرنامج أي أنه سيغلقها وعندها سيكون إظهار النافذة عبارة عن وميض.
عند تشغيل البرنامج يجب أن تظهر النافذة هكذا:

http://forum.montadaphp.net/imgcache/1613.imgcache

الآن وقد قمنا بتشغيل البرنامج يمكننا كتابة برامج مفيدة:
<div align=&quot;right&quot;>
كتبت هذا البرنامج بسرعة وهو وإن كان يحتوي على ضعف في الرسم والتنسيق إلا أنه يظهر كيفية كتابة برامج رسومية مفيدة تعمل بلغة PHP
كود code PHP:

<?php

require ‘include.php’;

if (!class_exists(’gtk’)) {

die(”Cannot find GTK modulen”);

}

$wnd = new GtkWindow();

$wnd->set_title(’hashsum’);

$wnd->set_icon($wnd->render_icon(Gtk::STOCK_DIALOG_AUTHENTICATION, Gtk::ICON_SIZE_MENU));

$wnd->set_resizable(false);

$wnd->connect_simple(’destroy’, array(’gtk’, ‘main_quit’));

$menubar = new GtkMenuBar();

$file = new GtkMenuItem(’_File’);

$menubar->append($file);

$quit = new GtkMenuItem(’_Quit’);

$mnuFile = new GtkMenu();

$mnuFile->append($quit);

$file->set_submenu($mnuFile);

$quit->connect_simple(’activate’, array(’gtk’, ‘main_quit’));

$lblAscii = new GtkLabel(’_ASCII Text’, true);

$lblmd5 = new GtkLabel(’_MD5′, true);

$lblsha1 = new GtkLabel(’_SH1′, true);

$lblhex = new GtkLabel(’_HEX’, true);

$txtAscii = new GtkEntry();

$txtAscii->set_max_length(24);

$txtmd5 = new GtkEntry();

$txtsha1 = new GtkEntry();

$txthex = new GtkEntry();

$txtmd5->set_property(’editable’, false);

$txtsha1->set_property(’editable’, false);

$txthex->set_property(’editable’, false);

$btn = new GtkButton(’Calculate’);

$btn->set_flags(Gtk::CAN_DEFAULT);

$btnAbout = new GtkButton(’About’);

$lblAscii->set_mnemonic_widget($txtAscii);

$lblmd5->set_mnemonic_widget($txtmd5);

$lblsha1->set_mnemonic_widget($txtsha1);

$lblhex->set_mnemonic_widget($txthex);

$btn->connect_simple(’clicked’, ‘calc’, $txtAscii, $txtmd5, $txtsha1, $txthex);

$btnAbout->connect_simple(’clicked’, ‘about’);

$txtAscii->connect_simple(’activate’, array($wnd, ‘activate_default’));

$tbl = new GtkTable(3, 2);

$tbl->attach($lblAscii, 0, 1, 0, 1);

$tbl->attach($txtAscii, 1, 2, 0,1);

$tbl->attach($btn, 1, 2, 1, 2);

$tbl->attach($lblmd5, 0, 1, 2, 3);

$tbl->attach($txtmd5, 1, 2, 2, 3);

$tbl->attach($lblsha1, 0, 1, 3, 4);

$tbl->attach($txtsha1, 1, 2, 3, 4);

$tbl->attach($lblhex, 0, 1, 4, 5);

$tbl->attach($txthex, 1, 2, 4, 5);

$tbl->attach($btnAbout, 0, 2, 5, 6);

$box = new GtkVBox();

$box->pack_start($menubar);

$box->pack_start($tbl);

$wnd->set_default($btn);

$wnd->add($box);

$wnd->show_all();

Gtk::main();

?>


يقوم البرنامج السابق بإدارج الملف include.php والذي هو

كود code PHP:

<?php

function calc (GtkEntry $ascii, GtkEntry $md5, GtkEntry $sha1, $hex){

$text = $ascii->get_text();

$c = ”;

if (!$text)return;

$md5->set_text(md5($text));

$sha1->set_text(sha1($text));

for ($i=0; $i<strlen($text); $i++){

$c .= ‘0x’ . dechex(ord($text[$i])) . ‘ ‘;

$hex->set_text($c);

}

}

function about (){

$about = new GtkAboutDialog();

$about->set_name(’Hashsums’);

$about->set_version(’1.0′);

$about->set_comments(”Hashsums is programmed by GTK+ and PHP.n Programmed By ChArLoK_16.nwebsite: http://wordpress.charlok16.com”);

$about->set_copyright(’Copyright (C) 1982-2014 ChArLoK_16′);




$about->set_license(implode(”, file(’license.txt’)));

$about->set_logo($about->render_icon(Gtk::STOCK_DIALOG_AUTHENTICATION, Gtk::ICON_SIZE_DIALOG));

$about->set_icon($about->render_icon( Gtk::STOCK_ABOUT, Gtk::ICON_SIZE_MENU));

$about->set_website(’http://charlok16.wordpress.com’);

$about->run();

}

?>

سأشرح طريقة بعض الأشياء شرح طريقةاً سريعاً ويمكنك مراجعة دليل المبرمج لمراجعة أية functions أو methodes مستعملة.
أولاً ملف include.php يحوي دالتين الأولى تحسب الـmd5 و sha1 و hex للنصوص التي تمرر إليها عن طريق مربع نص أدخل فيه المستخدم شيئاً
والدالة الثانية تقوم بإظهار مربع حوار “حول البرنامج” وتستخرج معلومات الرخصة من ملف license.txt والتي هي في هذه الحالة GPL 3 (http://www.gnu.org/copyleft/gpl.html).
الملف الثاني مكون من جدول يتضمن عناصر التصميم، يمكن تعداد حاويات العناصر لرؤية أفضل لكنني لم أفعل ذلك راجع دليل المبرمج
في هذا الجدول يوجد مربع نص ليكتب المستخدم بداخله ما شاء تحته زر ليشغل الدالة calc ويعيد بعد ذلك إظهار النتائج وأخيراً زر لإظهار نافذة “حول البرنامج” وطبعاً قائمة للخروج من البرنامج.


http://forum.montadaphp.net/imgcache/1614.imgcache

http://forum.montadaphp.net/imgcache/1615.imgcache

المصدر : http://forum.montadaphp.net/t5694/







ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى