試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Vala

メールマガジン:GtkVBox/GtkHBox,GtkBoxの使用例(PyGI,Vala)

この記事について メールマガジンの系統は「GTK+開発など」です。 GTK+のGUI部品のレイアウトに用いるGtkVBox/GtkHBox,GtkBoxというGUI部品の使用例についてを扱っています。例に使用している言語はPython(2.6/2.7/3.2系で確認・PyGI使用)とVala(0.14系)です…

システム上の全ディスク(disk)の各パーティションにあるファイルシステムのUUIDをGUI上で確認・クリップボードにコピーできるツールを作成

「GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ1/3)」とその続きの記事ではGUdevライブラリを用いてシステム上のデバイスの各種情報を表示するテストを行ったが、これを応用したものとして、システム上の全ディスク(disk)の各パー…

libsoupライブラリのHTTPサーバ機能を用いたテスト(例)

「libsoupライブラリのHTTPサーバ機能を用いたテスト(メモ)」の続きとして、簡単な例を貼り付ける。 例 [任意]ファイル名: httpservertest.vala エンコーディング: UTF-8 /* * libsoup 2.4を用いたHTTPサーバのテスト * * 例: * http://127.0.0.1:11111/ * h…

libsoupライブラリのHTTPサーバ機能を用いたテスト(メモ)

GNU/Linuxにはlibsoupというネットワーク関係のライブラリがあるのだが、これはGObjectライブラリに基づいており、GTK+,libnotify,GStreamerなどと同様に、Vala言語からはそのまま言語の文法上でライブラリの機能を(オブジェクト指向で)扱うことができる。 …

GLibのハッシュテーブルをVala言語で用いる(後半)

「GLibのハッシュテーブルをVala言語で用いる(前半)」の続き。見出し「データの出し入れ」の中における続きとなる。 データの取り出し ハッシュテーブルオブジェクトからキーを指定してデータを取り出すにはハッシュテーブルオブジェクトのメンバ関数lookup(…

GLibのハッシュテーブルをVala言語で用いる(前半)

GLibにはハッシュテーブルというデータ構造があり、これを用いるとキーとなるデータとそれに対応する値とをまとめて幾つも格納することができる。キーとデータの型はそれぞれ任意となり、ハッシュテーブルごとにそれぞれの型を決めることができる。 ハッシュ…

C言語のGTK+でListStoreからデータを取り出す処理に関する追加メモ(前半)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)」ではListStoreというデータ構造(オブジェクト)からデータを取り出すときにgtk_tree_model_get_value()とGValue型のデータを用いたが、これは値を取り出す際に型を柔軟に扱える反面、処理に面倒なところがあ…

GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ3/3)

「GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ2/3)」の続き。 例2 1つ目の例ではデバイスファイルを指定してその情報を表示したが、今回の例ではコマンド行引数に指定した名前のサブシステム(例:block,net,soundなど)に属する全て…

GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ2/3)

「GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ1/3)」の続き。ここではページ1の内容を踏まえた上での例を貼り付ける。コードのコンパイルにはGUdevライブラリの開発パッケージも必要。 例1 コマンド行引数に指定した場所のデバイ…

GUdevライブラリでGNU/Linuxシステム上のデバイス情報を取得する(ページ1/3)

GUdevというライブラリを用いると、GNU/Linuxシステム(OS)上のデバイスの各種情報を得ることができる。これは/dev/以下のデバイスファイルをシステムの状態に応じて動的に作成/削除するudevというツールのソースツリーに含まれるライブラリで、同様にudevの…

C言語でGTK+ 2を扱う上での幾つかのメモ(第8回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第7回)」の続き。 ListStoreに対するデータの出し入れとツリービュー関係の操作 ツリービューなどで表示するデータとして用いるListStoreというデータ構造に対するデータの出し入れの形がC言語やVala言語ではPyGTK…

GLib 2が用意している基本的なデータ型について(ページ3/3)

「GLib 2が用意している基本的なデータ型について(ページ2/3)」の続き。 特別な型 真偽値 真偽値としてgboolean型という型があり、TRUE(真)もしくはFALSE(偽)という値をとる。if文の丸括弧にこの型の変数のみを入れると、それがTRUEの場合にif文の条件が真と…

Vala言語でコマンド行オプションの解析と処理を行う(ページ3/3)

「Vala言語でコマンド行オプションの解析と処理を行う(ページ2/3)」の続き。 オプション関係のデータをクラスにまとめた例 「Vala言語でコマンド行オプションの解析と処理を行う(ページ2/3)」の1つ目の例の内、GLib.OptionEntry構造体のconst修飾子付きの配…

Vala言語でコマンド行オプションの解析と処理を行う(ページ2/3)

「Vala言語でコマンド行オプションの解析と処理を行う(ページ1/3)」の続きだが、ここからはサンプルの作成段階で気になった部分に関するメモとなる。 「Vala言語でコマンド行オプションの解析と処理を行う(ページ1/3)」の例ではオプション定義とそのデータを…

Vala言語でコマンド行オプションの解析と処理を行う(ページ1/3)

バージョン2.6以上のGLibにはPythonのoptparseモジュールのような高度なコマンド行オプション解析/ヘルプ生成の仕組みが用意されており、国際化にも対応している。また、ヘルプ項目はグループ化でき、例えばZenityは大量のオプションが指定可能だが(--help-c…

C言語でGTK+ 2を扱う上での幾つかのメモ(第5回)

「C言語でGTK+ 2を扱う上での幾つかのメモ(第4回)」の続き。 GObjectシグナル接続時の整数値のユーザデータのやりとりについて 関数g_signal_connect()でイベント(GObjectシグナル)とその発生時に呼ばれるハンドラ関数の関連付け(シグナルの接続)を行う際に…

C言語でGTK+ 2を扱う上での幾つかのメモ(第1回)

GTK+ 2(GObject関係含む)に関することの内、C言語に特有のことを扱う。第1回では主に準備段階についてを扱う。 ライブラリのパッケージなどについて 一般的に、(GTK+を含む)ライブラリを用いたプログラムをビルドする際に必要なファイルは、ライブラリを用い…

pycairoのContextクラスで描画を行う上での幾つかのメモ

ここではpycairoのContextクラスを用いたCairoの描画に関する幾つかのメモを扱う。一部の内容は「PyGTKでGUI部品を自前で描画する(前半)」と重なる。 Vala言語でもCairo.Contextクラスが同様に利用可能で、基本的に同じ要領で使用できるが、一部関数の引数や…

Vala言語とC#言語でのプロパティ値変更時の通知について

「PyGObjectで gobject.GObjectクラスを継承してGObjectプロパティを用いる(後半)」ではPyGObjectでプロパティ値が変更されたときにGObjectのシグナルを用いてハンドラと関連付ける処理を扱ったが、ここではVala言語とC#言語の場合についてを扱う。 Vala Va…

cpufreqdの手動プロファイル/モード変更ツールを更新(Vala言語への移植,デーモン制御機能とテストツールの追加)

以前「cpufreqdのプロファイル手動切り替え /モード切り替え用システムトレイツールをC言語のGTK+で作り直し」でcpufreqdの手動でのプロファイル変更とモード変更を行うシステムトレイ常駐型のツールcpufreqd-iconを作成/公開したが、新しいGLibライブラリ内…

Vala言語で非同期の外部プロセス実行をオブジェクトのメンバ関数内で行った後で動作がおかしくなる?(後半)

「Vala言語で非同期の外部プロセス実行をオブジェクトのメンバ関数内で行った後で動作がおかしくなる?(前半)」の続き。 前半の問題を解決するには、メニュー項目選択のハンドラ関数の中で定義したオブジェクトが関数の終わりで破棄されないようにすればよい…

Vala言語で非同期の外部プロセス実行をオブジェクトのメンバ関数内で行った後で動作がおかしくなる?(前半)

「cpufreqdのプロファイル手動切り替え /モード切り替え用システムトレイツールをC言語のGTK+で作り直し」のcpufreqd-icon(http://kakurasan.ehoh.net/software/cpufreqd-icon/)の以前のバージョン(0.9系)の機能をVala言語へ移植することに成功し、更に追加…

Vala言語におけるデストラクタについてと動作テスト

クラス名と同名で戻り値のない特殊なメンバ関数をコンストラクタと呼び、クラスをもとにして生成された各オブジェクト(インスタンス)の初期化処理に用いるが、クラス名の手前に「~」を付けた特殊なメンバ関数も存在し、オブジェクトが破棄される直前に呼ばれ…

Vala言語でUNIXドメインソケットを用いてcpufreqdのデーモンと通信するテスト(コード例)

「Vala言語でUNIXドメインソケットを用いてcpufreqdのデーモンと通信するテスト(メモ)」の続き。 コード例 ここではUNIXドメインソケットを用いてcpufrqdのデーモンにプロファイル一覧の問い合わせコマンドを送り、その結果を受け取って解析してリスト構造(G…

Vala言語でUNIXドメインソケットを用いてcpufreqdのデーモンと通信するテスト(メモ)

以前cpufreqdのプロファイル手動切り替え/モード切り替えツールcpufreqd-icon(http://kakurasan.ehoh.net/software/cpufreqd-icon/)を作成したとき(関連記事)には事情によりC言語を用いたのだが、元々はVala言語で作成する予定で、cpufreqdのデーモンとのUNI…

Vala言語で文字列オブジェクトのメンバ関数scanf()を使用する上でのメモ

Vala言語の文字列オブジェクトのメンバ関数scanf()を用いると、ある文字列オブジェクトの書式を最初の引数の書式に基づいて解析し、その後ろにフォーマットに対応するように渡した引数の変数に値を設定する。これはC言語の標準ライブラリに含まれるsscanf()…

libnotifyをVala言語で使用する(例)

「libnotifyをVala言語で使用する(メモ)」の内容を踏まえて作成したlibnotifyの使用例を貼り付ける。 GTK+も用いているため、コンパイルをするにはGTK+ 2とlibnotifyの両方の(C言語の)開発パッケージが別途必要。 [任意]ファイル名: libnotifytest.vala usin…

libnotifyをVala言語で使用する(メモ)

ここではVala言語でlibnotifyを使う上でのメモを扱い、コード例は別記事に貼り付ける。 初期化 main()の最初など、プログラム内の初期段階において、GTK+の初期化と同様にNotify.init()によるlibnotifyの初期化処理が必須(引数にはアプリケーション名を指定)…

Vala言語におけるクロージャについて

Vala 0.7.6からは、関数内で定義される匿名(ラムダ)関数が外側の関数の変数を参照できるようになっていて、クロージャと呼ばれるものの用途で使えるようになっている。 バージョン0.7.5まででは、匿名関数内で外側の関数の変数を参照するコードをコンパイル…

Vala言語でディレクトリの項目を一覧表示する

ここでは、Vala言語を用いて「ディレクトリを開いて中の項目を一覧表示する」作業についてを扱う。 GLibを用いた方法 関数GLib.Dir.open()によって得られるGLib.Dirオブジェクトを用いてメンバ関数read_name()を呼ぶことにより、そのディレクトリの項目が(戻…