1

Téma: ukládání a obnova stavu grafiky

Matně si vzpomínám, že před několika lety proběhla korespondence o možnosti ukládat a obnovovat nastavení grafiky.  Tehdy se diskutovalo o ukládání pod nějakým jménem (např. "Pouze horní strana" apod.).  To se mi ze systémového hlediska příliš nelíbilo, a námět jsem proto odložil.  Nyní jsem se k němu vrátil -- je to ostatně úloha složitosti přiměřené dnešní teplotě vzduchu.

Rozdíl je v tom, že nastavení grafiky ukládám do zásobníku, takže pojmenování odpadá.  ??ešení ovšem stojí na dávném principu, na němž je vystavěn celý program Layout, totiž že uživatel ví, co dělá, a naopak tento princip dále utvrzuje.  Tak mi kromě zásobníku stačilo doplnit jen tři příkazy:

Graphics | Save ukládá aktuální nastavení grafiky na vrchol zásobníku (nejstarší uložené je ztraceno, je-li zásobník zaplněn).
Graphics | Restore obnovuje nastavení z vrcholu zásobníku (aktuální nastavení je ztraceno) a překreslí obrazovku.
Graphics | Exchange vymění nastavení grafiky na vrcholu zásobníku s aktuálním a překreslí obrazovku.

Program opět je v archivu www.formica.cz/files/Layout-p98-pokusy11.zip .

Příklad užití: V menu Graphics dám Save, pak nastavím pohled na horní vrstvy, uložím pomocí příkazu Save, nastavím pohled na dolní vrstvy, a mezi oběma pohledy teď mohu přepínat příkazem Exchange, aniž bych menu Graphics vůbec opustil.  Až se mi přepínání omrzí, dám dvakrát Restore a vrátím se tak k výchozímu pohledu.

Zásobník má nyní hloubku 8 položek (do každé z nichž se ukládá nastavení všech parametrů z menu Graphics).  Za úvahu by možná stálo přidat příkaz(y) Graphics | Roll Up / Down, kterým by uživatel mohl procházet dokola skrz celý zásobník, aniž by kteroukoliv z jeho položek zahodil.  (Pak by možná bylo lépe zásobník zkrátit; cyklování by se však v každém případě omezovalo pouze na obsazené položky.)  Pro rozumné řešení asi je klíčová odpověď na otázku, mezi kolika nastaveními uživatel v praxi potřebuje přepínat.

Celý zásobník by přirozeně bylo možno ukládat do konfiguračního souboru (za cenu opětné změny jeho formátu).  Přidám jej tam, pokud se funkce osvědčí (a jakmile se délka zásobníku ustálí).  Na druhé straně současný stav automaticky řeší mazání zásobníku, což se může také někdy hodit.

2

Re: ukládání a obnova stavu grafiky

Po sesbírání prvních zkušeností jsem skutečně přidal příkazy Graphics | Roll Down a Graphics | Roll Up, které rotují obsah zásobníku tak, že se na obrazovku dostane naposled vložené, resp. nejdříve vložené (a dosud nezapomenuté) nastavení.  Rotuje se ovšem "skrz" aktuální nastavení (podobně jako v procesorech fungují instrukce Rotate Left / Right Through Carry).  Pokusný program s těmito příkazy si můžete stáhnout z archivu www.formica.cz/files/Layout-p98-test.zip .

Zároveň tam (zcela provizorně) zobrazuji i hodnotu stack pointeru, aby měl uživatel alespoň trochu představu, co vše je uloženo.  Protože však ukazuje na vrchol zásobníku (který je v poli indexovaném od nuly) a protože aktuální nastavení je mimo zásobník, rotace probíhá mezi  položkami, jejichž počet ve skutečnosti je o dva vyšší.

Pokud toto vše někomu připadá odpudivě programátorské, mohu s ním jedině souhlasit.  Východisko bych však hledal spíše v nalezení intuitivnějších a atraktivnějších jmen příkazů.  Jinými slovy, koncepce, kdy si uživatel ukládá svoje jednotlivá nastavení grafiky anonymně a pak mezi nimi může cyklicky přepínat, mi připadá výhodnější a sympatičtější než nastavení ukládat a vyvolávat např. pod předdefinovanými čísly nebo uživatelem zadanými jmény.  Myslím si, že uživatel jména ani čísla celkem nepotřebuje (vymýšlet si a pak pamatovat...) v situaci, kdy může snadno přepínat z jednoho anonymního nastavení na následující tak dlouho, až před sebou na obrazovce uvidí to, které mu vyhoví.

