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 14:44 | Nová verze

    Jonathan Thomas oznámil vydání nové verze 3.4.0 video editoru OpenShot (Wikipedie). Představení novinek také na YouTube. Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | Nová verze

    Byla vydána nová verze 1.6 otevřeného, licenčními poplatky nezatíženého, univerzálního ztrátového formátu komprese zvuku Opus (Wikipedie) a jeho referenční implementace libopus. Podrobnosti na demo stránce.

    Ladislav Hagara | Komentářů: 0
    dnes 01:33 | Komunita

    Vojtěch Polášek představil Vojtux, tj. linuxovou distribuci pro zrakově postižené uživatele. Vychází ze spinu Fedory 43 s desktopovým prostředím MATE. Konečným cílem je, aby žádný Vojtux nebyl potřeba a požadovaná vylepšení se dostala do upstreamu.

    Ladislav Hagara | Komentářů: 8
    dnes 00:33 | Nová verze

    Byla vydána (Mastodon, 𝕏) druhá RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

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

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 160 (pdf).

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

    Izrael od února zakáže dětem používat v prostorách základních škol mobilní telefony. Podle agentury AFP to uvedlo izraelské ministerstvo školství, které zdůraznilo negativní dopady, které na žactvo používání telefonů má. Izrael se tímto krokem přidává k rostoucímu počtu zemí, které dětem ve vzdělávacích zařízeních přístup k telefonům omezují.

    Ladislav Hagara | Komentářů: 25
    včera 14:00 | IT novinky

    Internetová společnost Google ze skupiny Alphabet pravděpodobně dostane příští rok pokutu od Evropské komise za nedostatečné dodržování pravidel proti upřednostňování vlastních služeb a produktů ve výsledcích vyhledávání. V březnu EK obvinila Google, že ve výsledcích vyhledávání upřednostňuje na úkor konkurence vlastní služby, například Google Shopping, Google Hotels a Google Flights. Případ staví Google proti specializovaným

    … více »
    Ladislav Hagara | Komentářů: 6
    včera 12:22 | Pozvánky

    Byl oznámen program a spuštěna registrace na konferenci Prague PostgreSQL Developer Day 2026. Konference se koná 27. a 28. ledna a bude mít tři tracky s 18 přednáškami a jeden den workshopů.

    TomasVondra | Komentářů: 0
    včera 12:11 | Pozvánky

    Na webu československého síťařského setkání CSNOG 2026 je vyvěšený program, registrace a další informace k akci. CSNOG 2026 se uskuteční 21. a 22. ledna příštího roku a bude se i tentokrát konat ve Zlíně. Přednášky, kterých bude více než 30, budou opět rozdělené do tří bloků - správa sítí, legislativa a regulace a akademické projekty. Počet míst je omezený, proto kdo má zájem, měl by se registrovat co nejdříve.

    VSladek | Komentářů: 0
    14.12. 00:44 | Zajímavý článek

    Máirín Duffy a Brian Smith v článku pro Fedora Magazine ukazují použití LLM pro diagnostiku systému (Fedora Linuxu) přes Model Context Protocol od firmy Anthropic. I ukázkové výstupy v samotném článku obsahují AI vygenerované nesmysly, např. doporučení přeinstalovat balíček pomocí správce balíčků APT z Debianu místo DNF nativního na Fedoře.

    |🇵🇸 | Komentářů: 39
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (48%)
     (20%)
     (17%)
     (23%)
     (15%)
     (24%)
     (15%)
     (18%)
    Celkem 468 hlasů
     Komentářů: 19, poslední 11.12. 20:04
    Rozcestník

    Dotaz: Krokování v menu

    26.11.2022 21:23 Jan
    Krokování v menu
    Přečteno: 1181×
    Ahoj, chci vytvořit menu s takovým posunem, poradil by někdo jak napsat ten cyklus? Stačí k tomu jen tyto proměnné nebo je potřeba ještě nějaké další? Děkuji za pomoc.
    mám proměnné
    pole=array['0položka','1položka','2položka','3položka','4položka','5položka','6položka','7položka','8položka','9položka'] 
    $aktualni_ID=0
    $max_polozek_na_stranku=3
    $celkem_polozek=10
    
    for(i=$aktualni_ID;i=$max_polozek_na_stranku; i++ )
      if($aktualni_ID==i) 
        echo pole[i].'<<<'
      else
        echo pole[i]
    
    
    
    
    Kroky směrem dolů
    
    0položka<<<
    1položka
    2položka
    
    0položka
    1položka<<<
    2položka
    
    0položka
    1položka
    2položka<<<
    
    1položka
    2položka
    3položka<<<
    
    2položka
    3položka
    4položka<<<
    
    3položka
    4položka
    5položka<<<
    
    4položka
    5položka
    6položka<<<
    
    5položka
    6položka
    7položka<<<
    
    6položka
    7položka
    8položka<<<
    
    7položka
    8položka
    9položka<<<
    
    Kroky zpět (směrem nahoru)
    
    7položka
    8položka
    9položka<<<
    
    7položka
    8položka<<<
    9položka
    
    7položka<<<
    8položka
    9položka
    
    6položka<<<
    7položka
    8položka
    
    5položka<<<
    6položka
    7položka
    
    4položka<<<
    5položka
    6položka
    
    3položka<<<
    4položka
    5položka
    
    2položka<<<
    3položka
    4položka
    
    1položka<<<
    2položka
    3položka
    
    0položka<<<
    1položka
    2položka
    
    

    Odpovědi

    27.11.2022 09:07 X
    Rozbalit Rozbalit vše Re: Krokování v menu
    Jazyk?
    27.11.2022 12:18 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Ukázka je v PHP ale bude to v Pythonu, ten je pro terminál asi lepší.
    27.11.2022 13:34 X
    Rozbalit Rozbalit vše Re: Krokování v menu
    Pokud je to ciste pro terminal tak by mohl stacit whiptail + bash skript.
    27.11.2022 14:12 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Díky za tip, ale znám, i dialog ale oba mají omezení. Dělám vlastní menu.
    27.11.2022 15:17 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Krokování v menu
    Zbaviť sa cyklu a isť stavovým automatom, t. j.:
    <?php
    // (C) 2022, Dušan Kreheľ
    // Licence: MIT
    
    class MenuBox
    {
    	private $items=array();
    	private $items_count=array();
    	private $max_items=10;
    	private $position=0;  /* index */
    	private $box_first=0; /* index */
    	
    	function __construct($items, $draw_max_items)
    	{
    		$this->items=$items;
    		$this->max_items=$draw_max_items;
    		
    		$this->items_count=count($items);
    	}
    	
    	function down()
    	{
    		if($this->position == ($this->items_count-1))
    			return;
    		
    		$this->position++;
    		
    		if(abs($this->position-$this->box_first) == $this->max_items)
    			$this->box_first++;
    	}
    	
    	function up()
    	{
    		if($this->position == 0)
    			return;
    		
    		if($this->position == $this->box_first)
    			$this->box_first--;
    		
    		$this->position--;
    	}
    	
    	function draw()
    	{
    		$count_steps=$this->max_items + $this->box_first;
    		for($i=$this->box_first;$i<$count_steps;$i++)
    			if($i == $this->position)
    				echo " \033[35m".$this->items[$i]."\033[0m\n";
    			else
    				echo " ".$this->items[$i]."\n";
    		echo "\n";
    	}
    }
    
    $items=array("A","B","C","D","E","F","G");
    
    $box= new MenuBox($items, 4);
    $box->draw();
    
    $box->down();
    $box->draw();
    
    $box->down();
    $box->draw();
    
    $box->down();
    $box->draw();
    
    $box->down();
    $box->draw();
    
    $box->down();
    $box->draw();
    
    $box->down();
    $box->draw();
    
    echo "hore dalej\n";
    
    $box->up();
    $box->draw();
    
    $box->up();
    $box->draw();
    
    $box->up();
    $box->draw();
    
    $box->up();
    $box->draw();
    
    $box->up();
    $box->draw();
    
    $box->up();
    $box->draw();
    
    debian.plus@protonmail.com
    27.11.2022 18:51 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Děkuji, za kód, ale opravdu potřebuji jenom nějaký ten algoritmus pro nastavení proměnných OD DO pro samotný cyklus.
    27.11.2022 20:13 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Krokování v menu
    Máš tam výpočet starých/nových premien, ktoré potom len v cykle porovnávaš a nejak vypisuješ.
    debian.plus@protonmail.com
    27.11.2022 20:50 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    A když znáš jenom hodnotu proměnné $position, jak dopočítáš hodnotu proměnné $box_first? Díky
    27.11.2022 21:11 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Krokování v menu
    Tato hodnota je stavová. To znamená, že ju musíš pred zmenou poznať. U mňa je inicializovaná na 0 a potom sa prispôsobuje podľa posunov. Ta premenná je vlastne index, kde začína box zobrazovať tie riadky na výstupe. A v prvých posunoch dole (na začiatku vykonávania menu) sa nemení.
    debian.plus@protonmail.com
    27.11.2022 21:21 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Nevím zda jsem se zeptal dobře. Chci po spuštění toho mít označenou položku třeba $position=6. V mém kódu to nejde, ve tvém to taky nejde?
    27.11.2022 22:13 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Krokování v menu
    Nešlo, ale stačilo len dopísať procedúru set_position() a už to ide:
    <?php
    // (C) 2022, Dušan Kreheľ
    // Licence: MIT
    
    class MenuBox
    {
    	private $items=array();
    	private $items_count=-1;
    	private $max_items=10;
    	private $position=0;
    	private $box_first=0;
    	
    	function __construct($items, $draw_max_items)
    	{
    		$this->items=$items;
    		$this->max_items=$draw_max_items;
    		
    		$this->items_count=count($items);
    	}
    	
    	function down()
    	{
    		if($this->position == ($this->items_count-1))
    			return;
    		
    		$this->position++;
    		
    		if(abs($this->position-$this->box_first) == $this->max_items)
    			$this->box_first++;
    	}
    	
    	function up()
    	{
    		if($this->position == 0)
    			return;
    		
    		if($this->position == $this->box_first)
    			$this->box_first--;
    		
    		$this->position--;
    	}
    	
    	function draw()
    	{
    		$count_steps=$this->max_items + $this->box_first;
    		for($i=$this->box_first;$i<$count_steps;$i++)
    			if($i == $this->position)
    				echo " \033[35m".$this->items[$i]."\033[0m\n";
    			else
    				echo " ".$this->items[$i]."\n";
    		echo "\n";
    	}
    	
    	function set_position($index_position, $index_box_first_line)
    	{
    		$this->position=$index_position;
    		$this->box_first=$index_box_first_line;
    	}
    }
    
    $items=array("A","B","C","D","E","F","G");
    
    $box= new MenuBox($items, 4);
    $box->set_position(2, 1);
    $box->draw();
    
    $box->down();
    $box->draw();
    
    
    debian.plus@protonmail.com
    27.11.2022 22:31 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Ano, ale při volání metody
    $box->set_position(2, 1);
    tak tu hodnotu 1 musíš vypočítat ručně, ne? Myslel jsem spíš volat jen s jednou hodnotou a tu druhou by si vypočítal sám.
    $box->set_position(2);
    Omlouvám se, ale nevím jestli se vyjadřuji k pochopení.
    28.11.2022 09:59 Ja
    Rozbalit Rozbalit vše Re: Krokování v menu
    Obávám se, že vždy potřebuješ dvě hodnoty - index vybrané položky a index první zobrazované položky. Pro první zobrazení může stačit index vybrané položky a index první zobrazované položky dopočítat podle ní, tak aby to vypadalo hezky, ale jakmile se tím začne uživatel pohybovat nahoru a dolů, tak musíš sledovat obě hodnoty. Výchozí první zobrazovanou položku můžeš vypočítávat třeba takhle:
    first = count - lines
    if sel < first:
        first = sel - (lines // 2)
    if first < 0:
        first = 0
    
    kde first je index první položky menu, count je počet položek menu, lines je počet řádek menu
    #!/usr/bin/env python3
    
    def draw(sel, lines):
        menu = ('a', 'b', 'c', 'd', 'e', 'f')
        count = len(menu)
        first = count - lines
        if sel < first:
            first = sel - (lines // 2)
        if first < 0:
            first = 0
        print('-------------')
        for line in range(lines):
            item = line + first
            print(menu[item], '<<<' if item == sel else '')
    
    for sel in range(7):
        draw(sel, 3)
    
    
    výstup je:
    $ python3 menu.py
    -------------
    a <<<
    b 
    c 
    -------------
    a 
    b <<<
    c 
    -------------
    b 
    c <<<
    d 
    -------------
    d <<<
    e 
    f 
    -------------
    d 
    e <<<
    f 
    -------------
    d 
    e 
    f <<<
    -------------
    d 
    e 
    f 
    
    29.11.2022 12:33 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Taky díky, vyřešeno jinak.
    28.11.2022 12:24 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Krokování v menu
    No, ak sa chce, dá sa. To si v zadaní nešpecifikoval. Dá sa nastaviť, že ak je položka v 1/2 zoznamu, tak automatický v tom boxe bude na vrchu (alebo v strede, ak máš nepárny počet položiek v boxe) ako prvá, ináč v boxe posledná. Ale to si vieš aj sam upraviť, nie? ;)
    debian.plus@protonmail.com
    29.11.2022 12:32 Jan
    Rozbalit Rozbalit vše Re: Krokování v menu
    Díky za informaci. Napsal jsem to celý úplně znova a do seznamu ukládám vždy obě hodnoty. Výsledkem je vždy naprosto stejný výpis, jako když se krokuje od pozice 0.

    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.