Como adicionar um widget composto à paleta do Glade 3?

0

Estou usando o Ubuntu 16.04, o python 3.5.1-3 e o Glade 3.18.3. Meu widget já contém um "esquema" glade, já que ele é composto de mais de um widget "padrão" e é mais fácil criar sua "GUI" no Glade do que criá-lo no código.

O xml para widget é:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
  <requires lib="gtk+" version="3.12"/>
  <object class="GtkBox" id="boxMain">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkArrow" id="arrowprevious">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="arrow_type">left</property>
        <signal name="button-release-event" handler="on_arrowprevious_button_release_event" swapped="no"/>
      </object>
      <packing>
        <property name="expand">False</property>
        <property name="fill">True</property>
        <property name="position">0</property>
      </packing>
    </child>
    <child>
      <object class="GtkLabel" id="label1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">label</property>
      </object>
      <packing>
        <property name="expand">True</property>
        <property name="fill">True</property>
        <property name="position">1</property>
      </packing>
    </child>
    <child>
      <object class="GtkArrow" id="arrownext">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <signal name="button-release-event" handler="on_arrownext_button_release_event" swapped="no"/>
      </object>
      <packing>
        <property name="expand">False</property>
        <property name="fill">True</property>
        <property name="position">2</property>
      </packing>
    </child>
  </object>
</interface>

Eu também tenho mais "personalizações" no script python. Diga

#Gtk.Window is just for example because I load more widgets
class MyWidget(Gtk.Window):
    def __init__( self, acustomlist):
        #for the moment I add it from glade file in the same directory
        self.counter = 0
        self.thelist = acustomlist
        #TODO: check len of list and type of list contents (if str type)
        self.mybuilder = Gtk.Builder()
        self.mybuilder.add_from_file("aWidget.glade")
        Gtk.Window.__init__(self, name='windowMain')
        self.add(self.mybuilder.get_object('boxMain'))
        self.mybuilder.connect_signals(self)

    def on_arrowprevious_button_release_event(self):
        self.counter +=1
        if self.counter >= len(self.thelist):
            self.counter = len(self.thelist) - 1
        self.mybuilder.get_object('label1').set_label(self.thelist[self.counter])

    def on_arrownext_button_release_event(self):
        self.counter -=1
        if self.counter < 0:
            self.counter = 0
        self.mybuilder.get_object('label1').set_label(self.thelist[self.counter])

A questão é como adicionar isso à paleta de clareiras. Nenhum dos / usr / share  nem / usr / lib / contain glade3 (como sugerido em Como adicionar um widget pygtk à paleta Glade? ), apenas um catálogo glade.

O código "esquema" para o widget também deve estar disponível no computador de destino. Usando as instruções no link acima mencionado só estará disponível no meu computador.

    
por ilias iliadis 13.03.2018 / 05:24

0 respostas