public static void JoinFavorites(IRCCore icore, Dictionary<string,ChanMessageList> clist) { DataClass oData; DataTable dt = new DataTable(); oData = DataClass.Instance; //SavedSet.ServerListDataTable dtSList; Dictionary<string,ChanFav> favlist = oData.GetFavoriteList(icore.ServerName); foreach (KeyValuePair<string,ChanFav> cf in favlist) { if (!clist.ContainsKey(cf.Value.channel)) { icore.SendRaw("JOIN #" + cf.Value.channel); ChanMessageList cml = new ChanMessageList(); cml.Channel = cf.Value.channel; clist.Add(cf.Value.channel, cml); } } foreach (KeyValuePair<string, ChanMessageList> cvpair in clist) { if (!favlist.ContainsKey(cvpair.Value.Channel)) { icore.SendRaw("PART #" + cvpair.Value.Channel); } } }
void iparse_JoinEvent(object sender, JoinEventArgs e) { ChanMessageList cml; place = 53; string scChannel = StripPND(e.Channel); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(scChannel, cml); } cml.AddName(e); if (scChannel == selectedChannel) { lbChanUsers.Items.Clear(); lbChanUsers.BeginUpdate(); foreach (string s in cml.nicks) { lbChanUsers.Items.Add(s); } lbChanUsers.EndUpdate(); } }
public static void JoinFavorites(IRCCore icore, Dictionary <string, ChanMessageList> clist) { DataClass oData; DataTable dt = new DataTable(); oData = DataClass.Instance; //SavedSet.ServerListDataTable dtSList; Dictionary <string, ChanFav> favlist = oData.GetFavoriteList(icore.ServerName); foreach (KeyValuePair <string, ChanFav> cf in favlist) { if (!clist.ContainsKey(cf.Value.channel)) { icore.SendRaw("JOIN #" + cf.Value.channel); ChanMessageList cml = new ChanMessageList(); cml.Channel = cf.Value.channel; clist.Add(cf.Value.channel, cml); } } foreach (KeyValuePair <string, ChanMessageList> cvpair in clist) { if (!favlist.ContainsKey(cvpair.Value.Channel)) { icore.SendRaw("PART #" + cvpair.Value.Channel); } } }
void iparse_oForwardEvent(object sender, ForwardEventArgs e) { //Here we need to be careful because we are forwarding a channel that was supposedly joined. //so we need to remove the joined channel and modify it string source = StripPND(e.sourceChannel); string target = StripPND(e.targetChannel); if (!ChannelList.ContainsKey(source)) { return; } if (ChannelList.ContainsKey(target)) //we only need to do this once. { return; } ChannelList.Remove(source); TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) { thisTN = tnn; } } TreeNode ttn = new TreeNode(); ttn.Text = target; ChanMessageList cml = new ChanMessageList(); ttn.Tag = cml; thisTN.Nodes.Add(ttn); ChannelList.Add(target, cml); foreach (TreeNode tn2 in thisTN.Nodes) { if (tn2.Text == source) { tn2.Remove(); } } }
void iparse_oPrivMsgEvent(object sender, PrivMsgEventArgs e) { ChanMessageList cml; List <string> nll = dc.GetNickList(); if (!nll.Contains(e.User.Nick.ToLower())) { return; //Return when no accepted nicks are found. We don't want private messages from users we don't know. } if (!ChannelList.TryGetValue("priv_=!" + e.User.Nick, out cml)) { cml = new ChanMessageList(); ChannelList.Add("priv_=!" + e.User.Nick, cml); } else { cml.AddPrivMsg(e); cml.LastUpdate = DateTime.Now; btnPrivMsg.Visible = true; } }
void iparse_oPrivMsgEvent(object sender, PrivMsgEventArgs e) { ChanMessageList cml; List<string> nll = dc.GetNickList(); if (!nll.Contains(e.User.Nick.ToLower())) return; //Return when no accepted nicks are found. We don't want private messages from users we don't know. if (!ChannelList.TryGetValue("priv_=!" + e.User.Nick,out cml)) { cml = new ChanMessageList(); ChannelList.Add("priv_=!" + e.User.Nick, cml); } else { cml.AddPrivMsg(e); cml.LastUpdate = DateTime.Now; btnPrivMsg.Visible = true; } }
private void AddChannelList() { TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) { thisTN = tnn; } } if (thisTN == null) { return; } foreach (TreeNode chanNode in thisTN.Nodes) { ircCore1.SendRaw("JOIN #" + chanNode.Text); ChanMessageList cml = new ChanMessageList(); cml.Channel = chanNode.Text; ChannelList.Add(chanNode.Text, cml); } }
private void btnJoinChans_Click(object sender, EventArgs e) { TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) { thisTN = tnn; } } foreach (TreeNode item in thisTN.Nodes) { ircCore1.SendRaw("JOIN #" + item.Text); if (!ChannelList.ContainsKey(item.Text)) { ChanMessageList cml = new ChanMessageList(); cml.Channel = item.Text; ChannelList.Add(item.Text, cml); } } }
void iparse_oTopicEvent(object sendere, TopicEventArgs e) { //First get channel from channellist. //then set the topic. place = 5; ChanMessageList cml; string scChannel = StripPND(e.Channel); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(scChannel, cml); } if (e.Topic.Length == 0) { cml.Topic = "Topic not set."; } else { cml.Topic = e.Topic; } cml.TopicUser = e.User; if (selectedChannel == scChannel) { if (e.User != null) { rtbTopic.Text = e.User.Nick + "\n"; } rtbTopic.Clear(); rtbTopic.AppendText(e.Topic); } //throw new NotImplementedException(); }
private void AddChannelList() { TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) thisTN = tnn; } if (thisTN == null) return; foreach (TreeNode chanNode in thisTN.Nodes) { ircCore1.SendRaw("JOIN #" + chanNode.Text); ChanMessageList cml = new ChanMessageList(); cml.Channel = chanNode.Text; ChannelList.Add(chanNode.Text, cml); } }
void iparse_oForwardEvent(object sender, ForwardEventArgs e) { //Here we need to be careful because we are forwarding a channel that was supposedly joined. //so we need to remove the joined channel and modify it string source = StripPND( e.sourceChannel); string target = StripPND(e.targetChannel); if (!ChannelList.ContainsKey(source)) return; if (ChannelList.ContainsKey(target)) //we only need to do this once. return; ChannelList.Remove(source); TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) thisTN = tnn; } TreeNode ttn = new TreeNode(); ttn.Text = target; ChanMessageList cml = new ChanMessageList(); ttn.Tag = cml; thisTN.Nodes.Add(ttn); ChannelList.Add(target, cml); foreach (TreeNode tn2 in thisTN.Nodes) { if (tn2.Text == source) { tn2.Remove(); } } }
private void tvChans_AfterSelect(object sender, TreeViewEventArgs e) { place = 2; rtbBox.Clear(); selectedChannel = e.Node.Text.ToLower(); lblChannel.Text = selectedChannel; ChanMessageList cml; dc.curChannel = e.Node.Text; if (ChannelList != null && ChannelList.TryGetValue(e.Node.Text, out cml)) { currentCML = cml; rtbBox.Clear(); Application.DoEvents(); rtbBox.SuspendLayout(); if (cml.PrivMsgList.Count > 150) { int idxToD; idxToD = cml.PrivMsgList.Count - 150; cml.PrivMsgList.RemoveRange(0, idxToD); } foreach (PrivMsgEventArgs pmea in cml.PrivMsgList) { AppendText(pmea, true); } if (!cml.IsJoined) { rtbBox.AppendText(retval + cml.KickReason + retval); } rtbTopic.SelectAll(); rtbTopic.SelectionAlignment = HorizontalAlignment.Right; ScrollToBottom(rtbBox); rtbBox.ResumeLayout(); rtbTopic.Clear(); if (cml.TopicUser != null) { rtbTopic.Text = cml.TopicUser.Nick + "\n"; } rtbTopic.AppendText(cml.Topic); lblModes.Text = cml.Modes; if (cml.nicks != null) { lbChanUsers.Items.Clear(); lbChanUsers.BeginUpdate(); //rtbChannUsers.Clear(); //rtbChannUsers.SuspendLayout(); foreach (string s in cml.nicks) { lbChanUsers.Items.Add(s); // rtbChannUsers.AppendText(s + retval); } lbChanUsers.EndUpdate(); //rtbChannUsers.ResumeLayout(); //rtbChannUsers.Refresh(); } } rtbTalk.Focus(); }
private void rtbTalk_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { rtbTalk.Text = LastSent; rtbTalk.Select(rtbTalk.Text.Length, 0); e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Tab) { if (rtbTalk.Text.Length > 1) { string name; string test = FindLastWord(rtbTalk.Text); foreach (string s in currentCML.nicks) { if (s.Length == 0) { continue; } if (s[0] == '@' || s[0] == '+') { name = s.Substring(1); } else { name = s; } if (name.ToLower().StartsWith(test)) { rtbTalk.Text = rtbTalk.Text.Substring(0, lidx); if (IsFirstWord) { rtbTalk.AppendText(name + ": "); } else { rtbTalk.AppendText(" " + name); } } } } e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Enter) { //privmsg #channel :messagePart if (rtbTalk.Text.StartsWith("/")) { ircCore1.SendRaw(rtbTalk.Text.Substring(1)); } else if (rtbTalk.Text.Length > 0) { PrivMsgEventArgs nPME = new PrivMsgEventArgs(); UserInfo uinfo = new UserInfo(); uinfo.RealName = dc.GetName(); uinfo.Nick = dc.GetNick(); rtbTalk.Text = rtbTalk.Text.Replace("\n", ""); nPME.SetData(rtbTalk.Text, uinfo, selectedChannel, false); ChanMessageList cml; if (!ChannelList.TryGetValue(nPME.From, out cml)) { cml = new ChanMessageList(); ChannelList.Add(nPME.From, cml); } cml.AddPrivMsg(nPME); AppendText(nPME, true); ircCore1.SendRaw("PRIVMSG #" + selectedChannel + " :" + rtbTalk.Text + "\r\n"); LastSent = rtbTalk.Text; } rtbTalk.Text = ""; e.SuppressKeyPress = true; } }
//IrcalBot ibot; private void icore_ProgressChanged(object sender, ProgressChangedEventArgs e) { place = -1; if (e.UserState is List <Message> ) { mList = (List <Message>)e.UserState; } else { return; } place = -2; try { int icnt = mList.Count; if (sbmc == null) { sbmc = new SBMessage(); } //if (ibot == null) // ibot = new IrcalBot(ircCore1); //ibot.pushmessage(mList); for (int i = 0; i < icnt; i++) { place = 49; m = (Message)mList[i]; place = 52; // //:[email protected] PRIVMSG #HamRadio :test //sbmc.SendSBM(m.message); if (m.message.Contains("PRIVMSG")) { place = 53; iparse.MainParser(m.message); PrivMsgEventArgs pme = iparse.pmargs; PrivMsgEventArgs nPME = new PrivMsgEventArgs(); pme.Copy(ref nPME); ChanMessageList cml; place = 54; string scChannel = StripPND(nPME.From); sbmc.SendSBM(m.message, scChannel); MessageQueue.Add(m.message); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(nPME.From, cml); } if (ChannelList.TryGetValue(scChannel, out cml)) { cml.AddPrivMsg(nPME); if (!cml.nicks.Contains(nPME.User.Nick)) { cml.nicks.Add(nPME.User.Nick); } //Only add text to window if channel is selected. if (selectedChannel == scChannel.ToLower()) { AppendText(nPME, true); rtbTopic.SelectAll(); rtbTopic.SelectionAlignment = HorizontalAlignment.Right; ScrollToBottom(rtbBox); } oNotify.CheckName(nPME.User.Nick); oNotify.CheckChannel(ircCore1.ServerName, scChannel, nPME); cml.LastUpdate = DateTime.Now; } place = 88; } else { iparse.MainParser(m.message); if (!iparse.parsed) { string msg = m.message.Trim(); if (msg.Length > 0) { if (msg.StartsWith("PING")) { break; } rtbGeneral.AppendText(msg + retval); rtbGeneral.Select(rtbGeneral.Text.Length, 0); } } } //if (m.Direction == "parse") //{ // place = 71; // iparse.MainParser(m.message.Split(new char[] { ' ' })); //} } place = 72; mList.RemoveRange(0, mList.Count); place = 73; } catch (Exception ex) { rtbGeneral.AppendText("ERROR:place" + place.ToString() + ex.Message); // MessageBox.Show(ex.Message + " err: place = "+ place.ToString()); } }
void iparse_oNameCompleteEvent(object sender, NameReplyEventArgs e) { ChanMessageList cml; place = 52; string scChannel = StripPND(e.Channel); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(scChannel, cml); } cml.AddNames(e); if (scChannel == selectedChannel) { lbChanUsers.Items.Clear(); lbChanUsers.BeginUpdate(); foreach (string s in cml.nicks) { lbChanUsers.Items.Add(s); } lbChanUsers.EndUpdate(); } }
//IrcalBot ibot; private void icore_ProgressChanged(object sender, ProgressChangedEventArgs e) { place = -1; if (e.UserState is List<Message>) mList = (List<Message>)e.UserState; else return; place = -2; try { int icnt = mList.Count; if (sbmc == null) sbmc = new SBMessage(); //if (ibot == null) // ibot = new IrcalBot(ircCore1); //ibot.pushmessage(mList); for (int i = 0; i < icnt; i++) { place = 49; m = (Message) mList[i]; place = 52; // //:[email protected] PRIVMSG #HamRadio :test //sbmc.SendSBM(m.message); if (m.message.Contains("PRIVMSG")) { place = 53; iparse.MainParser(m.message); PrivMsgEventArgs pme = iparse.pmargs; PrivMsgEventArgs nPME = new PrivMsgEventArgs(); pme.Copy(ref nPME); ChanMessageList cml; place = 54; string scChannel = StripPND(nPME.From); sbmc.SendSBM(m.message,scChannel); MessageQueue.Add(m.message); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(nPME.From, cml); } if (ChannelList.TryGetValue(scChannel, out cml)) { cml.AddPrivMsg(nPME); if (!cml.nicks.Contains(nPME.User.Nick)) cml.nicks.Add(nPME.User.Nick); //Only add text to window if channel is selected. if (selectedChannel == scChannel.ToLower()) { AppendText(nPME, true); rtbTopic.SelectAll(); rtbTopic.SelectionAlignment = HorizontalAlignment.Right; ScrollToBottom(rtbBox); } oNotify.CheckName(nPME.User.Nick); oNotify.CheckChannel(ircCore1.ServerName, scChannel, nPME); cml.LastUpdate = DateTime.Now; } place = 88; } else { iparse.MainParser(m.message); if (!iparse.parsed) { string msg = m.message.Trim(); if (msg.Length > 0 ) { if (msg.StartsWith("PING")) break; rtbGeneral.AppendText(msg + retval); rtbGeneral.Select(rtbGeneral.Text.Length, 0); } } } //if (m.Direction == "parse") //{ // place = 71; // iparse.MainParser(m.message.Split(new char[] { ' ' })); //} } place = 72; mList.RemoveRange(0, mList.Count); place = 73; } catch (Exception ex) { rtbGeneral.AppendText("ERROR:place" + place.ToString() + ex.Message); // MessageBox.Show(ex.Message + " err: place = "+ place.ToString()); } }
private void btnJoinChans_Click(object sender, EventArgs e) { TreeNode thisTN = null; foreach (TreeNode tnn in tvChans.Nodes) { if (tnn.Text == ircCore1.ServerName) thisTN = tnn; } foreach (TreeNode item in thisTN.Nodes) { ircCore1.SendRaw("JOIN #" + item.Text); if (!ChannelList.ContainsKey(item.Text)) { ChanMessageList cml = new ChanMessageList(); cml.Channel = item.Text; ChannelList.Add(item.Text, cml); } } }
private void tvChans_AfterSelect(object sender, TreeViewEventArgs e) { place = 2; rtbBox.Clear(); selectedChannel = e.Node.Text.ToLower(); lblChannel.Text = selectedChannel; ChanMessageList cml; dc.curChannel = e.Node.Text; if (ChannelList != null && ChannelList.TryGetValue(e.Node.Text, out cml)) { currentCML = cml; rtbBox.Clear(); Application.DoEvents(); rtbBox.SuspendLayout(); if (cml.PrivMsgList.Count > 150) { int idxToD; idxToD = cml.PrivMsgList.Count - 150; cml.PrivMsgList.RemoveRange(0, idxToD); } foreach (PrivMsgEventArgs pmea in cml.PrivMsgList) { AppendText(pmea, true); } if (!cml.IsJoined) { rtbBox.AppendText(retval + cml.KickReason + retval); } rtbTopic.SelectAll(); rtbTopic.SelectionAlignment = HorizontalAlignment.Right; ScrollToBottom(rtbBox); rtbBox.ResumeLayout(); rtbTopic.Clear(); if (cml.TopicUser != null) { rtbTopic.Text = cml.TopicUser.Nick + "\n"; } rtbTopic.AppendText(cml.Topic); lblModes.Text = cml.Modes; if (cml.nicks != null) { lbChanUsers.Items.Clear(); lbChanUsers.BeginUpdate(); //rtbChannUsers.Clear(); //rtbChannUsers.SuspendLayout(); foreach (string s in cml.nicks) { lbChanUsers.Items.Add(s); // rtbChannUsers.AppendText(s + retval); } lbChanUsers.EndUpdate(); //rtbChannUsers.ResumeLayout(); //rtbChannUsers.Refresh(); } } rtbTalk.Focus(); }
void iparse_oTopicEvent(object sendere, TopicEventArgs e) { //First get channel from channellist. //then set the topic. place = 5; ChanMessageList cml; string scChannel = StripPND(e.Channel); if (!ChannelList.TryGetValue(scChannel, out cml)) { cml = new ChanMessageList(); ChannelList.Add(scChannel, cml); } if (e.Topic.Length == 0) cml.Topic = "Topic not set."; else cml.Topic = e.Topic; cml.TopicUser = e.User; if (selectedChannel == scChannel) { if (e.User != null) { rtbTopic.Text = e.User.Nick + "\n"; } rtbTopic.Clear(); rtbTopic.AppendText(e.Topic); } //throw new NotImplementedException(); }
private void rtbTalk_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { rtbTalk.Text = LastSent; rtbTalk.Select(rtbTalk.Text.Length, 0); e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Tab) { if (rtbTalk.Text.Length > 1 ) { string name; string test = FindLastWord(rtbTalk.Text); foreach (string s in currentCML.nicks) { if (s.Length == 0) continue; if (s[0] == '@' || s[0] == '+') name = s.Substring(1); else name = s; if (name.ToLower().StartsWith(test)) { rtbTalk.Text = rtbTalk.Text.Substring(0, lidx); if (IsFirstWord) { rtbTalk.AppendText(name + ": "); } else rtbTalk.AppendText(" " + name); } } } e.SuppressKeyPress = true; } if (e.KeyCode == Keys.Enter) { //privmsg #channel :messagePart if (rtbTalk.Text.StartsWith("/")) { ircCore1.SendRaw(rtbTalk.Text.Substring(1)); } else if (rtbTalk.Text.Length > 0) { PrivMsgEventArgs nPME = new PrivMsgEventArgs(); UserInfo uinfo = new UserInfo(); uinfo.RealName = dc.GetName(); uinfo.Nick = dc.GetNick(); rtbTalk.Text = rtbTalk.Text.Replace("\n", ""); nPME.SetData(rtbTalk.Text, uinfo, selectedChannel, false); ChanMessageList cml; if (!ChannelList.TryGetValue(nPME.From, out cml)) { cml = new ChanMessageList(); ChannelList.Add(nPME.From, cml); } cml.AddPrivMsg(nPME); AppendText(nPME, true); ircCore1.SendRaw("PRIVMSG #" + selectedChannel + " :" + rtbTalk.Text + "\r\n"); LastSent = rtbTalk.Text; } rtbTalk.Text = ""; e.SuppressKeyPress = true; } }