Newsgroup: it.comp.software.newsreader
Titolo: [Dialog] microscript: Segna come letto e passa al successivo

Program MarkReadAndSkipToNextUnreadMessage;
Begin 
 
 ADo('ExpandThread');
 ADo('MarkRead');
 ADo('SkipToNextUnreadMessage');
End.
Scopo del micro-script: voglio far segnare come letto un messaggio 
e passare al successivo *non ancora letto*.
L'istruzione    ADo('ExpandThread');   ha lo scopo di espandere, 
ossia aprire, il thread, se esso fosse "collapsed": in liguaggio OE, 
corrisponde a "Raggruppa messaggi per conversazione".
Questo perché, altrimenti, se io fossi posizionato su di un thread non
ancora espanso e applicassi il micro-script suddetto, invece di passare 
al primo messaggio non letto dello stesso thread, esso microscript 
mi farebbe "saltare" tutto il thread e si posizionerebbe sul primo 
thread non ancora letto tutto successivo.
Ovviamente una volta esauriti i messaggi "non letti", si passa 
al thread successivo in cui sia presente almeno un messaggio 
non ancora letto. Una volta esauriti tutti i messaggi letti di 
un newsgroup, si passa al primo post non ancora letto del newsgroup 
successivo.
Personalmente ho trovato comodo assegnare come tasti "hot-key" 
la combinazione Alt+X (visto che già "X" segna come letto il 
messaggio corrente, e il tasto "Alt" è proprio sotto alla "X" 
sulla tastiera).
E' uno script minimale, ma è il mio primo Script, quindi non 
spernacchiatemi...  ;-PPP
Chissà che un giorno mi riesca di realizzare un mega-Script che 
faccia quello che esegue il programma "AgtFind", comoda utility 
per Agent anche allo scopo di generare ad esempio le statistiche 
mensili di un newsgroup. Non mi risulta che esistano "al pubblico" 
Tools o Script per Dialog allo scopo di creare dette statistiche.
Ma se mi sbaglio, sarò ben lieto di apprendere dove reperire 
detto tool o script...  ;-)
Saluti
-- 
DIALOG newsreader (e mailreader secondariamente)
** L'ottimo TUTORIAL in ITALIANO di Maria Luisa C. su
http://fido.altervista.org/Dialog/dialog.php
;


http://fido.altervista.org/Dialog/dialog.php
;
Oh, non è che esageri un po'? ;-)
-- 
Maria Luisa C - 06/10/2004 13.14.25

 mensili di un newsgroup.
    Saresti il benvenuto.
-- 
Ryoma
ICQ#41121680

 mensili di un newsgroup.
Come abbiamo gia' parlato recentemente in questo NG, a Dialog manca uno
strato fondamentale tra l'applicativo ed il motore di scripting, quindi
tutte le manipolazioni dei messaggi "a posteriori" possono essere fatte
solo interagendo con l'interfaccia stessa.
Vedasi il link che ti ha suggerito MLC.
Ma questo approccio ha parecchie problematiche. La prima, che ci mette una
vita e mezzo a fare un analisi in quanto passa per l'appunto dalla GUI per
recuperare i dettagli dei messaggi; la seconda che NON funziona su tutte le
piattaforme in cui e' installato Dialog, dato che ho scoperto un bug non
sistematico (che purtroppo Marcus non e' riuscito a riprodurre e quindi a
correggere) che fa andare in ciampanella il meccanismo di "scorrimento" dei
messaggi quando si esegue lo script.
Per spiegarti meglio, non esiste un modo per capire quando hai raggiunto
l'ultimo item della lista; il workaround usato e' quello di copiare nella
clipboard il testo del messaggio attualmente selezionato e confrontarlo con
il precedente. Se e' uguale, significa che e' stato raggiunto l'ultimo,
perche' non ha avanzato.
Inoltre, tale approccio dipende strettamente da cosa viene visualizzato in
quel momento a schermo, quindi dalla larghezza delle colonne della lista,
dai campi visualizzati, etc.
Senza contare che se hai cancellato dei post o altro, le statistiche
risulteranno falsate.
Quindi, fintanto che Dialog non esporra' degli oggetti che permettano di
accedere alle caratteristiche effettive dell'applicativo, la veggo buia.
Non mi sono mai documentato sulla questione statistiche, ma l'unica cosa
che mi viene in mente e' basarle sull'evento OnXover. Va da se' che un
approccio del genere ti permette di avere delle statistiche a partire dal
momento in cui l'utente installa lo script su Dialog; e che ogni volta che
scarica un header lo script viene mandato in esecuzione per salvare
informazioni su disco, quindi non so quanto questo possa rallentare
Dialog.. senza considerare il notevole spazio su disco che si andrebbe a
consumare (sarebbe cmq possibile definire solo i newsgroup dei quali fare
statistiche, invece che tutti quelli sottoscritti).
Oppure, puoi fare le statistiche che si basano solo sui messaggi il cui
body e' stato scaricato (anche questo, per limitare le risorse usate),
utilizzando l'evento OnBeforeSavingMessage, ma in un'ottica generale
sarebbero statistiche falsate, servirebbero solo ad uso e consumo personale
e non, eventualmente, da pubblicare su un NG.
-- 
ZER0://coder.gfxer.web-designer/
~ I feel like I'm diagonally parked in a parallel universe.

 solo interagendo con l'interfaccia stessa.