3

Re: ukládání a obnova stavu grafiky

Toto je velice uzitecna funkce. Casto totiz potrebuji zobrazit pouze jednu vrstvu medi abych si prohledl nedostatky ktere bych obtizne videl pres ostatni vrstvy. Nebo napriklad zobrazim 15, 21, 22 abych srovnal popisky a z vrstev 21, 22 vytvorim potisk desky, pak se zas musim prepinat zpet do bezneho zobrazeni, atp.
Dle meho nazoru je naopak vyhodnejsi mit na obrazovce jasne popsano "Pouze TOP", "Pouze BOTTOM", "Rovnani popisek", atd., primlouval bych se tedy pro tuto variantu, pripradne uvaha o nejake kombinaci obou zpusobu. Nez totiz klikat tak dluho nez zjistim ze toto je opravdu to co potrebuji, je v podstate rychlejsi dal si vrstvy rucne prepinat...

4

Re: ukládání a obnova stavu grafiky

Jeste se zeptam, co konkretne v praxi casto prepinate a chcete tuto funkci vyuzivat? Spise prepinani vrstev nebo zapinani obrysu spoju atd.? Resp.co vas vedlo k uvaham o teto funkci?

5

Re: ukládání a obnova stavu grafiky

??asto chci vidět jen vodivý obrazec, případně jeho jedinou vrstvu (spousta podivností tak ihned padne do oka, zatímco při zobrazení dvou a více vrstev se na ně bez vynaložení pozornosti a trochy přemýšlení těžko přijde).  Jindy mě také zajímá, kde jsou součástky (takže chci vidět jejich vnější obrysy).  Nakonec potřebuji urovnat popisy součástek, a tak se starám už jen o vrstvu potisku a vrchní vodivou vrstvu.  U běžné dvouvrstvé desky s jednostrannou montáží to představuje asi pět různých kombinací vrstev.

Praktické zkušenosti mi přitom ukázaly, že spíše než individuální nastavování pohledu je pro mne daleko pohodlnější mít těch několik potřebných kombinací někde připravených a, kdykoliv jsem na pochybách, mezi nimi přepínat.  Současné řešení v testovací verzi dovoluje přepnout na další kombinaci jedinou klávesou, aniž bych opustil menu Graphics.  Vůbec si nepotřebuji pamatovat, v jakém pořadí je mám uložené; pokud neuvidím to, co chci, prostě přepnu na další.

Podívám-li se zpět, mohu říci, že to, jak bylo pracné si zobrazování přestavit na jiný pohled (a pak zase vracet zpět) občas ovlivňovalo samotný styl práce.  Teď není přepínání (mezi předem připravenými kombinacemi) o moc složitější než třeba změna měřítka kolečkem myši.  Ostatně pokud se nové příkazy Graphics | Roll Down a Graphics | Roll Up osvědčí, mohu je docela dobře na kolečko přidat (podmíněné Alt nebo jiným přesmykačem).

kolin napsal:

... co vas vedlo k uvaham o teto funkci?

Před časem jsem dostával také náměty, jak ukládat nastavení pod nějakým jménem (podobně jako to navrhujete Vy ve svém prvním příspěvku).  To mi však stále připadalo zbytečně složité pro uživatele i pro programátora.  Teprve při práci na řadě technologicky stejných desek jsem si ujasnil, že to asi vyžaduje spíše tohle.  (Velmi volnou analogii můžete vidět i u zoomu -- tam také dle potřeby zvětšujete a zmenšujete, aniž byste se staral, jaké konkrétní procento zvětšení tím nastavíte.)

6

Re: ukládání a obnova stavu grafiky

Takze pouziti funkce mame shodne.

Rekl bych ze u zoomu je to trochu neco jineho. Zoomujete dokud nejste spokojen s priblizenim, zato tady vite predem co budete delat a ktere vrstvy potrebujete, tedy vejdete do menu a rovnou kliknete na prislusny text, namisto toho, abyste zdlouhave preklikaval.
Vlastne to mate to same jako s nastavovanim rastru, taky predem vite jaky chcete.
Je pravda, ze zas tak male odlisnosti v zobrazenych vrstvach asi nebudou, a ulozenych nastaveni take nebude tolik.
Jen mam pocit ze to neusetri tolik casu, protoze se musim koukat jestli to uz je to co chci.
Mozna nejidelanejsi by bylo zachovat moznost prepinani mezi polozkami funkcemi UP/DOWN, a zaroven mit moznost dojit k polozkam G(raphics), Pr(e)sets (nebo jiny nazev to uz je vedlejsi) a pak cislem 1 az 8 presne vybrat co potrebuji, myslim ze tyto dva zpusoby si nijak neodporuji...

