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 16:11 | Bezpečnostní upozornění

V Linuxu byla nalezena bezpečnostní chyba CVE-2019-8912. Jedná se o vážnou (CVSS v3.0: 9.8) bezpečnostní chybu typu CWE-416: Use After Free v crypto/af_alg.c. Chyba byla nalezena pomocí detektoru chyb při práci s pamětí KASAN (Kernel Address Sanitizer).

Ladislav Hagara | Komentářů: 0
dnes 11:11 | Komunita

Mozilla.cz informuje, že další vydání SeaMonkey se zdrží. Infrastruktura projektu SeaMonkey prochází mnoha změnami. Důvodem je požadavek na nezávislost na infrastruktuře Firefoxu do konce roku, protože jeho vývoj nebude SeaMonkey následovat ve stejném tempu a rozdíly jsou moc veliké. Bohužel se při těchto přesunech nepodařilo udržet vše ve funkčním stavu a tak není možné sestavovat a vydávat nové verze SeaMonkey.

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

V Drupalu byla nalezena vysoce kritická zranitelnost PSA-2019-02-19. Podrobnosti a opravy 8.5.x a 8.6.x budou zveřejněny dnes mezi 19:00 a 23:00.

Ladislav Hagara | Komentářů: 1
včera 16:33 | Zajímavý projekt

Mozilla.cz informuje o stavu češtiny v projektu Common Voice. Projekt Common Voice sbírá hlasová data, na základě kterých bude možné trénovat modely a software pro rozpoznávání řeči. Aktuálně je nutné rozšířit počet vět v datové sadě a alespoň 5 tisíc vět musí být ručně ověřených několika lidmi.

Ladislav Hagara | Komentářů: 0
včera 16:22 | Nová verze

Byla vydána nová vývojová verze datového formátu a souvisejících nástrojů Relational pipes. Hlavní novinkou verze v0.10 je nástroj relpipe-tr-guile, který díky GNU Guile umožňuje filtrovat a transformovat relační data pomocí výrazů jazyka Scheme.

xkucf03 | Komentářů: 0
včera 00:33 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje na kritickou zranitelnost ve WordPressu umožňující vzdálené spuštění libovolného kódu. Prakticky se jedná o kombinací dvou různých zranitelností (Directory Traversal a Local File Inclusion), pro jejichž úspěšné zneužití musí útočník získat v rámci instance WordPressu alespoň oprávnění autora.

Ladislav Hagara | Komentářů: 2
19.2. 17:33 | Nová verze

Po dvou a půl letech od vydání verze 5.0.0 byla oficiálně vydána nová major verze 6.0.0 správce digitálních fotografií a nově i videí digiKam (digiKam Software Collection). Přehled novinek i s náhledy v oficiálním oznámení. Ke stažení je také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

Ladislav Hagara | Komentářů: 1
19.2. 00:44 | Komunita

Do 2. dubna se lze přihlásit do dalšího kola programu Outreachy (Wikipedie), jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 20. května do 20. srpna 2019, v participujících organizacích lze vydělat 5 500 USD.

Ladislav Hagara | Komentářů: 1
19.2. 00:11 | Bezpečnostní upozornění

Byly zveřejněny informace o o bezpečnostní chybě CVE-2019-6454 ve správci systému a služeb systemd (PID 1). Běžný uživatel jej může shodit připravenou D-Bus zprávou. V upstreamu je chyba již opravena [reddit].

Ladislav Hagara | Komentářů: 3
18.2. 22:44 | Nová verze

Byla vydána nová verze 2019.1 průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek v changelogu. Vývojáři zdůrazňují Linux 4.19.13 a díky němu opětovnou podporu Banana Pi a Banana Pro, aktualizaci nástrojů jako theHarvester nebo DBeaver a Metasploit Framework ve verzi 5.0. Aktualizovat Kali Linux lze pomocí příkazů "apt update && apt -y full-upgrade".

Ladislav Hagara | Komentářů: 0
Máte v desktopovém prostředí zapnutou zvukovou znělku po přihlášení se do systému?
 (8%)
 (1%)
 (90%)
 (1%)
Celkem 374 hlasů
 Komentářů: 11, poslední 14.2. 07:59
Rozcestník

Převod LibGlade.xml na GtkBuilder.xml

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