そのまま

結局そのままいった。

GDK イベントの取得とリサイズ

チラツキは後でなんとかすればいいや!
地味に小ネタを入れておいたからゆるしてくれ。
って待っている人なんかいないと思うけど。

てゆーか給付金を早く配ってくれよ政治家さん。

テレビニュースの捏造っぷりは最近やりたい放題だよね。
「給付金は無駄」だと言っている奴なんかいるはずがないのによくもまあ。
誘導尋問のインタビューとご都合主義の編集とスタッフのさくらはもうウンザリだ。

その捏造をネタに国会をやる民主党は更に…俺がこんなことを書いてもしゃーないが。
そろそろ朝はおはスタしか見る番組がない現実をなんとかしてくれよ。

リサイズは難しい

begin_resize_drag はこの動作には使えなかった…
マウスボタンを離すまで motion_notify_event シグナルが発行されない。
ウインドのリサイズが完了するまで普通の動きになる、あぁ駄目だ。

つーかリサイザにボタンを使うと motion_notify_event シグナルが発行されない。
GtkDrawingArea でも使うとするか。

パッキングの展張を全部「いいえ」にして Windows のように自前計算と考えた。
GtkContainer の check_resize シグナルで width_request プロパティを弄くれば…
それでは当然小さくリサイズすることができなくなってしまう、あぁ駄目だ。
どうでもいいが「展張」なんて日本語は無いヤン!

パッキングのプロパティを動的に変更できれば楽なんだけど…
「フィル」にしたウイジェットの幅が取得できないのでどっちにしても。
size_request() は最小値だし get_size_request() は -1 だし。

def gtk_on_drawingarea2_motion_notify_event(self, widget, event):
    if self.resize_list:
        x = event.x_root - self.resize_x
        if self.resize_list + x > 0:
            # この上に Treeview が乗っている
            self["scrolledwindow1"].set_property("width_request", self.resize_list + x)
            self["y901window"].resize(int(self.cx + x), int(self.cy))
    
def gtk_on_drawingarea2_button_press_event(self, widget, event):
    self.resize_list = self["scrolledwindow1"].get_property("width_request")
    self.resize_x = event.x_root
    self.cx, self.cy = self["y901window"].get_size()
                            
def gtk_on_drawingarea2_button_release_event(self, widget, event):
    self.resize_list = 0

でなんとか希望どおりの動きになったけどチラツキまくる。
ハンドラを抜けるまで描写ロックなんてできないのかな?

GTK 側が意図していない動作をむりやり行うのは苦労するわ。

いつまでたっても更新ができないのでとりあえずこのままいこう。
とも思うけど今のままでは二倍表示とかを実装時に詰まりそうなんですけど…

現状報告

うおぉぉぉ難しい!
リストの右端ボタンを掴んだらリストをリサイズする
を gtk でやるのはこんなに悩むものなのか、あぁココだけで三日も。

Windows SDK では計算で簡単にやれたのになぁ、まあ全然仕組みが違うわけだし。

とりあえずリサイザボタンの Gdk イベントで「ボタン押下」を有効にする。
んで GtkWidget 以下の button-press-event シグナルハンドラを作成。
ハンドラのパラメータは event の None を取り除く。
これでやっと Gdk のイベント受信が可能になるってことまで解った。

def gtk_on_button1_button_press_event(self, widget, event):
    # ここになんか書く
    self["y901window"].begin_resize_drag( gtk.gdk.WINDOW_EDGE_EAST,
                            event.button,
                            int(event.x_root),
                            int(event.y_root),
                            event.time)

でリサイズさせる前にリストだけサイズが変わるようにプロパティセット。
で、なんとかなりそうだ、コレに辿り着くまで何度初期化したやら。

self["vbox_main"].get_property("width_request")

しても -1 が戻ってくるだけだし get_size() なんて無いと怒られるし。
うおぉっ進まない!以上止まっているので現状報告。

可変幅サイト

本サイトの幅を一定以上大きくも小さくもならないよう可変にしました。
まあ覚書ページのソースコードが折り返されるのを防ぎたかっただけなんですが。
でもミニノートも考えなきゃ、となると可変にすればいいと考えた。

とほほのスタイルシート入門#width

CSS で max-width と min-width を指定するだけなのね…
こんなに簡単だったらもっと早くやればよかった。

seekbar

やっとシークバーの使い方を理解したけどこんな時間だぁ!
三日も掛かったぞ!覚書ページに書き出しは明日!
万が一のためにコッチにバックアップ、以上。

y901x20090107.tar.gz