Pro uzivatele by to nejspis zas tak slozite snad nebylo, zvlast kdyz na to budou chtit vytvorit makro..
Rad bych znal nazor i ostatnich uzivatelu jak to cele vidi oni.

Jeste jsem to ted zkousel obejit makrem, ale bohuzel jsem zjistil, ze makrem nelze zapinat a vypinat vrstvy tak, abych mohl konkretne definovat viditelnost prislusne vrstvy i za cenu dlouheho makra (musel bych obslouzit pokazde vsechny vrstvy). Lze jen enterem negovat stav viditelnosti, tedy ani tudy by pro me cesta nevedla.

Zatim to tedy zkusim takto par dni pouzivat, uvidime jak to pujde v praxi a dam vedet.

7

Re: ukládání a obnova stavu grafiky

kolin napsal:

Jeste jsem to ted zkousel obejit makrem, ale bohuzel jsem zjistil, ze makrem nelze zapinat a vypinat vrstvy tak, abych mohl konkretne definovat viditelnost prislusne vrstvy i za cenu dlouheho makra (musel bych obslouzit pokazde vsechny vrstvy). Lze jen enterem negovat stav viditelnosti, tedy ani tudy by pro me cesta nevedla.

Ve skutečnosti mohou makra nastavovat i absolutně určené hodnoty přepínačů (tj. nejen relativně k aktuální hodnotě).  K tomu slouží klávesy Ctrl-PgDn, Ctrl-PgUp a další, popsané v helpu pro menu.

Horší by to bylo s nastavováním odstínů barev v tom dialogovém okně, převzatém z Windows; to by makra nedokázala.  Možná by se občas hodilo vrstvy nikoliv zcela vypnout, nýbrž jen ztlumit (jeden návrhový systém -- teď si nevzpomínám, který -- např. uměl nastavit všem nepodstatným vrstvám společnou šedou barvu), ale dosud to je neekonomické: příliš pracné, mají-li se barvy za chvilku stejným postupem vracet zpátky.  Jakmile bych ten nový zásobník uchovávající barevná nastavení přidal do konfiguračního souboru, už by se to asi vyplatilo.

8

Re: ukládání a obnova stavu grafiky

Nebylo by to spatne, uz nekolikrat sem tohle zkousel udelat rucne, hral sem si s barvami a odstiny, ale zjistil jsem, ze to nejspise znamena nastavit jinak logiku prolinani barev. Kdyz si nastavite napriklad popisky na opravdu tmavou sedou, tak tam kde se to prolina s tyrkysovou, vznikaji rusiva svetla mista..
Nicmene je to take dobra funkce (z tech mene dulezitych).

9

Re: ukládání a obnova stavu grafiky

Kombinování barev by vydalo na další samostatné téma.  Něco však o něm napíšu zde, v naději, že případní zájemci se sem dostanou přes hledací nástroje.

Jak víte, barvy se na obrazovce OR-ují.  Protože dnes padají v úvahu asi jen 24-bitové barevné režimy, znamená to, že se OR-ují byty jednotlivých barevných složek.  Z toho důvodu je třeba se vždy zamyslet nad přesným kódem barvy, nestačí se jen podívat na odstín.

Jestliže máte na nějaké vrstvě např. barvu (v příslušných složkách) 63, stane se při kombinování něco dost jiného než s barvou 64.  Příklad (v odstínech kyanové) vidíte zde:

BARVA 63 + BARVA 127 = BARVA 127
BARVA 64 + BARVA 127 = BARVA 191

BARVA 63 + BARVA 160 = BARVA 191
BARVA 64 + BARVA 160 = BARVA 224

Ještě zajímavější bude kombinování v případě, kdy se složky trochu navzájem liší:

BARVA 63, 63 + BARVA 127, 128 = BARVA 127, 191
BARVA 63, 63 + BARVA 128, 127 = BARVA 191, 127

10

Re: ukládání a obnova stavu grafiky

Petr Horský napsal:

Celý zásobník by přirozeně bylo možno ukládat do konfiguračního souboru (za cenu opětné změny jeho formátu).  Přidám jej tam, pokud se funkce osvědčí (a jakmile se délka zásobníku ustálí).  Na druhé straně současný stav automaticky řeší mazání zásobníku, což se může také někdy hodit.

