TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

mark Software Developer's Think IT mark 失敗しないソフト選び Find-IT mark テクノロジーポータル TEDIA

会員登録 登録情報管理

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

PHP-GTKでタスクトレイに常駐するアプリを作ろう
(2008/11/13公開)

PHP-GTKでタスクトレイアプリケーションを作る

 前回の「PHP-GTKで『メモ帳』を作る」という記事では、PHP-GTKを使って、デスクトップアプリケーションを作成するのがいかに簡単かをご覧いただいた。デスクトップアプリケーションの作り方を学び終えると、うれしいことにタスクトレイに常駐するアプリケーションを作るには2、3行追加するだけで良い。プログラムのほとんどはまったく同様のままだ。

 この記事では、前回の記事で作った「メモ帳」アプリケーションを使い、それをタスクトレイアプリケーションへと変換してみる。いつものようにサンプルプログラム全体はこの記事の終わりにダウンロードできるようになっている。

前提条件

 この記事では、PHP-GTK v2.0かv2.0.1とGladeライブラリをインストール済みであることを前提条件とする。

 また、Gladeのファイルを開き、ウィジェットやその設定を研究できるように、Glade 3もインストールしておくことをお勧めする。

 最後に、読者が前回の記事「PHP-GTKで『メモ帳』を作る」をすでに読んでくださり、「メモ帳」アプリケーションの構成、各種の構成要素、またクラスやメソッドに精通しておられることを前提としている。まずは基本となるプログラムをご理解いただくと、メインのアプリケーションとタスクトレイのアイコンをリンクさせるPHP-GTKの得意技をよくご理解いただけることだろう。

 準備はよろしいか?でははじめよう。

Hello World GtkStatusIcon

 PHP-GTKにおいて、タスクトレイアプリケーションを実現してくれるのは、GtkStatusIcoというウィジェットだ。

 このウィジェットを分かりやすく説明するために、GtkStatusIcoを使った「Hello World」プログラムを作ってみた。これは20行のみで作れる、PHP-GTKを使ったもっとも単純でかつ完成したタスクトレイアプリケーションだ。


<?php
// setup main application
$window = new GtkWindow();
$window->set_size_request(240, 120);
$window->connect_simple('destroy', array('Gtk','main_quit'));
$label = new GtkLabel('Hello World, GtkStatusIcon!');
$window->add($label);
$window->hide_all();

// setup system tray icon
$statusicon = new GtkStatusIcon();
$statusicon->set_from_stock(Gtk::STOCK_FILE);
$statusicon->connect('activate', 'on_activate');

Gtk::main();

function on_activate($statusicon) {
global $window;
if ($window->is_visible()) $window->hide_all();
else $window->show_all();
}

?>



 まずこのアプリケーションを立ち上げると、タスクトレイにはファイルのアイコン(1番左のアイコン)のみが表示される。

 ファイルのアイコンをクリックすると、メインのアプリケーションのウィンドウが開く。

 もう一度、ファイルのアイコンをクリックすると、アプリケーションのウィンドウがまた隠れる。


1    2    3    4    5    6    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.