Frage

Ich bin mit Glade-3 eine Reihe von Gtk-Anwendungen erstellen.

Die Anwendungen sollen einen gemeinsamen Look-and-Feel haben, und wir haben auf einer gemeinsamen „Rahmen“ entschieden, dass alle Apps teilen, die eine Menüleiste enthält, Symbolleiste, Statusleiste (n), eine vertikale Panel -. und ein Raum in der Mitte, die von jeder Anwendung ausgefüllt werden

Dieser gemeinsame "Rahmen" ist so konzipiert, mit Glade-3 und in Gtkbuilder-Format gespeichert.

Was würde Ich mag tun Design der „Mittelteil“ für jede Anwendung unter Verwendung von Glade-3 als-gut, dann laden irgendwie in den übergeordneten Frame.

Ist so etwas möglich? Ich kümmere mich nicht den übergeordneten Rahmen in Gtk Umschreiben, wie es ist ziemlich einfach -. Das wichtigste Fleisch in den anwendungsspezifischen Details sein, dass wir auf jeden Fall Glade entwerfen wollen mit

Ich habe keine Möglichkeit gesehen, um irgendwie das Ergebnis zu erhalten, eine Gtkbuilder Datei zu lesen, und es in eine übergeordneten Widget kleben.

Ich bin mit Perl / Gtk2.

War es hilfreich?

Lösung

Sie können all das mit GtkBuilder tun. Zum Beispiel dieser UI-Dateien gegeben:

<!-- 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>

Sie können zwei Fenster bauen mit dem folgenden Code (in Python, sorry, ich bin nicht vertraut mit den Perl-Bindungen).

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')

Sie können auch mehrere Kopien des gleichen Fenster bauen, wenn Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top