Tak sem se chvili snazil pouzivat funkci pro ukladani grafiky, ale protoze pokazde kdyz tu funkci potrebuju tak grafiku akorat tak ulozim a max.jednou pouziju a jdu na dalsi desku (coz znamena ze zaviram program, protoze si honem neuvedomim ze aby se mi nast.grafiky neztratilo tak musim otevirat pres files/open a proklikat se k dalsi desce), tak nemam vicemene pouzitelne vysledky.....

Neslo by to ukladani alespon provizorne, aby se nemenil format jak pisete, do samostatneho pomocneho souboru?

11

Re: ukládání a obnova stavu grafiky

kolin napsal:

Neslo by to ukladani alespon provizorne, aby se nemenil format jak pisete, do samostatneho pomocneho souboru?

Změnit formát konfiguračního souboru mě nestojí téměř žádnou práci, jenže každá změna obtěžuje všechny uživatele pokusné verze -- proto se je snažím co možná kumulovat.  Také není dost dobře myslitelné, aby verze překládané s a bez menu Tools měly odlišné konfigurační soubory.

Na druhé straně bych tam asi nerad zaváděl další pomocný soubor.  Spíše udělám to, že formát Layout.cfg změním jednorázově tak, že bude obsahovat další řekněme 1 KB pole, do něhož bude zasahovat jen menu Tools a Graphics.  Parametrů, které by se mohly ukádat, se mezitím nashromáždilo už dost -- např. ty obecné úhly.  Asi by se to mohlo takhle objevit již v příští vystavené pokusné verzi.

12

Re: ukládání a obnova stavu grafiky

Nevim presne jak mate delanou strukturu v .cfg, ale vzdy na konec souboru by mohly pribyvat dalsi parametry, ktere budto: program nacte ale protoze je nezna tak je ignoruje, anebo vi, ze uz nacetl vsechny jemu zname polozky, tak dal necte. Ja ve svych programech pouzivam prvni moznost (polozky co nactu a neznam, tak ignoruju, takze mohu kamkoliv do cfg pridat polozku a nic se nedeje)

13 Naposledy upravil: Krecmer (2007-09-10 14:52:09)

Re: ukládání a obnova stavu grafiky

Rychlé přepínání pohledů na desku jsem řešil makry, viz. níže.
CTRL 0 - vypne všechny vrstvy,
CRTL 1,3,5,7 - postupně strana spojů, spoje, součástky, popisy,maska;
CTRL 2,4,6,8 - totéž na straně součástek.
Zkusím používat novou metodu přepínání pohledů a uvidím.

  <Ctrl-0>    "disable all"     (<Alt-O> <Home> <m> <c> <2> <Enter> <Alt-G> <l> <End>
                                 <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr>
                                 <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr>
                                 <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr>
                                 <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr>
                                 <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f> <UArr> <Enter> <f>
                                 <Alt-O> <Home> <m> <c> <3> <Enter> <Alt-G> <l>)
  <Ctrl-1>    "view side A"     (<Alt-G> <l> <Home> <RArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <Enter> <Ctrl-Home>)
  <Ctrl-2>    "view side B"     (<Alt-G> <l> <End> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <Enter> <Ctrl-Home>)
  <Ctrl-3>    "view comp. A"    (<Alt-G> <l> <Home> <RArr> <Enter> <Ctrl-Home>)
  <Ctrl-4>    "view comp. B"    (<Alt-G> <l> <End> <Enter> <Ctrl-Home>)
  <Ctrl-5>    "view ref. A"     (<Alt-G> <l> <Home> <RArr> <DArr> <DArr> <Enter> <Ctrl-Home>)
  <Ctrl-6>    "view ref. B"     (<Alt-G> <l> <End> <UArr> <UArr> <Enter> <Ctrl-Home>)
  <Ctrl-7>    "view mask A"     (<Alt-G> <l> <Home> <RArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <DArr> <Enter> <Ctrl-Home>)
  <Ctrl-8>    "view mask B"     (<Alt-G> <l> <End> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <UArr> <Enter> <Ctrl-Home>)

14

Re: ukládání a obnova stavu grafiky

Dovolím si jen poznamenat dvě věci:

1) Zaslaná makra zároveň hezky ukazují, jak lze parametru Options | Menu System & Sound | Choice Threshold užít k nastavení konkrétních hodnot výčtových parametrů v menu.

