#if !defined(AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_)
#define AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// CWMPSettings wrapper class
class CWMPSettings : public COleDispatchDriver
{
public:
CWMPSettings() {} // Calls COleDispatchDriver default constructor
CWMPSettings(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CWMPSettings(const CWMPSettings& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// Attributes
public:
// Operations
public:
BOOL GetIsAvailable(LPCTSTR bstrItem);
BOOL GetAutoStart();
void SetAutoStart(BOOL bNewValue);
CString GetBaseURL();
void SetBaseURL(LPCTSTR lpszNewValue);
CString GetDefaultFrame();
void SetDefaultFrame(LPCTSTR lpszNewValue);
BOOL GetInvokeURLs();
void SetInvokeURLs(BOOL bNewValue);
BOOL GetMute();
void SetMute(BOOL bNewValue);
long GetPlayCount();
void SetPlayCount(long nNewValue);
double GetRate();
void SetRate(double newValue);
long GetBalance();
void SetBalance(long nNewValue);
long GetVolume();
void SetVolume(long nNewValue);
BOOL getMode(LPCTSTR bstrMode);
void setMode(LPCTSTR bstrMode, BOOL varfMode);
BOOL GetEnableErrorDialogs();
void SetEnableErrorDialogs(BOOL bNewValue);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_)
t-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long *//* X-Chat
* Copyright (C) 1998 Peter Zelezny.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#ifndef WIN32
#include <unistd.h>
#endif
#include "xchat.h"
#include "cfgfiles.h"
#include "util.h"
#include "modes.h"
#include "outbound.h"
#include "ignore.h"
#include "inbound.h"
#include "dcc.h"
#include "text.h"
#include "ctcp.h"
#include "server.h"
#include "xchatc.h"
static void
ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[],
char *conf)
{
char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */
conf = strdup (conf);
/* process %C %B etc */
check_special_chars (conf, TRUE);
auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5],
server_get_network (sess->server, TRUE), "", "", nick);
free (conf);
handle_command (sess, tbuf, FALSE);
}
static int
ctcp_check (session *sess, char *nick, char *word[], char *word_eol[],
char *ctcp)
{
int ret = 0;
char *po;
struct popup *pop;
GSList *list = ctcp_list;
po = strchr (ctcp, '\001');
if (po)
*po = 0;
po = strchr (word_eol[5], '\001');
if (po)
*po = 0;
while (list)
{
pop = (struct popup *) list->data;
if (!strcasecmp (ctcp, pop->name))
{
ctcp_reply (sess, nick, word, word_eol, pop->cmd);
ret = 1;
}
list = list->next;
}
return ret;
}
void
ctcp_handle (session *sess, char *to, char *nick, char *ip,
char *msg, char *word[], char *word_eol[], int id)
{
char *po;
session *chansess;
server *serv = sess->server;
char outbuf[1024];
int ctcp_offset = 2;
if (serv->have_idmsg && (word[4][1] == '+' || word[4][1] == '-') )
ctcp_offset = 3;
/* consider DCC to be different from other CTCPs */
if (!strncasecmp (msg, "DCC", 3))
{
/* but still let CTCP replies override it */
if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset))
{
if (!ignore_check (word[1], IG_DCC))
handle_dcc (sess, nick, word, word_eol);
}
return;
}
/* consider ACTION to be different from other CTCPs. Check
ignore as if it was a PRIV/CHAN. */
if (!strncasecmp (msg, "ACTION ", 7))
{
if (is_channel (serv, to))
{
/* treat a channel action as a CHAN */
if (ignore_check (word[1], IG_CHAN))
return;
} else
{
/* treat a private action as a PRIV */
if (ignore_check (word[1], IG_PRIV))
return;
}
/* but still let CTCP replies override it */
if (ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset))
goto generic;
inbound_action (sess, to, nick, ip, msg + 7, FALSE, id);
return;
}
if (ignore_check (word[1], IG_CTCP))
return;
if (!strcasecmp (msg, "VERSION") && !prefs.hidever)
{
#ifdef WIN32
snprintf (outbuf, sizeof (outbuf), "VERSION XChat-WDK "PACKAGE_VERSION" [x%d] / %s",
get_cpu_arch (), get_cpu_str ());
#else
snprintf (outbuf, sizeof (outbuf), "VERSION XChat-WDK "PACKAGE_VERSION" %s",
get_cpu_str ());
#endif
serv->p_nctcp (serv, nick, outbuf);
}
if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset))
{
if (!strncasecmp (msg, "SOUND", 5))
{
po = strchr (word[5], '\001');
if (po)
po[0] = 0;
if (is_channel (sess->server, to))
{
chansess = find_channel (sess->server, to);
if (!chansess)
chansess = sess;
EMIT_SIGNAL (XP_TE_CTCPSNDC, chansess, word[5],
nick, to, NULL, 0);
} else
{
EMIT_SIGNAL (XP_TE_CTCPSND, sess->server->front_session, word[5],
nick, NULL, NULL, 0);
}
/* don't let IRCers specify path */
#ifdef WIN32
if (strchr (word[5], '/') == NULL && strchr (word[5], '\\') == NULL)
#else
if (strchr (word[5], '/') == NULL)
#endif
sound_play (word[5], TRUE);
return;
}
}
generic:
po = strchr (msg, '\001');
if (po)
po[0] = 0;
if (!is_channel (sess->server, to))
{
EMIT_SIGNAL (XP_TE_CTCPGEN, sess->server->front_session, msg, nick,
NULL, NULL, 0);
} else
{
chansess = find_channel (sess->server, to);
if (!chansess)
chansess = sess;
EMIT_SIGNAL (XP_TE_CTCPGENC, chansess, msg, nick, to, NULL, 0);
}
}