Hlavní navigace

Vytváříme nastavení pro Screenlet

Michal Hořejšek

Z minulých dílů našeho seriálu o Screenletech už umíme udělat vzhledově pěkný Screenlet, ale někdy je potřeba nechat některé volby na uživateli. Například změnu konkrétních barev a podobně, či mu dát například specifickou možnost vybrat, u jakého disku chce sledovat a zobrazovat jeho zaplnění.

Options

Kvůli těmto důvodům se dnes naučíme nastavení do našeho Screenletu vytvořit. Nastavení je poté u všech Screenletů dostupné pravým myšítkem pod položkou Properties...

Nastavení se vytváří v konstruktoru ( __init__) pomocí metod add_options_group a add_options, kde add_options_group přidává do nastavení novou záložku a add_options novou položku s určitým nastavením. Jakou přesně položku (číslo, text, pravdivostní hodnotu, ..) určují následující metody.

FileOption Podtřída pro nastavení typu string, která nastavuje název souboru.
ImageOption Podtřída pro nastavení typu string, která nastavuje název obrázku.
DirectoryOption Podtřída pro nastavení typu file, která nastavuje název adresáře.
BoolOption Nastavení pro datový typ boolean.
StringOption Nastavení pro datové typy string.
IntOption Nastavení pro datové typy int nebo float.
FloatOption Nastavení pro datové typy float.
FontOption Nastavení fontu – jednoduchý string.
ColorOption Nastavení barvy – list s čtyřmi položky.

Toto je jen poloviční výčet. Existují další nastavení, které můžete nalézt v dokumentaci. Například, pokud se Screenlet připojuje na nějaký účet (e-mail, facebook, ..), tak je nebezpečné nick a heslo uchovávat jako text, který si může v nastavení kdokoli přečíst – to řeší metoda AccountOption, která nabídne dva edity, z toho jeden pro heslo, které se maskuje klasicky pod „puntíky“.

Nastavení budeme vytvářet v konstruktoru a zde je ukázka:

from screenlets.options import BoolOption, FontOption, ColorOption

def __init__( self, **keyword_args ):
  ...
  self.add_options_group( 'Appearance', 'Just appearance' )
  self.add_option( BoolOption( 'Appearance', 'showIcon', self.showIcon, 'Show icon', '' ) )
  self.add_option( FontOption( 'Appearance','font', self.font, 'Font', '' ) )
  self.add_option( ColorOption( 'Appearance','colorText', self.colorText, 'Text color', '' ) )
  self.add_option( ColorOption( 'Appearance','colorBackground', self.colorBackground, 'Background color', '' ) )
  ... 

Nejprve si na 5. řádku nadefinujeme novou záložku pomocí metody add_option_group, která se v Properties objeví pod položkou Options. První záložka Screenlet tam bude vždy, další si už vytváříme sami dle potřeby. Naší nové záložce nastavíme titulek „Appearance“ a jako popisek „Just appearance“. Popisek se poté objeví hned pod záložkou – můžete se podívat na záložku Screenlet, která má popisek „The basic settings for this Screenlet-instance.“.

Na dalších řádcích (6.-9.) nastavujeme do naší záložky různé nastavení pomocí metody  add_option.

Na 6. řádku přidáváme booleanskou hodnotu pomocí metody BoolOption, kde první atribut nastavuje, do jaké záložky tuto položku přidat. Druhý atribut je název proměnné, do které poté hodnotu ukládáme. Třetí atribut nastavuje defaultní hodnotu. Čtvrtý je titulek a pátý je popis, který se zobrazí po najetí myši. Tyto atributy jsou u všech nastavení stejné, jen některé mají něco navíc. Například metoda IntOption disponuje ještě atributy min a max, které určuj rozmezí čísla. Opět se podívejte do dokumentace.

V nastavení se položky řadí podle toho, jak je za sebou přidáme.

Screenlet nastavení 2

MenuItem

Nastavení už zvládneme udělat, ale je ještě jedna věc, která se může hodit. A ta věc je přidání vlastních položek do menu po stisknutí pravého myšítka.

Proč by se nám mělo něco takového hodit? Například máme Screenlet, který zobrazuje číslo, kolik máme nepřečtených e-mailů nebo zobrazuje začátky z posledních pár e-mailů. V takovémto Screenletu určitě nebudeme stahovat data z e-mailové schránky každou sekundu, nýbrž třeba každých 5–10 minut. Uživatel by mohl chtít však provést refresh teď hned. I takovému uživateli můžeme vyhovět, a já vám prozradím jak.

Stačí do metody on_init přidat metodou add_menuitem novou položku a v metodě on_menuitem_select odchytit signál a provést potřebnou akci. Ukážeme si to na příkladu.

def on_init( self ):
  self.add_menuitem( "refresh", "Refresh" )
  self.add_default_menuitems()

def on_menuitem_select( self, id ):
  if id == "refresh":
    self.getData()
    self.redraw_canvas() 

Na druhém řádku si přidáme naší novou položku s ID „refresh“ a titulkem „Refresh“. ID budeme používat pro odchycení signálu a titulek je zobrazen uživateli. Hned poté ještě přidáme defaultní položky Screenletu – to je ten výběr Size, Theme, Window, Properties, atp.

Metoda on_menuitem_select se zavolá po výběru položky v menu a pošle nám ID položky, která byla stisknuta. Podle ID provedeme na 6. řádku test a provedeme určitou akci. V našem případě, pokud se jedná o položku refresh, zavoláme funkci getData, kde si naprogramujeme stažení aktuálních dat z internetu a poté na řádku 8 Screenlet překreslíme.

Screenlet nastavení 1

Příště

To je pro dnešek vše a příště se podíváme na to, jak využít u Screenletu myš.

Našli jste v článku chybu?
DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

DigiZone.cz: Flix TV startuje i na Slovensku

Flix TV startuje i na Slovensku

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí