Pregunta

Estoy usando Glade-3 para construir un conjunto de aplicaciones GTK.

Las aplicaciones se supone que tiene un aspecto y sensación común, y hemos decidido sobre un "marco" común que todas las aplicaciones compartirán, que incluye una barra de menú, barra de herramientas, barra de estado (s), vertical Panel -. y un espacio en el medio que va a ser llenado por cada aplicación

Este "marco" común está diseñado usando Glade-3 y se guarda en formato GtkBuilder.

Lo que me gustaría hacer es diseñar la "parte central" para cada aplicación utilizando Glade-3 como, bueno, entonces de alguna manera cargarlo en el marco padre.

¿Es posible tal cosa? No me importa volver a escribir el marco padre en GTK, ya que es bastante simple -. La carne principal estará en los detalles específicos de aplicación que definitivamente queremos diseñar usando Glade

he visto ninguna manera de conseguir de alguna manera el resultado de la lectura de un archivo GtkBuilder y pegándolo en un widget padre.

Estoy usando Perl / Gtk2.

¿Fue útil?

Solución

Se puede hacer todo eso usando GtkBuilder. Por ejemplo, teniendo en cuenta estos archivos de interfaz de usuario:

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

se puede construir dos ventanas usando el siguiente código (en Python, lo siento, no estoy familiarizado con los enlaces de 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')

También es posible construir varias copias de la misma ventana si lo desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top