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 17:33 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 3
    12.9. 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    12.9. 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 20
    12.9. 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 14
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 7
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (82%)
     (6%)
     (3%)
     (3%)
     (4%)
     (2%)
    Celkem 171 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Převod LibGlade.xml na GtkBuilder.xml

    14.12.2012 21:07 | Přečteno: 1334× | 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.