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 05:55 | Komunita

    O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.

    Ladislav Hagara | Komentářů: 6
    včera 05:22 | Komunita

    Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.

    Ladislav Hagara | Komentářů: 3
    včera 04:00 | Humor

    Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 4
    27.3. 13:00 | Komunita

    Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.

    Ladislav Hagara | Komentářů: 9
    27.3. 12:11 | Nová verze

    Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.

    Ladislav Hagara | Komentářů: 1
    27.3. 02:22 | Komunita Ladislav Hagara | Komentářů: 11
    26.3. 23:22 | Komunita

    Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.

    Ladislav Hagara | Komentářů: 3
    26.3. 22:33 | Nová verze

    Byla vydána nová verze 7.6 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Správce hesel KeePassXC byl nahrazen správcem hesel GNOME Secrets. Bitcoinová peněženka Electrum byla povýšena na verzi 4.7.0. Tor Browser byl povýšen na verzi 15.0.8. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 1
    26.3. 11:33 | Zajímavý článek

    Chris Down v obsáhlém článku „vyvrací mýty o zswap a zram“, vysvětluje, co vlastně dělají a jaké jsou mezi nimi rozdíly. Doporučuje vyhýbat se zram na serveru a bez OOM.

    |🇵🇸 | Komentářů: 1
    26.3. 11:22 | IT novinky

    Porota v Los Angeles shledala firmy Google a Meta odpovědnými v přelomovém soudním sporu, který se týká závislosti na sociálních sítích; firmy musí zaplatit odškodné tři miliony dolarů (63,4 milionu Kč). Společnosti, které s verdiktem nesouhlasí, čelily obvinění, že své sociální sítě a platformy záměrně navrhly tak, aby si na nich děti vypěstovaly závislost. Porota došla k závěru, že technologické společnosti při navrhování a

    … více »
    Ladislav Hagara | Komentářů: 15
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (30%)
     (2%)
     (5%)
     (1%)
     (14%)
     (24%)
    Celkem 1175 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: Gtk3 Perl menu a klávesové zkratky

    Brilantní modř avatar 18.4.2013 13:36 Brilantní modř | skóre: 14
    Gtk3 Perl menu a klávesové zkratky
    Přečteno: 366×

    Dobrý den.

    Budu rád, když mi někdo, kdo se vyzná, pomůže.

    Nejdřív se prosím podívejte na tento obrázek. Je na něm otevřené menu Soubor editoru Bluefish, nalevo v tomto menu jsou jednotlivé položky a u některých z nich je napravo uvedena klávesová zkratka.

    Mám dotaz, který se týká zobrazení klávesových zkratek v menu (tak, jak je to na obrázku): Jak se to dá udělat v Gtk2 nebo Gtk3 Perlu?

    Mějme tento kód:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use locale;
    use utf8;
    use Glib qw(TRUE FALSE);
    use Gtk3;
    
    sub quitf {
        Gtk3->main_quit();
    }
    
    Gtk3->init;
    
    my $label = Gtk3::Label->new("Hokusy pokusy...");
    
    my $statusbar = Gtk3::Statusbar->new();
    my $context_id_label = $statusbar->get_context_id("working_label");
    my $message_id_label = $statusbar->push($context_id_label, "Experiment se stavovým řádkem");
    
    my $menu_bar = Gtk3::MenuBar->new();
    
    my $menu_bar_item_hokus = Gtk3::MenuItem->new();
    $menu_bar_item_hokus->set_label("Hokus");
    
    my $menu_bar_item_pokus = Gtk3::MenuItem->new();
    $menu_bar_item_pokus->set_label("Pokus");
    
    $menu_bar->append($menu_bar_item_hokus);
    $menu_bar->append($menu_bar_item_pokus);
    
    my $menu_hokus = Gtk3::Menu->new();
    
    my $menu_hokus_item_soubor = Gtk3::MenuItem->new();
    $menu_hokus_item_soubor->set_label("Soubor");
    
    my $menu_hokus_item_novy = Gtk3::MenuItem->new();
    $menu_hokus_item_novy->set_label("Nový");
    
    my $menu_hokus_item_ulozit = Gtk3::MenuItem->new();
    $menu_hokus_item_ulozit->set_label("Uložit");
    
    my $menu_hokus_item_zavrit = Gtk3::MenuItem->new();
    $menu_hokus_item_zavrit->set_label("Zavřít");
    
    $menu_hokus->append($menu_hokus_item_soubor);
    $menu_hokus->append($menu_hokus_item_novy);
    $menu_hokus->append($menu_hokus_item_ulozit);
    $menu_hokus->append($menu_hokus_item_zavrit);
    
    $menu_bar_item_hokus->set_submenu($menu_hokus);
    
    my $menu_pokus = Gtk3::Menu->new();
    
    my $menu_pokus_item_napoveda = Gtk3::MenuItem->new();
    $menu_pokus_item_napoveda->set_label("Nápověda");
    
    my $menu_pokus_item_oaplikaci = Gtk3::MenuItem->new();
    $menu_pokus_item_oaplikaci->set_label("O aplikaci");
    
    $menu_pokus->append($menu_pokus_item_napoveda);
    $menu_pokus->append($menu_pokus_item_oaplikaci);
    
    $menu_bar_item_pokus->set_submenu($menu_pokus);
    
    my $vbox = Gtk3::VBox->new(0, 5);
    $vbox->pack_start($menu_bar, FALSE, FALSE, 0);
    $vbox->pack_start($label, FALSE, FALSE, 5);
    $vbox->pack_end($statusbar, FALSE, FALSE, 0);
    
    my $window = Gtk3::Window->new("toplevel");
    $window->signal_connect("destroy" => sub {
        &quitf();
    });
    $window->add($vbox);
    $window->show_all();
    
    Gtk3->main;
    
    __END__
    

    Co do něj přidat, aby se dosáhlo kýženého výsledku?

    Mám totiž (jinou) aplikaci, která podporuje různé klávesové zkratky, a já bych je chtěl uvést v hlavním menu u jeho jednotlivých položek, tak, jak je to zvykem.

    Předem děkuji za všechny podnětné odpovědi.


    Řešení dotazu:


    Odpovědi

    Řešení 1× (Brilantní modř (tazatel))
    18.4.2013 19:14 potato
    Rozbalit Rozbalit vše Re: Gtk3 Perl menu a klávesové zkratky
    Nebudu se pokoušet psát něco v Perlu, nicméně jsou různé možnosti. Udělat to totálně ručně včetně vytváření GtkAccelLabel a jejich cpaní do těch položek menu. To vynechávám. Udělat to celé high-level přes UIManager, builder, etc. a nematlat se s konstrukcí widgetů v kódu. To asi nechceš. Takže ta středně ruční cesta:

    1. Nastavíš položkám menu accel_path (cestu).

    2. Vytvoříš (nebo zrecykluješ) AccelGroup, kterou nastavíš jak těm menu, tak tomu oknu.

    3. Definuješ akcelerátory pomocí accel_map_add_entry(), která bere právě ty cesty nastavené v bodě 1.

    Příklad v Pythonu bude snad alespoň trochu podobný:
    from gi.repository import Gtk, Gdk
    
    w = Gtk.Window()
    w.set_default_size(300, -1)
    w.connect('destroy', Gtk.main_quit)
    
    m = Gtk.MenuBar()
    w.add(m)
    
    i = Gtk.MenuItem()
    i.set_label('Menu')
    i.set_accel_path('<main>/Menu')
    m.add(i)
    
    mm = Gtk.Menu()
    i.set_submenu(mm)
    mm.set_accel_group(Gtk.AccelGroup())
    w.add_accel_group(mm.get_accel_group())
    
    ii = Gtk.MenuItem(label='Text')
    ii.set_accel_path('<main>/Menu/Test')
    mm.add(ii)
    
    a = Gtk.AccelMap.get()
    a.add_entry('<main>/Menu/Test', Gdk.KEY_t, Gdk.ModifierType.CONTROL_MASK)
    
    w.show_all()
    Gtk.main()
    

    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.