abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Nová verze

    Byla vydána nová stabilní verze 3.5 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). Přehled novinek také na YouTube. Nově lze využívat cloud (audio.com). Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | Zajímavý článek

    50 let operačního systému CP/M, článek na webu Computer History Museum věnovaný operačnímu systému CP/M. Gary Kildall z Digital Research jej vytvořil v roce 1974.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Pozvánky

    Byl zveřejněn program a spuštěna registrace na letošní konferenci Prague PostgreSQL Developer Day, která se koná 4. a 5. června. Na programu jsou 4 workshopy a 8 přednášek na různá témata o PostgreSQL, od konfigurace a zálohování po využití pro AI a vector search. Stejně jako v předchozích letech se konference koná v prostorách FIT ČVUT v Praze.

    TomasVondra | Komentářů: 0
    včera 03:00 | IT novinky

    Po 48 letech Zilog končí s výrobou 8bitového mikroprocesoru Zilog Z80 (Z84C00 Z80). Mikroprocesor byl uveden na trh v červenci 1976. Poslední objednávky jsou přijímány do 14. června [pdf].

    Ladislav Hagara | Komentářů: 6
    včera 02:00 | IT novinky

    Ještě letos vyjde Kingdom Come: Deliverance II (YouTube), pokračování počítačové hry Kingdom Come: Deliverance (Wikipedie, ProtonDB Gold).

    Ladislav Hagara | Komentářů: 3
    21.4. 19:11 | Komunita

    Thunderbird 128, příští major verze naplánovaná na červenec, přijde s nativní podporou Exchange napsanou v Rustu.

    Ladislav Hagara | Komentářů: 19
    21.4. 04:44 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Novým vedoucím je Andreas Tille.

    Ladislav Hagara | Komentářů: 7
    21.4. 00:11 | Nová verze

    Po osmi měsících vývoje byla vydána nová verze 0.12.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 268 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    20.4. 23:55 | Pozvánky

    Poslední měsíc byl plný zajímavých akcí, o kterých Vám bastlíři z projektu MacGyver mohou povědět, protože se na ně sami vydali. Kde všude byli, ptáte se? Objevili se na Installfestu, Arduino Day, Hackaday Europe a tajném srazu bastlířů z Twitteru. A z každé akce pro vás mají zajímavé poznatky.

    … více »
    bkralik | Komentářů: 1
    KDE Plasma 6
     (71%)
     (10%)
     (2%)
     (17%)
    Celkem 670 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"

    13.12.2011 16:18 Peter S.
    gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Přečteno: 171×
    Ahojte

    píšem taký gtk progamik a narazil som na takýto problem:

    Mám expander bal_exp a v nom button bal_button a iné widgety.

    Na expander som si nasadil tooltip, ktorý funguje. Problém je že daný tooltip sa zobrazuje aj nad vloženými widgetami a konkrétne aj nad menovaným bal_button. A ak priradim tip aj k bal_button, tak mi zobrazí (ku nemu) prazdny tip (predpokladám že "text" s nulovou dlžkov).

    Taktiež som si všimol že ked mám v bal_exp vložený hbox, tak v nom vložené widgety už tooltip z expanderu nepreberajú. Alebo je tam ešte nejaké iné pravidlo?

    Takže moja otázka je - ako prinútim bal_button aby nepreberal tooltip z bal_exp ale zobrazil iný text?

    Napadá ma možnosť dať ho do v|hboxu. Jednoduchšie riešenie by nebolo?

    Vďaka

    Odpovědi

    13.12.2011 16:24 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    no škoda že tu nie je edit - musím sa opraviť

    Takže štruktúra je taka expander > hbox a widgety v nom preberajú tooltip z expanderu, a nedovolia text zmeniť

    a až v hboxe je vbox v ktorom widgety už dovolia pomocou gtk_tooltips_set_tip zmenit text tipu.

    Je to zamotané :), sorry
    13.12.2011 16:47 l4m4
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    from gi.repository import Gtk
    
    w = Gtk.Window()
    w.connect('destroy', Gtk.main_quit)
    
    e = Gtk.Expander.new('Expand Me!')
    e.set_tooltip_text('This is the expander.')
    w.add(e)
    
    h = Gtk.Box()
    e.add(h)
    
    b = Gtk.Button.new_with_label('Click Me!')
    b.set_tooltip_text('This is the button.')
    h.add(b)
    
    w.show_all()
    Gtk.main()
    
    Toto ti nefunguje, jak má? (Gtk+ 3.2.3)
    13.12.2011 17:24 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"

    toto je python?

    ja to píšem v C. Ak je to python tak výsledok je toto:

     $ python gtkexp.py 
    Traceback (most recent call last):
      File "gtkexp.py", line 1, in 
        from gi.repository import Gtk
      File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 23, in 
        from ._gi import _API, Repository
    ImportError: /usr/lib/python2.7/dist-packages/gi/_gi.so: undefined symbol: g_callable_info_skip_return
    
    
    13.12.2011 18:19 l4m4
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Ano, Python. Píšu v obojím, ale v Pythonu jsou příklady přehlednější. Podstatné je, že mi to normálně funguje.

    Debian, nebo nějaký derivát? Podle všeho je tam momentálně chaos v závislostech pygobjectu/pygtk...

    13.12.2011 18:25 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Debian squeze. Môže byť problem aj u mna že mam mixované repozitáre. Stále ked niečo potrebujem nainštalovať, musím riešiť konflikty pomocou aptitude...

    Ale aj tak to asi bude problem v gtk a nie so starými alebo mixovanými balíkmi...
    13.12.2011 18:49 l4m4
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Takže v C (zobáčky si oprav):
    #include [gtk/gtk.h]
    
    int
    main(int argc, char *argv[])
    {
        gtk_init(&argc, &argv);
    
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
        GtkWidget *expander = gtk_expander_new("Expand Me!");
        gtk_widget_set_tooltip_text(expander, "This is the expander.");
        gtk_container_add(GTK_CONTAINER(window), expander);
    
        GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(expander), hbox);
    
        GtkWidget *button = gtk_button_new_with_label("Click Me!");
        gtk_widget_set_tooltip_text(button, "This is the button.");
        gtk_container_add(GTK_CONTAINER(hbox), button);
    
        gtk_widget_show_all(window);
        gtk_main();
    
        return 0;
    }
    
    Zkompilovatelné s Gtk+ 2 i 3 a s obojím (2.24.8 a 3.2.2) se chová identicky - správně.
    13.12.2011 22:29 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"

    nooooo... tak to je zaujímavé, ja používam toto: http://developer.gnome.org/gtk/2.24/GtkTooltips.html a tu ked to čítam sa píše:

    GtkTooltips has been deprecated in GTK+ 2.12, in favor of the new GtkTooltip API.

    a ukazuje to tu: http://developer.gnome.org/gtk/2.24/GtkTooltip.html . Citujem:

    Basic tooltips can be realized simply by using gtk_widget_set_tooltip_text()

    No je to čo ty používaš. Takže zajtra sa na to pôjdem a asi to celé prerobím.... A myslím že tým pádom je to asi vyriešené...

    14.12.2011 09:17 Peter S.
    Rozbalit Rozbalit vše ten istý efekt
    Takže prišiel som na to, že aj tu sa prejavuje "dedičnosť"

    Dopln si do tvojho kodu další button, napríklad takto:
    GtkWidget *button2 = gtk_button_new_with_label("Or Me!");
    gtk_container_add(GTK_CONTAINER(hbox), button2);
    A ked na neho nabehneš myšou tak sa tam objavi tip z expanderu
    14.12.2011 10:50 l4m4
    Rozbalit Rozbalit vše Re: ten istý efekt
    Aha, už asi chápu, o co ti jde. Pokud chceš nastavit tooltip tomu nápisu na expanderu, nikoli celému expanderu, tak to taky musíš udělat - viz gtk_expander_get_label_widget().
    13.12.2011 18:29 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"

    inak to mam 3x python 2.5 , 2.6 a 2.7. Toto hore bolo z defaultného pythona, teda asi 2.7, verzia 2.5 dáva toto:

     

    $ python2.5 gtkexp.py 
    Traceback (most recent call last):
    File "gtkexp.py", line 1, in <module>
    from gi.repository import Gtk
    ImportError: No module named gi.repository
    13.12.2011 23:09 pozortucnak | skóre: 21 | blog: vecny_windowsar
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Potencionálně trapný dotaz...

    Proč jsou v GTK všechny GUI prvky typu GtkWidget? Nebylo by přehlednější mít window, expander, hbox, button...
    Jsem mimořádně obtížný případ
    13.12.2011 23:26 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    no prečo musi byť x,y,z typu int a nemôžu byť rovno x,y,z??

    proste to gtk asi musí vedieť aká štruktura nasleduje v pamäti na pozícii (povedzme) 12345678

    aspon tak to chápem ja ako amatersky programátor :)
    13.12.2011 23:45 l4m4
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"
    Však ony jsou různých typů - akorát konstruktory widgetů jsou deklarovány s návratovým typem GtkWidget*, tj. bázové třídy. Nejspíš proto, že to tak kdosi kdysi deklaroval a už to tak zůstalo. Takže se takhle často deklarují i proměnné. Lze to dělat i naopak, mít proměnné konkrétních pointerových typů a přetypovávat dolů. Přetypovávat se ale někam musí kvůli C často tak jako tak.
    14.12.2011 00:02 Peter S.
    Rozbalit Rozbalit vše Re: gtk_expander + gtk_tooltips -> problemy s "dedičnosťou"

    ešte doplnil, štruktúra widgetov nie je dvojurovnova ale je to dost rozvetvený strom, napríklad:

    + GtkWidget
    +----GtkContainer
    +----GtkBox
    +----GtkVBox
    +----GtkFileChooserWidget

    a každý "parent" ma spravidla viac childov. V tomto príklade uvádzam stale len jeden child...

     

    sice nový pointer je definovaný ako gtkwidget * , ale samotný widget sa tvorí funkciou v tomto prípade:

     

    gtk_file_chooser_widget_new()

    Založit nové vláknoNahoru

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

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