2

Glade-3 を使用して Gtk アプリケーションのスイートを構築しています。

アプリケーションは共通のルック アンド フィールを持つことになっているため、すべてのアプリが共有する共通の「フレーム」を決定しました。これには、メニュー バー、ツールバー、ステータス バー、垂直パネルが含まれます。各アプリケーションによって記入される中央のスペース。

この共通の「フレーム」は、Glade-3 を使用して設計され、Gtkbuilder 形式で保存されます。

私がやりたいのは、Glade-3 を使用して各アプリケーションの「中間部分」を設計し、それを何らかの方法で親フレームにロードすることです。

そのようなことは可能ですか?Gtk で親フレームを書き直すことはかなり単純なので気にしません。主な肉は、Glade を使用して確実に設計したいアプリケーション固有の詳細にあります。

Gtkbuilder ファイルを読み取り、それを親ウィジェットに貼り付けた結果を何らかの形で取得する方法は見たことがありません。

Perl/Gtk2 を使用しています。

4

1 に答える 1

2

これらはすべて GtkBuilder を使用して行うことができます。たとえば、次の UI ファイルがあるとします。

<!-- parent.ui -->
<interface>
    <object class='GtkWindow' id='window'/>  <!-- See #1 -->
</interface>

<!-- child1.ui -->
<interface>
    <object class='GtkLabel' id='content'>  <!-- See #2 -->
        <property name='label'>Hello World</property>
    </object>
</interface>

<!-- child2.ui -->
<interface>
    <object class='GtkLabel' id='content'>  <!-- See #2 -->
        <property name='label'>Hi there</property>
    </object>
</interface>

次のコードを使用して 2 つのウィンドウを作成できます (Python で、申し訳ありませんが、Perl のバインドについて詳しくありません)。

def build(child_filename):
    builder = gtk.Builder()
    builder.add_from_file('parent.ui')
    builder.add_from_file(child_filename)
    window = builder.get_object('window')  #1
    content = builder.get_object('content')  #2
    window.add(content)
    window.show_all()
    return window

window1 = build('child1.ui')
window2 = build('child2.ui')

必要に応じて、同じウィンドウの複数のコピーを作成することもできます。

于 2010-09-23T13:28:22.180 に答える