0.90a o Bug fixes * adduser option in channel popup menu is fixed * fixed server window creation error if user moved pirch to a new dir and used old ini's that directed pirch to load aliases from a non-existant directory * fixed an 'invalid image size' message when toggling between icons on the tool bar and text only * fixed a problem with the events ini not flushing and windows failing to write to it during fast event modification saves * Fixed a minor problem with idents in address masks o Added video server to the Tools menu o Allowing radiobuttons/checkboxes in pil to have background colors now o Nickname fillin now complete type partial nickname (even first letter & press tab to fill in the nick) o Fixed a weird error on NT4 that showed empty network list & access violation o Fixed the Add server function from the /links window for the new network/server list o Added a number of things to the help files including video help and color help. 0.90 o Reorganized this file so newest version changes are on top o DDE API This is just a brief description, for more complete documentation see the help file. PIRCH implements a DDE (Dynamic Data Exchange) server which can be used to execute commands and share information between some DDE Client application and an instance of PIRCH. Because PIRCH allows multiple connections it is useful to be able to distinguish between multiple connections and to this end every PIRCH server window is defined by a DDETag. The DDETag is automatically generated by PIRCH and starts with one (1) and increments for wach successive server window created. You can set specific DDETags for a server window with /SET DDETAG DDE Server Topics Topic: IRC_COMMAND Transaction Type: XTYP_POKE Item (Arguments): ddetag,windowname Data: /COMMAND [parameter..[parameter..]] Description: Excutes a PIRCH command (or alias) just as if you had typed it from the command line of the specified window. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Topic: IRC_CHANNELS Transaction Type: XTYP_REQUEST Item (Arguments): ddetag Description: Returns a list of channels, each channel seperated by a single space. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Topic: IRC_CONNECTED Transaction Type: XTYP_REQUEST Item (Arguments): ddetag Description: Returns current connection status. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Topic: IRC_EXENAME Transaction Type: XTYP_REQUEST Item (Arguments): none Description: Returns this instance of PIRCH's exe name Topic: IRC_LISTTAGS Transaction Type: XTYP_REQUEST Item (Arguments): none Description: Returns a list of of server window DDE tags which are currently active. This function is typically used by a DDE client application the desires to be multi-connection aware and wants the list of available ddetags. Topic: IRC_MEMBERS Transaction Type: XTYP_REQUEST Item (Arguments): ddetag,#channel Description: Returns list of channel members for the connection and channel name. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Channel is the channel name for which the member list is requested. PIRCH must be joined into the otherwise the return string will be empty. Topic: IRC_NICKNAME Transaction Type: XTYP_REQUEST Item (Arguments): ddetag Description: Returns your nickname for the IRC connection. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Topic: IRC_PROFILE Transaction Type: XTYP_REQUEST Item (Arguments): ddetag Description: Returns the name of the currently active profile (primary ini file). DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. Topic: IRC_TAGINFO Transaction Type: XTYP_REQUEST Item (Arguments): ddetag Description: Returns information about WindowID. DDETAG is the connection identifier, or may be "active" (without the quote marks) to indicate the currently active window. The return data is in the format of "servername,nickname,usermode,networkid" DDE Server Topics /DDEPOKE [data] Performs a DDE transaction of XTYP_POKE to the topic and service DDE Variables $dde [data] Performs a DDE transaction of XTYP_Request See the help file under the DDE topic for more detailed information o Implemented more effcient memory storage for aliases and events when running multiple connections using identical profiles o Rewrote the /SET command processing. Improved speed. o Alias and Event Management rewrites Much of the internal management mechanisms for alias and events have been designed. While for the most part the alias & event editors are visually and functionally the same as 0.85, these changes where required. The changes will primarily affect advanced users running multiple connections or PIRCH bots. * Rewrote a section of the internal alias manager to handle larger alias stores using much less memory when multiple connections are active. PIRCH now maintains an 'alias pool' so that an instance of an alias file is only loaded once regardless of how many connections use that alias file. You can still run multiple connections with different profiles that use different alias files as well. * Rewrote most of the internal event editing system. Memory and resource usage reduced. You can now 'cancel' changes made to events, including level addition/deletions. Events window now also has 'save', 'save as', 'load' buttons. Each server connection profile may now have its own set of events. PIRCH also maintains an 'events pool' so that an instance of an events file is only loaded once regardless of how many connections use that events file. Event files are now backed up automatically with the extension .bak Keep in mind when multiple connections use the same primary profile (ini file) and you load a new alias/events file or do a 'save as', then all connections that use that profile will also recognize the change and use the same alias/event file. o Rewrote most of the popmenu editing system. Can now load popup.irc files on an individual bases per menu. Memory and resource usage also reduced. o Save command in connect dialog will now copy all profile options from the original profile to the target profile rather than only the primary settings when you supply a different filename. o Seperate Popup menu section added for private message windows/dcc windows o Added support for multiple sound directories. PIRCH will now search any subdirectories below the PIRCH sound path you enter in the options | prefs | media field. o Destination parameter ( # ) is now available for CTCP's. o Quite a few interface changes. o Graphical icons on the toolbar. o Toolbar may be set to display either text only, icons only or icons & text (This option is set via the Options | Desktop options menu selection) o Added an activity animation to the upper right corner of the toolbar (Note to beta testers - animation itself doesnt do much but planned functionality is planned for it to retrieve various types of information via /fetch such as server list updates, lists of live scheduled chat events, program updates etc Sort of like /fetching in #pirch but being in the channel will not be required comments? suggestions? snide remarks?) o Added DCC Chat button to the main Toolbar o Ban modes using the ident field will now wildcard an unidented user id (replaces the ~ character) or prefixes an idented userid with the * wildcard. o Channel list display is disabled on startup (this a planned option) o All new Favorites window with folder groups for various channel types. This also eliminated a bug in the channel folder. o All new server list window. List divided by network making organizing your server list easier. o Server windows now contain drop downs for network and server. Server drop down will show only servers for the selected network making finding a desired server accross networks easier. o Server entries may now contain a series of port numbers, each seperated by a comma. On a failed connect to a given port, PIRCH will try alternate port numbers in sequential order until there are no more alternate ports remaining at which point it will stop the connection attempt to the particular server. o Fixed the toolbar button text display when button color is set to black. (Text was also black making text invisible) o DCC logs now saved as nick.dcc o PIL Fixes * Fixed problem with radiobuttons & checkboxes for retrieving checked/selected value Usage checked := GetWindowAttr(ControlId,8) * DestroyWindow() now works properly freeing used resources * Now allow click events for Panels * Binary compiled PIL script images are now decached if you delete the script source code from the alias window o Fixed PIL bug where sometimes the command line parameters would get lost Workaround for 0.85... seems the problem had to do with the actual number of parameters passed to the script on the first run... if successive calls to the compiled script contain more parameters than the first one... then the extras would be blank. To avoid this... pass dummy parameters as place holders in the first call. ***NOTE*** This is a work around for 0.85 only... the problem does NOT exist in 0.90. o /SET additions /SET CLIPTEXT Places the text (data) on the system clipboard. See also $cliptext * /SET IDENTD ON|OFF [USERID] [-Q] Enables or disables PIRCH's identd server ON or OFF are required parameters. If USERID is provided it will be the new ident that the server provides to querying clients. -Q may be used to suppress PIRCH's standard state reporting. See also $identd /SET EDITOR Set the default editor program used for displaying log files and the text documents in the help menu. See also $editor /SET GETPATH Sets the DCC Download directory. See also $getpath /SET SENDPATH Sets the DCC Upload Directory. See also $sendpath /SET DCCEOLM Sets the DCC EOLM (End Of Line Marker) characters used in DCC CHATs Default EOLM is set to ascii characters 13 10 This command can only be called from an alias such as /set DCCEOLM \-13 \-10 Valid EOLMs can only contain the ascii characters 10 and 13, must be of a length >0 and <= 2. /SET DDETAG Set the DDE connection identifier for a server window /SET PROTECT Enables/disables the protect list PIRCHs default EOLM as far as I am aware works properly with all dcc chat capable clients and bot systems but on IRCII the extraneous ascii 13 appears as a box. Changing the EOLM may render your client incapable of DCC chatting certain systems properly. /SET TITLE Adds the title text to the caption to PIRCH's main window. See also $title /DCC VIDEO <nickname> This command only works if you have PIRCHVDO video server. Use it to allow someone else to view your video stream. PIRCHVDO only supports single streams right now. Will have the multi-cast enabled in the next version. o New commands /COMPILE <scriptname> This command forces a compile of the script. The script is then stored in the script cache. /DDEPOKE <service> <topic> <item> [data] Performs a DDE transaction of XTYP_POKE to the topic and service /EXECUTE [-eop] <path | drive:\path\filename.ext> /EXECUTE is similar to the /run command in that it can be used to run an executable file, however can also be to launch document files according to association rules setup within the shell. You can also pass a path to this command to open an explorer window. Optional parameters P : print mode - the document instead of opening it E : Explorer mode - only when you use a path O : Open mode - (open the file) This is the default mode (if you have installed MS Internet explorer and url have been registered with the system you can /execute http://www.someaddress/ to have the url loaded. Not sure if this works with all browsers, if not you can still use the /loadurl command } /CLEARCACHE [scriptname] This command clears the script cache. If the optional scriptname parameter is supplied only the specified script is decached, otherwise the entire cache is cleared. /SAVE Saves the profile options (basically all options in the Options | prefs Dialog) Many of these items can be change with / commands so can be useful to have these options saved with /save in scripts. /TRIGGER <[ON] event> <channel> <nickname> <address> <extravariables> <message> Undocumented at present time /LOADURL <url> Loads the url specified in your web browser. If your web browser is not currently running it will be loaded. /QUOTE <command> [[:]<parameters>] Same as /verbose (internal alias for the sake of standards) See RFC 1459 for verbose server commands /WHEREIS [> windowname] [-FQS] [(drive:\path\)filemask] This command searches a directory for a file or filemask including any subdirectories below the path specified. Example : /whereis -F c:\pirchutl.ini (Searches entire drive C for pirchutl.ini and reports the location of it and stops searching as soon as a match is found) Optional parameters F : Stop search after first found match Q : Quiet mode, only reports found files S : Do not search subdirectories /DESCRIBE <nick|channel> <message> Used to send a ctcp action to a specified window. o New Alias/PIL Variables Name Description $activeurl URL address of the page currently displayed in your web browser $activeurltitle Page title of active page currently displayed in your web browser $activeurlpage Combination of the above in the format $activeurl - $activeurltitle $audience Returns the audience for window, same as # (new for aliases, existed in PIL) $cliptext Text on the clipboard (safety limit of 512 chars) (can be set with /set cliptext) $dccgetpath Default dcc download directory (new for aliases, existed in PIL) $dccsendpath Default dcc upload directory (new for aliases, existed in PIL) $dde DDE PsuedoVariable which preforms a DEE transaction of XTY_REQUEST $identd Ident daemon userid for yourself $logpath Default log directory (new for aliases, existed in PIL) $soundpath Default sound directory name (new for aliases, existed in PIL) $usermode Returns a string containing personal mode flags for Invisible, Wallops, Server messages *** the $activeurlxxx variables are dde activation variables that comminicate with your web browser If the browser is not currently loaded when the variables are used, they will open it o PIL Additions Added the following classes to the gui PIL window classes Ordinal Description 14 Image class - capable of loading, displaying & saving bitmaps (.bmp), metafiles (.wmf) and icons (.ico) function AddressMask(Address : string; MaskMode : value) : string; Converts an Address to a address mask according to the maskmode as follows: 0 = User nick!ident@port.server 1 = IdentPortServer *!ident@port.server 2 = IdentServer *!ident@*.server 3 = PortServer *!*@port.server 4 = NickOnly nick!*@* 5 = serverOnly *!*@*.server procedure DDEPoke(service,topic,item,Data : string); Performs a DDE transaction of XTYP_POKE to the topic and service function DDERequest(service,topic,item : string) : string; Performs a DDE transaction of XTYP_REQUEST to the topic and service function IpToLongIp(IpAddress : string) : string; Converts a dotted decimal IP (internet protocol) address to double word form in network byte order. ie 206.9.80.39 to 3456716839. Return value is in string form function LongIpToIp(LongIp : string) : string; Converts a long IP double word form address to a dotted decimal IP (internet protocol) address ie 3456716839 to 206.9.80.39 function UserLevel(Userid : string; Channel : string) : string; Finds the events user level of a user for a channel UserId should be in the form of nickname!ident@host function UnixTimeToStr(Format: string; UnixTime: Value): string; UnixTimeToStr formats the date and time value given by UnixTime using the format given by Format. Format specifiers are case insensitive. If the string given by the Format parameter is empty, the date and time value is formatted as if a 'c' format specifier had been given. The following formatting specifiers are supported: Specifier Displays c Displays the date using the format given by the ShortDateFormat global variable, followed by the time using the format given by the LongTimeFormat global variable. The time is not displayed if the fractional part of the DateTime value is zero. d Displays the day as a number without a leading zero (1-31). dd Displays the day as a number with a leading zero (01-31). ddd Displays the day as an abbreviation (Sun-Sat) dddd Displays the day as a full name (Sunday-Saturday) ddddd Displays the date using standard Short Date Format dddddd Displays the date using standard Long Date Format m Displays the month as a number without a leading zero (1-12). If the m specifier immediately follows an h or hh specifier, the minute rather than the month is displayed. mm Displays the month as a number with a leading zero (01-12). If the mm specifier immediately follows an h or hh specifier, the minute rather than the month is displayed. mmm Displays the month as an abbreviation (Jan-Dec) mmmm Displays the month as a full name (January-December) yy Displays the year as a two-digit number (00-99). yyyy Displays the year as a four-digit number (0000-9999). h Displays the hour without a leading zero (0-23). hh Displays the hour with a leading zero (00-23). n Displays the minute without a leading zero (0-59). nn Displays the minute with a leading zero (00-59). s Displays the second without a leading zero (0-59). ss Displays the second with a leading zero (00-59). t Displays the time using standard Short Time Format tt Displays the time using standard Long Time Format am/pm Uses the 12-hour clock for the preceding h or hh specifier, and displays 'am' for any hour before noon, and 'pm' for any hour after noon. The am/pm specifier can use lower, upper, or mixed case, and the result is displayed accordingly. a/p Uses the 12-hour clock for the preceding h or hh specifier, and displays 'a' for any hour before noon, and 'p' for any hour after noon. The a/p specifier can use lower, upper, or mixed case, and the result is displayed accordingly. ampm Uses the 12-hour clock for the preceding h or hh specifier, and displays the contents of the TimeAMString global variable for any hour before noon, and the contents of the TimePMString global variable for any hour after noon. / Displays the date separator character given by the DateSeparator global variable. : Displays the time separator character given by the TimeSeparator global variable. 'xx'/"xx" Characters enclosed in single or double quotes are displayed as-is, and do not affect formatting. function StrToUnixTime(Format: string; UnixTime: Value): value; StrToUnixTime converts a string in the format of MM/DD/YY HH:MM:SS to a UnixTime value. Specifying AM or PM as part of the time is optional, as are the seconds. You should use 24-hour time (7:45 PM is entered as 19:45, for example) if you don't specify AM or PM. function Whereis(filename,RootPath : string) : string; Whereis searches rootpath and any subdirectories below rootpath for a specified file and returns the first matching file it finds. If no matching file is found then the return string will be empty. function LoadFromFile(Gadgetid : value; filename : string) : value; Loadfromfile loads a disk file into memory for the particular gadget type. This function is only applicable to the following pil gui gadget types: Memos (type 3) Loads a text file into an editable memo gadget Listboxes (type 7) Loads a text file, each line becomes an item in the list Image (type 14) Loads a image file which may be one of the following types bitmaps .bmp files icons .ico files metafiles .wmf files function SaveToFile(Gadgetid : value; filename : string) : value; Saves a disk file for the particular gadget's contents. This function is only applicable to the following pil gui gadget types: Memos (type 3) Saves a text file of a memo gadget's contents Listboxes (type 7) Saves a text file, each line of the list gadget becomes a new line in the text file Image (type 14) Saves a image file which may be one of the following types bitmaps .bmp files icons .ico files metafiles .wmf files { --------- PIL GRAPHIC PRIMATIVES ----------- } All the procedure below are classified as graphics primatives and as such only apply to image objects. You must first create a gadget of type 14 (PIL_IMAGE) and use the result as the image parameter to all of these functions. procedure SetPen(image : value; style, color, mode : value); Sets the currently active pen attributes for an image object. Image is created with creategadget() using 14 as the class type. Style may be one of the following 0 Solid 1 Dash 2 Dot 3 DashDot, 4 DashDotDot 5 Clear 6 InsideFrame Mode may be one of the following - consult the Microsoft Windows Programmers Reference for meaning of raster mode 0 Blackness 1 Whiteness 2 Nop 3 Not 4 Copy 5 NotCopy 6 MergePenNot 7 MaskPenNot 8 MergeNotPen 9 MaskNotPen 10 Merge 11 NotMerge 12 Mask 13 NotMask 14 Xor 15 NotXor procedure SetBrush(image : value; style, color : value); Sets the currently active brush attributes for an image object. Image is created with creategadget() using 14 as the class type. Style may be one of the following values 0 Solid 1 Clear 2 Horizontal 3 Vertical 4 FDiagonal 5 BDiagonal 6 Cross 7 DiagCross procedure MoveTo(image : value; X,Y : value); Sets the logical pen position for the image (place where drawing starts) procedure LineTo(image : value; X,Y : value); Draws a line from the logical pen position [set by moveto()] using the current pen color, style & mode. procedure Rectangle(image : value; X1,Y1,X2,Y2 : value); Draws a rectangle using the coordinates provided by X1..Y2 using the current pen color, style & mode, and filling fith the current brush color & style. procedure TextOut(image : value; X, Y, Alignment : value; Text : string); Draws text to an image object using coordinates X & Y. Alignment specifies the text alignment by using a mask of the values in the following list. Only one flag can be chosen from those that affect horizontal and vertical alignment. In addition, only one of the two flags that alter the current position can be chosen. 0 NOUPDATECP 1 UPDATECP 0 LEFT 2 RIGHT 6 CENTER 0 TOP 8 BOTTOM 24 BASELINE 256 RTLREADING MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING); o New Events ON DNS:/alias [:+ | :-] Triggered when a DNS lookup initiated with /dns is complete Variables: $ipname - name form of ip $ipaddress - dotted decimal form of ip This event supports default system handling suppression by using :- The default is continue system level processing and display the DNS information example: ON DNS:/display Found results: $ipname ( $ipaddress ) ON INPUT:key:#channel:/alias [:+ | :-] This is really not an IRC event. Rather its a system level event. It is triggered when you press the enter key to issue a command or send text and the keymask matches your input text and the #channel parameter matches the window. Channel mask may be # : any channel windows ? : any private msg window #channelname : any specific channel * : any window This event supports default system handling suppression by using :- By default pirch will process the text/command normally. example: ON INPUT:!*:/runscript [bothandler] *1 Behaviour notes: Pasting multiple lines into the edit box or using Ctrl-Enter to force line seperation then each line will be processed for ON INPUT seperately. The default for this event is to continue normal PIRCH processing after the event has returned, using :- at the end will suppress PIRCH from handling the input. ON CHATOPEN:/alias This event occurs when a DCC CHAT connection is actually established with another user. Variables: $nick Nickname of person you are chatting $address ident@host of the user $ip actual IP address that you are connected to ON CHATCLOSE:/alias This event occurs when a DCC CHAT connection is closed by either party. Variables: $nick Nickname of person you were chatting $address ident@host of the user $ip actual IP address that you were connected to ON DCCSENT:filemask:/alias This event occurs when a DCC File send is completed successfully. Variable: $nick $address $filename $-filename $filesize $rate ON DCCSENDFAIL:filemask:/alias This event occurs when a DCC send fails Variables: $nick $address $filename $-filename $filesize $rate $sent $ack $percent NOTE: All DCC file events (ON DCCDONE, ON DCCFAIL, ON DCCSENT, ON DCCSENDFAIL) now have the $-filename variable which is identical to $filename except that it does NOT contain the file path ON JOINED This event occurs when you join a channel Variable $nick your nickname $address your address # the channel you joined o Event Modifiactions o Added support for /PART messages for Dalnet class IRCD's o Added adjustable slide control for tweeking the width of channel names list. o Added color code support o Added PIL Syntax Check command to the Alias window right click popup menu This command will attempt to compile a PIL script and report syntax errors in a pane below the editor o Added Run PIL script command to the Alias window right click popup menu This command will first display a dialog box allowing you to input any parameters you may want for the script. This command replaces/creates an instance of the script within PIRCH's script cache. (Basically the same as a /runscript) o Added user defineable font to the alias window (right click the main pane) o Changed mask modes that use idents to trim the tilde (~) and prefix a wildcard o Added WHEREIS command to the file server. o Hard Color support - (for the sake of compatibility the following convention is used) (*** sigh ***) Ascii char (0x03) followed by a number ranging from 0-15. You can also change the background color by appending a comma followed by another number to indicate the background The following table lists the supported colors 0 White 1 Black 2 Navy 3 Green 4 Red 5 Maroon (dark red) 6 Purple 7 Olive (dark yellow) 8 Yellow 9 Lime (light green) 10 Teal (blue green) 11 Aqua (light blue green) 12 Blue 13 Fuchsia (bright purple) 14 Gray (dark gray) 15 Silver (light gray) o Can now force a fixed font (courier) with Ctrl-F (great for ascii art) (\-17 in aliases) o Can now do symbol font with Ctrl-S. (\-18 in aliases) o Special attribute no longer supported. Replaced with color code o Fixed /filemove that sometimes wasn't deleting the orifinal file o Added execute options to the DCC File sender right click popup. Makes it easy to run/open files by system association 0.85 o Enabled SOCKS proxy support for connections to IRC servers via lans This has only been tested with WINGATE to date and seems to be functional. You CAN NOT DCC via SOCKS. HTTP proxy for /fetch will be enabled soon o /WHO now shows channel person is on o Enabled server logging o Enabled long filename usage for all logs o DCC Chats are now loged to nickname.dcc to prevent conflict with long filenames of private messages from the same person o Added unlimited timer iterations for /timer by setting the iteration count to -1. Timers created with this method need to be destroyed with /timer <timername> die as it will not expire of its own accord. o Numerous enhancements to PIL. PIL compile speeds have been optimized and are now approximately 6000% faster. Avg script compile ratio is now approximately 1700 lines per second Compiled PIL scripts are now cached. This means that once a PIL script is compiled in a session, PIRCH will retain the script's binary image in memory eliminating the necessity of recompiling it during each execution it unless the script is changed, avoiding the overhead of compilation each time a script is executed. o Fixed /savebuffer bug when a filename was supplied o Optimized saving & loading of Aliases o New PIL functions Sorry for the poor documentation here... will try to get the help file with some decent descriptions in place soon o New list based procedures/functions function createwindow(windowname:string; left,top,width,height:value) : value; Creates a new window, caption is set to windowname creategadget(parentwindow,controltype,left,top,width,height:value) : value; Creates a control in a parent window; Control type may be one of the following values Label = 1; Edit = 2; Memo = 3; Button = 4; ChkBox = 5; Radio = 6; ListBox = 7; Combo = 8; Group = 9; Panel = 10; Card = 11; Grid = 12; TextScroller = 13; procedure SetEvent(windowid : value; eventid : value; command : string); Installs a script or alias based event handler for controls. Currently only two primary events are handled, button clicks and parent window closing. Both of these events have an event id of 1. Applies to: Parent Windows and buttons procedure SetWindowAttr(controlid,attribute,attrvalue : value); function GetWindowAttr(controlid,attribute : value) : value; Applies to: All to varying degrees Attribute may be one of the following index values Color = 1; TextColor = 2; Align = 3; Alignment = 4; Border = 5; Enabled = 6; Visible = 7; Card = 20; { card control specific } CardState = 21; { " " } procedure setwindowtext(controlid : integer; text : string); function getwindowtext(controlid) : string; Applies to: All except listbox, textscroller Sets/retrieves the caption text for a control or window o New list based procedures/functions function ListAppend(controlid : value; item : string) : value; adds a string to the end of the list and returns its position Applies to: combobox, listbox, memo, textscroller function ListInsert(controlid,index : value; item : string) : value; inserts a string into the list at position index. Applies to: combobox, listbox, memo procedure ListClear(controlid : value); clears all items from a list Applies to: combobox, listbox, memo, textscroller procedure ListDelete(controlid,index : value); deletes item at position index from a list Applies to: combobox, listbox, memo function ListGet(controlid,index : value) : string; returns the string at position index in the list Applies to: combobox, listbox, memo function ListSelection(controlid:value) : value; returns the index which is currently highlighted Applies to: combobox, listbox function ListSearch(controlid : value; searchstr : string) : value; searches for searchstr in the list and retiurns the index the item is found at. If searchstr is not found, it returns 0 Applies to: combobox, listbox o /DCC SEND with no parameters now will display the dcc send window o You may now have an alias called ESC to represent the ESC key Examples: ESC:/min (to minimize active window on esc keypress) ESC:/close (to close active window on esc keypress) o Started adding hypertext support to the channel/message text scroller Currently supports http:// url format for for world wide web links Links have thier own color attribute which may be set in Options | Colors. As you move the mouse of a URL sent to as channel or in a message window you will see the mouse cursor change to a pointing finger. You can simply click on urls to have your web browser load the desired URL o Alias editing window may now be kept open and yo may switch in & out of alias and chat windows as desired. o Fixed bug that did not allow helper apps to properly load after a DCC download. (actually the code was never enabled... ooops) o DCC Resume option will now be availale even if auto accept is enabled. Also fixed a file rename problem in the dcc accept window. o DCC confirmation dialog now displays information (path/name size & date) about the existing file if a like named file sent to you exists on your system. o Added TDCC protocol. TDCC is a faster DCC file transfer protocol. Not compatable with standard DCC sending so reciever must also use PIRCH or other TDCC capable clients if there are any. o Again removed more debug code and reduced resource & memory usage to some degree. This process will continue o Added TGET command to File server to allow TDCC protocol to be used to retrieve an offered file. The client conntecting to your file server must of course of TDCC capability to make use of the command, or they will have to use the regular GET command. o Added /DCCMSG command. Allows you to send a text line to a user via a previously established DCC CHAT connect (useful for events). Example: ON CHAT:*ping*:/dccmsg $nick pong! o Fixed the problem with Default Max Gets Setting in fileserver not being saved properly o Added sending of a idle timeout warning mesage to the user approx 30 seconds before an idle disconnect connect will occur. o Removed the extra line after WALLOPS and SERVER NOTICES displayed in the server window. o Added Timestamping options. Options | prefs | misc | timestamping to have it enabled by default for all windows. Use /set timestamping ON | OFF to enable/disable timestamping for individual windows. o Added $activewin variable to represent the currently active window. o Rewrote the /ban command. Nickname no longer need be present in the channel to get banned, however should be online so that PIRCH can get proper address mask for the ban. o Added /unban command Usage: /unban #channel nickname maskmode o Added ON ANY event. Trigger on any irc event or CTCP... useful as a dummy event in doodoo lists o Including a copy of PILGAMES.DLL which will support a number of PIL game controls but the documentation is not done for this version... please do not ask how to use the game controls yet. 0.82 o Fixed /define evaluation order in the multi-phase parser o Fixed /filedel and implemented a -q option to prevent display of the confirmation dialog box. o Added automated CTCP flood control. Option is in the Options | prefs | flood group o Fixed popup menu in notify when on multiple networks... Whois request went to the 'active' net, not necessarily the correct net o Found and fixed a potential memory leak o PIL - PIRCH INTERPRETED LANGUAGE PIRCH now includes an integrated scripting language which allows a number of new capababilities, including the use of if/then/else, while/do, for/to/do statements, full mathematical expressions using quantitive operators (+,-,*,/,mod,^), logical operations (and, not, or, xor), bitwise operators (bitand, bitor, bitnor, bitxor, shl, shr). The PIL procedure/function libray includes common routines for string manipulation, type conversion, input/output, and and a variety of other data oriented procedure/functions. PIL is documented in PIL.DOC (Miscrosoft Word 6.0 format document-can be read by Wordpad included with Windows 95 & Windows NT). Two new commands have been added to support PIL. /RUNSCRIPT <scriptname> <parameters> /CALLBACK <server reply code> <script name> Both of these commands are documented in help and the PIL reference ************** IMPORTANT NOTE ABOUT PIL SUPPORT ***************** The #pirch channel on the Undernet (this is the primary support channel) will NOT answer questions regarding PIL. PIL is an advanced feature and as such obviously isn't intended for everyone. Support for PIL can be obtained through Northwest Computer Services via email for registered users only. o Added /ADDPIL <scriptname> to add a script to the alias window form a disk file making sharing/installing of PIL scripts easier. The same functionality can also be achieved by right clicking over the alias list in the alias window and selecting Install PIL script from the popup menu. Possible useful event: ON DCCDONE:*.pil:/addpil $filename Will automatically install a PIL script when dcc'd to you o Added ON CTCPREPLY event ON CTCPREPLY Format: [=]ON CTCPREPLY:<text>:<alias>[:+] Example: ON CTCPREPLY:*:#: /display > -CTCPs- \-1 *1 Available info: $nick - nickname of the user that caused the event $address - nickname of the user that caused the event *1 - contains the full ctcp reply sent This event is triggered when a reply to a CTCP command like /ping is received. o Added ON OPNOTICE event ON OPNOTICE Format: [@][=]ON OPNOTICE:<text>:<alias>[:+] Available info: $nick - nickname of the user that caused the event $address - nickname of the user that caused the event *1 - the message This event is triggered when a PIRCH opnotice is received and works exactly like ON TEXT/ON NOTICE. This will not work with other client style opnotices, because other clients simply send them as private notices to each operator, with no special tagging (these will trigger an ON NOTICE event. o Fixed /filecopy and /filemove VERSION 0.80A o Fixed /ban problem o Fixed positioning/sizing of some additional windows o Fixed the 'Bubble' text color attribute conflict with the hilite attribute o Fixed problem with Long File Name variables in aliases that would append an underscore character tro the end of a filename if the LFN and Fill Spaces options were enabled in the DCC section o Added some advanced channel filtering options. o Fixed problem with default download directory and extension mapping o Fixed a word wrap but that could cause problems if the window width was too small to fit a single character causing a infinite loop o Added file server feature. The file server window can be opened via the tools menu. Only one file server windows can be created, hoever the server supports multiple connections and is arranged so that you can easily see who is connectioned and what activity is occuring. The file server only allows a particular to connect one time, this is validated via the user's IP address. The /FACCESS command /FACCESS <nickname> [homedir] [maxgets] This command is used to grant users access to the file server. At a minimum you must supply the <nick> parameter. The homedir is the name of the root directory the particular user may access. If the Homedir param is omitted the user will be granted acess to the default Homedir set up in the File Server Options. o Added adanced filtering option to allow filtering of keywords which you do not want displayed. Channels containing these keywords on the topic or in the channel name are discarded. o New Commands/variable functions /WRITEINI <filename> <section> <key> <value> $READINI <filename> <section> <key> <default> (for use in aliases & events) The structure of an ini file is broken down into sections as diplayed below [section] key=value Each inifile may have multiple sections and under each section multiple key=value statements NOTE: All parameters are required and the function will fail if any are missing. The $readini inline function currently must be the last part of an alias or event handler statement since the last parameter <default> may contain multiple words. The structure of inline functions (ie $read, $readini) will probably change in the near future to allow greater flexibility in parameters and a more consistent structuring of alias/event code. ON JOIN:#:/writeini c:\pirch32\tracking.ini # $nick $nick last joined # on $day $date at $time (CST) ON TEXT:!seen*:#:/msg # $readini c:\pirch32\tracking.ini # $2 $2 has not been seen on # o Fixed some problems with 2 phase alias parsing o Added print capability for channels/msg windows/dcc chats To print only a selected oportion of text, click & drag to highlight the text and hold the CTRL key down simutaneously... release the mouse button while the ctrl key is still down and the text will remain highlighted... not select IRC | Print and the 'selected only' option will be enabled in the print window. o Added ability to print BIO's o Fixed problem with /list if no list was returned an RPL_LISTSTART server reply is sent to the client. o Added $mode to ON MODE o Stopped system from coming to the top when another application is active and a new msg window is opened up. o Added timeouts to dcc sends for unconnected transactions. PIRCH 0.80 (Initial Release)