예제 #1
0
 protected internal virtual void OnModeChanged(ModeChangeEventArgs e)
 {
     if (ModeChanged != null)
     {
         ModeChanged(this, e);
     }
 }
예제 #2
0
        private void Client_ModeChanged(object sender, ModeChangeEventArgs e)
        {
            IrcClient client = (IrcClient)sender;

            if (!e.Change.Contains(" "))
            {
                return;
            }

            if (!client.Channels.Any(c => c.Name == e.Target))
            {
                return;
            }

            var channel = client.Channels[e.Target];

            string nick = e.Change.Split(' ')[1];

            if (!channel.Users.Contains(nick))
            {
                return;
            }

            if (OnModeChange != null)
            {
                OnModeChange(e.User.Nick, e.Change, TokenManager.GetToken(new MessageSource(client, channel.Name)));
            }
        }
예제 #3
0
 protected internal virtual void OnModeChanged(ModeChangeEventArgs e)
 {
     try
     {
         ModeChanged(this, e);
     }
     catch (Exception err)
     {
         UnhandledException(this, new UnhandledExceptionEventArgs(err, false));
     }
 }
예제 #4
0
        private void OnModeChanged(object sender, ModeChangeEventArgs e)
        {
            string outMode  = e.Mode == Mode.Edit ? " Edit" : "View";
            bool   editMode = e.Mode == Mode.Edit;

            if (editMode)
            {
                if (e.Beginning != null && e.End != null)
                {
                    utilityScreen.OpenDialog(UtilityMode.DataManipulation, e.Beginning, e.End);
                }
                else
                {
                    utilityScreen.OpenDialog(UtilityMode.DataManipulation, e.Beginning, e.End);
                }
            }
        }
예제 #5
0
 public void OnModeChangeEvent(ModeChangeEventArgs args)
 {
     ModeChange?.Invoke(this, args);
 }
예제 #6
0
 void toolspanel_ModeChange(object sender, ModeChangeEventArgs e)
 {
     Main.setMode(e.getMode());
 }
예제 #7
0
 protected internal virtual void OnModeChanged(ModeChangeEventArgs e)
 {
     if(ModeChanged != null) ModeChanged(this, e);
 }
예제 #8
0
        public static void HandleMode(IrcClient client, IrcMessage message)
        {
            string target, mode = null;
            int    i = 2;

            if (message.Command == "MODE")
            {
                target = message.Parameters[0];
                mode   = message.Parameters[1];
            }
            else
            {
                target = message.Parameters[1];
                mode   = message.Parameters[2];
                i++;
            }

            var eventArgs = new ModeChangeEventArgs(target, new IrcUser(message.Prefix), mode);

            client.OnModeChanged(eventArgs);
            // Handle change
            bool add = mode[0] == '+';

            mode = mode.Substring(1);
            if (target.StartsWith("#"))
            {
                var channel = client.Channels[target];
                foreach (char c in mode)
                {
                    // TODO: Handle other types of MODEs
                    if (channel.Mode == null)
                    {
                        channel.Mode = string.Empty;
                    }
                    if (add)
                    {
                        if (!channel.Mode.Contains(c))
                        {
                            channel.Mode += c.ToString();
                        }
                    }
                    else
                    {
                        channel.Mode = channel.Mode.Replace(c.ToString(), string.Empty);
                    }
                }
                if (message.Command == "324")
                {
                    var operation = client.RequestManager.DequeueOperation("MODE " + channel.Name);
                    operation.Callback(operation);
                }
            }
            else
            {
                // TODO: Handle user modes other than ourselves?
                foreach (char c in mode)
                {
                    if (add)
                    {
                        if (!client.User.Mode.Contains(c))
                        {
                            client.User.Mode += c;
                        }
                    }
                    else
                    {
                        client.User.Mode = client.User.Mode.Replace(c.ToString(), string.Empty);
                    }
                }
            }
        }