abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 20:00 | Nová verze

Byla vydána (YouTube) verze 2018.3 multiplatformního herního enginu Unity (Wikipedie). Přehled novinek i s videoukázkami v příspěvku na blogu a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 19:33 | Nová verze

Byla vydána verze 18.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Správce souborů Dolphin umí nově například zobrazovat náhledy dokumentů vytvořených v LibreOffice a aplikací ve formátu AppImage. Konsole plně podporuje obrázkové znaky emoji. V Okularu lze k pdf souborům přidávat poznámky.

Ladislav Hagara | Komentářů: 2
včera 17:11 | Nová verze

Byla vydána nová stabilní verze 2.2 (2.2.1388.34) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují například vylepšení správy listů - vybrané listy lze uložit jako relaci, možnost zobrazení klávesových zkratek určených webovou stránkou nebo možnost přehrávání videí v režimu obrazu v obraze. Nejnovější Vivaldi je postaveno na Chromiu 71.0.3578.85.

Ladislav Hagara | Komentářů: 3
včera 14:22 | Nová verze

Po 4 měsících vývoje od vydání verze 3.0.0 byla vydána nová verze 3.1.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 189 vývojářů. Provedeno bylo více než 1 900 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
včera 01:32 | Nová verze

Letos bylo v komunitě Mageia hodně změn. Po volbě nových vedoucích přišla velká aktualizace a krátce na to udržovací verze 6.1. 7.12., dle plánu, vyšla Mageia s číslem 7 v její první beta verzi. Chyby můžete hlásit v bugzille. Chyby v českých překladech pak na fóru české komunity.

Joelp | Komentářů: 0
včera 00:11 | Zajímavý projekt

Kvůli rychlejšímu vývojovému cyklu byla přemístěna Cinelerra-gg. Cinelerra-gg je fork Cinelerry-hv. Některé rozdíly forků popisuje sám hlavní vývojář William Morrow (aka GoodGuy). Není zde popsán i fork Lumiera, zřejmě kvůli zatím nepoužitelnému stavu.

… více »
D81 | Komentářů: 0
12.12. 19:11 | Nová verze

Do aplikace pro instant messaging Telegram (Wikipedie) lze nově nahrát češtinu. Více v příspěvku na blogu Telegramu.

Ladislav Hagara | Komentářů: 5
12.12. 10:55 | Nová verze

Jean-Baptiste Kempf, prezident neziskové organizace VideoLAN stojící za svobodným multiplatformním multimediálním přehrávačem a frameworkem VLC, oznámil v příspěvku na svém blogu vydání první oficiální verze 0.1.0 v říjnu představeného dekodéru svobodného videoformátu AV1 (AOMedia Video 1) s názvem dav1d (Dav1d is an AV1 Decoder). Jedná se o alternativu k referenčnímu dekodéru libaom. Kódový název dav1da verze 0.1.0 je Gazelle.

Ladislav Hagara | Komentářů: 3
12.12. 10:22 | Nová verze

Po více než dvou letech od vydání verze 11.0 byla vydána nová major verze 12.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 4
11.12. 19:55 | Nová verze

Byla vydána verze 3.11 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Řešena je řada bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
Chystáte se přejít na Wayland na „desktopu“?
 (25%)
 (6%)
 (12%)
 (31%)
 (26%)
Celkem 123 hlasů
 Komentářů: 17, poslední včera 23:57
Rozcestník

Převod LibGlade.xml na GtkBuilder.xml

14.12.2012 21:07 | Přečteno: 621× | Python | Výběrový blog | poslední úprava: 15.12.2012 11:36

Stručný návod pro převod LibGlade.xml na GtkBuilder.xml, který nemusí pokrývat vše co se může při konverzi pokazit.

Glade 3.8.x umí pracovat s LibGlade i GtkBuilder, je určen pro GTK+2. Naproti tomu novější verze jsou určené pouze pro GTK+3. Debian Wheezy bohužel obsahuje pouze verzi pro GTK+3, Bug #638478: allow installing both glade 3.8 and 3.10.

Nejprve si otevřeme LibGlade.xml v Glade 3.8.x, poté uložíme projekt jako GtkBuilder.xml a při ukládání nezapomeneme přepnout radiobutton na GtkBuilder.

U všech widgetů, které využívají property "adjustment", ztratíme toto nastavení. Můžeme to napravit zavoláním následujícího skriptu, kterému se předají dva argumenty reprezentující dva výše uvedené XML soubory. Z LibGlade.xml se načte property "adjustment" jednotlivých witgetů, přidá se k odpovídajícím widgetům z GtkBuilder.xml a výsledek se vypíše na stdout.

$ ./g2b_gtkscale.py LibGlade.xml GtkBuilder.xml >output.xml