2) Ve verzi 4.40 lze tyto hodnoty měnit i trochu jednodušeji, pomocí kláves <Ctrl-PgUp>, <Ctrl-PgDn> (začátek a konec rozsahu) a <Ctrl-UArr>, <Ctrl-DArr> (sousední nižší a vyšší hodnota).

15

Re: ukládání a obnova stavu grafiky

Petr Horský napsal:

2) Ve verzi 4.40 lze tyto hodnoty měnit i trochu jednodušeji, pomocí kláves <Ctrl-PgUp>, <Ctrl-PgDn> (začátek a konec rozsahu) a <Ctrl-UArr>, <Ctrl-DArr> (sousední nižší a vyšší hodnota).

Zkoušel jsem tento postup jen ručně (ne přes makro), ale tato kombinace nedovolí "inverzi", tj. když bylo zapnuto vypni a napoak, což klávesa Enter provede.

16

Re: ukládání a obnova stavu grafiky

Ano, klávesy <Ctrl-PgUp>, <Ctrl-PgDn> se k "překlopení" stavu přepínače nehodí -- byly přidány právě pro situace, kdy Vás jeho výchozí stav nezajímá.  (Mají však výhodu také v tom, že nejsou nijak závislé na parametru Choice Threshold.)

Měl jsem na mysli jejich užití ve Vašem makru <Ctrl-0> (které uvádí zobrazování do jistého definovaného stavu, zatímco ta další naopak mění aktuální stav).

17

Re: ukládání a obnova stavu grafiky

Teď zpátky k novým příkazům v menu Graphics. 

V testovacím programu v archivu www.formica.cz/files/Layout-p98-test.zip jsem teď přidal uložené stavy grafiky (plus několik dalších parametrů) do konfiguračního souboru.  Jejich uchování do dalšího spuštění programu by snad už mohlo odůvodnit práci, kterou si uživatel musí dát se seriózním nastavením a vyladěním několika pohledů na desku.  Celkem se jich tak ukládá až 10.

http://www.formica.cz/files/forum/grsave.png
Nedokázal jsem se ubránit tomu, abych pokusně doplněné příkazy popsal dvojím způsobem, jednak jako pracující se seznamem, jednak (podobně jako u mých oblíbených kalkulaček s RPN) se zásobníkem.  Prosím pamatujte, že příkaz Restore vždy zároveň zcela zapomene aktuální pohled.  Menu není dosud dokončené (aktualizace nepřístupných položek, Stack Pointer + 2), ale asi už funguje natolik, aby se na něm dalo zkoumat, zda je ukládání grafiky použitelné.

Zároveň jsem příkazy Roll Up / Down pokusně ztotožnil s klávesami <Ctrl-svislá šipka>  a <Ctrl-kolečko>.  Přepínat pohledy tedy nyní můžete právě tak rychle, jako zoomovat.

Ilustrační obrázek demonstruje, že může dávat dobrý smysl přepínat více než půl tuctu pohledů:
http://www.formica.cz/obr/s_layers.gif
(původní velikost zde)

Protože přepínání předem (pracně) připravených pohledů nebrání tomu, abyste si nastavení grafiky kdykoliv na chvilku měnili a pak se stejnou cestou vraceli zpět (jen mezitím nesmíte rolovat zásobník), hlodá ve mně trocha pochybností, zda 10 pohledů nakonec bude v praxi stačit.

18

Re: ukládání a obnova stavu grafiky

Tak jsem zacal naplno vyuzivat funkci ukladani stavu grafiky, ted kdyz se to uklada je to jednoznacne skvela funkce.
Nevim jestli to je jeden z vami registrovanych bugu nedokonceneho menu, ale deje se, ze kdyz ulozim profil, pak ulozim druhy (mam tedy dva ulozene) a prepinam mezi nimi, tak se prepinaji v poradi "1211211211...." Ruznymi kombinacemi dalsiho ukladani a ruseni dalsich profilu jsem dospel i k tomu ze se to prepinalo ve smyslu "1122334411223344..."

19

Re: ukládání a obnova stavu grafiky

Děkuji za upozornění, podívám se do zdrojového textu, co v něm vlastně je.  Samozřejmě pokud dojde k rozhodnutí tuhle funkci opravdu přidat, bude třeba ji do programu zaintegrovat pořádně.  Takhle zatím je aktuální pohled v datových strukturách odděleně od těch (až) 9 uložených, což samozřejmě zdrojový text jen komplikuje.

