void _Connect(object sender, EventArgs e) { if (sender != this) { Console.WriteLine("Catched OnDisconnect event. Reconnecting..."); } Client.Connect(Host, Port, SSL); var ident = NetworkManager.Instance.Identifier; Client.LogIn(ident, ident, ident); Connected(this, EventArgs.Empty); }
public MainWindow () : base (Gtk.WindowType.Toplevel) { Build (); textbuf = new ConcurrentQueue<string> (); server_model = new ServerModel (); user_model = new UserModel (); client = new IrcClient (); var col_servers = new TreeViewColumn { Title = "Servers" }; var server_renderer = new CellRendererText (); col_servers.PackStart (server_renderer, true); treeview_servers.AppendColumn (col_servers); col_servers.AddAttribute (server_renderer, "text", 0); treeview_servers.Model = server_model; var col_users = new TreeViewColumn { Title = "Users" }; var user_renderer = new CellRendererText (); col_users.PackStart (user_renderer, true); treeview_users.AppendColumn (col_users); col_users.AddAttribute (user_renderer, "text", 0); treeview_users.Model = user_model; client.Connected += (hostname, port) => server_model.AppendValues (hostname); client.LoggedIn += (sender, e) => { }; client.ChannelJoined += channel => { lbl_topic.Text = channel; TreeIter iter; server_model.GetIter (out iter, new TreePath ("0")); server_model.AppendValues (iter, channel); }; client.NamesObtained += names => { user_model.Clear (); foreach (var name in names) user_model.AppendValues (name); }; client.ChannelMessage += async (message, sender) => { textbuf.Enqueue (string.Format ("[{0}] {1}\n", sender, message)); if (updating) return; updating = true; await Task.Factory.StartNew (() => { Application.Invoke (delegate { var iter = txt_chat.Buffer.EndIter; while (textbuf.Count > 0) { string value; if (textbuf.TryDequeue (out value)) txt_chat.Buffer.Insert (ref iter, value); } }); }); updating = false; }; client.Connect ("int0x10.com", 6697, true); client.LogIn ("spl1tty", "spl1tty", "spl1tty"); }