2004-10-22
- GAML - struktura, hlavicky
- xml/rpc, http binarni prenos spekter
- xpath
- zkusit prenos binarne/binhex - xml hlavicka
------------------------
modularity ideas:
[communication]
-[txt]-[xml]
-[bin]-[ps]-[ndds]
      -[com/corba]
      -[xml/rpc]

[data]
-[memory]-[bin]
-[files]-[db]
        -[txt]
        -[OR (ZODB)]
        -[bin]
------------------------
interface ideas:
FILE
-ULF-ULO-UL1 || -UUM (methods)
        -UL2 || -UU2
        -UL3 || -UU3

API:
Set(handle, ULObjTreePath, index_in_array, buf)
Get(handle, ULObjTreePath, index_in_array, buf)

Enumerate
Insert
Delete

---
  Callback/notificationi - event-connector
  Reference Counting - weak reference(can dissapear-notify)/strong reference
  type - property for which reference can not be obtained
---
h1 = FindRef(handle, ULObjTreePath) .. look for object, return it, inc.refcount -
     calls also IncRef (necessary for multithreading)
IncRef(h1) .. increase reference count
DecRef(h1) .. decrease reference count

AddWeakRef(Ph1)
DelWeakRef(Ph1)

14.6.2002
Subject: 
Date: Fri, 7 Jun 2002 06:52:26 +0100 (BST)
From: jana urbanova <jana_urbanova@yahoo.co.uk>
To: pisa@cmp.felk.cvut.cz

Dobry den,

jeste jsem si vzpomnela, ze mne Chromulan necha zapsat dva soubory pod
 stejnym jmenem a neupozorni mne. Mejte pochopeni pro nas sklerotiky.

                                 Mejte se hezky

                                               Jana Urbanova




2.4.2002
e-mail pavel:

Ted zpet k 0.61 a jejim potizim (0.60 bezi solidne)

- povolit nacitani *.ulc i *.ulf v sekvenci, v setupu ULF
  a na pravem tlacitku v ULF
  +5.5.2002

- vypis v seznamu souboru v dialogu pro prirazeni kalibrace
  zdvojuje nektere polozky
  -nedari se reprodukovat???

- dalsi nazory na kalibraci nize

- bezi-li sekvence, ignoruje nacitani na radce specifikovaneho templatu
  melo by to chodit tak, ze nejvyssi prioritu ma primo definovana
  metoda a program, nizsi definovany templat na radce a nejnizsi
  templat definovany pri zakladani analyzy

  +5.5.2002 bere se v uvahu template zadany u vzorku

- nacitani programu a metody podle zadani na radce sice chodi,
  ale hleda se ve spatnem adresari ( pri zadani se jmeno zkrati,
  ale pri behu se ignoruje  procesor nastaveni z konfigurace
  v Setup/Directories)

- neco se pokazilo ve hledani kanalu a spousteni programu (data jdou).
  Pri aktivate processing to hlasi Channel not found. Pri prepare to
  nedela nic. Nechodi spravne Wait for Mark. Mozna, ze je to nejak zavisle
  na verzi ChromuLanu, kterou bylo vytvoreno ULD.ULD nebo neco jineho.

- zda se, ze se Chromulan.exe po prejmenovani na jmeno obsahujici
  znak "-" nechova korektne.

- pri preruseni behu manualni analyzy a zavirani okna se vyhlasi chyba
  integer overflow. Mozna to ma neco spolecneho s automatickym
  nastavenim limitu okna.

Ted nekolik idei ke kalibracim.

- Bylo by vyhodnejsi, kdyby ULC soubor obsahoval pouze specielni
  datovou vetev s kalibraci (na urovni Method, Program, ...), nikoliv
  cely ULF strom, protoze prumerny cas peaku a dalsi podobne hodnoty
  nemaji smysl. 

- Novy radek pro ulozeni peaku v kalibraci by mel zatim nest pouze jmeno
  a prumerny response (v budoucnosti i vicebodove kalibrace atd,
  nebo se pro jine druhy kalibraci definuji nove radky)

- dale by mel soubor obsahovat seznam souboru a zpusob jakym byl vytvoren

- protoze by nezacinal soubor ULF korenem, mel by se po otevreni zobrazit
  jednoduseji, asi podobne jako Setup vzorku, s moznosti prochazet seznam
  pouzitych souboru, kalibracnich radek pro peaky a vyvolanim prepocitani.
  (tento nazor se Ti urcite moc nelibi, ale soucasne reseni je prilis
  neprehledne a zaroven uklada do souboru prilis mnoho neuzitecnych
  i matoucich dat)

- problem s vyhodnocenim proti kalibracnimu souboru je ten, ze ve vypoctu
  dane analyzy se nacte prirazena kalibrace, ale z kalibrace se nevezmou 
  responses - misto toho se znovu napocitaji z plochy a deklarovane hodnoty
  u peaku standardu. To je vyhodne pro klasicke zaznamy. Pri pouziti
  ULC by se ovsem by se mely prave vzit ty prumerne responses a nenahrazovat
  je hodnotami z jednoho z vlozenych vzorku.

Prosim zamysli se nad pripominkami a informuj nas o svych nazorech
na reseni kalibrace. 



14.3.2002

e-mail pavel:


Bylo by dobre udelat na ChromuLan.org alespon
pocatecni stranku s nejakym malym screenshotem
a odkazy na download zdrojaku, na tebe, PiKRON
i INGOS. Nic graficky velkeho. Pouze ciste funkcniho
z jednoducheho textu. Pozdeji se muze cast navody, novinky,
popisy rozsirovat, ale zaklad by mel byt co nejjednodussi.


***
10.3.2002

e-mail pavel:
Neprijemna drobnost je, ze kdyz se ciste nainstaluje
pro predvedeni na pocitac bez driveru a bez
naplneneho ULD.ULD, tak se dost bouri
ze nemuze najit uLanDefaultChannel.
Napriklad pri editaci programovych radek,
pri vstupu do okenka New ... .
Hodilo by se, kdyby se ChromuLan dokazal
bez kanalu obejit pro jiz namerena data.
Propojeni i pro nove otviranou analyzu by 
idealne melo byt provedeno az po nastaveni
kanalu a potvrzeni uvodniho dialogu.
Umoznilo by to napriklad bez potizi spoustet
shodny templat na prvnim volnem z nekolika kanalu.


***

15.2.2002

e-mail pavel:

U StringGridu jsme objevili pouze drobnou chybu,
ktera nastane je-li rozeditovana bunka
a zavre se okno na nejvyssi urovni a s nim i
ULF soubor. Za teto situace se rozeditovana
hodnota neulozi. Lze to ovsem prohlasit  
i za feature  [;-)] Zatim to neni treba menit.

Potesilo by me, kdyby bylo mozne
pridat na prave tlacitko v editoru properties
modulu (zarizeni) volbu refresh, ktera
by spustila znovunacteni vsech readable
hodnot. Hodi se to pro kontrolu a nastavovani
promennych, ktere jinak neni potreba trvale
refreshovat.

