static void StartGui(Connector conn, Settings settings) { Gui.Start(x => { //if changes UI: have to use this Action<string, Action<CmdArg>> xRegister = (cmd, a) => conn.Register(cmd, x.InSTAThread(a)); var help = @"Help: Type (messages) to line at bottom of window. Commands start with ':'. All messages are trimmed by default, so to write ':-)' just write ' :-)'. Use tab for command completion. :chat # show message board :server.start <port> # starts server and DOES NOT connect to it :server.stop :ip # get local IP address(es) :wsdl # open server with wsdl description of service to access chans :connect <host:port> # connect to a server; default port is " + settings.DefaultServerPort + @" :disconnect # closes client :host <port> # :server.start, :connect :join <host> <name> # :connect <host>, :name <name> :name <new name> # get or set; 'anon' by default :down, :d # scroll to end of message board :exit, :quit :help, :h # show this help :send <msg> # send msg as it is; even just whitespace / nothing... :text <theText> # ~= :send <trim($theText)> # wouldn't send nothing if line doesn't start with ':': gets translated to: ':text <$line>' "; xRegister(Cmd.Help, _ => x.SwitchToHelp(help)); xRegister(Cmd.Chat, _ => x.SwitchToChat()); xRegister(Cmd.Exit, _ => x.Exit()); xRegister(Cmd.ScrollDown, _ => x.ScrollToBottom()); xRegister(Cmd.NotifyError, a => x.ShowError(a.Source, a.Text)); xRegister(Cmd.NotifySystem, a => x.ShowNotifySystem(a.Source, a.Text)); xRegister(Cmd.ReceivedMsg, a => x.ShowMessage(a.Source, a.Text)); xRegister(Cmd.CmdAccepted, a => x.ClearCmdLineIfSame(a)); xRegister(Cmd.CompletionResponse, a => x.PushCompletion(a, a.Source)); conn.Alias("d", Cmd.ScrollDown); conn.Alias("h", Cmd.Help); conn.Alias("quit", Cmd.Exit); conn.Run(Cmd.Help); x.Command += line => conn.RunOrDefault(Cmd.CmdParseRun, line); x.CompletionRequest += line => conn.RunOrDefault(Cmd.CompletionRequest, line); x.BoardChanged += () => conn.Run(Cmd.Chat); conn.RunOrDefault(Cmd.AfterGuiLoaded); }); }