Je to myšlené tak, že aktuální nastavení vždy zůstává jedním z možných pohledů, a program Vám nedovolí, abyste si [týž] pohled uložil znovu, pokud jste nastavení nezměnil.  Nic tam ale nezabrání tomu, abyste si stejný pohled postupně uložil víckrát (to dokonce ani nemusí být zcela nežádoucí, můžete pracovat s nějakou dlouhou sekvencí, v níž se stejný pohled má opakovat -- třeba proto, že se budete chtít v různých stádiích práce pohybovat v jejích dvou různých částech).  Jestliže tak máte uloženo třeba A - B - C - B - D, můžete ale C zahodit a výsledkem je sekvence, v níž dvě B následují hned za sebou.  ??ešením by mohlo být zásobník po každé operaci čistit tak dlouho, až v něm žádná dvojice stejných pohledů nebude.

Protože se již vyskytly náznaky požadavků na prodloužení zásobníku, asi bude třeba, aby program také indikoval počet uložených pohledů (to teď vyplývá z té modré řádky) a číslo aktuálního, aby se uživatel dokázal alespoň nějak orientovat.  Nicméně jsem počet prve omezil na 9 s tou myšlenkou v pozadí, že by si uživatel mohl třeba jednou vybírat pohled také numerickou klávesou z menu.

20

Re: ukládání a obnova stavu grafiky

Ano, to je dobra myslenka s temi stadii, kdy muzu mit ulozeno vice stejnych pohledu. S tim by nebylo spatne mit moznost alespon prohodit mezi sebou vzdy dva profily, abych si je mohl v pripade nutnosti pohodlneji seradit podle postupujici prace.

K vybirani profilu pomoci numericke klavesy:
neni to spatny napad, a stalo by za uvahu obecne toto vybirani v jakemkoliv menu umoznit napr.zadanim az 3 cislic za sebou, cimz by se dala vybrat polozka i pod indexem 123. Nutnosti je to zejmena pri vyberu padu, kdy znam cislo padu ale je mi nanic, pokud si nezapamatuju i jednotlive rozmery padu, nebo si je nekam nenapisu.
Technicky to v podstate snad proveditelne je, nenapada me pripad, kdy bych prochazenim v menu mel moznost pouzit cislici dvakrat za sebou v ruznych urovnich menu. Ma to ovsem maly hacek - jak poznat, ze uzivatel uz dokoncil volbu: 1)stisk neciselne klavesy, 2) pohyb mysi, 3) timeout, 4) konec sekvence makra.

21 Naposledy upravil: kolin (2007-09-25 16:04:22)

Re: ukládání a obnova stavu grafiky

Petr Horský napsal:

Graphics | Save ukládá aktuální nastavení grafiky na vrchol zásobníku (nejstarší uložené je ztraceno, je-li zásobník zaplněn).
Graphics | Restore obnovuje nastavení z vrcholu zásobníku (aktuální nastavení je ztraceno) a překreslí obrazovku.
Graphics | Exchange vymění nastavení grafiky na vrcholu zásobníku s aktuálním a překreslí obrazovku.

1) stale je ve funkci Save ztraceno nejstarsi nastaveni? Nebylo by dobre na to alespon upozornit, ze zasobnik je plny a ze se nejstarsi ulozeni ztrati?

2) Nevim, asi jsem neco nepochopil, ale nemelo by se Restore jmenovat spise Delete nebo Remove apod.?

2+3) co je mysleno vrcholem zasobniku? Zacatek, konec, aktualne zvoleny index nebo neco jineho?

3) Mam to chapat tak, ze dojde k presunuti aktualne zobrazeneho nastaveni v zasobniku na zacatek zasobniku a vsechny ostatni polozky se posunou o jednu pozici indexu vyse? (tak se to ted podle vseho i chova) Potom by se to melo jmenovat nejak vystizneji ne? "Set as First", "Move to Top" apod.

ad body 2 a 3: jde jen o to, ze jsem si s tim musel chvili hrat abych pochopil prave funkce...

4) kdyz si ulozim nekolik nastaveni a pak mezi nimi roluju, zobrazi se mi posledni ulozene dvakrat za sebou (i po znovuzpusteni programu) - evidentne jde o to, ze jedno je ulozene zobrazeni a druhe je neulozene.

5) kdyz si zobrazim nektere ulozene nastaveni a zapnu nejakou vrstvu, rovnou se to uklada do nastaveni v zasobniku. Toto bych uvital spise jako dalsi funkci "Update" apod., protoze si nastaveni muzu nechtene rozhazet (staci abych zapnul/vypnul nekolik vrstev a pak se rovnou prepnul na jine zobrazeni). pokud bude
ulozeni zmen na pozadani, neni pak potreba zobrazovat neulozene nastaveni (viz.bod 4).