Dale mam nejaka prani do budoucnosti
k praci se sekvenci (zatim predevsim AAA).
Kdyz oznacim v sekvenci vzorky a chci priradit
kalibracni soubor, bylo by vhodne, kdyby se
nejdrive nabidl list vzorku z aktualni sekvence,
ktere maji nastaven kalibracni priznak.
Tlacitka dialogu OK, Cancel a Other File.
Zda se, ze pouze zdatnejsi uzivatele zvladnou
souborovy dialog ;-(. Zaroven to i zdatnejsim
muze urychlit vyber.

A nyni dlouho ocekavana slozitost.
Havlicek nam jiz prilis moc breci po prumerech
a vzhelem k tomu, ze se podarilo ChromuLan
celkem odvsivit od chyb, je cas nejake pridat.
Pro zacatek by stacilo, kdyby se  v sekvenci
oznacily nektere z Done kalibracnich vzorku
a pravym tlacitkem by se zavolala funkce Compose
Calibration. Objevil by se dialog pro volbu
typu vypoctu (zatim pouze prumer) a po
potvrzeni by se vytvoril v adresari sekvence
virtualni kalibracni soubor (ULF bez dat - napriklad ULC)
obsahujici pouze Peaks se zprumerovanymi hodnotami
Response.  Virtualni kalibracni soubor by se mel pridat
na zacatek nebo na konec seznamu sekvnence ULS
s nastavenym priznakem kalibrace a se stavem Evaluated 
Virtual (napr. modry).
Nova koncovka by mela byt zpristupnena
i z ostatnich vyberu kalibracniho souboru.

V budoucnu by to chtelo zeslozitit jeste vice.
Do ULC souboru by mela byt pridana kalibracni
vetev, ktera by obsahovala typ pozadovane kombinace
a seznam vstupnich souboru v childech. To by umoznovalo
i na vyzadani znovu prepocitat kalibraci po provedeni zmen
ve vstupnich souborech.

Krome prumeru by se v budoucnu mohly pridat
i viceurovnove kalibrace s lomenymi useky, prokladani
primky, parabol atd. Pro tyto slozitejsi funkce by asi bylo
nejjednodussi pridat kalibracni child ke kazdemu peaku,
ktery by obsahoval typ operace a v datech by nesl pole
floatu (parametru funkce).



***
1.2.2002

a kontextove menu obcas neobsahuje polozku k aktualnimu
typu radku. Myslim, ze i hlavicka tabulky neni nekdy v techto
pripadech vyplnena. Jedna se o stavy hned po otevreni
tabulky, dale pri oznaceni radky (zamodreni) a po prvnim
kliku do policka oznacene radky. Pri klicich do dalsich
policek se to srovna a menu potrebnou radku obsahuje.
Pokud je radka oznacena, bylo by lepsi, kdyby se menu mohlo
zobrazovat. Po prvnim kliku do bunky nezobrazeni kontextove
radky urcite za feature povazovat nelze, je to bug.

Na dalsi problem jsem narazil, kdyz jsme upgradovali
a spousteli ChromuLany na univerzite (Vesely a Vyskocil).
Pokud jsem otevrel property pristroje tak vse chodilo
spravne, dokud jsem nenastavil update. Po zadani
prvniho update se neco pokazilo, pri editaci i v jinych
radkach a sloupcich dochazelo k potizim (exception),
ale nebyl jsem v prostredi abych to poradne protrasoval.
V INGOSU jsem se stimto problemem nesetkal.
Mozna ze je to zavisle na verzi Windows, khihoven
Delf, atd ... Mozna ze to i souvisi s predchozim problemem
(treba se pri update tabulky daty z pristroje ztrati propojeni
editoru s daty bunky). Pokusim se zjistit vice.

Posledni prosba je, jestli by jsi se nemohl podivat
v sekvenci na pridavani vzorku mezi jiz zadane radky.
Funkce sice radek spravne prida a dovoli editovat,
ale kdyz na nej prijde rada, tak je preskocen.
Mam dojem, ze pote nepomuze ani zastaveni
a znovuspusteni sekvence. Pri znovuspusteni
sekvence by bylo nejlepe zacit na prvnim
zelenem radku.



---

volbe v New - z templatu Open From File
povolit krome typu ULF i ULT (preje si Rosemberg).
Dale by se hodilo pridat podporu podadresaru v Templates.

Dale je nejaka drobnost v sekvenci. Insert pred zadane
radky sice funguje, ale pridany radek neni zpracovan.
Rizeni sekvence ho preskoci.



***
4.1.2002
- datalines

- prumerovani standardu

- casovy program moznost spustit i pro samostatnou analyzu
  (neprovadet AcqStart, pri AcqStop ignorovat delku v instrumentu?)

- do specform pridat speedbuttons:
  - vyber metody (jmeno vedle tlacitka), v adresari metod (fileopen/picklist)
  - vyber cal.stand. (jmeno vedle tlacitka), adresar ve kterem je aktualni analyza
    Fileopen / Picklist0 - jen soubory oznacene jako kalibracni
  - autodetect

  - zrusit checkboxu View: Base,Axis,Peaks,Report

- centralni flags
  UserInterfaceLevel
   - advanced = 0 (all dialogs have maximum abilities)
   - easy = 100   (most simple dialogs, default folders, ...)

   - FileOpen dialog v defaultnim adresari/v poslednim otevrenem
   - use FileOpenDialog/FileList from default dir

- analyzator panel:
  - misto method button, archive button - seznam sekvenci v picklistform - open
    old sequences (nejnovejsi nahore)
  - sequence button - jen vytvareni/otevirani(pres list sekvenci) aktualni
    sekvence
  - sekvence picklistform - tlacitko update (nacteni informaci o sekvencich
    do listu)

- overlay
  - povolovat/zakazovat celou analyzu i s peaky, popisy
  - pouzivat dataview objekty pro zobrazovanou barvu, barvu
    z dataline nikdy nemenit z overlay okna
  - overman panel - znacka pro dragovani

***
3.11.2001 co delat:

+- priruni jmen piku pres list peaku v metode
  (nejlepe otevirany pres menu na pravem tlacitku na peaku v Spectru).
    Pro rychle prerovnani velkeho mnozstvi retencnich casu v metode by to
    chtelo nasledujici funkci:
    - provedu autodetekci s hledanim neznamych peaku
    - na peaku, ktery neni spravne pojmenovan stisknu prave tlacitko
    - v menu peaks by mela byt polozka "Match with method", objevi se
     okenko s listem jmen a retencnich casu peaku z metody. Devautni vyber sedi
     na peaku s nejblizsim retencnim casem k peaku, na kterem bylo zmacknuto
     tlacitko
    - vyberu spravne jmeno peaku posunem v listu
    - potvrdim vyber
    - dialog by mel mit check box "copy update to method". Pokud neni zaskrtnute
    pretahnou se pouze udaje o jmenu a koeficienty z metody do peaku,
    Je-li zaskrtnuto, prepise se tez retencni cas z neznameho peaku do peaku
    v metode.
    Pro analyzy s peti peaky se Ti to muze zdat zbytecne (peaky lze
    treba z metody do aktualnich zkopirovat, upravit a zkopirovat zpet).
    Pro analyzy s vice jak dvaceti peaky a retencnimi casy zavislymi na kyselosti
    vzorku se zda ze to je nutnost.


- doresit spousteni zaznamu a casoveho programu v chromatograficke
  sekvenci po prijeti marku.

[- pocitani prumeru z vice vzorku a pouziti virtualniho
   prumerovaneho vzorku jako standardu ]



***
13.10.2001 sebrane pozadavky z emailu:

(+13.10.2001)
+ kontrola, ze mark pochazi z nektereho z zarizeni kanalu.
  Asi by to melo prijit do "RcvGetPktInfo", ale muze se
  to udelat i zaregistrovanim filtru do driveru se vsemi

   Zvazit kam pridat kontrolu na shodu zdroje MARKu s kanalem jak jsem psal.
    Kdyz mi reknes kam to nejlepe patri, tak to dopisu.
    Paradoxne se nam na vystave velmi hodi, ze to ted chodi spatne.
    Otevreme totiz okno pro ULAD10 i pro LC5000 a po preparu
    LC5000 davkovacim ventilem spustime oboje. ULAD sbira data
    z DA vystupu LCD5000. Vysledky krasne sedi az na casovy posun
    0.03 az 0.06 minuty, zpusobeny prevody a filtracemi v ULAD10  [:-)] .


+ Pote by to chtelo nejak vycistit tu sekvenci.
  - prvnim behu vraci ActualSampleHead cestu,
    ktera konci Description=<???> nikoliv jmenem samplu.
    Po prvnim slepem behu vsech samplu a nastaveni Waiting
    se pri druhem behu cesta vraci spravne a lze zjistit
    cislo vzorku.

  - Co se tyce vztahu Sequence, Procesor, Sample:

    - v zacatku zpracovani Samplu program prekopiroval
      do Processoru a to nejlepe z Templete, ktery je prirazen jmenem
      souboru Sequenci nebo danemu Samplu.
        ( Toto reseni snizuje mnozstvi ukazatelu Procesor->Sequence->Program,
          ktere se muze vlivem uzivatele narusit a vyvolat krach. )

    - cas by po te mohl bezet v Processoru.

    - Sequence by byla jen mrtvym predpisem poradi vzorku a procesor by se
      na ni mohl treba odkazovat jen cestou - coz je zcela bezpecne -
      zmizeni sequence by se lehce poznalo. Zaroven casovaci procesor
      mimo sekvenci by se hodil i pro jine aplikace.


- k programu se nemodalne dostat i na prave tlacitko z grafu.

(+14.10.2001)
- Potiz: Jsem v Setupu, neco zmenim, vyvolam Program Lines,
    neco zmenim, zavru program a Setup znovu natahne predchozi
    hodnoty do policek. Predpokladam, ze je to dost problematicke to
    udelat dobre, ani nevim co je dobre. Asi nejjednodussi by bylo pridat
    tlacitko Apply. Pak lze vysvetlit ze se musi zmacknout pred otevrenim
    Program Lines. Druha moznost je locknout updates do modifikovanych
    poli dialogu dokud neni stisknuto OK nebo Cancel, pripadne Apply.
    Treti moznost je locknout updates, pokud je dialog otevren modalne.
    Zkus zvazit, co lze udelat, a dohodneme se co s tim.

- U sekvence by bylo dobre, kdyby pro Standalone defaultne nebyla
  metoda ani program v radkach vyplnena a sla v radkach vydeletovat.
  Pokud mozno zkryt nebo odsunout nekam na konec pole Program a Method,
  asi se bude pouzivat jen template.

- Pri nacitani metody (mozna v budoucnosti i templates) dochazi k problemu,
  ze pri editaci je spravne zkracena cesta pokud jsem v adresari Methods
  (Templates).  Bohuzel pri behu sekvence se vezme aktualni adresar
  posledniho oteviraneho souboru. V poradku to chodi pokud se metoda uvede
  s celou cestou po jejim prekopirovani do jakehokoliv adresare mimo Methods

