月別アーカイブ: 2009年1月

Fedora 10 を試す

VirtualBox に Fedora 10 を入れてみた。

f10_01

インストール途中にこんな選択画面が出た、開発って gcc とかの意味かな?
とりあえず gcc や apache は必要になるだろうから全部チェック。
リポジトリも後で追加が面倒だから全部チェック。

でもって後は普通にインストール、機動してみる。
あぁ、やはり初期状態では 800×600 から大きくできないのね。
とりあえずネットを探しまくった結果 System-config-display とやらを導入しよう。

「メニューに端末が無い!」
と最初慌てた、システムツールのトコにあるんだね。
同じ GNOME でも位置が同じとは限らないのか、ふむふむ。

「追加と削除」で出てくるメッセージが思いっきり英語なのね…
Ubuntu がどんだけ日本語環境整備に頑張っているかを思い知った。

モニタを 1280×800 に指定してログインしなおす。
1152×864 になっちゃった…xorg.conf を書き換えなきゃいけないかな?
Guest Additions はもう少し環境を整えてスナップショットを取ってから試す。

とにかく一番気になるコイツだ。

fedora_v

あぁ ruby は無視のようで、これだから Python にしときなさい。
それと gcc や gmcs や Glade や OpenJDK も入っていた。
なるほど、Ruby を無視すれば一通りの開発環境は整うわけだ。

てか

grade_v2

Glade って V2 なの?

http://localhost/ が動いていない。
/ets/apache2 も /etc/init.d/apache2 も無い、あれぇ?
インストール時の「 Web サーバー」って Apache じゃないの?

と思ったけど /etc/httpd にあった、やはり随分違うなぁ。
/etc/init.d/httpd start でめでたくサーバー機動、パチパチ。

まぁとりあえず最初から環境が整っているってのは嬉しいわい。
Linux の場合は結局そういう使い方になってっしまうのだから。

しかし Fedora の Nautilus にはまいった。
メニューから開くと XP までの Windows みたく単一ウインドになるやん。
アイコンで右メニューを出して「フォルダの観覧」を選択で Explorer となる。
っっって古い Windows みたいでなんかイヤだこの動作。

追記
上記は編集→設定→動作→「常にブラウザ・ウインドウで開く」
にチェックするだけで Exolorer スタイルになるのか…

そのまま

結局そのままいった。

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 を指定するだけなのね…
こんなに簡単だったらもっと早くやればよかった。