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.
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.
Příště
To je pro dnešek vše a příště se podíváme na to, jak využít u Screenletu myš.