- Vseobecny nazor. Template by se mel nacist podle jmena z radku, je-li
  definovano, jinak podle jmena z hlavicky sekvence.

- Okno procesoru: Show sequence pridat i tlacitko Open aktivni
  ve stavu ready.

- Sekvenci jsme nouzove rozbehli i s autosamplerem, ale opravdu chybi cekani
  na MARK. Co by se mozna hodilo, aby to slo provozovat i bez marku a
  v nekterych specielnich pripadech, by bylo pouziti zapornych casu u radek.
  Cas v procesoru by mel bezet od minima v radkach je-li zaporne, jinak od nuly.

(+13.10.2001)
- Vazne chybi ve skriptech funkce DevSetAsUserString nebo radeji
  jen DevSetU a DevGetU. Dale by se hodil prevod string na float,
  ktery tam standardne neni.

- Mam takovou zahadu, v oknu analyzatoru nejsou ramecky kolem pump prostorove
  a plochy pod ukazateli jsou az k okrajum bile. Totez pod stavem a jemnem vzorku.
  Kompiloval jsem to v rychlosti a vsiml si toho az na vystave. Cim to muze byt.
  Vim, ze jsem neprekompiloval knihovnu. Druha moznost by mohla byt prenosy mezi
  verzemi Delphi. Pouzivam verzi 5. Co pouzivas ted Ty (4,5,6)?

