Documentazione mIRC

Custom Windows

Custom Windows

Indice

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:

  1. Con un file di testo semplice, che deve chiamarsi POPUP.TXT, contenente il menu.
  2. 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, hleft, top, width e height
dx, dy, dw, dhposizione left e top relativa al desktop
stateRestituisce lo stato della finestra: minimized, maximized, hidden o normal
titleRestituisce il titolo della finestra
fontRestituisce il font della finestra
fontsizeRestituisce la dimensione del font della finestra
ontopRestituisce $true/$false se la finestra è impostata come ontop
widRestituisce l’ID della finestra
sbtextRestituisce il testo del pulsante switchbar
sbcolorRestituisce il colore di evidenziazione della switchbar
sbstateRestituisce lo stato del pulsante switchbar
tdbstateRestituisce 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.