Ok, questo credo di averlo capito. Però, tra i newsreader per Winzozz,
ce ne sono con un sistema di scripting migliore di quello di Dialog?

 ce ne sono con un sistema di scripting migliore di quello di Dialog?
Premesso che io sto parlando a livello di *applicativo*, e Dialog e' un
applicativo ancor prima di essere un newsreader; e di applicativi
*realmente* scriptabili per Winzoz ce ne sono a pacchi; vedro' ugualmente
di rispondere alla tua domanda, per quanto ne so' (e ribadisco che parlare
di scripting riferendosi a Dialog non e' del tutto esatto).
Probabilmente OE permette una gestione quantomeno in OLE Automation, e
quindi scriptabile tramite un qualsiasi linguaggio di scripting messo a
disposizione dal WSH (es. JScript, VBScript, ma non solo), ma non ne so
molto in quanto OE non l'ho mai usato abbastanza da averci speso del tempo
per queste cose.
Gravity e Agent all'epoca in cui li ho usati io (si parla di parecchi anni
fa) non avevano nulla del genere; ignoro le versioni attuali.
L'unico newsreader scriptabile che conosco e' Thunderbird, in quanto
l'applicativo stesso si basa sul gecko engine, il che vuol dire tra le
altre cose Spidermonkey (script engine di Javascript 1.5).
Con conoscenze di Javascript, XML/XUL, CSS e XPCOM te lo riscrivi.
Non mi pronuncio su altri newsreader in quanto non ne conosco le
peculiarita'.
So, per sentito parlare, che MesNews e' "estendibile" tramite DLL, ad
esempio, ma bisogna vedere come implementa il meccanismo.
In questo caso non si tratta di un linguaggio di scripting, ma di un
linguaggio di programmazione vero e proprio, che per molti versi e'
preferibile: La DLL puo' essere scritta con un qualsiasi linguaggio di
programmazione in grado di produrne una e quindi il sistema di estensione
non e' legato ad un particolare linguaggio, il che gia' di per se' e' un
vantaggio.
Una DLL ha indubbiamente dei vantaggi prestazionali rispetto ad un
linguaggio interpretato; e' uno dei motivi per cui all'epoca la ID software
passo' dal QuakeC al customizzare Quake direttamente in C tramite DLL.
Questo per sommi capi.. poi, per quanto ne so', MesNews potrebbe anche
implementare tale sistema in modo limitativo.
Fortunatamente, cmq, un applicativo/newsreader non e' fatto solo di
scripting.. altrimenti non userei Dialog. Tirando le somme, con Dialog mi
trovo bene.
Un buon applicativo potrebbe essere anche privo di motore di scripting. 
Cio' che a me personalmente infastidisce, infatti, sono le cose fatte "a
meta' ".. Caratterialmente sono uno che le cose o le fa bene, o evita di
farle. Trovarmi quindi un applicativo che "vanta" di essere scriptabile
quando in realta', se lo e', lo e' solo per meta'.. e' frustrante.
Soprattutto quando tento di metterci mano e mi scontro con le limitazioni
che un approccio del genere (di cui ancora devo capirne le motivazioni
tecniche) manifesta.
-- 
ZER0://coder.gfxer.web-designer/
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)

meta' "..
Sono d'acc...
-- 
Ciao, Massimo | e-mail: petrax*
vene.dave.it
ICQ# 57669970 | Jabber: 
pet...@jabber.linux.it
- La bellezza salverà il mondo. -