- Na nekterych pocitacich (pravidlo vyberu je nam zahadou)
  se pri preruseni sekvence, pri ukladani dat a pri ukonceni vzorku
  (u toho v nekonecne smycce) objevuje Chyba I/O 103 - Soubor neni otevren.
  Po podezreni na driver, prava k souborum, optimalizace, spatny build atd
  jsme nasli, kde se to deje, ale nenasli jsme primarini pricinu.
  Chyba pada z "lib\ExeLogu.pas:338", Writeln do FText.
        {v0.44}
        s := GetDateTimeSec + s;
  +      IoResult;
  ==> Writeln(FText, {v0.39}s {/v0.39 Msg});
        if {v0.26} (not FAssigningOnLog) and {v0.26} Assigned(FOnLog) then
        FOnLog({v0.39} s {/v0.39 Msg});
       {v0.39}

  Pomohlo pridani cteni a nulovani "IoResult", viz "+". Bohuzel mam obavu,
  ze je to pouze berlicka a muze se to sypat kdekoliv jinde. Duvod je
  ten, ze mas nekde sekci {$I-} .... {$I+}, za kterou nectes/nenulujes
  "IoResult" .  Tu se nam ovsem nepovedlo najit, a chyba muze zborit
  jakoukoli IO operaci jak v sekcich I- bez hlasky tak s hlaskou v sekcich I+
  ;-(((. Zlobilo to i pri simulovanem behu AAA a odinstalovanem driveru
  presne ve shodnem miste. Bohuzel jsou pocitace, na kterych to vubec nezlobi
  a jine, kde to zlobi strasne.

- Dalsi a tentokrat rozumny pozadavek je od pana Havlicka.
  Pro rychle prerovnani velkeho mnozstvi retencnich casu v metode by to
  chtelo nasledujici funkci:
   - provedu autodetekci s hledanim neznamych peaku
   - na peaku, ktery neni spravne pojmenovan stisknu prave tlacitko
   - v menu peaks by mela byt polozka "Match with method", objevi se
     okenko s listem jmen a retencnich casu peaku z metody. Devautni vyber sedi
     na peaku s nejblizsim retencnim casem k peaku, na kterem bylo zmacknuto
     tlacitko
  - vyberu spravne jmeno peaku posunem v listu
  - potvrdim vyber
  - dialog by mel mit check box "copy update to method". Pokud neni zaskrtnute
    pretahnou se pouze udaje o jmenu a koeficienty z metody do peaku,
    Je-li zaskrtnuto, prepise se tez retencni cas z neznameho peaku do peaku
    v metode.
  Pro analyzy s peti peaky se Ti to muze zdat zbytecne (peaky lze
  treba z metody do aktualnich zkopirovat, upravit a zkopirovat zpet).
  Pro analyzy s vice jak dvaceti peaky a retencnimi casy zavislymi na kyselosti
  vzorku se zda ze to je nutnost.





[DO BUDOUCNA]
- pojmenovane Integration Events (Method / User Fixes).
  Pridat moznost ukladat mezi useky baseline informaci
  o usecich nebo bodech pro prilepeni baseline, hledani peaku
  (valey, front tangent, ... ). Mozna ze i prejmenovani z "baseline"
  na "integration events" by se nekdy v budoucnu mohlo provest
  (zatim spis ne).
[/DO BUDOUCNA]

***
- sequence browse disable close if assigned to processor
- template otevirat jen pri tvorbe noveho vzorku (pak zas zavrit)
- tj. moznost editovat templat i za chodu

***
- aktualni vzorek-hlavicka
           vzorek-data
           sekvence
           kanal
- vracet ulobjpath (prazdny

- predchozi vzorek, nasledujici vzorek

-

*** 10.8.2001
- instalace driveru
  - v registry:
    pokud to tam jeste nic neni tak nastavit:
    - nastavit start=automatic
    - nastavit group=port

(rosenberg)
??- suspend - neexistovat nebo fungovat jen k otevrenemu oknu
??- po stop uvolnit kanal
+- neblokovat rozjeti dvou kanalu najednou v uLan modu, i kdyz jsou
  ze stejnych device (COMx) (blokovat jen pro neUlan)
+- kazdemu kanalu priradit barvu; channelsu
  - otevrene akvizicni okno - vpravo na pozadi grafu napsano jmeno kanalu
    (jeho barvou) font 16
- mark brat jen z device daneho kanalu
- pridat ikonu zoom fit (vsechno videt, jako pri otevreni),
  vymazat zoom history


*** 1.8.2001
- do about:
  - jini autori
  - reklama
+- html label? (click - open explorer)
- help psat v html - url viz .lng

- AAA
  - udelat mensi verzi okna
  - tlacitko metoda na hlavnim panelu - submenu:
    - edit
    - peaks
    - save(as)

- ulobj assign (od jinych typu jen povolene childy: ulsq := ula)
ulantype
ulanrecs.lst


***
WinNT env vars:
HOMEDRIVE=C:     (defaults to Win drive)
HOMEPATH=\       (defaults to Win drive root dir)
USERNAME=jj

getenv

%HOMEDIR%\Chromulan.ini

    HOMEDIR - ExeDir
            - UsrName
ulatype

    {v0.50 info for templates }
    {udirtype uladtype}
    ProjectDataDir: shortstring;
    ProjectMethodDir: shortstring;
    ProjectSequenceDir: shortstring;
    ProjectPrgDir: shortstring;
    ProjectScriptPath: shortstring;
    {/v0.50}

  - TemplateDir (= $(HOMEDIR)\Templates)

  - DataDir  (ini)
  - PrgDir   (= $(DataDir)\Programs)
  - ScriptPath (= $(DataDir)\Scripts;...)
  - MetodDir (= $(DataDir)\Methods)
  - SequenceDir   (= $(DataDir)\Sequences)

  ... can be defined using %xxx% (GetEnv)


- sekvence:

  - Template - initscript pro instrument (pouzit pri nastartovani kanalu)
             - kanal pro template (urcuje Processor for channel)
               - pro jeden Processor muze byt v danou chvili max. jedna
                 provadena sekvence
             - adresare - DataDir  (= ini.datadir if empty)
                          (usr can change - project)
                          PrgDir   (= ini.prgdir, ...)
                          MetodDir (= ini.metoddir, ...)
                          ScriptPath
               - pokud nezadany, do analyzy kopirovany defaultni hodn.

- V Template/Instrumentu/DataLines - definice:

  - name/color
  - jakym zpusobem - polling
                   - packet
  - property name, value
  - jak casto sbirat (ms)

  Do view pro kazdou DataLineView

  - nasobici Y koef., Y offset
  - cislo okna, v jakem zobrazovat
  - visible
  - default (pro vyhodnoceni)
  - active
{

- Stejny template pro Analyzu i Sequenci (jen vybrane v jinem podokenku) -
  po vybrani templatu zjistit jestli jeho kanal je pouzivan - ohlasit
  chybu, kdyz bezi jeden vzorek, jinak se zaradit na konec sekvence

- do konecnych souboru = analyza (prip sekv?) - zkopirovat prg, method,
  instrument (tj. mozno vytvorit template); kopirovat skripty? (checkbox)

- kanaly - na tlacitko na liste ukaz listview s kanaly, pro kazdy kanal
  stav - existuje processor ke kazdemu kanalu - spusti se kdyz chce s nim
  nekdo delat (stav, jmeno souboru=jmeno_kanalu.upo) - okynko pro processor -
  menu, stav-barva (TASK bar?, klik) - ukazat aktualni sekvenci nebo chromatogram
  (jeden vzorek - vsechna data v jednom chromat.)

ulstringgrid udlrtype ulrectyp

20.6.2001 (Porazil telefon)
- panel analyzatoru - policko vedle casu vlevo - kdyz se na nej
  klikne tak se to sesype
  {ulobju}
- skok v programu funkce do lokalniho menu (na aktualni radek)

***
30.5.2001
- program pro seqv (zatim sestavitelne prikazy)
  - Pumpa A,B,C
  - AS prep, inject


***     ulstringgrid
18.5.2001

[- aaa pri smazani/autodetect modules recreate props]
- sequence open - do dialogu post Ctrl+End

- znacky na baseline - odtud potud a jakym zpusobem (prilepit ke vzorku, neprilepit ke vzorku)
  - graf.znacky ulozene v baseline (lisi se pismenkem, parove i neparove - parove nemusi
    byt stejne)

- edit window for ULObj - create runtime to panel (can be entered to PageControl)

připomínky k Chromulanu (provoz z chromatografem)

- umoznit řízení přístrojů programem. Nejlepe moľnost nastavit pro kazdý
  sloupec programu s kterým parametrem je svázán a pro sloupec s příkazy
  vytvořit tabulku co který příkaz dělá.

- moľnost nastavit trvalé hlídaní některých parametrů

- moľnost vytvořit programy pro zapnutí, vypnutí a havarijní odstavení. Bylo
  by dobře, aby tento program mohl mít i podmínky, ale pro začátek by bohatě
  stačil standardní program.

- moľnost zobrazení vybraných paramerů ve zvláątním okně, nejlépe graficky.

- skenování, moľnost do programu vloľit příkaz, který zastaví průtok a
  proskenuje spektrum v zadaných mezích. Naskenované data je potřeba nějak
  zobrazit asi ve zvláątním okně.

***

- pumpa:
    PRGACTN = 1 (vyber programu)
    PRGRUN = cmd
    PRGEND cmd  (prerus program, nastavi pocatecni parametry}
    STATUS = 0 vypnuto, 1 cerpa, 2 purge, >=256 bezi program, < 0 chyba 

***
9.4.2001
1. - userpeakcoef pouzit pro vypocet procent/plocha
   - jen jeden peak se vyhodnocuje s pouzitim usrpeakcoef

2. - sekvence pro analyzy (bez autosampleru), ukazovat dialog
  okna kdy nastriknout (pri mark by odstartoval), 
  po odstartovani ukazat okno co pripravit,
  po ukonceni analyzy znovu okno - nastriknout

pozdeji
- tisk sekvence - tisk xstringgrid, 

Subject: 
        Analyzy
   Date: 
        Mon, 09 Apr 2001 14:33:48 +0000
   From: 
        Petr Porazil <porazil@mbox.vol.cz>
     To: 
        jindrich@natur.cuni.cz




Dobry den

posilam analyzy pro test prepoctu. 
Analyzy c108 a c57 jsou standardy 10.8%  5.7%. Ostatni jsou vzorky. Ve
jmenu maji uveden vysledek zmereny na jinem zarizeni.

Vyhodnocuje se pouze peak A1C. Vysledek je v procentech celkove plochy.
Pred pocitanim procent je 
potreba plochu peaku vynasobit kalibracni konstantou. Pro prilozene
analyzy je konstanta 1.15.


Dale by bylo vhodne pridat do chromulanu sekvenci pro rucni davkovani. 
Program by mel pracovat tak, ze obsluha vyplni tabulku sekvence a pak
podle pokynu na obrazovce (prip doplnenych zvukem) pouze nastrikuje
vzorky a otaci davkovaci ventil.


S pozdravem
Petr Porazil

Attachement: h.zip

***
7.3.2001
(telefon)
+- nova sekvence - spatne se vytvori adresar pri nove sekvence

+- save as, save noname: - doplnit priponu (automaticky)
  ( u metody funguje u programu ne )

+- tisk graf: u os jsou cisla podbarvena (nastavit text bg white)

***
5.3.2001

(u pikronu)

<havlicek>
- presouvat vzorky v sekvenci
+- autom.nazev vzorku pridat 00, napr. Sample001 (kvuli sortovani)
-? moznost vypnout prvni cerpadlo rucne? (zapina se ted vzdy znovu)
+- zobrazeni aktualne beziciho programu (jinou barvou aktualni radek)
+- (moznost skocit v case - enter na nasledujicim radku)
+- [Start] - kdyz nejsou zadne vzorky v sekvenci, oznamit obsluze
- mazani: sekvence - dotaz "Smazat i soubory?" sequenceu
          sekvence rec. - dotaz "Smazat i datovy soubor?"
- zmeny v ulsr prenaset do ULF (kdyz existuje)
- pri otevreni sekvence, projit hlavicky vsech odpovidajicich souboru,
  a prenest odlisne udaje (z ULF do ULSR)
+- do LOGu
  +- verze chromulanu
  +- jaky AAA program se startuje (nazev, jak dlouhy), nazev samplu

+- sekvence - local menu - otevrit v jednom okne vybrane (overlay)
- SpecForm - tlacitko (menu) - zobrazit cely chromatogram (nebo pri stisku [-])
- overlay
  +- nevykresluje pozadi (kdyz je aktivni druhy)
  - moznost prace s daty: toolbar - vybrat ktera ukazovat
    (v menu polozka Overlay porad, kdyz je checknuta, ukaz submenu a toolbar)]
- AAA[Method] submenu jako v SpecForm plus Select command
- AAA[Graph] - submenu - seqvence (poc.adr sequences), file (poc adr. aktualni seq)
+- sekvence - double click - otevrit chromatogram (if present)

-- ULStringGrid - Memo pole editbtn - otevrit v memo window
- devices autodetect - flag, ze se devices nezdetegovaly, priste detekovat
  znovu
- device - state autodetecting (aby bylo videt co se deje)

</havlicek>

-- v instrumentu soupis kanalu, ktere se maji sbirat
   (nejen detektor, jakakoli property)
   - rezimy POLL (any prop),
     PACKET (apex packets, detectors only)
   - option: zobraz/nezobraz v chrom okne (group index - same index - in the same
     window)
-- print - design improve (add/remove views/fields)
         - preview/print - height of text??? (to small)

***
4.3.2001

Dobry den

V priloze zasilam pripominky ktere jsem dostal o Havlicka.

+- Nejpodstatnejsi problem je asi v systemu chyb. Pokud dojde k havarii, a
  uzivatel rekne, ze se nema
  odstavit, pristroj se neodstavi okamzite, ale az po skonceni analyzy.
  Spravne by se chybovy stav mel zaznamenat, ale pristroj by se nemel
  odstavit vubec.

+ Dalsi problem je vypisovani celych cest do tabulky sekvence.
  Nejvhodnejsi by bylo potalcit
  cestu i priponu. Pri ukladani programu se automaticky nedoplnuje
  pripona.

+ U programu by bylo vhodne pridat funkci Save As.

Pri otevreni metody z panelu AAA by se melo otevrit rovnou okno piku, a
funkci Header by mel byt pristup k hlavicce metody. V okne piku metody
by mely byt k dispozici funkce Save a Save As.

S pozdravem

Petr Porazil

<havlicek> 4.3.2001
ing. Karel Kounovský
prosím urychlene predat.

Nedostatky ve Windows pro AAA 400

+ 1. pri výpadku proudu neudrží program zadaná data která  jsou nastavena.n pr.
     teplota reaktoru, nastavené mezní tlaky cerpadel.

+ 2. Po havarii a opetném zpuštení vypadne vetšina dat uvedených v bode 1.

+ 3. Neumím zadat nový program, vysvetlil mi to ing Porazil je to podstatne
     složitejší než u DOS. Proc musím dávat nejakou príponu k programu, která
     je pro me bezcenná, proc si ji program nevytvorí sám, když ho ukládám
     do adresáre program, to je bežné u normálních programu, že jim nemusím
     zadávat ve Windows žádné prípony, proc tedy tady.

??4. Je problém pri prepisování názvu starého programu na jiný název, toto
     je zrejme tentýž problém jako pod bodem 3.

+ 5. Proc je v sekvenci tolik textu, když me zajímá jedno maximálne tri písmena,
     které pri zadávání nevidím a pri prohlídce sekevnce je údaj duležitý pro
     obsluhu až vzadu a musí rozširovat pole, kdykoliv se na nej chce podívat.
     Me jako obsluhu ostatní údaje absolutne nezajímají a ty co me zajímají
     musím hledat.

  6. totéž co jsem napsal o sekvenci platí i o metode, zase je tam spousta
     údaju, které mne nezajímají a svuj údaj mezi nimi musím hledat.

  7. Totéž co jsem popsal v bodech 5 a 6 platí o funkci setings, zase se velice
      obtížne orientuji ve zneti dat, která jsou pro mne bezvýznamná

+ 8. Když je prístroj ready velice casto se stane, že se neprepíše polícko stop
      na start a já musím spouštet analyzátor povelem stop, což je zcela
      nelogické.

+ 9. V okne stavové informace pod programem opet jsou údaje které mne nezajímají
     a údaj o tom který program beží, nemá k dispozici, jen nápis /data/prog ,
     které mi nic neríkají.

+ 10. Pri prechodu z H programu na program S me došlo nekoliktá po sobe k odstavení
      prístroje, totéž se delo opacne. Také po zahrívacím kole me nekolikrát
      program skoncil a nevím proc, když zahrívací kolo probehlo normálne a
      pri nasazení analýzy šel program do proplachu

  11. Pri dobehu nefunguje odstavení prístroje do havárie.

  12. nelze presunut vzorky v sekvenci, jdou pouze preprat data a to je zdlouhavé
      a nepraktické.

</havlicek>


26.2.2001
- prirazeni kalibracniho standardu
  - v sekvenci -> v analyze
  (proste ze sekvence do zprac.vzorku)
- hromadne prepocitani kalib. ->
  - prepocitat kal.standard jako standard (ne jako vzorek)
  - neprirazovat kal.standardu sam sebe

27.3.2001
- zmenim ulsr u hotoveho vzorku:
  - metoda (zakazat menit program u hotoveho vzorku)
  - faktor
  - jmeno,...

- zmenim parametry v namerenych datech:
  - pri dalsim otevreni sekvence, ktera obsahuje tento soubor, zmenit prip.(nacist)
    parametry podle hotovych souboru


19.2.2001

v0.33:

Subject:
        Testovaci sekvence
   Date:
        Mon, 19 Feb 2001 14:35:37 +0000
   From:
        Petr Porazil <porazil@mbox.vol.cz>
     To:
        jindrich@natur.cuni.cz

Dobry den

posilam sekvenci pro test.
Sample5, Sample12 a Sample13 jsou standardy.

Dale mam nejake pripominky, nektere uz asi znate:

+ Pri zmeme kalibracniho souboru se neprepocita souhrny vysledek.

+ Nejde pohybovat poslednim bodem automaticky nalezene baseline.

+ Pri zmene metody nebo programu v sekvenci se zobrazi cela cesta.

Dale bych si pral, aby se zmena metody a faktoru v sekvenci promitla
 i do jiz zanalyzovanych souboru a naopak zmana v souboru se
 promitla do sekvence.


S pozdravem
Petr Porazil

+ fix scandata (finding extremes from all data)

5.2.2001

+- moznost otvirat jine sekvence ??? (pro hromadne zprac)
+- zmena kalibracnich souboru hromadne -> prepocitat !!!


1.2.2001
Subject:
        Tisk pro Madarsko
   Date:
        Thu, 1 Feb 2001 09:31:37 +0100 (CET)
   From:
        "Pavel Pisa;research student" <pisa@waltz.felk.cvut.cz>
     To:
        Jindrich Jindrich <jindrich@prfdec.natur.cuni.cz>

Ahoj,

testovali jsme 0.30 a zatim se to zda dobre.

Drobne pripominky:
  - tisk ze vsech browseru
  +- export pres normalni Copy a schranku do excelu
  +- totalni zamrznuti pri pozadavku na vyhodnoceni
    nebo zobrazeni vzorku ze sekvence, ktery jeste neni
    zanalyzovan
  +- zkontrolovat, jestli pri chybe a abortu je prave aktivni
    vzorek oznacen na Error. U 0.28 zustane v predchozim stavu.
    U 0.30 jsme jeste havarii nemeli, ale vyzkousime to.
  + pri nastavovani metody je vzdy jednou "h.ulm" a podruhe
    "e:\...\h.ulm". Metoda je vytvorena starsi verzi,
    nevim jestli to muze mit vliv.

Tisk protokolu, polozky navic jak pozaduji Madari,
+
  - Jmeno pracovnika
  - Datum analyzy a cas
  - Navazka a redeni
  - Metoda pripravy - staci poznamka
  - Nazev file - odpovida jmenu v adresari
  - Jmeno standardu
  - Amount [units]

ulsrtype ulatype
Asi by to chtelo nejakou moznost povolovani a zakazovani
polozek. Dotazy na tatinka, ja s temi Madary nemluvil.

Mam pripravenou pamet pro IR na 9600 adresu 8.
Nekdy odpoledne ne mohu stavit.
Nevim, jestli ve vasem kuse neni adresa 3 jiz
ulozena v EEPROM. Pak by bylo potreba magnet
a ulozit konfig z chromulanu.

Ahoj,
      Pavel Pisa



26.1.2001

+ vyhodnotit vic analyz sekvence naraz:

  + v sekvenci oznacit vzorky (analyzy), pak v menu - vyhodnotit:
    - udelat znovu autodetekci
    - tabulka (volba radky<->sloupce prohod) (xstringgrid)
      analyzaX  peak1(jmeno)           peak2(jmeno)       peak3 ...
      nazev     {amount|percent|..}

    - tisk/export excel

  + v sekvenci oznacit vzorky - pro vsechny vybrat standard (a priradit)

  + neni-li oznaceno nic, tak pro vsechny


25.1.2001
- dodelat teditbrn - afterfilenameselect event for ulobjfield - should be assigned
  to method, instrument (when selected load from template)
  (pak enablovat odpovidajici pole pro browse/edit editbtn)

22.1.2001
+- Faktor ??? delit s faktorem v ULA (ULSR), pripadne v metode
  nastavit funkci ULA faktoru: zadny, delit, nasobit



18.1.2001
+- pridat datum/cas ukonceni analyzy do ULA

- zamykani IK klavesnice


15.1.2001

- exe: Petr Porazil <porazil@mbox.vol.cz>
- src: pisa@waltz.felk.cvut.cz

- pocitat plochu podle G,B (peak hleda baseline stejneho jmena, je-li jich
  vic, pak tu co je nejbliz vrcholu)

+- zrusit obarveni dat pri autodetekci

[- do baseline pridat body:
   - ULBP - bod z metody (fialovy trojuhelnicek) - x,y(y se chytat linie baseline)
     - rikaji odkud kam hledat
       baseline
     - prop, ktera rika jakou ma funkci (doleva, doprava, ignore,..)
     - je to ulozeno v ULM_ULB ]


13.1.2001
- aaprg ... funkce zvetsit cas radku o x (min)

+- inplace editor pro cisla - nedovol jine znaky (mask)


+- jake parametry do def.methody?
+- vyzkouset analyzu s B peaky


+- method - flag NoUnknownPeaks ulmtype
  - pri autodetekci - neni-li nalezen v metode,
    vubec nezaradi, navic na linii, ktere odpovida
    - tj. najde-li se, zjisti zda je ze spravne linie
    (default G (nebo nic), kdyz B, porovnavat z jakych
    dat je
  - v B line nikdy nehledat nezname piky (tj. neignorovat
    jen ty, ktere jsou v metode a maji oznaceno B)
  - jinak kdyz se najde uz existujici tak
- flushovat obcas logy
- spravit lineconnector (narovnat)
+- status: jmeno programu / { ekvilibrace | jmeno vzorku } / stav vzorku
+- aafrm A,B - B,G
+- drift okno (zahrivaci okno = ekvilibracni analyza
+- opravit analsetupfrm

+- ze stopping/aborting moznost prejit na starting

+- sequence zrush AskForSave ulsrtype

+- kontrola MODIFIED (je true moc casto??)

+- kontrola sequence za chodu - mazani zakazat pro aktualni a loadnutou
  (predelat index na pointer)

+- equlibrace start/stop - save to file (one per Sequence,
  updated always on new equilibration) lineconnector

+- autosave all config after every finished sequence sample

- running - stop/abort (ask - if stop, wait for current sample
  to finish, abort - clean eventually loaded sample in AS

+- nefunguje reload????
+- kresli zubate krivky - tri body stejne, pak skoci, tj. schudky - carky
  ???

+- pozor !! prechod z jednoho programu na jiny -
  pri ekvilibrace nenatahovat do smycky,
  tj. driv nez se ma natahnout vzorek,
  podivat se jestli pristi vzorek neni jiny (bude ekvil), tj. nenatahovat
  vzorek

+- tlakove meze u pump vypsat to co zadal uzivatel, ne to co se posila
  do analyzatoru (fatal limits)

+- v browse pridat Save

2001/1/6
+- nedovol menit sequenci, kdyz bezi (Sequence..) (Sequence tlacitko udela Edit)
- nedovol editovat seq.radek kdyz loaded
+- opravit zastaveni running

2001/1/5
- cmULRecNewRecAdded
- DefDirRecID dodelat

- metoda - local menu pro childs (baseline/peaks/filter)
  - editmodal
- settings edit - update do AAA ihned (kdyz neni running)
  xstringgrid
- ValuePanel - Detekce stavu On/Off (pumpa, termostat)
- ulobj.browse - bringtofront
- aafrm kanal A/B oznacit  B G
- ulsr filename - bez adresare (natvrdo default dir), i bez pripony
       prgname, methodname .. -"-
- pri spatnem souboru - dotaz - delete, ignore (aby to vubec nabehlo)
  (taky u uld.uld)

2000/12/28
- priprava vzorku, mereni analyz - dva kanaly
+- info, ze byl zrusen alarm (vymaz, kdyz chybovy stav zmizel)
- global program (chromulan) time var (set program starttime)
+- zadavate ne TempMin/Max ale Min/Max/Dif
- zvukova znameni do Alarm,Fatal
- lineconnector fix
+- dalsi message cmULObjMainPropUpdated (sent if defined MainProp and the MainProp
  was changed)

+?- doladit - update valueinPC from usr:
  - flag needwrite (to device)
  - flag ignoreinput (from device), tj. neupdatuj z pristroje
   (smaz pri dalsim scanu, nebo lepe - pri prichodu potvrzeni zpravy)

- pri editaci values, ignore update from device (mezi DoEnter, DoExit, kdyz
  se stiskla klavesa (tj. keydown message cleared by TEdit)

- ValuePanel - Detekce stavu On/Off (pumpa, termostat)

2000/12/27
+- makecomp - DefVal attr.
+- v AAAu FindULDPs - nastav update time (pro read property)
+- connect TAAA min/max values to aafrm valuepanels
+- connect TAAA.FxxState na AAFrm status panel (misto version panel / switch)
  (update po vterine)
+- do frm ChannelA, ChannelB (update po vterine) foldrdlg
- program v timeru (dalsi polozka na stejne urovni jako Instrument, Metoda)
- sequence - templat pro dane vyhodnoceni na AAA:
  - metoda
  - program
  (-instrument automaticky)
  - pripadne se SeqSamples
  {ulanrecs.lst}
- fatalactivate - popup window (ignore following fatalactivate),
  wait 20 sec for user: Ignore? (if not ignore na 2 min vyblokovat fatal stav,
  jinak spustit aborting)
- ke vzorku logovat duvod chyby (kdyz nebyl korektne nameren, vyhodnocen)
  (textove pole)

2000/11/11
- rozprac ULNPType.. ulanrecs.lst

v instrumentu, pro kanal:

Program


  PrgTime: TPrgTime; { in seconds since start }

  TPrgActionsPool = record (storage of common subroutines)

    TPrgActions = record
      PrgActionsName: TPrgActionsName;{ can contain more PrgAction records or just one }

      PrgAction = rec
         { - set values of properties specified in child list in PrgSetAction child recs
           - run method specified in Method field
           - run dll command specified in Command = 'DLLName.ProcName'
           Does everything what is non empty in given order }
        PrgActionName: TPrgActionName;
        Command: String;
        Method: TNotifyEvent;

        {Childs:}
        TPrgSetAction = rec (set value to (device)property)
          DeviceName
          PropIDStr
          PropValue
        end
      end
    end;

  end;

  TPrgExpsPool = record { storage of common program expressions }

    TPrgExps = record  {combined expression that returns value }
      PrgExpsName: TPrgExpsName;
      PrgExpResType: (
        rtBool,
        rtInteger
        rtFloat,
        rtString
      );{ of what type is the result of this combined expression }

      TPrgExp = record
        CmpOper: (
          coNone,
          coLT,  { less then}
          coLET, { less or equal to }
          coET,  { equal to }
          coGET, { greater or equal to  }
          coGT,  { greater then }
          coNE   { not equal }
        ); { to be applied to this exp if some previous exp exists }

        MathOper: (
          moNone,
          moNOT,
          moAND,
          moOR,
          moMinus,
          moPlus,
          moMultiply,
          moDivide
        ); { to be applied to this exp
             (AND, OR, Plus, Multiply, Divide only if some previous exists
             and coNone cmp oper set) }

        LeftBracket:boolean; { set if before this exp should be left bracket }

        PrgExpSrcType: (
          stPrgExps
          stDevProp,
          stConst,
        );
        Value: string; { used for stConst }
        PrgExpsName: TPrgExpsName; { used for stPrgExps }

        DeviceName: TDeviceName; { used for stDevProp }
        PropIDStr: TPropIDStr;   { used for stDevProp }

        RightBracket: boolean; { set if after this cond should be right bracket }
      end;

    end;

  end;


  TPrgPerEvents = record { periodically triggered/scanned events }

    TPrgPerEvent = record
      Interval: TPrgTime;
        { how often to check for condition changed, if 0, then triggered
          upon every change of any property included in the condition expression }
      LastCheckTime: TPrgTime;
        { if interval <> 0, then time, when the event was last time checked }
      Exp: TPrgExpsName;
        { if empty, scans if has PrgExps child and evaluates it,
          otherwise finds the exp in the program PrgExpsPool and evaluates it;
          should expression of boolean type  } {proputl}
      CallType: (
        ctOnChange,
        ctAlways,
      ); { when the corresponding action should be called }
      LastExpValue: boolean;
      Action: TPrgActionName;
    end

  end;

  TPrgSeqSteps = record

    TPrgSeqStep = record
      PrgStepType: (

      )
      Time: TPrgTime;    { at what prgtime the step should take place,
                          if 0 (and not the first step), then as soon as the
                          previous step finished }
      Duration: TPrgTime;{ how long the step should be the active one (if  0
                           set, then until next step's time becomes <= channel time
      CondsName: TPrgExpsName;
        { under which conditions should the action be called, if none then
          checks if have some childs condition recs, if none then always  }
      ActionName: TPrgActionName;
        { if empty, check if has some child action recs, if none, does nothing,
          if non empty, scans the sholw Program for the action of this name and
          calls it }
    end;

  end;

2000/10/25
- read only disk -> open data "read only"
- INI, ULD, ULE zkopirovat ze syst. adresare do aktualniho
  adr.
- registrovat kazdy objekt u dat. objektu, reagovat
  na zpravy (can destroy, destroy)
- u pristroje - falg jsetli bezi
  - start programu - pristroj bezi/nebezi
- cfg ul_drv .. manual/auto start - do registry
- mark .. rozpoznat jestli z pristroje kanalu,
- zjistit pri startu, jestli ma uzivatel pravo
  zapisu do akt. dir, pokud ne - varovat, ukoncit
- pri smazani device pres select/cut
  - exception (draw - list out of bounds)
- zkusit autodetect po zmene Baud Rate, funguje UL_DRV?
  - close all handles to UL_DRV before closing
- multiselect grid - fix bugs
- new analysis - if starting from the already
  running template - exception (using the same
  name of the temp.data file)
- device .. DevicePortName, dosad defaultni
  jmeno ULAN:Addr
- Apex prejmenuj na OldUlan
- pridat plochu, sumu ploch do reportu
- see XML.TXT

2000/10/20
+- registry update only upon OK click or if AutoUpdate checked
- zavreni chrom.okna - zapisuje do souboru i kdyz se nezepta? (zkus
  readonly data)
+- nastaveni Baud Rate rucne
- zdrojaky TV Pavlovi
- ftp: ele-i-29 jindrich/Jindrich
- typ property - formaty: s,f, [/{.nn|.xnn|.nnxnn ]
  (typ, pocet des.mist, prip.kolika nasobit pro zobrazeni)
- protokol o analyze (metoda-digitalni podpis, smazat kdyz manualne
  zasazeno do dat)
  
2000/08/15
+- 1. ulozim soubor jako ult, zavru okno
  2. otevru puvodni soubor, zmenim neco
  3. save - ulozi se pod jmenem jak byl ulozen predtim (ult)

- casem generovani helpu pro ULx soubory (struktury) z makecomp

2000/08/14
+- otevreni template - incorrect parametr axis plotting
- po otevreni nove analyzy, nastavi se driver uspecified
  (i v templatu)
  acqinfou.129 - exception, dmUnspecified
- prekreslovani pri prepinani oken, a akvizici
+- povolit editaci retencniho casu v metode
+- max pocet otevrenych oken nastavit v setupu

2000/08/09
- v0.15

+- otevirani templatu - nejde z jineho nez hl. dir
+- load method - update in analsetup form
+- in analsetupdlg - filename edit (zkontrolovat jestli existuje pri OK,
  dotaz jestli prepsat)
+- otevrit templat soubor nejde (*.ULT), 1. float overflow, pak I/O error 103,
  zmizi soubor z disku
+- ulozit ULF do ULT, smazat dataove zaznamy, peaky, baseline, ...
- autodetekce kdyz to bezi - blbne? (piky se matlaj pre sebe, chvili
  jsou a chvili ne)
- pri kresleni drag boxu, spusti-li se Paint, schovat drag box,
  ukazat kdyz paint skonci, zase vykresli drag box
+- pri akvizici jen prikreslit nove body (neprekreslovat cely, kdyz to
  neni nutne)
+- File | New | ...
+- Load method from Data File, Method, Template
+- Instrument - acquisition stop time
- k analyze casem dalsi objekt pro GLP - zaznam jak to skutecne probehlo
- instrument vetev by se po akvizici nastavi readonly,
  uvolni se po savenuti do templatu
+- filenewdialog pridat ikony: Empty, NewFromFile (ne na disku)
- NONAMExxx Save or Not?

2000/08/08
+- zbavit se prebytecneho mnozstvi dat (prikaz smazat data od minuty)
- mark od vseho, pokud je z kanalu, spustit
+- doba trvani v metode

??
- mark from any instrument in channel? (which instruments?)
- where should be duration (instrument, analysis?)
??

- zjistit devicemode, portname pred tspecform create
  (anal setupform call before creating the form?)

2000/08/01

- Pri autodetektu Addr GPF 418533, snaha o cteni adresy 0000041h 0.13
  100a.ulf
+- pri editace pristroju, v parametrech, snaha editovat param
  EReadError property does not exist
  ULEDForm prirad current object, stack
  tULEDForm.Create, ULFOobj.EditObj na radce 64
/- udelat Edit okna modalni
+- v sysop rezimu moznost AnalSetupForm i ULAEditForm
+- newitems, ukazovat adresar odkud se berou templaty
- adresare - relativni cesty?,
?- pouzivat aktualni adresar ze startu programu (neprepinat do exe addr?)


!! V PRACI UPDATE FROM PISA\SPECTRUM.PAS !!

2000/07/25
+- strtofloat - nekonvertovat ,->., nastavit DecimalSep=. natvrdo
+- v sysop modu po smazani methody gpf - vyhodit varovani (kdyz cancreate)
+?- nacitani dat z ASC - chyba 103 - soubor se smazal
+? - pri chybe nacitani se smaze soubor
+  - savuje se nekdy i kdyz uzivatel nechce
+  - nevytvaret ULF kdyz se nechce

+- browse window - popis: jmeno souboru:Method/Peaks .. apod.
+- zobrazovani cest v oknech - pri schode s current dir, tak jen relativni
   cestu
+- pole jmeno metody ve window - enabled, readonly (neukazovat jmeno currentdir)
+- zrusit limit 2 AU
+- metoda autocompute - computeamount pro vzorky
   		     - pro kalibracni standard vypocet response
- lokalni menu i v browse (peaks - volat menu specform)

- File - New:
  - sample: dialog pro otevreni noveho vzorku
    - zadani polozek z header
    - kal.std?
    - soubor metoda
    - soubor kalibracni
    - ktery kanal
- v metode pozadovana delka zaznamu (v minutach -> autostop)
  po vybrani metody pro novy vzorek - zkopirovat, mozno zmenit
+- zobrazit pole "datum kalib.souboru" uzivatelsky
- zvazit zda jmena souboru uchovavat relativni (kdyz se zkopiruje cely adresar)
+- moznost nacist metodu z jineho vzorku (.ULF pridat do dialogu)
+- intervaly update hodnot z pristroje synchronizovat (casy modulo
   min interval)

2000/07/03

- kdyz se nespusti driver neprepinat na dmUlan

- cist z registru parametry ul_drv (jinak blbne)


2000/06/30
- do metody kalibracni standard (soubor)

- vnitrni standard
  (- prepocet vsech ostatnich podle usercoef (deli se jim plocha) )

  - plocha / usercoef = vysledek

  1. kalibracni soubor

  - kalibrace, namerim: znam plochu, vysledek -> usercoef

  - mereni: znam plochu, z kalibrace usercoef -> vysledek

  2. vnitrni standard

  - pro jeden peak znam plochu, usercoef (tj. i vysledek)

  - pro ostatni:

    - extinkcni koeficient
    - usercoef

  3. externi standard (korekce ext.koef pro pristroj)

  4. konstantni pridavek


2000/06/27 pisove
+- poklep na ULF otevre dve okna
+- dvakrat otevreni programu - exception (otevrit v bezicim programu)
+- peak copy to method - pokud uz je tam peak se stejnym
   casem prida se znovu
+- all details se nechova hezky kdyz se vraci znovu k browseru
+- v metode browse peaks show: ulprtype
   +- time, name, area, usercoef, amount, window
+- pridani bodu baseline blbne, pridani baseline blbne?

+- ukladat metodu do souboru, pouzivat opakovane
+- faktory(uziv.koef) v peakach metody, pocitat - nasobeni plochy koeficientem
  na mnozstvi latky

  plocha * uziv.koef = vysledek

2000/06/27
+- desetinne tecky (i carky) povazovat za korektni
+- File|Save pridat
+- TAcqData vytvorit z pameti (pole X,Y)

2000/06/26
+- konverze internal to user ze sec. do  minut
+- zobrazit vic dat do jednoho okna, smazat stary data, ruzny barvy
+- funkce .pas pridat fn do okna x
+- funkce .pas smazat data fn z okna x

2000/06/16

< Rosenberg

- UNDO obecne
-
+- ikona exit odstranit
+?- double click na zoomout blbne
+- posun chrom. vlevo,vpravo, nahoru, dolu mysi
+- dalsi rezim "show axis" - ukazovat kriz pres celou obr.+souradnice
   na spodni list (time/A)
+- prompt if overwrite in saveas
+- ask for save if modified upon closing chrom.window
+- vycentrovat popisy x osy
+- moznost otevrit readonly


2000/06/08
+- local menu baseline - funkce insert point
+- inverzni piky sipecky obratit

2000/06/06
+- plny detaily v browse - udrzi nastaveni i kdyz se zavre ale je
  spatne zaskrtnuti

- zoomovani pri behu dat - zkurvi data? (dej novy timer) -
+   25x za vterinu

- vybirani sipecky - spocitej vzdalenost, kdyz vice objektu sedi
  v oblast

+- split baseline/add baseline point
- local menu na dve casti:
  - nahore co odpovida pracovnimu rezimu
+  (napr. pri praci s baseline - add baseline point)
  - dole stabilni prikazy
+- v reportu je slovo "vzorek" dej "sample"
+- "M" tlacitko dej obrazek lupa
+- pri posunu okraje baseline/peak zobrazuj svislou caru tam kde pak
  bude okraje
- pri tazeni peak/base rovnou i vyber
- pri editaci v oknech - najeti do editline select all
??- OK tlacitka default, na enter zmizet ?? nejde?

2000/06/05
- fit to screen (zoomovani)
- zoomback - nastavit tak aby se to dostalo na celou obr.
+- dfm chybi u tisku
+- .ulf extenzi zaregistrovat
- sipecky peaku pri dragging zobrazovat?

2000/06/01
- pumpform updatuje flowedit z modulu???
- round uservalues (even if no other conversions) - absorbance
- info,verify.. msg anglicky
- uznavat desetinne tecky i carky
- zobrazovat zakazane useky baseline (graficky)
- volba jak casto flusovat na disk
- nedovolit posunout znacky piku za okraj baseline
- ratio v browse ukazovat v procentech
- v browserech ukazovat caption (ne name) of properties,
  captions changable (OnGetCaption) by instances
- do instalaku
  - utility
  - demodata
- defaultne vypnuty logy
- do instalaku/ po prvnim spusteni - editace konfigu
- import z apexu?
- prijem dat UDP?
- prijem dat z vic zarizeni (detektory)
  - seznam Channels
- new files do datadir (projekty...)
- vic chromatogramu v jednom okne - matematicke operace s nimi
  (posun (pricteni x i y), nasobeni faktorem (x i y), scitani, odcitani )


Priority:
  - tisky
  - konzistentni jedotky (minuty)
+- v browserech zadavat/zobrazovat uzivatelsky/interni
    format cisel


- smaz
  - units32\define.pas
  - repform

28.4.2000

+?- pri zoom, kdyz bezi analyza blbne (rusi se prislymi daty)
+- mazani peaku pouze z menu (ne pretazenim koncu  pres sebe)
+- tahani koncu baseline/peak na obe strany
+- je-li videt jen kus peaku/base nejde tahat s koncem?
- update spec/brow peaky
  - kdyz smazu peak v spec - nezmizi v browse,
    pri pokusu o jeho editaci v brow exception:
    - getbrowsefield - innaccessible value index 3
  - zmena hodnot v browse se neprekresli ve spect.
+?- v parametrech pristroju, pri editaci parametru nedovol
  udate bunky z pristroje
- pri zapsani do property pristroje poslat hodnotu vzdy
  (i kdyz je stejna jako posledne zadana)
?- do configu flag, jestli detegovat nepojmenovane promenne
  nebo je ignorovat

25.4.2000
- ulobj browse - moznost prepinani filtru (vse, neco min,
  neco malo, skoro nic)
+  - pro pole - more details, less details,...
   - pro radky

21.4.2000

+- scale
  - !!! u malych scale blbne (pri zoom) citlivost
  - dilky po 1, 10; 5 - 10 - 15 - 20,  10 - 20 - 30
    zredukovat na nasobky 2, 5

+- pri zmene konce baseline prepocitat vsechny peaky

18.4.2000

- global exception handler

- pri startu programu netvor modules (kdyz je blby .ULD
  nenaskoci program)

- kdyz nacte do spektra .ULD/.ASC - crash

- udelat ULD2ASC, ASC2ULD program

+- klik na popis peaku
  - prvni zcervena, druhy edituje (kdyz je vybrano)
    (prekreslit po vybrani)

+- tisk reportu (hlavicka, peak, ret.cas, plocha, procenta)

- pri startu jen zkontrolovat jestli moduly maji stejny IDDesc
  (tj. neskanovat properties if found, oznacit jako nepritomne,..)
- pri pokusu o spusteni ohlasit, kdyz se pristroj nenasel

7.3.2000
+- pred kreslenim kolecek u baseline zmenit pen na solid
  (je teckovane)
+- pri tisku rozmer kolecek baseline zrozumnit
+- u peaku vypisovat cas na pevno na dve desetinny mista
+- baseline editovany schovat do metody (select),
  pak pri autodetect nedelat baseline v tomhle miste

pridano:
  + select peak - will use pen.width = 2 on screen
  + select baseline - circle diameter = 4/3 of normal on screen

****
- z DSP stahnout:
  d1free:
    switch.zip electric switch like component

    toolbtns.zip (149,008 bytes) A collection of almost 500 Office 97 compatible
      toolbutton images, for use with TSpeedButton,
      TToolbar etc. Buttons have been given plain English names. ( ver. 1.00, added
      2-Aug-98, with src., Enjoy! )

    banner.zip scrollint text/image

  d20free:

    findfile.zip (6,855 bytes) A file search component. Search recursively thru
      directories, include directories. Returns a list of matching files. ( ver.
      1.01, added 3-Nov-97, with src., Everyone is free to use this code as they
      wish, but if you use it commercially then I wouldn't mind a little something.
      Please submit suggestions, bugs, or any improvements to walterd@gte.net)  

=   fileexpl.zip (597,782 bytes) LsFileExplorer26.pas (version 2.60) contains three
      components, namely.:
      TLsDirTree10 - is a descendant of TreeView, that displays the directory
        structure of the file system. It also supports
        creating, deleting and renaming operations on directories.
      TLsDirTreeCombo26 - is a combobox with a dropdown TreeView, that displays a
        hierarchical directory tree of the file system. 
      TLsFileListView26 - is a File ListView component with a popup context menu. In
        addition to its normal functions, it
        encapsulates various file management tasks, such as Copy, Cut, Paste, Delete,
        Rename, Open, View or SendTo operation on files. It also provides statistics 
        on disks, and directories as those in Window Explorer.
      Executable DEMOs are included. ( ver. 2.6, added 5-Dec-99, with src., See
      LsFileExplorer25.txt for detailed information. )  by Leo D. Shih 

    foldrdg6.zip (61,687 bytes) TFolderDialog wraps the common Win95/98/NT4.0/2000? 
      shell dialog 'Browse for Folder'. This release compiles up to and incl. 
      D4(UP2). Derived from TCommonDialog. Properties: Title, Text, Directory,
      CustomButton (IDE assignable), Options, RootFolder, etc. ( ver. 2 Apr 1999,
      added 6-Apr-99, with src., Free Software distributed under 'GNU Library General
      Public License'. 

    tempgen1.zip (6,244 bytes) TTempGenerator is a component should be used to
      cleanly create non-existing temporary file in the windows' temporary directory,
      and automatically remove them when the application has finished running ( ver.
      1.0, added -Apr-97, with src. )

=   alcars12.zip (361,178 bytes) Collection of 12 visible VCL-components (with
      source) for Delphi 2, (3), 4, (5) which look like the computer consoles in 
      StarTrek, an edge, a filled half circle, a panel, a button, a multiline button,
      a checkbox, a radiobutton, a gauge, two different trackbars, a radiogroup, an
      allocator, some StarTrek fonts and sounds, Freeware ( ver. 1.2, added 
      17-Oct-99, with src. )

    dcomm.zip (1,138,651 bytes) The D-Comm Component library includes several
      components, including a powerful Dial/Gauge (DCDial) with time-saving property
      and component editors, an animated odometer (DCWheel), a system tray icon
      component (DCSystemTray), a configurable trackbar component (DCTrackBar),
      and some other simple components. HTML Documentation is included for some
      components. ( ver. 2.0, added 24-Jul-99, with src. )

=   rack10.zip RackControls contains five components: TLEDButton: Beveled speedbutton 
      with a state-indicating LED. TButtonPanel: Panel with TLEDButton-design.
      TScrewPanel: Panel with screws in its edges. TLEDDisplay: Numeric
      7-segment-display. TLEDMeter: LED-Gauge ( ver. 1.0, added 15-Nov-98, with src.  

    asswitch.zip (7,395 bytes) The switch of a type TrackBar, but only round. Can
      show a scale and values ( ver. 1.3, added 7-Dec-97, with src.

14.2.2000

+- sipecky piku DOLE

- pri tisku na tiskarne: sipecky a znacky, tisk
  minimalne nejaky pocet bodu nebo minimalni rozmer v milimetrech
  na tiskarne - podle DPI (kdyz hodne tak rozmer)

+- levy tlacitko na jmenu piku:
  +- odoznacit vsechny ostatni
  +- oznacit ten prave editovany

+- pravy tlacitko vzdy local menu pro okno

- levy tlacitko double click - edit, jedno click select
  (do usr config)

+- uplne zrusit srafovani baseline, zrusit stare define mode,
  define mode jen po stisku tlacitka na toolbar do prvniho
  mysiho kliku, tahu

+- dokreslovat baseline pri zvetseni peaku ze jsou okraje
  mimo obrazovku

+- kresleni kolecek baseline

+- pripraveni brush, pen vsechno konkretne

- metoda - extrakce do templatu - baseline, peaks (cas, jmeno),
  sirka okna (pro autodetekci prirazeni piku) - pokud se prekryvaji,
  bere se to co je bliz.

- do ULObjDesc objektu pridat metody, ktere jsou volany pri kliku
  na visualni objektovou representaci

+- skupiny piku (casem):
  +- u peaku pole "jmeno skupiny"
  - premyslet jak delat skupiny peaku a pracovat s nima
  - objekt skupina piku - jen jmeno skupiny


1.2.2000

+- single zaokrouhlovat pri editovani (4 platne cislice)

+- select peak
  +- leve tlacitko: oznacit, ostatni odoznacit;
    s shiftem select od=do, s kontrolem vice ruznyc
  +- vybrane peaky cervene

+- nadpisy piku - vsechny stejne daleko od okraje,
   (uplne vpravo ret. cas, mezera, jmeno - zarovnat doprava),
   k vrcholu peaku nevyraznou carkovanou line

- nadpis analyzy pri tisku nalevo kolmo mimo spektrum

+- chromatogram modre

+- baseline carkovana, na konci kolecka, prumer 3 pixely
  cerne,
  pri vybrani zcervenat

+- koncove znacky peaku - carka mezi prubehem a baseline,
  presahovat nahoru a dolu pevny pocet bodu (asi 10),
  (obrazovkovejch) na konci carky sipecka ve smeru
  kam peak pokracuje. (chytat mysi sipecky )

+- editace parametru peaku pri kliku na popis retencniho
  casu (prip. nazev)

+- pridat do ULPRRec Y souradnici pruniku s baseline

- pro jeden ULA objekt umoznit vice ULAD objektu
  a vsechny zobrazovat

+- do main menu - pristroje

+- do metody: min peak width, peak reject height,
   consider negative peaks.


31.1.2000
+- edit metoda do local menu
+- baseline zobrazit i kdyz okraje nejsou na obrazovce
+- kliknutim levou vybrat peaky (kreslit jinak), pak z lokalni
  nabidky treba smazat vsechny

+- prekreslovat ne xor

+- pri SetData - nastavit margins pri otevreni okna (bud auto, nebo fix) - save
  ZAOKROUHLIT, nahore misto pro popisky

- baseline - editace bez shiftu - hrany, mohou se prekryvat (tj. rozpoznani
  ktery  baseline menit
- peaky - editace bez shiftu (se shiftem move)

+- peak zobrazit: retencni cas, jmeno (svisle, volitelne?)
- File | New | - adresa pristroje, cislo kanalu pristruje,
  sekvence/analyza/overlays
- moznost prijimat z vice detektoru na stejnem portu, ruzna cisla
  kanalu
+- tisky:
  hlavicka- jmeno, souboru, - hlavicka z ULA, datum cas

- metoda - typ zpusobu hledani baseline
         - negative peaks? (v metode)
- stringy dynamicky? v ULxRec objektech pri save/load

- flagy u hodnot - neni ready, je ready (i pocitane vystupy)

+- u peaku ukazat:
  - jmeno (usr edit) 12
  - ret.cas
  - (sirka okna)
  - plocha
  - uzivatelska konstanta (vynasobit peak) (usr edit)
  - prepoctova konstanta pro kalibraci (ze standardu)
  - kolik molu latky, procent z analyzy

+- draw peaks, baseline (records)

- pri crash vyexportuj CRASH data

ftp://jindrich@ele-I-05.felk.cvut.cz/
Jindrich

- ulxxu units with handlers, pnXXXX - jmena handleru,
  virtualni metody TULObj volane z TULxForm pres FObj

- pri nalezeni neznameho ULxID dotaz, zda pokracovat v nacitani
  (pri prechodu z noveho do stareho prog.)