#! /usr/bin/env python2.7
# -*- coding: utf-8 -*-

import sys
from lxml import etree

class G2B_GtkScale:
    def __init__(self, lib_glade_xml, gtk_builder_xml):
        lib_glade_doc = etree.parse(lib_glade_xml)
        self.lib_glade_root = lib_glade_doc.getroot()

        parser = etree.XMLParser(remove_blank_text=True)
        gtk_builder_doc = etree.parse(gtk_builder_xml, parser)
        self.gtk_builder_root = gtk_builder_doc.getroot()

        # LibGlade
        # <widget class="GtkHScale" id="NAME">
        #   <property name="adjustment">-255 -255 255 1 0 0</property>
        # </widget>

        # GtkBuilder
        # <widget class="GtkHScale" id="NAME">
        #   <property name="adjustment">NAME_ADJ</property>
        # </widget>

        lib_glade_elts = self.get_elements(lib_glade_doc, "widget")
        gtk_builder_elts = self.get_elements(gtk_builder_doc, "object")

        for key in lib_glade_elts.keys():
            adjs = lib_glade_elts[key].text.split()
            prop_adj = gtk_builder_elts[key]
            self.glade2builder(key, adjs, prop_adj)

        print etree.tostring(self.gtk_builder_root, pretty_print=True, \
            xml_declaration=True, encoding="UTF-8")

    def get_elements(self, doc, name):
        result = {}

        elements = doc.findall(".//%s" % name)
        for element in elements:
            eclass = element.get("class")
            eid = element.get("id")

            if (eclass in ["GtkHScale", "GtkVScale", "GtkSpinButton"]):
                for subelt in element.findall("property"):
                    name = subelt.get("name")
                    if (name == "adjustment"):
                        result[eid] = subelt

        return result

    def glade2builder(self, eid, adjs, prop_adj):
        # <object class="GtkAdjustment" id="NAME_ADJ">
        #   <property name="lower">0</property>
        #   <property name="upper">100</property>
        #   <property name="step_increment">1</property>
        #   <property name="page_increment">10</property>
        # </object>

        oid = "%s_ADJ" % eid
        elt_adj = etree.SubElement(self.gtk_builder_root, "object")
        elt_adj.set("class", "GtkAdjustment")
        elt_adj.set("id", oid)

        #value, lower, upper, step_inc, page_inc, page_size = adjs
        props = ["lower", "upper", "step_increment", "page_increment"]

        idx = 1
        for prop in props:
            elt_prop = etree.SubElement(elt_adj, "property")
            elt_prop.set("name", prop)
            elt_prop.text = adjs[idx]
            idx += 1

        prop_adj.text = oid
        #print etree.tostring(elt_adj, pretty_print=True)

def main():
    if (len(sys.argv) != 3):
        print "Usage: %s LibGlade.xml GtkBuilder.xml" % sys.argv[0]
        sys.exit()

    G2B_GtkScale(sys.argv[1], sys.argv[2])

if __name__ == '__main__':
    main()

Podrobněji jsem se tím nezabýval, soustředil jsem se pouze na převod svých projektů. Třeba to bude užitěčné i někomu dalšímu. Pokud máte nějakou připomínku, nápad či dotaz, na toto téma, pište do diskuze.

Řešení pomocí gtk-builder-convert

Na základě podnětu diskutujícího chrono uvádím druhé řešení, ke kterému není třeba Glade.

libgtk2.0-dev: /usr/bin/gtk-builder-convert

Výše uvedený distribuční skript nastavuje u nově vytvářených GtkAdjustment id na adjustment1 až adjustmentN. Já chci, aby toto id reprezentovalo id widgetu, ke kterému GtkAdjustment patří, tj. přidá se k němu suffix "_adj".

Řeší to drobná úprava distribučního skriptu gtk-builder-convert

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

14.12.2012 22:02 chrono
Rozbalit Rozbalit vše Re: Převod LibGlade.xml na GtkBuilder.xml
Skript gtk-builder-convert (mal by byť v Gtk+ 2.12+) by adjustment (a pár ďalších vecí) mal riešiť. Každopádne nikdy som nebol donútený ten skript použiť, takže netuším, ako dobre funguje.
Fuky avatar 15.12.2012 10:18 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Převod LibGlade.xml na GtkBuilder.xml
# aptitude install libgtk2.0-dev
$ gtk-builder-convert LibGlade.xml GtkBuilder.xml 

Děkuji za připomínku, i Pythonovský skript gtk-builder-convert řeší property "adjustment", ovšem nastavuje u GtkAdjustment id na adjustment1 až adjustmentN, takže se v tom člověk ztratí. Já nastavuji id na základě názvu widgetu, ke kterému patří tj. NAME_ADJ.

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.