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í
×
dnes 13:33 | Nová verze

The Document Foundation oznámila na svém blogu vydání nové major verze 6.4 svobodného kancelářského balíku LibreOffice. Podrobný přehled novinek i s náhledy v poznámkách k vydání a ve videu na YouTube (české titulky). Nový LibreOffice je svižnější a přináší nové funkce a lepší kompatibilitu. U náhledů na úvodní obrazovce se nově zobrazuje ikona, která udává, o jaký typ dokumentu se jedná. Přibyl generátor QR kódů.

Ladislav Hagara | Komentářů: 0
dnes 09:33 | Komunita

Po více než třech a půl letech od představení v diskusním listu LKML (Linux Kernel Mailing List) byl WireGuard (Wikipedie), tj. software pro vytváření VPN tunelů, začleněn (commit) do upstream Linuxu (mainline).

Ladislav Hagara | Komentářů: 0
dnes 08:32 | Nová verze

Po roce vývoje byl vydán FreeNAS 11.3, open source storage řešení postavené na FreeBSD a ZFS. Mezi novinkami je 2.0 API (podpora REST i Websocket), podpora NAT i pro pluginy, vylepšený alert systém, vylepšený výkon ZFS, ACL manager a spousta dalších věcí. Tato verze již obsahuje jen nové rozhraní (legacy už není k dispozici), které doznalo mnoha vylepšení. Upgrade na verzi 11.3 je oficiálně podporován jen z verze 11.2-U7.

Max | Komentářů: 2
dnes 07:00 | Bezpečnostní upozornění

V poštovním serveru OpenSMTPD (Wikipedie) byla nalezena a opravena kritická bezpečnostní chyba CVE-2020-7247. Útočník může lokálně nebo i vzdáleně spouštět libovolné příkazy pod právy roota.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Komunita

Vývojáři poštovního klienta Thunderbird oznámili, že pro něj vytvořili nový domov. Vytvořili pro něj společnost MZLA Technologies Corporation zcela vlastněnou neziskovou organizací Mozilla Foundation.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Zajímavý projekt

Cílem projektu Usable X.509 errors (GitHub) jsou srozumitelnější chybové hlášky v X.509. Ke stažení a k vyzkoušení jsou různě vadné certifikáty.

Ladislav Hagara | Komentářů: 2
včera 22:33 | Nová verze

Byla vydána (YouTube) nová verze 2019.3 multiplatformního herního enginu Unity (Wikipedie). Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Ukázka možností v krátkém filmu The Heretic.

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

Byla vydána nová verze 2020.1 průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Systém už neběží pod uživatelem root. V živém systému se uživatel místo root/toor přihlašuje kali/kali. Při instalaci systému je vyžadováno zadání uživatelského jména a hesla. Aktualizovat Kali Linux lze pomocí příkazů "apt update && apt -y full-upgrade". V dalších verzích spolu s příkazem sudo.

Ladislav Hagara | Komentářů: 0
včera 13:00 | Nová verze

Byla vydána nová verze 5.0.0 Knot Resolveru. Přináší například změny ve způsobu konfigurace síťových zařízení. Knot Resolver je open source implementace rekurzivního DNS serveru (resolveru) vytvořená a udržovaná v Laboratořích CZ.NIC.

Ladislav Hagara | Komentářů: 0
včera 03:00 | Bezpečnostní upozornění

Intel vydal bezpečnostní upozornění INTEL-SA-00329 upozorňující na dvě nové bezpečnostní chyby ve svých procesorech. Jedná se o CVE-2020-0548 (Vector Register Sampling) a CVE-2020-0549 (L1D Eviction Sampling). Vážnější chyba CVE-2020-0549 dostala název CacheOut (pdf).

Ladislav Hagara | Komentářů: 17
Zdají se vám sny s IT tématikou?
 (9%)
 (1%)
 (12%)
 (17%)
 (55%)
 (7%)
Celkem 289 hlasů
 Komentářů: 10, poslední 18.1. 16:18
Rozcestník

Převod LibGlade.xml na GtkBuilder.xml

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

17.4.2019 12:56 conor mcgregor
Rozbalit Rozbalit vše Re: Převod LibGlade.xml na GtkBuilder.xml
Many users try to change internet setting in window 10,there are many different stylish mode problem sync folders windows 10 so,today we learn How do I sync my settings in windows 10.
ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.