Custom Windows
Indice
- Custom Windows
- Window Components
- Creating a window
- Text Operations
- Customizing the window
- Custom Window’s Menu
- Getting Info
- Retrieving Text
Prima di mIRC 5.5, le Custom Windows erano il metodo principale per creare una GUI, cioè una graphical user interface.
Custom Windows
Una custom window è semplicemente un’altra finestra, come una finestra di canale o una finestra server, ma con la possibilità aggiuntiva di controllarne ogni aspetto. I comandi seguenti ti permettono di modificare, aggiungere e cambiare elementi nella tua custom window.
Window Components
Una custom window può contenere i seguenti 3 componenti:
- Chatbox
- Editbox
- Side-listbox
Creating a window
Prima di poter fare qualunque cosa con una finestra, devi effettivamente crearla.
Tutte le finestre devono avere un nome, e il nome deve iniziare con il simbolo @.
Il nome può essere qualsiasi cosa, purché non contenga spazi.
Usa il comando /window per creare una finestra:
/window @<WindowName> [x y [w h]]
Questo creerà una finestra vuota contenente solo la chatbox. Se vuoi aggiungere l’editbox
devi usare lo switch -e. Inserire un numero dopo lo switch consente di definire
il tipo di editbox da usare:
- 0 - single line
- 1 - multi-line editbox
- 2 - auto editbox
- 3 - default
Una finestra può anche essere resa separata dalla finestra principale usando lo switch -d.
/window -e[N] @<WindowName> [x y [w h]]
Una side-listbox può essere aggiunta alla finestra usando lo switch -l.
Aggiungere un numero dopo l definirà la larghezza, in caratteri, della listbox.
/window -l[N] @<WindowName> [x y [w h]]
Per esempio:
alias
example {
; -d desktop window, -e editbox, (3 = auto), -l = side-editbox (20-char width)
; posizione (200,200) dimensione 500x350
window -de3l20 @example 200 200 500 350
}
Il codice sopra creerà una desktop window con un’editbox e una side-listbox.
Text Operations
I seguenti comandi possono essere usati per aggiungere, modificare, eliminare, inserire o sostituire righe nella chatbox o nella side-listbox:
Add a line
Questo comando aggiunge semplicemente una riga di testo alla fine della finestra.
[color] è il numero colore della riga. Lo switch -n può essere usato
per evitare duplicati. Lo switch -i applica un rientro alla riga.
/aline [-ni] [color] <@name> <text>
Delete a line
Questo comando serve a eliminare la riga N-esima dalla finestra. La riga N2 può essere specificata
per definire un intervallo di righe: per esempio 4-7 eliminerà le righe 4, 5, 6 e 7.
/dline [color] <@name> <N[-N2]>
Insert a line
Questo comando consente di aggiungere una riga di testo dopo la riga N-esima.
[color] è il numero colore della riga. Lo switch -n può essere usato
per evitare duplicati. Lo switch -i applica un rientro alla riga.
/iline [-ni] [color] <@name> <N> <text>
Replace a line
Questo comando serve a sostituire la riga N-esima di una finestra con un’altra riga.
[color] è il numero colore della riga.
/rline [color] <@name> <N> <text>
Change color of a line
Questo comando serve a cambiare il colore della riga N-esima con il nuovo [color].
Lo switch -m può essere usato per associare il colore del nickname nella side-listbox
con il nickname nella chatbox. Lo switch -r può essere usato per ripristinare
il colore predefinito.
/cline [-rm] [color] <@name> <N>
Select a line
Questo comando serve a selezionare la riga N-esima della finestra. Lo switch -p
può essere usato per forzare il wrapping della riga se è troppo lunga per entrare su una sola riga.
-h evidenzia l’icona della finestra, ma solo se è minimizzata. -a può essere
usato per aggiungere questa riga alla selezione corrente, mentre -s può essere usato
per svuotare la selezione corrente e selezionare solo questa riga.
/sline [color] <@name> <N>
Customizing the window
Il comando titlebar può essere usato per cambiare il titolo della finestra.
/titlebar @window <text>
Nota: questo non cambierà il nome reale della @window, ma solo il suo titolo.
Per cambiare il nome reale della finestra, usa il comando renwin:
/renwin <@oldname> <@newname> [topic]
Custom Window’s Menu
Puoi anche creare un menu contestuale personalizzato con click destro per la finestra. Questo può essere fatto in uno di due modi:
- Con un file di testo semplice, che deve chiamarsi
POPUP.TXT, contenente il menu. - Scrivendo il menu direttamente nella sezione remote.
La prima opzione usa un popup file. Questo metodo è molto simile alla scheda popups
nell’editor degli script. Nel codice seguente assumiamo che tu stia usando l’opzione 2,
quindi scrivendo il menu nella sezione remote. Se scegli invece il popup file,
dovrai omettere dal codice la parola chiave menu.
La sintassi di base è:
menu @windowName {
<event>: { ;/commands }
; oppure
<event>: /commands
}
Esistono 8 eventi built-in possibili; tuttavia, solo 3 di essi riguardano le normali custom windows. Gli altri possono essere usati solo in una Picture Window.
- dclick - Si attiva quando il mouse fa doppio clic sulla finestra.
- rclick - Si attiva quando il mouse fa clic destro sulla finestra.
- lbclick - Si attiva quando viene cliccato un elemento della side-listbox.
Oltre agli eventi mouse built-in, puoi anche aggiungere i tuoi elementi personalizzati al menu. Se hai sia eventi mouse built-in sia menu item personalizzati, gli eventi built-in devono essere posizionati sopra i menu item personalizzati.
La sintassi base dei menu item è:
menu @windowName {
item: { ;/commands }
; oppure
item: /commands
}
Sono possibili sottomenu e sotto-voci anteponendo un punto all’elemento del sottomenu. Punti aggiuntivi indicano livelli ancora più profondi. Per esempio:
menu @example {
menu
.sub_item: echo -a sub item clicked!
.sub_item2
..sub__sub_item: echo -a sub sub item clicked!
.sub: echo -a another item!
item2: echo -a main item 2.
}
Getting Info
Esiste un certo numero di identificatori che possono essere usati per recuperare informazioni da una custom window.
L’identificatore $window può essere usato per recuperare informazioni specifiche
della finestra:
$window(@name | N)
Alcune delle proprietà più utili di $window sono:
| Proprietà | Descrizione |
|---|---|
| x, y, w, h | left, top, width e height |
| dx, dy, dw, dh | posizione left e top relativa al desktop |
| state | Restituisce lo stato della finestra: minimized, maximized, hidden o normal |
| title | Restituisce il titolo della finestra |
| font | Restituisce il font della finestra |
| fontsize | Restituisce la dimensione del font della finestra |
| ontop | Restituisce $true/$false se la finestra è impostata come ontop |
| wid | Restituisce l’ID della finestra |
| sbtext | Restituisce il testo del pulsante switchbar |
| sbcolor | Restituisce il colore di evidenziazione della switchbar |
| sbstate | Restituisce lo stato del pulsante switchbar |
| tdbstate | Restituisce lo stato del pulsante treebar |
Retrieving Text
Puoi recuperare una riga di testo da una custom window usando l’identificatore $line:
$line(@windowName, N, M)
$line restituisce la riga di testo N-esima di una finestra. Se N = 0,
$line restituisce il numero totale di righe nella finestra. Se M = 1,
verrà usata la side-listbox invece della chatbox; il valore predefinito è 0.
Puoi anche cercare nella finestra una riga che corrisponda con wildcard a una sequenza specifica:
$fline(@windowName, wildtext, N, M)
Questo restituirà la riga N-esima che corrisponde a una certa sequenza wildtext.
Se M = 1, verrà usata la side-listbox invece della chatbox; il valore predefinito è 0.
Se viene usata una listbox, puoi usare l’identificatore $sline
per recuperare il testo selezionato N-esimo.
$sline(@windowName, N)[.ln]
Se N = 0, viene restituito il numero totale di righe selezionate.
Se viene usata la proprietà .ln, verrà restituito il numero della riga
invece del testo vero e proprio.