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 17:25 | IT novinky

Do prodeje (Farnell) se dostal jednodeskový počítač Tinker Board (unboxing). Jedná se o konkurenci Raspberry Pi 3 od společnosti Asus. Porovnání (jpg) těchto počítačů například na CNXSoft. Cena Tinker Boardu je 55 £.

Ladislav Hagara | Komentářů: 6
včera 14:44 | Zajímavý projekt

Byla zveřejněna pravidla hackerské soutěže Pwn2Own 2017, jež proběhne od 15. do 17. března v rámci bezpečnostní konference CanSecWes ve Vancouveru. Soutěžit se bude o více než milion dolarů v pěti kategoriích. Letos se bude útočit i na Ubuntu. Jedná se již o 10. ročník této soutěže.

Ladislav Hagara | Komentářů: 1
včera 13:33 | Nová verze

Po sedmi měsících vývoje od vydání verze 5.7 byla vydána verze 5.8 (YouTube) toolkitu Qt. Z novinek lze zmínit například Qt Lite pro vestavěná zařízení. Nově jsou plně podporovány moduly Qt Wayland Compositor (YouTube) a Qt SCXML (YouTube). Současně byla vydána verze 4.2.1 integrovaného vývojového prostředí (IDE) Qt Creator.

Ladislav Hagara | Komentářů: 1
včera 11:52 | Pozvánky

Lednový Prague Containers Meetup se koná ve čtvrtek 26. ledna 2017 od 18:00 v Apiary, Pernerova 49, Praha 8. Přijďte se podívat na přednášky o Enterprise Kubernetes a Jenkins as a code.

little-drunk-jesus | Komentářů: 0
včera 11:40 | Pozvánky

Program letošního ročníku konference Prague PostgreSQL Developer Days, která se koná již 15. a 16. února 2017 na ČVUT FIT, Thákurova 9, Praha 6, byl dnes zveřejněn. Najdete ho na stránkách konference včetně anotací přednášek a školení. Registrace na konferenci bude otevřena zítra (24. ledna) v brzkých odpoledních hodinách.

TomasVondra | Komentářů: 0
22.1. 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

Ladislav Hagara | Komentářů: 0
22.1. 02:02 | Komunita

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

Ladislav Hagara | Komentářů: 0
21.1. 22:11 | Nová verze

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
20.1. 17:00 | Nová verze

Byl vydán Docker 1.13. Přehled novinek na YouTube a v poznámkách k vydání na GitHubu. Docker umožňuje běh aplikací v softwarových kontejnerech (Wikipedia).

Ladislav Hagara | Komentářů: 7
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (11%)
 (2%)
 (73%)
 (3%)
 (10%)
Celkem 387 hlasů
 Komentářů: 31, poslední včera 19:19
Rozcestník
Reklama

Dotaz: Gtk3 Perl menu a klávesové zkratky

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

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.

Odpovědi

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.