7) zacinam postradat i indikaci indexu prave zobrazeneho nastaveni (mj.ted nejsem i schopen rozlisit, jestli to ci ono zobrazeni je ulozene v zasobniku nebo se jedna o to popisovane v bodu 4)

22

Re: ukládání a obnova stavu grafiky

kolin napsal:

1) stale je ve funkci Save ztraceno nejstarsi nastaveni? Nebylo by dobre na to alespon upozornit, ze zasobnik je plny a ze se nejstarsi ulozeni ztrati?

Ano, je to myšlené v zásadě tak, že co je na dně zásobníku, je tak staré, že už to není zajímavé, nebo si přinejmenším už dávno nepamatujete, co tam máte.  Takový předpoklad lze sám o sobě vždy snadno splnit prodloužením jeho délky.  Bohužel je však zcela v konfliktu s tím rotováním obsahu, kterým se tam může dostat i druhá nejnovější položka.

kolin napsal:

2) Nevim, asi jsem neco nepochopil, ale nemelo by se Restore jmenovat spise Delete nebo Remove apod.?

Odhlédneme-li od rotací, pak Restore / Pop skutečně obnoví posledně uložený stav, ovšem za tu cenu, že nenávratně zlikviduje současný.  Nenapadá mne slovo, které by vyjadřovalo obě funkce; snad Drop, které v zásobníkových výpočetních modelech dělá cosi relativně podobného.

kolin napsal:

2+3) co je mysleno vrcholem zasobniku? Zacatek, konec, aktualne zvoleny index nebo neco jineho?

Naposled uložená položka.

kolin napsal:

3) Mam to chapat tak, ze dojde k presunuti aktualne zobrazeneho nastaveni v zasobniku na zacatek zasobniku a vsechny ostatni polozky se posunou o jednu pozici indexu vyse? (tak se to ted podle vseho i chova) Potom by se to melo jmenovat nejak vystizneji ne? "Set as First", "Move to Top" apod.

Spíše je to tak, že zásobník je opravdu zásobník, dokud neuplatníte operace rotace (či swap).  Samozřejmě se zavedením ovládání skrz Ctrl-kolečko se chápání dat jako zásobníku dostává do pozadí, což je další problém.

kolin napsal:

4) kdyz si ulozim nekolik nastaveni a pak mezi nimi roluju, zobrazi se mi posledni ulozene dvakrat za sebou (i po znovuzpusteni programu) - evidentne jde o to, ze jedno je ulozene zobrazeni a druhe je neulozene.

Ano, tady je zjevná koncepční chyba současné pokusné verze.  Sice Vám nedovolí si uložit dvakrát to samé, ale když stav uložíte a nezměníte, stejně na zásobníku dva totožné stavy budou.  Možná by stačilo zásobník pročistit (viz výše ve vláknu) před každým zarotováním, možná to chce ještě promyslet.

kolin napsal:

5) kdyz si zobrazim nektere ulozene nastaveni a zapnu nejakou vrstvu, rovnou se to uklada do nastaveni v zasobniku. Toto bych uvital spise jako dalsi funkci "Update" apod., protoze si nastaveni muzu nechtene rozhazet (staci abych zapnul/vypnul nekolik vrstev a pak se rovnou prepnul na jine zobrazeni). pokud bude ulozeni zmen na pozadani, neni pak potreba zobrazovat neulozene nastaveni (viz.bod 4).

Proto jsem o odstavec výše napsal zásobník italikou.  Opět, koncepčně není dost jasné, kdy se aktuální nastavení považuje za vrchol zásobníku a kdy ne.  Technicky jím není; ale jakmile se začne zásobník rotovat, připadalo mi lepší jej tam přidat, abyste se po určitém počtu rotací znovu dostal do výchozího stavu.

kolin napsal:

7) zacinam postradat i indikaci indexu prave zobrazeneho nastaveni (mj.ted nejsem i schopen rozlisit, jestli to ci ono zobrazeni je ulozene v zasobniku nebo se jedna o to popisovane v bodu 4)

Něco tam připsat by asi nebyl takový problém (ačkoliv je otázka, zda by z toho čísla něco vyplývalo ještě poté, co by se zásobník automaticky pročistil).  Dosavadní řešení je v zásadě založeno na předpokladu, že nepotřebujete vědět, co máte v uloženo zásobníku, protože si jej kdykoliv můžete celý snadno prohlédnout.  Je otázka, zda by se po odstranění dosavadních nekonsistencí tento předpoklad potvrdil.

