editor: ProductionProductEditor
GtkDialog(main_dialog.toplevel): title='Edit Details of "Product"', hidden
  GtkVBox(main_dialog._main_vbox):
    GtkVBox(main_dialog.vbox, expand=True, fill=True):
      GtkEventBox(main_dialog.header):
      GtkEventBox(main_dialog.main, expand=True, fill=True, padding=6): slave ProductionProductEditor is attached
        GtkNotebook(toplevel):
          GtkVBox(sellable_tab):
            GtkTable(table, expand=True, fill=True):
              GtkLabel(code_lbl): 'Code:'
              ProxyEntry(code): '12345'
              GtkLabel(label8): 'Status:'
              ProxyLabel(status_str): '<span >Available</span>'
              GtkLabel(barcode_lbl): 'Barcode:'
              ProxyEntry(barcode): ''
              GtkLabel(product_type_lbl): 'Type:'
              ProxyLabel(product_type_str): '<span >Regular product</span>'
              GtkLabel(label10): 'Default Sales C.F.O.P.:'
              ProxyComboEntry(default_sale_cfop):
                item: ''
                item: '1.102 Compra para Comercializacao'
                item: '5.102 Venda de Mercadoria Adquirida'
                item: '5.202 Devolucao'
                item: '5.949 Outra sa\xc3\xadda de mercadoria ou presta\xc3\xa7\xc3\xa3o de servi\xc3\xa7o n\xc3\xa3o especificado'
              GtkLabel(category_lbl): 'Category:'
              GtkHBox(hbox1):
                ProxyComboEntry(category_combo, expand=True, fill=True):
                  item: 'Bermudas'
                  item: 'Bermudas:Bermudas Sarja'
                  item: 'Bermudas:Bermudas Shorts'
                  item: 'Blusas'
                  item: 'Blusas:Blusas Algod\xc3\xa3o'
                  item: 'Blusas:Blusas Poliester'
                  item: 'Cal\xc3\xa7ados'
                  item: 'Cal\xc3\xa7ados:Chinelos'
                  item: 'Cal\xc3\xa7as'
                  item: 'Cal\xc3\xa7as:Cal\xc3\xa7as Jeans'
                  item: 'Cal\xc3\xa7as:Cal\xc3\xa7as Poliester'
                  item: 'Camisetas'
                  item: 'Camisetas:Tinturada'
                  item: 'Casacos'
                  item: 'Casacos:Algod\xc3\xa3o'
                  item: 'Vestido'
                  item: 'Vestido:Viscose'
                GtkButton(add_category):
                GtkButton(edit_category): insensitive
              GtkLabel(label2): 'Description:'
              ProxyEntry(description): 'Description'
              ProxyLabel(label4): 'Cost ($CURRENCY):'
              GtkHBox(cost_hbox):
                ProxySpinButton(cost, fill=True): '125.00'
              GtkLabel(label9): 'Tributary Situation:'
              GtkHBox(tax_hbox):
                ProxyComboBox(tax_constant, fill=True):
                  item: 'Exemption'
                  item: 'No tax', selected
                  item: 'Substitution'
                GtkHBox(tax_box, fill=True):
                  ProxyLabel(tax_value): '<span ></span>'
                  GtkLabel(label_percent, fill=True): '%'
              ProxyLabel(label5): 'Sale Price ($CURRENCY):'
              GtkHBox(price_hbox):
                ProxySpinButton(price, fill=True): '10.00'
                GtkButton(sale_price_button, fill=True):
              GtkLabel(label3): 'Unit:'
              GtkHBox(unit_hbox):
                ProxyComboBox(unit_combo, expand=True, fill=True):
                  item: 'No units', selected
                  item: 'Kg'
                  item: 'Lt'
                  item: 'm '
              ProxyLabel(requires_weighing_label): '<span size="small"></span>'
              GtkEventBox(slave_holder): slave SellableDetailsSlave is attached
                GtkVBox(toplevel):
                  GtkTable(table1, expand=True, fill=True):
                    GtkLabel(notes_lbl): 'Details:'
                    GtkScrolledWindow(scrolledwindow1):
                      ProxyTextView(notes):
                    GtkVBox(vbox2):
                      GtkEventBox(sellable_image_holder, expand=True, fill=True): slave ImageSlave is attached
                        GtkHBox(toplevel):
                          GtkEventBox(eventbox, expand=True, fill=True):
                            GtkImage(image):
                  GtkLabel(label1, fill=True): 'Right-click image for more options'
          GtkEventBox(): slave ProductInformationSlave is attached
            GtkAlignment(alignment2):
              GtkVBox(vbox1):
                GtkFrame(general_frame, fill=True):
                  GtkAlignment(alignment1):
                    GtkTable(table4):
                      GtkLabel(manufacturer_lbl): 'Manufacturer:'
                      ProxyComboEntry(manufacturer):
                        item: ''
                      GtkLabel(brand_lbl): 'Brand:'
                      ProxyEntry(brand): ''
                      GtkLabel(model_lbl): 'Model:'
                      ProxyEntry(product_model): ''
                      GtkLabel(family_lbl): 'Family:'
                      ProxyEntry(family): ''
                      GtkLabel(width_lbl): 'Width:'
                      ProxySpinButton(width): '0'
                      GtkLabel(weight_lbl): 'Weight:'
                      GtkHBox(hbox2):
                        ProxySpinButton(weight, expand=True, fill=True): '0.000'
                        GtkLabel(kg_lbl, fill=True): 'Kg'
                      GtkLabel(depth_lbl): 'Depth:'
                      ProxySpinButton(depth): '0'
                      GtkLabel(height_lbl): 'Height:'
                      ProxySpinButton(height): '0'
                      GtkLabel(part_number_lbl): 'Part-Number:'
                      ProxyEntry(part_number): ''
                  GtkLabel(label4): '<b>General Details</b>'
                GtkFrame(storable_frame, fill=True):
                  GtkAlignment(alignment5):
                    GtkTable(table2):
                      GtkLabel(location_lbl): 'Location:'
                      ProxyEntry(location): ''
                      GtkLabel(min_lbl): 'Minimum:'
                      GtkHBox(min_hbox):
                        ProxySpinButton(minimum_quantity, expand=True, fill=True): '0.00'
                        GtkLabel(min_unit, fill=True): 'Unit(s)'
                      GtkLabel(max_lbl): 'Maximum:'
                      GtkHBox(max_hbox):
                        ProxySpinButton(maximum_quantity, expand=True, fill=True): '0.00'
                        GtkLabel(max_unit, fill=True): 'Unit(s)'
                  GtkLabel(label5): '<b>Stock Details</b>'
                GtkFrame(nfe_frame, fill=True):
                  GtkAlignment(alignment6):
                    GtkTable(table3):
                      GtkLabel(ncm_lbl): 'NCM:'
                      ProxyEntry(ncm): ''
                      GtkLabel(ex_tipi_lbl): 'EX TIPI:'
                      ProxyEntry(ex_tipi): ''
                      GtkLabel(genero_lbl): 'G\xc3\xaanero:'
                      ProxyEntry(genero): ''
                  GtkLabel(label6): '<b>Mercosul Details</b>'
          GtkEventBox(): slave CategoryPriceSlave is attached
            GtkVBox(toplevel):
              GtkHBox(hbox1, fill=True):
                GtkLabel(model_name_label, fill=True): 'Category:'
                ProxyComboEntry(target_combo, expand=True, fill=True): invalid
                GtkButton(add_button, fill=True): 'gtk-add', insensitive
              GtkVBox(model_vbox, expand=True, fill=True):
                kiwi+ui+listdialog+ListContainer(relations_list, expand=True, fill=True):
                  GtkVBox(expand=True, fill=True, padding=6):
                    ObjectList(expand=True, fill=True):
                      column: title='Category', expand
                      column: title='Price'
                      column: title='Markup'
                    GtkHBox(fill=True):
                      GtkButton(fill=True): 'gtk-add', hidden
                      GtkButton(fill=True): 'gtk-remove', insensitive
                      GtkButton(fill=True): 'gtk-edit', insensitive
          GtkEventBox(): slave ProductComponentSlave is attached
            GtkVBox(toplevel):
              GtkHBox(hbox2, fill=True):
                GtkLabel(label2, fill=True): 'Production time:'
                ProxySpinButton(production_time, fill=True): '1'
                GtkLabel(label3, expand=True, fill=True): 'days'
              GtkHSeparator(hseparator1, fill=True):
              GtkVBox(vbox2, fill=True):
                GtkHBox(hbox1, expand=True, fill=True):
                  GtkLabel(label1, fill=True): 'Component:'
                  ProxyComboEntry(component_combo, expand=True, fill=True): mandatory
                    item: '[Bermudas Sarja] Bermuda Sarja'
                    item: '[Blusas Poliester] Blusa Balon\xc3\xaa com Bordado nas Costas'
                    item: '[Blusas Algod\xc3\xa3o] Blusa Frente-\xc3\x9anica com Pregas'
                    item: '[Cal\xc3\xa7as Poliester] Cal\xc3\xa7a Brigilda'
                    item: '[Cal\xc3\xa7as Jeans] Cal\xc3\xa7a Jeans com Bolso Traseiro'
                    item: '[Tinturada] Camiseta Tinturada Xcuba Comp'
                    item: '[Algod\xc3\xa3o] Casaco Vilan'
                    item: '[Chinelos] Chinelo de Dedo'
                    item: '[Bermudas Shorts] Shorts com Costuras'
                    item: '[Viscose] Vestido Vadalena'
                  GtkButton(add_button, fill=True): 'gtk-add', insensitive
                ProxyCheckButton(sort_components_check, expand=True, fill=True): 'Sort components by category'
              GtkVBox(component_tree_vbox, expand=True, fill=True):
                ObjectTree(component_tree, expand=True, fill=True):
                  column: title='Code'
                  column: title='Quantity'
                  column: title='Unit'
                  column: title='Description', expand
                  column: title='Category'
                  column: title='Ref.'
                  column: title='Production Cost'
                  column: title='Total'
                GtkHBox(component_label, fill=True):
                  GtkLabel(expand=True, fill=True, padding=6): '<b>Total:</b>'
                  GtkLabel(): '<b>$ 0.00</b>'
              GtkHBox(hbox3, fill=True):
                GtkButton(remove_button): 'gtk-remove', insensitive
                GtkButton(edit_button): 'gtk-edit', insensitive
                ProxyLabel(info_label, expand=True, fill=True): '<span weight="bold"></span>'
          GtkEventBox(): slave ProductTaxSlave is attached
            GtkAlignment(toplevel):
              GtkTable(table1):
                GtkLabel(label1): 'ICMS Class:'
                ProxyComboBox(icms_template):
                  item: None, selected
                GtkLabel(label2): 'IPI Class:'
                ProxyComboBox(ipi_template):
                  item: None, selected
          GtkEventBox(): slave ProductQualityTestSlave is attached
            kiwi+ui+listdialog+ListContainer(listcontainer):
              ObjectList(expand=True, fill=True):
                column: title='Description', expand
                column: title='Type'
                column: title='Success Value'
              GtkVBox(fill=True, padding=6):
                GtkButton(fill=True): 'gtk-add'
                GtkButton(fill=True): 'gtk-remove', insensitive
                GtkButton(fill=True): 'gtk-edit', insensitive
      GtkHBox(fill=True):
        GtkEventBox(main_dialog.extra_holder, expand=True, fill=True, padding=6):
        GtkEventBox(main_dialog.print_holder, expand=True, fill=True):
        GtkEventBox(main_dialog.notice, fill=True):
        GtkEventBox(main_dialog.details_holder, padding=6, pack-end):
    GtkHButtonBox(fill=True, pack-end):
      GtkButton(): 'gtk-delete'
      GtkButton(): 'gtk-print'
      GtkButton(main_dialog.cancel_button, expand=True, fill=True, padding=6): 'gtk-cancel'
      GtkButton(main_dialog.ok_button, expand=True, fill=True, padding=6): 'gtk-ok'
      GtkButton(main_dialog.help_button, padding=6): 'gtk-help'
