![]() |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Cuadros de Dialogos Los diálogos son pequeños programas que se ejecutan independientemente, pero bajo la supervisión de mIRC, en realidad sirven para bastante poco, pero es una bonita forma de embellecer el script si no nos queremos meter a complicados entornos gráficos. Los dialogs se pueden incrustar en scripts de mirc desde la versión 5.51 en adelante. Pero desde mi punto de vista, me quedo con las picture win. Otra cosa que ha que señalar de los dialogs es que sus coordenadas empiezan a contar desde el 0,0 de la pantalla, no desde la MDI de mIRC, y esto genera algún problema al trabajar con píxeles, ya que según la resolución que utilizemos el dialog se mostrará de manera diferente, así que para eso empleamos los "dbu", un tipo de coordenadas que omite la responsabilidad de los píxeles. Los dialogs se pueden crear bien con em comando /dialog o con el identificador $dialog, la diferencia es que los primeros son moderados, es decir, no afectan al script y los segundos son modales, esto es, detienen la ejecución hasta ser devueltos. De igual manera, los dialgos se pueden crear con tablas, y esta es la única forma que trataremos, ya que todos los diálogos se pueden hacer con tablas y son mucho más dinámicos, la sintaxis que emplearíamos podría ser: /dialog -m <nombre> <tabla> Donde el parámetro nombre sería el nombre del dialog, y tabla el nombre de la tabla, pero para ello antes debemos crear una tabla en un remoto, de esta manera: dialog
<nombre tabla> { Lo mínimo que una tabla debe contener es un tamaño, un título y un botón, en el tamaño, que se especifica con size, hay que decir que el valor -1 en x y hace que centre el dialog en la pantalla. Sobr el título, no creo que haya nada que comentar, y el botón lo trataremos a continuación. Sólo indicar que sería conveniente añadir por costumbre la opción dbu, para salvaguardarnos de problemas con la resolución de la pantalla, la cosa quedaría así: dialog
<nombre tabla> { Ahora vamos a tratar lo que le podemos poner a nuestro dialog, que irá desde vulgares etiquetas de texto hasta pestañas y combos desplegables. text "texto", id, x y w h, style (right,center) Crearía una etiqueta con un texto. El style puede ser right para alinear a la derecha, center para alinear al centro y no ponerlo para alinear a la izquierda. edit "texto", id, x y w h, style (right, center, multi, pass, read, return, hsbar, vsbar, autohs, autovs) Esto crea una caja de texto, donde podemos escribir, el texto entre comillas sería el que aparecería en la caja antes de escribir nada. El style tiene además de los de antes muti que sirve para especificar multilineas, pass, que muestra asteriscos en vez de lo que escribimos, read, que no permite editar lo que pone, hsbar, que pone una barra de desplazamiento horizontal, vsbar que hace lo mismo, pero en vertical, y los autohs y autovs que ponen barras de desplazamiento horizontal y verticalmente respectivamente, si se requieren. button "texto", id, x y w h, style (default, ok, cancel) Esto crea un botón pulsable, con el texto "texto". El style puede ser default, para especificar por defecto, ok para un botón de aceptar y cancel para cancelar. check "texto", id, x y w h, style (left, push, 3state) Esto crearía una casilla para marcar, el style es left para alinear a la izquierda, push que crea un botón y 3state que actuá igual que en windows. radio "texto", id, x y w h, style (left,push) Crea un botón de opción, que puede estar marcado o no, el style es igual que en el caso anterior. box "texto", id, x y w h Crea un frame o una caja donde se pueden incrustar botones u otros eventos, no tiene style, y el "text" es el que encabeza el marco. list id, x y w h, style (sort, extsel, vsbar, hsbar) Esto crea una lista con opciones, el style puede ser sort o extsel, la diferencia es que la última permite multiple selección, y la primera no. combo id, x y w h, style (sort, edit, drop, vsbar, hsbar) Crea un combo de edit y list, donde puiede escribir, y también contiene una lista. El style puede ser sort (igual que en el caso anterior), edit una lista editable, y drop, con un menú deplegable. icon id, x y w h, fichero, índice muestra una imagen, qué sólo puede estar en mapa de bits (bmp, ico...) tab "text", id, x y w h Crea una pestaña, como en las opciones de windows, el "text" es el texto de la peteña. Las coordenadas puede sólo llevarlas la primara definición de tab, siendo las siguientes de igual forma, y desplazadas automáticamente. Indicar que todos los controles tienen o pueden tener unos style globales: disable
desactivas el control Esto es lo que necesitamos para crear un dialog, pero para controlar estos dialogs, necesitaremos además algunos comandos y eventos. Los comandos son: /did -ftebvhnmcukradiog nombre id [n] [text | fichero] -f
pone foco en id -e
activa id -n
activa editbox -c
chequea línea checkbox/radiobutton list/combo -k trabaja con -cu, guarda otras selecciones en la lista de edición -r
borra todo el texto en id -d
borra línea N -g pone nuevo icono/bmp en control de icono "/did -g nombre id [n] fichero" -z devuelve el ancho del scroll Esto es el comando que utilizaremos para modificar el dialog una vez creado, ahora bien, en algunos casos nos interesará saber que información contiene el dialog, para ello emplearemos el identificador $did: $did(nombre,id) Si usas en un evento on dialog (que ya explicaré), nombre es opcional. .text
da la línea o Número de línea $did(id) es como $did(id).text .next
da el id o control siguiente en el orden de la tecla tab .focus devuelva el control id del foco actual .tab da el id o tab actualmente mostrado. Una vez que ya conocemos como modificar y "leer" un dialog, tendremos que ligar estos conocimientos a través de un evento remoto, el evento on dialog. On dialog permite controlar remotamente una dialog, tanto modal como moderada, el evento transcurre de esta manera: on 1:dialog:<nombre>:<evento>:<id>: { <comandos> } Donde nombre sería el nombre del dialog que quremos controlar, id, el número que hemos asociado al control que queremos controlar (valga la redundancia), y evento puede ser: init
se produce nada más crear el dialog, es ideal para añadir
textos a lista o combos. Con esto ya podemos hacer algo, sólo indicar antes del ejemplo que par hacer dialgoos modales la sintaxis sería a través de un identificador que devuelve un valor, de esta manera: set %devuelve $dialog(nombre,tabla[,ventana origen]) Donde ventana origen es la ventana en la que se muestra el dialog, puede ser: -1 (en el escritorio), -2 (principal del mIRC), -3 (ventana activa), -4 (dialog activo). Por defecto se asume -3, además $dialog al igual que $?, no puede ser invocado desde un evento remoto. Pues al ejemplo, en este caso ejemplos, ya que primero pondré uno que he sacado de una charla de #ayuda_scripting del irc-hispano, y que es bastante sencillo, y luego haremos un dialog para escribir e-mails a un server SMTP. Ejemplo primero, Lista de servidores. alias
servers { dialog -m servers serv | $inserv } Ejemplo segundo, Ezcribir e-mails... (cortesía de {EiRoN} :P) alias
WriteMail { dialog
Mail { on
1:dialog:WriteMail:init:0: { on
1:dialog:WriteMail:sclick:51: { on
1:sockopen:SMTP: { alias
Datos { on
1:sockread:SMTP: { on
1:sockwrite:SMTP: { Para
más información: |