Il comando /window crea finestre di testo generiche - un'area con righe di testo colorabili una
per una, con in più una list box laterale opzionale e una casella di input opzionale in fondo. Utile per mostrare
output di script, log, elenchi, o piccole interfacce testuali. Sottoinsieme pratico della documentazione ufficiale
mIRC, con le omissioni dichiarate esplicitamente qui sotto.
@finestra non è una chat: i
comandi echo/say/ecc. lanciati da un suo editbox restano nel CONTESTO da cui il
/window è stato aperto, non scrivono dentro la @finestra stessa. Per scrivere lì dentro
usa esplicitamente /aline.on open/on close (vedi
Scripting) scattano anche per le @finestre, non solo per canali/gruppi/query/status:
$chan dentro quegli handler restituisce il nome della @finestra appena aperta/chiusa (es.
@log)./window [-switch] [-tN,..,N] [+aspetto] <@nome> [x y w h] [/comando | [popup.txt] [font [size]] [iconfile]]
@nome deve iniziare con @. x y w h sono opzionali (senza, la finestra
viene centrata con una dimensione di default). Dopo x y w h va O un /comando (eseguito
ogni volta che l'utente scrive testo nell'editbox e preme Invio - il testo digitato arriva come se fosse stato
scritto subito dopo il comando, quindi come $1- se è un alias), O in alternativa
popup.txt/font [size]/iconfile: qui sono a scelta esclusiva (non
combinabili nella stessa chiamata come nel vero mIRC) per poter distinguere in modo affidabile un nome di comando
da un nome di file, senza ambiguità.
window -e1l15 @log 50 50 400 300 aline @log Finestra pronta.
| Switch | Cosa fa |
|---|---|
-a / -v | Porta la finestra in primo piano. |
-c | Chiude la finestra. |
-e[N] | Aggiunge una casella di input in fondo. N=1 multi-riga, altrimenti riga singola. |
-h / -r | Nasconde / mostra la finestra. |
-l[N] | Aggiunge una list box laterale, larga circa N caratteri (default ~100px). |
-n | Minimizza (nasconde) - se combinato con -e viene ignorato per non nascondere una finestra appena creata con un editbox. |
-x | Massimizza/ripristina. |
-o / -u | Imposta/rimuove "sempre in primo piano". |
-p | Crea una picture window (superficie di disegno) al posto dell'area di testo. |
-q<S>:<P> | Imposta la barra di avanzamento: S = 0 disabilitata, 1 in corso, 2 successo, 3 errore; P = percentuale 0-100. |
-j<N> | Limita il buffer a N righe (le più vecchie vengono scartate). |
-s | Ordina alfabeticamente il testo principale (e la list box, se presente). |
-S | Ordina solo la list box laterale. |
-w<N> | Mostra/nasconde il bottone in taskbar: N=0 nascosto, altrimenti visibile (qui una sola taskbar fa da switchbar e treebar insieme, nessuna distinzione reale tra le due). |
-k<N> | N=0 nasconde il prefisso @ nel testo del bottone in taskbar. |
Switch -tN,..,N (separato dal resto, con uno spazio prima): imposta le posizioni di tabulazione
della list box laterale, in caratteri - il testo di una riga che contiene dei tab (\t) viene messo a
partire da quelle posizioni. -t0 nasconde il testo prima del primo tab.
Stili di aspetto (prefisso +, es. /window +tnx @nome ...): t mostra la
barra del titolo, n mostra il bottone minimizza, x mostra il bottone massimizza,
d toglie il bordo.
/aline [c] <@nome> <testo> aggiunge una riga in fondo /cline [c] <@nome> <N> cambia colore della riga N /dline <@nome> <N[-N2]> elimina la riga N (o da N a N2) /iline [c] <@nome> <N> <testo> inserisce alla riga N /rline [c] <@nome> <N> <testo> sostituisce la riga N /sline <@nome> <N> seleziona la riga N
c (opzionale, subito dopo lo switch) è un numero di colore 0-15 (stessa tavolozza classica IRC).
Tutti questi comandi accettano -l per operare sulla list box laterale invece che sul testo
principale. /aline//iline accettano anche -n (non aggiungere se il testo
esiste già), -i[N] (indenta di N spazi, 2 di default), -s/-a (seleziona la
riga appena aggiunta/inserita). /cline -r riporta la riga al colore di default.
aline @log Connessione stabilita aline 3 @log Attenzione: timeout cline 9 @log 1 dline @log 2
/renwin <@vecchionome> <@nuovonome> [topic]
Rinomina una finestra già aperta. Il parametro topic (nel vero mIRC un argomento di contesto
aggiuntivo) è accettato ma ignorato: qui una @finestra non ha un vero "topic".
| Forma | Cosa fa |
|---|---|
$window(0) | Numero di @finestre aperte. |
$window(N) | Nome dell'N-esima @finestra aperta. |
$window(@wildcard,N) | N-esima @finestra il cui nome soddisfa il pattern con */?. |
$window(@nome).proprietà | Vedi tabella sotto. |
Proprietà supportate: x, y, cx, cy (qui identiche a x/y - non
gestiamo una vera distinzione multi-monitor), w, h, dw, dh
(dimensioni dell'area di testo o del canvas), mdi, title, fulltitle,
state (normal/hidden/maximized), font, fontsize, fontbold,
fontitalic, ontop, type (custom o picture),
wid, hwnd, lb (0 = niente list box, 1 = presente), pbstate/
pbpercent (stato/percentuale della barra di avanzamento, vedi /window -q sopra).
T opzionale: 1 per riferirsi alla list box laterale invece del testo principale
(come -l nei comandi sopra). N=0 restituisce il numero di righe.
$line(@log,3) ; testo della riga 3 $line(@log,0) ; quante righe ci sono $line(@log,3).color ; numero colore della riga 3 (vuoto se nessuno) $line(@log,3).state ; 1/0 a seconda che sia la riga selezionata $line(@log,2,1) ; riga 2 della list box laterale
Trova la posizione della N-esima riga che soddisfa testo (wildcard di default, T=2 o T=3 per
espressione regolare; T=1 opera sulla list box). N=0 restituisce il numero di righe che soddisfano. S imposta da
dove iniziare la ricerca. La posizione trovata resta anche in $flinen (identificatore nudo).
popup.txt (parametro posizionale di /window, deve finire per .txt) carica
un menu tasto-destro per la finestra da un file di testo semplice - stessa sintassi Etichetta:comando
usata in popups.ini, senza le sezioni [...]. iconfile (deve avere un'estensione
immagine: ico/png/jpg/jpeg/bmp/gif) imposta l'icona nella titlebar - l'indice N (per file con più
icone, tipico di .ico/.exe Windows) non è supportato, ignorato.
window @log 50 50 400 300 miopopup.txt "Courier New" 12 window @log 50 50 400 300 icona.png
Un picture window è un @window con un'area di disegno (<canvas>) al posto del
testo. Ci si disegna sopra con i comandi /draw*, e si possono intercettare i click/movimenti del
mouse.
window -p @tela 50 50 300 200 drawrect -f @tela 4 1 10 10 100 60 drawtext @tela 1 Arial 14 20 20 Ciao!
Senza lo switch -r, <color> è un indice 0-15 nella stessa tavolozza classica
usata da /aline ecc. Con -r, è un valore RGB "impacchettato" come quello restituito da
$rgb(r,g,b) (formato R + G×256 + B×65536, lo stesso usato internamente dal vero mIRC).
| Comando | Cosa fa |
|---|---|
/drawdot [-r] @ <color> <size> <x y> [x y ...] | Disegna uno o più punti quadrati di lato size. |
/drawline [-r] @ <color> <size> <x y> <x y> [x y ...] | Disegna una linea (spezzata, se più coppie x y) spessa size. |
/drawrect [-refd] @ <color> <size> <x y w h> [...] | Rettangolo (o più, ripetendo x y w h). -f lo riempie, -e disegna un'ellisse invece. |
/drawfill [-rs] @ <color> <color2> <x y> | Riempimento a partire da x,y. Senza -s: "border fill", riempie tutto tranne color2 (il colore di bordo). Con -s: "surface fill", sostituisce color2 con color. |
/drawtext [-rbo] @ <color> [color sfondo] [font size] <x y> <testo> | Scrive testo. -b indica che è stato dato anche un colore di sfondo, -o lo rende grassetto. |
/drawpic @ [x y [w h]] <file> | Carica e disegna un'immagine (file grafico) - il caricamento è asincrono (il disegno appare non appena il file è pronto, non nello stesso istante del comando). |
/drawscroll @ <dx dy> <x y w h> | Sposta il contenuto del rettangolo indicato di dx,dy. |
/drawcopy [-r] @ <x y w h> @dest <x y [w h]> | Copia un'area (anche su un'altra picture window), con eventuale ridimensionamento. |
/drawrot @ <angolo> [x y w h] | Ruota l'area indicata (l'intera tela se omessa) attorno al proprio centro. |
/drawreplace [-r] @ <color1> <color2> [x y w h] | Sostituisce ogni pixel color1 con color2 nell'area indicata. |
/drawsize @ <w> <h> | Ingrandisce la superficie di disegno (fino a 8192×8192) - non la rimpicciolisce mai. |
/drawsave [-a] @ [x y w h] <file> | Esporta la tela (o l'area indicata con -a) in un file PNG. |
/clear @nome | Svuota la tela di una picture window (o il testo di una @finestra normale). /clear -c @nome svuota solo la cronologia dei click. |
Il vero mIRC li definisce dentro un blocco menu @nome { mouse:/comando sclick:/comando ... }. Qui,
per coerenza con il resto del motore di script (stessa struttura degli eventi on dialog), si usa
invece:
on 1:mouse:@nome:evento: {
echo $mouse.x $mouse.y
}
| Evento | Quando scatta |
|---|---|
mouse | Il mouse si muove sopra la tela. |
sclick / dclick / uclick | Click singolo / doppio / rilascio del pulsante. |
rclick | Click destro (mostra anche il popup.txt, se presente). |
lbclick | Selezione di una riga nella list box laterale (di qualunque @finestra, non solo picture window). |
leave | Il mouse esce dall'area della finestra - $window (nudo) restituisce il nome della finestra appena lasciata. |
drop | Click e trascinamento seguito dal rilascio del pulsante. |
| Identificatore | Cosa fa |
|---|---|
$click(@nome[,N]).x/.y | Coordinate dell'N-esimo click registrato (l'ultimo, se N omesso). |
$getdot(@nome,x,y) | Valore RGB impacchettato del pixel a quella posizione. |
$height(testo,font,size,bipt) / $width(...) | Altezza/larghezza in pixel del testo con quel font. bipt: 4 cifre 0/1 per grassetto/corsivo/codici colore/tab (qui solo il grassetto - 1° cifra - è considerato). |
$inrect(px,py,x,y,w,h) | 1/0 a seconda che il punto sia dentro il rettangolo. |
$inellipse(px,py,x,y,w,h) | 1/0 a seconda che il punto sia dentro l'ellisse. |
$inroundrect(px,py,x,y,w,h,w,h) | Approssimato: trattato come $inrect, gli angoli arrotondati non sono considerati a parte. |
$inpoly(px,py,x,y,x,y,...) | 1/0 a seconda che il punto sia dentro il poligono. |
$onpoly(n1,n2,x,y,...) | 1/0 a seconda che due poligoni si sovrappongano (approssimato: verifica se un vertice di uno cade dentro l'altro, non una vera intersezione di segmenti). |
$mouse (nudo) | "x y" dell'ultimo evento mouse. Proprietà: .win .x .y .mx .my .cx .cy .dx .dy .key .lb - .key è una maschera bit a bit (1=sinistro, 2=ctrl, 4=shift, 8=alt, 16=destro), da leggere con &. |
$pic(file).width/.height | Dimensioni di un file immagine. |
$rgb(r,g,b) | Valore RGB impacchettato. $rgb(N) con un solo numero lo scompone in "r g b". $rgb(nome) con un colore di sistema (face/shadow/hilight/3dlight/frame/text) restituisce un'approssimazione fissa. |
/drawdll - chiamerebbe una DLL Windows per disegnare direttamente sul bitmap: nessun equivalente possibile fuori da Windows./drawpic (icone .ico/.exe con più immagini, frame di GIF animate) e le proprietà .icons/.frames/.delay di $pic()./drawsave esporta sempre in PNG, non un vero .bmp con profondità di colore scelta (1/4/8/16/24/32 bit) come nel vero mIRC.sbtext/sbcolor/sbstate/tbtext/tbstate.-i) in modo approfondito (multi-server).bw/bh (bitmap - qui sempre uguali a dw/dh), logfile, stamp, idle, fullscreen, cid, anysc./drawpic con file .ico/.exe/.dll: solo immagini grafiche normali (png/jpg/bmp/gif) sono supportate.