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 19:55 | IT novinky

    Společnost Meta ve spolupráci se společností Oakley oznámila řadu chytrých brýlí Oakley. První Oakley Meta HSTN si lze předobjednat za 499 dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 16:11 | IT novinky

    Ministerstvo průmyslu a obchodu (MPO) vyjádřilo podporu předložení projektu AI Gigafactory CZ, který do veřejné konzultace Evropské komise zaslala společnost České Radiokomunikace (CRA) v rámci iniciativy Project AIGF CZ. Jde o významný krok k rozvoji výpočetní infrastruktury pro umělou inteligenci (AI), která je prioritou resortu. Projekt je v souladu s cíli Národní strategie umělé inteligence ČR 2030 a je již součástí návrhu

    … více »
    Ladislav Hagara | Komentářů: 7
    včera 13:11 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 154 (pdf). S podtitulem Automatizace domácnosti.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Americký prezident Donald Trump podepsal exekutivní příkaz, který prodlužuje lhůtu pro prodej amerických aktiv aplikace TikTok vlastněné čínskou společností ByteDance do amerických rukou o dalších 90 dnů. Americký Kongres loni v dubnu kvůli bezpečnostním obavám přijal zákon, podle kterého měl vstoupit v platnost zákaz sítě TikTok v USA v případě, že se prodej neuskuteční do 19. ledna. Trump však v lednu lhůtu pro prodej prodloužil o 75 dnů. V dubnu pak přikročil k prodloužení o dalších 75 dnů, lhůta tak měla vypršet dnešním dnem.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | IT novinky

    Microsoft hodlá zrušit další tisíce pracovních míst, a to především v obchodních odděleních. Předchozí kolo propouštění se uskutečnilo v květnu a dotklo se 6000 zaměstnanců. Vedení firmy již dříve upozornilo, že vzhledem k rozsáhlým investicím do umělé inteligence (AI) se bude snažit omezovat výdaje v jiných oblastech.

    Ladislav Hagara | Komentářů: 4
    19.6. 18:44 | IT novinky

    Společnost Murena ve spolupráci se společností Qwant představila vyhledávač Murena Find. Ve výchozím nastavení bude používán v mobilním operačním systému /e/OS a v Murena Workspace.

    Ladislav Hagara | Komentářů: 0
    19.6. 13:00 | IT novinky

    V mobilní aplikaci Facebooku se lze nově přihlašovat pomocí Passkeys.

    Ladislav Hagara | Komentářů: 3
    19.6. 12:44 | IT novinky

    Společnost Midjourney představila vlastní generátor videí pomocí umělé inteligence (AI) V1 Video Model.

    Ladislav Hagara | Komentářů: 0
    18.6. 23:22 | Nová verze

    Editor kódu Zed (Wikipedie) má nově v sobě integrovaný debugger. Podporuje Rust, C/C++, JavaScript, Go, Python a pomocí rozšíření i další programovací jazyky.

    Ladislav Hagara | Komentářů: 7
    18.6. 22:22 | Zajímavý článek

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované GIFy.

    Ladislav Hagara | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (56%)
     (30%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 287 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    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: 303×

    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.