Dev-PyGTK

PyGTKでターミナルエミュレータ

PyGTKベースでターミナルエミュレータが作れるといいな。。 と思って少し探してみると、vteというモジュールがあることを知りました。 参考サイト:http://coding.debuntu.org/python-embedding-virtual-terminal-gtk-widget-python-vte-library 上記のサイ…

PyGTKで作ったエディタ、製作状況など。

暇を見てはチクチクと作っていたエディタ、こんな感じになってきました。 リファクタリングしていたら、「こっちのほうがいいかな。。」、「いや、まてよ。。」とか いろいろアイディアが。。。いかんいかん。リファクタリングと機能追加のフェーズは分けな…

PyGTK実験 gtk.Entryに入力フィルター機能を追加

さて、以前にもgtk.Entryについて書いたことがあるのですが、 その時はgtk.Entryの作り方と配置の仕方といったごく簡単な内容でした。 今回は、gtk.Entryに「数値しか入力できない」などのフィルター機能を付加してみようと 思います。 以下のソースコードは…

PyGTKのWidgetのプロパティを調べてみる

ふと興味がわいたので、試してみました。 何を試したかというと、 PyGTKのウィジェットのプロパティ一の種類や属性などの情報を取得してみる。 です。 なぜ、こんなことを考えたかというと、 自作のPyGTKアプリを作った時、ウィジェットの属性を設定するのに…

gtk.sourceviewについて思うこと

gtk.sourceviewですが、シンタックスカラーリングや、行番号表示などを 簡単に実現できるので、非常に便利です。 ただ、最近思うことがあります。 ・1つのバッファを複数のSourceViewで表示させることはできるのだろうか? ということです。 というのも、Sou…

久しぶりにPyGTK。(gtk.NotebookのタブにCloseボタンを)

今日は、日頃からチクチクと作っているエディタで使っているgtk.NotebookにCloseボタンをつけて 見ました。 結構簡単なんですが、思わぬところでハマってしまいましたので、メモしておきます。 gkt.NotebookのタブにCloseボタンをつけるサンプルは、Googleで…

pygtkで作ったFLV→MP3変換ツールをポケット倉庫@Wikiにアップしました。

ソース公開のリクエストがありましたので、以前作ったFLV→MP3変換ツールを ポケット倉庫@Wikiにアップしました。 http://www25.atwiki.jp/kani_3/pages/23.html 今のところ、変換オプションはスクリプトに直書きしています。 オプションを変更したい場合に…

pygtk覚え書き(というか調査中) gtk.gdk.threads_init()とgobject.threads_init()