Uvítal bych názory také dalších uživatelů na současné pokusné řešení.

23 Naposledy upravil: kolin (2007-09-26 07:58:26)

Re: ukládání a obnova stavu grafiky

ad 5) slo mi spise o to nechtene automaticke ulozeni

Abyste mi rozumel, jak tyto fce chapu:
Pracuji s temito funkcemi tak, ze sem si ulozil pohledy ktere pouzivam (vesel jsem se do 6ti polozek) a uz jen rotuju mezi nimi, tedy casem se napr. naucim, ze to a to zobrazeni je pod tim a tim indexem a uz si jen odkrokuju o tolik, abych se dostal na pozadovany index v zasobniku. Nemusim se tedy divat, jestli uz vidim to, co potrebuju. A pokud se v tom budu nekdy vrtat, tak uz potrebuju jen tri veci: 1. odstranit polozku, 2. jinak setridit poradi jednotlivych nastaveni aby sly chronologicky za sebou, 3. ulozit drobne zmeny v konkretnim nastaveni.
Predpokladal jsem ze tak je i tato cela vec myslena, ze temer zcela odpadne rucni prenastavovani zobrazenych vrstev - uzivatel vetsinou pouzije jen nekolik malo sestav a pokud chce videt na chvili jeste dalsi vrstvu tak ji rucne zapne, ale bez toho, aby se to hed ulozilo do zasobniku.

cili osobne bych si predstavoval funkce:
Save (ulozi na prvni volne misto v zasobniku)
Update (ulozi aktualni zobrazeni grafiky do aktualniho indexu v zasobniku)
Delete (aktualni index odstrani a vsechny nasledujici nastaveni s vyssim indexem presune o pozici nize)
Move to First (obsah aktualniho indexu se presune na pozici 1 s tim, ze stavajici nastaveni na pozici 1 se presune na pozici 2, pozice 2 na pozici 3,
.... proste vse od jednicky do cisla prave presouvaneho obsahu indexu se o jednu pozici soupne nahoru)
     - Tato funkce je jednoducha a zaroven jednoduse umozni setrideni zasobniku
     - Neni potreba nic rotovat, zahazovat starsi polozky, nic swapovat
     - proste pro praci i pochopeni jsou to tri nejobycejnejsi a nejjednodussi funkce

Samozrejme me take zajima jak to chapou ostatni.
(na strankach jsem nenasel zadny odkaz pro vstup do tohoto fora, neplanujete odkaz pridat a mozna trochu zviditelnit? Rekl bych ze o tom moc lidi nevi..)

24 Naposledy upravil: kolin (2007-09-26 11:57:03)

Re: ukládání a obnova stavu grafiky

Pokud prihledneme k pouziti ulozenych nastaveni take jakozto sekundarnich zobrazeni (tedy ze mam neulozene zobrazeni a prepinam se do ulozenych pohledu jen pokud to potrebuji), tak k mnou popisovanym funkcim v predchozim prispevku by mohla pribyt tedy i fce Exchange. Ovsem popisujete ji: "vymění nastavení grafiky na vrcholu zásobníku s aktuálním a překreslí obrazovku", a to se vlastne chova dost nepochopitelne: sprehazi postupne poradi ulozenych nastaveni (napr.z poradi 1, 2, 3, 4, 5 se postupne stane dejme tomu 3, 1, 4, neulozene, 5, 2). Cekal bych tedy spise prepinani mezi naposled zobrazenym indexem zasobniku a tim neulozenym zobrazenim. Jinak receno bych mel jakesi dve skupiny: jedna tvorena celym zasobnikem a druha neulozenym zobrazenim. A mezi nimi bych se prepinal.

V obou zpusobech prace by dalsim prinosem byla i ona moznost vyvolat konkretni index zasobniku (viz.zminky nekde ve starsich prispevcich).

25

Re: ukládání a obnova stavu grafiky

Přepínání grafiky jsem pouze odzkoušel, ale popravdě nevím, co si s funkcí v této podobě počít. Možná by se hodilo mít určitá nastavení grafiky předpřipravena, ale to bych je musel umět pojmenovat, abych je posléze rychle rozpoznal. Zásobníková metoda je tak trochu typu pokus-omyl, takže mi to ve výsledku nepřijde rychlejší než ruční nastavení hladin. Makra mi připadají trošku lepší, ovšem celkový počet maker má zase omezení z hlediska mé paměti.