editor: ProductStockEditor
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): slave ProductStockEditor is attached
        GtkVBox(toplevel):
          GtkEventBox(place_holder, expand=True, fill=True): slave ProductDetailsSlave is attached
            GtkVBox(toplevel):
              GtkTable(table1, expand=True, fill=True):
                GtkEventBox(details_holder): slave ProductInformationSlave is attached
                  GtkTable(table1):
                    GtkLabel(manufacturer_lbl): 'Manufacturer:', hidden
                    ProxyComboEntry(manufacturer): hidden
                      item: ''
                    GtkLabel(model_lbl): 'Model:', hidden
                    ProxyEntry(product_model): '', hidden
                    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:', hidden
                    ProxyEntry(part_number): '', hidden
                    GtkLabel(stock_lbl): '<b>Stock Details</b>'
                    GtkLabel(location_lbl): 'Location:'
                    ProxyEntry(location): ''
                    GtkLabel(min_lbl): 'Minimum:', hidden
                    GtkHBox(min_hbox): hidden
                      ProxySpinButton(minimum_quantity, expand=True, fill=True): '0.00', invalid
                      GtkLabel(min_unit, fill=True): 'Unit(s)'
                    GtkLabel(max_lbl): 'Maximum:', hidden
                    GtkHBox(max_hbox): hidden
                      ProxySpinButton(maximum_quantity, expand=True, fill=True): '0.00', invalid
                      GtkLabel(max_unit, fill=True): 'Unit(s)'
                    GtkLabel(mercosul_lbl): '<b>Mercosul Details</b>'
                    GtkLabel(ncm_lbl): 'NCM:'
                    ProxyEntry(ncm): ''
                    GtkLabel(ex_tipi_lbl): 'EX TIPI:'
                    ProxyEntry(ex_tipi): ''
                    GtkLabel(genero_lbl): 'G\xc3\xaanero:'
                    ProxyEntry(genero): ''
                GtkLabel(notes_lbl): 'Details:'
                GtkScrolledWindow(scrolledwindow1):
                  ProxyTextView(notes):
                GtkVBox(vbox2):
                  GtkEventBox(sellable_image_holder, expand=True, fill=True): slave ImageSlave is attached
                    GtkHBox(toplevel):
                      GtkVSeparator(separator):
                      GtkEventBox(eventbox, expand=True, fill=True):
                        GtkImage(image):
              GtkLabel(label1, fill=True): 'Right-click image for more options'
      GtkHBox(fill=True):
        GtkEventBox(main_dialog.extra_holder, expand=True, fill=True):
        GtkEventBox(main_dialog.print_holder, expand=True, fill=True):
        GtkEventBox(main_dialog.notice, fill=True):
        GtkEventBox(main_dialog.details_holder, pack-end):
    GtkHButtonBox(fill=True, pack-end):
      GtkButton(main_dialog.cancel_button, expand=True, fill=True): 'gtk-cancel'
      GtkButton(main_dialog.ok_button, expand=True, fill=True): 'gtk-ok'