なんだかpygtkについては久しぶりに書いたような気がします。 自作のエディタは少しづつ進めていますよ。ちゃんと。(笑 ただ、最近はBlenderでの戦車のモデリングとかが面白すぎてそちらに注力してました。で今日は「わかったこと」というよりも、「わかっ…

pygtk覚え書き gtk.TextViewで指定行へ移動する。

gtk.TextViewで行番号を指定して、その行へカーソルを移動させるには、以下のようにします。 # txtViewというgtk.TextViewがあったとして bf = txtView.get_buffer() lineIter = bf.get_iter_at_line(lineNo) if lineIter: bf.place_cursor(lineIter) txtVie…

pygtk覚え書き gtk.Entry

gtk.Entryがクリックされた場合に、自動的にEntry内のテキストを全て選択する方法。 以下のようにします。下記のスクリプトを実行すると、2つのEntryをもつウインドウが表示されます。 それぞれのEntryにテキストを入力したあと、Entryをクリックすると、入…

pygtkのバグ?それとも仕様?

gtksourceviewまたは、gtk.TextViewについてすごく不思議(というか、怪しい)動きに気づきました。 gtk.Entryとgtksourceview(またはgtk.TextView)の組み合わせで起こっているように見えます。 (その他のケースもあるかもしれません)gtk.Entryとgtk.Tex…

自作テキストエディタの検索プラグイン

以前紹介したプラグイン管理モジュール(PluginMgr)を自作テキストエディタに組み込み、検索用&置換機能を追加するプラグインを作ってみました。このプラグインが最終的に提供する機能としては (1) 現在表示されているテキスト中を文字列検索し、一覧表…

自作エディタにプラグイン機能追加中。

先日の日記では、自作エディタにインクリメンタルサーチの機能を追加したことを書きました。 また、今後の作業として、複数のテキストを対象にした検索や、文字列を置換する機能も追加する予定ということも書きました。 いろいろ考えた結果、それらの機能は…

pygtkで遊ぼう(23) gtksourceviewの検索の改良

昨日の日記でgtksouceviewの検索機能について ・大文字/小文字を無視する指定ができない。。 という宿題があることを書きました。 今日はその宿題をかたづけました。今回とった方法は (1) インクリメンタルサーチにする。 (2) 検索は re モジュールを…

pygtkで遊ぼう(21) gtksourceview(gtk.TextView)で文字をハイライトさせる。

今日はgtksourceviewで文字列をハイライトさせる方法についてです。 この方法はgtk.TextViewにも共通して使えます。 サンプルとして、現在制作中のエディタの検索機能を例にしようと思います。 とりあえず、検索機能のテストも兼ねて、次のような検索バーを…

pygtkで遊ぼう(20) gtksourceview.SourceView上でスクリプトを実行し、結果をクリップボードへ。

今制作中のエディタにスクリプトを実行させる機能を付けてみました。 実行結果をどうやって表示させようかなぁ。。と少し悩んだのですが、とりあえずクリップボードへ書き込むことにしました。 SourceViewのサブクラスに以下のようなメソッドを追加しました…

pygtkで遊ぼう(19) カスタマイズ可能なエディタを自作中。

少しづつですが、次のようなカスタマイズ機能をもつテキストエディタを作成中です。 (1) テキストエディタのキーバインドをカスタマイズ可能。 (2) テキストエディタの見た目をカスタマイズ可能。 (3) テキストエディタで上で選択されたPythonスク…

pygtkで遊ぼう(18) GObjectのサブクラスを作ってみる(その2)

昨日はGObjectのサブクラスを作って、独自のプロパティを持たせまました。今日は、GObjectのサブクラスを作って、独自のシグナルを持たせてみます。 独自のシグナルを持たせると、既存のPyGTKのウィジェットなどと同様に、 obj.connect('signal-name', signa…

pygtkで遊ぼう(17) GObjectのサブクラスを作ってみる(その1)

今日は、GObjectのサブクラスを作ってみることにしました。 参考にしたサイト: ・http://www.sicem.biz/personal/lgs/docs/docs/gobject-python/gobject-tutorial.html ・http://trac.atzm.org/index.cgi/wiki/PyGTK また、第1弾として作成したサブクラス…

pygtkで遊ぼう(16) gtksourceviewでお手軽にシンタックスハイライト

今日はgtksourceviewでシンタックスハイライトを行う方法を調べてみました。 結構簡単にできるものなんですね。参考サイト: http://www.progbox.co.uk/wordpress/?p=300 上記のサイトには、そのものずばりのサンプルコードがあります。ちなみに、対応してい…

pygtk覚え書き gtk.Buttonにストック(アイコン)を表示させる

gtk.Buttonにストックアイコンを表示させる方法のメモです。簡単な方法としては、以下のように、ボタンのコンストラクタにstockを指定する方法があります。 import sys import pygtk if sys.platform != 'win32': pygtk.require('2.0') import gtk button = …

ポケット倉庫@WikiにpyPlugger 0.6.0をアップしました。

ここに置きました。 ページの最後に「pyPlugger_0.6.0.zip」という名前で添付されています。今日も満足満足。(笑

pyPluggerバージョンアップ(0.6.0)

pyPluggerのバージョンをあげました。 今回の追加機能は (1) ツールのバージョン情報を表示するダイアログを表示するようにしました。 (2) 各プラグインを切り替えた場合、それぞれのプラグインのサイズを復元するようにしました。 (3) プラグイン…

pyPlugger用プラグイン(ソース行数カウンタ) 完成(第1段)

前回ソースを掲載した後で、いろいろ機能を調整しまいした。 今回調整した機能は、 (1) メイン画面にファイル中の全行数、コメント行数、空白行数、それ以外(実質のソース行)を表示するようにしました。 (2) メイン画面のファイルリストをクリアする…

pyPlugger行数カウントプラグイン ひと段落

今日は行数カウントプラグインの続きを作りました。 下記のソース(ちょっと長めなので、載せるかどうか迷ったんですが、のせちまいました。。) 今日書いたのは、 pyLineCounter() countTargetLines() という関です。これらの関数でスクリプトのコメント行…

pyPluggerの行数カウンタプラグイン 続き

DjangoBookの7章。。難しいかったです。。結構複雑というか。。文章を書いた人が違うから?とか独り言いいながら読んでました。2回くらい読み直したんですが、まだちゃんと理解できていない気分でいいぱいです。で、気分転換に、ソース行数カウンタプラグ…

pyPluggerでソース行数カウント続き

単純に行数をカウントする部分を作りました。 今のところ、Pythonのスクリプト 本当に単純に行数をカウントするだけなので、コメント行なども行数にカウントされてしまいますが、 ファイルを選択 ↓ 行数をカウント ↓ 画面に処理結果(行数)を表示 といった…

pygtkで行数カウンタを制作中(2)

昨日に引き続いて行数カウンタツール(pyPluggerプラグイン)のスクリプトを作りました。 今日は行数のカウント部分の作成をする予定だったのですが、GUIの手直しをしていたらこんな時間になってしまったので、ひとまず今日はこれまでにします。 今日作った…

pygtkで行数カウンタを制作中。

今日は以前作成したpyPlugger用のプラグインを作ってみました。 完成すると、以下の機能が。。あくまでも予定ですけどね(笑 ・ターゲットとしてリストに登録されているファイルの行数カウントを数える。(合計も計算) ・ターゲットとして登録できるのは、…

pygtkで遊ぼう(15) SourceView編

今日はSourceViewというgtk.TextViewベースのウィジェットを使ってみました。 使ってみたといっても、まだ作って配置してみたというレベルで、あまり深い部分の機能は使用していせんが。。。 SouceViewは、このブログでも先日紹介したエディタ、Scribesでも…